From 999da5c4bdfec841ccdea220278b86ff8446cef3 Mon Sep 17 00:00:00 2001 From: Mike Brocchi Date: Thu, 21 Dec 2017 13:49:32 -0500 Subject: [PATCH] refactor: Update rxjs operators to be lettable Fixes #8912 --- package-lock.json | 10 +++---- package.json | 2 +- packages/@angular/cli/commands/generate.ts | 2 -- packages/@angular/cli/package.json | 2 +- packages/@angular/cli/tasks/lint.ts | 6 ++-- packages/@angular/cli/tasks/schematic-run.ts | 29 ++++++++++--------- packages/@angular/cli/utilities/schematics.ts | 2 -- .../logger/src/console-logger-stack.spec.ts | 10 +++---- packages/@ngtools/logger/src/indent.spec.ts | 4 +-- packages/@ngtools/logger/src/indent.ts | 19 ++++++------ packages/@ngtools/logger/src/logger.spec.ts | 9 ++---- .../@ngtools/logger/src/null-logger.spec.ts | 7 ++--- packages/@ngtools/logger/src/null-logger.ts | 9 ++---- .../logger/src/transform-logger.spec.ts | 15 ++++------ .../webpack/src/angular_compiler_plugin.ts | 2 +- scripts/test-commit-messages.js | 4 +-- scripts/test-licenses.js | 4 +-- tests/e2e/tests/basic/assets.ts | 1 - tests/e2e_runner.ts | 5 ++-- tools/publish/src/main.ts | 6 ++-- 20 files changed, 66 insertions(+), 82 deletions(-) diff --git a/package-lock.json b/package-lock.json index a5c1e1c01d45..8d27522afe82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -271,9 +271,9 @@ "dev": true }, "@types/source-map": { - "version": "0.5.1", - "resolved": "https://registry.npmjs.org/@types/source-map/-/source-map-0.5.1.tgz", - "integrity": "sha512-/GVAjL1Y8puvZab63n8tsuBiYwZt1bApMdx58/msQ9ID5T05ov+wm/ZV1DvYC/DKKEygpTJViqQvkh5Rhrl4CA==", + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@types/source-map/-/source-map-0.5.2.tgz", + "integrity": "sha512-++w4WmMbk3dS3UeHGzAG+xJOSz5Xqtjys/TBkqG3qp3SeWE7Wwezqe5eB7B51cxUyh4PW7bwVotpsLdBK0D8cw==", "dev": true }, "@types/tapable": { @@ -288,7 +288,7 @@ "integrity": "sha512-BdFLCZW0GTl31AbqXSak8ss/MqEZ3DN2MH9rkAyGoTuzK7ifGUlX+u0nfbWeTsa7IPcZhtn8BlpYBXSV+vqGhQ==", "dev": true, "requires": { - "@types/source-map": "0.5.1" + "@types/source-map": "0.5.2" } }, "@types/webpack": { @@ -310,7 +310,7 @@ "requires": { "@types/node": "6.0.88", "@types/source-list-map": "0.1.2", - "@types/source-map": "0.5.1" + "@types/source-map": "0.5.2" } }, "JSONStream": { diff --git a/package.json b/package.json index 000a793edd7d..8cf557c988f5 100644 --- a/package.json +++ b/package.json @@ -121,7 +121,7 @@ "@types/node": "^6.0.84", "@types/request": "~2.0.0", "@types/semver": "^5.3.30", - "@types/source-map": "^0.5.0", + "@types/source-map": "0.5.2", "@types/webpack": "^3.0.5", "@types/webpack-sources": "^0.1.3", "conventional-changelog": "1.1.0", diff --git a/packages/@angular/cli/commands/generate.ts b/packages/@angular/cli/commands/generate.ts index b8337be48a5b..81e5d8995d46 100644 --- a/packages/@angular/cli/commands/generate.ts +++ b/packages/@angular/cli/commands/generate.ts @@ -3,8 +3,6 @@ const stringUtils = require('ember-cli-string-utils'); import { oneLine } from 'common-tags'; import { CliConfig } from '../models/config'; -import 'rxjs/add/observable/of'; -import 'rxjs/add/operator/ignoreElements'; import { getCollection, getEngineHost diff --git a/packages/@angular/cli/package.json b/packages/@angular/cli/package.json index 4e4fc1d4bcd5..b25cf5e70814 100644 --- a/packages/@angular/cli/package.json +++ b/packages/@angular/cli/package.json @@ -66,7 +66,7 @@ "postcss-url": "^7.1.2", "raw-loader": "^0.5.1", "resolve": "^1.1.7", - "rxjs": "^5.5.2", + "rxjs": "^5.5.6", "sass-loader": "^6.0.6", "semver": "^5.1.0", "silent-error": "^1.0.0", diff --git a/packages/@angular/cli/tasks/lint.ts b/packages/@angular/cli/tasks/lint.ts index 4b747ac72bdb..289b4f9155ab 100644 --- a/packages/@angular/cli/tasks/lint.ts +++ b/packages/@angular/cli/tasks/lint.ts @@ -25,9 +25,9 @@ export interface CliLintConfig { export class LintTaskOptions { fix: boolean; force: boolean; - format? = 'prose'; - silent? = false; - typeCheck? = false; + format ? = 'prose'; + silent ? = false; + typeCheck ? = false; configs: Array; } diff --git a/packages/@angular/cli/tasks/schematic-run.ts b/packages/@angular/cli/tasks/schematic-run.ts index b49ddee6fa71..5c7351164751 100644 --- a/packages/@angular/cli/tasks/schematic-run.ts +++ b/packages/@angular/cli/tasks/schematic-run.ts @@ -8,12 +8,11 @@ import { Tree } from '@angular-devkit/schematics'; 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 chalk from 'chalk'; import { CliConfig } from '../models/config'; -import 'rxjs/add/operator/concatMap'; -import 'rxjs/add/operator/map'; +import { concat, concatMap, ignoreElements, map } from 'rxjs/operators'; import { getCollection, getSchematic } from '../utilities/schematics'; const { green, red, yellow } = chalk; @@ -58,7 +57,7 @@ export default Task.extend({ const opts = { ...taskOptions, ...preppedOptions }; 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 fsSink = new FileSystemSink(workingDir, opts.force); @@ -111,22 +110,26 @@ export default Task.extend({ }); return new Promise((resolve, reject) => { - schematic.call(opts, host) - .map((tree: Tree) => Tree.optimize(tree)) - .concatMap((tree: Tree) => { - return dryRunSink.commit(tree).ignoreElements().concat(Observable.of(tree)); - }) - .concatMap((tree: Tree) => { + schematic.call(opts, host).pipe( + map((tree: Tree) => Tree.optimize(tree)), + concatMap((tree: Tree) => { + return dryRunSink.commit(tree).pipe( + ignoreElements(), + concat(observableOf(tree))); + }), + concatMap((tree: Tree) => { if (!error) { // Output the logging queue. loggingQueue.forEach(log => ui.writeLine(` ${log.color(log.keyword)} ${log.message}`)); } 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({ error(err) { ui.writeLine(red(`Error: ${err.message}`)); diff --git a/packages/@angular/cli/utilities/schematics.ts b/packages/@angular/cli/utilities/schematics.ts index ff468fba4880..2bfac3fba9d6 100644 --- a/packages/@angular/cli/utilities/schematics.ts +++ b/packages/@angular/cli/utilities/schematics.ts @@ -20,8 +20,6 @@ import { validateOptionsWithSchema } from '@angular-devkit/schematics/tools'; import { SchemaClassFactory } from '@ngtools/json-schema'; -import 'rxjs/add/operator/concatMap'; -import 'rxjs/add/operator/map'; const SilentError = require('silent-error'); diff --git a/packages/@ngtools/logger/src/console-logger-stack.spec.ts b/packages/@ngtools/logger/src/console-logger-stack.spec.ts index f408c44e8f70..21dbdb54662b 100644 --- a/packages/@ngtools/logger/src/console-logger-stack.spec.ts +++ b/packages/@ngtools/logger/src/console-logger-stack.spec.ts @@ -1,13 +1,13 @@ import {LogEntry, Logger} from './logger'; import {ConsoleLoggerStack} from './console-logger-stack'; import {NullLogger} from './null-logger'; +import {toArray} from 'rxjs/operators'; describe('ConsoleLoggerStack', () => { it('works', (done: DoneFn) => { const logger = ConsoleLoggerStack.start('test'); - logger - .toArray() + logger.pipe(toArray()) .toPromise() .then((observed: LogEntry[]) => { expect(observed).toEqual([ @@ -26,8 +26,7 @@ describe('ConsoleLoggerStack', () => { const oldConsoleLog = console.log; const logger = ConsoleLoggerStack.start('test'); expect(console.log).not.toBe(oldConsoleLog); - logger - .toArray() + logger.pipe(toArray()) .toPromise() .then((observed: LogEntry[]) => { expect(observed).toEqual([ @@ -55,8 +54,7 @@ describe('ConsoleLoggerStack', () => { const logger = new Logger('test'); ConsoleLoggerStack.start(logger); expect(console.log).not.toBe(oldConsoleLog); - logger - .toArray() + logger.pipe(toArray()) .toPromise() .then((observed: LogEntry[]) => { expect(observed).toEqual([ diff --git a/packages/@ngtools/logger/src/indent.spec.ts b/packages/@ngtools/logger/src/indent.spec.ts index aae7a897c6eb..d5d280a47f99 100644 --- a/packages/@ngtools/logger/src/indent.spec.ts +++ b/packages/@ngtools/logger/src/indent.spec.ts @@ -1,12 +1,12 @@ import {LogEntry, Logger} from './logger'; import {IndentLogger} from './indent'; +import {toArray} from 'rxjs/operators'; describe('IndentSpec', () => { it('works', (done: DoneFn) => { const logger = new IndentLogger('test'); - logger - .toArray() + logger.pipe(toArray()) .toPromise() .then((observed: LogEntry[]) => { expect(observed).toEqual([ diff --git a/packages/@ngtools/logger/src/indent.ts b/packages/@ngtools/logger/src/indent.ts index 98cdc21f77cb..aab9373667ac 100644 --- a/packages/@ngtools/logger/src/indent.ts +++ b/packages/@ngtools/logger/src/indent.ts @@ -1,7 +1,6 @@ +import { map } from 'rxjs/operators'; import {Logger} from './logger'; -import 'rxjs/add/operator/map'; - /** * Keep an map of indentation => array of indentations based on the level. @@ -18,20 +17,20 @@ export class IndentLogger extends Logger { super(name, parent); 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; - if (l >= map.length) { - let current = map[map.length - 1]; - while (l >= map.length) { + if (l >= indentMap.length) { + let current = indentMap[indentMap.length - 1]; + while (l >= indentMap.length) { current += indentation; - map.push(current); + indentMap.push(current); } } - entry.message = map[l] + entry.message; + entry.message = indentMap[l] + entry.message; return entry; - }); + })); } } diff --git a/packages/@ngtools/logger/src/logger.spec.ts b/packages/@ngtools/logger/src/logger.spec.ts index 2cc9ed4bad72..21651156ae40 100644 --- a/packages/@ngtools/logger/src/logger.spec.ts +++ b/packages/@ngtools/logger/src/logger.spec.ts @@ -1,13 +1,11 @@ import {Logger, JsonValue} from './logger'; -import 'rxjs/add/operator/toArray'; -import 'rxjs/add/operator/toPromise'; +import {toArray} from 'rxjs/operators'; describe('Logger', () => { it('works', (done: DoneFn) => { const logger = new Logger('test'); - logger - .toArray() + logger.pipe(toArray()) .toPromise() .then((observed: JsonValue[]) => { expect(observed).toEqual([ @@ -25,8 +23,7 @@ describe('Logger', () => { it('works with children', (done: DoneFn) => { const logger = new Logger('test'); let hasCompleted = false; - logger - .toArray() + logger.pipe(toArray()) .toPromise() .then((observed: JsonValue[]) => { expect(observed).toEqual([ diff --git a/packages/@ngtools/logger/src/null-logger.spec.ts b/packages/@ngtools/logger/src/null-logger.spec.ts index 3b66f4a39dfe..5506035cc405 100644 --- a/packages/@ngtools/logger/src/null-logger.spec.ts +++ b/packages/@ngtools/logger/src/null-logger.spec.ts @@ -1,12 +1,12 @@ import {NullLogger} from './null-logger'; import {LogEntry, Logger} from './logger'; +import {toArray} from 'rxjs/operators'; describe('NullLogger', () => { it('works', (done: DoneFn) => { const logger = new NullLogger(); - logger - .toArray() + logger.pipe(toArray()) .toPromise() .then((observed: LogEntry[]) => { expect(observed).toEqual([]); @@ -20,8 +20,7 @@ describe('NullLogger', () => { it('nullifies children', (done: DoneFn) => { const logger = new Logger('test'); - logger - .toArray() + logger.pipe(toArray()) .toPromise() .then((observed: LogEntry[]) => { expect(observed).toEqual([]); diff --git a/packages/@ngtools/logger/src/null-logger.ts b/packages/@ngtools/logger/src/null-logger.ts index e01b4229163e..6c3da665dd23 100644 --- a/packages/@ngtools/logger/src/null-logger.ts +++ b/packages/@ngtools/logger/src/null-logger.ts @@ -1,13 +1,10 @@ -import {Logger} from './logger'; - -import {Observable} from 'rxjs/Observable'; - -import 'rxjs/add/observable/empty'; +import { empty } from 'rxjs/observable/empty'; +import { Logger } from './logger'; export class NullLogger extends Logger { constructor(parent: Logger | null = null) { super('', parent); - this._observable = Observable.empty(); + this._observable = empty(); } } diff --git a/packages/@ngtools/logger/src/transform-logger.spec.ts b/packages/@ngtools/logger/src/transform-logger.spec.ts index f0cf572e7023..bee4cc589661 100644 --- a/packages/@ngtools/logger/src/transform-logger.spec.ts +++ b/packages/@ngtools/logger/src/transform-logger.spec.ts @@ -1,22 +1,19 @@ import {TransformLogger} from './transform-logger'; import {LogEntry} from './logger'; - -import 'rxjs/add/operator/filter'; -import 'rxjs/add/operator/map'; +import {filter, map, toArray} from 'rxjs/operators'; describe('TransformLogger', () => { it('works', (done: DoneFn) => { const logger = new TransformLogger('test', stream => { - return stream - .filter(entry => entry.message != 'hello') - .map(entry => { + return stream.pipe( + filter(entry => entry.message != 'hello'), + map(entry => { entry.message += '1'; return entry; - }); + })); }); - logger - .toArray() + logger.pipe(toArray()) .toPromise() .then((observed: LogEntry[]) => { expect(observed).toEqual([ diff --git a/packages/@ngtools/webpack/src/angular_compiler_plugin.ts b/packages/@ngtools/webpack/src/angular_compiler_plugin.ts index 9aa58816a62e..b10c5bf175bb 100644 --- a/packages/@ngtools/webpack/src/angular_compiler_plugin.ts +++ b/packages/@ngtools/webpack/src/angular_compiler_plugin.ts @@ -273,7 +273,7 @@ export class AngularCompilerPlugin implements Tapable { this._entryModule = this._options.entryModule; } else if (this._compilerOptions.entryModule) { this._entryModule = path.resolve(this._basePath, - this._compilerOptions.entryModule); + this._compilerOptions.entryModule as string); // temporary cast for type issue } // Set platform. diff --git a/scripts/test-commit-messages.js b/scripts/test-commit-messages.js index 10d456a30f82..a5dd9a316033 100644 --- a/scripts/test-commit-messages.js +++ b/scripts/test-commit-messages.js @@ -6,7 +6,7 @@ const validateCommitMessage = require('./validate-commit-message'); const execSync = require('child_process').execSync; const chalk = require('chalk'); const Logger = require('@ngtools/logger').Logger; -require('rxjs/add/operator/filter'); +const filter = require('rxjs/operators').filter; // Configure logger const logger = new Logger('test-commit-messages'); @@ -25,7 +25,7 @@ logger.subscribe((entry) => { }); logger - .filter((entry) => entry.level === 'fatal') + .pipe(filter((entry) => entry.level === 'fatal')) .subscribe(() => { process.stderr.write('A fatal error happened. See details above.'); process.exit(1); diff --git a/scripts/test-licenses.js b/scripts/test-licenses.js index ae68d7f75d1e..4b0a23445d50 100644 --- a/scripts/test-licenses.js +++ b/scripts/test-licenses.js @@ -4,7 +4,7 @@ const path = require('path'); const chalk = require('chalk'); const spdxSatisfies = require('spdx-satisfies'); const Logger = require('@ngtools/logger').Logger; -require('rxjs/add/operator/filter'); +const filter = require('rxjs/operators').filter; // Configure logger const logger = new Logger('test-licenses'); @@ -23,7 +23,7 @@ logger.subscribe((entry) => { }); logger - .filter((entry) => entry.level == 'fatal') + .pipe(filter((entry) => entry.level == 'fatal')) .subscribe(() => { process.stderr.write('A fatal error happened. See details above.'); process.exit(1); diff --git a/tests/e2e/tests/basic/assets.ts b/tests/e2e/tests/basic/assets.ts index 4b5a9a07a9d7..41d36a5463d0 100644 --- a/tests/e2e/tests/basic/assets.ts +++ b/tests/e2e/tests/basic/assets.ts @@ -131,7 +131,6 @@ export default function () { 'src/app/app.component.ts': ` import { Component } from '@angular/core'; import { Http, Response } from '@angular/http'; - import 'rxjs/add/operator/map'; @Component({ selector: 'app-root', diff --git a/tests/e2e_runner.ts b/tests/e2e_runner.ts index 13778f821447..dd460884f468 100644 --- a/tests/e2e_runner.ts +++ b/tests/e2e_runner.ts @@ -14,8 +14,7 @@ import * as path from 'path'; import {setGlobalVariable} from './e2e/utils/env'; // RxJS -import 'rxjs/add/operator/filter'; -import 'rxjs/add/observable/empty'; +import {filter} from 'rxjs/operators'; Error.stackTraceLimit = Infinity; @@ -73,7 +72,7 @@ process.exitCode = 255; 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) => { let color: (s: string) => string = white; let output = process.stdout; diff --git a/tools/publish/src/main.ts b/tools/publish/src/main.ts index dbd87581cf6c..571f9ee8a394 100644 --- a/tools/publish/src/main.ts +++ b/tools/publish/src/main.ts @@ -5,7 +5,7 @@ import chalk from 'chalk'; import * as minimist from 'minimist'; -import 'rxjs/add/operator/filter'; +import {filter} from 'rxjs/operators'; const { bold, red, yellow, white } = chalk; @@ -17,7 +17,7 @@ const argv = minimist(process.argv.slice(2), { const rootLogger = new IndentLogger('cling'); rootLogger - .filter((entry: LogEntry) => (entry.level != 'debug' || argv['verbose'])) + .pipe(filter((entry: LogEntry) => (entry.level != 'debug' || argv['verbose']))) .subscribe((entry: LogEntry) => { let color: (s: string) => string = white; let output = process.stdout; @@ -32,7 +32,7 @@ rootLogger }); rootLogger - .filter((entry: LogEntry) => entry.level == 'fatal') + .pipe(filter((entry: LogEntry) => entry.level == 'fatal')) .subscribe(() => { process.stderr.write('A fatal error happened. See details above.'); process.exit(100);