refactor: Update rxjs operators to be lettable

Fixes #8912
This commit is contained in:
Mike Brocchi 2017-12-21 13:49:32 -05:00 committed by Hans
parent e654fb2b3f
commit 5a736bd90b
20 changed files with 66 additions and 82 deletions

10
package-lock.json generated
View File

@ -271,9 +271,9 @@
"dev": true "dev": true
}, },
"@types/source-map": { "@types/source-map": {
"version": "0.5.1", "version": "0.5.2",
"resolved": "https://registry.npmjs.org/@types/source-map/-/source-map-0.5.1.tgz", "resolved": "https://registry.npmjs.org/@types/source-map/-/source-map-0.5.2.tgz",
"integrity": "sha512-/GVAjL1Y8puvZab63n8tsuBiYwZt1bApMdx58/msQ9ID5T05ov+wm/ZV1DvYC/DKKEygpTJViqQvkh5Rhrl4CA==", "integrity": "sha512-++w4WmMbk3dS3UeHGzAG+xJOSz5Xqtjys/TBkqG3qp3SeWE7Wwezqe5eB7B51cxUyh4PW7bwVotpsLdBK0D8cw==",
"dev": true "dev": true
}, },
"@types/tapable": { "@types/tapable": {
@ -288,7 +288,7 @@
"integrity": "sha512-BdFLCZW0GTl31AbqXSak8ss/MqEZ3DN2MH9rkAyGoTuzK7ifGUlX+u0nfbWeTsa7IPcZhtn8BlpYBXSV+vqGhQ==", "integrity": "sha512-BdFLCZW0GTl31AbqXSak8ss/MqEZ3DN2MH9rkAyGoTuzK7ifGUlX+u0nfbWeTsa7IPcZhtn8BlpYBXSV+vqGhQ==",
"dev": true, "dev": true,
"requires": { "requires": {
"@types/source-map": "0.5.1" "@types/source-map": "0.5.2"
} }
}, },
"@types/webpack": { "@types/webpack": {
@ -310,7 +310,7 @@
"requires": { "requires": {
"@types/node": "6.0.88", "@types/node": "6.0.88",
"@types/source-list-map": "0.1.2", "@types/source-list-map": "0.1.2",
"@types/source-map": "0.5.1" "@types/source-map": "0.5.2"
} }
}, },
"JSONStream": { "JSONStream": {

View File

@ -122,7 +122,7 @@
"@types/node": "^6.0.84", "@types/node": "^6.0.84",
"@types/request": "~2.0.0", "@types/request": "~2.0.0",
"@types/semver": "^5.3.30", "@types/semver": "^5.3.30",
"@types/source-map": "^0.5.0", "@types/source-map": "0.5.2",
"@types/webpack": "^3.0.5", "@types/webpack": "^3.0.5",
"@types/webpack-sources": "^0.1.3", "@types/webpack-sources": "^0.1.3",
"conventional-changelog": "1.1.0", "conventional-changelog": "1.1.0",

View File

@ -3,8 +3,6 @@ const stringUtils = require('ember-cli-string-utils');
import { oneLine } from 'common-tags'; import { oneLine } from 'common-tags';
import { CliConfig } from '../models/config'; import { CliConfig } from '../models/config';
import 'rxjs/add/observable/of';
import 'rxjs/add/operator/ignoreElements';
import { import {
getCollection, getCollection,
getEngineHost getEngineHost

View File

@ -67,7 +67,7 @@
"postcss-url": "^7.1.2", "postcss-url": "^7.1.2",
"raw-loader": "^0.5.1", "raw-loader": "^0.5.1",
"resolve": "^1.1.7", "resolve": "^1.1.7",
"rxjs": "^5.5.2", "rxjs": "^5.5.6",
"sass-loader": "^6.0.6", "sass-loader": "^6.0.6",
"semver": "^5.1.0", "semver": "^5.1.0",
"silent-error": "^1.0.0", "silent-error": "^1.0.0",

View File

@ -25,9 +25,9 @@ export interface CliLintConfig {
export class LintTaskOptions { export class LintTaskOptions {
fix: boolean; fix: boolean;
force: boolean; force: boolean;
format? = 'prose'; format ? = 'prose';
silent? = false; silent ? = false;
typeCheck? = false; typeCheck ? = false;
configs: Array<CliLintConfig>; configs: Array<CliLintConfig>;
} }

View File

@ -8,12 +8,11 @@ import {
Tree Tree
} from '@angular-devkit/schematics'; } from '@angular-devkit/schematics';
import { FileSystemHost } from '@angular-devkit/schematics/tools'; import { FileSystemHost } from '@angular-devkit/schematics/tools';
import { Observable } from 'rxjs/Observable'; import { of as observableOf } from 'rxjs/observable/of';
import * as path from 'path'; import * as path from 'path';
import chalk from 'chalk'; import chalk from 'chalk';
import { CliConfig } from '../models/config'; import { CliConfig } from '../models/config';
import 'rxjs/add/operator/concatMap'; import { concat, concatMap, ignoreElements, map } from 'rxjs/operators';
import 'rxjs/add/operator/map';
import { getCollection, getSchematic } from '../utilities/schematics'; import { getCollection, getSchematic } from '../utilities/schematics';
const { green, red, yellow } = chalk; const { green, red, yellow } = chalk;
@ -58,7 +57,7 @@ export default Task.extend({
const opts = { ...taskOptions, ...preppedOptions }; const opts = { ...taskOptions, ...preppedOptions };
const tree = emptyHost ? new EmptyTree() : new FileSystemTree(new FileSystemHost(workingDir)); const tree = emptyHost ? new EmptyTree() : new FileSystemTree(new FileSystemHost(workingDir));
const host = Observable.of(tree); const host = observableOf(tree);
const dryRunSink = new DryRunSink(workingDir, opts.force); const dryRunSink = new DryRunSink(workingDir, opts.force);
const fsSink = new FileSystemSink(workingDir, opts.force); const fsSink = new FileSystemSink(workingDir, opts.force);
@ -111,22 +110,26 @@ export default Task.extend({
}); });
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
schematic.call(opts, host) schematic.call(opts, host).pipe(
.map((tree: Tree) => Tree.optimize(tree)) map((tree: Tree) => Tree.optimize(tree)),
.concatMap((tree: Tree) => { concatMap((tree: Tree) => {
return dryRunSink.commit(tree).ignoreElements().concat(Observable.of(tree)); return dryRunSink.commit(tree).pipe(
}) ignoreElements(),
.concatMap((tree: Tree) => { concat(observableOf(tree)));
}),
concatMap((tree: Tree) => {
if (!error) { if (!error) {
// Output the logging queue. // Output the logging queue.
loggingQueue.forEach(log => ui.writeLine(` ${log.color(log.keyword)} ${log.message}`)); loggingQueue.forEach(log => ui.writeLine(` ${log.color(log.keyword)} ${log.message}`));
} }
if (opts.dryRun || error) { if (opts.dryRun || error) {
return Observable.of(tree); return observableOf(tree);
} }
return fsSink.commit(tree).ignoreElements().concat(Observable.of(tree)); return fsSink.commit(tree).pipe(
}) ignoreElements(),
concat(observableOf(tree)));
}))
.subscribe({ .subscribe({
error(err) { error(err) {
ui.writeLine(red(`Error: ${err.message}`)); ui.writeLine(red(`Error: ${err.message}`));

View File

@ -20,8 +20,6 @@ import {
validateOptionsWithSchema validateOptionsWithSchema
} from '@angular-devkit/schematics/tools'; } from '@angular-devkit/schematics/tools';
import { SchemaClassFactory } from '@ngtools/json-schema'; import { SchemaClassFactory } from '@ngtools/json-schema';
import 'rxjs/add/operator/concatMap';
import 'rxjs/add/operator/map';
const SilentError = require('silent-error'); const SilentError = require('silent-error');

View File

@ -1,13 +1,13 @@
import {LogEntry, Logger} from './logger'; import {LogEntry, Logger} from './logger';
import {ConsoleLoggerStack} from './console-logger-stack'; import {ConsoleLoggerStack} from './console-logger-stack';
import {NullLogger} from './null-logger'; import {NullLogger} from './null-logger';
import {toArray} from 'rxjs/operators';
describe('ConsoleLoggerStack', () => { describe('ConsoleLoggerStack', () => {
it('works', (done: DoneFn) => { it('works', (done: DoneFn) => {
const logger = ConsoleLoggerStack.start('test'); const logger = ConsoleLoggerStack.start('test');
logger logger.pipe(toArray())
.toArray()
.toPromise() .toPromise()
.then((observed: LogEntry[]) => { .then((observed: LogEntry[]) => {
expect(observed).toEqual([ expect(observed).toEqual([
@ -26,8 +26,7 @@ describe('ConsoleLoggerStack', () => {
const oldConsoleLog = console.log; const oldConsoleLog = console.log;
const logger = ConsoleLoggerStack.start('test'); const logger = ConsoleLoggerStack.start('test');
expect(console.log).not.toBe(oldConsoleLog); expect(console.log).not.toBe(oldConsoleLog);
logger logger.pipe(toArray())
.toArray()
.toPromise() .toPromise()
.then((observed: LogEntry[]) => { .then((observed: LogEntry[]) => {
expect(observed).toEqual([ expect(observed).toEqual([
@ -55,8 +54,7 @@ describe('ConsoleLoggerStack', () => {
const logger = new Logger('test'); const logger = new Logger('test');
ConsoleLoggerStack.start(logger); ConsoleLoggerStack.start(logger);
expect(console.log).not.toBe(oldConsoleLog); expect(console.log).not.toBe(oldConsoleLog);
logger logger.pipe(toArray())
.toArray()
.toPromise() .toPromise()
.then((observed: LogEntry[]) => { .then((observed: LogEntry[]) => {
expect(observed).toEqual([ expect(observed).toEqual([

View File

@ -1,12 +1,12 @@
import {LogEntry, Logger} from './logger'; import {LogEntry, Logger} from './logger';
import {IndentLogger} from './indent'; import {IndentLogger} from './indent';
import {toArray} from 'rxjs/operators';
describe('IndentSpec', () => { describe('IndentSpec', () => {
it('works', (done: DoneFn) => { it('works', (done: DoneFn) => {
const logger = new IndentLogger('test'); const logger = new IndentLogger('test');
logger logger.pipe(toArray())
.toArray()
.toPromise() .toPromise()
.then((observed: LogEntry[]) => { .then((observed: LogEntry[]) => {
expect(observed).toEqual([ expect(observed).toEqual([

View File

@ -1,7 +1,6 @@
import { map } from 'rxjs/operators';
import {Logger} from './logger'; import {Logger} from './logger';
import 'rxjs/add/operator/map';
/** /**
* Keep an map of indentation => array of indentations based on the level. * Keep an map of indentation => array of indentations based on the level.
@ -18,20 +17,20 @@ export class IndentLogger extends Logger {
super(name, parent); super(name, parent);
indentationMap[indentation] = indentationMap[indentation] || ['']; indentationMap[indentation] = indentationMap[indentation] || [''];
const map = indentationMap[indentation]; const indentMap = indentationMap[indentation];
this._observable = this._observable.map(entry => { this._observable = this._observable.pipe(map(entry => {
const l = entry.path.length; const l = entry.path.length;
if (l >= map.length) { if (l >= indentMap.length) {
let current = map[map.length - 1]; let current = indentMap[indentMap.length - 1];
while (l >= map.length) { while (l >= indentMap.length) {
current += indentation; current += indentation;
map.push(current); indentMap.push(current);
} }
} }
entry.message = map[l] + entry.message; entry.message = indentMap[l] + entry.message;
return entry; return entry;
}); }));
} }
} }

View File

@ -1,13 +1,11 @@
import {Logger, JsonValue} from './logger'; import {Logger, JsonValue} from './logger';
import 'rxjs/add/operator/toArray'; import {toArray} from 'rxjs/operators';
import 'rxjs/add/operator/toPromise';
describe('Logger', () => { describe('Logger', () => {
it('works', (done: DoneFn) => { it('works', (done: DoneFn) => {
const logger = new Logger('test'); const logger = new Logger('test');
logger logger.pipe(toArray())
.toArray()
.toPromise() .toPromise()
.then((observed: JsonValue[]) => { .then((observed: JsonValue[]) => {
expect(observed).toEqual([ expect(observed).toEqual([
@ -25,8 +23,7 @@ describe('Logger', () => {
it('works with children', (done: DoneFn) => { it('works with children', (done: DoneFn) => {
const logger = new Logger('test'); const logger = new Logger('test');
let hasCompleted = false; let hasCompleted = false;
logger logger.pipe(toArray())
.toArray()
.toPromise() .toPromise()
.then((observed: JsonValue[]) => { .then((observed: JsonValue[]) => {
expect(observed).toEqual([ expect(observed).toEqual([

View File

@ -1,12 +1,12 @@
import {NullLogger} from './null-logger'; import {NullLogger} from './null-logger';
import {LogEntry, Logger} from './logger'; import {LogEntry, Logger} from './logger';
import {toArray} from 'rxjs/operators';
describe('NullLogger', () => { describe('NullLogger', () => {
it('works', (done: DoneFn) => { it('works', (done: DoneFn) => {
const logger = new NullLogger(); const logger = new NullLogger();
logger logger.pipe(toArray())
.toArray()
.toPromise() .toPromise()
.then((observed: LogEntry[]) => { .then((observed: LogEntry[]) => {
expect(observed).toEqual([]); expect(observed).toEqual([]);
@ -20,8 +20,7 @@ describe('NullLogger', () => {
it('nullifies children', (done: DoneFn) => { it('nullifies children', (done: DoneFn) => {
const logger = new Logger('test'); const logger = new Logger('test');
logger logger.pipe(toArray())
.toArray()
.toPromise() .toPromise()
.then((observed: LogEntry[]) => { .then((observed: LogEntry[]) => {
expect(observed).toEqual([]); expect(observed).toEqual([]);

View File

@ -1,13 +1,10 @@
import {Logger} from './logger'; import { empty } from 'rxjs/observable/empty';
import { Logger } from './logger';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/observable/empty';
export class NullLogger extends Logger { export class NullLogger extends Logger {
constructor(parent: Logger | null = null) { constructor(parent: Logger | null = null) {
super('', parent); super('', parent);
this._observable = Observable.empty(); this._observable = empty();
} }
} }

View File

@ -1,22 +1,19 @@
import {TransformLogger} from './transform-logger'; import {TransformLogger} from './transform-logger';
import {LogEntry} from './logger'; import {LogEntry} from './logger';
import {filter, map, toArray} from 'rxjs/operators';
import 'rxjs/add/operator/filter';
import 'rxjs/add/operator/map';
describe('TransformLogger', () => { describe('TransformLogger', () => {
it('works', (done: DoneFn) => { it('works', (done: DoneFn) => {
const logger = new TransformLogger('test', stream => { const logger = new TransformLogger('test', stream => {
return stream return stream.pipe(
.filter(entry => entry.message != 'hello') filter(entry => entry.message != 'hello'),
.map(entry => { map(entry => {
entry.message += '1'; entry.message += '1';
return entry; return entry;
}); }));
}); });
logger logger.pipe(toArray())
.toArray()
.toPromise() .toPromise()
.then((observed: LogEntry[]) => { .then((observed: LogEntry[]) => {
expect(observed).toEqual([ expect(observed).toEqual([

View File

@ -273,7 +273,7 @@ export class AngularCompilerPlugin implements Tapable {
this._entryModule = this._options.entryModule; this._entryModule = this._options.entryModule;
} else if (this._compilerOptions.entryModule) { } else if (this._compilerOptions.entryModule) {
this._entryModule = path.resolve(this._basePath, this._entryModule = path.resolve(this._basePath,
this._compilerOptions.entryModule); this._compilerOptions.entryModule as string); // temporary cast for type issue
} }
// Set platform. // Set platform.

View File

@ -6,7 +6,7 @@ const validateCommitMessage = require('./validate-commit-message');
const execSync = require('child_process').execSync; const execSync = require('child_process').execSync;
const chalk = require('chalk'); const chalk = require('chalk');
const Logger = require('@ngtools/logger').Logger; const Logger = require('@ngtools/logger').Logger;
require('rxjs/add/operator/filter'); const filter = require('rxjs/operators').filter;
// Configure logger // Configure logger
const logger = new Logger('test-commit-messages'); const logger = new Logger('test-commit-messages');
@ -25,7 +25,7 @@ logger.subscribe((entry) => {
}); });
logger logger
.filter((entry) => entry.level === 'fatal') .pipe(filter((entry) => entry.level === 'fatal'))
.subscribe(() => { .subscribe(() => {
process.stderr.write('A fatal error happened. See details above.'); process.stderr.write('A fatal error happened. See details above.');
process.exit(1); process.exit(1);

View File

@ -4,7 +4,7 @@ const path = require('path');
const chalk = require('chalk'); const chalk = require('chalk');
const spdxSatisfies = require('spdx-satisfies'); const spdxSatisfies = require('spdx-satisfies');
const Logger = require('@ngtools/logger').Logger; const Logger = require('@ngtools/logger').Logger;
require('rxjs/add/operator/filter'); const filter = require('rxjs/operators').filter;
// Configure logger // Configure logger
const logger = new Logger('test-licenses'); const logger = new Logger('test-licenses');
@ -23,7 +23,7 @@ logger.subscribe((entry) => {
}); });
logger logger
.filter((entry) => entry.level == 'fatal') .pipe(filter((entry) => entry.level == 'fatal'))
.subscribe(() => { .subscribe(() => {
process.stderr.write('A fatal error happened. See details above.'); process.stderr.write('A fatal error happened. See details above.');
process.exit(1); process.exit(1);

View File

@ -131,7 +131,6 @@ export default function () {
'src/app/app.component.ts': ` 'src/app/app.component.ts': `
import { Component } from '@angular/core'; import { Component } from '@angular/core';
import { Http, Response } from '@angular/http'; import { Http, Response } from '@angular/http';
import 'rxjs/add/operator/map';
@Component({ @Component({
selector: 'app-root', selector: 'app-root',

View File

@ -14,8 +14,7 @@ import * as path from 'path';
import {setGlobalVariable} from './e2e/utils/env'; import {setGlobalVariable} from './e2e/utils/env';
// RxJS // RxJS
import 'rxjs/add/operator/filter'; import {filter} from 'rxjs/operators';
import 'rxjs/add/observable/empty';
Error.stackTraceLimit = Infinity; Error.stackTraceLimit = Infinity;
@ -73,7 +72,7 @@ process.exitCode = 255;
ConsoleLoggerStack.start(new IndentLogger('name')) ConsoleLoggerStack.start(new IndentLogger('name'))
.filter((entry: LogEntry) => (entry.level != 'debug' || argv.verbose)) .pipe(filter((entry: LogEntry) => (entry.level != 'debug' || argv.verbose)))
.subscribe((entry: LogEntry) => { .subscribe((entry: LogEntry) => {
let color: (s: string) => string = white; let color: (s: string) => string = white;
let output = process.stdout; let output = process.stdout;

View File

@ -5,7 +5,7 @@ import chalk from 'chalk';
import * as minimist from 'minimist'; import * as minimist from 'minimist';
import 'rxjs/add/operator/filter'; import {filter} from 'rxjs/operators';
const { bold, red, yellow, white } = chalk; const { bold, red, yellow, white } = chalk;
@ -17,7 +17,7 @@ const argv = minimist(process.argv.slice(2), {
const rootLogger = new IndentLogger('cling'); const rootLogger = new IndentLogger('cling');
rootLogger rootLogger
.filter((entry: LogEntry) => (entry.level != 'debug' || argv['verbose'])) .pipe(filter((entry: LogEntry) => (entry.level != 'debug' || argv['verbose'])))
.subscribe((entry: LogEntry) => { .subscribe((entry: LogEntry) => {
let color: (s: string) => string = white; let color: (s: string) => string = white;
let output = process.stdout; let output = process.stdout;
@ -32,7 +32,7 @@ rootLogger
}); });
rootLogger rootLogger
.filter((entry: LogEntry) => entry.level == 'fatal') .pipe(filter((entry: LogEntry) => entry.level == 'fatal'))
.subscribe(() => { .subscribe(() => {
process.stderr.write('A fatal error happened. See details above.'); process.stderr.write('A fatal error happened. See details above.');
process.exit(100); process.exit(100);