Skip to content

Commit

Permalink
rxjs 6 upgrade (#676)
Browse files Browse the repository at this point in the history
  • Loading branch information
imhoffd authored and SBoudrias committed May 14, 2018
1 parent a4cfcd3 commit 78bd4da
Show file tree
Hide file tree
Showing 16 changed files with 129 additions and 93 deletions.
4 changes: 2 additions & 2 deletions examples/rx-observable-array.js
@@ -1,5 +1,5 @@
var inquirer = require('..');
var Rx = require('rxjs/Rx');
var { from } = require('rxjs');

var questions = [
{
Expand Down Expand Up @@ -32,7 +32,7 @@ var questions = [
}
];

var observable = Rx.Observable.from(questions);
var observable = from(questions);

inquirer.prompt(observable).ui.process.subscribe(
function(ans) {
Expand Down
4 changes: 2 additions & 2 deletions examples/rx-observable-create.js
@@ -1,7 +1,7 @@
var inquirer = require('..');
var Rx = require('rxjs/Rx');
var { Observable } = require('rxjs');

var observe = Rx.Observable.create(function(obs) {
var observe = Observable.create(function(obs) {
obs.next({
type: 'input',
name: 'first_name',
Expand Down
23 changes: 14 additions & 9 deletions lib/prompts/base.js
Expand Up @@ -7,6 +7,7 @@
var _ = require('lodash');
var chalk = require('chalk');
var runAsync = require('run-async');
var { filter, flatMap, share, take, takeUntil } = require('rxjs/operators');
var Choices = require('../objects/choices');
var ScreenManager = require('../utils/screen-manager');

Expand Down Expand Up @@ -85,22 +86,26 @@ class Prompt {
handleSubmitEvents(submit) {
var self = this;
var validate = runAsync(this.opt.validate);
var filter = runAsync(this.opt.filter);
var validation = submit
.flatMap(value =>
filter(value, self.answers).then(
var asyncFilter = runAsync(this.opt.filter);
var validation = submit.pipe(
flatMap(value =>
asyncFilter(value, self.answers).then(
filteredValue =>
validate(filteredValue, self.answers).then(
isValid => ({ isValid: isValid, value: filteredValue }),
err => ({ isValid: err })
),
err => ({ isValid: err })
)
)
.share();

var success = validation.filter(state => state.isValid === true).take(1);
var error = validation.filter(state => state.isValid !== true).takeUntil(success);
),
share()
);

var success = validation.pipe(filter(state => state.isValid === true), take(1));
var error = validation.pipe(
filter(state => state.isValid !== true),
takeUntil(success)
);

return {
success: success,
Expand Down
21 changes: 14 additions & 7 deletions lib/prompts/checkbox.js
Expand Up @@ -7,6 +7,7 @@ var _ = require('lodash');
var chalk = require('chalk');
var cliCursor = require('cli-cursor');
var figures = require('figures');
var { map, takeUntil } = require('rxjs/operators');
var Base = require('./base');
var observe = require('../utils/events');
var Paginator = require('../utils/paginator');
Expand Down Expand Up @@ -48,19 +49,25 @@ class CheckboxPrompt extends Base {
var events = observe(this.rl);

var validation = this.handleSubmitEvents(
events.line.map(this.getCurrentValue.bind(this))
events.line.pipe(map(this.getCurrentValue.bind(this)))
);
validation.success.forEach(this.onEnd.bind(this));
validation.error.forEach(this.onError.bind(this));

events.normalizedUpKey.takeUntil(validation.success).forEach(this.onUpKey.bind(this));
events.normalizedUpKey
.pipe(takeUntil(validation.success))
.forEach(this.onUpKey.bind(this));
events.normalizedDownKey
.takeUntil(validation.success)
.pipe(takeUntil(validation.success))
.forEach(this.onDownKey.bind(this));
events.numberKey.takeUntil(validation.success).forEach(this.onNumberKey.bind(this));
events.spaceKey.takeUntil(validation.success).forEach(this.onSpaceKey.bind(this));
events.aKey.takeUntil(validation.success).forEach(this.onAllKey.bind(this));
events.iKey.takeUntil(validation.success).forEach(this.onInverseKey.bind(this));
events.numberKey
.pipe(takeUntil(validation.success))
.forEach(this.onNumberKey.bind(this));
events.spaceKey
.pipe(takeUntil(validation.success))
.forEach(this.onSpaceKey.bind(this));
events.aKey.pipe(takeUntil(validation.success)).forEach(this.onAllKey.bind(this));
events.iKey.pipe(takeUntil(validation.success)).forEach(this.onInverseKey.bind(this));

// Init the prompt
cliCursor.hide();
Expand Down
5 changes: 3 additions & 2 deletions lib/prompts/confirm.js
Expand Up @@ -5,6 +5,7 @@

var _ = require('lodash');
var chalk = require('chalk');
var { take, takeUntil } = require('rxjs/operators');
var Base = require('./base');
var observe = require('../utils/events');

Expand Down Expand Up @@ -44,9 +45,9 @@ class ConfirmPrompt extends Base {

// Once user confirm (enter key)
var events = observe(this.rl);
events.keypress.takeUntil(events.line).forEach(this.onKeypress.bind(this));
events.keypress.pipe(takeUntil(events.line)).forEach(this.onKeypress.bind(this));

events.line.take(1).forEach(this.onEnd.bind(this));
events.line.pipe(take(1)).forEach(this.onEnd.bind(this));

// Init
this.render();
Expand Down
4 changes: 2 additions & 2 deletions lib/prompts/editor.js
Expand Up @@ -7,7 +7,7 @@ var chalk = require('chalk');
var editAsync = require('external-editor').editAsync;
var Base = require('./base');
var observe = require('../utils/events');
var Rx = require('rxjs/Rx');
var { Subject } = require('rxjs');

class EditorPrompt extends Base {
/**
Expand All @@ -19,7 +19,7 @@ class EditorPrompt extends Base {
_run(cb) {
this.done = cb;

this.editorResult = new Rx.Subject();
this.editorResult = new Subject();

// Open Editor on "line" (Enter Key)
var events = observe(this.rl);
Expand Down
5 changes: 3 additions & 2 deletions lib/prompts/expand.js
Expand Up @@ -5,6 +5,7 @@

var _ = require('lodash');
var chalk = require('chalk');
var { map, takeUntil } = require('rxjs/operators');
var Base = require('./base');
var Separator = require('../objects/separator');
var observe = require('../utils/events');
Expand Down Expand Up @@ -53,12 +54,12 @@ class ExpandPrompt extends Base {
// Save user answer and update prompt to show selected option.
var events = observe(this.rl);
var validation = this.handleSubmitEvents(
events.line.map(this.getCurrentValue.bind(this))
events.line.pipe(map(this.getCurrentValue.bind(this)))
);
validation.success.forEach(this.onSubmit.bind(this));
validation.error.forEach(this.onError.bind(this));
this.keypressObs = events.keypress
.takeUntil(validation.success)
.pipe(takeUntil(validation.success))
.forEach(this.onKeypress.bind(this));

// Init the prompt
Expand Down
7 changes: 5 additions & 2 deletions lib/prompts/input.js
Expand Up @@ -4,6 +4,7 @@
*/

var chalk = require('chalk');
var { map, takeUntil } = require('rxjs/operators');
var Base = require('./base');
var observe = require('../utils/events');

Expand All @@ -19,13 +20,15 @@ class InputPrompt extends Base {

// Once user confirm (enter key)
var events = observe(this.rl);
var submit = events.line.map(this.filterInput.bind(this));
var submit = events.line.pipe(map(this.filterInput.bind(this)));

var validation = this.handleSubmitEvents(submit);
validation.success.forEach(this.onEnd.bind(this));
validation.error.forEach(this.onError.bind(this));

events.keypress.takeUntil(validation.success).forEach(this.onKeypress.bind(this));
events.keypress
.pipe(takeUntil(validation.success))
.forEach(this.onKeypress.bind(this));

// Init
this.render();
Expand Down
17 changes: 11 additions & 6 deletions lib/prompts/list.js
Expand Up @@ -8,6 +8,7 @@ var chalk = require('chalk');
var figures = require('figures');
var cliCursor = require('cli-cursor');
var runAsync = require('run-async');
var { flatMap, map, take, takeUntil } = require('rxjs/operators');
var Base = require('./base');
var observe = require('../utils/events');
var Paginator = require('../utils/paginator');
Expand Down Expand Up @@ -51,13 +52,17 @@ class ListPrompt extends Base {
var self = this;

var events = observe(this.rl);
events.normalizedUpKey.takeUntil(events.line).forEach(this.onUpKey.bind(this));
events.normalizedDownKey.takeUntil(events.line).forEach(this.onDownKey.bind(this));
events.numberKey.takeUntil(events.line).forEach(this.onNumberKey.bind(this));
events.normalizedUpKey.pipe(takeUntil(events.line)).forEach(this.onUpKey.bind(this));
events.normalizedDownKey
.pipe(takeUntil(events.line))
.forEach(this.onDownKey.bind(this));
events.numberKey.pipe(takeUntil(events.line)).forEach(this.onNumberKey.bind(this));
events.line
.take(1)
.map(this.getCurrentValue.bind(this))
.flatMap(value => runAsync(self.opt.filter)(value).catch(err => err))
.pipe(
take(1),
map(this.getCurrentValue.bind(this)),
flatMap(value => runAsync(self.opt.filter)(value).catch(err => err))
)
.forEach(this.onSubmit.bind(this));

// Init the prompt
Expand Down
7 changes: 5 additions & 2 deletions lib/prompts/password.js
Expand Up @@ -4,6 +4,7 @@
*/

var chalk = require('chalk');
var { map, takeUntil } = require('rxjs/operators');
var Base = require('./base');
var observe = require('../utils/events');

Expand All @@ -30,14 +31,16 @@ class PasswordPrompt extends Base {
var events = observe(this.rl);

// Once user confirm (enter key)
var submit = events.line.map(this.filterInput.bind(this));
var submit = events.line.pipe(map(this.filterInput.bind(this)));

var validation = this.handleSubmitEvents(submit);
validation.success.forEach(this.onEnd.bind(this));
validation.error.forEach(this.onError.bind(this));

if (this.opt.mask) {
events.keypress.takeUntil(validation.success).forEach(this.onKeypress.bind(this));
events.keypress
.pipe(takeUntil(validation.success))
.forEach(this.onKeypress.bind(this));
}

// Init
Expand Down
7 changes: 5 additions & 2 deletions lib/prompts/rawlist.js
Expand Up @@ -5,6 +5,7 @@

var _ = require('lodash');
var chalk = require('chalk');
var { map, takeUntil } = require('rxjs/operators');
var Base = require('./base');
var Separator = require('../objects/separator');
var observe = require('../utils/events');
Expand Down Expand Up @@ -57,13 +58,15 @@ class RawListPrompt extends Base {

// Once user confirm (enter key)
var events = observe(this.rl);
var submit = events.line.map(this.getCurrentValue.bind(this));
var submit = events.line.pipe(map(this.getCurrentValue.bind(this)));

var validation = this.handleSubmitEvents(submit);
validation.success.forEach(this.onEnd.bind(this));
validation.error.forEach(this.onError.bind(this));

events.keypress.takeUntil(validation.success).forEach(this.onKeypress.bind(this));
events.keypress
.pipe(takeUntil(validation.success))
.forEach(this.onKeypress.bind(this));

// Init the prompt
this.render();
Expand Down

0 comments on commit 78bd4da

Please sign in to comment.