diff --git a/.gitignore b/.gitignore
index c615f32539..54a14c1d05 100644
--- a/.gitignore
+++ b/.gitignore
@@ -12,10 +12,12 @@ typings/
# Generated
dist/
+dist-compat/
tmp/
coverage/
img/
spec-js/
+spec-build/
.nyc_output/
.out/
diff --git a/.make-compat-package.js b/.make-compat-package.js
new file mode 100644
index 0000000000..ae7b6e2816
--- /dev/null
+++ b/.make-compat-package.js
@@ -0,0 +1,53 @@
+"use strict";
+
+let pkg = require('./compat/package.json');
+let fs = require('fs-extra');
+let mkdirp = require('mkdirp');
+let path = require('path');
+let klawSync = require('klaw-sync');
+let licenseTool = require('./tools/add-license-to-file');
+let addLicenseToFile = licenseTool.addLicenseToFile;
+let addLicenseTextToFile = licenseTool.addLicenseTextToFile;
+
+const ROOT = 'dist-compat/';
+const CJS_ROOT = ROOT + 'cjs/compat/';
+const ESM5_ROOT = ROOT + 'esm5/compat/';
+const ESM2015_ROOT = ROOT + 'esm2015/compat/';
+const TYPE_ROOT = ROOT + 'typings/compat/';
+const PKG_ROOT = ROOT + 'package/';
+const CJS_PKG = PKG_ROOT + '';
+const ESM5_PKG = PKG_ROOT + '_esm5/';
+const ESM2015_PKG = PKG_ROOT + '_esm2015/';
+const UMD_PKG = PKG_ROOT + 'bundles/';
+const TYPE_PKG = PKG_ROOT;
+
+// License info for minified files
+let licenseUrl = 'https://github.com/ReactiveX/RxJS/blob/master/LICENSE.txt';
+let license = 'Apache License 2.0 ' + licenseUrl;
+
+// Recreate the distribution folder
+fs.removeSync(PKG_ROOT);
+mkdirp.sync(PKG_ROOT);
+
+// Copy over the sources
+fs.copySync(TYPE_ROOT, TYPE_PKG);
+copySources(CJS_ROOT, CJS_PKG);
+copySources(ESM5_ROOT, ESM5_PKG, true);
+copySources(ESM2015_ROOT, ESM2015_PKG, true);
+
+fs.copySync('compat/package.json', PKG_ROOT + '/package.json');
+
+function copySources(rootDir, packageDir, ignoreMissing) {
+ // If we are ignoring missing directories, early return when source doesn't exist
+ if (!fs.existsSync(rootDir)) {
+ if (ignoreMissing) {
+ return;
+ } else {
+ throw "Source root dir does not exist!";
+ }
+ }
+ // Copy over the CommonJS files
+ fs.copySync(rootDir, packageDir);
+ fs.copySync('./LICENSE.txt', packageDir + 'LICENSE.txt');
+ fs.copySync('./compat/README.md', packageDir + 'README.md');
+}
diff --git a/.make-packages.js b/.make-packages.js
index 617fb8a81b..826ab62dc2 100644
--- a/.make-packages.js
+++ b/.make-packages.js
@@ -22,6 +22,7 @@ const CJS_ROOT = ROOT + 'cjs/';
const ESM5_ROOT = ROOT + 'esm5/';
const ESM2015_ROOT = ROOT + 'esm2015/';
const UMD_ROOT = ROOT + 'global/';
+const LEGACY_REEXPORT_ROOT = ROOT + "legacy-reexport/"
const TYPE_ROOT = ROOT + 'typings/';
const PKG_ROOT = ROOT + 'package/';
const CJS_PKG = PKG_ROOT + '';
@@ -52,14 +53,14 @@ let rootPackageJson = Object.assign({}, pkg, {
// functionality requires that the most broad mapping (rxjs/operators) be at
// the end of the alias mapping object. Created Webpack issue:
// https://github.com/webpack/webpack/issues/5870
-const fileNames = klawSync(CJS_ROOT, {
+const fileNames = klawSync(LEGACY_REEXPORT_ROOT, {
nodir: true,
filter: function(item) {
return item.path.endsWith('.js');
}
})
.map(item => item.path)
-.map(path => path.slice((`${__dirname}/${CJS_ROOT}`).length))
+.map(path => path.slice((`${__dirname}/${LEGACY_REEXPORT_ROOT}`).length))
.sort().reverse();
// Execute build optimizer transforms on ESM5 files
@@ -96,19 +97,21 @@ mkdirp.sync(PKG_ROOT);
copySources('src/', PKG_ROOT + 'src/');
copySources(CJS_ROOT, CJS_PKG);
fs.copySync(TYPE_ROOT, TYPE_PKG);
+fs.copySync(LEGACY_REEXPORT_ROOT, CJS_PKG, {overwrite: false, errorOnExist: true});
copySources(ESM5_ROOT, ESM5_PKG, true);
copySources(ESM2015_ROOT, ESM2015_PKG, true);
// Copy over tsconfig.json for bazel build support
-fs.copySync('./tsconfig.json', PKG_ROOT + 'src/tsconfig.json');
+fs.copySync('./tsconfig.base.json', PKG_ROOT + 'src/tsconfig.json');
-fs.writeJsonSync(PKG_ROOT + 'package.json', rootPackageJson);
+fs.writeJsonSync(PKG_ROOT + 'package.json', rootPackageJson, {spaces: 2});
fs.copySync('src/operators/package.json', PKG_ROOT + '/operators/package.json');
fs.copySync('src/ajax/package.json', PKG_ROOT + '/ajax/package.json');
fs.copySync('src/websocket/package.json', PKG_ROOT + '/websocket/package.json');
fs.copySync('src/testing/package.json', PKG_ROOT + '/testing/package.json');
+
if (fs.existsSync(UMD_ROOT)) {
fs.copySync(UMD_ROOT, UMD_PKG);
// Add licenses to tops of bundles
@@ -118,6 +121,15 @@ if (fs.existsSync(UMD_ROOT)) {
addLicenseTextToFile(license, UMD_PKG + 'rxjs.umd.min.js');
}
+// remove umd.js/umd.d.ts files that are only needed for creation of the umd bundle
+fs.removeSync(CJS_PKG + '/internal/umd.js');
+fs.removeSync(CJS_PKG + '/internal/umd.js.map');
+fs.removeSync(ESM5_PKG + '/internal/umd.js');
+fs.removeSync(ESM5_PKG + '/internal/umd.js.map');
+fs.removeSync(ESM2015_PKG + '/internal/umd.js');
+fs.removeSync(ESM2015_PKG + '/internal/umd.js.map');
+fs.removeSync(TYPE_PKG + '/internal/umd.d.ts');
+
function copySources(rootDir, packageDir, ignoreMissing) {
// If we are ignoring missing directories, early return when source doesn't exist
if (!fs.existsSync(rootDir)) {
@@ -137,7 +149,7 @@ function copySources(rootDir, packageDir, ignoreMissing) {
function createImportTargets(importTargets, targetName, targetDirectory) {
const importMap = {};
for (const x in importTargets) {
- importMap['rxjs/' + x] = 'rxjs/' + targetName + importTargets[x];
+ importMap['rxjs/' + x] = ('rxjs-compat/' + targetName + importTargets[x]).replace(/\.js$/, '');
}
const outputData =
@@ -148,7 +160,7 @@ var path = require('path');
var dir = path.resolve(__dirname);
module.exports = function() {
- return ${JSON.stringify(importMap, null, 4).replace(/(: )"rxjs\/_esm(5|2015)\/(.+")(,?)/g, "$1path.join(dir, \"$3)$4")};
+ return ${JSON.stringify(importMap, null, 4)};
}
`
diff --git a/CHANGELOG.md b/CHANGELOG.md
index fa2e732546..2773710ae6 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,71 @@
+
+# [6.0.0-alpha.4](https://github.com/ReactiveX/RxJS/compare/6.0.0-alpha.3...v6.0.0-alpha.4) (2018-03-13)
+
+
+### Bug Fixes
+
+* **ESM:** Add [operators|ajax|websocket|testing]/package.json for ESM support, fixes [#3227](https://github.com/ReactiveX/RxJS/issues/3227) ([#3356](https://github.com/ReactiveX/RxJS/issues/3356)) ([725dcb4](https://github.com/ReactiveX/RxJS/commit/725dcb4))
+* **fromEvent:** Defines toString to fix Closure compilations ([#3417](https://github.com/ReactiveX/RxJS/issues/3417)) ([1558b43](https://github.com/ReactiveX/RxJS/commit/1558b43))
+* **fromEvent:** pass options in unsubscribe ([f1872b0](https://github.com/ReactiveX/RxJS/commit/f1872b0)), closes [#3349](https://github.com/ReactiveX/RxJS/issues/3349)
+* **rxjs:** add exports for symbols/interfaces that were missing ([#3380](https://github.com/ReactiveX/RxJS/issues/3380)) ([1622ee0](https://github.com/ReactiveX/RxJS/commit/1622ee0))
+* **rxjs:** make sure esm imports from index.js by default, not Rx.js ([#3316](https://github.com/ReactiveX/RxJS/issues/3316)) ([c2b00f4](https://github.com/ReactiveX/RxJS/commit/c2b00f4)), closes [#3315](https://github.com/ReactiveX/RxJS/issues/3315)
+* **rxjs:** once again exports custom error types ([#3371](https://github.com/ReactiveX/RxJS/issues/3371)) ([4465a9f](https://github.com/ReactiveX/RxJS/commit/4465a9f))
+* **rxjs:** remove types.ts importing from itself. ([#3383](https://github.com/ReactiveX/RxJS/issues/3383)) ([8fd50ad](https://github.com/ReactiveX/RxJS/commit/8fd50ad))
+* correct internal module paths to be systemjs compatible ([#3412](https://github.com/ReactiveX/RxJS/issues/3412)) ([35abc9d](https://github.com/ReactiveX/RxJS/commit/35abc9d))
+* **Symbol.iterator:** correctly handle case where Symbol constructor itself is not defined ([#3394](https://github.com/ReactiveX/RxJS/issues/3394)) ([6725be1](https://github.com/ReactiveX/RxJS/commit/6725be1))
+* **typings:** fixed some cases where multicast and publish would not return a ConnectableObservable ([#3320](https://github.com/ReactiveX/RxJS/issues/3320)) ([ddffecc](https://github.com/ReactiveX/RxJS/commit/ddffecc))
+* reexport Symbol.observable typings patch ([4c4d7b0](https://github.com/ReactiveX/RxJS/commit/4c4d7b0))
+* remove the root operators.ts because it overshadows operators/package.json ([184b6d4](https://github.com/ReactiveX/RxJS/commit/184b6d4))
+
+
+### Code Refactoring
+
+* **Observable.if:** remove ts hacks from Observable ([f46f261](https://github.com/ReactiveX/RxJS/commit/f46f261))
+* **Rx.ts:** move Rx.ts to internal ([#3400](https://github.com/ReactiveX/RxJS/issues/3400)) ([7ad2119](https://github.com/ReactiveX/RxJS/commit/7ad2119))
+
+
+### Features
+
+* **bindCallback:** remove result selector ([2535641](https://github.com/ReactiveX/RxJS/commit/2535641))
+* **bindNodeCallback:** remove resultSelector ([26e6e5c](https://github.com/ReactiveX/RxJS/commit/26e6e5c))
+* **exhaustMap:** simplify interface ([42589d0](https://github.com/ReactiveX/RxJS/commit/42589d0))
+* **first:** simplify interface ([a011338](https://github.com/ReactiveX/RxJS/commit/a011338))
+* **forkJoin:** simplify interface ([4d2338b](https://github.com/ReactiveX/RxJS/commit/4d2338b))
+* **fromEvent:** remove resultSelector ([197f449](https://github.com/ReactiveX/RxJS/commit/197f449))
+* **fromEvent:** will now emit an array when event emits multiple arguments ([51b37fd](https://github.com/ReactiveX/RxJS/commit/51b37fd))
+* **fromEventPattern:** removed resultSelector ([6b34f9f](https://github.com/ReactiveX/RxJS/commit/6b34f9f))
+* **last:** simplify interface ([3240419](https://github.com/ReactiveX/RxJS/commit/3240419))
+* **mergeMap|concatMap|concatMapTo:** simplified the signatures ([d293245](https://github.com/ReactiveX/RxJS/commit/d293245))
+* **mergeMapTo:** simplify interface ([582c7be](https://github.com/ReactiveX/RxJS/commit/582c7be))
+* **never:** no longer export `never` function ([#3386](https://github.com/ReactiveX/RxJS/issues/3386)) ([53debc8](https://github.com/ReactiveX/RxJS/commit/53debc8))
+* **switchMap|switchMapTo:** simplify interface ([959fb6a](https://github.com/ReactiveX/RxJS/commit/959fb6a))
+* **Symbol.iterator:** no longer polyfilled ([#3389](https://github.com/ReactiveX/RxJS/issues/3389)) ([6319f3c](https://github.com/ReactiveX/RxJS/commit/6319f3c))
+* **Symbol.observable:** is no longer polyfilled ([#3387](https://github.com/ReactiveX/RxJS/issues/3387)) ([4a5aaaf](https://github.com/ReactiveX/RxJS/commit/4a5aaaf))
+* **throwIfEmpty:** adds throwIfEmpty operator ([#3368](https://github.com/ReactiveX/RxJS/issues/3368)) ([9b21458](https://github.com/ReactiveX/RxJS/commit/9b21458))
+* **typings:** updated typings for combineAll, mergeAll, concatAll, switch, exhaust, zipAll ([#3321](https://github.com/ReactiveX/RxJS/issues/3321)) ([f7e4c02](https://github.com/ReactiveX/RxJS/commit/f7e4c02))
+* **umd:** UMD now mirrors export schema for ESM and CJS ([#3426](https://github.com/ReactiveX/RxJS/issues/3426)) ([556c904](https://github.com/ReactiveX/RxJS/commit/556c904))
+
+
+### BREAKING CHANGES
+
+* **Symbol.observable:** RxJS will no longer be polyfilling Symbol.observable. That should be done by an actual polyfill library. This is to prevent duplication of code, and also to prevent having modules with side-effects in rxjs.
+* **mergeMap|concatMap|concatMapTo:** mergeMap, concatMap and concatMapTo no longer support a result selector, if you need to use a result selector, use the following pattern: `source.mergeMap(x => of(x + x).pipe(map(y => y + x))` (the pattern would be the same for `concatMap`).
+* **bindCallback:** removes result selector, use `map` instead: `bindCallback(fn1, fn2)()` becomes `bindCallback(fn1)().pipe(map(fn2))`
+* **Rx.ts:** importing from `rxjs/Rx` is no longer available. Upcoming backwards compat solution will allow that
+* **Symbol.iterator:** We are no longer polyfilling `Symbol.iterator`. That would be done by a proper polyfilling library
+* **Observable.if:** TypeScript users using `Observable.if` will have to cast `Observable` as any to get to `if`. It is a better idae to just use `iif` directly via `import { iif } from 'rxjs';`
+* **bindNodeCallback:** resultSelector removed, use `map` instead: `bindNodeCallback(fn1, fn2)()` becomes `bindNodeCallback(fn1)().pipe(map(fn2))`
+* **never:** no longer exported. Use the `NEVER` constant instead.
+* **fromEvent:** result selector removed, use `map` instead: `fromEvent(target, 'click', fn)` becomes `fromEvent(target, 'click').pipe(map(fn))`
+* **last:** no longer accepts `resultSelector` argument. To get this same functionality, use `map`.
+* **first:** no longer supports `resultSelector` argument. The same functionality can be achieved by simply mapping either before or after `first` depending on your use case.
+* **exhaustMap:** `resultSelector` no longer supported, to get this functionality use: `source.pipe(exhaustMap(x => of(x + x).pipe(map(y => x + y))))`
+* **switchMap|switchMapTo:** `switchMap` and `switchMapTo` no longer take `resultSelector` arguments, to get the same functionality use `switchMap` and `map` in combination: `source.pipe(switchMap(x => of(x + x).pipe(y => x + y)))`.
+* **mergeMapTo:** `mergeMapTo` no longer accepts a resultSelector, to get this functionality, you'll want to use `mergeMap` and `map` together: `source.pipe(mergeMap(() => inner).pipe(map(y => x + y)))`
+* **fromEventPattern:** no longer supports a result selector, use `map` instead: `fromEventPattern(fn1, fn2, fn3)` becomes `fromEventPattern(fn1, fn2).pipe(map(fn3))`
+
+
+
# [6.0.0-alpha.3](https://github.com/ReactiveX/RxJS/compare/6.0.0-alpha.2...v6.0.0-alpha.3) (2018-02-06)
diff --git a/README.md b/README.md
index 5e2caf96d6..5b1460d32e 100644
--- a/README.md
+++ b/README.md
@@ -21,10 +21,8 @@ Reactive Extensions Library for JavaScript. This is a rewrite of [Reactive-Exten
## Versions In This Repository
-- [master](https://github.com/ReactiveX/rxjs/commits/master) - commits that will be included in the next _major_ release (breaking changes)
-- [next](https://github.com/ReactiveX/rxjs/commits/stable) - commits that will be included in the next _minor_ or _patch_ release
-
-Most PRs should be made to **master**, unless you know it is a breaking change.
+- [master](https://github.com/ReactiveX/rxjs/commits/master) - This all of the current, unreleased work, which is against v6 of RxJS right now
+- [stable](https://github.com/ReactiveX/rxjs/commits/stable) - This is the branch for the latest version you'd get if you do `npm install rxjs`, (currently this is 5.5)
## Important
@@ -38,19 +36,10 @@ By contributing or commenting on issues in this repository, whether you've read
npm install rxjs@alpha
```
-To import the entire core set of functionality:
-
-```js
-import Rx from 'rxjs/Rx';
-
-Rx.Observable.of(1,2,3)
-```
-
To import only what you need by patching (this is useful for size-sensitive bundling):
```js
-import { Observable, Subject, ReplaySubject } from 'rxjs';
-import { from, of, range } from 'rxjs/create';
+import { Observable, Subject, ReplaySubject, from, of, range } from 'rxjs';
import { map, filter, switchMap } from 'rxjs/operators';
range(1, 200)
@@ -69,8 +58,7 @@ npm install rxjs@alpha
(Note: destructuring available in Node 8+)
```js
-const { Observable, Subject, ReplaySubject } = require('rxjs');
-const { from, of, range } = require('rxjs/create');
+const { Observable, Subject, ReplaySubject, from, of, range } = require('rxjs');
const { map, filter, switchMap } = require('rxjs/operators');
range(1, 200)
@@ -82,15 +70,17 @@ range(1, 200)
For CDN, you can use [unpkg](https://unpkg.com/):
-https://unpkg.com/rxjs/bundles/Rx.min.js
+https://unpkg.com/rxjs/bundles/rxjs.umd.min.js
-#### Node.js Usage:
+The global namespace for rxjs is `rxjs`:
```js
-var Rx = require('@reactivex/rxjs');
+const { Observable, Subject, ReplaySubject, from, of, range } = rxjs;
+const { map, filter, switchMap } = rxjs.operators;
-Rx.Observable.of('hello world')
- .subscribe(function(x) { console.log(x); });
+range(1, 200)
+ .pipe(filter(x => x % 2 === 1), map(x => x + x))
+ .subscribe(x => console.log(x));
```
## Goals
diff --git a/compat/AsyncSubject.ts b/compat/AsyncSubject.ts
new file mode 100644
index 0000000000..656ff9380c
--- /dev/null
+++ b/compat/AsyncSubject.ts
@@ -0,0 +1 @@
+export {AsyncSubject} from 'rxjs';
diff --git a/compat/BehaviorSubject.ts b/compat/BehaviorSubject.ts
new file mode 100644
index 0000000000..0809d1fa5a
--- /dev/null
+++ b/compat/BehaviorSubject.ts
@@ -0,0 +1 @@
+export {BehaviorSubject} from 'rxjs';
diff --git a/compat/InnerSubscriber.ts b/compat/InnerSubscriber.ts
new file mode 100644
index 0000000000..c37cb18933
--- /dev/null
+++ b/compat/InnerSubscriber.ts
@@ -0,0 +1 @@
+export {InnerSubscriber} from 'rxjs/internal-compatibility';
diff --git a/compat/Notification.ts b/compat/Notification.ts
new file mode 100644
index 0000000000..812cebd1e5
--- /dev/null
+++ b/compat/Notification.ts
@@ -0,0 +1 @@
+export {Notification} from 'rxjs';
diff --git a/compat/Observable.ts b/compat/Observable.ts
new file mode 100644
index 0000000000..f3f522f4d6
--- /dev/null
+++ b/compat/Observable.ts
@@ -0,0 +1 @@
+export {Observable, Subscribable, SubscribableOrPromise, ObservableInput} from 'rxjs';
diff --git a/compat/Observer.ts b/compat/Observer.ts
new file mode 100644
index 0000000000..89a324b598
--- /dev/null
+++ b/compat/Observer.ts
@@ -0,0 +1 @@
+export {Observer, NextObserver, ErrorObserver, CompletionObserver, PartialObserver} from 'rxjs';
diff --git a/compat/Operator.ts b/compat/Operator.ts
new file mode 100644
index 0000000000..e8c7e3f976
--- /dev/null
+++ b/compat/Operator.ts
@@ -0,0 +1 @@
+export {Operator} from 'rxjs';
diff --git a/compat/OuterSubscriber.ts b/compat/OuterSubscriber.ts
new file mode 100644
index 0000000000..40bb3564ae
--- /dev/null
+++ b/compat/OuterSubscriber.ts
@@ -0,0 +1 @@
+export {OuterSubscriber} from 'rxjs/internal-compatibility';
diff --git a/compat/README.md b/compat/README.md
new file mode 100644
index 0000000000..e5bb718791
--- /dev/null
+++ b/compat/README.md
@@ -0,0 +1,15 @@
+# RxJS Compatibility Package
+
+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:
+
+```
+Observable.interval(1)
+ .map(i => i * i)
+```
+
+vs
+
+```
+Observable.interval(1)
+ .pipe(map(i => i * i))
+```
diff --git a/compat/ReplaySubject.ts b/compat/ReplaySubject.ts
new file mode 100644
index 0000000000..af2dc8e479
--- /dev/null
+++ b/compat/ReplaySubject.ts
@@ -0,0 +1 @@
+export {ReplaySubject} from 'rxjs';
diff --git a/compat/Rx.ts b/compat/Rx.ts
new file mode 100644
index 0000000000..cfd120fb0f
--- /dev/null
+++ b/compat/Rx.ts
@@ -0,0 +1,219 @@
+/* tslint:disable:no-unused-variable */
+// Subject imported before Observable to bypass circular dependency issue since
+// Subject extends Observable and Observable references Subject in it's
+// definition
+export {Observable, Subject} from 'rxjs';
+export {AnonymousSubject} from 'rxjs/internal-compatibility';
+/* tslint:enable:no-unused-variable */
+
+export { config } from 'rxjs/internal-compatibility';
+
+// statics
+/* tslint:disable:no-use-before-declare */
+import './add/observable/bindCallback';
+import './add/observable/bindNodeCallback';
+import './add/observable/combineLatest';
+import './add/observable/concat';
+import './add/observable/defer';
+import './add/observable/empty';
+import './add/observable/forkJoin';
+import './add/observable/from';
+import './add/observable/fromEvent';
+import './add/observable/fromEventPattern';
+import './add/observable/fromPromise';
+import './add/observable/generate';
+import './add/observable/if';
+import './add/observable/interval';
+import './add/observable/merge';
+import './add/observable/race';
+import './add/observable/never';
+import './add/observable/of';
+import './add/observable/onErrorResumeNext';
+import './add/observable/pairs';
+import './add/observable/range';
+import './add/observable/using';
+import './add/observable/throw';
+import './add/observable/timer';
+import './add/observable/zip';
+
+//dom
+import './add/observable/dom/ajax';
+import './add/observable/dom/webSocket';
+
+//internal/operators
+import './add/operator/buffer';
+import './add/operator/bufferCount';
+import './add/operator/bufferTime';
+import './add/operator/bufferToggle';
+import './add/operator/bufferWhen';
+import './add/operator/catch';
+import './add/operator/combineAll';
+import './add/operator/combineLatest';
+import './add/operator/concat';
+import './add/operator/concatAll';
+import './add/operator/concatMap';
+import './add/operator/concatMapTo';
+import './add/operator/count';
+import './add/operator/dematerialize';
+import './add/operator/debounce';
+import './add/operator/debounceTime';
+import './add/operator/defaultIfEmpty';
+import './add/operator/delay';
+import './add/operator/delayWhen';
+import './add/operator/distinct';
+import './add/operator/distinctUntilChanged';
+import './add/operator/distinctUntilKeyChanged';
+import './add/operator/do';
+import './add/operator/exhaust';
+import './add/operator/exhaustMap';
+import './add/operator/expand';
+import './add/operator/elementAt';
+import './add/operator/filter';
+import './add/operator/finally';
+import './add/operator/find';
+import './add/operator/findIndex';
+import './add/operator/first';
+import './add/operator/groupBy';
+import './add/operator/ignoreElements';
+import './add/operator/isEmpty';
+import './add/operator/audit';
+import './add/operator/auditTime';
+import './add/operator/last';
+import './add/operator/let';
+import './add/operator/every';
+import './add/operator/map';
+import './add/operator/mapTo';
+import './add/operator/materialize';
+import './add/operator/max';
+import './add/operator/merge';
+import './add/operator/mergeAll';
+import './add/operator/mergeMap';
+import './add/operator/mergeMapTo';
+import './add/operator/mergeScan';
+import './add/operator/min';
+import './add/operator/multicast';
+import './add/operator/observeOn';
+import './add/operator/onErrorResumeNext';
+import './add/operator/pairwise';
+import './add/operator/partition';
+import './add/operator/pluck';
+import './add/operator/publish';
+import './add/operator/publishBehavior';
+import './add/operator/publishReplay';
+import './add/operator/publishLast';
+import './add/operator/race';
+import './add/operator/reduce';
+import './add/operator/repeat';
+import './add/operator/repeatWhen';
+import './add/operator/retry';
+import './add/operator/retryWhen';
+import './add/operator/sample';
+import './add/operator/sampleTime';
+import './add/operator/scan';
+import './add/operator/sequenceEqual';
+import './add/operator/share';
+import './add/operator/shareReplay';
+import './add/operator/single';
+import './add/operator/skip';
+import './add/operator/skipLast';
+import './add/operator/skipUntil';
+import './add/operator/skipWhile';
+import './add/operator/startWith';
+import './add/operator/subscribeOn';
+import './add/operator/switch';
+import './add/operator/switchMap';
+import './add/operator/switchMapTo';
+import './add/operator/take';
+import './add/operator/takeLast';
+import './add/operator/takeUntil';
+import './add/operator/takeWhile';
+import './add/operator/throttle';
+import './add/operator/throttleTime';
+import './add/operator/timeInterval';
+import './add/operator/timeout';
+import './add/operator/timeoutWith';
+import './add/operator/timestamp';
+import './add/operator/toArray';
+import './add/operator/toPromise';
+import './add/operator/window';
+import './add/operator/windowCount';
+import './add/operator/windowTime';
+import './add/operator/windowToggle';
+import './add/operator/windowWhen';
+import './add/operator/withLatestFrom';
+import './add/operator/zip';
+import './add/operator/zipAll';
+
+/* tslint:disable:no-unused-variable */
+export {
+ Observer,
+ Subscription,
+ ReplaySubject,
+ BehaviorSubject,
+ Notification,
+ EmptyError,
+ ArgumentOutOfRangeError,
+ ObjectUnsubscribedError,
+ UnsubscriptionError,
+ pipe
+} from 'rxjs';
+
+export {TestScheduler} from 'rxjs/testing';
+
+export { Operator, Subscriber, AsyncSubject, ConnectableObservable, TimeoutError, VirtualTimeScheduler } from 'rxjs';
+export { AjaxRequest, AjaxResponse, AjaxError, AjaxTimeoutError } from 'rxjs/ajax';
+
+import { asapScheduler, asyncScheduler, queueScheduler, animationFrameScheduler, SchedulerLike } from 'rxjs';
+
+import { iterator, observable, rxSubscriber } from 'rxjs/internal-compatibility';
+export { TimeInterval, Timestamp } from 'rxjs/internal-compatibility';
+
+import * as _operators from 'rxjs/operators';
+
+export const operators = _operators;
+
+/* tslint:enable:no-unused-variable */
+
+/**
+ * @typedef {Object} Rx.Scheduler
+ * @property {Scheduler} queue Schedules on a queue in the current event frame
+ * (trampoline scheduler). Use this for iteration operations.
+ * @property {Scheduler} asap Schedules on the micro task queue, which uses the
+ * fastest transport mechanism available, either Node.js' `process.nextTick()`
+ * or Web Worker MessageChannel or setTimeout or others. Use this for
+ * asynchronous conversions.
+ * @property {Scheduler} async Schedules work with `setInterval`. Use this for
+ * time-based operations.
+ * @property {Scheduler} animationFrame Schedules work with `requestAnimationFrame`.
+ * Use this for synchronizing with the platform's painting
+ */
+let Scheduler = {
+ asap: asapScheduler as SchedulerLike,
+ queue: queueScheduler as SchedulerLike,
+ animationFrame: animationFrameScheduler as SchedulerLike,
+ async: asyncScheduler as SchedulerLike
+};
+
+/**
+ * @typedef {Object} Rx.Symbol
+ * @property {Symbol|string} rxSubscriber A symbol to use as a property name to
+ * retrieve an "Rx safe" Observer from an object. "Rx safety" can be defined as
+ * an object that has all of the traits of an Rx Subscriber, including the
+ * ability to add and remove subscriptions to the subscription chain and
+ * guarantees involving event triggering (can't "next" after unsubscription,
+ * etc).
+ * @property {Symbol|string} observable A symbol to use as a property name to
+ * retrieve an Observable as defined by the [ECMAScript "Observable" spec](https://github.com/zenparsing/es-observable).
+ * @property {Symbol|string} iterator The ES6 symbol to use as a property name
+ * to retrieve an iterator from an object.
+ */
+let Symbol = {
+ rxSubscriber,
+ observable,
+ iterator
+};
+
+export {
+ Scheduler,
+ Symbol
+};
diff --git a/compat/Scheduler.ts b/compat/Scheduler.ts
new file mode 100644
index 0000000000..80bce9b83f
--- /dev/null
+++ b/compat/Scheduler.ts
@@ -0,0 +1 @@
+export {Scheduler} from 'rxjs/internal-compatibility';
diff --git a/compat/Subject.ts b/compat/Subject.ts
new file mode 100644
index 0000000000..50d7b4bdb1
--- /dev/null
+++ b/compat/Subject.ts
@@ -0,0 +1 @@
+export {Subject} from 'rxjs';
diff --git a/compat/SubjectSubscription.ts b/compat/SubjectSubscription.ts
new file mode 100644
index 0000000000..00766b6957
--- /dev/null
+++ b/compat/SubjectSubscription.ts
@@ -0,0 +1 @@
+export {SubjectSubscription} from 'rxjs/internal-compatibility';
diff --git a/compat/Subscriber.ts b/compat/Subscriber.ts
new file mode 100644
index 0000000000..c48f65160c
--- /dev/null
+++ b/compat/Subscriber.ts
@@ -0,0 +1 @@
+export {Subscriber} from 'rxjs/internal-compatibility';
diff --git a/compat/Subscription.ts b/compat/Subscription.ts
new file mode 100644
index 0000000000..5dc036ab40
--- /dev/null
+++ b/compat/Subscription.ts
@@ -0,0 +1 @@
+export {Subscription, Unsubscribable as AnonymousSubscription, SubscriptionLike as ISubscription} from 'rxjs';
diff --git a/compat/add/observable/bindCallback.ts b/compat/add/observable/bindCallback.ts
new file mode 100644
index 0000000000..add5eb5975
--- /dev/null
+++ b/compat/add/observable/bindCallback.ts
@@ -0,0 +1,9 @@
+import { Observable, bindCallback as staticBindCallback } from 'rxjs';
+
+Observable.bindCallback = staticBindCallback;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let bindCallback: typeof staticBindCallback;
+ }
+}
diff --git a/compat/add/observable/bindNodeCallback.ts b/compat/add/observable/bindNodeCallback.ts
new file mode 100644
index 0000000000..65a380a0ba
--- /dev/null
+++ b/compat/add/observable/bindNodeCallback.ts
@@ -0,0 +1,9 @@
+import { Observable, bindNodeCallback as staticBindNodeCallback } from 'rxjs';
+
+Observable.bindNodeCallback = staticBindNodeCallback;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let bindNodeCallback: typeof staticBindNodeCallback;
+ }
+}
diff --git a/compat/add/observable/combineLatest.ts b/compat/add/observable/combineLatest.ts
new file mode 100644
index 0000000000..0d77a00f6f
--- /dev/null
+++ b/compat/add/observable/combineLatest.ts
@@ -0,0 +1,9 @@
+import { Observable, combineLatest as combineLatestStatic } from 'rxjs';
+
+Observable.combineLatest = combineLatestStatic;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let combineLatest: typeof combineLatestStatic;
+ }
+}
diff --git a/compat/add/observable/concat.ts b/compat/add/observable/concat.ts
new file mode 100644
index 0000000000..f32c1a52d5
--- /dev/null
+++ b/compat/add/observable/concat.ts
@@ -0,0 +1,9 @@
+import { Observable, concat as concatStatic } from 'rxjs';
+
+Observable.concat = concatStatic;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let concat: typeof concatStatic;
+ }
+}
diff --git a/compat/add/observable/defer.ts b/compat/add/observable/defer.ts
new file mode 100644
index 0000000000..eb5378ae6f
--- /dev/null
+++ b/compat/add/observable/defer.ts
@@ -0,0 +1,9 @@
+import { Observable, defer as staticDefer } from 'rxjs';
+
+Observable.defer = staticDefer;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let defer: typeof staticDefer;
+ }
+}
diff --git a/compat/add/observable/dom/ajax.ts b/compat/add/observable/dom/ajax.ts
new file mode 100644
index 0000000000..e7f4ef6f6a
--- /dev/null
+++ b/compat/add/observable/dom/ajax.ts
@@ -0,0 +1,11 @@
+import { Observable } from 'rxjs';
+import { ajax as staticAjax } from 'rxjs/ajax';
+import { AjaxCreationMethod } from 'rxjs/internal-compatibility';
+
+Observable.ajax = staticAjax;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let ajax: AjaxCreationMethod;
+ }
+}
diff --git a/compat/add/observable/dom/webSocket.ts b/compat/add/observable/dom/webSocket.ts
new file mode 100644
index 0000000000..9d5c338491
--- /dev/null
+++ b/compat/add/observable/dom/webSocket.ts
@@ -0,0 +1,10 @@
+import { Observable } from 'rxjs';
+import { websocket as staticWebSocket } from 'rxjs/websocket';
+
+Observable.webSocket = staticWebSocket;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let webSocket: typeof staticWebSocket;
+ }
+}
diff --git a/compat/add/observable/empty.ts b/compat/add/observable/empty.ts
new file mode 100644
index 0000000000..bd922dd4dd
--- /dev/null
+++ b/compat/add/observable/empty.ts
@@ -0,0 +1,9 @@
+import { Observable, empty as staticEmpty } from 'rxjs';
+
+Observable.empty = staticEmpty;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let empty: typeof staticEmpty;
+ }
+}
diff --git a/compat/add/observable/forkJoin.ts b/compat/add/observable/forkJoin.ts
new file mode 100644
index 0000000000..9cf144c306
--- /dev/null
+++ b/compat/add/observable/forkJoin.ts
@@ -0,0 +1,9 @@
+import { Observable, forkJoin as staticForkJoin } from 'rxjs';
+
+Observable.forkJoin = staticForkJoin;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let forkJoin: typeof staticForkJoin;
+ }
+}
diff --git a/compat/add/observable/from.ts b/compat/add/observable/from.ts
new file mode 100644
index 0000000000..7b3565eda3
--- /dev/null
+++ b/compat/add/observable/from.ts
@@ -0,0 +1,9 @@
+import { Observable, from as staticFrom } from 'rxjs';
+
+Observable.from = staticFrom;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let from: typeof staticFrom;
+ }
+}
diff --git a/compat/add/observable/fromEvent.ts b/compat/add/observable/fromEvent.ts
new file mode 100644
index 0000000000..3f95111cfd
--- /dev/null
+++ b/compat/add/observable/fromEvent.ts
@@ -0,0 +1,9 @@
+import { Observable, fromEvent as staticFromEvent } from 'rxjs';
+
+Observable.fromEvent = staticFromEvent;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let fromEvent: typeof staticFromEvent;
+ }
+}
diff --git a/compat/add/observable/fromEventPattern.ts b/compat/add/observable/fromEventPattern.ts
new file mode 100644
index 0000000000..752d28bcf4
--- /dev/null
+++ b/compat/add/observable/fromEventPattern.ts
@@ -0,0 +1,9 @@
+import { Observable, fromEventPattern as staticFromEventPattern } from 'rxjs';
+
+Observable.fromEventPattern = staticFromEventPattern;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let fromEventPattern: typeof staticFromEventPattern;
+ }
+}
diff --git a/compat/add/observable/fromPromise.ts b/compat/add/observable/fromPromise.ts
new file mode 100644
index 0000000000..2ce2b0bab5
--- /dev/null
+++ b/compat/add/observable/fromPromise.ts
@@ -0,0 +1,10 @@
+import { Observable, from } from 'rxjs';
+import { fromPromise as staticFromPromise } from 'rxjs/internal-compatibility';
+
+(Observable as any).fromPromise = from;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let fromPromise: typeof staticFromPromise;
+ }
+}
diff --git a/compat/add/observable/generate.ts b/compat/add/observable/generate.ts
new file mode 100644
index 0000000000..dc9e0118c3
--- /dev/null
+++ b/compat/add/observable/generate.ts
@@ -0,0 +1,9 @@
+import { Observable, generate as staticGenerate } from 'rxjs';
+
+Observable.generate = staticGenerate;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let generate: typeof staticGenerate;
+ }
+}
diff --git a/compat/add/observable/if.ts b/compat/add/observable/if.ts
new file mode 100644
index 0000000000..9314971233
--- /dev/null
+++ b/compat/add/observable/if.ts
@@ -0,0 +1,4 @@
+import { Observable, iif } from 'rxjs';
+
+//tslint:disable-next-line:no-any TypeScript doesn't like `if`
+(Observable as any).if = iif;
diff --git a/compat/add/observable/interval.ts b/compat/add/observable/interval.ts
new file mode 100644
index 0000000000..1a0164525b
--- /dev/null
+++ b/compat/add/observable/interval.ts
@@ -0,0 +1,9 @@
+import { Observable, interval as staticInterval } from 'rxjs';
+
+Observable.interval = staticInterval;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let interval: typeof staticInterval;
+ }
+}
diff --git a/compat/add/observable/merge.ts b/compat/add/observable/merge.ts
new file mode 100644
index 0000000000..34fc685ef6
--- /dev/null
+++ b/compat/add/observable/merge.ts
@@ -0,0 +1,9 @@
+import { Observable, merge as mergeStatic } from 'rxjs';
+
+Observable.merge = mergeStatic;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let merge: typeof mergeStatic;
+ }
+}
diff --git a/src/add/observable/never.ts b/compat/add/observable/never.ts
similarity index 50%
rename from src/add/observable/never.ts
rename to compat/add/observable/never.ts
index bc1950fa11..6021aa279d 100644
--- a/src/add/observable/never.ts
+++ b/compat/add/observable/never.ts
@@ -1,5 +1,4 @@
-import { Observable } from '../../internal/Observable';
-import { NEVER } from '../../internal/observable/never';
+import { Observable, interval, NEVER } from 'rxjs';
export function staticNever() {
return NEVER;
@@ -7,7 +6,7 @@ export function staticNever() {
Observable.never = staticNever;
-declare module '../../internal/Observable' {
+declare module 'rxjs/internal/Observable' {
namespace Observable {
export let never: typeof staticNever;
}
diff --git a/compat/add/observable/of.ts b/compat/add/observable/of.ts
new file mode 100644
index 0000000000..7acc3ede35
--- /dev/null
+++ b/compat/add/observable/of.ts
@@ -0,0 +1,9 @@
+import { Observable, of as staticOf } from 'rxjs';
+
+Observable.of = staticOf;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let of: typeof staticOf; //formOf an iceberg!
+ }
+}
diff --git a/compat/add/observable/onErrorResumeNext.ts b/compat/add/observable/onErrorResumeNext.ts
new file mode 100644
index 0000000000..e0be75708a
--- /dev/null
+++ b/compat/add/observable/onErrorResumeNext.ts
@@ -0,0 +1,9 @@
+import { Observable, onErrorResumeNext as staticOnErrorResumeNext } from 'rxjs';
+
+Observable.onErrorResumeNext = staticOnErrorResumeNext;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let onErrorResumeNext: typeof staticOnErrorResumeNext;
+ }
+}
diff --git a/compat/add/observable/pairs.ts b/compat/add/observable/pairs.ts
new file mode 100644
index 0000000000..13f67fc149
--- /dev/null
+++ b/compat/add/observable/pairs.ts
@@ -0,0 +1,9 @@
+import { Observable, pairs as staticPairs } from 'rxjs';
+
+Observable.pairs = staticPairs;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let pairs: typeof staticPairs;
+ }
+}
diff --git a/compat/add/observable/race.ts b/compat/add/observable/race.ts
new file mode 100644
index 0000000000..b4dd7b63b9
--- /dev/null
+++ b/compat/add/observable/race.ts
@@ -0,0 +1,9 @@
+import { Observable, race as staticRace } from 'rxjs';
+
+Observable.race = staticRace;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let race: typeof staticRace;
+ }
+}
diff --git a/compat/add/observable/range.ts b/compat/add/observable/range.ts
new file mode 100644
index 0000000000..45a03770e4
--- /dev/null
+++ b/compat/add/observable/range.ts
@@ -0,0 +1,9 @@
+import { Observable, range as staticRange } from 'rxjs';
+
+Observable.range = staticRange;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let range: typeof staticRange;
+ }
+}
diff --git a/compat/add/observable/throw.ts b/compat/add/observable/throw.ts
new file mode 100644
index 0000000000..e7008425bb
--- /dev/null
+++ b/compat/add/observable/throw.ts
@@ -0,0 +1,10 @@
+import { Observable, throwError as staticThrowError } from 'rxjs';
+
+(Observable as any).throw = staticThrowError;
+Observable.throwError = staticThrowError;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let throwError: typeof staticThrowError;
+ }
+}
diff --git a/compat/add/observable/timer.ts b/compat/add/observable/timer.ts
new file mode 100644
index 0000000000..641f45e746
--- /dev/null
+++ b/compat/add/observable/timer.ts
@@ -0,0 +1,9 @@
+import { Observable, timer as staticTimer } from 'rxjs';
+
+Observable.timer = staticTimer;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let timer: typeof staticTimer;
+ }
+}
diff --git a/compat/add/observable/using.ts b/compat/add/observable/using.ts
new file mode 100644
index 0000000000..e56025298c
--- /dev/null
+++ b/compat/add/observable/using.ts
@@ -0,0 +1,9 @@
+import { Observable, using as staticUsing } from 'rxjs';
+
+Observable.using = staticUsing;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let using: typeof staticUsing;
+ }
+}
diff --git a/compat/add/observable/zip.ts b/compat/add/observable/zip.ts
new file mode 100644
index 0000000000..5693e96f69
--- /dev/null
+++ b/compat/add/observable/zip.ts
@@ -0,0 +1,9 @@
+import { Observable, zip as zipStatic } from 'rxjs';
+
+Observable.zip = zipStatic;
+
+declare module 'rxjs/internal/Observable' {
+ namespace Observable {
+ export let zip: typeof zipStatic;
+ }
+}
diff --git a/compat/add/operator/audit.ts b/compat/add/operator/audit.ts
new file mode 100644
index 0000000000..b34893bff8
--- /dev/null
+++ b/compat/add/operator/audit.ts
@@ -0,0 +1,10 @@
+import { Observable } from 'rxjs';
+import { audit } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.audit = audit;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ audit: typeof audit;
+ }
+}
diff --git a/compat/add/operator/auditTime.ts b/compat/add/operator/auditTime.ts
new file mode 100644
index 0000000000..e1f476ced4
--- /dev/null
+++ b/compat/add/operator/auditTime.ts
@@ -0,0 +1,10 @@
+import { Observable } from 'rxjs';
+import { auditTime } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.auditTime = auditTime;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ auditTime: typeof auditTime;
+ }
+}
diff --git a/compat/add/operator/buffer.ts b/compat/add/operator/buffer.ts
new file mode 100644
index 0000000000..e9ab2428a7
--- /dev/null
+++ b/compat/add/operator/buffer.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { buffer } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.buffer = buffer;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ buffer: typeof buffer;
+ }
+}
diff --git a/compat/add/operator/bufferCount.ts b/compat/add/operator/bufferCount.ts
new file mode 100644
index 0000000000..b3e8177da2
--- /dev/null
+++ b/compat/add/operator/bufferCount.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { bufferCount } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.bufferCount = bufferCount;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ bufferCount: typeof bufferCount;
+ }
+}
diff --git a/compat/add/operator/bufferTime.ts b/compat/add/operator/bufferTime.ts
new file mode 100644
index 0000000000..f6915ba438
--- /dev/null
+++ b/compat/add/operator/bufferTime.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { bufferTime } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.bufferTime = bufferTime;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ bufferTime: typeof bufferTime;
+ }
+}
diff --git a/compat/add/operator/bufferToggle.ts b/compat/add/operator/bufferToggle.ts
new file mode 100644
index 0000000000..87b740e69b
--- /dev/null
+++ b/compat/add/operator/bufferToggle.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { bufferToggle } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.bufferToggle = bufferToggle;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ bufferToggle: typeof bufferToggle;
+ }
+}
diff --git a/compat/add/operator/bufferWhen.ts b/compat/add/operator/bufferWhen.ts
new file mode 100644
index 0000000000..e2e700df83
--- /dev/null
+++ b/compat/add/operator/bufferWhen.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { bufferWhen } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.bufferWhen = bufferWhen;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ bufferWhen: typeof bufferWhen;
+ }
+}
diff --git a/compat/add/operator/catch.ts b/compat/add/operator/catch.ts
new file mode 100644
index 0000000000..d57f08a7c1
--- /dev/null
+++ b/compat/add/operator/catch.ts
@@ -0,0 +1,13 @@
+
+import { Observable } from 'rxjs';
+import { _catch } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.catch = _catch;
+(Observable as any).prototype._catch = _catch;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ catch: typeof _catch;
+ _catch: typeof _catch;
+ }
+}
diff --git a/compat/add/operator/combineAll.ts b/compat/add/operator/combineAll.ts
new file mode 100644
index 0000000000..273b8df2f0
--- /dev/null
+++ b/compat/add/operator/combineAll.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { combineAll } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.combineAll = combineAll;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ combineAll: typeof combineAll;
+ }
+}
diff --git a/compat/add/operator/combineLatest.ts b/compat/add/operator/combineLatest.ts
new file mode 100644
index 0000000000..25e08c45a4
--- /dev/null
+++ b/compat/add/operator/combineLatest.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { combineLatest } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.combineLatest = combineLatest;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ combineLatest: typeof combineLatest;
+ }
+}
diff --git a/compat/add/operator/concat.ts b/compat/add/operator/concat.ts
new file mode 100644
index 0000000000..4dab93edc0
--- /dev/null
+++ b/compat/add/operator/concat.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { concat } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.concat = concat;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ concat: typeof concat;
+ }
+}
diff --git a/compat/add/operator/concatAll.ts b/compat/add/operator/concatAll.ts
new file mode 100644
index 0000000000..930c210b6d
--- /dev/null
+++ b/compat/add/operator/concatAll.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { concatAll } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.concatAll = concatAll;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ concatAll: typeof concatAll;
+ }
+}
diff --git a/compat/add/operator/concatMap.ts b/compat/add/operator/concatMap.ts
new file mode 100644
index 0000000000..0f8caaaa7e
--- /dev/null
+++ b/compat/add/operator/concatMap.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { concatMap } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.concatMap = concatMap;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ concatMap: typeof concatMap;
+ }
+}
diff --git a/compat/add/operator/concatMapTo.ts b/compat/add/operator/concatMapTo.ts
new file mode 100644
index 0000000000..180cb73d65
--- /dev/null
+++ b/compat/add/operator/concatMapTo.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { concatMapTo } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.concatMapTo = concatMapTo;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ concatMapTo: typeof concatMapTo;
+ }
+}
diff --git a/compat/add/operator/count.ts b/compat/add/operator/count.ts
new file mode 100644
index 0000000000..43c3eba8f0
--- /dev/null
+++ b/compat/add/operator/count.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { count } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.count = count;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ count: typeof count;
+ }
+}
diff --git a/compat/add/operator/debounce.ts b/compat/add/operator/debounce.ts
new file mode 100644
index 0000000000..dfb1aebabe
--- /dev/null
+++ b/compat/add/operator/debounce.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { debounce } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.debounce = debounce;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ debounce: typeof debounce;
+ }
+}
diff --git a/compat/add/operator/debounceTime.ts b/compat/add/operator/debounceTime.ts
new file mode 100644
index 0000000000..bafc7d7b8c
--- /dev/null
+++ b/compat/add/operator/debounceTime.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { debounceTime } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.debounceTime = debounceTime;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ debounceTime: typeof debounceTime;
+ }
+}
diff --git a/compat/add/operator/defaultIfEmpty.ts b/compat/add/operator/defaultIfEmpty.ts
new file mode 100644
index 0000000000..5276fa0252
--- /dev/null
+++ b/compat/add/operator/defaultIfEmpty.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { defaultIfEmpty } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.defaultIfEmpty = defaultIfEmpty;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ defaultIfEmpty: typeof defaultIfEmpty;
+ }
+}
diff --git a/compat/add/operator/delay.ts b/compat/add/operator/delay.ts
new file mode 100644
index 0000000000..13aac9c0f7
--- /dev/null
+++ b/compat/add/operator/delay.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { delay } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.delay = delay;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ delay: typeof delay;
+ }
+}
diff --git a/compat/add/operator/delayWhen.ts b/compat/add/operator/delayWhen.ts
new file mode 100644
index 0000000000..1f205f4f46
--- /dev/null
+++ b/compat/add/operator/delayWhen.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { delayWhen } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.delayWhen = delayWhen;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ delayWhen: typeof delayWhen;
+ }
+}
diff --git a/compat/add/operator/dematerialize.ts b/compat/add/operator/dematerialize.ts
new file mode 100644
index 0000000000..24bf362896
--- /dev/null
+++ b/compat/add/operator/dematerialize.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { dematerialize } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.dematerialize = dematerialize;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ dematerialize: typeof dematerialize;
+ }
+}
diff --git a/compat/add/operator/distinct.ts b/compat/add/operator/distinct.ts
new file mode 100644
index 0000000000..8830d2789a
--- /dev/null
+++ b/compat/add/operator/distinct.ts
@@ -0,0 +1,10 @@
+import { Observable } from 'rxjs';
+import { distinct } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.distinct = distinct;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ distinct: typeof distinct;
+ }
+}
diff --git a/compat/add/operator/distinctUntilChanged.ts b/compat/add/operator/distinctUntilChanged.ts
new file mode 100644
index 0000000000..91e6a182d0
--- /dev/null
+++ b/compat/add/operator/distinctUntilChanged.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { distinctUntilChanged } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.distinctUntilChanged = distinctUntilChanged;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ distinctUntilChanged: typeof distinctUntilChanged;
+ }
+}
diff --git a/compat/add/operator/distinctUntilKeyChanged.ts b/compat/add/operator/distinctUntilKeyChanged.ts
new file mode 100644
index 0000000000..ec696271dd
--- /dev/null
+++ b/compat/add/operator/distinctUntilKeyChanged.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { distinctUntilKeyChanged } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.distinctUntilKeyChanged = distinctUntilKeyChanged;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ distinctUntilKeyChanged: typeof distinctUntilKeyChanged;
+ }
+}
diff --git a/compat/add/operator/do.ts b/compat/add/operator/do.ts
new file mode 100644
index 0000000000..7e40f14bac
--- /dev/null
+++ b/compat/add/operator/do.ts
@@ -0,0 +1,13 @@
+
+import { Observable } from 'rxjs';
+import { _do } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.do = _do;
+(Observable as any).prototype._do = _do;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ do: typeof _do;
+ _do: typeof _do;
+ }
+}
diff --git a/compat/add/operator/elementAt.ts b/compat/add/operator/elementAt.ts
new file mode 100644
index 0000000000..8a331c3ef2
--- /dev/null
+++ b/compat/add/operator/elementAt.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { elementAt } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.elementAt = elementAt;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ elementAt: typeof elementAt;
+ }
+}
diff --git a/compat/add/operator/every.ts b/compat/add/operator/every.ts
new file mode 100644
index 0000000000..d2e9b16aad
--- /dev/null
+++ b/compat/add/operator/every.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { every } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.every = every;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ every: typeof every;
+ }
+}
diff --git a/compat/add/operator/exhaust.ts b/compat/add/operator/exhaust.ts
new file mode 100644
index 0000000000..aa64918eb4
--- /dev/null
+++ b/compat/add/operator/exhaust.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { exhaust } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.exhaust = exhaust;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ exhaust: typeof exhaust;
+ }
+}
diff --git a/compat/add/operator/exhaustMap.ts b/compat/add/operator/exhaustMap.ts
new file mode 100644
index 0000000000..6ce2951e20
--- /dev/null
+++ b/compat/add/operator/exhaustMap.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { exhaustMap } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.exhaustMap = exhaustMap;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ exhaustMap: typeof exhaustMap;
+ }
+}
diff --git a/compat/add/operator/expand.ts b/compat/add/operator/expand.ts
new file mode 100644
index 0000000000..52fd5abaab
--- /dev/null
+++ b/compat/add/operator/expand.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { expand } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.expand = expand;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ expand: typeof expand;
+ }
+}
diff --git a/compat/add/operator/filter.ts b/compat/add/operator/filter.ts
new file mode 100644
index 0000000000..85d6626be5
--- /dev/null
+++ b/compat/add/operator/filter.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { filter } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.filter = filter;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ filter: typeof filter;
+ }
+}
diff --git a/compat/add/operator/finally.ts b/compat/add/operator/finally.ts
new file mode 100644
index 0000000000..9bdd55464d
--- /dev/null
+++ b/compat/add/operator/finally.ts
@@ -0,0 +1,13 @@
+
+import { Observable } from 'rxjs';
+import { _finally } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.finally = _finally;
+(Observable as any).prototype._finally = _finally;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ finally: typeof _finally;
+ _finally: typeof _finally;
+ }
+}
diff --git a/compat/add/operator/find.ts b/compat/add/operator/find.ts
new file mode 100644
index 0000000000..78222d37ed
--- /dev/null
+++ b/compat/add/operator/find.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { find } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.find = find;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ find: typeof find;
+ }
+}
diff --git a/compat/add/operator/findIndex.ts b/compat/add/operator/findIndex.ts
new file mode 100644
index 0000000000..4669625007
--- /dev/null
+++ b/compat/add/operator/findIndex.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { findIndex } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.findIndex = findIndex;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ findIndex: typeof findIndex;
+ }
+}
diff --git a/compat/add/operator/first.ts b/compat/add/operator/first.ts
new file mode 100644
index 0000000000..29550bc826
--- /dev/null
+++ b/compat/add/operator/first.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { first } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.first = first;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ first: typeof first;
+ }
+}
diff --git a/compat/add/operator/groupBy.ts b/compat/add/operator/groupBy.ts
new file mode 100644
index 0000000000..088154f19e
--- /dev/null
+++ b/compat/add/operator/groupBy.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { groupBy } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.groupBy = groupBy;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ groupBy: typeof groupBy;
+ }
+}
diff --git a/compat/add/operator/ignoreElements.ts b/compat/add/operator/ignoreElements.ts
new file mode 100644
index 0000000000..be37c850f2
--- /dev/null
+++ b/compat/add/operator/ignoreElements.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { ignoreElements } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.ignoreElements = ignoreElements;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ ignoreElements: typeof ignoreElements;
+ }
+}
diff --git a/compat/add/operator/isEmpty.ts b/compat/add/operator/isEmpty.ts
new file mode 100644
index 0000000000..e4330374f6
--- /dev/null
+++ b/compat/add/operator/isEmpty.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { isEmpty } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.isEmpty = isEmpty;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ isEmpty: typeof isEmpty;
+ }
+}
diff --git a/compat/add/operator/last.ts b/compat/add/operator/last.ts
new file mode 100644
index 0000000000..9ad12992ad
--- /dev/null
+++ b/compat/add/operator/last.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { last } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.last = last;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ last: typeof last;
+ }
+}
diff --git a/compat/add/operator/let.ts b/compat/add/operator/let.ts
new file mode 100644
index 0000000000..92436a2ad0
--- /dev/null
+++ b/compat/add/operator/let.ts
@@ -0,0 +1,13 @@
+
+import { Observable } from 'rxjs';
+import { letProto } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.let = letProto;
+(Observable as any).prototype.letBind = letProto;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ let: typeof letProto;
+ letBind: typeof letProto;
+ }
+}
diff --git a/compat/add/operator/map.ts b/compat/add/operator/map.ts
new file mode 100644
index 0000000000..c628aee513
--- /dev/null
+++ b/compat/add/operator/map.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { map } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.map = map;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ map: typeof map;
+ }
+}
diff --git a/compat/add/operator/mapTo.ts b/compat/add/operator/mapTo.ts
new file mode 100644
index 0000000000..fb86c9057c
--- /dev/null
+++ b/compat/add/operator/mapTo.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { mapTo } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.mapTo = mapTo;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ mapTo: typeof mapTo;
+ }
+}
diff --git a/compat/add/operator/materialize.ts b/compat/add/operator/materialize.ts
new file mode 100644
index 0000000000..7d7410900f
--- /dev/null
+++ b/compat/add/operator/materialize.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { materialize } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.materialize = materialize;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ materialize: typeof materialize;
+ }
+}
diff --git a/compat/add/operator/max.ts b/compat/add/operator/max.ts
new file mode 100644
index 0000000000..c992e5932a
--- /dev/null
+++ b/compat/add/operator/max.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { max } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.max = max;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ max: typeof max;
+ }
+}
diff --git a/compat/add/operator/merge.ts b/compat/add/operator/merge.ts
new file mode 100644
index 0000000000..101f333a1f
--- /dev/null
+++ b/compat/add/operator/merge.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { merge } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.merge = merge;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ merge: typeof merge;
+ }
+}
diff --git a/compat/add/operator/mergeAll.ts b/compat/add/operator/mergeAll.ts
new file mode 100644
index 0000000000..70b0307900
--- /dev/null
+++ b/compat/add/operator/mergeAll.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { mergeAll } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.mergeAll = mergeAll;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ mergeAll: typeof mergeAll;
+ }
+}
diff --git a/compat/add/operator/mergeMap.ts b/compat/add/operator/mergeMap.ts
new file mode 100644
index 0000000000..344987bc54
--- /dev/null
+++ b/compat/add/operator/mergeMap.ts
@@ -0,0 +1,13 @@
+
+import { Observable } from 'rxjs';
+import { mergeMap } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.mergeMap = mergeMap;
+(Observable as any).prototype.flatMap = mergeMap;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ flatMap: typeof mergeMap;
+ mergeMap: typeof mergeMap;
+ }
+}
diff --git a/compat/add/operator/mergeMapTo.ts b/compat/add/operator/mergeMapTo.ts
new file mode 100644
index 0000000000..d2ac343985
--- /dev/null
+++ b/compat/add/operator/mergeMapTo.ts
@@ -0,0 +1,13 @@
+
+import { Observable } from 'rxjs';
+import { mergeMapTo } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.flatMapTo = mergeMapTo;
+(Observable as any).prototype.mergeMapTo = mergeMapTo;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ flatMapTo: typeof mergeMapTo;
+ mergeMapTo: typeof mergeMapTo;
+ }
+}
diff --git a/compat/add/operator/mergeScan.ts b/compat/add/operator/mergeScan.ts
new file mode 100644
index 0000000000..f7696e0a0f
--- /dev/null
+++ b/compat/add/operator/mergeScan.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { mergeScan } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.mergeScan = mergeScan;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ mergeScan: typeof mergeScan;
+ }
+}
diff --git a/compat/add/operator/min.ts b/compat/add/operator/min.ts
new file mode 100644
index 0000000000..a53d2508b6
--- /dev/null
+++ b/compat/add/operator/min.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { min } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.min = min;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ min: typeof min;
+ }
+}
diff --git a/compat/add/operator/multicast.ts b/compat/add/operator/multicast.ts
new file mode 100644
index 0000000000..96edfd1d6d
--- /dev/null
+++ b/compat/add/operator/multicast.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { multicast } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.multicast = multicast;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ multicast: typeof multicast;
+ }
+}
diff --git a/compat/add/operator/observeOn.ts b/compat/add/operator/observeOn.ts
new file mode 100644
index 0000000000..dd26d1d65d
--- /dev/null
+++ b/compat/add/operator/observeOn.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { observeOn } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.observeOn = observeOn;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ observeOn: typeof observeOn;
+ }
+}
diff --git a/compat/add/operator/onErrorResumeNext.ts b/compat/add/operator/onErrorResumeNext.ts
new file mode 100644
index 0000000000..219fcfa358
--- /dev/null
+++ b/compat/add/operator/onErrorResumeNext.ts
@@ -0,0 +1,10 @@
+import { Observable } from 'rxjs';
+import { onErrorResumeNext } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.onErrorResumeNext = onErrorResumeNext;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ onErrorResumeNext: typeof onErrorResumeNext;
+ }
+}
diff --git a/compat/add/operator/pairwise.ts b/compat/add/operator/pairwise.ts
new file mode 100644
index 0000000000..934ec2a1c5
--- /dev/null
+++ b/compat/add/operator/pairwise.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { pairwise } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.pairwise = pairwise;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ pairwise: typeof pairwise;
+ }
+}
diff --git a/compat/add/operator/partition.ts b/compat/add/operator/partition.ts
new file mode 100644
index 0000000000..9b0145caaa
--- /dev/null
+++ b/compat/add/operator/partition.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { partition } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.partition = partition;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ partition: typeof partition;
+ }
+}
diff --git a/compat/add/operator/pluck.ts b/compat/add/operator/pluck.ts
new file mode 100644
index 0000000000..d711f5de72
--- /dev/null
+++ b/compat/add/operator/pluck.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { pluck } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.pluck = pluck;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ pluck: typeof pluck;
+ }
+}
diff --git a/compat/add/operator/publish.ts b/compat/add/operator/publish.ts
new file mode 100644
index 0000000000..6bb9775155
--- /dev/null
+++ b/compat/add/operator/publish.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { publish } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.publish = publish;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ publish: typeof publish;
+ }
+}
diff --git a/compat/add/operator/publishBehavior.ts b/compat/add/operator/publishBehavior.ts
new file mode 100644
index 0000000000..9b19f6e6f5
--- /dev/null
+++ b/compat/add/operator/publishBehavior.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { publishBehavior } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.publishBehavior = publishBehavior;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ publishBehavior: typeof publishBehavior;
+ }
+}
diff --git a/compat/add/operator/publishLast.ts b/compat/add/operator/publishLast.ts
new file mode 100644
index 0000000000..50c1de821d
--- /dev/null
+++ b/compat/add/operator/publishLast.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { publishLast } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.publishLast = publishLast;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ publishLast: typeof publishLast;
+ }
+}
diff --git a/compat/add/operator/publishReplay.ts b/compat/add/operator/publishReplay.ts
new file mode 100644
index 0000000000..868ba64a48
--- /dev/null
+++ b/compat/add/operator/publishReplay.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { publishReplay } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.publishReplay = publishReplay;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ publishReplay: typeof publishReplay;
+ }
+}
diff --git a/compat/add/operator/race.ts b/compat/add/operator/race.ts
new file mode 100644
index 0000000000..bf078b2253
--- /dev/null
+++ b/compat/add/operator/race.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { race } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.race = race;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ race: typeof race;
+ }
+}
diff --git a/compat/add/operator/reduce.ts b/compat/add/operator/reduce.ts
new file mode 100644
index 0000000000..2cef7c6ae8
--- /dev/null
+++ b/compat/add/operator/reduce.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { reduce } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.reduce = reduce;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ reduce: typeof reduce;
+ }
+}
diff --git a/compat/add/operator/repeat.ts b/compat/add/operator/repeat.ts
new file mode 100644
index 0000000000..d5fcc91a53
--- /dev/null
+++ b/compat/add/operator/repeat.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { repeat } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.repeat = repeat;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ repeat: typeof repeat;
+ }
+}
diff --git a/compat/add/operator/repeatWhen.ts b/compat/add/operator/repeatWhen.ts
new file mode 100644
index 0000000000..4ce9bbf59c
--- /dev/null
+++ b/compat/add/operator/repeatWhen.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { repeatWhen } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.repeatWhen = repeatWhen;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ repeatWhen: typeof repeatWhen;
+ }
+}
diff --git a/compat/add/operator/retry.ts b/compat/add/operator/retry.ts
new file mode 100644
index 0000000000..e303f5388f
--- /dev/null
+++ b/compat/add/operator/retry.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { retry } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.retry = retry;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ retry: typeof retry;
+ }
+}
diff --git a/compat/add/operator/retryWhen.ts b/compat/add/operator/retryWhen.ts
new file mode 100644
index 0000000000..3be6b4ac1b
--- /dev/null
+++ b/compat/add/operator/retryWhen.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { retryWhen } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.retryWhen = retryWhen;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ retryWhen: typeof retryWhen;
+ }
+}
diff --git a/compat/add/operator/sample.ts b/compat/add/operator/sample.ts
new file mode 100644
index 0000000000..b3ca40638c
--- /dev/null
+++ b/compat/add/operator/sample.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { sample } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.sample = sample;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ sample: typeof sample;
+ }
+}
diff --git a/compat/add/operator/sampleTime.ts b/compat/add/operator/sampleTime.ts
new file mode 100644
index 0000000000..4b620d40d5
--- /dev/null
+++ b/compat/add/operator/sampleTime.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { sampleTime } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.sampleTime = sampleTime;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ sampleTime: typeof sampleTime;
+ }
+}
diff --git a/compat/add/operator/scan.ts b/compat/add/operator/scan.ts
new file mode 100644
index 0000000000..8d953a8455
--- /dev/null
+++ b/compat/add/operator/scan.ts
@@ -0,0 +1,12 @@
+
+import { Observable } from 'rxjs';
+
+import { scan } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.scan = scan;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ scan: typeof scan;
+ }
+}
diff --git a/compat/add/operator/sequenceEqual.ts b/compat/add/operator/sequenceEqual.ts
new file mode 100644
index 0000000000..c15cc857c1
--- /dev/null
+++ b/compat/add/operator/sequenceEqual.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { sequenceEqual } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.sequenceEqual = sequenceEqual;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ sequenceEqual: typeof sequenceEqual;
+ }
+}
diff --git a/compat/add/operator/share.ts b/compat/add/operator/share.ts
new file mode 100644
index 0000000000..ca8a84cd47
--- /dev/null
+++ b/compat/add/operator/share.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { share } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.share = share;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ share: typeof share;
+ }
+}
diff --git a/compat/add/operator/shareReplay.ts b/compat/add/operator/shareReplay.ts
new file mode 100644
index 0000000000..ca3ce2cf61
--- /dev/null
+++ b/compat/add/operator/shareReplay.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { shareReplay } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.shareReplay = shareReplay;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ shareReplay: typeof shareReplay;
+ }
+}
diff --git a/compat/add/operator/single.ts b/compat/add/operator/single.ts
new file mode 100644
index 0000000000..908f794d28
--- /dev/null
+++ b/compat/add/operator/single.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { single } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.single = single;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ single: typeof single;
+ }
+}
diff --git a/compat/add/operator/skip.ts b/compat/add/operator/skip.ts
new file mode 100644
index 0000000000..7eb13242a2
--- /dev/null
+++ b/compat/add/operator/skip.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { skip } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.skip = skip;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ skip: typeof skip;
+ }
+}
diff --git a/compat/add/operator/skipLast.ts b/compat/add/operator/skipLast.ts
new file mode 100644
index 0000000000..7906695c5a
--- /dev/null
+++ b/compat/add/operator/skipLast.ts
@@ -0,0 +1,10 @@
+import { Observable } from 'rxjs';
+import { skipLast } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.skipLast = skipLast;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ skipLast: typeof skipLast;
+ }
+}
diff --git a/compat/add/operator/skipUntil.ts b/compat/add/operator/skipUntil.ts
new file mode 100644
index 0000000000..5e43b0a312
--- /dev/null
+++ b/compat/add/operator/skipUntil.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { skipUntil } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.skipUntil = skipUntil;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ skipUntil: typeof skipUntil;
+ }
+}
diff --git a/compat/add/operator/skipWhile.ts b/compat/add/operator/skipWhile.ts
new file mode 100644
index 0000000000..9b4317e0db
--- /dev/null
+++ b/compat/add/operator/skipWhile.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { skipWhile } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.skipWhile = skipWhile;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ skipWhile: typeof skipWhile;
+ }
+}
diff --git a/compat/add/operator/startWith.ts b/compat/add/operator/startWith.ts
new file mode 100644
index 0000000000..31b5fbfaed
--- /dev/null
+++ b/compat/add/operator/startWith.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { startWith } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.startWith = startWith;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ startWith: typeof startWith;
+ }
+}
diff --git a/compat/add/operator/subscribeOn.ts b/compat/add/operator/subscribeOn.ts
new file mode 100644
index 0000000000..bb13365ed3
--- /dev/null
+++ b/compat/add/operator/subscribeOn.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { subscribeOn } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.subscribeOn = subscribeOn;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ subscribeOn: typeof subscribeOn;
+ }
+}
diff --git a/compat/add/operator/switch.ts b/compat/add/operator/switch.ts
new file mode 100644
index 0000000000..e87c0d23c0
--- /dev/null
+++ b/compat/add/operator/switch.ts
@@ -0,0 +1,13 @@
+
+import { Observable } from 'rxjs';
+import { _switch } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.switch = _switch;
+(Observable as any).prototype._switch = _switch;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ switch: typeof _switch;
+ _switch: typeof _switch;
+ }
+}
diff --git a/compat/add/operator/switchMap.ts b/compat/add/operator/switchMap.ts
new file mode 100644
index 0000000000..575d599844
--- /dev/null
+++ b/compat/add/operator/switchMap.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { switchMap } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.switchMap = switchMap;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ switchMap: typeof switchMap;
+ }
+}
diff --git a/compat/add/operator/switchMapTo.ts b/compat/add/operator/switchMapTo.ts
new file mode 100644
index 0000000000..feb37063e8
--- /dev/null
+++ b/compat/add/operator/switchMapTo.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { switchMapTo } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.switchMapTo = switchMapTo;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ switchMapTo: typeof switchMapTo;
+ }
+}
diff --git a/compat/add/operator/take.ts b/compat/add/operator/take.ts
new file mode 100644
index 0000000000..80556936fe
--- /dev/null
+++ b/compat/add/operator/take.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { take } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.take = take;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ take: typeof take;
+ }
+}
diff --git a/compat/add/operator/takeLast.ts b/compat/add/operator/takeLast.ts
new file mode 100644
index 0000000000..3d7e4dca62
--- /dev/null
+++ b/compat/add/operator/takeLast.ts
@@ -0,0 +1,10 @@
+import { Observable } from 'rxjs';
+import { takeLast } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.takeLast = takeLast;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ takeLast: typeof takeLast;
+ }
+}
diff --git a/compat/add/operator/takeUntil.ts b/compat/add/operator/takeUntil.ts
new file mode 100644
index 0000000000..53ebd96bef
--- /dev/null
+++ b/compat/add/operator/takeUntil.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { takeUntil } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.takeUntil = takeUntil;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ takeUntil: typeof takeUntil;
+ }
+}
diff --git a/compat/add/operator/takeWhile.ts b/compat/add/operator/takeWhile.ts
new file mode 100644
index 0000000000..6cdb3ebee2
--- /dev/null
+++ b/compat/add/operator/takeWhile.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { takeWhile } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.takeWhile = takeWhile;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ takeWhile: typeof takeWhile;
+ }
+}
diff --git a/compat/add/operator/throttle.ts b/compat/add/operator/throttle.ts
new file mode 100644
index 0000000000..cbb762e4ed
--- /dev/null
+++ b/compat/add/operator/throttle.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { throttle } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.throttle = throttle;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ throttle: typeof throttle;
+ }
+}
diff --git a/compat/add/operator/throttleTime.ts b/compat/add/operator/throttleTime.ts
new file mode 100644
index 0000000000..ec147166e4
--- /dev/null
+++ b/compat/add/operator/throttleTime.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { throttleTime } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.throttleTime = throttleTime;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ throttleTime: typeof throttleTime;
+ }
+}
diff --git a/compat/add/operator/timeInterval.ts b/compat/add/operator/timeInterval.ts
new file mode 100644
index 0000000000..3e2a981cde
--- /dev/null
+++ b/compat/add/operator/timeInterval.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { timeInterval } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.timeInterval = timeInterval;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ timeInterval: typeof timeInterval;
+ }
+}
diff --git a/compat/add/operator/timeout.ts b/compat/add/operator/timeout.ts
new file mode 100644
index 0000000000..f06a4540c4
--- /dev/null
+++ b/compat/add/operator/timeout.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { timeout } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.timeout = timeout;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ timeout: typeof timeout;
+ }
+}
diff --git a/compat/add/operator/timeoutWith.ts b/compat/add/operator/timeoutWith.ts
new file mode 100644
index 0000000000..9b8e98bfcf
--- /dev/null
+++ b/compat/add/operator/timeoutWith.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { timeoutWith } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.timeoutWith = timeoutWith;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ timeoutWith: typeof timeoutWith;
+ }
+}
diff --git a/compat/add/operator/timestamp.ts b/compat/add/operator/timestamp.ts
new file mode 100644
index 0000000000..f2133e6ffc
--- /dev/null
+++ b/compat/add/operator/timestamp.ts
@@ -0,0 +1,10 @@
+import { Observable } from 'rxjs';
+import { timestamp } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.timestamp = timestamp;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ timestamp: typeof timestamp;
+ }
+}
diff --git a/compat/add/operator/toArray.ts b/compat/add/operator/toArray.ts
new file mode 100644
index 0000000000..8c340f5387
--- /dev/null
+++ b/compat/add/operator/toArray.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { toArray } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.toArray = toArray;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ toArray: typeof toArray;
+ }
+}
diff --git a/src/add/operator/toPromise.ts b/compat/add/operator/toPromise.ts
similarity index 100%
rename from src/add/operator/toPromise.ts
rename to compat/add/operator/toPromise.ts
diff --git a/compat/add/operator/window.ts b/compat/add/operator/window.ts
new file mode 100644
index 0000000000..1562968ee8
--- /dev/null
+++ b/compat/add/operator/window.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { window } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.window = window;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ window: typeof window;
+ }
+}
diff --git a/compat/add/operator/windowCount.ts b/compat/add/operator/windowCount.ts
new file mode 100644
index 0000000000..eb13cab38d
--- /dev/null
+++ b/compat/add/operator/windowCount.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { windowCount } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.windowCount = windowCount;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ windowCount: typeof windowCount;
+ }
+}
diff --git a/compat/add/operator/windowTime.ts b/compat/add/operator/windowTime.ts
new file mode 100644
index 0000000000..88dafbc7ff
--- /dev/null
+++ b/compat/add/operator/windowTime.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { windowTime } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.windowTime = windowTime;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ windowTime: typeof windowTime;
+ }
+}
diff --git a/compat/add/operator/windowToggle.ts b/compat/add/operator/windowToggle.ts
new file mode 100644
index 0000000000..722c1f2b5b
--- /dev/null
+++ b/compat/add/operator/windowToggle.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { windowToggle } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.windowToggle = windowToggle;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ windowToggle: typeof windowToggle;
+ }
+}
diff --git a/compat/add/operator/windowWhen.ts b/compat/add/operator/windowWhen.ts
new file mode 100644
index 0000000000..0e3e3261ff
--- /dev/null
+++ b/compat/add/operator/windowWhen.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { windowWhen } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.windowWhen = windowWhen;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ windowWhen: typeof windowWhen;
+ }
+}
diff --git a/compat/add/operator/withLatestFrom.ts b/compat/add/operator/withLatestFrom.ts
new file mode 100644
index 0000000000..59aa8f5e0c
--- /dev/null
+++ b/compat/add/operator/withLatestFrom.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { withLatestFrom } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.withLatestFrom = withLatestFrom;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ withLatestFrom: typeof withLatestFrom;
+ }
+}
diff --git a/compat/add/operator/zip.ts b/compat/add/operator/zip.ts
new file mode 100644
index 0000000000..e3fd280094
--- /dev/null
+++ b/compat/add/operator/zip.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { zipProto } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.zip = zipProto;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ zip: typeof zipProto;
+ }
+}
diff --git a/compat/add/operator/zipAll.ts b/compat/add/operator/zipAll.ts
new file mode 100644
index 0000000000..19480c1638
--- /dev/null
+++ b/compat/add/operator/zipAll.ts
@@ -0,0 +1,11 @@
+
+import { Observable } from 'rxjs';
+import { zipAll } from 'rxjs/internal-compatibility';
+
+(Observable as any).prototype.zipAll = zipAll;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ zipAll: typeof zipAll;
+ }
+}
diff --git a/compat/index.ts b/compat/index.ts
new file mode 100644
index 0000000000..20522faff7
--- /dev/null
+++ b/compat/index.ts
@@ -0,0 +1,2 @@
+
+export * from './Rx';
diff --git a/compat/observable/ConnectableObservable.ts b/compat/observable/ConnectableObservable.ts
new file mode 100644
index 0000000000..48c94af1cc
--- /dev/null
+++ b/compat/observable/ConnectableObservable.ts
@@ -0,0 +1 @@
+export { ConnectableObservable } from 'rxjs';
diff --git a/compat/observable/SubscribeOnObservable.ts b/compat/observable/SubscribeOnObservable.ts
new file mode 100644
index 0000000000..c9175d4ba1
--- /dev/null
+++ b/compat/observable/SubscribeOnObservable.ts
@@ -0,0 +1 @@
+export { SubscribeOnObservable } from 'rxjs/internal-compatibility';
diff --git a/compat/observable/bindCallback.ts b/compat/observable/bindCallback.ts
new file mode 100644
index 0000000000..cb385f99e4
--- /dev/null
+++ b/compat/observable/bindCallback.ts
@@ -0,0 +1 @@
+export { bindCallback } from 'rxjs';
diff --git a/compat/observable/bindNodeCallback.ts b/compat/observable/bindNodeCallback.ts
new file mode 100644
index 0000000000..6c8de8d646
--- /dev/null
+++ b/compat/observable/bindNodeCallback.ts
@@ -0,0 +1 @@
+export { bindNodeCallback } from 'rxjs';
diff --git a/compat/observable/combineLatest.ts b/compat/observable/combineLatest.ts
new file mode 100644
index 0000000000..cf31f18105
--- /dev/null
+++ b/compat/observable/combineLatest.ts
@@ -0,0 +1 @@
+export { combineLatest } from 'rxjs';
diff --git a/compat/observable/concat.ts b/compat/observable/concat.ts
new file mode 100644
index 0000000000..7980da4884
--- /dev/null
+++ b/compat/observable/concat.ts
@@ -0,0 +1 @@
+export { concat } from 'rxjs';
diff --git a/compat/observable/defer.ts b/compat/observable/defer.ts
new file mode 100644
index 0000000000..fdc3cef98d
--- /dev/null
+++ b/compat/observable/defer.ts
@@ -0,0 +1 @@
+export { defer } from 'rxjs';
diff --git a/compat/observable/empty.ts b/compat/observable/empty.ts
new file mode 100644
index 0000000000..f4e2468d7c
--- /dev/null
+++ b/compat/observable/empty.ts
@@ -0,0 +1 @@
+export { empty } from 'rxjs';
diff --git a/compat/observable/forkJoin.ts b/compat/observable/forkJoin.ts
new file mode 100644
index 0000000000..91e77b0cf8
--- /dev/null
+++ b/compat/observable/forkJoin.ts
@@ -0,0 +1 @@
+export { forkJoin } from 'rxjs';
diff --git a/compat/observable/from.ts b/compat/observable/from.ts
new file mode 100644
index 0000000000..d3b18dd937
--- /dev/null
+++ b/compat/observable/from.ts
@@ -0,0 +1 @@
+export { from } from 'rxjs';
diff --git a/compat/observable/fromArray.ts b/compat/observable/fromArray.ts
new file mode 100644
index 0000000000..16b338f283
--- /dev/null
+++ b/compat/observable/fromArray.ts
@@ -0,0 +1 @@
+export { from as fromArray } from 'rxjs';
diff --git a/compat/observable/fromEvent.ts b/compat/observable/fromEvent.ts
new file mode 100644
index 0000000000..3d63d9efb0
--- /dev/null
+++ b/compat/observable/fromEvent.ts
@@ -0,0 +1 @@
+export { fromEvent } from 'rxjs';
diff --git a/compat/observable/fromEventPattern.ts b/compat/observable/fromEventPattern.ts
new file mode 100644
index 0000000000..9746a4e71f
--- /dev/null
+++ b/compat/observable/fromEventPattern.ts
@@ -0,0 +1 @@
+export { fromEventPattern } from 'rxjs';
diff --git a/compat/observable/fromIterable.ts b/compat/observable/fromIterable.ts
new file mode 100644
index 0000000000..026b809bd2
--- /dev/null
+++ b/compat/observable/fromIterable.ts
@@ -0,0 +1 @@
+export { fromIterable } from 'rxjs/internal-compatibility';
diff --git a/compat/observable/fromObservable.ts b/compat/observable/fromObservable.ts
new file mode 100644
index 0000000000..9959665ed0
--- /dev/null
+++ b/compat/observable/fromObservable.ts
@@ -0,0 +1 @@
+export { from as fromObservable } from 'rxjs';
diff --git a/compat/observable/fromPromise.ts b/compat/observable/fromPromise.ts
new file mode 100644
index 0000000000..bcb38f4bcb
--- /dev/null
+++ b/compat/observable/fromPromise.ts
@@ -0,0 +1 @@
+export { from as fromPromise } from 'rxjs';
diff --git a/compat/observable/generate.ts b/compat/observable/generate.ts
new file mode 100644
index 0000000000..aae6ad6176
--- /dev/null
+++ b/compat/observable/generate.ts
@@ -0,0 +1 @@
+export { generate } from 'rxjs';
diff --git a/compat/observable/if.ts b/compat/observable/if.ts
new file mode 100644
index 0000000000..00c2fe91ce
--- /dev/null
+++ b/compat/observable/if.ts
@@ -0,0 +1 @@
+export { iif as _if } from 'rxjs';
diff --git a/compat/observable/interval.ts b/compat/observable/interval.ts
new file mode 100644
index 0000000000..d78563f5b2
--- /dev/null
+++ b/compat/observable/interval.ts
@@ -0,0 +1 @@
+export { interval } from 'rxjs';
diff --git a/compat/observable/merge.ts b/compat/observable/merge.ts
new file mode 100644
index 0000000000..2644a9abb1
--- /dev/null
+++ b/compat/observable/merge.ts
@@ -0,0 +1 @@
+export { merge } from 'rxjs';
diff --git a/compat/observable/never.ts b/compat/observable/never.ts
new file mode 100644
index 0000000000..590495837f
--- /dev/null
+++ b/compat/observable/never.ts
@@ -0,0 +1,5 @@
+import { Observable, NEVER } from 'rxjs';
+
+export function never () {
+ return NEVER;
+}
\ No newline at end of file
diff --git a/compat/observable/of.ts b/compat/observable/of.ts
new file mode 100644
index 0000000000..092962f422
--- /dev/null
+++ b/compat/observable/of.ts
@@ -0,0 +1 @@
+export { of } from 'rxjs';
diff --git a/compat/observable/onErrorResumeNext.ts b/compat/observable/onErrorResumeNext.ts
new file mode 100644
index 0000000000..03134df22f
--- /dev/null
+++ b/compat/observable/onErrorResumeNext.ts
@@ -0,0 +1 @@
+export { onErrorResumeNext } from 'rxjs';
diff --git a/compat/observable/pairs.ts b/compat/observable/pairs.ts
new file mode 100644
index 0000000000..71d39cacf4
--- /dev/null
+++ b/compat/observable/pairs.ts
@@ -0,0 +1 @@
+export { pairs } from 'rxjs';
diff --git a/compat/observable/race.ts b/compat/observable/race.ts
new file mode 100644
index 0000000000..5b7f0e4e89
--- /dev/null
+++ b/compat/observable/race.ts
@@ -0,0 +1 @@
+export { race } from 'rxjs';
diff --git a/compat/observable/range.ts b/compat/observable/range.ts
new file mode 100644
index 0000000000..be9c2f48f4
--- /dev/null
+++ b/compat/observable/range.ts
@@ -0,0 +1,2 @@
+export { range } from 'rxjs';
+export { dispatch } from 'rxjs/internal-compatibility';
diff --git a/compat/observable/scalar.ts b/compat/observable/scalar.ts
new file mode 100644
index 0000000000..23cd3d7181
--- /dev/null
+++ b/compat/observable/scalar.ts
@@ -0,0 +1 @@
+export { scalar } from 'rxjs/internal-compatibility';
diff --git a/compat/observable/throw.ts b/compat/observable/throw.ts
new file mode 100644
index 0000000000..334241724d
--- /dev/null
+++ b/compat/observable/throw.ts
@@ -0,0 +1 @@
+export { throwError as _throw } from 'rxjs';
diff --git a/compat/observable/timer.ts b/compat/observable/timer.ts
new file mode 100644
index 0000000000..7a5a8e0376
--- /dev/null
+++ b/compat/observable/timer.ts
@@ -0,0 +1 @@
+export { timer } from 'rxjs';
diff --git a/compat/observable/using.ts b/compat/observable/using.ts
new file mode 100644
index 0000000000..2970164f19
--- /dev/null
+++ b/compat/observable/using.ts
@@ -0,0 +1 @@
+export { using } from 'rxjs';
diff --git a/compat/observable/zip.ts b/compat/observable/zip.ts
new file mode 100644
index 0000000000..f1089a8fd3
--- /dev/null
+++ b/compat/observable/zip.ts
@@ -0,0 +1 @@
+export { zip } from 'rxjs';
diff --git a/compat/operators/audit.ts b/compat/operators/audit.ts
new file mode 100644
index 0000000000..7abb90bb25
--- /dev/null
+++ b/compat/operators/audit.ts
@@ -0,0 +1 @@
+export { audit } from 'rxjs/operators';
diff --git a/compat/operators/auditTime.ts b/compat/operators/auditTime.ts
new file mode 100644
index 0000000000..78a10a7af4
--- /dev/null
+++ b/compat/operators/auditTime.ts
@@ -0,0 +1 @@
+export { auditTime } from 'rxjs/operators';
diff --git a/compat/operators/buffer.ts b/compat/operators/buffer.ts
new file mode 100644
index 0000000000..de67cdebeb
--- /dev/null
+++ b/compat/operators/buffer.ts
@@ -0,0 +1 @@
+export { buffer } from 'rxjs/operators';
diff --git a/compat/operators/bufferCount.ts b/compat/operators/bufferCount.ts
new file mode 100644
index 0000000000..190aa7f21f
--- /dev/null
+++ b/compat/operators/bufferCount.ts
@@ -0,0 +1 @@
+export { bufferCount } from 'rxjs/operators';
diff --git a/compat/operators/bufferTime.ts b/compat/operators/bufferTime.ts
new file mode 100644
index 0000000000..bd075a61db
--- /dev/null
+++ b/compat/operators/bufferTime.ts
@@ -0,0 +1 @@
+export { bufferTime } from 'rxjs/operators';
diff --git a/compat/operators/bufferToggle.ts b/compat/operators/bufferToggle.ts
new file mode 100644
index 0000000000..a40add90cf
--- /dev/null
+++ b/compat/operators/bufferToggle.ts
@@ -0,0 +1 @@
+export { bufferToggle } from 'rxjs/operators';
diff --git a/compat/operators/bufferWhen.ts b/compat/operators/bufferWhen.ts
new file mode 100644
index 0000000000..03a2fb7bba
--- /dev/null
+++ b/compat/operators/bufferWhen.ts
@@ -0,0 +1 @@
+export { bufferWhen } from 'rxjs/operators';
diff --git a/compat/operators/catchError.ts b/compat/operators/catchError.ts
new file mode 100644
index 0000000000..7e16ee9e4c
--- /dev/null
+++ b/compat/operators/catchError.ts
@@ -0,0 +1 @@
+export { catchError } from 'rxjs/operators';
diff --git a/compat/operators/combineAll.ts b/compat/operators/combineAll.ts
new file mode 100644
index 0000000000..d1072c6f3a
--- /dev/null
+++ b/compat/operators/combineAll.ts
@@ -0,0 +1 @@
+export { combineAll } from 'rxjs/operators';
diff --git a/compat/operators/combineLatest.ts b/compat/operators/combineLatest.ts
new file mode 100644
index 0000000000..023f201d11
--- /dev/null
+++ b/compat/operators/combineLatest.ts
@@ -0,0 +1,39 @@
+
+import { isArray, CombineLatestOperator } from 'rxjs/internal-compatibility';
+import { Observable, ObservableInput, Operator, OperatorFunction, from } from 'rxjs';
+
+const none = {};
+
+/* tslint:disable:max-line-length */
+export function combineLatest(project: (v1: T) => R): OperatorFunction;
+export function combineLatest(v2: ObservableInput, project: (v1: T, v2: T2) => R): OperatorFunction;
+export function combineLatest(v2: ObservableInput, v3: ObservableInput, project: (v1: T, v2: T2, v3: T3) => R): OperatorFunction;
+export function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4) => R): OperatorFunction;
+export function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5) => R): OperatorFunction;
+export function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, project: (v1: T, v2: T2, v3: T3, v4: T4, v5: T5, v6: T6) => R): OperatorFunction ;
+export function combineLatest(v2: ObservableInput): OperatorFunction;
+export function combineLatest(v2: ObservableInput, v3: ObservableInput): OperatorFunction;
+export function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): OperatorFunction;
+export function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): OperatorFunction;
+export function combineLatest(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): OperatorFunction ;
+export function combineLatest(...observables: Array | ((...values: Array) => R)>): OperatorFunction;
+export function combineLatest(array: ObservableInput[]): OperatorFunction>;
+export function combineLatest(array: ObservableInput[], project: (v1: T, ...values: Array) => R): OperatorFunction;
+/* tslint:enable:max-line-length */
+
+export function combineLatest(...observables: Array |
+ Array> |
+ ((...values: Array) => R)>): OperatorFunction {
+ let project: (...values: Array) => R = null;
+ if (typeof observables[observables.length - 1] === 'function') {
+ project = <(...values: Array) => R>observables.pop();
+ }
+
+ // if the first and only other argument besides the resultSelector is an array
+ // assume it's been called with `combineLatest([obs1, obs2, obs3], project)`
+ if (observables.length === 1 && isArray(observables[0])) {
+ observables = (observables[0]).slice();
+ }
+
+ return (source: Observable) => source.lift.call(from([source, ...observables]), new CombineLatestOperator(project));
+}
diff --git a/compat/operators/concat.ts b/compat/operators/concat.ts
new file mode 100644
index 0000000000..2fb1fd3e2e
--- /dev/null
+++ b/compat/operators/concat.ts
@@ -0,0 +1,16 @@
+import { concat as concatStatic, Observable, ObservableInput, OperatorFunction, MonoTypeOperatorFunction, SchedulerLike } from 'rxjs';
+
+/* tslint:disable:max-line-length */
+export function concat(scheduler?: SchedulerLike): MonoTypeOperatorFunction;
+export function concat(v2: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;
+export function concat(v2: ObservableInput, v3: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;
+export function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;
+export function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;
+export function concat(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;
+export function concat(...observables: Array | SchedulerLike>): MonoTypeOperatorFunction;
+export function concat(...observables: Array | SchedulerLike>): OperatorFunction;
+/* tslint:enable:max-line-length */
+
+export function concat(...observables: Array | SchedulerLike>): OperatorFunction {
+ return (source: Observable) => source.lift.call(concatStatic(source, ...observables));
+}
diff --git a/compat/operators/concatAll.ts b/compat/operators/concatAll.ts
new file mode 100644
index 0000000000..6206015ecb
--- /dev/null
+++ b/compat/operators/concatAll.ts
@@ -0,0 +1 @@
+export { concatAll } from 'rxjs/operators';
diff --git a/compat/operators/concatMap.ts b/compat/operators/concatMap.ts
new file mode 100644
index 0000000000..db74df7722
--- /dev/null
+++ b/compat/operators/concatMap.ts
@@ -0,0 +1 @@
+export { concatMap } from 'rxjs/operators';
diff --git a/compat/operators/concatMapTo.ts b/compat/operators/concatMapTo.ts
new file mode 100644
index 0000000000..c5e8d7042e
--- /dev/null
+++ b/compat/operators/concatMapTo.ts
@@ -0,0 +1 @@
+export { concatMapTo } from 'rxjs/operators';
diff --git a/compat/operators/count.ts b/compat/operators/count.ts
new file mode 100644
index 0000000000..7812fe622e
--- /dev/null
+++ b/compat/operators/count.ts
@@ -0,0 +1 @@
+export { count } from 'rxjs/operators';
diff --git a/compat/operators/debounce.ts b/compat/operators/debounce.ts
new file mode 100644
index 0000000000..d887d2b210
--- /dev/null
+++ b/compat/operators/debounce.ts
@@ -0,0 +1 @@
+export { debounce } from 'rxjs/operators';
diff --git a/compat/operators/debounceTime.ts b/compat/operators/debounceTime.ts
new file mode 100644
index 0000000000..c0eb6c244c
--- /dev/null
+++ b/compat/operators/debounceTime.ts
@@ -0,0 +1 @@
+export { debounceTime } from 'rxjs/operators';
diff --git a/compat/operators/defaultIfEmpty.ts b/compat/operators/defaultIfEmpty.ts
new file mode 100644
index 0000000000..059d0786e1
--- /dev/null
+++ b/compat/operators/defaultIfEmpty.ts
@@ -0,0 +1 @@
+export { defaultIfEmpty } from 'rxjs/operators';
diff --git a/compat/operators/delay.ts b/compat/operators/delay.ts
new file mode 100644
index 0000000000..81cdbba946
--- /dev/null
+++ b/compat/operators/delay.ts
@@ -0,0 +1 @@
+export { delay } from 'rxjs/operators';
diff --git a/compat/operators/delayWhen.ts b/compat/operators/delayWhen.ts
new file mode 100644
index 0000000000..1641efce75
--- /dev/null
+++ b/compat/operators/delayWhen.ts
@@ -0,0 +1 @@
+export { delayWhen } from 'rxjs/operators';
diff --git a/compat/operators/dematerialize.ts b/compat/operators/dematerialize.ts
new file mode 100644
index 0000000000..367cfa9703
--- /dev/null
+++ b/compat/operators/dematerialize.ts
@@ -0,0 +1 @@
+export { dematerialize } from 'rxjs/operators';
diff --git a/compat/operators/distinct.ts b/compat/operators/distinct.ts
new file mode 100644
index 0000000000..88d5471f19
--- /dev/null
+++ b/compat/operators/distinct.ts
@@ -0,0 +1 @@
+export { distinct } from 'rxjs/operators';
diff --git a/compat/operators/distinctUntilChanged.ts b/compat/operators/distinctUntilChanged.ts
new file mode 100644
index 0000000000..1642098136
--- /dev/null
+++ b/compat/operators/distinctUntilChanged.ts
@@ -0,0 +1 @@
+export { distinctUntilChanged } from 'rxjs/operators';
diff --git a/compat/operators/distinctUntilKeyChanged.ts b/compat/operators/distinctUntilKeyChanged.ts
new file mode 100644
index 0000000000..72a6dcd284
--- /dev/null
+++ b/compat/operators/distinctUntilKeyChanged.ts
@@ -0,0 +1 @@
+export { distinctUntilKeyChanged } from 'rxjs/operators';
diff --git a/compat/operators/elementAt.ts b/compat/operators/elementAt.ts
new file mode 100644
index 0000000000..2cabdb1991
--- /dev/null
+++ b/compat/operators/elementAt.ts
@@ -0,0 +1 @@
+export { elementAt } from 'rxjs/operators';
diff --git a/compat/operators/every.ts b/compat/operators/every.ts
new file mode 100644
index 0000000000..444dcd7e3f
--- /dev/null
+++ b/compat/operators/every.ts
@@ -0,0 +1 @@
+export { every } from 'rxjs/operators';
diff --git a/compat/operators/exhaust.ts b/compat/operators/exhaust.ts
new file mode 100644
index 0000000000..c3b0ee894d
--- /dev/null
+++ b/compat/operators/exhaust.ts
@@ -0,0 +1 @@
+export { exhaust } from 'rxjs/operators';
diff --git a/compat/operators/exhaustMap.ts b/compat/operators/exhaustMap.ts
new file mode 100644
index 0000000000..bd53120eb7
--- /dev/null
+++ b/compat/operators/exhaustMap.ts
@@ -0,0 +1 @@
+export { exhaustMap } from 'rxjs/operators';
diff --git a/compat/operators/expand.ts b/compat/operators/expand.ts
new file mode 100644
index 0000000000..b1db5c52f8
--- /dev/null
+++ b/compat/operators/expand.ts
@@ -0,0 +1 @@
+export { expand } from 'rxjs/operators';
diff --git a/compat/operators/filter.ts b/compat/operators/filter.ts
new file mode 100644
index 0000000000..c7b48e9735
--- /dev/null
+++ b/compat/operators/filter.ts
@@ -0,0 +1 @@
+export { filter } from 'rxjs/operators';
diff --git a/compat/operators/finalize.ts b/compat/operators/finalize.ts
new file mode 100644
index 0000000000..01edcc7378
--- /dev/null
+++ b/compat/operators/finalize.ts
@@ -0,0 +1 @@
+export { finalize } from 'rxjs/operators';
diff --git a/compat/operators/find.ts b/compat/operators/find.ts
new file mode 100644
index 0000000000..1d5ad45adf
--- /dev/null
+++ b/compat/operators/find.ts
@@ -0,0 +1 @@
+export { find } from 'rxjs/operators';
diff --git a/compat/operators/findIndex.ts b/compat/operators/findIndex.ts
new file mode 100644
index 0000000000..ca010da223
--- /dev/null
+++ b/compat/operators/findIndex.ts
@@ -0,0 +1 @@
+export { findIndex } from 'rxjs/operators';
diff --git a/compat/operators/first.ts b/compat/operators/first.ts
new file mode 100644
index 0000000000..324ad42221
--- /dev/null
+++ b/compat/operators/first.ts
@@ -0,0 +1 @@
+export { first } from 'rxjs/operators';
diff --git a/compat/operators/groupBy.ts b/compat/operators/groupBy.ts
new file mode 100644
index 0000000000..a577a9e84d
--- /dev/null
+++ b/compat/operators/groupBy.ts
@@ -0,0 +1,2 @@
+export { groupBy } from 'rxjs/operators';
+export { GroupedObservable } from 'rxjs/internal-compatibility';
diff --git a/compat/operators/ignoreElements.ts b/compat/operators/ignoreElements.ts
new file mode 100644
index 0000000000..db1ecd63ef
--- /dev/null
+++ b/compat/operators/ignoreElements.ts
@@ -0,0 +1 @@
+export { ignoreElements } from 'rxjs/operators';
diff --git a/compat/operators/isEmpty.ts b/compat/operators/isEmpty.ts
new file mode 100644
index 0000000000..fc632aed8f
--- /dev/null
+++ b/compat/operators/isEmpty.ts
@@ -0,0 +1 @@
+export { isEmpty } from 'rxjs/operators';
diff --git a/compat/operators/last.ts b/compat/operators/last.ts
new file mode 100644
index 0000000000..9c506613db
--- /dev/null
+++ b/compat/operators/last.ts
@@ -0,0 +1 @@
+export { last } from 'rxjs/operators';
diff --git a/compat/operators/map.ts b/compat/operators/map.ts
new file mode 100644
index 0000000000..ea79f28aac
--- /dev/null
+++ b/compat/operators/map.ts
@@ -0,0 +1 @@
+export { map } from 'rxjs/operators';
diff --git a/compat/operators/mapTo.ts b/compat/operators/mapTo.ts
new file mode 100644
index 0000000000..0f3b36096d
--- /dev/null
+++ b/compat/operators/mapTo.ts
@@ -0,0 +1 @@
+export { mapTo } from 'rxjs/operators';
diff --git a/compat/operators/materialize.ts b/compat/operators/materialize.ts
new file mode 100644
index 0000000000..f7d0b931f1
--- /dev/null
+++ b/compat/operators/materialize.ts
@@ -0,0 +1 @@
+export { materialize } from 'rxjs/operators';
diff --git a/compat/operators/max.ts b/compat/operators/max.ts
new file mode 100644
index 0000000000..fc3eca301f
--- /dev/null
+++ b/compat/operators/max.ts
@@ -0,0 +1 @@
+export { max } from 'rxjs/operators';
diff --git a/compat/operators/merge.ts b/compat/operators/merge.ts
new file mode 100644
index 0000000000..320971d29d
--- /dev/null
+++ b/compat/operators/merge.ts
@@ -0,0 +1,22 @@
+import { merge as mergeStatic, Observable, ObservableInput, OperatorFunction, MonoTypeOperatorFunction, SchedulerLike } from 'rxjs';
+
+/* tslint:disable:max-line-length */
+export function merge(scheduler?: SchedulerLike): MonoTypeOperatorFunction;
+export function merge(concurrent?: number, scheduler?: SchedulerLike): MonoTypeOperatorFunction;
+export function merge(v2: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;
+export function merge(v2: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;
+export function merge(v2: ObservableInput, v3: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;
+export function merge(v2: ObservableInput, v3: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;
+export function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, scheduler?: SchedulerLike): OperatorFunction;
+export function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, concurrent?: number, scheduler?: SchedulerLike): OperatorFunction;
+export function merge(v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, scheduler?: SchedulerLike): OperatorFunction