Skip to content

Commit bc73c6c

Browse files
committed
Merge branch 'master' into error-handling-flag
2 parents 37ab7fe + 469afe8 commit bc73c6c

File tree

890 files changed

+2873
-1882
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

890 files changed

+2873
-1882
lines changed

.gitignore

+2
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,12 @@ typings/
1212

1313
# Generated
1414
dist/
15+
dist-compat/
1516
tmp/
1617
coverage/
1718
img/
1819
spec-js/
20+
spec-build/
1921
.nyc_output/
2022
.out/
2123

.make-compat-package.js

+53
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
"use strict";
2+
3+
let pkg = require('./compat/package.json');
4+
let fs = require('fs-extra');
5+
let mkdirp = require('mkdirp');
6+
let path = require('path');
7+
let klawSync = require('klaw-sync');
8+
let licenseTool = require('./tools/add-license-to-file');
9+
let addLicenseToFile = licenseTool.addLicenseToFile;
10+
let addLicenseTextToFile = licenseTool.addLicenseTextToFile;
11+
12+
const ROOT = 'dist-compat/';
13+
const CJS_ROOT = ROOT + 'cjs/compat/';
14+
const ESM5_ROOT = ROOT + 'esm5/compat/';
15+
const ESM2015_ROOT = ROOT + 'esm2015/compat/';
16+
const TYPE_ROOT = ROOT + 'typings/compat/';
17+
const PKG_ROOT = ROOT + 'package/';
18+
const CJS_PKG = PKG_ROOT + '';
19+
const ESM5_PKG = PKG_ROOT + '_esm5/';
20+
const ESM2015_PKG = PKG_ROOT + '_esm2015/';
21+
const UMD_PKG = PKG_ROOT + 'bundles/';
22+
const TYPE_PKG = PKG_ROOT;
23+
24+
// License info for minified files
25+
let licenseUrl = 'https://github.com/ReactiveX/RxJS/blob/master/LICENSE.txt';
26+
let license = 'Apache License 2.0 ' + licenseUrl;
27+
28+
// Recreate the distribution folder
29+
fs.removeSync(PKG_ROOT);
30+
mkdirp.sync(PKG_ROOT);
31+
32+
// Copy over the sources
33+
fs.copySync(TYPE_ROOT, TYPE_PKG);
34+
copySources(CJS_ROOT, CJS_PKG);
35+
copySources(ESM5_ROOT, ESM5_PKG, true);
36+
copySources(ESM2015_ROOT, ESM2015_PKG, true);
37+
38+
fs.copySync('compat/package.json', PKG_ROOT + '/package.json');
39+
40+
function copySources(rootDir, packageDir, ignoreMissing) {
41+
// If we are ignoring missing directories, early return when source doesn't exist
42+
if (!fs.existsSync(rootDir)) {
43+
if (ignoreMissing) {
44+
return;
45+
} else {
46+
throw "Source root dir does not exist!";
47+
}
48+
}
49+
// Copy over the CommonJS files
50+
fs.copySync(rootDir, packageDir);
51+
fs.copySync('./LICENSE.txt', packageDir + 'LICENSE.txt');
52+
fs.copySync('./compat/README.md', packageDir + 'README.md');
53+
}

.make-packages.js

+9-6
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ const CJS_ROOT = ROOT + 'cjs/';
2222
const ESM5_ROOT = ROOT + 'esm5/';
2323
const ESM2015_ROOT = ROOT + 'esm2015/';
2424
const UMD_ROOT = ROOT + 'global/';
25+
const LEGACY_REEXPORT_ROOT = ROOT + "legacy-reexport/"
2526
const TYPE_ROOT = ROOT + 'typings/';
2627
const PKG_ROOT = ROOT + 'package/';
2728
const CJS_PKG = PKG_ROOT + '';
@@ -52,14 +53,14 @@ let rootPackageJson = Object.assign({}, pkg, {
5253
// functionality requires that the most broad mapping (rxjs/operators) be at
5354
// the end of the alias mapping object. Created Webpack issue:
5455
// https://github.com/webpack/webpack/issues/5870
55-
const fileNames = klawSync(CJS_ROOT, {
56+
const fileNames = klawSync(LEGACY_REEXPORT_ROOT, {
5657
nodir: true,
5758
filter: function(item) {
5859
return item.path.endsWith('.js');
5960
}
6061
})
6162
.map(item => item.path)
62-
.map(path => path.slice((`${__dirname}/${CJS_ROOT}`).length))
63+
.map(path => path.slice((`${__dirname}/${LEGACY_REEXPORT_ROOT}`).length))
6364
.sort().reverse();
6465

6566
// Execute build optimizer transforms on ESM5 files
@@ -96,19 +97,21 @@ mkdirp.sync(PKG_ROOT);
9697
copySources('src/', PKG_ROOT + 'src/');
9798
copySources(CJS_ROOT, CJS_PKG);
9899
fs.copySync(TYPE_ROOT, TYPE_PKG);
100+
fs.copySync(LEGACY_REEXPORT_ROOT, CJS_PKG, {overwrite: false, errorOnExist: true});
99101

100102
copySources(ESM5_ROOT, ESM5_PKG, true);
101103
copySources(ESM2015_ROOT, ESM2015_PKG, true);
102104

103105
// Copy over tsconfig.json for bazel build support
104-
fs.copySync('./tsconfig.json', PKG_ROOT + 'src/tsconfig.json');
106+
fs.copySync('./tsconfig.base.json', PKG_ROOT + 'src/tsconfig.json');
105107

106-
fs.writeJsonSync(PKG_ROOT + 'package.json', rootPackageJson);
108+
fs.writeJsonSync(PKG_ROOT + 'package.json', rootPackageJson, {spaces: 2});
107109
fs.copySync('src/operators/package.json', PKG_ROOT + '/operators/package.json');
108110
fs.copySync('src/ajax/package.json', PKG_ROOT + '/ajax/package.json');
109111
fs.copySync('src/websocket/package.json', PKG_ROOT + '/websocket/package.json');
110112
fs.copySync('src/testing/package.json', PKG_ROOT + '/testing/package.json');
111113

114+
112115
if (fs.existsSync(UMD_ROOT)) {
113116
fs.copySync(UMD_ROOT, UMD_PKG);
114117
// Add licenses to tops of bundles
@@ -146,7 +149,7 @@ function copySources(rootDir, packageDir, ignoreMissing) {
146149
function createImportTargets(importTargets, targetName, targetDirectory) {
147150
const importMap = {};
148151
for (const x in importTargets) {
149-
importMap['rxjs/' + x] = 'rxjs/' + targetName + importTargets[x];
152+
importMap['rxjs/' + x] = ('rxjs-compat/' + targetName + importTargets[x]).replace(/\.js$/, '');
150153
}
151154

152155
const outputData =
@@ -157,7 +160,7 @@ var path = require('path');
157160
var dir = path.resolve(__dirname);
158161
159162
module.exports = function() {
160-
return ${JSON.stringify(importMap, null, 4).replace(/(: )"rxjs\/_esm(5|2015)\/(.+")(,?)/g, "$1path.join(dir, \"$3)$4")};
163+
return ${JSON.stringify(importMap, null, 4)};
161164
}
162165
`
163166

compat/AsyncSubject.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {AsyncSubject} from 'rxjs';

compat/BehaviorSubject.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {BehaviorSubject} from 'rxjs';

compat/InnerSubscriber.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {InnerSubscriber} from 'rxjs/internal-compatibility';

compat/Notification.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {Notification} from 'rxjs';

compat/Observable.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {Observable, Subscribable, SubscribableOrPromise, ObservableInput} from 'rxjs';

compat/Observer.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {Observer, NextObserver, ErrorObserver, CompletionObserver, PartialObserver} from 'rxjs';

compat/Operator.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {Operator} from 'rxjs';

compat/OuterSubscriber.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {OuterSubscriber} from 'rxjs/internal-compatibility';

compat/README.md

+15
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
# RxJS Compatibility Package
2+
3+
This package is required to get backwards compatibility with RxJS pervious to version 6. It contains the imports to add operators to `Observable.prototype` and creation methods to `Observable`. This is what allows, for instance, dot-chaining:
4+
5+
```
6+
Observable.interval(1)
7+
.map(i => i * i)
8+
```
9+
10+
vs
11+
12+
```
13+
Observable.interval(1)
14+
.pipe(map(i => i * i))
15+
```

compat/ReplaySubject.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {ReplaySubject} from 'rxjs';

compat/Rx.ts

+219
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,219 @@
1+
/* tslint:disable:no-unused-variable */
2+
// Subject imported before Observable to bypass circular dependency issue since
3+
// Subject extends Observable and Observable references Subject in it's
4+
// definition
5+
export {Observable, Subject} from 'rxjs';
6+
export {AnonymousSubject} from 'rxjs/internal-compatibility';
7+
/* tslint:enable:no-unused-variable */
8+
9+
export { config } from 'rxjs/internal-compatibility';
10+
11+
// statics
12+
/* tslint:disable:no-use-before-declare */
13+
import './add/observable/bindCallback';
14+
import './add/observable/bindNodeCallback';
15+
import './add/observable/combineLatest';
16+
import './add/observable/concat';
17+
import './add/observable/defer';
18+
import './add/observable/empty';
19+
import './add/observable/forkJoin';
20+
import './add/observable/from';
21+
import './add/observable/fromEvent';
22+
import './add/observable/fromEventPattern';
23+
import './add/observable/fromPromise';
24+
import './add/observable/generate';
25+
import './add/observable/if';
26+
import './add/observable/interval';
27+
import './add/observable/merge';
28+
import './add/observable/race';
29+
import './add/observable/never';
30+
import './add/observable/of';
31+
import './add/observable/onErrorResumeNext';
32+
import './add/observable/pairs';
33+
import './add/observable/range';
34+
import './add/observable/using';
35+
import './add/observable/throw';
36+
import './add/observable/timer';
37+
import './add/observable/zip';
38+
39+
//dom
40+
import './add/observable/dom/ajax';
41+
import './add/observable/dom/webSocket';
42+
43+
//internal/operators
44+
import './add/operator/buffer';
45+
import './add/operator/bufferCount';
46+
import './add/operator/bufferTime';
47+
import './add/operator/bufferToggle';
48+
import './add/operator/bufferWhen';
49+
import './add/operator/catch';
50+
import './add/operator/combineAll';
51+
import './add/operator/combineLatest';
52+
import './add/operator/concat';
53+
import './add/operator/concatAll';
54+
import './add/operator/concatMap';
55+
import './add/operator/concatMapTo';
56+
import './add/operator/count';
57+
import './add/operator/dematerialize';
58+
import './add/operator/debounce';
59+
import './add/operator/debounceTime';
60+
import './add/operator/defaultIfEmpty';
61+
import './add/operator/delay';
62+
import './add/operator/delayWhen';
63+
import './add/operator/distinct';
64+
import './add/operator/distinctUntilChanged';
65+
import './add/operator/distinctUntilKeyChanged';
66+
import './add/operator/do';
67+
import './add/operator/exhaust';
68+
import './add/operator/exhaustMap';
69+
import './add/operator/expand';
70+
import './add/operator/elementAt';
71+
import './add/operator/filter';
72+
import './add/operator/finally';
73+
import './add/operator/find';
74+
import './add/operator/findIndex';
75+
import './add/operator/first';
76+
import './add/operator/groupBy';
77+
import './add/operator/ignoreElements';
78+
import './add/operator/isEmpty';
79+
import './add/operator/audit';
80+
import './add/operator/auditTime';
81+
import './add/operator/last';
82+
import './add/operator/let';
83+
import './add/operator/every';
84+
import './add/operator/map';
85+
import './add/operator/mapTo';
86+
import './add/operator/materialize';
87+
import './add/operator/max';
88+
import './add/operator/merge';
89+
import './add/operator/mergeAll';
90+
import './add/operator/mergeMap';
91+
import './add/operator/mergeMapTo';
92+
import './add/operator/mergeScan';
93+
import './add/operator/min';
94+
import './add/operator/multicast';
95+
import './add/operator/observeOn';
96+
import './add/operator/onErrorResumeNext';
97+
import './add/operator/pairwise';
98+
import './add/operator/partition';
99+
import './add/operator/pluck';
100+
import './add/operator/publish';
101+
import './add/operator/publishBehavior';
102+
import './add/operator/publishReplay';
103+
import './add/operator/publishLast';
104+
import './add/operator/race';
105+
import './add/operator/reduce';
106+
import './add/operator/repeat';
107+
import './add/operator/repeatWhen';
108+
import './add/operator/retry';
109+
import './add/operator/retryWhen';
110+
import './add/operator/sample';
111+
import './add/operator/sampleTime';
112+
import './add/operator/scan';
113+
import './add/operator/sequenceEqual';
114+
import './add/operator/share';
115+
import './add/operator/shareReplay';
116+
import './add/operator/single';
117+
import './add/operator/skip';
118+
import './add/operator/skipLast';
119+
import './add/operator/skipUntil';
120+
import './add/operator/skipWhile';
121+
import './add/operator/startWith';
122+
import './add/operator/subscribeOn';
123+
import './add/operator/switch';
124+
import './add/operator/switchMap';
125+
import './add/operator/switchMapTo';
126+
import './add/operator/take';
127+
import './add/operator/takeLast';
128+
import './add/operator/takeUntil';
129+
import './add/operator/takeWhile';
130+
import './add/operator/throttle';
131+
import './add/operator/throttleTime';
132+
import './add/operator/timeInterval';
133+
import './add/operator/timeout';
134+
import './add/operator/timeoutWith';
135+
import './add/operator/timestamp';
136+
import './add/operator/toArray';
137+
import './add/operator/toPromise';
138+
import './add/operator/window';
139+
import './add/operator/windowCount';
140+
import './add/operator/windowTime';
141+
import './add/operator/windowToggle';
142+
import './add/operator/windowWhen';
143+
import './add/operator/withLatestFrom';
144+
import './add/operator/zip';
145+
import './add/operator/zipAll';
146+
147+
/* tslint:disable:no-unused-variable */
148+
export {
149+
Observer,
150+
Subscription,
151+
ReplaySubject,
152+
BehaviorSubject,
153+
Notification,
154+
EmptyError,
155+
ArgumentOutOfRangeError,
156+
ObjectUnsubscribedError,
157+
UnsubscriptionError,
158+
pipe
159+
} from 'rxjs';
160+
161+
export {TestScheduler} from 'rxjs/testing';
162+
163+
export { Operator, Subscriber, AsyncSubject, ConnectableObservable, TimeoutError, VirtualTimeScheduler } from 'rxjs';
164+
export { AjaxRequest, AjaxResponse, AjaxError, AjaxTimeoutError } from 'rxjs/ajax';
165+
166+
import { asapScheduler, asyncScheduler, queueScheduler, animationFrameScheduler, SchedulerLike } from 'rxjs';
167+
168+
import { iterator, observable, rxSubscriber } from 'rxjs/internal-compatibility';
169+
export { TimeInterval, Timestamp } from 'rxjs/internal-compatibility';
170+
171+
import * as _operators from 'rxjs/operators';
172+
173+
export const operators = _operators;
174+
175+
/* tslint:enable:no-unused-variable */
176+
177+
/**
178+
* @typedef {Object} Rx.Scheduler
179+
* @property {Scheduler} queue Schedules on a queue in the current event frame
180+
* (trampoline scheduler). Use this for iteration operations.
181+
* @property {Scheduler} asap Schedules on the micro task queue, which uses the
182+
* fastest transport mechanism available, either Node.js' `process.nextTick()`
183+
* or Web Worker MessageChannel or setTimeout or others. Use this for
184+
* asynchronous conversions.
185+
* @property {Scheduler} async Schedules work with `setInterval`. Use this for
186+
* time-based operations.
187+
* @property {Scheduler} animationFrame Schedules work with `requestAnimationFrame`.
188+
* Use this for synchronizing with the platform's painting
189+
*/
190+
let Scheduler = {
191+
asap: asapScheduler as SchedulerLike,
192+
queue: queueScheduler as SchedulerLike,
193+
animationFrame: animationFrameScheduler as SchedulerLike,
194+
async: asyncScheduler as SchedulerLike
195+
};
196+
197+
/**
198+
* @typedef {Object} Rx.Symbol
199+
* @property {Symbol|string} rxSubscriber A symbol to use as a property name to
200+
* retrieve an "Rx safe" Observer from an object. "Rx safety" can be defined as
201+
* an object that has all of the traits of an Rx Subscriber, including the
202+
* ability to add and remove subscriptions to the subscription chain and
203+
* guarantees involving event triggering (can't "next" after unsubscription,
204+
* etc).
205+
* @property {Symbol|string} observable A symbol to use as a property name to
206+
* retrieve an Observable as defined by the [ECMAScript "Observable" spec](https://github.com/zenparsing/es-observable).
207+
* @property {Symbol|string} iterator The ES6 symbol to use as a property name
208+
* to retrieve an iterator from an object.
209+
*/
210+
let Symbol = {
211+
rxSubscriber,
212+
observable,
213+
iterator
214+
};
215+
216+
export {
217+
Scheduler,
218+
Symbol
219+
};

compat/Scheduler.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {Scheduler} from 'rxjs/internal-compatibility';

compat/Subject.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {Subject} from 'rxjs';

compat/SubjectSubscription.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {SubjectSubscription} from 'rxjs/internal-compatibility';

compat/Subscriber.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {Subscriber} from 'rxjs/internal-compatibility';

compat/Subscription.ts

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export {Subscription, Unsubscribable as AnonymousSubscription, SubscriptionLike as ISubscription} from 'rxjs';

0 commit comments

Comments
 (0)