Skip to content

Commit 16bf335

Browse files
vsavkinjeffbcross
authored andcommitted
refactor(async): replace RxJS with RxNext
Closes angular#3110 Closes angular#4201
1 parent 7b3161a commit 16bf335

File tree

25 files changed

+62
-97
lines changed

25 files changed

+62
-97
lines changed

docs/typescript-definition-package/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ module.exports = new Package('angular-v2-docs', [jsdocPackage, nunjucksPackage,
5050
createTypeDefinitionFile.typeDefinitions = [
5151
{
5252
id: 'angular2/angular2',
53-
references: ['../es6-promise/es6-promise.d.ts', '../rx/rx.d.ts'],
53+
references: ['../es6-promise/es6-promise.d.ts'],
5454
modules: {
5555
'angular2/angular2': {namespace: 'ng', id: 'angular2/angular2'},
5656
'angular2/web_worker/worker': {namespace: 'ngWorker', id: 'angular2/web_worker/worker'},

docs/typescript-package/processors/readTypeScriptModules.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -359,8 +359,8 @@ module.exports = function readTypeScriptModules(tsParser, modules, getFileInfo,
359359
function getType(sourceFile, type) {
360360
var text = getText(sourceFile, type);
361361
while (text.indexOf(".") >= 0) {
362-
// Keep namespaced symbols in Rx
363-
if (text.match(/^\s*Rx\./)) break;
362+
// Keep namespaced symbols in RxNext
363+
if (text.match(/^\s*RxNext\./)) break;
364364
// handle the case List<thing.stuff> -> List<stuff>
365365
text = text.replace(/([^.<]*)\.([^>]*)/, "$2");
366366
}

gulpfile.js

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,11 +1017,13 @@ gulp.task('!build.js.cjs', function() {
10171017

10181018

10191019
var bundleConfig = {
1020-
paths: {"*": "dist/js/prod/es5/*.js", "rx": "node_modules/rx/dist/rx.js"},
1020+
paths: {
1021+
"*": "dist/js/prod/es5/*.js"
1022+
},
10211023
meta: {
1022-
'angular2/src/router/route_definition': {format: 'cjs'},
1023-
// auto-detection fails to detect properly here - https://github.com/systemjs/builder/issues/123
1024-
'rx': {format: 'cjs'}
1024+
'angular2/src/router/route_definition': {
1025+
format: 'cjs'
1026+
}
10251027
}
10261028
};
10271029

@@ -1072,7 +1074,10 @@ gulp.task('!bundle.js.min', ['build.js.prod'], function() {
10721074
// development build
10731075
gulp.task('!bundle.js.dev', ['build.js.dev'], function() {
10741076
var devBundleConfig = merge(true, bundleConfig);
1075-
devBundleConfig.paths = merge(true, devBundleConfig.paths, {"*": "dist/js/dev/es5/*.js"});
1077+
devBundleConfig.paths =
1078+
merge(true, devBundleConfig.paths, {
1079+
"*": "dist/js/dev/es5/*.js"
1080+
});
10761081
return bundler.bundle(
10771082
devBundleConfig,
10781083
'angular2/angular2',
@@ -1150,7 +1155,7 @@ gulp.task('!bundle.js.prod.deps', ['!bundle.js.prod'], function() {
11501155
'angular2.js'
11511156
),
11521157
bundler.modify(
1153-
['node_modules/reflect-metadata/Reflect.js', 'node_modules/rx/dist/rx.lite.js', 'dist/build/http.js'],
1158+
['node_modules/reflect-metadata/Reflect.js', 'dist/build/http.js'],
11541159
'http.js'
11551160
)).pipe(gulp.dest('dist/js/bundle'));
11561161
});
@@ -1162,7 +1167,7 @@ gulp.task('!bundle.js.min.deps', ['!bundle.js.min'], function() {
11621167
'angular2.min.js'
11631168
),
11641169
bundler.modify(
1165-
['node_modules/reflect-metadata/Reflect.js', 'node_modules/rx/dist/rx.lite.js','dist/build/http.min.js'],
1170+
['node_modules/reflect-metadata/Reflect.js', 'dist/build/http.min.js'],
11661171
'http.min.js'
11671172
))
11681173
.pipe(uglify())
@@ -1179,9 +1184,9 @@ var JS_DEV_DEPS = [
11791184

11801185
// Splice in RX license if rx is in the bundle.
11811186
function insertRXLicense(source) {
1182-
var n = source.indexOf('System.register("rx"');
1187+
var n = source.indexOf('System.register("@reactivex/rxjs/dist/cjs/Subject"');
11831188
if (n >= 0) {
1184-
var rxLicense = licenseWrap('node_modules/rx/license.txt');
1189+
var rxLicense = licenseWrap('node_modules/@reactivex/rxjs/LICENSE.txt');
11851190
return source.slice(0, n) + rxLicense + source.slice(n);
11861191
} else {
11871192
return source;

karma-js.conf.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ module.exports = function(config) {
2121
// Including systemjs because it defines `__eval`, which produces correct stack traces.
2222
'modules/angular2/src/test_lib/shims_for_IE.js',
2323
'node_modules/systemjs/dist/system.src.js',
24-
{pattern: 'node_modules/rx/dist/rx.js', included: false, watched: false, served: true},
24+
{pattern: 'node_modules/@reactivex/rxjs/dist/cjs/**', included: false, watched: false, served: true},
2525
'node_modules/reflect-metadata/Reflect.js',
2626
'tools/build/file2modulename.js',
2727
'test-main.js',

modules/angular2/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"dependencies": {
1111
"traceur": "<%= packageJson.dependencies.traceur %>",
1212
"reflect-metadata": "<%= packageJson.dependencies['reflect-metadata'] %>",
13-
"rx": "<%= packageJson.dependencies['rx'] %>",
13+
"@reactivex/rxjs": "<%= packageJson.dependencies['@reactivex/rxjs'] %>",
1414
"zone.js": "<%= packageJson.dependencies['zone.js'] %>"
1515
},
1616
"devDependencies": <%= JSON.stringify(packageJson.defaultDevDependencies) %>,

modules/angular2/src/core/facade/async.ts

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
///<reference path="../../../typings/tsd.d.ts" />
22
import {global, isPresent} from 'angular2/src/core/facade/lang';
3-
import * as Rx from 'rx';
3+
// TODO(jeffbcross): use ES6 import once typings are available
4+
var Subject = require('@reactivex/rxjs/dist/cjs/Subject');
45

56
export {Promise};
67

@@ -75,7 +76,7 @@ export class ObservableWrapper {
7576

7677
static isObservable(obs: any): boolean { return obs instanceof Observable; }
7778

78-
static dispose(subscription: any) { subscription.dispose(); }
79+
static dispose(subscription: any) { subscription.unsubscribe(); }
7980

8081
static callNext(emitter: EventEmitter, value: any) { emitter.next(value); }
8182

@@ -128,30 +129,19 @@ export class Observable {
128129
* Once a reference implementation of the spec is available, switch to it.
129130
*/
130131
export class EventEmitter extends Observable {
131-
_subject: Rx.Subject<any> = new Rx.Subject<any>();
132-
_immediateScheduler = (<any>Rx.Scheduler).immediate;
133-
134-
observer(generator: any): Rx.IDisposable {
135-
return this._subject.observeOn(this._immediateScheduler)
136-
.subscribe((value) => { setTimeout(() => generator.next(value)); },
137-
(error) => generator.throw ? generator.throw(error) : null,
138-
() => generator.return ? generator.return () : null);
132+
_subject = new Subject();
133+
134+
observer(generator: any): any {
135+
return this._subject.subscribe((value) => { setTimeout(() => generator.next(value)); },
136+
(error) => generator.throw ? generator.throw(error) : null,
137+
() => generator.return ? generator.return () : null);
139138
}
140139

141-
toRx(): Rx.Observable<any> { return this._subject; }
140+
toRx(): any { return this; }
142141

143-
/**
144-
* Emits a `value`.
145-
*/
146-
next(value: any) { this._subject.onNext(value); }
142+
next(value: any) { this._subject.next(value); }
147143

148-
/**
149-
* Emits an `error`.
150-
*/
151-
throw(error: any) { this._subject.onError(error); }
144+
throw(error: any) { this._subject.error(error); }
152145

153-
/**
154-
* Closes the stream.
155-
*/
156-
return (value?: any) { this._subject.onCompleted(); }
146+
return (value?: any) { this._subject.complete(); }
157147
}

modules/angular2/src/http/interfaces.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
/// <reference path="../../typings/rx/rx.d.ts" />
2-
31
import {
42
ReadyStates,
53
RequestModesOpts,

modules/angular2/src/http/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
"repository": <%= JSON.stringify(packageJson.repository) %>,
1010
"dependencies": {
1111
"angular2": "<%= packageJson.version %>",
12-
"rx": "<%= packageJson.dependencies['rx'] %>",
12+
"@reactivex/rxjs": "<%= packageJson.dependencies['@reactivex/rxjs'] %>",
1313
"reflect-metadata": "<%= packageJson.dependencies['reflect-metadata'] %>",
1414
"traceur": "<%= packageJson.dependencies['traceur'] %>"
1515
},
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import {EventEmitter} from 'angular2/src/core/facade/async';
2-
import * as Rx from 'rx';
32
import {ListWrapper} from 'angular2/src/core/facade/collection';
43

54
export class MockEventEmitter extends EventEmitter {
65
private _nextFns: Function[] = [];
76

87
constructor() { super(); }
98

10-
observer(generator: any): Rx.IDisposable {
9+
observer(generator: any): any {
1110
this._nextFns.push(generator.next);
1211
return new MockDisposable();
1312
}
@@ -17,6 +16,7 @@ export class MockEventEmitter extends EventEmitter {
1716
}
1817
}
1918

20-
class MockDisposable implements Rx.IDisposable {
21-
dispose(): void {}
19+
class MockDisposable {
20+
isUnsubscribed: boolean = false;
21+
unsubscribe(): void {}
2222
}

modules/angular2/tsd.json

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,14 +17,6 @@
1717
"node/node.d.ts": {
1818
"commit": "51738fdf1643d269067861b405e87503b7479236"
1919
},
20-
"rx/rx.d.ts": {
21-
"commit": "3882d337bb0808cde9fe4c08012508a48c135482"
22-
},
23-
24-
"rx/rx-lite.d.ts": {
25-
"commit": "3882d337bb0808cde9fe4c08012508a48c135482"
26-
},
27-
2820

2921
"selenium-webdriver/selenium-webdriver.d.ts": {
3022
"commit": "be0b6b394f77a59e192ad7cfec18078706e44db5"

modules/angular2_material/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
"dependencies": {
1111
"angular2": "<%= packageJson.version %>",
1212
"traceur": "<%= packageJson.dependencies.traceur %>",
13-
"rx": "<%= packageJson.dependencies['rx'] %>",
13+
"@reactivex/rxjs": "<%= packageJson.dependencies['@reactivex/rxjs'] %>",
1414
"zone.js": "<%= packageJson.dependencies['zone.js'] %>"
1515
},
1616
"devDependencies": <%= JSON.stringify(packageJson.defaultDevDependencies) %>

modules/examples/src/http/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
/// <reference path="../../../angular2/typings/rx/rx.d.ts" />
2-
31
import {bootstrap} from 'angular2/bootstrap';
42
import {HTTP_BINDINGS} from 'angular2/http';
53
import {HttpCmp} from './http_comp';

modules/examples/src/jsonp/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
/// <reference path="../../../angular2/typings/rx/rx.d.ts" />
2-
31
import {bootstrap} from 'angular2/bootstrap';
42
import {JSONP_BINDINGS} from 'angular2/http';
53
import {JsonpCmp} from './jsonp_comp';

modules/examples/src/web_workers/images/loader.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,7 @@ importScripts("b64.js");
44

55
System.config({
66
baseURL: '/',
7-
defaultJSExtensions: true,
8-
paths: {
9-
'rx': 'examples/src/web_workers/images/rx.js'
10-
}
7+
defaultJSExtensions: true
118
});
129

1310
System.import("examples/src/web_workers/images/background_index")

modules/examples/src/web_workers/kitchen_sink/loader.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@ $SCRIPTS$
22

33
System.config({
44
baseURL: '/',
5-
defaultJSExtensions: true,
6-
paths: {
7-
'rx': 'examples/src/web_workers/kitchen_sink/rx.js'
8-
}
5+
defaultJSExtensions: true
96
});
107

118
System.import("examples/src/web_workers/kitchen_sink/background_index")

modules/examples/src/web_workers/message_broker/loader.js

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
$SCRIPTS$
22

3-
System.config({
4-
baseURL: '/',
5-
defaultJSExtensions: true,
6-
paths: {'rx': 'examples/src/web_workers/message_broker/rx.js'}
7-
});
3+
System.config({
4+
baseURL: '/',
5+
defaultJSExtensions: true
6+
});
87

98
System.import("examples/src/web_workers/message_broker/background_index")
109
.then(

modules/examples/src/web_workers/todo/loader.js

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,7 @@ $SCRIPTS$
22

33
System.config({
44
baseURL: '/',
5-
defaultJSExtensions: true,
6-
paths: {
7-
'rx': 'examples/src/web_workers/todo/rx.js'
8-
}
5+
defaultJSExtensions: true
96
});
107

118
System.import("examples/src/web_workers/todo/background_index")

npm-shrinkwrap.clean.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
{
22
"dependencies": {
3+
"@reactivex/rxjs": {
4+
"version": "0.0.0-prealpha.3"
5+
},
36
"angular": {
47
"version": "1.3.5"
58
},

npm-shrinkwrap.json

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@
2828
"test": "gulp test.all.js && gulp test.all.dart"
2929
},
3030
"dependencies": {
31+
"@reactivex/rxjs": "0.0.0-prealpha.3",
3132
"reflect-metadata": "0.1.1",
32-
"rx": "2.5.1",
3333
"zone.js": "0.5.4"
3434
},
3535
"devDependencies": {

test-main.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ System.config({
1515
'angular2/*': 'dist/js/dev/es5/angular2/*.js',
1616
'angular2_material/*': 'dist/js/dev/es5/angular2_material/*.js',
1717
'rtts_assert/*': 'dist/js/dev/es5/rtts_assert/*.js',
18-
'rx': 'node_modules/rx/dist/rx.js'
18+
'@reactivex/rxjs/*': 'node_modules/@reactivex/rxjs/*.js'
1919
}
2020
});
2121

tools/broccoli/html-replace/SCRIPTS.html

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,9 @@
55
<script src="Reflect.js" type="text/javascript"></script>
66
<script type="text/javascript">
77
var filename = '@@FILENAME_NO_EXT';
8-
var parent = filename.split('/');
9-
parent = parent.splice(0, parent.length-1).join('/');
108
System.config({
119
baseURL: '/',
12-
defaultJSExtensions: true,
13-
paths: {
14-
'rx': parent + '/rx.js'
15-
}
10+
defaultJSExtensions: true
1611
});
1712
System.import(filename).then(function(m) { m.main(); }, console.error.bind(console));
1813
</script>

tools/broccoli/html-replace/SCRIPTS_benchmarks.html

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,9 @@
66
<script src="Reflect.js" type="text/javascript"></script>
77
<script type="text/javascript">
88
var filename = '@@FILENAME_NO_EXT';
9-
var parent = filename.split('/');
10-
parent = parent.splice(0, parent.length-1).join('/');
119
System.config({
1210
baseURL: '/',
13-
defaultJSExtensions: true,
14-
paths: {
15-
'rx': parent + '/rx.js'
16-
}
11+
defaultJSExtensions: true
1712
});
1813
System.import(filename).then(function(m) { m.main(); }, console.error.bind(console));
1914
</script>

tools/broccoli/html-replace/SCRIPTS_benchmarks_external.html

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,9 @@
77
<script src="Reflect.js" type="text/javascript"></script>
88
<script type="text/javascript">
99
var filename = '@@FILENAME_NO_EXT';
10-
var parent = filename.split('/');
11-
parent = parent.splice(0, parent.length-1).join('/');
1210
System.config({
1311
baseURL: '/',
14-
defaultJSExtensions: true,
15-
paths: {
16-
'rx': parent + '/rx.js'
17-
}
12+
defaultJSExtensions: true
1813
});
1914
System.import(filename).then(function(m) { m.main(); }, console.error.bind(console));
2015
</script>

tools/broccoli/trees/browser_tree.ts

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,8 @@ module.exports = function makeBrowserTree(options, destinationPath) {
8484
destDir: '/'
8585
});
8686

87+
var rxJs = new Funnel('node_modules/@reactivex', {include: ['**/**'], destDir: '/@reactivex'});
88+
8789
var es5ModulesTree = new Funnel('modules', {
8890
include: ['**/**'],
8991
exclude: ['**/*.cjs', 'angular1_router/**', 'benchmarks/e2e_test/**'],
@@ -139,7 +141,6 @@ module.exports = function makeBrowserTree(options, destinationPath) {
139141
'node_modules/zone.js/dist/zone-microtask.js',
140142
'node_modules/zone.js/dist/long-stack-trace-zone.js',
141143
'node_modules/systemjs/dist/system.src.js',
142-
'node_modules/rx/dist/rx.js',
143144
'node_modules/base64-js/lib/b64.js',
144145
'node_modules/reflect-metadata/Reflect.js',
145146
'node_modules/es6-shim/es6-shim.js'
@@ -208,8 +209,8 @@ module.exports = function makeBrowserTree(options, destinationPath) {
208209

209210
htmlTree = mergeTrees([htmlTree, scripts, polymer, react]);
210211

211-
es5Tree = mergeTrees([es5Tree, htmlTree, assetsTree]);
212-
es6Tree = mergeTrees([es6Tree, htmlTree, assetsTree]);
212+
es5Tree = mergeTrees([es5Tree, htmlTree, assetsTree, rxJs]);
213+
es6Tree = mergeTrees([es6Tree, htmlTree, assetsTree, rxJs]);
213214

214215
var mergedTree = mergeTrees([stew.mv(es6Tree, '/es6'), stew.mv(es5Tree, '/es5')]);
215216

0 commit comments

Comments
 (0)