diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md
new file mode 100644
index 0000000000..0f772bd72b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug_report.md
@@ -0,0 +1,32 @@
+---
+name: Bug report
+about: If rxjs does not behave as expected
+
+---
+
+## Bug Report
+
+**Current Behavior**
+A clear and concise description of the behavior.
+
+**Reproduction**
+- REPL or Repo link:
+(you can use https://stackblitz.com/ to create one to attach here)
+
+```js
+var your => (code) => here;
+```
+
+**Expected behavior**
+A clear and concise description of what you expected to happen (or code).
+
+**Environment**
+- Runtime: [e.g. Node v${x}, Chrome v${x}]
+- RxJS version:
+- (If bug is related) Loader, build configuration: [e.g webpack, angular-cli version, config]
+
+**Possible Solution**
+
+
+**Additional context/Screenshots**
+Add any other context about the problem here. If applicable, add screenshots to help explain.
diff --git a/.github/ISSUE_TEMPLATE/documentation.md b/.github/ISSUE_TEMPLATE/documentation.md
new file mode 100644
index 0000000000..416f640df7
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/documentation.md
@@ -0,0 +1,21 @@
+---
+name: Documentation
+about: Issues around documentation
+
+---
+
+### Documentation Related To Component:
+
+
+
+### Please check those that apply
+
+- [ ] typo
+- [ ] documentation doesn't exist
+- [ ] documentation needs clarification
+- [ ] error(s) in example
+- [ ] needs example
+
+### Description Of The Issue
+
+
diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md
new file mode 100644
index 0000000000..33ccca8481
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/feature_request.md
@@ -0,0 +1,24 @@
+---
+name: Feature request
+about: Suggest new operator or features
+
+---
+
+## Feature Request
+
+With pipable operator, RxJS strongly recommends to create new features via pipable function and publish it as user-land module. If this feature request is
+
+**Is your feature request related to a problem? Please describe.**
+A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
+
+**Describe the solution you'd like**
+A clear and concise description of what you want to happen.
+
+**Describe alternatives you've considered**
+A clear and concise description of any alternative solutions or features you've considered.
+
+**(If this is new operator request) describe reason it should be core operator**
+A clear and concise description of reason it can't be achieved via user-land module.
+
+**Additional context**
+Add any other context or screenshots about the feature request here.
diff --git a/.github/ISSUE_TEMPLATE/support-question.md b/.github/ISSUE_TEMPLATE/support-question.md
new file mode 100644
index 0000000000..a8be516687
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/support-question.md
@@ -0,0 +1,14 @@
+---
+name: Support Question
+about: 'If you have a question, please check out our StackOverflow! '
+
+---
+
+We primarily use GitHub as an issue tracker; for usage and support questions, please check out these resources below. Thanks!
+
+---
+* StackOverflow: https://stackoverflow.com/questions/tagged/rxjs using the tag `rxjs`
+* Also have a look at the readme for more information, possibly can have some answers already:
+- https://github.com/ReactiveX/rxjs/blob/master/README.md
+- https://github.com/ReactiveX/rxjs/blob/master/MIGRATION.md
+- https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md
diff --git a/.github/lock.yml b/.github/lock.yml
new file mode 100644
index 0000000000..358179155c
--- /dev/null
+++ b/.github/lock.yml
@@ -0,0 +1,25 @@
+# Configuration for lock-threads - https://github.com/dessant/lock-threads
+
+# Number of days of inactivity before a closed issue or pull request is locked
+daysUntilLock: 30
+
+# Issues and pull requests with these labels will not be locked. Set to `[]` to disable
+exemptLabels: []
+
+# Label to add before locking, such as `outdated`. Set to `false` to disable
+lockLabel: false
+
+# Comment to post before locking. Set to `false` to disable
+lockComment: false
+
+# Limit to only `issues` or `pulls`
+# only: issues
+
+# Optionally, specify configuration settings just for `issues` or `pulls`
+# issues:
+# exemptLabels:
+# - help-wanted
+# lockLabel: outdated
+
+# pulls:
+# daysUntilLock: 30
diff --git a/.make-compat-package.js b/.make-compat-package.js
index 345c532b23..b9fb7b288c 100644
--- a/.make-compat-package.js
+++ b/.make-compat-package.js
@@ -18,6 +18,7 @@ const ROOT = 'dist-compat/';
const CJS_ROOT = ROOT + 'cjs/compat/';
const ESM5_ROOT = ROOT + 'esm5/compat/';
const ESM2015_ROOT = ROOT + 'esm2015/compat/';
+const GLOBAL_ROOT = ROOT + 'global/';
const TYPE_ROOT = ROOT + 'typings/compat/';
const PKG_ROOT = ROOT + 'package/';
const CJS_PKG = PKG_ROOT + '';
@@ -43,5 +44,7 @@ copySources(ESM5_ROOT, ESM5_PKG, true);
cleanSourceMapRoot(ESM5_PKG, SRC_ROOT_PKG);
copySources(ESM2015_ROOT, ESM2015_PKG, true);
cleanSourceMapRoot(ESM2015_PKG, SRC_ROOT_PKG);
+copySources(GLOBAL_ROOT, UMD_PKG, true);
+cleanSourceMapRoot(UMD_PKG, SRC_ROOT_PKG);
fs.copySync('compat/package.json', PKG_ROOT + '/package.json');
diff --git a/.npmignore b/.npmignore
index 2a0cda6ff0..15c1529e88 100644
--- a/.npmignore
+++ b/.npmignore
@@ -4,3 +4,4 @@ spec
yarn.lock
coverage
typings/
+docs_app
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
index 909e225cb8..fb5434fd15 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -1,39 +1,50 @@
-language: node_js
-sudo: false
-
-addons:
- sauce_connect:
- # Update SAUCE_USERNAME / SAUCE_ACCESS_KEY in travis if necessary
- # https://docs.travis-ci.com/user/environment-variables/#Defining-Variables-in-Repository-Settings
- sauce_connect: true
-
-cache:
- timeout: 1000
- directories:
- - $HOME/.npm
-
-env:
- matrix:
- - NODE_VER=8 FULL_VALIDATE=true alias grunt=./node_modules/grunt-cli/bin/grunt
- - NODE_VER=9 FULL_VALIDATE=false
-
-matrix:
- fast_finish: true
-
-before_install:
- - nvm install $NODE_VER
- - npm install -g npm@5.8.0 && npm install -g npx && node -v && npm -v
- - if [ "$FULL_VALIDATE" == "true" ]; then npm install grunt@0.4.1 grunt-cli grunt-contrib-connect grunt-run; fi
-
-install:
- - npm install
- - if [ "$FULL_VALIDATE" == "true" ]; then npm run lint && npm run test:circular; fi
-
-script:
- - if [ "$FULL_VALIDATE" == "true" ] && [ -n "DANGER_GITHUB_API_TOKEN" ]; then echo {} > ./.babelrc && npx danger; fi
- - npm test
- - npm run test:systemjs
-
-after_success:
- - if [ "$FULL_VALIDATE" == "true" ]; then npm run test:cover && npx nyc report --reporter=text-lcov | npx coveralls; fi
- - if [ "$FULL_VALIDATE" == "true" ] && [ "$TRAVIS_PULL_REQUEST" = "false" ] && [ -n "$SAUCE_ACCESS_KEY" ]; then npm run build_spec_browser && grunt --gruntfile spec/support/mocha.sauce.gruntfile.js; fi
+language: node_js
+sudo: false
+
+addons:
+ sauce_connect:
+ # Update SAUCE_USERNAME / SAUCE_ACCESS_KEY in travis if necessary
+ # https://docs.travis-ci.com/user/environment-variables/#Defining-Variables-in-Repository-Settings
+ # TODO: reenable saucelabs once we have update browser tests
+ # sauce_connect: true
+
+cache:
+ timeout: 1000
+ directories:
+ - $HOME/.npm
+
+env:
+ global:
+ - secure: "Qdr/ZwB7Tv25n7YQfudtGcnazeE7l4UM7QaoMxav6GdpFvSqaPwXJsjBFBogMAw5n1jvYM43Ah3JheChpx8yodhwgc4tAgqC1KJd4THmjq9keQMglN23QXCW2gq9/TGEZsQi96kUs/gpHmq1SXPVMil+eCKYaTtydtSeEgHnZhSagKbWln8BWi0mNn3l8MFJ5mIHz/uzyHolE57olfHCA7c+E3rw08O7EbEwQUkID2pYcIgC6Bm6dFHwgjcSJ9py8d6HOprhxAiTvAL8B97y0CBufo9SmpO7AqAgejphIESevscLiiKtP+sjctPXkS3YI28L5tCuOJulfgQKlMPfdDFBPnIu/HfN9irXK00N5ZQBtQ0596VQ6qGpx+yS7MXWYLP67+j95nbjN4gouRI4NXovMfbNPQ8oVrXjQLM52xCi2eA3W9p3plnqv544bdfjctOhGaBzW5A/1rSC7MHsAn6R0l9B0GLR60mJPw9oBko8OC/1uhWYqmzHzWoC8fzHi2QaynD9pxaYi3Gb9r1urLs8a3paWmaotrcXiPAvMK3PiC9o+/Osdp85JROnhFMyS0hhMz0PgwIB2+q9Fbv0vhjGSkW/6pgZWDx7k79OhPQQsiBDH23NMznWWPGzuXvTcACTnUynMz4G7cIkebOx6JVDBjwusKD2/+PE9cLs06w="
+ matrix:
+ - NODE_VER=10 TSC_VERSION=2.8.*
+ - NODE_VER=10 TSC_VERSION=next
+ - NODE_VER=11 FULL_VALIDATE=true TSC_VERSION=2.8.*
+ - NODE_VER=11 TSC_VERSION=next
+
+matrix:
+ fast_finish: true
+ allow_failures:
+ - NODE_VER=10 TSC_VERSION=2.8.*
+ - NODE_VER=10 TSC_VERSION=next
+ - NODE_VER=11 TSC_VERSION=next
+
+before_install:
+ - nvm install $NODE_VER
+ - npm install -g npm && node -v && npm -v
+
+install:
+ - npm ci
+ - if [ "$FULL_VALIDATE" == "true" ]; then npm run lint && npm run dtslint && npm run test:circular; fi
+
+script:
+ - export BRANCH=$(if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then echo $TRAVIS_BRANCH; else echo $TRAVIS_PULL_REQUEST_BRANCH; fi)
+ - if [ "$FULL_VALIDATE" == "true" ] && [ -n "DANGER_GITHUB_API_TOKEN" ]; then echo {} > ./.babelrc && npx danger; fi
+ - npm test
+ - npm run test:systemjs
+ - if [ "${TSC_VERSION}" ]; then npm install --no-save typescript@$TSC_VERSION && ./node_modules/.bin/tsc --version && npm run build_cjs ; fi
+ - if [ "$FULL_VALIDATE" == "true" ] && [ -n "DANGER_GITHUB_API_TOKEN" ]; then cd docs_app && npm ci && npm run build && cd ..; fi
+
+after_success:
+ - if [ "$FULL_VALIDATE" == "true" ]; then npm run test:cover && npx nyc report --reporter=text-lcov | npx coveralls; fi
+ - if [ "$FULL_VALIDATE" == "true" ]; then npm run tests2png && cd docs_app && chmod 755 scripts/deploy-to-firebase.sh && npm run deploy-production; fi
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 54d617074b..131b1e9148 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,248 @@
+## [6.5.2](https://github.com/reactivex/rxjs/compare/6.5.0...6.5.2) (2019-05-10)
+
+
+### Bug Fixes
+
+* **endWith:** wrap args - they are not observables - in of before concatenating ([#4735](https://github.com/reactivex/rxjs/issues/4735)) ([986be2f](https://github.com/reactivex/rxjs/commit/986be2f))
+* **forkJoin:** test for object literal ([#4741](https://github.com/reactivex/rxjs/issues/4741)) ([c11e1b3](https://github.com/reactivex/rxjs/commit/c11e1b3)), closes [#4737](https://github.com/reactivex/rxjs/issues/4737) [#4737](https://github.com/reactivex/rxjs/issues/4737)
+* **Notification:** replace const enum ([#4556](https://github.com/reactivex/rxjs/issues/4556)) ([e460eec](https://github.com/reactivex/rxjs/commit/e460eec)), closes [#4538](https://github.com/reactivex/rxjs/issues/4538)
+* **of:** remove deprecation comment to prevent false positive warning ([#4724](https://github.com/reactivex/rxjs/issues/4724)) ([da69c16](https://github.com/reactivex/rxjs/commit/da69c16))
+* **pairwise:** make it recursion-proof ([#4743](https://github.com/reactivex/rxjs/issues/4743)) ([21ab261](https://github.com/reactivex/rxjs/commit/21ab261))
+* **scan:** fixed declarations to properly support different return types ([#4598](https://github.com/reactivex/rxjs/issues/4598)) ([126d2b6](https://github.com/reactivex/rxjs/commit/126d2b6))
+* **Subscription:** Return Empty when teardown === null ([#4575](https://github.com/reactivex/rxjs/issues/4575)) ([ffc4e68](https://github.com/reactivex/rxjs/commit/ffc4e68))
+* **throttleTime:** emit single value with trailing enabled ([#4564](https://github.com/reactivex/rxjs/issues/4564)) ([fd690a6](https://github.com/reactivex/rxjs/commit/fd690a6)), closes [#2859](https://github.com/reactivex/rxjs/issues/2859) [#4491](https://github.com/reactivex/rxjs/issues/4491)
+* **umd:** export fetch namespace ([#4738](https://github.com/reactivex/rxjs/issues/4738)) ([7926122](https://github.com/reactivex/rxjs/commit/7926122))
+* **fromFetch:** don't abort if fetch resolves ([#4742](https://github.com/reactivex/rxjs/issues/4742) ([ed8d771](https://github.com/reactivex/rxjs/commit/ed8d771))
+
+
+## [6.5.1](https://github.com/reactivex/rxjs/compare/6.5.0...6.5.1) (2019-04-23)
+
+
+### Bug Fixes
+
+* **Notification:** replace const enum ([#4556](https://github.com/reactivex/rxjs/issues/4556)) ([e460eec](https://github.com/reactivex/rxjs/commit/e460eec)), closes [#4538](https://github.com/reactivex/rxjs/issues/4538)
+* **throttleTime:** emit single value with trailing enabled ([#4564](https://github.com/reactivex/rxjs/issues/4564)) ([fd690a6](https://github.com/reactivex/rxjs/commit/fd690a6)), closes [#2859](https://github.com/reactivex/rxjs/issues/2859) [#4491](https://github.com/reactivex/rxjs/issues/4491)
+
+
+
+# [6.5.0](https://github.com/reactivex/rxjs/compare/6.4.0...6.5.0) (2019-04-23)
+
+
+### Bug Fixes
+
+* **docs-app:** remove stopWordFilter from lunr pipeline ([#4536](https://github.com/reactivex/rxjs/issues/4536)) ([9eaebd4](https://github.com/reactivex/rxjs/commit/9eaebd4))
+* **dtslint:** disable tests that break in TS@next ([#4705](https://github.com/reactivex/rxjs/issues/4705)) ([ecc73d2](https://github.com/reactivex/rxjs/commit/ecc73d2))
+* **index:** export NotificationKind ([#4514](https://github.com/reactivex/rxjs/issues/4514)) ([7125355](https://github.com/reactivex/rxjs/commit/7125355)), closes [#4513](https://github.com/reactivex/rxjs/issues/4513)
+* **race:** better typings ([#4643](https://github.com/reactivex/rxjs/issues/4643)) ([fb9bc48](https://github.com/reactivex/rxjs/commit/fb9bc48)), closes [#4390](https://github.com/reactivex/rxjs/issues/4390) [#4642](https://github.com/reactivex/rxjs/issues/4642)
+* **throwIfEmpty:** ensure result is retry-able ([c4f44b9](https://github.com/reactivex/rxjs/commit/c4f44b9))
+* **types:** Fixed signature for onErrorResumeNext ([#4603](https://github.com/reactivex/rxjs/issues/4603)) ([4dd0be0](https://github.com/reactivex/rxjs/commit/4dd0be0))
+
+
+### Features
+
+* **combineLatest:** deprecated rest argument and scheduler signatures ([#4641](https://github.com/reactivex/rxjs/issues/4641)) ([6661c79](https://github.com/reactivex/rxjs/commit/6661c79)), closes [#4640](https://github.com/reactivex/rxjs/issues/4640)
+* **fromFetch:** We now export a `fromFetch` static observable creation method from `rxjs/fetch`. Mirrors native `fetch` only it's lazy and cancellable via `Observable` interface. ([#4702](https://github.com/reactivex/rxjs/issues/4702)) ([5a1ef86](https://github.com/reactivex/rxjs/commit/5a1ef86))
+* **forkJoin:** accepts a dictionary of sources ([#4640](https://github.com/reactivex/rxjs/issues/4640)) ([b5a2ac9](https://github.com/reactivex/rxjs/commit/b5a2ac9))
+* **partition:** new `partition` observable creation function. Old `partition` operator is deprecated ([#4419](https://github.com/reactivex/rxjs/issues/4419)) ([#4685](https://github.com/reactivex/rxjs/issues/4685)) ([d5d6980](https://github.com/reactivex/rxjs/commit/d5d6980))
+* **scheduled:** Add `scheduled` creation function to use to create scheduled observable of values. Deprecate scheduled versions of `from`, `range`, et al. ([#4595](https://github.com/reactivex/rxjs/issues/4595)) ([f57e1fc](https://github.com/reactivex/rxjs/commit/f57e1fc))
+
+
+### Performance Improvements
+
+* **Subscription:** improve parent management ([#4526](https://github.com/reactivex/rxjs/issues/4526)) ([06f1a25](https://github.com/reactivex/rxjs/commit/06f1a25))
+
+
+
+# [6.4.0](https://github.com/reactivex/rxjs/compare/6.3.3...6.4.0) (2019-01-30)
+
+
+### Bug Fixes
+
+* **ajax:** Fix case-insensitive headers in HTTP request ([#4453](https://github.com/reactivex/rxjs/issues/4453)) ([673bf47](https://github.com/reactivex/rxjs/commit/673bf47))
+* **bundle:** closure to not rewrite polyfills for minification ([#4487](https://github.com/reactivex/rxjs/issues/4487)) ([a1fedb9](https://github.com/reactivex/rxjs/commit/a1fedb9))
+* **bundle:** don't export `operators` twice ([#4310](https://github.com/reactivex/rxjs/issues/4310)) ([2399f6e](https://github.com/reactivex/rxjs/commit/2399f6e))
+* **combineLatest:** improve typings for combineLatest ([#4470](https://github.com/reactivex/rxjs/issues/4470)) ([40c3d9f](https://github.com/reactivex/rxjs/commit/40c3d9f))
+* **compat:** remove internal from import locations ([#4498](https://github.com/reactivex/rxjs/issues/4498)) ([a6c0017](https://github.com/reactivex/rxjs/commit/a6c0017)), closes [#4070](https://github.com/reactivex/rxjs/issues/4070)
+* **endWith:** ability to endWith different types ([#4183](https://github.com/reactivex/rxjs/issues/4183)) ([#4185](https://github.com/reactivex/rxjs/issues/4185)) ([83533d1](https://github.com/reactivex/rxjs/commit/83533d1))
+* **fromEventPattern:** improve typings for fromEventPattern ([#4496](https://github.com/reactivex/rxjs/issues/4496)) ([037f53d](https://github.com/reactivex/rxjs/commit/037f53d))
+* **Observable:** Fix Observable.subscribe to add operator TeardownLogic to returned Subscription. ([#4434](https://github.com/reactivex/rxjs/issues/4434)) ([f28955f](https://github.com/reactivex/rxjs/commit/f28955f))
+* **subscribe:** Deprecate null starting parameter signatures for subscribe ([#4202](https://github.com/reactivex/rxjs/issues/4202)) ([c85ddf6](https://github.com/reactivex/rxjs/commit/c85ddf6))
+* **combineLatest:** support passing union types ([ffda319](https://github.com/reactivex/rxjs/commit/ffda319))
+* **from:** support passing union types ([eb1d596](https://github.com/reactivex/rxjs/commit/eb1d596))
+* **withLatestFrom:** support passing union types ([1e19a24](https://github.com/reactivex/rxjs/commit/1e19a24))
+* **zip:** support passing union types ([0d87f52](https://github.com/reactivex/rxjs/commit/0d87f52))
+* **multicast:** support returning union types from projection ([e9e9041](https://github.com/reactivex/rxjs/commit/e9e9041))
+* **exhaustMap:** support returning union types from projection ([ff1f5dc](https://github.com/reactivex/rxjs/commit/ff1f5dc))
+* **merge:** support union type inference for merge operators ([c2ac39c](https://github.com/reactivex/rxjs/commit/c2ac39c))
+* **catchError:** support union type returns ([8350622](https://github.com/reactivex/rxjs/commit/8350622))
+* **switchMap:** support union type returns ([32d35fd](https://github.com/reactivex/rxjs/commit/32d35fd))
+* **defer:** support union types passed ([5aea50e](https://github.com/reactivex/rxjs/commit/5aea50e))
+* **race:** Update typings to support proper return types ([#4465](https://github.com/reactivex/rxjs/issues/4465)) ([0042846](https://github.com/reactivex/rxjs/commit/0042846))
+* **VirtualTimeScheduler:** rework flush so it won't lose actions ([#4433](https://github.com/reactivex/rxjs/issues/4433)) ([d068bc9](https://github.com/reactivex/rxjs/commit/d068bc9))
+* **WebSocketSubject:** fix subject failing to close socket ([#4446](https://github.com/reactivex/rxjs/issues/4446)) ([dcfa52b](https://github.com/reactivex/rxjs/commit/dcfa52b))
+
+
+### Features
+
+* **shareReplay:** Add configuration object for named arguments, and add argument to support unsubscribing from source observable by `refCount` when all resulting subscriptions have unsubscribed. The default behavior is to leave the source subscription running.
+* **mergeScan:** Add index to the accumulator function ([#4458](https://github.com/reactivex/rxjs/issues/4458)) ([f5e143d](https://github.com/reactivex/rxjs/commit/f5e143d)), closes [#4441](https://github.com/reactivex/rxjs/issues/4441)
+* **range:** accept one argument ([#4360](https://github.com/reactivex/rxjs/issues/4360)) ([a388578](https://github.com/reactivex/rxjs/commit/a388578))
+* **takeWhile:** add an `inclusive` option to the operator which causes to emit final value ([#4115](https://github.com/reactivex/rxjs/issues/4115)) ([6e7f407](https://github.com/reactivex/rxjs/commit/6e7f407))
+
+
+### Performance Improvements
+
+* **internal:** optimize Subscription#add() for the common case ([#4489](https://github.com/reactivex/rxjs/issues/4489)) ([bdd201c](https://github.com/reactivex/rxjs/commit/bdd201c))
+* **internal:** use strict equality for isObject() ([#4493](https://github.com/reactivex/rxjs/issues/4493)) ([fc84a00](https://github.com/reactivex/rxjs/commit/fc84a00))
+* **Subscription:** use `instanceof` to avoid megamorphic LoadIC ([#4499](https://github.com/reactivex/rxjs/issues/4499)) ([065b4e3](https://github.com/reactivex/rxjs/commit/065b4e3))
+
+
+
+
+## [6.3.3](https://github.com/reactivex/rxjs/compare/6.3.2...6.3.3) (2018-09-25)
+
+
+### Bug Fixes
+
+* **pipe:** align static pipe to Observable pipe rest parameters overl… ([#4112](https://github.com/reactivex/rxjs/issues/4112)) ([8c607e9](https://github.com/reactivex/rxjs/commit/8c607e9)), closes [#4109](https://github.com/reactivex/rxjs/issues/4109) [#4109](https://github.com/reactivex/rxjs/issues/4109)
+* **RxJS:** each instance of RxJS now has a unique Subscriber symbol ([0972c56](https://github.com/reactivex/rxjs/commit/0972c56))
+* **subscribe:** report errors that occur in subscribe after the initial error ([#4089](https://github.com/reactivex/rxjs/issues/4089)) ([9b4b2bc](https://github.com/reactivex/rxjs/commit/9b4b2bc)), closes [#3803](https://github.com/reactivex/rxjs/issues/3803)
+* **Subscriber:** Can no longer subscribe to itself in a circular manner ([#4106](https://github.com/reactivex/rxjs/issues/4106)) ([e623ec6](https://github.com/reactivex/rxjs/commit/e623ec6)), closes [#4095](https://github.com/reactivex/rxjs/issues/4095)
+* **Subscriber:** use only local Subscriber instances ([50ee0a7](https://github.com/reactivex/rxjs/commit/50ee0a7))
+* **TypeScript:** ensure RxJS builds with TS@next as well ([f03e790](https://github.com/reactivex/rxjs/commit/f03e790))
+
+
+
+
+## [6.3.2](https://github.com/reactivex/rxjs/compare/6.3.1...6.3.2) (2018-09-04)
+
+
+### Bug Fixes
+
+* **node:** will no longer error mixing RxJS 6.3 and 6.2 ([#4078](https://github.com/reactivex/rxjs/issues/4078)) ([69d9ccf](https://github.com/reactivex/rxjs/commit/69d9ccf)), closes [#4077](https://github.com/reactivex/rxjs/issues/4077)
+
+
+
+
+## [6.3.1](https://github.com/reactivex/rxjs/compare/6.3.0...6.3.1) (2018-08-31)
+
+
+### Bug Fixes
+
+* **mergeMap:** fix nested mergeMaps ([#4072](https://github.com/reactivex/rxjs/issues/4072)) ([0ab701b](https://github.com/reactivex/rxjs/commit/0ab701b)), closes [#4071](https://github.com/reactivex/rxjs/issues/4071)
+
+
+
+
+# [6.3.0](https://github.com/reactivex/rxjs/compare/6.2.2...6.3.0) (2018-08-30)
+
+
+### Bug Fixes
+
+* **find:** unsubscribe from source when found ([#3968](https://github.com/reactivex/rxjs/issues/3968)) ([fd01f7b](https://github.com/reactivex/rxjs/commit/fd01f7b))
+* convert [@internal](https://github.com/internal) comment to JSDoc ([#3932](https://github.com/reactivex/rxjs/issues/3932)) ([f8a9d6e](https://github.com/reactivex/rxjs/commit/f8a9d6e))
+* **AjaxObservable:** notify with error if fails to parse json response ([#3139](https://github.com/reactivex/rxjs/issues/3139)) ([d8231e2](https://github.com/reactivex/rxjs/commit/d8231e2)), closes [#3138](https://github.com/reactivex/rxjs/issues/3138)
+* **catchError:** stop listening to a synchronous inner-obervable when unsubscribed ([456ef33](https://github.com/reactivex/rxjs/commit/456ef33))
+* **distinctUntilKeyChanged:** improved key typing with keyof T ([#3988](https://github.com/reactivex/rxjs/issues/3988)) ([4ec4ff1](https://github.com/reactivex/rxjs/commit/4ec4ff1))
+* **exhaustMap:** stop listening to a synchronous inner-obervable when unsubscribed ([ee1a339](https://github.com/reactivex/rxjs/commit/ee1a339))
+* **find:** add undefined to return type ([#3970](https://github.com/reactivex/rxjs/issues/3970)) ([5a6c90f](https://github.com/reactivex/rxjs/commit/5a6c90f)), closes [#3969](https://github.com/reactivex/rxjs/issues/3969)
+* **IE10:** Remove dependency on Object.setPrototypeOf ([#3967](https://github.com/reactivex/rxjs/issues/3967)) ([5c52a73](https://github.com/reactivex/rxjs/commit/5c52a73)), closes [#3966](https://github.com/reactivex/rxjs/issues/3966)
+* **mergeAll:** add source subscription to composite before actually subscribing ([#2479](https://github.com/reactivex/rxjs/issues/2479)) ([40852ff](https://github.com/reactivex/rxjs/commit/40852ff)), closes [#2476](https://github.com/reactivex/rxjs/issues/2476)
+* **mergeScan:** stop listening to a synchronous inner-obervable when unsubscribed ([c4002f3](https://github.com/reactivex/rxjs/commit/c4002f3))
+* **Observable:** forEach will no longer next values after an error ([b4bad1f](https://github.com/reactivex/rxjs/commit/b4bad1f))
+* **Observable:** use more granular Observable exports in compat mode ([#3974](https://github.com/reactivex/rxjs/issues/3974)) ([3f75564](https://github.com/reactivex/rxjs/commit/3f75564))
+* **onErrorResumeNext:** stop listening to a synchronous inner-obervable when unsubscribed ([1d14277](https://github.com/reactivex/rxjs/commit/1d14277))
+* **pipe:** replace rest parameters overload ([#3945](https://github.com/reactivex/rxjs/issues/3945)) ([872b0ec](https://github.com/reactivex/rxjs/commit/872b0ec)), closes [#3841](https://github.com/reactivex/rxjs/issues/3841)
+* **skipUntil:** stop listening to a synchronous notifier after its first nexted value ([1c257db](https://github.com/reactivex/rxjs/commit/1c257db))
+* **startWith:** allow empty type signature and passing a different type ([b7866a0](https://github.com/reactivex/rxjs/commit/b7866a0))
+* **subscribable:** make subscribe() signature match Observable ([#4050](https://github.com/reactivex/rxjs/issues/4050)) ([865d8d7](https://github.com/reactivex/rxjs/commit/865d8d7)), closes [#3891](https://github.com/reactivex/rxjs/issues/3891)
+* **subscriber:** unsubscribe parents on error/complete ([ad8131b](https://github.com/reactivex/rxjs/commit/ad8131b))
+* **switchMap:** stop listening to a synchronous inner-obervable when unsubscribed ([260d52a](https://github.com/reactivex/rxjs/commit/260d52a))
+* **takeUntil:** takeUntil should subscribe to the source if notifier sync completes without emitting ([#4039](https://github.com/reactivex/rxjs/issues/4039)) ([21fd0b4](https://github.com/reactivex/rxjs/commit/21fd0b4)), closes [#3504](https://github.com/reactivex/rxjs/issues/3504)
+* **testscheduler:** type arguments to Observable creation functions ([#3928](https://github.com/reactivex/rxjs/issues/3928)) ([0e30ef1](https://github.com/reactivex/rxjs/commit/0e30ef1))
+
+
+### Features
+
+* **delayWhen:** add index to the selector function ([#2473](https://github.com/reactivex/rxjs/issues/2473)) ([0979d31](https://github.com/reactivex/rxjs/commit/0979d31))
+* **forEach:** deprecating passing promise constructor ([5178ab9](https://github.com/reactivex/rxjs/commit/5178ab9))
+* **TestScheduler:** Add subscription schedule to expectObservable ([#3997](https://github.com/reactivex/rxjs/issues/3997)) ([0d20255](https://github.com/reactivex/rxjs/commit/0d20255))
+
+
+
+
+## [6.2.2](https://github.com/reactivex/rxjs/compare/6.2.1...6.2.2) (2018-07-13)
+
+### Bug Fixes
+
+* **first:** improved type gaurds for TypeScript ([3e12f7a](https://github.com/reactivex/rxjs/commit/3e12f7a))
+* **last:** improved type gaurds for TypeScript ([3e12f7a](https://github.com/reactivex/rxjs/commit/3e12f7a))
+
+
+
+
+## [6.2.1](https://github.com/reactivex/rxjs/compare/6.2.0...6.2.1) (2018-06-12)
+
+
+### Bug Fixes
+
+* **ci:** do not trigger postbuild script on PR ([f82c085](https://github.com/reactivex/rxjs/commit/f82c085))
+* **delayWhen:** Emit source value if duration selector completes synchronously ([#3664](https://github.com/reactivex/rxjs/issues/3664)) ([2c43af7](https://github.com/reactivex/rxjs/commit/2c43af7)), closes [#3663](https://github.com/reactivex/rxjs/issues/3663)
+* **docs:** fix broken github links ([#3802](https://github.com/reactivex/rxjs/issues/3802)) ([9f9bf9b](https://github.com/reactivex/rxjs/commit/9f9bf9b))
+* **docs:** fix code examples ([#3784](https://github.com/reactivex/rxjs/issues/3784)) ([a95441b](https://github.com/reactivex/rxjs/commit/a95441b))
+* **from:** Objects implementing Symbol.observable take precedence over other types ([80ceea0](https://github.com/reactivex/rxjs/commit/80ceea0))
+* **fromEvent:** Support React Native and node-compatible event sources. ([#3821](https://github.com/reactivex/rxjs/issues/3821)) ([1969f18](https://github.com/reactivex/rxjs/commit/1969f18))
+* **Observable.prototype.pipe:** TS typings now more correct for >8 parameters ([#3789](https://github.com/reactivex/rxjs/issues/3789)) ([ad010ea](https://github.com/reactivex/rxjs/commit/ad010ea))
+* **subscribe:** ignore syncError when deprecated ([#3749](https://github.com/reactivex/rxjs/issues/3749)) ([f94560c](https://github.com/reactivex/rxjs/commit/f94560c))
+* **Symbol.observable:** make observable declaration readonly ([#3697](https://github.com/reactivex/rxjs/issues/3697)) ([#3773](https://github.com/reactivex/rxjs/issues/3773)) ([e1c203f](https://github.com/reactivex/rxjs/commit/e1c203f))
+* **TypeScript:** resolved typings issue for TS 3.0 ([bf2cdeb](https://github.com/reactivex/rxjs/commit/bf2cdeb))
+* **typings:** allow bufferCreationInterval null for bufferTime ([#3734](https://github.com/reactivex/rxjs/issues/3734)) ([0bda9cd](https://github.com/reactivex/rxjs/commit/0bda9cd)), closes [#3728](https://github.com/reactivex/rxjs/issues/3728)
+
+
+### Performance Improvements
+
+* remove comments from js-files ([#3760](https://github.com/reactivex/rxjs/issues/3760)) ([bb2c334](https://github.com/reactivex/rxjs/commit/bb2c334))
+
+
+
+
+# [6.2.0](https://github.com/ReactiveX/RxJS/compare/6.1.0...6.2.0) (2018-05-22)
+
+
+### Bug Fixes
+
+* **ajax:** Handle timeouts as errors ([#3653](https://github.com/ReactiveX/RxJS/issues/3653)) ([e4128ea](https://github.com/ReactiveX/RxJS/commit/e4128ea))
+* **ajax:** RxJS v6 TimeoutError is missing name property ([576d943](https://github.com/ReactiveX/RxJS/commit/576d943))
+* **isObservable:** Fix throwing error when testing isObservable(null) ([#3688](https://github.com/ReactiveX/RxJS/issues/3688)) ([c9acc61](https://github.com/ReactiveX/RxJS/commit/c9acc61))
+* **range:** Range should be same for every subscriber ([#3707](https://github.com/ReactiveX/RxJS/issues/3707)) ([9642133](https://github.com/ReactiveX/RxJS/commit/9642133))
+* **skipUntil:** fix skipUntil when innerSubscription is null ([#3686](https://github.com/ReactiveX/RxJS/issues/3686)) ([4226432](https://github.com/ReactiveX/RxJS/commit/4226432))
+* **TestScheduler:** restore run changes upon error ([27cb9b6](https://github.com/ReactiveX/RxJS/commit/27cb9b6))
+* **TimeoutError:** Add name to TimeoutError ([44042d0](https://github.com/ReactiveX/RxJS/commit/44042d0))
+* **WebSocketSubject:** Check to see if WebSocket exists in global scope ([#3694](https://github.com/ReactiveX/RxJS/issues/3694)) ([2db0788](https://github.com/ReactiveX/RxJS/commit/2db0788))
+
+
+### Features
+
+* **endWith:** add new operator endWith ([#3679](https://github.com/ReactiveX/RxJS/issues/3679)) ([537fe7d](https://github.com/ReactiveX/RxJS/commit/537fe7d))
+
+
+
+
+# [6.1.0](https://github.com/ReactiveX/RxJS/compare/6.0.0...6.1.0) (2018-05-03)
+
+
+### Bug Fixes
+
+* **audit:** will not crash if duration is synchronous ([#3608](https://github.com/ReactiveX/RxJS/issues/3608)) ([76b7e27](https://github.com/ReactiveX/RxJS/commit/76b7e27)), closes [#2743](https://github.com/ReactiveX/RxJS/issues/2743)
+* **delay:** fix memory leak ([#3605](https://github.com/ReactiveX/RxJS/issues/3605)) ([96f05b0](https://github.com/ReactiveX/RxJS/commit/96f05b0))
+
+
+### Features
+
+* **isObservable:** a new method for checking to see if an object is an RxJS Observable ([edb33e5](https://github.com/ReactiveX/RxJS/commit/edb33e5))
+
+
+
# [6.0.0](https://github.com/ReactiveX/RxJS/compare/6.0.0-uncanny-rc.7...v6.0.0) (2018-04-24)
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 1af44e84bb..57a12a794e 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -80,6 +80,8 @@ Before you submit your Pull Request (PR) consider the following guidelines:
git push -f
```
+ * When updating your feature branch with the requested changes, please do not overwrite the commit history, but rather contain the changes in new commits. This is for the sake of a clearer and easier review process.
+
That's it! Thank you for your contribution!
@@ -122,9 +124,12 @@ from the main (upstream) repository:
## Documentation
-- Documentation of RxJs will be shortly inline and more detailed in [rxjs-docs](https://github.com/ReactiveX/rxjs-docs)
-- The [Documentation Guidelines](https://github.com/ReactiveX/rxjs-docs/blob/master/DOCUMENTATION_GUIDELINES.md) will support you
-- Please keep both documents up to date
+- The documentation is auto-generated directly from the source code.
+- In short: From the source code we generate JSON documents, describing each operator, function ... and render this JSON within an Angular application
+- The folder `docs-app` contains everything you need for building and developing the docs
+- the folder `doc` used to be the documentation, but should remain until all content is transferred.
+- The [Documentation README](docs_app/README.md) will support you
+- After a PR is merged to master the docs will be published to https://rxjs.dev/
## Unit Tests
diff --git a/MIGRATION.md b/MIGRATION.md
index a5dec6b34c..3c6f6227e7 100644
--- a/MIGRATION.md
+++ b/MIGRATION.md
@@ -1,13 +1 @@
-# Version 6 Migration Guide
-
-The migration documentation is [temporarily hosted as a Google Doc](https://docs.google.com/document/d/12nlLt71VLKb-z3YaSGzUfx6mJbc34nsMXtByPUN35cg/edit?usp=sharing)
-until we convert it to markdown.
-
-The short version:
-
-- Update to the latest `npm i -S ^rxjs@5.5.10`
-- Update to version 6: `npm i -S rxjs@6`
-- If you need backwards compat: `npm i -S rxjs-compat`
-
-TypeScript users have options to automatically update their code, to find out more,
-[READ THE DOC](https://docs.google.com/document/d/12nlLt71VLKb-z3YaSGzUfx6mJbc34nsMXtByPUN35cg/edit?usp=sharing)!
+# [This file has been moved!](docs_app/content/guide/v6/migration.md)
\ No newline at end of file
diff --git a/README.md b/README.md
index 02b2ea74a5..20e4d8bcba 100644
--- a/README.md
+++ b/README.md
@@ -9,9 +9,15 @@
[](https://saucelabs.com/u/rxjs5)
-# RxJS 6 Beta
+# RxJS 6 Stable
-## FOR V 5.X PLEASE GO TO [STABLE BRANCH](https://github.com/ReactiveX/rxjs/tree/stable)
+### MIGRATION AND RELEASE INFORMATION:
+
+Find out how to update to v6, **automatically update your TypeScript code**, and more!
+
+- [Current home is MIGRATION.md](./docs_app/content/guide/v6/migration.md)
+
+### FOR V 5.X PLEASE GO TO [THE 5.0 BRANCH](https://github.com/ReactiveX/rxjs/tree/5.x)
Reactive Extensions Library for JavaScript. This is a rewrite of [Reactive-Extensions/RxJS](https://github.com/Reactive-Extensions/RxJS) and is the latest production-ready version of RxJS. This rewrite is meant to have better performance, better modularity, better debuggable call stacks, while staying mostly backwards compatible, with some breaking changes that reduce the API surface.
@@ -21,12 +27,12 @@ Reactive Extensions Library for JavaScript. This is a rewrite of [Reactive-Exten
- [Contribution Guidelines](CONTRIBUTING.md)
- [Maintainer Guidelines](doc/maintainer-guidelines.md)
- [Creating Operators](doc/operator-creation.md)
-- [API Documentation (WIP)](http://reactivex.io/rxjs)
+- [API Documentation (WIP)](https://rxjs.dev/)
## Versions In This Repository
-- [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)
+- [master](https://github.com/ReactiveX/rxjs/commits/master) - This is 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`
## Important
@@ -37,39 +43,41 @@ By contributing or commenting on issues in this repository, whether you've read
### ES6 via npm
```sh
-npm install rxjs@beta
+npm install rxjs
```
-To import only what you need by patching (this is useful for size-sensitive bundling):
+It's recommended to pull in the Observable creation methods you need directly from `'rxjs'` as shown below with `range`. And you can pull in any operator you need from one spot, under `'rxjs/operators'`.
```js
-import { Observable, Subject, ReplaySubject, from, of, range } from 'rxjs';
-import { map, filter, switchMap } from 'rxjs/operators';
+import { range } from 'rxjs';
+import { map, filter } from 'rxjs/operators';
-range(1, 200)
- .pipe(filter(x => x % 2 === 1), map(x => x + x))
- .subscribe(x => console.log(x));
+range(1, 200).pipe(
+ filter(x => x % 2 === 1),
+ map(x => x + x)
+).subscribe(x => console.log(x));
```
-Alternatively, you can use the built-in `pipe` method on Observables. See [pipeable operators](https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md) for more information.
+Here, we're using the built-in `pipe` method on Observables to combine operators. See [pipeable operators](https://github.com/ReactiveX/rxjs/blob/master/doc/pipeable-operators.md) for more information.
### CommonJS via npm
To install this library for CommonJS (CJS) usage, use the following command:
```sh
-npm install rxjs@beta
+npm install rxjs
```
(Note: destructuring available in Node 8+)
```js
-const { Observable, Subject, ReplaySubject, from, of, range } = require('rxjs');
-const { map, filter, switchMap } = require('rxjs/operators');
+const { range } = require('rxjs');
+const { map, filter } = require('rxjs/operators');
-range(1, 200)
- .pipe(filter(x => x % 2 === 1), map(x => x + x))
- .subscribe(x => console.log(x));
+range(1, 200).pipe(
+ filter(x => x % 2 === 1),
+ map(x => x + x)
+).subscribe(x => console.log(x));
```
### CDN
@@ -81,19 +89,20 @@ https://unpkg.com/rxjs/bundles/rxjs.umd.min.js
The global namespace for rxjs is `rxjs`:
```js
-const { Observable, Subject, ReplaySubject, from, of, range } = rxjs;
-const { map, filter, switchMap } = rxjs.operators;
+const { range } = rxjs;
+const { map, filter } = rxjs.operators;
-range(1, 200)
- .pipe(filter(x => x % 2 === 1), map(x => x + x))
- .subscribe(x => console.log(x));
+range(1, 200).pipe(
+ filter(x => x % 2 === 1),
+ map(x => x + x)
+).subscribe(x => console.log(x));
```
## Goals
- Smaller overall bundles sizes
- Provide better performance than preceding versions of RxJS
-- To model/follow the [Observable Spec Proposal](https://github.com/zenparsing/es-observable) to the observable.
+- To model/follow the [Observable Spec Proposal](https://github.com/zenparsing/es-observable) to the observable
- Provide more modular file structure in a variety of formats
- Provide more debuggable call stacks than preceding versions of RxJS
@@ -101,8 +110,7 @@ range(1, 200)
- `npm run build_all` - builds everything
- `npm test` - runs tests
-
-`npm run info` will list available scripts (there are a lot LOL)
+- `npm run test_no_cache` - run test with `ts-node` set to false
## Performance Tests
@@ -111,11 +119,7 @@ Run `npm run build_perf` or `npm run perf` to run the performance tests with `pr
Run `npm run perf_micro [operator]` to run micro performance test benchmarking operator.
## Adding documentation
-RxNext uses [ESDoc](https://esdoc.org/) to generate API documentation. Refer to ESDoc's documentation for syntax. Run `npm run build_docs` to generate.
-
-At the moment we are trying to improve the documentation. For this purpose the Documentation is in a seperate [GitHub Repostory](https://github.com/ReactiveX/rxjs-docs).
-For a quick instruction take a look at the [documentation guidelines](https://github.com/ReactiveX/rxjs-docs/blob/master/DOCUMENTATION_GUIDELINES.md).
-We are really happy about any type of contributions!
+We appreciate all contributions to the documentation of any type. All of the information needed to get the docs app up and running locally as well as how to contribute can be found in the [documentation directory](./docs_app).
## Generating PNG marble diagrams
diff --git a/appveyor.yml b/appveyor.yml
index 0671e185b3..b1763370eb 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -7,9 +7,9 @@ environment:
install:
- ps: Install-Product node $env:nodejs_version
- set PATH=%APPDATA%\npm;%PATH%
- - npm install -g npm@5.8.0
+ - npm install -g npm@6
- node -v && npm -v
- - npm install
+ - npm ci
build_script:
- npm run build_all
diff --git a/compat/Observable.ts b/compat/Observable.ts
index f3f522f4d6..4b733c6bf5 100644
--- a/compat/Observable.ts
+++ b/compat/Observable.ts
@@ -1 +1,2 @@
-export {Observable, Subscribable, SubscribableOrPromise, ObservableInput} from 'rxjs';
+export {Observable} from 'rxjs';
+export {Subscribable, SubscribableOrPromise, ObservableInput} from 'rxjs';
diff --git a/compat/README.md b/compat/README.md
index e5bb718791..42f46d2bad 100644
--- a/compat/README.md
+++ b/compat/README.md
@@ -1,6 +1,6 @@
# 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:
+This package is required to get backwards compatibility with RxJS previous 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)
diff --git a/compat/Rx.ts b/compat/Rx.ts
index cfd120fb0f..77e902547f 100644
--- a/compat/Rx.ts
+++ b/compat/Rx.ts
@@ -178,10 +178,9 @@ export const operators = _operators;
* @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} asap Schedules on the micro task queue, which is the same
+ * queue used for promises. Basically after the current job, but before the next
+ * job. 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`.
diff --git a/compat/add/observable/onErrorResumeNext.ts b/compat/add/observable/onErrorResumeNext.ts
index e0be75708a..dd2184c48b 100644
--- a/compat/add/observable/onErrorResumeNext.ts
+++ b/compat/add/observable/onErrorResumeNext.ts
@@ -1,9 +1,9 @@
-import { Observable, onErrorResumeNext as staticOnErrorResumeNext } from 'rxjs';
-
-Observable.onErrorResumeNext = staticOnErrorResumeNext;
-
-declare module 'rxjs/internal/Observable' {
- namespace Observable {
- export let onErrorResumeNext: typeof staticOnErrorResumeNext;
- }
-}
+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
index 13f67fc149..e363085d9b 100644
--- a/compat/add/observable/pairs.ts
+++ b/compat/add/observable/pairs.ts
@@ -1,9 +1,9 @@
-import { Observable, pairs as staticPairs } from 'rxjs';
-
-Observable.pairs = staticPairs;
-
-declare module 'rxjs/internal/Observable' {
- namespace Observable {
- export let pairs: typeof staticPairs;
- }
-}
+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/operator/onErrorResumeNext.ts b/compat/add/operator/onErrorResumeNext.ts
index a5c4aafcb6..86f0a2167c 100644
--- a/compat/add/operator/onErrorResumeNext.ts
+++ b/compat/add/operator/onErrorResumeNext.ts
@@ -1,10 +1,10 @@
-import { Observable } from 'rxjs';
-import { onErrorResumeNext } from '../../operator/onErrorResumeNext';
-
-(Observable as any).prototype.onErrorResumeNext = onErrorResumeNext;
-
-declare module 'rxjs/internal/Observable' {
- interface Observable {
- onErrorResumeNext: typeof onErrorResumeNext;
- }
-}
+import { Observable } from 'rxjs';
+import { onErrorResumeNext } from '../../operator/onErrorResumeNext';
+
+(Observable as any).prototype.onErrorResumeNext = onErrorResumeNext;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ onErrorResumeNext: typeof onErrorResumeNext;
+ }
+}
diff --git a/compat/add/operator/timestamp.ts b/compat/add/operator/timestamp.ts
index 8e5ff8405b..d67227d3c2 100644
--- a/compat/add/operator/timestamp.ts
+++ b/compat/add/operator/timestamp.ts
@@ -1,10 +1,10 @@
-import { Observable } from 'rxjs';
-import { timestamp } from '../../operator/timestamp';
-
-(Observable as any).prototype.timestamp = timestamp;
-
-declare module 'rxjs/internal/Observable' {
- interface Observable {
- timestamp: typeof timestamp;
- }
-}
+import { Observable } from 'rxjs';
+import { timestamp } from '../../operator/timestamp';
+
+(Observable as any).prototype.timestamp = timestamp;
+
+declare module 'rxjs/internal/Observable' {
+ interface Observable {
+ timestamp: typeof timestamp;
+ }
+}
diff --git a/compat/observable/IteratorObservable.ts b/compat/observable/IteratorObservable.ts
index c82322e250..bfcbe5d913 100644
--- a/compat/observable/IteratorObservable.ts
+++ b/compat/observable/IteratorObservable.ts
@@ -1,7 +1,7 @@
import { Observable, SchedulerLike, from } from 'rxjs';
export class IteratorObservable extends Observable {
- static create(iterator: any, scheduler?: SchedulerLike) {
- return from(iterator, scheduler);
+ static create(iterable: Iterable, scheduler?: SchedulerLike) {
+ return from(iterable, scheduler);
}
-}
\ No newline at end of file
+}
diff --git a/compat/operator/bufferTime.ts b/compat/operator/bufferTime.ts
index c980ef627f..44662e7c00 100644
--- a/compat/operator/bufferTime.ts
+++ b/compat/operator/bufferTime.ts
@@ -4,8 +4,8 @@ import { bufferTime as higherOrder } from 'rxjs/operators';
/* tslint:disable:max-line-length */
export function bufferTime(this: Observable, bufferTimeSpan: number, scheduler?: SchedulerLike): Observable;
-export function bufferTime(this: Observable, bufferTimeSpan: number, bufferCreationInterval: number, scheduler?: SchedulerLike): Observable;
-export function bufferTime(this: Observable, bufferTimeSpan: number, bufferCreationInterval: number, maxBufferSize: number, scheduler?: SchedulerLike): Observable;
+export function bufferTime(this: Observable, bufferTimeSpan: number, bufferCreationInterval: number | null | undefined, scheduler?: SchedulerLike): Observable;
+export function bufferTime(this: Observable, bufferTimeSpan: number, bufferCreationInterval: number | null | undefined, maxBufferSize: number, scheduler?: SchedulerLike): Observable;
/* tslint:enable:max-line-length */
/**
diff --git a/compat/operator/distinctUntilChanged.ts b/compat/operator/distinctUntilChanged.ts
index 5e53e90dc7..e4f8857657 100644
--- a/compat/operator/distinctUntilChanged.ts
+++ b/compat/operator/distinctUntilChanged.ts
@@ -28,7 +28,7 @@ export function distinctUntilChanged(this: Observable, compare: (x: K,
* Observable.of(
* { age: 4, name: 'Foo'},
* { age: 7, name: 'Bar'},
- * { age: 5, name: 'Foo'})
+ * { age: 5, name: 'Foo'},
* { age: 6, name: 'Foo'})
* .distinctUntilChanged((p: Person, q: Person) => p.name === q.name)
* .subscribe(x => console.log(x));
diff --git a/compat/operator/distinctUntilKeyChanged.ts b/compat/operator/distinctUntilKeyChanged.ts
index e29a374084..6e9da5554a 100644
--- a/compat/operator/distinctUntilKeyChanged.ts
+++ b/compat/operator/distinctUntilKeyChanged.ts
@@ -3,8 +3,8 @@ import { Observable } from 'rxjs';
import { distinctUntilKeyChanged as higherOrder } from 'rxjs/operators';
/* tslint:disable:max-line-length */
-export function distinctUntilKeyChanged(this: Observable, key: string): Observable;
-export function distinctUntilKeyChanged(this: Observable, key: string, compare: (x: K, y: K) => boolean): Observable;
+export function distinctUntilKeyChanged(this: Observable, key: keyof T): Observable;
+export function distinctUntilKeyChanged(this: Observable, key: K, compare: (x: T[K], y: T[K]) => boolean): Observable;
/* tslint:enable:max-line-length */
/**
@@ -64,6 +64,7 @@ export function distinctUntilKeyChanged(this: Observable, key: string,
* @method distinctUntilKeyChanged
* @owner Observable
*/
-export function distinctUntilKeyChanged(this: Observable, key: string, compare?: (x: T, y: T) => boolean): Observable {
- return higherOrder(key, compare)(this);
+// tslint:disable-next-line:max-line-length
+export function distinctUntilKeyChanged(this: Observable, key: K, compare?: (x: T[K], y: T[K]) => boolean): Observable {
+ return higherOrder(key, compare)(this);
}
diff --git a/compat/operator/find.ts b/compat/operator/find.ts
index ca1dbe5cd8..fdf4a40498 100644
--- a/compat/operator/find.ts
+++ b/compat/operator/find.ts
@@ -4,10 +4,10 @@ import { find as higherOrder } from 'rxjs/operators';
/* tslint:disable:max-line-length */
export function find(this: Observable,
predicate: (value: T, index: number) => value is S,
- thisArg?: any): Observable;
+ thisArg?: any): Observable;
export function find(this: Observable,
predicate: (value: T, index: number) => boolean,
- thisArg?: any): Observable;
+ thisArg?: any): Observable;
/* tslint:enable:max-line-length */
/**
@@ -44,6 +44,6 @@ export function find(this: Observable,
* @owner Observable
*/
export function find(this: Observable, predicate: (value: T, index: number, source: Observable) => boolean,
- thisArg?: any): Observable {
+ thisArg?: any): Observable {
return higherOrder(predicate, thisArg)(this);
}
diff --git a/compat/operator/first.ts b/compat/operator/first.ts
index 44d5655f78..4ffa785ebe 100644
--- a/compat/operator/first.ts
+++ b/compat/operator/first.ts
@@ -1,8 +1,12 @@
import { Observable } from 'rxjs';
import { first as higherOrder } from 'rxjs/operators';
-export function first(this: Observable, predicate?: (value: T, index: number, source: Observable) => boolean,
- defaultValue?: T): Observable;
+/* tslint:disable:max-line-length */
+export function first(this: Observable, predicate?: null, defaultValue?: D): Observable;
+export function first(this: Observable, predicate: (value: T, index: number, source: Observable) => value is S, defaultValue?: S): Observable;
+export function first(this: Observable, predicate: (value: T, index: number, source: Observable) => boolean, defaultValue?: D): Observable;
+/* tslint:enable:max-line-length */
+
/**
* Emits only the first value (or the first value that meets some condition)
* emitted by the source Observable.
@@ -47,5 +51,5 @@ export function first(this: Observable, predicate?: (value: T, index: numb
* @owner Observable
*/
export function first(this: Observable, ...args: any[]): Observable {
- return higherOrder(...args)(this);
- }
+ return higherOrder(...args)(this);
+}
diff --git a/compat/operator/last.ts b/compat/operator/last.ts
index c094aad61f..347182c710 100644
--- a/compat/operator/last.ts
+++ b/compat/operator/last.ts
@@ -1,8 +1,11 @@
import { Observable } from 'rxjs';
import { last as higherOrder } from 'rxjs/operators';
-export function last(this: Observable, predicate?: (value: T, index: number, source: Observable) => boolean,
- defaultValue?: T): Observable;
+/* tslint:disable:max-line-length */
+export function last(this: Observable, predicate?: null, defaultValue?: D): Observable;
+export function last(this: Observable, predicate: (value: T, index: number, source: Observable) => value is S, defaultValue?: S): Observable;
+export function last(this: Observable, predicate: (value: T, index: number, source: Observable) => boolean, defaultValue?: D): Observable;
+/* tslint:enable:max-line-length */
/**
* Returns an Observable that emits only the last item emitted by the source Observable.
* It optionally takes a predicate function as a parameter, in which case, rather than emitting
diff --git a/compat/operator/onErrorResumeNext.ts b/compat/operator/onErrorResumeNext.ts
index 75fc7a80b2..10ded87345 100644
--- a/compat/operator/onErrorResumeNext.ts
+++ b/compat/operator/onErrorResumeNext.ts
@@ -2,13 +2,15 @@ import { Observable, ObservableInput } from 'rxjs';
import { onErrorResumeNext as higherOrder } from 'rxjs/operators';
/* tslint:disable:max-line-length */
-export function onErrorResumeNext(this: Observable, v: ObservableInput): Observable;
-export function onErrorResumeNext(this: Observable, v2: ObservableInput, v3: ObservableInput): Observable;
-export function onErrorResumeNext(this: Observable, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;
-export function onErrorResumeNext(this: Observable, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;
-export function onErrorResumeNext(this: Observable, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable ;
-export function onErrorResumeNext(this: Observable, ...observables: Array | ((...values: Array) => R)>): Observable;
-export function onErrorResumeNext(this: Observable, array: ObservableInput[]): Observable;
+export function onErrorResumeNext(): Observable;
+export function onErrorResumeNext(this: Observable, v: ObservableInput): Observable;
+export function onErrorResumeNext(this: Observable, v: ObservableInput): Observable;
+export function onErrorResumeNext(this: Observable, v2: ObservableInput, v3: ObservableInput): Observable;
+export function onErrorResumeNext(this: Observable, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput): Observable;
+export function onErrorResumeNext(this: Observable, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput): Observable;
+export function onErrorResumeNext(this: Observable, v2: ObservableInput, v3: ObservableInput, v4: ObservableInput, v5: ObservableInput, v6: ObservableInput): Observable ;
+export function onErrorResumeNext(this: Observable, ...observables: Array>): Observable;
+export function onErrorResumeNext(this: Observable, array: ObservableInput[]): Observable;
/* tslint:enable:max-line-length */
/**
@@ -74,7 +76,6 @@ export function onErrorResumeNext(this: Observable, array: ObservableIn
*/
export function onErrorResumeNext(this: Observable, ...nextSources: Array |
- Array> |
- ((...values: Array) => R)>): Observable {
- return higherOrder(...nextSources)(this);
+ Array>>): Observable {
+ return higherOrder(...nextSources)(this);
}
diff --git a/compat/operator/publishReplay.ts b/compat/operator/publishReplay.ts
index b2889fbd0e..8136bc7b66 100644
--- a/compat/operator/publishReplay.ts
+++ b/compat/operator/publishReplay.ts
@@ -21,5 +21,5 @@ export function publishReplay(this: Observable, bufferSize?: number,
selectorOrScheduler?: SchedulerLike | OperatorFunction,
scheduler?: SchedulerLike): Observable | ConnectableObservable {
- return higherOrder(bufferSize, windowTime, selectorOrScheduler as any, scheduler)(this);
+ return higherOrder(bufferSize, windowTime, selectorOrScheduler as any, scheduler)(this);
}
diff --git a/compat/operator/reduce.ts b/compat/operator/reduce.ts
index fd27ab4ca1..956174fb86 100644
--- a/compat/operator/reduce.ts
+++ b/compat/operator/reduce.ts
@@ -2,9 +2,9 @@ import { Observable } from 'rxjs';
import { reduce as higherOrderReduce } from 'rxjs/operators';
/* tslint:disable:max-line-length */
-export function reduce(this: Observable, accumulator: (acc: T, value: T, index: number) => T, seed?: T): Observable;
-export function reduce(this: Observable, accumulator: (acc: T[], value: T, index: number) => T[], seed: T[]): Observable;
export function reduce(this: Observable, accumulator: (acc: R, value: T, index: number) => R, seed: R): Observable;
+export function reduce(this: Observable, accumulator: (acc: T, value: T, index: number) => T, seed?: T): Observable;
+export function reduce(this: Observable, accumulator: (acc: R, value: T, index: number) => R): Observable;
/* tslint:enable:max-line-length */
/**
@@ -51,7 +51,7 @@ export function reduce(this: Observable, accumulator: (acc: R, value: T
* @method reduce
* @owner Observable
*/
-export function reduce(this: Observable, accumulator: (acc: R, value: T, index?: number) => R, seed?: R): Observable {
+export function reduce(this: Observable, accumulator: (acc: T | R, value: T, index?: number) => (T | R), seed?: R): Observable {
// providing a seed of `undefined` *should* be valid and trigger
// hasSeed! so don't use `seed !== undefined` checks!
// For this reason, we have to check it here at the original call site
@@ -61,5 +61,5 @@ export function reduce(this: Observable, accumulator: (acc: R, value: T
return higherOrderReduce(accumulator, seed)(this);
}
- return higherOrderReduce(accumulator)(this);
+ return higherOrderReduce(accumulator)(this);
}
diff --git a/compat/operator/scan.ts b/compat/operator/scan.ts
index a4e19b965b..97c41b94fb 100644
--- a/compat/operator/scan.ts
+++ b/compat/operator/scan.ts
@@ -3,9 +3,9 @@ import { Observable } from 'rxjs';
import { scan as higherOrderScan } from 'rxjs/operators';
/* tslint:disable:max-line-length */
+export function scan(this: Observable, accumulator: (acc: R, value: T, index: number) => R, seed: R): Observable;
export function scan(this: Observable, accumulator: (acc: T, value: T, index: number) => T, seed?: T): Observable;
-export function scan(this: Observable, accumulator: (acc: T[], value: T, index: number) => T[], seed?: T[]): Observable;
-export function scan(this: Observable, accumulator: (acc: R, value: T, index: number) => R, seed?: R): Observable;
+export function scan(this: Observable, accumulator: (acc: R, value: T, index: number) => R): Observable;
/* tslint:enable:max-line-length */
/**
@@ -46,10 +46,10 @@ export function scan(this: Observable, accumulator: (acc: R, value: T,
* @owner Observable
*/
export function scan(this: Observable,
- accumulator: (acc: T | Array | R, value: T, index: number) => T | Array | R,
- seed?: T | R): Observable {
+ accumulator: (acc: T | R, value: T, index: number) => T | R,
+ seed?: T | R): Observable {
if (arguments.length >= 2) {
- return higherOrderScan(accumulator, seed)(this) as Observable;
+ return higherOrderScan(accumulator, seed)(this);
}
- return higherOrderScan(accumulator)(this) as Observable;
+ return higherOrderScan(accumulator)(this);
}
diff --git a/compat/operator/shareReplay.ts b/compat/operator/shareReplay.ts
index c5a0ebf455..b13ab405b5 100644
--- a/compat/operator/shareReplay.ts
+++ b/compat/operator/shareReplay.ts
@@ -1,11 +1,17 @@
import { Observable, SchedulerLike } from 'rxjs';
import { shareReplay as higherOrder } from 'rxjs/operators';
+import { ShareReplayConfig } from 'rxjs/internal-compatibility';
/**
* @method shareReplay
* @owner Observable
*/
-export function shareReplay