diff --git a/integration/angular_cli/e2e/tsconfig.json b/integration/angular_cli/e2e/tsconfig.json index a82df00eef37..974ea6ffe041 100644 --- a/integration/angular_cli/e2e/tsconfig.json +++ b/integration/angular_cli/e2e/tsconfig.json @@ -3,7 +3,7 @@ "compilerOptions": { "outDir": "../out-tsc/e2e", "module": "commonjs", - "target": "es2018", + "target": "es2019", "types": [ "jasmine", "node" diff --git a/integration/angular_cli/tsconfig.json b/integration/angular_cli/tsconfig.json index 5015054494d9..839aa2a548d7 100644 --- a/integration/angular_cli/tsconfig.json +++ b/integration/angular_cli/tsconfig.json @@ -8,7 +8,7 @@ "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, - "target": "es2015", + "target": "es2017", "module": "es2020", "typeRoots": [ "node_modules/@types" diff --git a/packages/angular_devkit/build_angular/src/browser/index.ts b/packages/angular_devkit/build_angular/src/browser/index.ts index 30015c048bbd..de4f81c52393 100644 --- a/packages/angular_devkit/build_angular/src/browser/index.ts +++ b/packages/angular_devkit/build_angular/src/browser/index.ts @@ -221,14 +221,6 @@ export function buildWebpackBrowser( const buildBrowserFeatures = new BuildBrowserFeatures(sysProjectRoot); const isDifferentialLoadingNeeded = buildBrowserFeatures.isDifferentialLoadingNeeded(target); - if (target > ScriptTarget.ES2015 && isDifferentialLoadingNeeded) { - context.logger.warn(tags.stripIndent` - Warning: Using differential loading with targets ES5 and ES2016 or higher may - cause problems. Browsers with support for ES2015 will load the ES2016+ scripts - referenced with script[type="module"] but they may not support ES2016+ syntax. - `); - } - checkInternetExplorerSupport(buildBrowserFeatures.supportedBrowsers, context.logger); return { diff --git a/packages/angular_devkit/build_angular/src/browser/specs/allow-js_spec.ts b/packages/angular_devkit/build_angular/src/browser/specs/allow-js_spec.ts index 0952c61b3f0a..683d08993c86 100644 --- a/packages/angular_devkit/build_angular/src/browser/specs/allow-js_spec.ts +++ b/packages/angular_devkit/build_angular/src/browser/specs/allow-js_spec.ts @@ -31,7 +31,7 @@ describe('Browser Builder allow js', () => { host.replaceInFile( 'tsconfig.json', - '"target": "es2015"', + '"target": "es2017"', '"target": "es5", "allowJs": true', ); @@ -56,7 +56,7 @@ describe('Browser Builder allow js', () => { host.replaceInFile( 'tsconfig.json', - '"target": "es2015"', + '"target": "es2017"', '"target": "es5", "allowJs": true', ); @@ -83,7 +83,7 @@ describe('Browser Builder allow js', () => { host.replaceInFile( 'tsconfig.json', - '"target": "es2015"', + '"target": "es2017"', '"target": "es5", "allowJs": true', ); diff --git a/packages/angular_devkit/build_angular/src/browser/specs/browser-support_spec.ts b/packages/angular_devkit/build_angular/src/browser/specs/browser-support_spec.ts index 58ff90668a6e..f1b7c8cf72fb 100644 --- a/packages/angular_devkit/build_angular/src/browser/specs/browser-support_spec.ts +++ b/packages/angular_devkit/build_angular/src/browser/specs/browser-support_spec.ts @@ -18,7 +18,7 @@ describe('Browser Builder browser support', () => { architect = (await createArchitect(host.root())).architect; // target ES5 to disable differential loading which is not needed for the tests - host.replaceInFile('tsconfig.json', '"target": "es2015"', '"target": "es5"'); + host.replaceInFile('tsconfig.json', '"target": "es2017"', '"target": "es5"'); }); afterEach(async () => host.restore().toPromise()); diff --git a/packages/angular_devkit/build_angular/src/browser/specs/differential_loading_spec.ts b/packages/angular_devkit/build_angular/src/browser/specs/differential_loading_spec.ts index a597ba08bfd3..98a09100a776 100644 --- a/packages/angular_devkit/build_angular/src/browser/specs/differential_loading_spec.ts +++ b/packages/angular_devkit/build_angular/src/browser/specs/differential_loading_spec.ts @@ -34,63 +34,23 @@ describe('Browser Builder with differential loading', () => { 'favicon.ico', 'index.html', - 'main-es2015.js', - 'main-es2015.js.map', + 'main-es2017.js', + 'main-es2017.js.map', 'main-es5.js', 'main-es5.js.map', - 'polyfills-es2015.js', - 'polyfills-es2015.js.map', + 'polyfills-es2017.js', + 'polyfills-es2017.js.map', 'polyfills-es5.js', 'polyfills-es5.js.map', - 'runtime-es2015.js', - 'runtime-es2015.js.map', + 'runtime-es2017.js', + 'runtime-es2017.js.map', 'runtime-es5.js', 'runtime-es5.js.map', - 'vendor-es2015.js', - 'vendor-es2015.js.map', - 'vendor-es5.js', - 'vendor-es5.js.map', - - 'styles.css', - 'styles.css.map', - ] as PathFragment[]; - - expect(Object.keys(files)).toEqual(jasmine.arrayWithExactContents(expectedOutputs)); - }); - - it('emits all the neccessary files for target of ES2016', async () => { - host.replaceInFile( - 'tsconfig.json', - '"target": "es2015",', - `"target": "es2016",`, - ); - - const { files } = await browserBuild(architect, host, target); - - const expectedOutputs = [ - 'favicon.ico', - 'index.html', - - 'main-es2016.js', - 'main-es2016.js.map', - 'main-es5.js', - 'main-es5.js.map', - - 'polyfills-es2016.js', - 'polyfills-es2016.js.map', - 'polyfills-es5.js', - 'polyfills-es5.js.map', - - 'runtime-es2016.js', - 'runtime-es2016.js.map', - 'runtime-es5.js', - 'runtime-es5.js.map', - - 'vendor-es2016.js', - 'vendor-es2016.js.map', + 'vendor-es2017.js', + 'vendor-es2017.js.map', 'vendor-es5.js', 'vendor-es5.js.map', @@ -104,7 +64,7 @@ describe('Browser Builder with differential loading', () => { it('emits all the neccessary files for target of ESNext', async () => { host.replaceInFile( 'tsconfig.json', - '"target": "es2015",', + '"target": "es2017",', `"target": "esnext",`, ); @@ -148,17 +108,17 @@ describe('Browser Builder with differential loading', () => { 'favicon.ico', 'index.html', - 'main-es2015.js', - 'main-es2015.js.map', + 'main-es2017.js', + 'main-es2017.js.map', - 'polyfills-es2015.js', - 'polyfills-es2015.js.map', + 'polyfills-es2017.js', + 'polyfills-es2017.js.map', - 'runtime-es2015.js', - 'runtime-es2015.js.map', + 'runtime-es2017.js', + 'runtime-es2017.js.map', - 'vendor-es2015.js', - 'vendor-es2015.js.map', + 'vendor-es2017.js', + 'vendor-es2017.js.map', 'styles.css', 'styles.css.map', @@ -173,21 +133,21 @@ describe('Browser Builder with differential loading', () => { vendorChunk: false, }); expect(await files['main-es5.js']).not.toContain('const '); - expect(await files['main-es2015.js']).toContain('const '); + expect(await files['main-es2017.js']).toContain('const '); }); it('wraps ES5 scripts in an IIFE', async () => { const { files } = await browserBuild(architect, host, target, { optimization: false }); expect(await files['main-es5.js']).toMatch(/^\(function \(\) \{/); - expect(await files['main-es2015.js']).not.toMatch(/^\(function \(\) \{/); + expect(await files['main-es2017.js']).not.toMatch(/^\(function \(\) \{/); }); it('uses the right zone.js variant', async () => { const { files } = await browserBuild(architect, host, target, { optimization: false }); expect(await files['polyfills-es5.js']).toContain('zone.js/plugins/zone-legacy'); expect(await files['polyfills-es5.js']).toContain('registerElementPatch'); - expect(await files['polyfills-es2015.js']).not.toContain('zone.js/plugins/zone-legacy'); - expect(await files['polyfills-es2015.js']).not.toContain('registerElementPatch'); + expect(await files['polyfills-es2017.js']).not.toContain('zone.js/plugins/zone-legacy'); + expect(await files['polyfills-es2017.js']).not.toContain('registerElementPatch'); }); it('adds `type="module"` when differential loading is needed', async () => { @@ -200,10 +160,10 @@ describe('Browser Builder with differential loading', () => { const { files } = await browserBuild(architect, host, target, { watch: true }); expect(await files['index.html']).toContain( - '' + - '' + - '' + - '', + '' + + '' + + '' + + '', ); }); }); diff --git a/packages/angular_devkit/build_angular/src/browser/specs/lazy-module_spec.ts b/packages/angular_devkit/build_angular/src/browser/specs/lazy-module_spec.ts index 777a5af4f5e0..78908078ed75 100644 --- a/packages/angular_devkit/build_angular/src/browser/specs/lazy-module_spec.ts +++ b/packages/angular_devkit/build_angular/src/browser/specs/lazy-module_spec.ts @@ -131,8 +131,6 @@ describe('Browser Builder lazy modules', () => { 'src/lazy-module.ts': 'export const value = 42;', 'src/main.ts': `import('./lazy-module');`, }); - // Using `import()` in TS require targetting `esnext` modules. - host.replaceInFile('src/tsconfig.app.json', `"module": "es2015"`, `"module": "esnext"`); const { files } = await browserBuild(architect, host, target); expect(files['lazy-module.js']).not.toBeUndefined(); @@ -146,7 +144,6 @@ describe('Browser Builder lazy modules', () => { import(/*webpackChunkName: '[request]'*/'./lazy-' + lazyFileName); `, }); - host.replaceInFile('src/tsconfig.app.json', `"module": "es2015"`, `"module": "esnext"`); const { files } = await browserBuild(architect, host, target); expect(files['lazy-module.js']).not.toBeUndefined(); diff --git a/packages/angular_devkit/build_angular/src/browser/specs/optimization-level_spec.ts b/packages/angular_devkit/build_angular/src/browser/specs/optimization-level_spec.ts index f5025f2d9dcb..8936edee2329 100644 --- a/packages/angular_devkit/build_angular/src/browser/specs/optimization-level_spec.ts +++ b/packages/angular_devkit/build_angular/src/browser/specs/optimization-level_spec.ts @@ -26,8 +26,8 @@ describe('Browser Builder optimization level', () => { expect(await files['main.js']).not.toContain('AppComponent'); }); - it('tsconfig target changes optimizations to use ES2015', async () => { - host.replaceInFile('tsconfig.json', '"target": "es5"', '"target": "es2015"'); + it('tsconfig target changes optimizations to use es2017', async () => { + host.replaceInFile('tsconfig.json', '"target": "es5"', '"target": "es2017"'); const overrides = { optimization: true }; const { files } = await browserBuild(architect, host, target, overrides); diff --git a/packages/angular_devkit/build_angular/src/browser/specs/resolve-json-module_spec.ts b/packages/angular_devkit/build_angular/src/browser/specs/resolve-json-module_spec.ts index 373ac3419984..9fc9fd67e012 100644 --- a/packages/angular_devkit/build_angular/src/browser/specs/resolve-json-module_spec.ts +++ b/packages/angular_devkit/build_angular/src/browser/specs/resolve-json-module_spec.ts @@ -30,7 +30,7 @@ describe('Browser Builder resolve json module', () => { host.replaceInFile( 'tsconfig.json', - '"target": "es2015"', + '"target": "es2017"', '"target": "es5", "resolveJsonModule": true', ); diff --git a/packages/angular_devkit/build_angular/src/browser/specs/scripts-array_spec.ts b/packages/angular_devkit/build_angular/src/browser/specs/scripts-array_spec.ts index 1f8f5cd6aab4..3451187e839a 100644 --- a/packages/angular_devkit/build_angular/src/browser/specs/scripts-array_spec.ts +++ b/packages/angular_devkit/build_angular/src/browser/specs/scripts-array_spec.ts @@ -81,13 +81,13 @@ describe('Browser Builder scripts array', () => { 'lazy-script.js': 'lazy-script', 'renamed-script.js': 'pre-rename-script', 'renamed-lazy-script.js': 'pre-rename-lazy-script', - 'main-es2015.js': 'input-script', - 'index.html': '' - + '' + 'main-es2017.js': 'input-script', + 'index.html': '' + + '' + '' + '' - + '' - + '', + + '' + + '', }; host.writeMultipleFiles(scripts); diff --git a/packages/angular_devkit/build_angular/src/browser/specs/styles_spec.ts b/packages/angular_devkit/build_angular/src/browser/specs/styles_spec.ts index 577ca5a55c41..e396b4e59cb3 100644 --- a/packages/angular_devkit/build_angular/src/browser/specs/styles_spec.ts +++ b/packages/angular_devkit/build_angular/src/browser/specs/styles_spec.ts @@ -306,7 +306,7 @@ describe('Browser Builder styles', () => { }); // Set to target to ES5 to avoid differential loading and unnecessary testing time - host.replaceInFile('tsconfig.json', '"target": "es2015"', '"target": "es5"'); + host.replaceInFile('tsconfig.json', '"target": "es2017"', '"target": "es5"'); const overrides = { extractCss: true, optimization: false }; const { files } = await browserBuild(architect, host, target, overrides); @@ -346,7 +346,7 @@ describe('Browser Builder styles', () => { }); // Set target to ES5 to avoid differential loading and unnecessary testing time - host.replaceInFile('tsconfig.json', '"target": "es2015"', '"target": "es5"'); + host.replaceInFile('tsconfig.json', '"target": "es2017"', '"target": "es5"'); const overrides = { extractCss: true, optimization: true, styles: ['src/styles.scss'] }; const { files } = await browserBuild(architect, host, target, overrides); diff --git a/packages/angular_devkit/build_angular/src/karma/works_spec.ts b/packages/angular_devkit/build_angular/src/karma/works_spec.ts index ad749f97fb1e..4a8701464ce3 100644 --- a/packages/angular_devkit/build_angular/src/karma/works_spec.ts +++ b/packages/angular_devkit/build_angular/src/karma/works_spec.ts @@ -40,16 +40,6 @@ describe('Karma Builder', () => { await run.stop(); }); - it('supports ES2015 target', async () => { - host.replaceInFile('tsconfig.json', '"target": "es5"', '"target": "es2015"'); - - const run = await architect.scheduleTarget(karmaTargetSpec); - - await expectAsync(run.result).toBeResolvedTo(jasmine.objectContaining({ success: true })); - - await run.stop(); - }); - it('generates and uses global styles', async () => { host.writeMultipleFiles({ 'src/styles.css': 'p {display: none}', diff --git a/packages/angular_devkit/build_angular/src/utils/build-browser-features.ts b/packages/angular_devkit/build_angular/src/utils/build-browser-features.ts index 29abf699a050..f5662b60b7b0 100644 --- a/packages/angular_devkit/build_angular/src/utils/build-browser-features.ts +++ b/packages/angular_devkit/build_angular/src/utils/build-browser-features.ts @@ -21,7 +21,7 @@ export class BuildBrowserFeatures { /** * True, when one or more browsers requires ES5 - * support and the scirpt target is ES2015 or greater. + * support and the script target is ES2015 or greater. */ isDifferentialLoadingNeeded(scriptTarget: ts.ScriptTarget): boolean { const es6TargetOrLater = scriptTarget > ts.ScriptTarget.ES5; diff --git a/packages/angular_devkit/build_angular/src/utils/build-browser-features_spec.ts b/packages/angular_devkit/build_angular/src/utils/build-browser-features_spec.ts index 17ef63fde0e3..c50e885b4f5e 100644 --- a/packages/angular_devkit/build_angular/src/utils/build-browser-features_spec.ts +++ b/packages/angular_devkit/build_angular/src/utils/build-browser-features_spec.ts @@ -25,22 +25,22 @@ describe('BuildBrowserFeatures', () => { afterEach(async () => host.restore().toPromise()); describe('isDifferentialLoadingNeeded', () => { - it('should be true for IE 9-11 and ES2015', () => { + it('should be true for IE 9-11 and ES2017', () => { host.writeMultipleFiles({ '.browserslistrc': 'IE 9-11', }); const buildBrowserFeatures = new BuildBrowserFeatures(workspaceRootSysPath); - expect(buildBrowserFeatures.isDifferentialLoadingNeeded(ScriptTarget.ES2015)).toBe(true); + expect(buildBrowserFeatures.isDifferentialLoadingNeeded(ScriptTarget.ES2017)).toBe(true); }); - it('should be false for Chrome and ES2015', () => { + it('should be false for Chrome and ES2017', () => { host.writeMultipleFiles({ '.browserslistrc': 'last 1 chrome version', }); const buildBrowserFeatures = new BuildBrowserFeatures(workspaceRootSysPath); - expect(buildBrowserFeatures.isDifferentialLoadingNeeded(ScriptTarget.ES2015)).toBe(false); + expect(buildBrowserFeatures.isDifferentialLoadingNeeded(ScriptTarget.ES2017)).toBe(false); }); it('detects no need for differential loading for target is ES5', () => { @@ -52,13 +52,13 @@ describe('BuildBrowserFeatures', () => { expect(buildBrowserFeatures.isDifferentialLoadingNeeded(ScriptTarget.ES5)).toBe(false); }); - it('should be false for Safari 10.1 when target is ES2015', () => { + it('should be false for Safari 10.1 when target is ES2017', () => { host.writeMultipleFiles({ '.browserslistrc': 'Safari 10.1', }); const buildBrowserFeatures = new BuildBrowserFeatures(workspaceRootSysPath); - expect(buildBrowserFeatures.isDifferentialLoadingNeeded(ScriptTarget.ES2015)).toBe(false); + expect(buildBrowserFeatures.isDifferentialLoadingNeeded(ScriptTarget.ES2017)).toBe(false); }); }); diff --git a/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html_spec.ts b/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html_spec.ts index 29fac3a9a084..0324d56f8e2e 100644 --- a/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html_spec.ts +++ b/packages/angular_devkit/build_angular/src/utils/index-file/augment-index-html_spec.ts @@ -67,11 +67,11 @@ describe('augment-index-html', () => { }); it(`should emit correct script tags when having 'module' and 'non-module' js`, async () => { - const es2015JsFiles: FileInfo[] = [ - { file: 'runtime-es2015.js', extension: '.js', name: 'main' }, - { file: 'main-es2015.js', extension: '.js', name: 'main' }, - { file: 'runtime-es2015.js', extension: '.js', name: 'polyfills' }, - { file: 'polyfills-es2015.js', extension: '.js', name: 'polyfills' }, + const es2017JsFiles: FileInfo[] = [ + { file: 'runtime-es2017.js', extension: '.js', name: 'main' }, + { file: 'main-es2017.js', extension: '.js', name: 'main' }, + { file: 'runtime-es2017.js', extension: '.js', name: 'polyfills' }, + { file: 'polyfills-es2017.js', extension: '.js', name: 'polyfills' }, ]; const es5JsFiles: FileInfo[] = [ @@ -87,7 +87,7 @@ describe('augment-index-html', () => { { file: 'styles.css', extension: '.css', name: 'styles' }, { file: 'styles.css', extension: '.css', name: 'styles' }, ], - moduleFiles: es2015JsFiles, + moduleFiles: es2017JsFiles, noModuleFiles: es5JsFiles, }); @@ -99,11 +99,11 @@ describe('augment-index-html', () => {
- - + + - +