diff --git a/integration/BUILD.bazel b/integration/BUILD.bazel index 6c9dfc1da1ca0..23b8b96dd871d 100644 --- a/integration/BUILD.bazel +++ b/integration/BUILD.bazel @@ -88,6 +88,7 @@ INTEGRATION_TESTS = { "service-worker-schema": {}, "side-effects": {"tags": ["no-ivy-aot"]}, "terser": {}, + "typings_test_rxjs7": {}, "typings_test_ts41": { # Special case for `typings_test_ts41` test as we want to pin # `typescript` at version 4.1.x for that test and not link to the diff --git a/integration/typings_test_rxjs7/include-all.ts b/integration/typings_test_rxjs7/include-all.ts new file mode 100644 index 0000000000000..86b57f2789d8d --- /dev/null +++ b/integration/typings_test_rxjs7/include-all.ts @@ -0,0 +1,69 @@ +/** + * @license + * Copyright Google LLC All Rights Reserved. + * + * Use of this source code is governed by an MIT-style license that can be + * found in the LICENSE file at https://angular.io/license + */ + + + +import * as animations from '@angular/animations'; +import * as animationsBrowser from '@angular/animations/browser'; +import * as animationsBrowserTesting from '@angular/animations/browser/testing'; +import * as common from '@angular/common'; +import * as commonHttp from '@angular/common/http'; +import * as commonTesting from '@angular/common/testing'; +import * as commonHttpTesting from '@angular/common/testing'; +import * as compiler from '@angular/compiler'; +import * as compilerTesting from '@angular/compiler/testing'; +import * as core from '@angular/core'; +import * as coreTesting from '@angular/core/testing'; +import * as elements from '@angular/elements'; +import * as forms from '@angular/forms'; +import * as platformBrowser from '@angular/platform-browser'; +import * as platformBrowserDynamic from '@angular/platform-browser-dynamic'; +import * as platformBrowserDynamicTesting from '@angular/platform-browser-dynamic/testing'; +import * as platformBrowserAnimations from '@angular/platform-browser/animations'; +import * as platformBrowserTesting from '@angular/platform-browser/testing'; +import * as platformServer from '@angular/platform-server'; +import * as platformServerInit from '@angular/platform-server/init'; +import * as platformServerTesting from '@angular/platform-server/testing'; +import * as router from '@angular/router'; +import * as routerTesting from '@angular/router/testing'; +import * as routerUpgrade from '@angular/router/upgrade'; +import * as serviceWorker from '@angular/service-worker'; +import * as upgrade from '@angular/upgrade'; +import * as upgradeStatic from '@angular/upgrade/static'; +import * as upgradeTesting from '@angular/upgrade/static/testing'; + +export default { + animations, + animationsBrowser, + animationsBrowserTesting, + common, + commonTesting, + commonHttp, + commonHttpTesting, + compiler, + compilerTesting, + core, + coreTesting, + elements, + forms, + platformBrowser, + platformBrowserTesting, + platformBrowserDynamic, + platformBrowserDynamicTesting, + platformBrowserAnimations, + platformServer, + platformServerInit, + platformServerTesting, + router, + routerTesting, + routerUpgrade, + serviceWorker, + upgrade, + upgradeStatic, + upgradeTesting, +}; diff --git a/integration/typings_test_rxjs7/package.json b/integration/typings_test_rxjs7/package.json new file mode 100644 index 0000000000000..4161f8d00adfa --- /dev/null +++ b/integration/typings_test_rxjs7/package.json @@ -0,0 +1,28 @@ +{ + "name": "angular-integration", + "description": "Assert that users with rxjs 7 can type-check an Angular application", + "version": "0.0.0", + "license": "MIT", + "dependencies": { + "@angular/animations": "file:../../dist/packages-dist/animations", + "@angular/common": "file:../../dist/packages-dist/common", + "@angular/compiler": "file:../../dist/packages-dist/compiler", + "@angular/compiler-cli": "file:../../dist/packages-dist/compiler-cli", + "@angular/core": "file:../../dist/packages-dist/core", + "@angular/elements": "file:../../dist/packages-dist/elements", + "@angular/forms": "file:../../dist/packages-dist/forms", + "@angular/platform-browser": "file:../../dist/packages-dist/platform-browser", + "@angular/platform-browser-dynamic": "file:../../dist/packages-dist/platform-browser-dynamic", + "@angular/platform-server": "file:../../dist/packages-dist/platform-server", + "@angular/router": "file:../../dist/packages-dist/router", + "@angular/service-worker": "file:../../dist/packages-dist/service-worker", + "@angular/upgrade": "file:../../dist/packages-dist/upgrade", + "@types/jasmine": "file:../../node_modules/@types/jasmine", + "rxjs": "^7.3.0", + "typescript": "file:../../node_modules/typescript", + "zone.js": "file:../../dist/zone.js-dist/archive/zone.js.tgz" + }, + "scripts": { + "test": "tsc" + } +} diff --git a/integration/typings_test_rxjs7/tsconfig.json b/integration/typings_test_rxjs7/tsconfig.json new file mode 100644 index 0000000000000..30e25c2209734 --- /dev/null +++ b/integration/typings_test_rxjs7/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "experimentalDecorators": true, + "module": "commonjs", + "moduleResolution": "node", + "outDir": "./dist/out-tsc", + "rootDir": ".", + "target": "es5", + "lib": [ + "es5", + "dom", + "es2015.collection", + "es2015.iterable", + "es2015.promise" + ], + "types": [], + }, + "files": [ + "include-all.ts", + "node_modules/@types/jasmine/index.d.ts" + ] +} diff --git a/packages/common/package.json b/packages/common/package.json index f724fee08f6e4..f9ad0716b0a77 100644 --- a/packages/common/package.json +++ b/packages/common/package.json @@ -13,7 +13,7 @@ }, "peerDependencies": { "@angular/core": "0.0.0-PLACEHOLDER", - "rxjs": "^6.5.3" + "rxjs": "^6.5.3 || ^7.0.0" }, "repository": { "type": "git", diff --git a/packages/common/test/pipes/async_pipe_spec.ts b/packages/common/test/pipes/async_pipe_spec.ts index ef511532407e6..51abaab62f2e7 100644 --- a/packages/common/test/pipes/async_pipe_spec.ts +++ b/packages/common/test/pipes/async_pipe_spec.ts @@ -22,7 +22,7 @@ import {Subscribable, Unsubscribable} from 'rxjs'; // the implementation does not rely on other methods: const wrapSubscribable = (input: Subscribable): Subscribable => ({ subscribe(...args: any): Unsubscribable { - const subscription = input.subscribe(...args); + const subscription = input.subscribe.apply(input, args); return { unsubscribe() { subscription.unsubscribe(); diff --git a/packages/core/package.json b/packages/core/package.json index e95a79abecbcc..e0b585d592e9a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -11,7 +11,7 @@ "tslib": "^2.2.0" }, "peerDependencies": { - "rxjs": "^6.5.3", + "rxjs": "^6.5.3 || ^7.0.0", "zone.js": "~0.11.4" }, "repository": { diff --git a/packages/core/test/acceptance/property_binding_spec.ts b/packages/core/test/acceptance/property_binding_spec.ts index fdf7ca9a4b3fa..3a5b9645a349b 100644 --- a/packages/core/test/acceptance/property_binding_spec.ts +++ b/packages/core/test/acceptance/property_binding_spec.ts @@ -187,7 +187,7 @@ describe('property bindings', () => { }) class OtherDir { @Input() id: number|undefined; - @Output('click') clickStream = new EventEmitter(); + @Output('click') clickStream = new EventEmitter(); } @Directive({ diff --git a/packages/elements/package.json b/packages/elements/package.json index 95b74663b1bd0..3da5fa0277ae9 100644 --- a/packages/elements/package.json +++ b/packages/elements/package.json @@ -13,7 +13,7 @@ "peerDependencies": { "@angular/core": "0.0.0-PLACEHOLDER", "@angular/platform-browser": "0.0.0-PLACEHOLDER", - "rxjs": "^6.5.3" + "rxjs": "^6.5.3 || ^7.0.0" }, "repository": { "type": "git", diff --git a/packages/forms/package.json b/packages/forms/package.json index 1d9931e480e8f..33cb036b42ff2 100644 --- a/packages/forms/package.json +++ b/packages/forms/package.json @@ -14,7 +14,7 @@ "@angular/core": "0.0.0-PLACEHOLDER", "@angular/common": "0.0.0-PLACEHOLDER", "@angular/platform-browser": "0.0.0-PLACEHOLDER", - "rxjs": "^6.5.3" + "rxjs": "^6.5.3 || ^7.0.0" }, "repository": { "type": "git", diff --git a/packages/misc/angular-in-memory-web-api/package.json b/packages/misc/angular-in-memory-web-api/package.json index 796d9da10ebd8..d0621050f69cf 100644 --- a/packages/misc/angular-in-memory-web-api/package.json +++ b/packages/misc/angular-in-memory-web-api/package.json @@ -5,9 +5,9 @@ "author": "angular", "license": "MIT", "peerDependencies": { - "@angular/core": "^12.0.0-next.6", - "@angular/common": "^12.0.0-next.6", - "rxjs": "^6.5.3" + "@angular/core": "^12.0.0", + "@angular/common": "^12.0.0", + "rxjs": "^6.5.3 || ^7.0.0" }, "dependencies": { "tslib": "^2.2.0" diff --git a/packages/router/package.json b/packages/router/package.json index 89860e526b7b1..30e91c1a5a5b3 100644 --- a/packages/router/package.json +++ b/packages/router/package.json @@ -27,7 +27,7 @@ "@angular/core": "0.0.0-PLACEHOLDER", "@angular/common": "0.0.0-PLACEHOLDER", "@angular/platform-browser": "0.0.0-PLACEHOLDER", - "rxjs": "^6.5.3" + "rxjs": "^6.5.3 || ^7.0.0" }, "ng-update": { "packageGroup": "NG_UPDATE_PACKAGE_GROUP"