vorpal
vorpal copied to clipboard
Hitting CTRL+C while in Inquirer prompt breaks everything
The output looks like this:
(^C again to quit)
function (str) {
if (str === undefined) {
return this._delimiter;
}
this._delimiter = String(str).trim() + ' ';
if (this.isLocal()) {
this.parent.ui.refresh();
} else {
this.parent._send('vantage-delimiter-downstream', 'downstream', {value: str, sessionId: this.id});
}
return this;
}
_
You can still type but nothing happens. Only way to recover is hitting CTRL+C again.
Yikes! Okay will check out.
Hi Team,
Is above issue solved?
Issue is still present.
Hey Scott - sorry I haven't been very active recently. A lot of things are changing in life right now, so I haven't had too much time for OSS. Hope to get back fairly soon and close all these issues.
Otherwise, all your help's been very appreciated. I wouldn't mind adding you to the Vorpal team, if you're down with that.
Don't worry about it; that's how open source is sometimes. You contribute when you can, and mostly when you need it yourself. ;)
I would appreciate the abilities to accept pull requests and deploy code to npm if possible.
Okay Scott, giving you access now.
Feel free to make any patches you need, obviously add tests as you go. Just check with me before committing anything that alters the API, or any breaking changes.
Thanks for all your help!
Okay this should be good now. Can you please try it? v1.5.2
No luck.
C17PR768G8WP:cli shovestadt$ cli
cli:
function (str) {
if (str === undefined) {
return this._delimiter;
}
this._delimiter = String(str).trim() + ' ';
if (this.isLocal()) {
this.parent.ui.refresh();
} else {
this.parent._send('vantage-delimiter-downstream', 'downstream', {value: str, sessionId: this.id});
}
return this;
}
function (str) {
if (str === undefined) {
return this._delimiter;
}
this._delimiter = String(str).trim() + ' ';
if (this.isLocal()) {
this.parent.ui.refresh();
} else {
this.parent._send('vantage-delimiter-downstream', 'downstream', {value: str, sessionId: this.id});
}
return this;
Username: test
Password:
^C/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:75
throw e;
^
TypeError: Cannot read property 'removeListener' of null
at [object Object].UI.close (/usr/local/lib/node_modules/cli/node_modules/inquirer/lib/ui/baseUI.js:45:10)
at [object Object].PromptUI.onCompletion (/usr/local/lib/node_modules/cli/node_modules/inquirer/lib/ui/prompt.js:54:8)
at AnonymousObserver.Rx.AnonymousObserver.AnonymousObserver.completed (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:1550:12)
at AnonymousObserver.Rx.internals.AbstractObserver.AbstractObserver.onCompleted (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:1489:14)
at Subject.Rx.Subject.addProperties.onCompleted (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:5871:19)
at Subject.tryCatcher (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:63:31)
at AutoDetachObserverPrototype.completed (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:5796:56)
at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onCompleted (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:1489:14)
at AutoDetachObserver.tryCatcher (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:63:31)
at AutoDetachObserverPrototype.completed (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:5796:56)
at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onCompleted (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:1489:14)
at InnerObserver.onCompleted (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:2966:65)
at InnerObserver.tryCatcher (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:63:31)
at AutoDetachObserverPrototype.completed (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:5796:56)
at AutoDetachObserver.Rx.internals.AbstractObserver.AbstractObserver.onCompleted (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:1489:14)
at AutoDetachObserver.tryCatcher (/usr/local/lib/node_modules/cli/node_modules/rx-lite/rx.lite.js:63:31)
Can you show me the code with the inquirer prompt?
// Login command only available in CLI, requires user input.
vorpal
.command('login [userKey] [userSecret]')
.description('Set user key and user secret key.')
.action(function(args, callback) {
this.prompt([
{
type: 'input',
name: 'userKey',
message: 'User key: ',
validate: (input) => {
return input.length > 10;
}
},
{
type: 'input',
name: 'userSecret',
message: 'User secret key: ',
validate: (input) => {
return input.length > 20;
}
}
], (answers) => {
self.userKey = self.commands.userKey = answers.userKey;
self.userSecret = self.commands.userSecret = answers.userSecret;
callback();
});
});
}
Thanks. Checking it out.
Oh - haha - it only breaks on multi-inputs. Looks like the Inquirer cancellation doesn't handle an array of inputs.
Ugh. Cancelling inquirer prompts is literally the messiest part of my code, because Inquirer doesn't support command cancellation, so I have to hack it. This is going to take longer to fix.
Running into this as well... where's the like button? :+1:
Got it. This one's... gnarly. Will try to work on it some more soon.
This problem still exists and breaks the REPL