Skip to content

Commit

Permalink
refactor(facade): use rxjs package
Browse files Browse the repository at this point in the history
move to new RxJS distribution.

BREAKING CHANGE:

RxJS imports now are via `rxjs` instead of `@reactivex/rxjs`
Individual operators can be imported `import 'rxjs/operators/map'`
  • Loading branch information
robwormald authored and jelbourn committed Dec 3, 2015
1 parent a16ac84 commit 5514dc1
Show file tree
Hide file tree
Showing 16 changed files with 42 additions and 69 deletions.
11 changes: 6 additions & 5 deletions gulpfile.js
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ var BENCHPRESS_BUNDLE_CONFIG = {
packageJson: './dist/js/cjs/benchpress/package.json',
includes: ['angular2'],
excludes: ['reflect-metadata', 'selenium-webdriver', 'zone.js'],
ignore: ['@reactivex/rxjs'],
ignore: [],
dest: CONFIG.dest.benchpress_bundle
};

Expand Down Expand Up @@ -815,8 +815,7 @@ gulp.task('static-checks', ['!build.tools'], function(done) {
// Make sure the two typings tests are isolated, by running this one in a tempdir
var tmpdir = path.join(os.tmpdir(), 'test.typings', new Date().getTime().toString());
gulp.task('!pre.test.typings.layoutNodeModule', ['build.js.cjs'], function() {
return gulp.src(['dist/js/cjs/angular2/**/*', 'node_modules/@reactivex/rxjs/dist/cjs/**'],
{base: 'dist/js/cjs'})
return gulp.src(['dist/js/cjs/angular2/**/*', 'node_modules/rxjs/**'], {base: 'dist/js/cjs'})
.pipe(gulp.dest(path.join(tmpdir, 'node_modules')));
});
gulp.task('!pre.test.typings.copyTypingsSpec', function() {
Expand Down Expand Up @@ -1152,9 +1151,11 @@ var JS_DEV_DEPS = [

// Splice in RX license if rx is in the bundle.
function insertRXLicense(source) {
var n = source.indexOf('System.register("@reactivex/rxjs/dist/cjs/Subject"');
var n = source.indexOf('System.register("rxjs/Subject"');
if (n >= 0) {
var rxLicense = licenseWrap('node_modules/@reactivex/rxjs/LICENSE.txt');
// TODO: point this to Rx once Rx includes license in dist
// https://github.com/angular/angular/issues/5558
var rxLicense = licenseWrap('LICENSE');
return source.slice(0, n) + rxLicense + source.slice(n);
} else {
return source;
Expand Down
2 changes: 1 addition & 1 deletion karma-js.conf.js
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ module.exports = function(config) {
// Including systemjs because it defines `__eval`, which produces correct stack traces.
'modules/angular2/src/testing/shims_for_IE.js',
'node_modules/systemjs/dist/system.src.js',
{pattern: 'node_modules/@reactivex/rxjs/**', included: false, watched: false, served: true},
{pattern: 'node_modules/rxjs/**', included: false, watched: false, served: true},
'node_modules/reflect-metadata/Reflect.js',
'tools/build/file2modulename.js',
'test-main.js',
Expand Down
2 changes: 1 addition & 1 deletion modules/angular2/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"repository": <%= JSON.stringify(packageJson.repository) %>,
"dependencies": {
"reflect-metadata": "<%= packageJson.dependencies['reflect-metadata'] %>",
"@reactivex/rxjs": "<%= packageJson.dependencies['@reactivex/rxjs'] %>",
"rxjs": "<%= packageJson.dependencies['rxjs'] %>",
"zone.js": "<%= packageJson.dependencies['zone.js'] %>"
},
"devDependencies": <%= JSON.stringify(packageJson.defaultDevDependencies) %>
Expand Down
15 changes: 10 additions & 5 deletions modules/angular2/src/facade/async.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,16 @@ import {global, isPresent, noop} from 'angular2/src/facade/lang';
import {PromiseWrapper, Promise, PromiseCompleter} from 'angular2/src/facade/promise';
export {PromiseWrapper, Promise, PromiseCompleter} from 'angular2/src/facade/promise';

import {Subject} from '@reactivex/rxjs/dist/cjs/Subject';
import {Observable as RxObservable} from '@reactivex/rxjs/dist/cjs/Observable';
import {Subscription} from '@reactivex/rxjs/dist/cjs/Subscription';
import {Operator} from '@reactivex/rxjs/dist/cjs/Operator';
export {Subject} from '@reactivex/rxjs/dist/cjs/Subject';
import {Subject} from 'rxjs/Subject';
import {Observable as RxObservable} from 'rxjs/Observable';
import {Subscription} from 'rxjs/Subscription';
import {Operator} from 'rxjs/Operator';

import 'rxjs/observable/fromPromise';
import 'rxjs/operators/toPromise';

This comment has been minimized.

Copy link
@ewnd9

ewnd9 Dec 5, 2015

Hi, I think there is a typo, it should be 'rxjs/operator/toPromise' without s in the end (https://github.com/ReactiveX/RxJS/blob/master/src/operator/toPromise.ts). My project (uses 2.0.0-alpha.48) has successfully built only after I fixed it manually in my node_modules.


export {Subject} from 'rxjs/Subject';



export namespace NodeJS {
Expand Down
3 changes: 2 additions & 1 deletion modules/angular2/src/http/backends/mock_backend.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import {ReadyStates} from '../enums';
import {Connection, ConnectionBackend} from '../interfaces';
import {isPresent} from 'angular2/src/facade/lang';
import {BaseException, WrappedException} from 'angular2/src/facade/exceptions';
import {Subject, ReplaySubject} from '@reactivex/rxjs/dist/cjs/Rx';
import {Subject} from 'rxjs/Subject';
import {ReplaySubject} from 'rxjs/subjects/ReplaySubject';

/**
*
Expand Down
2 changes: 1 addition & 1 deletion modules/angular2/src/http/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"repository": <%= JSON.stringify(packageJson.repository) %>,
"dependencies": {
"angular2": "<%= packageJson.version %>",
"@reactivex/rxjs": "<%= packageJson.dependencies['@reactivex/rxjs'] %>",
"rxjs": "<%= packageJson.dependencies['rxjs'] %>",
"reflect-metadata": "<%= packageJson.dependencies['reflect-metadata'] %>"
},
"devDependencies": <%= JSON.stringify(packageJson.defaultDevDependencies) %>
Expand Down
3 changes: 2 additions & 1 deletion modules/angular2/test/http/http_spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,8 @@ import {
Http,
Jsonp
} from 'angular2/http';
import {Observable, Subject} from '@reactivex/rxjs/dist/cjs/Rx';
import {Observable} from 'rxjs/Observable';
import {Subject} from 'rxjs/Subject';

class SpyObserver extends SpyObject {
onNext: Function;
Expand Down
43 changes: 4 additions & 39 deletions modules/angular2/test/public_api_spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -689,47 +689,12 @@ var NG_ALL = [
'EventEmitter.emit():js',
'Observable:js',
'Observable#create():js',
'Observable.buffer():js',
'Observable.bufferCount():js',
'Observable.bufferTime():js',
'Observable.bufferToggle():js',
'Observable.bufferWhen():js',
'Observable.catch():js',
'Observable.combineAll():js',
'Observable.combineLatest():js',
'Observable.concat():js',
'Observable.concatAll():js',
'Observable.concatMap():js',
'Observable.concatMapTo():js',
'Observable.count():js',
'Observable.debounce():js',
'Observable.debounceTime():js',
'Observable.defaultIfEmpty():js',
'Observable.delay():js',
'Observable.dematerialize():js',
'Observable.distinctUntilChanged():js',
'Observable.do():js',
'Observable.every():js',
'Observable.expand():js',
'Observable.filter():js',
'Observable.finally():js',
'Observable.first():js',
'Observable.flatMap():js',
'Observable.flatMapTo():js',
'Observable.forEach():js',
'Observable.groupBy():js',
'Observable.ignoreElements():js',
'Observable.last():js',
'Observable#fromPromise():js',
'Observable.lift():js',
'Observable.map():js',
'Observable.mapTo():js',
'Observable.materialize():js',
'Observable.merge():js',
'Observable.mergeAll():js',
'Observable.mergeMap():js',
'Observable.mergeMapTo():js',
'Observable.multicast():js',
'Observable.observeOn():js',
'Observable.subscribe():js',
'Observable.take():js',
'Observable.toPromise():js',

'OutputMetadata',
'OutputMetadata.bindingPropertyName',
Expand Down
2 changes: 1 addition & 1 deletion modules/angular2_material/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
"repository": <%= JSON.stringify(packageJson.repository) %>,
"dependencies": {
"angular2": "<%= packageJson.version %>",
"@reactivex/rxjs": "<%= packageJson.dependencies['@reactivex/rxjs'] %>",
"rxjs": "<%= packageJson.dependencies['rxjs'] %>",
"zone.js": "<%= packageJson.dependencies['zone.js'] %>"
},
"devDependencies": <%= JSON.stringify(packageJson.defaultDevDependencies) %>
Expand Down
6 changes: 3 additions & 3 deletions npm-shrinkwrap.clean.json
Original file line number Diff line number Diff line change
@@ -1,8 +1,5 @@
{
"dependencies": {
"@reactivex/rxjs": {
"version": "5.0.0-alpha.10"
},
"angular": {
"version": "1.4.7"
},
Expand Down Expand Up @@ -13184,6 +13181,9 @@
}
}
},
"rxjs": {
"version": "5.0.0-alpha.11"
},
"selenium-webdriver": {
"version": "2.48.2",
"dependencies": {
Expand Down
12 changes: 6 additions & 6 deletions npm-shrinkwrap.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,8 @@
"test": "gulp test.all.js && gulp test.all.dart"
},
"dependencies": {
"@reactivex/rxjs": "5.0.0-alpha.10",
"reflect-metadata": "0.1.2",
"rxjs": "^5.0.0-alpha.11",
"zone.js": "0.5.8"
},
"devDependencies": {
Expand Down
2 changes: 1 addition & 1 deletion test-main.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ System.config({
'benchpress/*': 'dist/js/dev/es5/benchpress/*.js',
'angular2/*': 'dist/js/dev/es5/angular2/*.js',
'angular2_material/*': 'dist/js/dev/es5/angular2_material/*.js',
'@reactivex/rxjs/*': 'node_modules/@reactivex/rxjs/*.js'
'rxjs/*': 'node_modules/rxjs/*.js'
}
});

Expand Down
2 changes: 1 addition & 1 deletion tools/broccoli/broccoli-check-imports.ts
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ class CheckImports implements DiffingBroccoliPlugin {
"angular2/src/core",
"angular2/src/facade",
],
"angular2/src/facade": ["angular2/src/facade", "@reactivex/rxjs"],
"angular2/src/facade": ["angular2/src/facade", "rxjs"],
"angular2/src/common": ["angular2/core", "angular2/src/facade", "angular2/src/common"]
//"angular2/src/render": [
// "angular2/animate",
Expand Down
2 changes: 1 addition & 1 deletion tools/broccoli/broccoli-typescript.ts
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ class CustomLanguageServiceHost implements ts.LanguageServiceHost {
} else if (this.compilerOptions.moduleResolution === ts.ModuleResolutionKind.NodeJs &&
tsFilePath.match(/^node_modules/)) {
absoluteTsFilePath = path.resolve(tsFilePath);
} else if (tsFilePath.match(/^@reactivex/)) {
} else if (tsFilePath.match(/^rxjs/)) {
absoluteTsFilePath = path.resolve('node_modules', tsFilePath);
} else {
absoluteTsFilePath = path.join(this.treeInputPath, tsFilePath);
Expand Down
2 changes: 1 addition & 1 deletion tools/broccoli/trees/browser_tree.ts
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ module.exports = function makeBrowserTree(options, destinationPath) {
// typescript resolves dependencies automatically
if (modules.bundle_deps) {
var nodeModules = new Funnel(
'node_modules', {include: ['@reactivex/**/**', 'parse5/**/**', 'css/**/**'], destDir: '/'});
'node_modules', {include: ['rxjs/**/**', 'parse5/**/**', 'css/**/**'], destDir: '/'});
}

if (generateEs6) {
Expand Down

3 comments on commit 5514dc1

@jesperronn
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I suspect this change has broken alpha.48 after Rxjs removed 5.0.0-alpha.11 and changed paths in 5.0.0-alpha-12. See #5641 for details

@dissplay
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Error cant find module error:
import 'rxjs/operators/toPromise';
on modules/angular2/src/facade/async.ts should be,
import 'rxjs/operator/toPromise';
An extra s there causing the damage.

@jesperronn
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dissplay Thanks for pointing out. I wrote about it in #5641 for details

Please sign in to comment.