From bd0b13a1311f9385f7f23d6adb02532be1594bf5 Mon Sep 17 00:00:00 2001 From: "Manu Mtz.-Almeida" Date: Mon, 23 Dec 2019 22:05:11 +0100 Subject: [PATCH 1/4] feat: per module inlineDynamicImport --- src/Module.ts | 15 ++++++++++++++- src/ModuleLoader.ts | 19 ++++++++++++++++--- src/rollup/types.d.ts | 4 ++++ src/utils/chunkColouring.ts | 6 ++++++ src/utils/transform.ts | 5 +++++ 5 files changed, 45 insertions(+), 4 deletions(-) diff --git a/src/Module.ts b/src/Module.ts index bf8b3531edc..2ea6bc0973a 100644 --- a/src/Module.ts +++ b/src/Module.ts @@ -194,6 +194,7 @@ export default class Module { importDescriptions: { [name: string]: ImportDescription } = Object.create(null); importMetas: MetaProperty[] = []; imports = new Set(); + inlineDynamicImport = false; isEntryPoint: boolean; isExecuted = false; isUserDefinedEntryPoint = false; @@ -221,12 +222,19 @@ export default class Module { private transformDependencies: string[] = []; private transitiveReexports: string[] | null = null; - constructor(graph: Graph, id: string, moduleSideEffects: boolean, isEntry: boolean) { + constructor( + graph: Graph, + id: string, + moduleSideEffects: boolean, + inlineDynamicImport: boolean, + isEntry: boolean + ) { this.id = id; this.graph = graph; this.excludeFromSourcemap = /\0/.test(id); this.context = graph.getModuleContext(id); this.moduleSideEffects = moduleSideEffects; + this.inlineDynamicImport = inlineDynamicImport; this.isEntryPoint = isEntry; } @@ -534,6 +542,7 @@ export default class Module { originalSourcemap, resolvedIds, sourcemapChain, + inlineDynamicImport, transformDependencies, transformFiles }: TransformModuleJSON & { @@ -551,6 +560,10 @@ export default class Module { if (typeof moduleSideEffects === 'boolean') { this.moduleSideEffects = moduleSideEffects; } + if (typeof inlineDynamicImport === 'boolean') { + this.inlineDynamicImport = inlineDynamicImport; + console.log(this.id, inlineDynamicImport); + } timeStart('generate ast', 3); diff --git a/src/ModuleLoader.ts b/src/ModuleLoader.ts index 9c6e21f8256..383186b442f 100644 --- a/src/ModuleLoader.ts +++ b/src/ModuleLoader.ts @@ -272,6 +272,7 @@ export class ModuleLoader { id: string, importer: string, moduleSideEffects: boolean, + inlineDynamicImport: boolean, isEntry: boolean ): Promise { const existingModule = this.modulesById.get(id); @@ -280,7 +281,7 @@ export class ModuleLoader { return Promise.resolve(existingModule); } - const module: Module = new Module(this.graph, id, moduleSideEffects, isEntry); + const module = new Module(this.graph, id, moduleSideEffects, inlineDynamicImport, isEntry); this.modulesById.set(id, module); this.graph.watchFiles[id] = true; const manualChunkAlias = this.getManualChunk(id); @@ -370,7 +371,13 @@ export class ModuleLoader { } return Promise.resolve(externalModule); } else { - return this.fetchModule(resolvedId.id, importer, resolvedId.moduleSideEffects, false); + return this.fetchModule( + resolvedId.id, + importer, + resolvedId.moduleSideEffects, + resolvedId.inlineDynamicImport, + false + ); } } @@ -387,6 +394,7 @@ export class ModuleLoader { return { external: true, id: source, + inlineDynamicImport: true, moduleSideEffects: this.hasModuleSideEffects(source, true) }; } @@ -407,7 +415,7 @@ export class ModuleLoader { : resolveIdResult; if (typeof id === 'string') { - return this.fetchModule(id, undefined as any, true, isEntry); + return this.fetchModule(id, undefined as any, true, false, isEntry); } return error(errUnresolvedEntry(unresolvedId)); }); @@ -420,6 +428,7 @@ export class ModuleLoader { let id = ''; let external = false; let moduleSideEffects = null; + let inlineDynamicImport = false; if (resolveIdResult) { if (typeof resolveIdResult === 'object') { id = resolveIdResult.id; @@ -429,6 +438,9 @@ export class ModuleLoader { if (typeof resolveIdResult.moduleSideEffects === 'boolean') { moduleSideEffects = resolveIdResult.moduleSideEffects; } + if (typeof resolveIdResult.inlineDynamicImport === 'boolean') { + inlineDynamicImport = resolveIdResult.inlineDynamicImport; + } } else { if (this.isExternal(resolveIdResult, importer, true)) { external = true; @@ -445,6 +457,7 @@ export class ModuleLoader { return { external, id, + inlineDynamicImport, moduleSideEffects: typeof moduleSideEffects === 'boolean' ? moduleSideEffects diff --git a/src/rollup/types.d.ts b/src/rollup/types.d.ts index 6c8397dee79..ca81cfcc56c 100644 --- a/src/rollup/types.d.ts +++ b/src/rollup/types.d.ts @@ -91,6 +91,7 @@ export type SourceMapInput = ExistingRawSourceMap | string | null | { mappings: export interface SourceDescription { ast?: ESTree.Program; code: string; + inlineDynamicImport?: boolean | null; map?: SourceMapInput; moduleSideEffects?: boolean | null; } @@ -104,6 +105,7 @@ export interface TransformModuleJSON { code: string; // note if plugins use new this.cache to opt-out auto transform cache customTransformCache: boolean; + inlineDynamicImport: boolean | null; moduleSideEffects: boolean | null; originalCode: string; originalSourcemap: ExistingDecodedSourceMap | null; @@ -198,6 +200,7 @@ export interface PluginContextMeta { export interface ResolvedId { external: boolean; id: string; + inlineDynamicImport: boolean; moduleSideEffects: boolean; } @@ -208,6 +211,7 @@ export interface ResolvedIdMap { interface PartialResolvedId { external?: boolean; id: string; + inlineDynamicImport?: boolean | null; moduleSideEffects?: boolean | null; } diff --git a/src/utils/chunkColouring.ts b/src/utils/chunkColouring.ts index 3c8efadefb0..2138bb71caa 100644 --- a/src/utils/chunkColouring.ts +++ b/src/utils/chunkColouring.ts @@ -19,6 +19,11 @@ export function assignChunkColouringHashes( Uint8ArrayXor(module.entryPointsHash, currentEntryHash); } + for (const { resolution } of module.dynamicImports) { + if (resolution instanceof Module && resolution.inlineDynamicImport) { + module.dependencies.push(resolution); + } + } for (const dependency of module.dependencies) { if ( dependency instanceof ExternalModule || @@ -35,6 +40,7 @@ export function assignChunkColouringHashes( for (const { resolution } of module.dynamicImports) { if ( resolution instanceof Module && + !resolution.inlineDynamicImport && resolution.dynamicallyImportedBy.length > 0 && !resolution.manualChunkAlias ) { diff --git a/src/utils/transform.ts b/src/utils/transform.ts index 3e16df29471..05b42f4f0b5 100644 --- a/src/utils/transform.ts +++ b/src/utils/transform.ts @@ -35,6 +35,7 @@ export default function transform( const emittedFiles: EmittedFile[] = []; let customTransformCache = false; let moduleSideEffects: boolean | null = null; + let inlineDynamicImport: boolean | null = null; let trackedPluginCache: { cache: PluginCache; used: boolean }; let curPlugin: Plugin; const curSource: string = source.code; @@ -82,6 +83,9 @@ export default function transform( if (typeof result.moduleSideEffects === 'boolean') { moduleSideEffects = result.moduleSideEffects; } + if (typeof result.inlineDynamicImport === 'boolean') { + inlineDynamicImport = result.inlineDynamicImport; + } } else { return code; } @@ -189,6 +193,7 @@ export default function transform( ast: ast as any, code, customTransformCache, + inlineDynamicImport, moduleSideEffects, originalCode, originalSourcemap, From ec04aa217b02f19d6395ba8ec746fd3ba149d4aa Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Fri, 10 Jan 2020 14:31:15 +0100 Subject: [PATCH 2/4] Fix existing tests --- .../samples/context-resolve/_config.js | 39 ++++++++++++++++--- test/incremental/index.js | 9 ++++- 2 files changed, 41 insertions(+), 7 deletions(-) diff --git a/test/function/samples/context-resolve/_config.js b/test/function/samples/context-resolve/_config.js index 88aed16c12a..17ec696104c 100644 --- a/test/function/samples/context-resolve/_config.js +++ b/test/function/samples/context-resolve/_config.js @@ -7,6 +7,7 @@ const tests = [ expected: { id: path.resolve(__dirname, 'existing.js'), external: false, + inlineDynamicImport: false, moduleSideEffects: true } }, @@ -23,6 +24,7 @@ const tests = [ expected: { id: path.resolve(__dirname, 'marked-directly-external-relative'), external: true, + inlineDynamicImport: false, moduleSideEffects: true } }, @@ -31,36 +33,63 @@ const tests = [ expected: { id: path.resolve(__dirname, 'marked-external-relative'), external: true, + inlineDynamicImport: false, moduleSideEffects: true } }, { source: 'marked-external-absolute', - expected: { id: 'marked-external-absolute', external: true, moduleSideEffects: true } + expected: { + id: 'marked-external-absolute', + external: true, + inlineDynamicImport: false, + moduleSideEffects: true + } }, { source: 'resolved-name', - expected: { id: 'resolved:resolved-name', external: false, moduleSideEffects: true } + expected: { + id: 'resolved:resolved-name', + external: false, + inlineDynamicImport: false, + moduleSideEffects: true + } }, { source: 'resolved-false', - expected: { id: 'resolved-false', external: true, moduleSideEffects: true } + expected: { + id: 'resolved-false', + external: true, + inlineDynamicImport: false, + moduleSideEffects: true + } }, { source: 'resolved-object', - expected: { id: 'resolved:resolved-object', external: false, moduleSideEffects: true } + expected: { + id: 'resolved:resolved-object', + external: false, + inlineDynamicImport: false, + moduleSideEffects: true + } }, { source: 'resolved-object-non-external', expected: { id: 'resolved:resolved-object-non-external', external: false, + inlineDynamicImport: false, moduleSideEffects: true } }, { source: 'resolved-object-external', - expected: { id: 'resolved:resolved-object-external', external: true, moduleSideEffects: true } + expected: { + id: 'resolved:resolved-object-external', + external: true, + inlineDynamicImport: false, + moduleSideEffects: true + } } ]; diff --git a/test/incremental/index.js b/test/incremental/index.js index 147ba0789de..fcbd64cfd84 100644 --- a/test/incremental/index.js +++ b/test/incremental/index.js @@ -265,8 +265,13 @@ describe('incremental', () => { assert.equal(bundle.cache.modules[1].id, 'entry'); assert.deepEqual(bundle.cache.modules[1].resolvedIds, { - foo: { id: 'foo', external: false, moduleSideEffects: true }, - external: { id: 'external', external: true, moduleSideEffects: true } + foo: { id: 'foo', external: false, inlineDynamicImport: false, moduleSideEffects: true }, + external: { + id: 'external', + external: true, + inlineDynamicImport: false, + moduleSideEffects: true + } }); }); }); From ce73ae86535ec71095c79fe50842359c8f137d9e Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Fri, 10 Jan 2020 15:25:45 +0100 Subject: [PATCH 3/4] Add basic test --- src/Module.ts | 2 +- src/ModuleLoader.ts | 3 ++ .../inline-in-various-hooks/_config.js | 36 +++++++++++++++++ .../amd/generated-dep-not-inlined.js | 8 ++++ .../_expected/amd/main.js | 34 ++++++++++++++++ .../cjs/generated-dep-not-inlined.js | 6 +++ .../_expected/cjs/main.js | 32 +++++++++++++++ .../_expected/es/generated-dep-not-inlined.js | 4 ++ .../_expected/es/main.js | 30 ++++++++++++++ .../system/generated-dep-not-inlined.js | 11 ++++++ .../_expected/system/main.js | 39 +++++++++++++++++++ .../dep-inlined-via-load.js | 2 + .../dep-inlined-via-resolveId.js | 2 + .../dep-inlined-via-transform.js | 2 + .../dep-not-inlined.js | 2 + .../inline-in-various-hooks/main.js | 6 +++ 16 files changed, 218 insertions(+), 1 deletion(-) create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_config.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/amd/generated-dep-not-inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/amd/main.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/cjs/generated-dep-not-inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/cjs/main.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/es/generated-dep-not-inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/es/main.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/system/generated-dep-not-inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/system/main.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-inlined-via-load.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-inlined-via-resolveId.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-inlined-via-transform.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-not-inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/main.js diff --git a/src/Module.ts b/src/Module.ts index 2ea6bc0973a..e0ae83d2a4c 100644 --- a/src/Module.ts +++ b/src/Module.ts @@ -562,7 +562,6 @@ export default class Module { } if (typeof inlineDynamicImport === 'boolean') { this.inlineDynamicImport = inlineDynamicImport; - console.log(this.id, inlineDynamicImport); } timeStart('generate ast', 3); @@ -642,6 +641,7 @@ export default class Module { customTransformCache: this.customTransformCache, dependencies: this.dependencies.map(module => module.id), id: this.id, + inlineDynamicImport: this.inlineDynamicImport, moduleSideEffects: this.moduleSideEffects, originalCode: this.originalCode, originalSourcemap: this.originalSourcemap, diff --git a/src/ModuleLoader.ts b/src/ModuleLoader.ts index 383186b442f..a158e98cc03 100644 --- a/src/ModuleLoader.ts +++ b/src/ModuleLoader.ts @@ -322,6 +322,9 @@ export class ModuleLoader { if (typeof sourceDescription.moduleSideEffects === 'boolean') { module.moduleSideEffects = sourceDescription.moduleSideEffects; } + if (typeof sourceDescription.inlineDynamicImport === 'boolean') { + module.inlineDynamicImport = sourceDescription.inlineDynamicImport; + } return transform(this.graph, sourceDescription, module); }) .then((source: TransformModuleJSON | ModuleJSON) => { diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_config.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_config.js new file mode 100644 index 00000000000..9a293dc921c --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_config.js @@ -0,0 +1,36 @@ +const fs = require('fs'); +const path = require('path'); + +module.exports = { + description: 'inlines dynamic imports marked for inlining', + options: { + input: 'main.js', + plugins: { + resolveId(id, importer) { + if (id.endsWith('dep-inlined-via-resolveId.js')) { + return this.resolve(id, importer, { skipSelf: true }).then(resolution => + Object.assign({}, resolution, { inlineDynamicImport: true }) + ); + } + }, + load(id) { + if (id.endsWith('dep-inlined-via-load.js')) { + return { + code: fs.readFileSync(path.resolve(__dirname, 'dep-inlined-via-load.js'), { + encoding: 'utf8' + }), + inlineDynamicImport: true + }; + } + }, + transform(code, id) { + if (id.endsWith('dep-inlined-via-transform.js')) { + return { + code, + inlineDynamicImport: true + }; + } + } + } + } +}; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/amd/generated-dep-not-inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/amd/generated-dep-not-inlined.js new file mode 100644 index 00000000000..8648b96d3b4 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/amd/generated-dep-not-inlined.js @@ -0,0 +1,8 @@ +define(['exports'], function (exports) { 'use strict'; + + console.log('not inlined'); + const value = 'not inlined'; + + exports.value = value; + +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/amd/main.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/amd/main.js new file mode 100644 index 00000000000..bb57ce57c2f --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/amd/main.js @@ -0,0 +1,34 @@ +define(['require'], function (require) { 'use strict'; + + Promise.resolve().then(function () { return depInlinedViaResolveId; }).then(console.log); + Promise.resolve().then(function () { return depInlinedViaLoad; }).then(console.log); + Promise.resolve().then(function () { return depInlinedViaTransform; }).then(console.log); + new Promise(function (resolve, reject) { require(['./generated-dep-not-inlined'], resolve, reject) }).then(console.log); + + console.log('main'); + + console.log('resolveId'); + const value = 'resolveId'; + + var depInlinedViaResolveId = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value + }); + + console.log('load'); + const value$1 = 'load'; + + var depInlinedViaLoad = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value$1 + }); + + console.log('transform'); + const value$2 = 'transform'; + + var depInlinedViaTransform = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value$2 + }); + +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/cjs/generated-dep-not-inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/cjs/generated-dep-not-inlined.js new file mode 100644 index 00000000000..b932e7c5ce9 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/cjs/generated-dep-not-inlined.js @@ -0,0 +1,6 @@ +'use strict'; + +console.log('not inlined'); +const value = 'not inlined'; + +exports.value = value; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/cjs/main.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/cjs/main.js new file mode 100644 index 00000000000..9051b5ff4df --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/cjs/main.js @@ -0,0 +1,32 @@ +'use strict'; + +Promise.resolve().then(function () { return depInlinedViaResolveId; }).then(console.log); +Promise.resolve().then(function () { return depInlinedViaLoad; }).then(console.log); +Promise.resolve().then(function () { return depInlinedViaTransform; }).then(console.log); +new Promise(function (resolve) { resolve(require('./generated-dep-not-inlined.js')); }).then(console.log); + +console.log('main'); + +console.log('resolveId'); +const value = 'resolveId'; + +var depInlinedViaResolveId = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value +}); + +console.log('load'); +const value$1 = 'load'; + +var depInlinedViaLoad = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value$1 +}); + +console.log('transform'); +const value$2 = 'transform'; + +var depInlinedViaTransform = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value$2 +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/es/generated-dep-not-inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/es/generated-dep-not-inlined.js new file mode 100644 index 00000000000..7bc5039cceb --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/es/generated-dep-not-inlined.js @@ -0,0 +1,4 @@ +console.log('not inlined'); +const value = 'not inlined'; + +export { value }; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/es/main.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/es/main.js new file mode 100644 index 00000000000..c4168211746 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/es/main.js @@ -0,0 +1,30 @@ +Promise.resolve().then(function () { return depInlinedViaResolveId; }).then(console.log); +Promise.resolve().then(function () { return depInlinedViaLoad; }).then(console.log); +Promise.resolve().then(function () { return depInlinedViaTransform; }).then(console.log); +import('./generated-dep-not-inlined.js').then(console.log); + +console.log('main'); + +console.log('resolveId'); +const value = 'resolveId'; + +var depInlinedViaResolveId = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value +}); + +console.log('load'); +const value$1 = 'load'; + +var depInlinedViaLoad = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value$1 +}); + +console.log('transform'); +const value$2 = 'transform'; + +var depInlinedViaTransform = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value$2 +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/system/generated-dep-not-inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/system/generated-dep-not-inlined.js new file mode 100644 index 00000000000..01aa89de787 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/system/generated-dep-not-inlined.js @@ -0,0 +1,11 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + console.log('not inlined'); + const value = exports('value', 'not inlined'); + + } + }; +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/system/main.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/system/main.js new file mode 100644 index 00000000000..2f3c8968176 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/_expected/system/main.js @@ -0,0 +1,39 @@ +System.register([], function (exports, module) { + 'use strict'; + return { + execute: function () { + + Promise.resolve().then(function () { return depInlinedViaResolveId; }).then(console.log); + Promise.resolve().then(function () { return depInlinedViaLoad; }).then(console.log); + Promise.resolve().then(function () { return depInlinedViaTransform; }).then(console.log); + module.import('./generated-dep-not-inlined.js').then(console.log); + + console.log('main'); + + console.log('resolveId'); + const value = 'resolveId'; + + var depInlinedViaResolveId = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value + }); + + console.log('load'); + const value$1 = 'load'; + + var depInlinedViaLoad = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value$1 + }); + + console.log('transform'); + const value$2 = 'transform'; + + var depInlinedViaTransform = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value$2 + }); + + } + }; +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-inlined-via-load.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-inlined-via-load.js new file mode 100644 index 00000000000..331c650c7fd --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-inlined-via-load.js @@ -0,0 +1,2 @@ +console.log('load'); +export const value = 'load'; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-inlined-via-resolveId.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-inlined-via-resolveId.js new file mode 100644 index 00000000000..fe7683bd805 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-inlined-via-resolveId.js @@ -0,0 +1,2 @@ +console.log('resolveId'); +export const value = 'resolveId'; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-inlined-via-transform.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-inlined-via-transform.js new file mode 100644 index 00000000000..9812028edb8 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-inlined-via-transform.js @@ -0,0 +1,2 @@ +console.log('transform'); +export const value = 'transform'; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-not-inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-not-inlined.js new file mode 100644 index 00000000000..9073eb47b93 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/dep-not-inlined.js @@ -0,0 +1,2 @@ +console.log('not inlined'); +export const value = 'not inlined'; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/main.js b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/main.js new file mode 100644 index 00000000000..7504d19b3b8 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-in-various-hooks/main.js @@ -0,0 +1,6 @@ +import('./dep-inlined-via-resolveId.js').then(console.log); +import('./dep-inlined-via-load.js').then(console.log); +import('./dep-inlined-via-transform.js').then(console.log); +import('./dep-not-inlined.js').then(console.log); + +console.log('main'); From de411982e5f0404d005eecb2b96da4f86ba5228e Mon Sep 17 00:00:00 2001 From: Lukas Taegert-Atkinson Date: Fri, 10 Jan 2020 15:46:35 +0100 Subject: [PATCH 4/4] Add tests for shared and conditional dynamic imports --- .../inline-conditionally/_config.js | 16 ++++++++++++++ .../_expected/amd/main.js | 17 ++++++++++++++ .../_expected/cjs/main.js | 15 +++++++++++++ .../inline-conditionally/_expected/es/main.js | 13 +++++++++++ .../_expected/system/main.js | 22 +++++++++++++++++++ .../inline-conditionally/inlined.js | 2 ++ .../inline-conditionally/main.js | 5 +++++ .../inline-shared-2/_config.js | 16 ++++++++++++++ .../_expected/amd/generated-inlined.js | 10 +++++++++ .../inline-shared-2/_expected/amd/main1.js | 7 ++++++ .../inline-shared-2/_expected/amd/main2.js | 7 ++++++ .../_expected/cjs/generated-inlined.js | 8 +++++++ .../inline-shared-2/_expected/cjs/main1.js | 7 ++++++ .../inline-shared-2/_expected/cjs/main2.js | 7 ++++++ .../_expected/es/generated-inlined.js | 6 +++++ .../inline-shared-2/_expected/es/main1.js | 5 +++++ .../inline-shared-2/_expected/es/main2.js | 5 +++++ .../_expected/system/generated-inlined.js | 13 +++++++++++ .../inline-shared-2/_expected/system/main1.js | 13 +++++++++++ .../inline-shared-2/_expected/system/main2.js | 13 +++++++++++ .../inline-shared-2/dep.js | 2 ++ .../inline-shared-2/inlined.js | 2 ++ .../inline-shared-2/main1.js | 4 ++++ .../inline-shared-2/main2.js | 4 ++++ .../inline-shared/_config.js | 16 ++++++++++++++ .../_expected/amd/generated-inlined.js | 8 +++++++ .../inline-shared/_expected/amd/main1.js | 7 ++++++ .../inline-shared/_expected/amd/main2.js | 7 ++++++ .../_expected/cjs/generated-inlined.js | 6 +++++ .../inline-shared/_expected/cjs/main1.js | 7 ++++++ .../inline-shared/_expected/cjs/main2.js | 7 ++++++ .../_expected/es/generated-inlined.js | 4 ++++ .../inline-shared/_expected/es/main1.js | 5 +++++ .../inline-shared/_expected/es/main2.js | 5 +++++ .../_expected/system/generated-inlined.js | 11 ++++++++++ .../inline-shared/_expected/system/main1.js | 13 +++++++++++ .../inline-shared/_expected/system/main2.js | 13 +++++++++++ .../inline-shared/inlined.js | 2 ++ .../inline-shared/main1.js | 3 +++ .../inline-shared/main2.js | 3 +++ 40 files changed, 336 insertions(+) create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_config.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/amd/main.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/cjs/main.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/es/main.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/system/main.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-conditionally/inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-conditionally/main.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_config.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/amd/generated-inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/amd/main1.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/amd/main2.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/cjs/generated-inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/cjs/main1.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/cjs/main2.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/es/generated-inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/es/main1.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/es/main2.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/system/generated-inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/system/main1.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/system/main2.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/dep.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/main1.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared-2/main2.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/_config.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/amd/generated-inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/amd/main1.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/amd/main2.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/cjs/generated-inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/cjs/main1.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/cjs/main2.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/es/generated-inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/es/main1.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/es/main2.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/system/generated-inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/system/main1.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/system/main2.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/inlined.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/main1.js create mode 100644 test/chunking-form/samples/inline-dynamic-import/inline-shared/main2.js diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_config.js b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_config.js new file mode 100644 index 00000000000..6d997b46fe8 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_config.js @@ -0,0 +1,16 @@ +module.exports = { + description: 'inlines dynamic imports with side-effects that are only executed conditionally', + options: { + input: 'main.js', + plugins: { + transform(code, id) { + if (id.endsWith('inlined.js')) { + return { + code, + inlineDynamicImport: true + }; + } + } + } + } +}; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/amd/main.js b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/amd/main.js new file mode 100644 index 00000000000..da3622bb554 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/amd/main.js @@ -0,0 +1,17 @@ +define(function () { 'use strict'; + + if (globalThis.unknown) { + Promise.resolve().then(function () { return inlined; }).then(console.log); + } + + console.log('main1'); + + console.log('inlined'); + const value = 'inlined'; + + var inlined = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value + }); + +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/cjs/main.js b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/cjs/main.js new file mode 100644 index 00000000000..b3bb328c132 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/cjs/main.js @@ -0,0 +1,15 @@ +'use strict'; + +if (globalThis.unknown) { + Promise.resolve().then(function () { return inlined; }).then(console.log); +} + +console.log('main1'); + +console.log('inlined'); +const value = 'inlined'; + +var inlined = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/es/main.js b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/es/main.js new file mode 100644 index 00000000000..3d3d3db50c0 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/es/main.js @@ -0,0 +1,13 @@ +if (globalThis.unknown) { + Promise.resolve().then(function () { return inlined; }).then(console.log); +} + +console.log('main1'); + +console.log('inlined'); +const value = 'inlined'; + +var inlined = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/system/main.js b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/system/main.js new file mode 100644 index 00000000000..38eaae7b04a --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/_expected/system/main.js @@ -0,0 +1,22 @@ +System.register([], function () { + 'use strict'; + return { + execute: function () { + + if (globalThis.unknown) { + Promise.resolve().then(function () { return inlined; }).then(console.log); + } + + console.log('main1'); + + console.log('inlined'); + const value = 'inlined'; + + var inlined = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value + }); + + } + }; +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/inlined.js new file mode 100644 index 00000000000..c31c3f5c4d6 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/inlined.js @@ -0,0 +1,2 @@ +console.log('inlined'); +export const value = 'inlined'; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/main.js b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/main.js new file mode 100644 index 00000000000..02f5b86c2cd --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-conditionally/main.js @@ -0,0 +1,5 @@ +if (globalThis.unknown) { + import('./inlined.js').then(console.log); +} + +console.log('main1'); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_config.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_config.js new file mode 100644 index 00000000000..d9a5cfa90e8 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_config.js @@ -0,0 +1,16 @@ +module.exports = { + description: 'inlines dynamic imports shared between chunks', + options: { + input: ['main1.js', 'main2.js'], + plugins: { + transform(code, id) { + if (id.endsWith('inlined.js')) { + return { + code, + inlineDynamicImport: true + }; + } + } + } + } +}; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/amd/generated-inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/amd/generated-inlined.js new file mode 100644 index 00000000000..ab124bcf1d2 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/amd/generated-inlined.js @@ -0,0 +1,10 @@ +define(['exports'], function (exports) { 'use strict'; + + console.log('dep'); + + console.log('inlined'); + const value = 'inlined'; + + exports.value = value; + +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/amd/main1.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/amd/main1.js new file mode 100644 index 00000000000..a3f056ccdbe --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/amd/main1.js @@ -0,0 +1,7 @@ +define(['require', './generated-inlined'], function (require, inlined) { 'use strict'; + + new Promise(function (resolve, reject) { require(['./generated-inlined'], resolve, reject) }).then(console.log); + + console.log('main1'); + +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/amd/main2.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/amd/main2.js new file mode 100644 index 00000000000..7e101c2379d --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/amd/main2.js @@ -0,0 +1,7 @@ +define(['require', './generated-inlined'], function (require, inlined) { 'use strict'; + + new Promise(function (resolve, reject) { require(['./generated-inlined'], resolve, reject) }).then(console.log); + + console.log('main2'); + +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/cjs/generated-inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/cjs/generated-inlined.js new file mode 100644 index 00000000000..00174788b5f --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/cjs/generated-inlined.js @@ -0,0 +1,8 @@ +'use strict'; + +console.log('dep'); + +console.log('inlined'); +const value = 'inlined'; + +exports.value = value; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/cjs/main1.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/cjs/main1.js new file mode 100644 index 00000000000..38321df3c74 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/cjs/main1.js @@ -0,0 +1,7 @@ +'use strict'; + +require('./generated-inlined.js'); + +new Promise(function (resolve) { resolve(require('./generated-inlined.js')); }).then(console.log); + +console.log('main1'); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/cjs/main2.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/cjs/main2.js new file mode 100644 index 00000000000..5f5b2e4eea6 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/cjs/main2.js @@ -0,0 +1,7 @@ +'use strict'; + +require('./generated-inlined.js'); + +new Promise(function (resolve) { resolve(require('./generated-inlined.js')); }).then(console.log); + +console.log('main2'); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/es/generated-inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/es/generated-inlined.js new file mode 100644 index 00000000000..fad6e03cd27 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/es/generated-inlined.js @@ -0,0 +1,6 @@ +console.log('dep'); + +console.log('inlined'); +const value = 'inlined'; + +export { value }; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/es/main1.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/es/main1.js new file mode 100644 index 00000000000..bb689153ec8 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/es/main1.js @@ -0,0 +1,5 @@ +import './generated-inlined.js'; + +import('./generated-inlined.js').then(console.log); + +console.log('main1'); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/es/main2.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/es/main2.js new file mode 100644 index 00000000000..98873534af1 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/es/main2.js @@ -0,0 +1,5 @@ +import './generated-inlined.js'; + +import('./generated-inlined.js').then(console.log); + +console.log('main2'); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/system/generated-inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/system/generated-inlined.js new file mode 100644 index 00000000000..6f6c1885595 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/system/generated-inlined.js @@ -0,0 +1,13 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + console.log('dep'); + + console.log('inlined'); + const value = exports('value', 'inlined'); + + } + }; +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/system/main1.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/system/main1.js new file mode 100644 index 00000000000..cc6a1fe0c29 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/system/main1.js @@ -0,0 +1,13 @@ +System.register(['./generated-inlined.js'], function (exports, module) { + 'use strict'; + return { + setters: [function () {}], + execute: function () { + + module.import('./generated-inlined.js').then(console.log); + + console.log('main1'); + + } + }; +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/system/main2.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/system/main2.js new file mode 100644 index 00000000000..c66824fb95c --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/_expected/system/main2.js @@ -0,0 +1,13 @@ +System.register(['./generated-inlined.js'], function (exports, module) { + 'use strict'; + return { + setters: [function () {}], + execute: function () { + + module.import('./generated-inlined.js').then(console.log); + + console.log('main2'); + + } + }; +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/dep.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/dep.js new file mode 100644 index 00000000000..4924c41a354 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/dep.js @@ -0,0 +1,2 @@ +console.log('dep'); +export const value = 'dep'; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/inlined.js new file mode 100644 index 00000000000..c31c3f5c4d6 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/inlined.js @@ -0,0 +1,2 @@ +console.log('inlined'); +export const value = 'inlined'; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/main1.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/main1.js new file mode 100644 index 00000000000..947a5b55076 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/main1.js @@ -0,0 +1,4 @@ +import('./inlined.js').then(console.log); +import './dep.js'; + +console.log('main1'); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/main2.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/main2.js new file mode 100644 index 00000000000..3623c9f85cb --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared-2/main2.js @@ -0,0 +1,4 @@ +import('./inlined.js').then(console.log); +import './dep.js'; + +console.log('main2'); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/_config.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_config.js new file mode 100644 index 00000000000..d9a5cfa90e8 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_config.js @@ -0,0 +1,16 @@ +module.exports = { + description: 'inlines dynamic imports shared between chunks', + options: { + input: ['main1.js', 'main2.js'], + plugins: { + transform(code, id) { + if (id.endsWith('inlined.js')) { + return { + code, + inlineDynamicImport: true + }; + } + } + } + } +}; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/amd/generated-inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/amd/generated-inlined.js new file mode 100644 index 00000000000..4b4f805a177 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/amd/generated-inlined.js @@ -0,0 +1,8 @@ +define(['exports'], function (exports) { 'use strict'; + + console.log('inlined'); + const value = 'inlined'; + + exports.value = value; + +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/amd/main1.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/amd/main1.js new file mode 100644 index 00000000000..a3f056ccdbe --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/amd/main1.js @@ -0,0 +1,7 @@ +define(['require', './generated-inlined'], function (require, inlined) { 'use strict'; + + new Promise(function (resolve, reject) { require(['./generated-inlined'], resolve, reject) }).then(console.log); + + console.log('main1'); + +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/amd/main2.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/amd/main2.js new file mode 100644 index 00000000000..7e101c2379d --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/amd/main2.js @@ -0,0 +1,7 @@ +define(['require', './generated-inlined'], function (require, inlined) { 'use strict'; + + new Promise(function (resolve, reject) { require(['./generated-inlined'], resolve, reject) }).then(console.log); + + console.log('main2'); + +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/cjs/generated-inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/cjs/generated-inlined.js new file mode 100644 index 00000000000..51308efaad8 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/cjs/generated-inlined.js @@ -0,0 +1,6 @@ +'use strict'; + +console.log('inlined'); +const value = 'inlined'; + +exports.value = value; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/cjs/main1.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/cjs/main1.js new file mode 100644 index 00000000000..38321df3c74 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/cjs/main1.js @@ -0,0 +1,7 @@ +'use strict'; + +require('./generated-inlined.js'); + +new Promise(function (resolve) { resolve(require('./generated-inlined.js')); }).then(console.log); + +console.log('main1'); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/cjs/main2.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/cjs/main2.js new file mode 100644 index 00000000000..5f5b2e4eea6 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/cjs/main2.js @@ -0,0 +1,7 @@ +'use strict'; + +require('./generated-inlined.js'); + +new Promise(function (resolve) { resolve(require('./generated-inlined.js')); }).then(console.log); + +console.log('main2'); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/es/generated-inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/es/generated-inlined.js new file mode 100644 index 00000000000..a37cad6aa28 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/es/generated-inlined.js @@ -0,0 +1,4 @@ +console.log('inlined'); +const value = 'inlined'; + +export { value }; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/es/main1.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/es/main1.js new file mode 100644 index 00000000000..bb689153ec8 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/es/main1.js @@ -0,0 +1,5 @@ +import './generated-inlined.js'; + +import('./generated-inlined.js').then(console.log); + +console.log('main1'); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/es/main2.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/es/main2.js new file mode 100644 index 00000000000..98873534af1 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/es/main2.js @@ -0,0 +1,5 @@ +import './generated-inlined.js'; + +import('./generated-inlined.js').then(console.log); + +console.log('main2'); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/system/generated-inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/system/generated-inlined.js new file mode 100644 index 00000000000..448517607c7 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/system/generated-inlined.js @@ -0,0 +1,11 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + console.log('inlined'); + const value = exports('value', 'inlined'); + + } + }; +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/system/main1.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/system/main1.js new file mode 100644 index 00000000000..cc6a1fe0c29 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/system/main1.js @@ -0,0 +1,13 @@ +System.register(['./generated-inlined.js'], function (exports, module) { + 'use strict'; + return { + setters: [function () {}], + execute: function () { + + module.import('./generated-inlined.js').then(console.log); + + console.log('main1'); + + } + }; +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/system/main2.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/system/main2.js new file mode 100644 index 00000000000..c66824fb95c --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/_expected/system/main2.js @@ -0,0 +1,13 @@ +System.register(['./generated-inlined.js'], function (exports, module) { + 'use strict'; + return { + setters: [function () {}], + execute: function () { + + module.import('./generated-inlined.js').then(console.log); + + console.log('main2'); + + } + }; +}); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/inlined.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/inlined.js new file mode 100644 index 00000000000..c31c3f5c4d6 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/inlined.js @@ -0,0 +1,2 @@ +console.log('inlined'); +export const value = 'inlined'; diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/main1.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/main1.js new file mode 100644 index 00000000000..e689bffef84 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/main1.js @@ -0,0 +1,3 @@ +import('./inlined.js').then(console.log); + +console.log('main1'); diff --git a/test/chunking-form/samples/inline-dynamic-import/inline-shared/main2.js b/test/chunking-form/samples/inline-dynamic-import/inline-shared/main2.js new file mode 100644 index 00000000000..ee55dbc2544 --- /dev/null +++ b/test/chunking-form/samples/inline-dynamic-import/inline-shared/main2.js @@ -0,0 +1,3 @@ +import('./inlined.js').then(console.log); + +console.log('main2');