diff --git a/.lintstagedrc b/.lintstagedrc index a7b8a40dd73..c2078e45c9a 100644 --- a/.lintstagedrc +++ b/.lintstagedrc @@ -3,7 +3,7 @@ "prettier --write", "tslint --project . --fix" ], - "test/**/*.ts": [ + "test/typescript/**/*.ts": [ "prettier --write", "tslint --project test/typescript --fix" ], diff --git a/docs/01-command-line-reference.md b/docs/01-command-line-reference.md index 2a5a6819746..057b6e8cdc0 100755 --- a/docs/01-command-line-reference.md +++ b/docs/01-command-line-reference.md @@ -35,11 +35,8 @@ export default { // can be an array (for multiple inputs) // advanced input options cache, - inlineDynamicImports, - manualChunks, onwarn, preserveEntrySignatures, - preserveModules, strictDeprecations, // danger zone @@ -73,11 +70,14 @@ export default { // can be an array (for multiple inputs) extend, footer, hoistTransitiveImports, + inlineDynamicImports, interop, intro, + manualChunks, minifyInternalExports, outro, paths, + preserveModules, sourcemap, sourcemapExcludeSources, sourcemapFile, diff --git a/docs/02-javascript-api.md b/docs/02-javascript-api.md index cadcae07379..ed03f0a12aa 100755 --- a/docs/02-javascript-api.md +++ b/docs/02-javascript-api.md @@ -83,11 +83,8 @@ const inputOptions = { // advanced input options cache, - inlineDynamicImports, - manualChunks, onwarn, preserveEntrySignatures, - preserveModules, strictDeprecations, // danger zone @@ -129,11 +126,14 @@ const outputOptions = { externalLiveBindings, footer, hoistTransitiveImports, + inlineDynamicImports, interop, intro, + manualChunks, minifyInternalExports, outro, paths, + preserveModules, sourcemap, sourcemapExcludeSources, sourcemapFile, diff --git a/docs/04-tutorial.md b/docs/04-tutorial.md index 9be6fbed265..7829cf3315e 100755 --- a/docs/04-tutorial.md +++ b/docs/04-tutorial.md @@ -282,7 +282,7 @@ var version=function(){"use strict";var n="1.0.0";return function(){console.log( ### Code Splitting -For code splitting, there are cases where Rollup splits code into chunks automatically, like dynamic loading or multiple entry points, and there is a way to explicitly tell Rollup which modules to split into separate chunks via the [`manualChunks`](guide/en/#manualchunks) option. +For code splitting, there are cases where Rollup splits code into chunks automatically, like dynamic loading or multiple entry points, and there is a way to explicitly tell Rollup which modules to split into separate chunks via the [`output.manualChunks`](guide/en/#outputmanualchunks) option. To use the code splitting feature to achieve the lazy dynamic loading (where some imported module(s) is only loaded after executing a function), we go back to the original example and modify `src/main.js` to load `src/foo.js` dynamically instead of statically: diff --git a/docs/06-faqs.md b/docs/06-faqs.md index 3fcb532f70a..fa902b4afa0 100755 --- a/docs/06-faqs.md +++ b/docs/06-faqs.md @@ -61,7 +61,7 @@ With this optimization, a JavaScript engine will discover all transitive depende 2. Load and parse `other-entry.js` and `external`. The import of `other-entry.js` is already loaded and parsed. 3. Execute `main.js`. -There may be situations where this optimization is not desired, in which case you can turn it off via the [`output.hoistTransitiveImports`](guide/en/#outputhoisttransitiveimports) option. This optimization is also never applied when using the [`preserveModules`](guide/en/#preservemodules) option. +There may be situations where this optimization is not desired, in which case you can turn it off via the [`output.hoistTransitiveImports`](guide/en/#outputhoisttransitiveimports) option. This optimization is also never applied when using the [`output.preserveModules`](guide/en/#outputpreservemodules) option. #### How do I add polyfills to a Rollup bundle? @@ -94,7 +94,7 @@ For most code this is not a problem, because Rollup can guarantee: This is however a problem for polyfills, as those usually need to be executed first but it is usually not desired to place an import of the polyfill in every single module. Luckily, this is not needed: 1. If there are no external dependencies that depend on the polyfill, it is enough to add an import of the polyfill as first statement to each static entry point. -2. Otherwise, additionally making the polyfill a separate entry or [manual chunk](guide/en/#manualchunks) will always make sure it is executed first. +2. Otherwise, additionally making the polyfill a separate entry or [manual chunk](guide/en/#outputmanualchunks) will always make sure it is executed first. #### Is Rollup meant for building libraries or applications? diff --git a/docs/999-big-list-of-options.md b/docs/999-big-list-of-options.md index 58270b8758f..52870464e0d 100755 --- a/docs/999-big-list-of-options.md +++ b/docs/999-big-list-of-options.md @@ -316,92 +316,6 @@ buildWithCache() }) ``` -#### inlineDynamicImports -Type: `boolean`
-CLI: `--inlineDynamicImports`/`--no-inlineDynamicImports` -Default: `false` - -This will inline dynamic imports instead of creating new chunks to create a single bundle. Only possible if a single input is provided. - -#### manualChunks -Type: `{ [chunkAlias: string]: string[] } | ((id: string, {getModuleInfo, getModuleIds}) => string | void)` - -Allows the creation of custom shared common chunks. When using the object form, each property represents a chunk that contains the listed modules and all their dependencies if they are part of the module graph unless they are already in another manual chunk. The name of the chunk will be determined by the property key. - -Note that it is not necessary for the listed modules themselves to be be part of the module graph, which is useful if you are working with `@rollup/plugin-node-resolve` and use deep imports from packages. For instance - -``` -manualChunks: { - lodash: ['lodash'] -} -``` - -will put all lodash modules into a manual chunk even if you are only using imports of the form `import get from 'lodash/get'`. - -When using the function form, each resolved module id will be passed to the function. If a string is returned, the module and all its dependency will be added to the manual chunk with the given name. For instance this will create a `vendor` chunk containing all dependencies inside `node_modules`: - -```javascript -manualChunks(id) { - if (id.includes('node_modules')) { - return 'vendor'; - } -} -``` - -Be aware that manual chunks can change the behaviour of the application if side-effects are triggered before the corresponding modules are actually used. - -When using the function form, `manualChunks` will be passed an object as second parameter containing the functions `getModuleInfo` and `getModuleIds` that work the same way as [`this.getModuleInfo`](guide/en/#thisgetmoduleinfomoduleid-string--moduleinfo) and [`this.getModuleIds`](guide/en/#thisgetmoduleids--iterableiteratorstring) on the plugin context. - -This can be used to dynamically determine into which manual chunk a module should be placed depending on its position in the module graph. For instance consider a scenario where you have a set of components, each of which dynamically imports a set of translated strings, i.e. - -```js -// Inside the "foo" component - -function getTranslatedStrings(currentLanguage) { - switch (currentLanguage) { - case 'en': return import('./foo.strings.en.js'); - case 'de': return import('./foo.strings.de.js'); - // ... - } -} -``` - -If a lot of such components are used together, this will result in a lot of dynamic imports of very small chunks: Even though we known that all language files of the same language that are imported by the same chunk will always be used together, Rollup does not have this information. - -The following code will merge all files of the same language that are only used by a single entry point: - -```js -manualChunks(id, { getModuleInfo }) { - const match = /.*\.strings\.(\w+)\.js/.exec(id); - if (match) { - const language = match[1]; // e.g. "en" - const dependentEntryPoints = []; - - // we use a Set here so we handle each module at most once. This - // prevents infinite loops in case of circular dependencies - const idsToHandle = new Set(getModuleInfo(id).dynamicImporters); - - for (const moduleId of idsToHandle) { - const { isEntry, dynamicImporters, importers } = getModuleInfo(moduleId); - if (isEntry || dynamicImporters.length > 0) dependentEntryPoints.push(moduleId); - - // The Set iterator is intelligent enough to iterate over elements that - // are added during iteration - for (const importerId of importers) idsToHandle.add(importerId); - } - - // If there is a unique entry, we put it into into a chunk based on the entry name - if (dependentEntryPoints.length === 1) { - return `${dependentEntryPoints[0].split('/').slice(-1)[0].split('.')[0]}.strings.${language}`; - } - // For multiple entries, we put it into a "shared" chunk - if (dependentEntryPoints.length > 1) { - return `shared.strings.${language}`; - } - } -} -``` - #### onwarn Type: `(warning: RollupWarning, defaultHandler: (warning: string | RollupWarning) => void) => void;` @@ -485,7 +399,7 @@ Default: `"[name]-[hash].js"` The pattern to use for naming shared chunks created when code-splitting. Pattern supports the following placeholders: * `[format]`: The rendering format defined in the output options, e.g. `es` or `cjs`. * `[hash]`: A hash based on the content of the chunk and the content of all its dependencies. - * `[name]`: The name of the chunk. This can be explicitly set via the [`manualChunks`](guide/en/#manualchunks) option or when the chunk is created by a plugin via [`this.emitFile`](guide/en/#thisemitfileemittedfile-emittedchunk--emittedasset--string). Otherwise it will be derived from the chunk contents. + * `[name]`: The name of the chunk. This can be explicitly set via the [`output.manualChunks`](guide/en/#outputmanualchunks) option or when the chunk is created by a plugin via [`this.emitFile`](guide/en/#thisemitfileemittedfile-emittedchunk--emittedasset--string). Otherwise it will be derived from the chunk contents. Forward slashes `/` can be used to place files in sub-directories. See also [`output.assetFileNames`](guide/en/#outputassetfilenames), [`output.entryFileNames`](guide/en/#outputentryfilenames). @@ -508,7 +422,7 @@ The pattern to use for chunks created from entry points. Pattern supports the fo Forward slashes `/` can be used to place files in sub-directories. See also [`output.assetFileNames`](guide/en/#outputassetfilenames), [`output.chunkFileNames`](guide/en/#outputchunkfilenames). -This pattern will also be used when using the [`preserveModules`](guide/en/#preservemodules) option. Here there is a different set of placeholders available, though: +This pattern will also be used when using the [`output.preserveModules`](guide/en/#outputpreservemodules) option. Here there is a different set of placeholders available, though: * `[format]`: The rendering format defined in the output options. * `[name]`: The file name (without extension) of the file. * `[ext]`: The extension of the file. @@ -526,7 +440,14 @@ Type: `boolean`
CLI: `--hoistTransitiveImports`/`--no-hoistTransitiveImports`
Default: `true` -By default when creating multiple chunks, transitive imports of entry chunks will be added as empty imports to the entry chunks. See ["Why do additional imports turn up in my entry chunks when code-splitting?"](guide/en/#why-do-additional-imports-turn-up-in-my-entry-chunks-when-code-splitting) for details and background. Setting this option to `false` will disable this behaviour. This option is ignored when using the [`preserveModules`](guide/en/#preservemodules) option as here, imports will never be hoisted. +By default when creating multiple chunks, transitive imports of entry chunks will be added as empty imports to the entry chunks. See ["Why do additional imports turn up in my entry chunks when code-splitting?"](guide/en/#why-do-additional-imports-turn-up-in-my-entry-chunks-when-code-splitting) for details and background. Setting this option to `false` will disable this behaviour. This option is ignored when using the [`output.preserveModules`](guide/en/#outputpreservemodules) option as here, imports will never be hoisted. + +#### output.inlineDynamicImports +Type: `boolean`
+CLI: `--inlineDynamicImports`/`--no-inlineDynamicImports` +Default: `false` + +This will inline dynamic imports instead of creating new chunks to create a single bundle. Only possible if a single input is provided. Note that this will change the execution order: A module that is only imported dynamically will be executed immediately if the dynamic import is inlined. #### output.interop Type: `boolean`
@@ -551,6 +472,85 @@ export default { }; ``` +#### output.manualChunks +Type: `{ [chunkAlias: string]: string[] } | ((id: string, {getModuleInfo, getModuleIds}) => string | void)` + +Allows the creation of custom shared common chunks. When using the object form, each property represents a chunk that contains the listed modules and all their dependencies if they are part of the module graph unless they are already in another manual chunk. The name of the chunk will be determined by the property key. + +Note that it is not necessary for the listed modules themselves to be be part of the module graph, which is useful if you are working with `@rollup/plugin-node-resolve` and use deep imports from packages. For instance + +``` +manualChunks: { + lodash: ['lodash'] +} +``` + +will put all lodash modules into a manual chunk even if you are only using imports of the form `import get from 'lodash/get'`. + +When using the function form, each resolved module id will be passed to the function. If a string is returned, the module and all its dependency will be added to the manual chunk with the given name. For instance this will create a `vendor` chunk containing all dependencies inside `node_modules`: + +```javascript +manualChunks(id) { + if (id.includes('node_modules')) { + return 'vendor'; + } +} +``` + +Be aware that manual chunks can change the behaviour of the application if side-effects are triggered before the corresponding modules are actually used. + +When using the function form, `manualChunks` will be passed an object as second parameter containing the functions `getModuleInfo` and `getModuleIds` that work the same way as [`this.getModuleInfo`](guide/en/#thisgetmoduleinfomoduleid-string--moduleinfo) and [`this.getModuleIds`](guide/en/#thisgetmoduleids--iterableiteratorstring) on the plugin context. + +This can be used to dynamically determine into which manual chunk a module should be placed depending on its position in the module graph. For instance consider a scenario where you have a set of components, each of which dynamically imports a set of translated strings, i.e. + +```js +// Inside the "foo" component + +function getTranslatedStrings(currentLanguage) { + switch (currentLanguage) { + case 'en': return import('./foo.strings.en.js'); + case 'de': return import('./foo.strings.de.js'); + // ... + } +} +``` + +If a lot of such components are used together, this will result in a lot of dynamic imports of very small chunks: Even though we known that all language files of the same language that are imported by the same chunk will always be used together, Rollup does not have this information. + +The following code will merge all files of the same language that are only used by a single entry point: + +```js +manualChunks(id, { getModuleInfo }) { + const match = /.*\.strings\.(\w+)\.js/.exec(id); + if (match) { + const language = match[1]; // e.g. "en" + const dependentEntryPoints = []; + + // we use a Set here so we handle each module at most once. This + // prevents infinite loops in case of circular dependencies + const idsToHandle = new Set(getModuleInfo(id).dynamicImporters); + + for (const moduleId of idsToHandle) { + const { isEntry, dynamicImporters, importers } = getModuleInfo(moduleId); + if (isEntry || dynamicImporters.length > 0) dependentEntryPoints.push(moduleId); + + // The Set iterator is intelligent enough to iterate over elements that + // are added during iteration + for (const importerId of importers) idsToHandle.add(importerId); + } + + // If there is a unique entry, we put it into into a chunk based on the entry name + if (dependentEntryPoints.length === 1) { + return `${dependentEntryPoints[0].split('/').slice(-1)[0].split('.')[0]}.strings.${language}`; + } + // For multiple entries, we put it into a "shared" chunk + if (dependentEntryPoints.length > 1) { + return `shared.strings.${language}`; + } + } +} +``` + #### output.minifyInternalExports Type: `boolean`
CLI: `--minifyInternalExports`/`--no-minifyInternalExports`
@@ -647,6 +647,54 @@ define(['https://d3js.org/d3.v4.min'], function (d3) { }); ``` +#### output.preserveModules +Type: `boolean`
+CLI: `--preserveModules`/`--no-preserveModules`
+Default: `false` + +Instead of creating as few chunks as possible, this mode will create separate chunks for all modules using the original module names as file names. Requires the [`output.dir`](guide/en/#outputdir) option. Tree-shaking will still be applied, suppressing files that are not used by the provided entry points or do not have side-effects when executed. This mode can be used to transform a file structure to a different module format. + +Note that when transforming to `cjs` or `amd` format, each file will by default be treated as an entry point with [`output.exports`](guide/en/#outputexports) set to `auto`. This means that e.g. for `cjs`, a file that only contains a default export will be rendered as + +```js +// input main.js +export default 42; + +// output main.js +'use strict'; + +var main = 42; + +module.exports = main; +``` + +assigning the value directly to `module.exports`. If someone imports this file, they will get access to the default export via + +```js +const main = require('./main.js'); +console.log(main); // 42 +``` + +As with regular entry points, files that mix default and named exports will produce warnings. You can avoid the warnings by forcing all files to use named export mode via `output.exports: "named"`. In that case, the default export needs to be accessed via the `.default` property of the export: + +```js +// input main.js +export default 42; + +// output main.js +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var main = 42; + +exports.default = main; + +// consuming file +const main = require('./main.js'); +console.log(main.default); // 42 +``` + #### output.sourcemap Type: `boolean | 'inline' | 'hidden'`
CLI: `-m`/`--sourcemap`/`--no-sourcemap`
@@ -769,55 +817,6 @@ console.log(shared); At the moment, the only way to override this setting for individual entry chunks is to use the plugin API and emit those chunks via [`this.emitFile`](guide/en/#thisemitfileemittedfile-emittedchunk--emittedasset--string) instead of using the [`input`](guide/en/#input) option. -#### preserveModules -Type: `boolean`
-CLI: `--preserveModules`/`--no-preserveModules`
-Default: `false` - -Instead of creating as few chunks as possible, this mode will create separate chunks for all modules using the original module names as file names. Requires the [`output.dir`](guide/en/#outputdir) option. Tree-shaking will still be applied, suppressing files that are not used by the provided entry points or do not have side-effects when executed. This mode can be used to transform a file structure to a different module format. - -Note that when transforming to `cjs` or `amd` format, each file will by default be treated as an entry point with [`output.exports`](guide/en/#outputexports) set to `auto`. This means that e.g. for `cjs`, a file that only contains a default export will be rendered as - -```js -// input main.js -export default 42; - -// output main.js -'use strict'; - -var main = 42; - -module.exports = main; -``` - -assigning the value directly to `module.exports`. If someone imports this file, they will get access to the default export via - -```js -const main = require('./main.js'); -console.log(main); // 42 -``` - -As with regular entry points, files that mix default and named exports will produce warnings. You can avoid the warnings by forcing all files to use named export mode via `output.exports: "named"`. In that case, the default export needs to be accessed via the `.default` property of the export: - -```js -// input main.js -export default 42; - -// output main.js -'use strict'; - -Object.defineProperty(exports, '__esModule', { value: true }); - -var main = 42; - -exports.default = main; - -// consuming file -const main = require('./main.js'); -console.log(main.default); // 42 -``` - - #### strictDeprecations Type: `boolean`
CLI: `--strictDeprecations`/`--no-strictDeprecations`
@@ -1363,6 +1362,23 @@ Whether to skip the `bundle.write()` step when a rebuild is triggered. ☢️ These options have been deprecated and may be removed in a future Rollup version. +#### inlineDynamicImports +_Use the [`output.inlineDynamicImports`](guide/en/#outputinlinedynamicimports) output option instead, which has the same signature._ + +#### manualChunks +_Use the [`output.manualChunks`](guide/en/#outputmanualchunks) output option instead, which has the same signature._ + +#### preserveModules +_Use the [`output.preserveModules`](guide/en/#outputpreservemodules) output option instead, which has the same signature._ + +#### output.dynamicImportFunction +_Use the [`renderDynamicImport`](guide/en/#renderdynamicimport) plugin hook instead._
+Type: `string`
+CLI: `--dynamicImportFunction `
+Default: `import` + +This will rename the dynamic import function to the chosen name when outputting ES bundles. This is useful for generating code that uses a dynamic import polyfill such as [this one](https://github.com/uupaa/dynamic-import-polyfill). + #### treeshake.pureExternalModules _Use [`treeshake.moduleSideEffects: 'no-external'`](guide/en/#treeshake) instead._
Type: `boolean | string[] | (id: string) => boolean | null`
@@ -1391,11 +1407,3 @@ console.log(42); ``` You can also supply a list of external ids to be considered pure or a function that is called whenever an external import could be removed. - -#### output.dynamicImportFunction -_Use the [`renderDynamicImport`](guide/en/#renderdynamicimport) plugin hook instead._
-Type: `string`
-CLI: `--dynamicImportFunction `
-Default: `import` - -This will rename the dynamic import function to the chosen name when outputting ES bundles. This is useful for generating code that uses a dynamic import polyfill such as [this one](https://github.com/uupaa/dynamic-import-polyfill). diff --git a/rollup.config.js b/rollup.config.js index 28445f9c021..3ea255a09c2 100644 --- a/rollup.config.js +++ b/rollup.config.js @@ -99,7 +99,8 @@ export default command => { ], treeshake, manualChunks: { rollup: ['src/node-entry.ts'] }, - strictDeprecations: true, + // TODO set this to `true` again once manualChunks has been moved to the output + strictDeprecations: false, output: { banner, chunkFileNames: 'shared/[name].js', diff --git a/src/Bundle.ts b/src/Bundle.ts index 162601cb6cf..d66eace0925 100644 --- a/src/Bundle.ts +++ b/src/Bundle.ts @@ -1,5 +1,9 @@ import Chunk from './Chunk'; +import ExternalModule from './ExternalModule'; +import Graph from './Graph'; +import Module from './Module'; import { + GetManualChunk, NormalizedInputOptions, NormalizedOutputOptions, OutputBundle, @@ -7,54 +11,54 @@ import { OutputChunk } from './rollup/types'; import { Addons, createAddons } from './utils/addons'; +import { getChunkAssignments } from './utils/chunkAssignment'; import commondir from './utils/commondir'; -import { error, warnDeprecation } from './utils/error'; +import { errCannotAssignModuleToChunk, error, warnDeprecation } from './utils/error'; +import { sortByExecutionOrder } from './utils/executionOrder'; import { FILE_PLACEHOLDER } from './utils/FileEmitter'; import { basename, isAbsolute } from './utils/path'; import { PluginDriver } from './utils/PluginDriver'; import { timeEnd, timeStart } from './utils/timers'; export default class Bundle { + private facadeChunkByModule = new Map(); + constructor( private readonly outputOptions: NormalizedOutputOptions, private readonly unsetOptions: Set, private readonly inputOptions: NormalizedInputOptions, private readonly pluginDriver: PluginDriver, - private readonly chunks: Chunk[] + private readonly graph: Graph ) {} async generate(isWrite: boolean): Promise { timeStart('GENERATE', 1); - const inputBase = commondir(getAbsoluteEntryModulePaths(this.chunks)); const outputBundle: OutputBundleWithPlaceholders = Object.create(null); - this.pluginDriver.setOutputBundle(outputBundle, this.outputOptions.assetFileNames); + this.pluginDriver.setOutputBundle( + outputBundle, + this.outputOptions.assetFileNames, + this.facadeChunkByModule + ); try { await this.pluginDriver.hookParallel('renderStart', [this.outputOptions, this.inputOptions]); - if (this.chunks.length > 1) { + + timeStart('generate chunks', 2); + const chunks = await this.generateChunks(); + if (chunks.length > 1) { validateOptionsForMultiChunkOutput(this.outputOptions); } + const inputBase = commondir(getAbsoluteEntryModulePaths(chunks)); + timeEnd('generate chunks', 2); + timeStart('render modules', 2); + + // We need to create addons before prerender because at the moment, there + // can be no async code between prerender and render due to internal state const addons = await createAddons(this.outputOptions, this.pluginDriver); - for (const chunk of this.chunks) { - chunk.generateExports(this.outputOptions); - } - for (const chunk of this.chunks) { - chunk.preRender(this.outputOptions, inputBase, this.pluginDriver); - } - this.assignChunkIds(inputBase, addons, outputBundle); - assignChunksToBundle(this.chunks, outputBundle); - - await Promise.all( - this.chunks.map(chunk => { - const outputChunk = outputBundle[chunk.id!] as OutputChunk; - return chunk - .render(this.outputOptions, addons, outputChunk, this.pluginDriver) - .then(rendered => { - outputChunk.code = rendered.code; - outputChunk.map = rendered.map; - }); - }) - ); + this.prerenderChunks(chunks, inputBase); + timeEnd('render modules', 2); + + await this.addFinalizedChunksToBundle(chunks, inputBase, addons, outputBundle); } catch (error) { await this.pluginDriver.hookParallel('renderError', [error]); throw error; @@ -64,27 +68,65 @@ export default class Bundle { outputBundle as OutputBundle, isWrite ]); - for (const key of Object.keys(outputBundle)) { - const file = outputBundle[key] as any; - if (!file.type) { - warnDeprecation( - 'A plugin is directly adding properties to the bundle object in the "generateBundle" hook. This is deprecated and will be removed in a future Rollup version, please use "this.emitFile" instead.', - true, - this.inputOptions - ); - file.type = 'asset'; - } - } - this.pluginDriver.finaliseAssets(); + this.finaliseAssets(outputBundle); timeEnd('GENERATE', 1); return outputBundle as OutputBundle; } - private assignChunkIds(inputBase: string, addons: Addons, bundle: OutputBundleWithPlaceholders) { + private async addFinalizedChunksToBundle( + chunks: Chunk[], + inputBase: string, + addons: Addons, + outputBundle: OutputBundleWithPlaceholders + ): Promise { + this.assignChunkIds(chunks, inputBase, addons, outputBundle); + for (const chunk of chunks) { + const chunkDescription = (outputBundle[ + chunk.id! + ] = chunk.getPrerenderedChunk() as OutputChunk); + chunkDescription.fileName = chunk.id!; + } + await Promise.all( + chunks.map(chunk => { + const outputChunk = outputBundle[chunk.id!] as OutputChunk; + return chunk + .render(this.outputOptions, addons, outputChunk, this.pluginDriver) + .then(rendered => { + outputChunk.code = rendered.code; + outputChunk.map = rendered.map; + }); + }) + ); + } + + private async addManualChunks( + manualChunks: Record + ): Promise> { + const manualChunkAliasByEntry = new Map(); + const chunkEntries = await Promise.all( + Object.keys(manualChunks).map(async alias => ({ + alias, + entries: await this.graph.moduleLoader.addAdditionalModules(manualChunks[alias]) + })) + ); + for (const { alias, entries } of chunkEntries) { + for (const entry of entries) { + addModuleToManualChunk(alias, entry, manualChunkAliasByEntry); + } + } + return manualChunkAliasByEntry; + } + + private assignChunkIds( + chunks: Chunk[], + inputBase: string, + addons: Addons, + bundle: OutputBundleWithPlaceholders + ) { const entryChunks: Chunk[] = []; const otherChunks: Chunk[] = []; - for (const chunk of this.chunks) { + for (const chunk of chunks) { (chunk.facadeModule && chunk.facadeModule.isUserDefinedEntryPoint ? entryChunks : otherChunks @@ -96,7 +138,7 @@ export default class Bundle { for (const chunk of chunksForNaming) { if (this.outputOptions.file) { chunk.id = basename(this.outputOptions.file); - } else if (this.inputOptions.preserveModules) { + } else if (this.outputOptions.preserveModules) { chunk.id = chunk.generateIdPreserveModules( inputBase, this.outputOptions, @@ -109,6 +151,89 @@ export default class Bundle { bundle[chunk.id] = FILE_PLACEHOLDER; } } + + private assignManualChunks(getManualChunk: GetManualChunk): Map { + const manualChunkAliasByEntry = new Map(); + const manualChunksApi = { + getModuleIds: () => this.graph.modulesById.keys(), + getModuleInfo: this.graph.getModuleInfo + }; + for (const module of this.graph.modulesById.values()) { + if (module instanceof Module) { + const manualChunkAlias = getManualChunk(module.id, manualChunksApi); + if (typeof manualChunkAlias === 'string') { + addModuleToManualChunk(manualChunkAlias, module, manualChunkAliasByEntry); + } + } + } + return manualChunkAliasByEntry; + } + + private finaliseAssets(outputBundle: OutputBundleWithPlaceholders): void { + for (const key of Object.keys(outputBundle)) { + const file = outputBundle[key] as any; + if (!file.type) { + warnDeprecation( + 'A plugin is directly adding properties to the bundle object in the "generateBundle" hook. This is deprecated and will be removed in a future Rollup version, please use "this.emitFile" instead.', + true, + this.inputOptions + ); + file.type = 'asset'; + } + } + this.pluginDriver.finaliseAssets(); + } + + private async generateChunks(): Promise { + const { manualChunks } = this.outputOptions; + const manualChunkAliasByEntry = + typeof manualChunks === 'object' + ? await this.addManualChunks(manualChunks) + : this.assignManualChunks(manualChunks); + const chunks: Chunk[] = []; + const chunkByModule = new Map(); + for (const { alias, modules } of this.outputOptions.inlineDynamicImports + ? [{ alias: null, modules: getIncludedModules(this.graph.modulesById) }] + : this.outputOptions.preserveModules + ? getIncludedModules(this.graph.modulesById).map(module => ({ + alias: null, + modules: [module] + })) + : getChunkAssignments(this.graph.entryModules, manualChunkAliasByEntry)) { + sortByExecutionOrder(modules); + const chunk = new Chunk( + modules, + this.inputOptions, + this.outputOptions, + this.unsetOptions, + this.graph.modulesById, + chunkByModule, + this.facadeChunkByModule, + alias + ); + chunks.push(chunk); + for (const module of modules) { + chunkByModule.set(module, chunk); + } + } + for (const chunk of chunks) { + chunk.link(); + } + const facades: Chunk[] = []; + for (const chunk of chunks) { + facades.push(...chunk.generateFacades()); + } + return [...chunks, ...facades]; + } + + private prerenderChunks(chunks: Chunk[], inputBase: string): void { + for (const chunk of chunks) { + chunk.generateExports(); + } + for (const chunk of chunks) { + chunk.preRender(this.outputOptions, inputBase, this.pluginDriver); + } + } } function getAbsoluteEntryModulePaths(chunks: Chunk[]): string[] { @@ -143,15 +268,22 @@ function validateOptionsForMultiChunkOutput(outputOptions: NormalizedOutputOptio }); } -function assignChunksToBundle( - chunks: Chunk[], - outputBundle: OutputBundleWithPlaceholders -): OutputBundle { - for (const chunk of chunks) { - const chunkdDescription = (outputBundle[ - chunk.id! - ] = chunk.getPrerenderedChunk() as OutputChunk); - chunkdDescription.fileName = chunk.id!; +function getIncludedModules(modulesById: Map): Module[] { + return [...modulesById.values()].filter( + module => + module instanceof Module && + (module.isIncluded() || module.isEntryPoint || module.includedDynamicImporters.length > 0) + ) as Module[]; +} + +function addModuleToManualChunk( + alias: string, + module: Module, + manualChunkAliasByEntry: Map +) { + const existingAlias = manualChunkAliasByEntry.get(module); + if (typeof existingAlias === 'string' && existingAlias !== alias) { + return error(errCannotAssignModuleToChunk(module.id, alias, existingAlias)); } - return outputBundle as OutputBundle; + manualChunkAliasByEntry.set(module, alias); } diff --git a/src/Chunk.ts b/src/Chunk.ts index 429db2079f9..a2492d8ca97 100644 --- a/src/Chunk.ts +++ b/src/Chunk.ts @@ -116,25 +116,39 @@ function getGlobalName( export default class Chunk { private static generateFacade( inputOptions: NormalizedInputOptions, + outputOptions: NormalizedOutputOptions, unsetOptions: Set, modulesById: Map, + chunkByModule: Map, + facadeChunkByModule: Map, facadedModule: Module, facadeName: FacadeName ): Chunk { - const chunk = new Chunk([], inputOptions, unsetOptions, modulesById); + const chunk = new Chunk( + [], + inputOptions, + outputOptions, + unsetOptions, + modulesById, + chunkByModule, + facadeChunkByModule, + null + ); chunk.assignFacadeName(facadeName, facadedModule); - if (!facadedModule.facadeChunk) { - facadedModule.facadeChunk = chunk; + if (!facadeChunkByModule.has(facadedModule)) { + facadeChunkByModule.set(facadedModule, chunk); } for (const dependency of facadedModule.getDependenciesToBeIncluded()) { - chunk.dependencies.add(dependency instanceof Module ? dependency.chunk! : dependency); + chunk.dependencies.add( + dependency instanceof Module ? chunkByModule.get(dependency)! : dependency + ); } if ( - !chunk.dependencies.has(facadedModule.chunk!) && + !chunk.dependencies.has(chunkByModule.get(facadedModule)!) && facadedModule.moduleSideEffects && facadedModule.hasEffects() ) { - chunk.dependencies.add(facadedModule.chunk!); + chunk.dependencies.add(chunkByModule.get(facadedModule)!); } chunk.ensureReexportsAreAvailableForModule(facadedModule); chunk.facadeModule = facadedModule; @@ -147,7 +161,7 @@ export default class Chunk { exportMode: 'none' | 'named' | 'default' = 'named'; facadeModule: Module | null = null; id: string | null = null; - variableName = 'chunk'; + variableName: string; private dependencies = new Set(); private dynamicDependencies = new Set(); @@ -161,7 +175,6 @@ export default class Chunk { private imports = new Set(); private indentString: string = undefined as any; private isEmpty = true; - private manualChunkAlias: string | null = null; private name: string | null = null; private needsExportsShim = false; private renderedDependencies: Map< @@ -182,8 +195,12 @@ export default class Chunk { constructor( private readonly orderedModules: Module[], private readonly inputOptions: NormalizedInputOptions, + private readonly outputOptions: NormalizedOutputOptions, private readonly unsetOptions: Set, - private readonly modulesById: Map + private readonly modulesById: Map, + private readonly chunkByModule: Map, + private readonly facadeChunkByModule: Map, + private readonly manualChunkAlias: string | null ) { this.execIndex = orderedModules.length > 0 ? orderedModules[0].execIndex : Infinity; const chunkModules = new Set(orderedModules); @@ -192,11 +209,7 @@ export default class Chunk { if (this.isEmpty && module.isIncluded()) { this.isEmpty = false; } - if (module.manualChunkAlias) { - this.manualChunkAlias = module.manualChunkAlias; - } - module.chunk = this; - if (module.isEntryPoint) { + if (module.isEntryPoint || outputOptions.preserveModules) { this.entryModules.push(module); } for (const importer of module.includedDynamicImporters) { @@ -208,21 +221,7 @@ export default class Chunk { this.implicitEntryModules.push(module); } } - - const moduleForNaming = - this.entryModules[0] || - this.implicitEntryModules[0] || - this.dynamicEntryModules[0] || - this.orderedModules[this.orderedModules.length - 1]; - if (moduleForNaming) { - this.variableName = makeLegal( - basename( - moduleForNaming.chunkName || - moduleForNaming.manualChunkAlias || - getAliasName(moduleForNaming.id) - ) - ); - } + this.variableName = makeLegal(this.generateVariableName()); } canModuleBeFacade(module: Module, exposedVariables: Set): boolean { @@ -257,7 +256,7 @@ export default class Chunk { return true; } - generateExports(options: NormalizedOutputOptions) { + generateExports() { this.sortedExportNames = null; this.exportsByName = Object.create(null); this.exportNamesByVariable = new Map(); @@ -275,7 +274,7 @@ export default class Chunk { remainingExports.delete(variable); } } - if (options.minifyInternalExports) { + if (this.outputOptions.minifyInternalExports) { assignExportsToMangledNames( remainingExports, this.exportsByName!, @@ -284,10 +283,10 @@ export default class Chunk { } else { assignExportsToNames(remainingExports, this.exportsByName!, this.exportNamesByVariable); } - if (this.inputOptions.preserveModules || (this.facadeModule && this.facadeModule.isEntryPoint)) + if (this.outputOptions.preserveModules || (this.facadeModule && this.facadeModule.isEntryPoint)) this.exportMode = getExportMode( this, - options, + this.outputOptions, this.facadeModule!.id, this.inputOptions.onwarn ); @@ -319,12 +318,12 @@ export default class Chunk { } if ( !this.facadeModule && - (this.inputOptions.preserveModules || + (this.outputOptions.preserveModules || module.preserveSignature !== 'strict' || this.canModuleBeFacade(module, exposedVariables)) ) { this.facadeModule = module; - module.facadeChunk = this; + this.facadeChunkByModule.set(module, this); if (module.preserveSignature) { this.strictFacade = module.preserveSignature === 'strict'; this.ensureReexportsAreAvailableForModule(module); @@ -336,8 +335,11 @@ export default class Chunk { facades.push( Chunk.generateFacade( this.inputOptions, + this.outputOptions, this.unsetOptions, this.modulesById, + this.chunkByModule, + this.facadeChunkByModule, module, facadeName ) @@ -347,7 +349,7 @@ export default class Chunk { for (const module of this.dynamicEntryModules) { if (!this.facadeModule && this.canModuleBeFacade(module, exposedVariables)) { this.facadeModule = module; - module.facadeChunk = this; + this.facadeChunkByModule.set(module, this); this.strictFacade = true; this.assignFacadeName({}, module); } else if ( @@ -356,7 +358,7 @@ export default class Chunk { this.canModuleBeFacade(module, exposedVariables) ) { this.strictFacade = true; - } else if (!(module.facadeChunk && module.facadeChunk.strictFacade)) { + } else if (!this.facadeChunkByModule.get(module)?.strictFacade) { module.namespace.include(); this.exports.add(module.namespace); } @@ -490,7 +492,7 @@ export default class Chunk { } getVariableExportName(variable: Variable): string { - if (this.inputOptions.preserveModules && variable instanceof NamespaceVariable) { + if (this.outputOptions.preserveModules && variable instanceof NamespaceVariable) { return '*'; } return this.exportNamesByVariable!.get(variable)![0]; @@ -507,8 +509,6 @@ export default class Chunk { // prerender allows chunk hashes and names to be generated before finalizing preRender(options: NormalizedOutputOptions, inputBase: string, outputPluginDriver: PluginDriver) { - timeStart('render modules', 3); - const magicString = new MagicStringBundle({ separator: options.compact ? '' : '\n\n' }); this.usedModules = []; this.indentString = getIndentString(this.orderedModules, options); @@ -531,7 +531,7 @@ export default class Chunk { // for static and dynamic entry points, inline the execution list to avoid loading latency if ( options.hoistTransitiveImports && - !this.inputOptions.preserveModules && + !this.outputOptions.preserveModules && this.facadeModule !== null ) { for (const dep of this.dependencies) { @@ -560,7 +560,7 @@ export default class Chunk { this.usedModules.push(module); } const namespace = module.namespace; - if (namespace.included && !this.inputOptions.preserveModules) { + if (namespace.included && !this.outputOptions.preserveModules) { const rendered = namespace.renderBlock(renderOptions); if (namespace.renderFirst()) hoistedSource += n + rendered; else magicString.addSource(new MagicString(rendered)); @@ -604,8 +604,6 @@ export default class Chunk { this.renderedDependencies = this.getChunkDependencyDeclarations(options); this.renderedExports = this.exportMode === 'none' ? [] : this.getChunkExportDeclarations(options.format); - - timeEnd('render modules', 3); } async render( @@ -614,9 +612,8 @@ export default class Chunk { outputChunk: RenderedChunk, outputPluginDriver: PluginDriver ) { - timeStart('render format', 3); + timeStart('render format', 2); - const chunkId = this.id!; const format = options.format; const finalise = finalisers[format]; if (options.dynamicImportFunction && format !== 'es') { @@ -683,7 +680,7 @@ export default class Chunk { indentString: this.indentString, intro: addons.intro!, isEntryModuleFacade: - this.inputOptions.preserveModules || + this.outputOptions.preserveModules || (this.facadeModule !== null && this.facadeModule.isEntryPoint), namedExportsMode: this.exportMode !== 'default', outro: addons.outro!, @@ -697,7 +694,7 @@ export default class Chunk { if (addons.footer) magicString.append(addons.footer); const prevCode = magicString.toString(); - timeEnd('render format', 3); + timeEnd('render format', 2); let map: SourceMap = null as any; const chunkSourcemapChain: DecodedSourceMapOrMissing[] = []; @@ -710,12 +707,12 @@ export default class Chunk { sourcemapChain: chunkSourcemapChain }); if (options.sourcemap) { - timeStart('sourcemap', 3); + timeStart('sourcemap', 2); let file: string; if (options.file) file = resolve(options.sourcemapFile || options.file); - else if (options.dir) file = resolve(options.dir, chunkId); - else file = resolve(chunkId); + else if (options.dir) file = resolve(options.dir, this.id!); + else file = resolve(this.id!); const decodedMap = magicString.generateDecodedMap({}); map = collapseSourcemaps( @@ -744,7 +741,7 @@ export default class Chunk { }) .map(normalize); - timeEnd('sourcemap', 3); + timeEnd('sourcemap', 2); } if (options.compact !== true && code[code.length - 1] !== '\n') code += '\n'; return { code, map }; @@ -754,13 +751,14 @@ export default class Chunk { moduleDependencies: Set, chunkDependencies: Set ) { - for (const depModule of moduleDependencies) { - if (depModule instanceof Module) { - if (depModule.chunk && depModule.chunk !== this) { - chunkDependencies.add(depModule.chunk); + for (const module of moduleDependencies) { + if (module instanceof Module) { + const chunk = this.chunkByModule.get(module); + if (chunk && chunk !== this) { + chunkDependencies.add(chunk); } } else { - chunkDependencies.add(depModule); + chunkDependencies.add(module); } } } @@ -809,16 +807,16 @@ export default class Chunk { const importedVariable = isSynthetic ? (exportedVariable as SyntheticNamedExportVariable).getBaseVariable() : exportedVariable; - const exportingModule = importedVariable.module; - if ( - exportingModule && - exportingModule.chunk && - exportingModule.chunk !== this && - !(importedVariable instanceof NamespaceVariable && this.inputOptions.preserveModules) - ) { - exportingModule.chunk.exports.add(importedVariable); - if (isSynthetic) { - this.imports.add(importedVariable); + if (!(importedVariable instanceof NamespaceVariable && this.outputOptions.preserveModules)) { + const exportingModule = importedVariable.module; + if (exportingModule instanceof Module) { + const chunk = this.chunkByModule.get(exportingModule); + if (chunk && chunk !== this) { + chunk.exports.add(importedVariable); + if (isSynthetic) { + this.imports.add(importedVariable); + } + } } } } @@ -828,19 +826,14 @@ export default class Chunk { const stripKnownJsExtensions = options.format === 'amd'; for (const [module, code] of this.renderedModuleSources) { for (const { node, resolution } of module.dynamicImports) { - if ( - !resolution || - !node.included || - (resolution instanceof Module && resolution.chunk === this) - ) { + const chunk = this.chunkByModule.get(resolution as Module); + const facadeChunk = this.facadeChunkByModule.get(resolution as Module); + if (!resolution || !node.included || chunk === this) { continue; } const renderedResolution = resolution instanceof Module - ? `'${this.getRelativePath( - (resolution.facadeChunk || resolution.chunk!).id!, - stripKnownJsExtensions - )}'` + ? `'${this.getRelativePath((facadeChunk || chunk!).id!, stripKnownJsExtensions)}'` : resolution instanceof ExternalModule ? `'${ resolution.renormalizeRenderPath @@ -852,8 +845,8 @@ export default class Chunk { code, renderedResolution, resolution instanceof Module && - !(resolution.facadeChunk && resolution.facadeChunk.strictFacade) && - resolution.chunk!.exportNamesByVariable!.get(resolution.namespace)![0], + !facadeChunk?.strictFacade && + chunk!.exportNamesByVariable!.get(resolution.namespace)![0], options ); } @@ -871,6 +864,21 @@ export default class Chunk { } } + private generateVariableName(): string { + if (this.manualChunkAlias) { + return this.manualChunkAlias; + } + const moduleForNaming = + this.entryModules[0] || + this.implicitEntryModules[0] || + this.dynamicEntryModules[0] || + this.orderedModules[this.orderedModules.length - 1]; + if (moduleForNaming) { + return moduleForNaming.chunkName || getAliasName(moduleForNaming.id); + } + return 'chunk'; + } + private getChunkDependencyDeclarations( options: NormalizedOutputOptions ): Map { @@ -887,10 +895,10 @@ export default class Chunk { } else { const variable = this.exportsByName![exportName]; if (variable instanceof SyntheticNamedExportVariable) continue; - const module = variable.module; - if (!module || module.chunk === this) continue; + const module = variable.module!; if (module instanceof Module) { - exportChunk = module.chunk!; + exportChunk = this.chunkByModule.get(module)!; + if (exportChunk === this) continue; importName = exportChunk.getVariableExportName(variable); needsLiveBinding = variable.isReassigned; } else { @@ -912,7 +920,7 @@ export default class Chunk { for (const variable of this.imports) { if ( (variable.module instanceof Module - ? variable.module.chunk === dep + ? this.chunkByModule.get(variable.module) === dep : variable.module === dep) && !renderedImports.has(variable) ) { @@ -921,7 +929,7 @@ export default class Chunk { imported: variable.module instanceof ExternalModule ? variable.name - : variable.module!.chunk!.getVariableExportName(variable), + : this.chunkByModule.get(variable.module!)!.getVariableExportName(variable), local: variable.getName() }); } @@ -971,7 +979,7 @@ export default class Chunk { const variable = this.exportsByName![exportName]; if (!(variable instanceof SyntheticNamedExportVariable)) { const module = variable.module; - if (module && module.chunk !== this) continue; + if (module && this.chunkByModule.get(module as Module) !== this) continue; } let expression = null; let hoisted = false; @@ -1044,10 +1052,11 @@ export default class Chunk { for (const { node, resolution } of module.dynamicImports) { if (!node.included) continue; if (resolution instanceof Module) { - if (resolution.chunk === this) { + const chunk = this.chunkByModule.get(resolution); + if (chunk === this) { node.setInternalResolution(resolution.namespace); } else { - node.setExternalResolution(resolution.chunk!.exportMode, resolution); + node.setExternalResolution(chunk!.exportMode, resolution); } } else { node.setExternalResolution('auto', resolution); @@ -1109,34 +1118,48 @@ export default class Chunk { usedNames, options.format as string, options.interop, - this.inputOptions.preserveModules, + this.outputOptions.preserveModules, + this.chunkByModule, syntheticExports, this.exportNamesByVariable! ); } private setUpChunkImportsAndExportsForModule(module: Module) { - for (let variable of module.imports) { + const moduleImports = new Set(module.imports); + // when we are not preserving modules, we need to make all namespace variables available for + // rendering the namespace object + if (!this.outputOptions.preserveModules) { + const namespace = module.namespace; + if (namespace.included) { + const memberVariables = namespace.getMemberVariables(); + for (const name of Object.keys(memberVariables)) { + moduleImports.add(memberVariables[name]); + } + } + } + for (let variable of moduleImports) { if (variable instanceof ExportDefaultVariable) { variable = variable.getOriginalVariable(); } if (variable instanceof SyntheticNamedExportVariable) { variable = variable.getBaseVariable(); } - if (variable.module && (variable.module as Module).chunk !== this) { + const chunk = this.chunkByModule.get(variable.module as Module); + if (chunk !== this) { this.imports.add(variable); if ( - !(variable instanceof NamespaceVariable && this.inputOptions.preserveModules) && + !(variable instanceof NamespaceVariable && this.outputOptions.preserveModules) && variable.module instanceof Module ) { - variable.module.chunk!.exports.add(variable); + chunk!.exports.add(variable); } } } if ( + module.namespace.included || (module.isEntryPoint && module.preserveSignature !== false) || - module.includedDynamicImporters.some(importer => importer.chunk !== this) || - module.namespace.included + module.includedDynamicImporters.some(importer => this.chunkByModule.get(importer) !== this) ) { this.ensureReexportsAreAvailableForModule(module); } @@ -1144,7 +1167,7 @@ export default class Chunk { if ( node.included && resolution instanceof Module && - resolution.chunk === this && + this.chunkByModule.get(resolution) === this && !resolution.namespace.included ) { resolution.namespace.include(); diff --git a/src/Graph.ts b/src/Graph.ts index 082f1b14e70..2cf40a838ce 100644 --- a/src/Graph.ts +++ b/src/Graph.ts @@ -1,7 +1,6 @@ import * as acorn from 'acorn'; import GlobalScope from './ast/scopes/GlobalScope'; import { PathTracker } from './ast/utils/PathTracker'; -import Chunk from './Chunk'; import ExternalModule from './ExternalModule'; import Module from './Module'; import { ModuleLoader, UnresolvedModule } from './ModuleLoader'; @@ -14,9 +13,8 @@ import { SerializablePluginCache } from './rollup/types'; import { BuildPhase } from './utils/buildPhase'; -import { getChunkAssignments } from './utils/chunkAssignment'; import { errImplicitDependantIsNotIncluded, error } from './utils/error'; -import { analyseModuleExecution, sortByExecutionOrder } from './utils/executionOrder'; +import { analyseModuleExecution } from './utils/executionOrder'; import { getId } from './utils/getId'; import { PluginDriver } from './utils/PluginDriver'; import relativeId from './utils/relativeId'; @@ -49,6 +47,7 @@ export default class Graph { cachedModules: Map; contextParse: (code: string, acornOptions?: acorn.Options) => acorn.Node; deoptimizationTracker: PathTracker; + entryModules: Module[] = []; moduleLoader: ModuleLoader; modulesById = new Map(); needsTreeshakingPass = false; @@ -58,18 +57,12 @@ export default class Graph { watchFiles: Record = Object.create(null); watchMode = false; - private entryModules: Module[] = []; private externalModules: ExternalModule[] = []; private implicitEntryModules: Module[] = []; - private manualChunkModulesByAlias: Record = {}; private modules: Module[] = []; private pluginCache?: Record; - constructor( - private readonly options: NormalizedInputOptions, - private readonly unsetOptions: Set, - watcher: RollupWatcher | null - ) { + constructor(private readonly options: NormalizedInputOptions, watcher: RollupWatcher | null) { this.deoptimizationTracker = new PathTracker(); this.cachedModules = new Map(); if (options.cache !== false) { @@ -104,59 +97,21 @@ export default class Graph { this.moduleLoader = new ModuleLoader(this, this.modulesById, this.options, this.pluginDriver); } - async build(): Promise { + async build(): Promise { timeStart('generate module graph', 2); await this.generateModuleGraph(); timeEnd('generate module graph', 2); - timeStart('link and order modules', 2); + timeStart('sort modules', 2); this.phase = BuildPhase.ANALYSE; - this.linkAndOrderModules(); - timeEnd('link and order modules', 2); + this.sortModules(); + timeEnd('sort modules', 2); timeStart('mark included statements', 2); this.includeStatements(); timeEnd('mark included statements', 2); - timeStart('generate chunks', 2); - const chunks = this.generateChunks(); - timeEnd('generate chunks', 2); this.phase = BuildPhase.GENERATE; - - return chunks; - } - - generateChunks(): Chunk[] { - const chunks: Chunk[] = []; - if (this.options.preserveModules) { - for (const module of this.modules) { - if ( - module.isIncluded() || - module.isEntryPoint || - module.includedDynamicImporters.length > 0 - ) { - const chunk = new Chunk([module], this.options, this.unsetOptions, this.modulesById); - chunk.entryModules = [module]; - chunks.push(chunk); - } - } - } else { - for (const chunkModules of this.options.inlineDynamicImports - ? [this.modules] - : getChunkAssignments(this.entryModules, this.manualChunkModulesByAlias)) { - sortByExecutionOrder(chunkModules); - chunks.push(new Chunk(chunkModules, this.options, this.unsetOptions, this.modulesById)); - } - } - - for (const chunk of chunks) { - chunk.link(); - } - const facades: Chunk[] = []; - for (const chunk of chunks) { - facades.push(...chunk.generateFacades()); - } - return [...chunks, ...facades]; } getCache(): RollupCache { @@ -211,20 +166,10 @@ export default class Graph { }; private async generateModuleGraph(): Promise { - const { manualChunks } = this.options; - [ - { - entryModules: this.entryModules, - implicitEntryModules: this.implicitEntryModules, - manualChunkModulesByAlias: this.manualChunkModulesByAlias - } - ] = await Promise.all([ - this.moduleLoader.addEntryModules(normalizeEntryModules(this.options.input), true), - typeof manualChunks === 'object' ? this.moduleLoader.addManualChunks(manualChunks) : null - ]); - if (typeof manualChunks === 'function') { - this.moduleLoader.assignManualChunks(manualChunks); - } + ({ + entryModules: this.entryModules, + implicitEntryModules: this.implicitEntryModules + } = await this.moduleLoader.addEntryModules(normalizeEntryModules(this.options.input), true)); if (this.entryModules.length === 0) { throw new Error('You must supply options.input to rollup'); } @@ -256,12 +201,9 @@ export default class Graph { timeEnd(`treeshaking pass ${treeshakingPass++}`, 3); } while (this.needsTreeshakingPass); } else { - // Necessary to properly replace namespace imports for (const module of this.modules) module.includeAllInBundle(); } - // check for unused external imports for (const externalModule of this.externalModules) externalModule.warnUnusedImports(); - // check for missing implicit dependants for (const module of this.implicitEntryModules) { for (const dependant of module.implicitlyLoadedAfter) { if (!(dependant.isEntryPoint || dependant.isIncluded())) { @@ -271,10 +213,7 @@ export default class Graph { } } - private linkAndOrderModules() { - for (const module of this.modules) { - module.linkDependencies(); - } + private sortModules() { const { orderedModules, cyclePaths } = analyseModuleExecution(this.entryModules); for (const cyclePath of cyclePaths) { this.options.onwarn({ diff --git a/src/Module.ts b/src/Module.ts index bf1788c8b01..02b30f5e5ad 100644 --- a/src/Module.ts +++ b/src/Module.ts @@ -26,7 +26,6 @@ import ExternalVariable from './ast/variables/ExternalVariable'; import NamespaceVariable from './ast/variables/NamespaceVariable'; import SyntheticNamedExportVariable from './ast/variables/SyntheticNamedExportVariable'; import Variable from './ast/variables/Variable'; -import Chunk from './Chunk'; import ExternalModule from './ExternalModule'; import Graph from './Graph'; import { @@ -38,11 +37,11 @@ import { PreserveEntrySignaturesOption, ResolvedIdMap, RollupError, + RollupLogProps, RollupWarning, TransformModuleJSON } from './rollup/types'; -import { error, Errors } from './utils/error'; -import getCodeFrame from './utils/getCodeFrame'; +import { augmentCodeLocation, errNamespaceConflict, error, Errors } from './utils/error'; import { getId } from './utils/getId'; import { getOriginalLocation } from './utils/getOriginalLocation'; import { makeLegal } from './utils/identifierHelpers'; @@ -90,7 +89,7 @@ export interface AstContext { addImportMeta: (node: MetaProperty) => void; code: string; deoptimizationTracker: PathTracker; - error: (props: RollupError, pos?: number) => never; + error: (props: RollupError, pos: number) => never; fileName: string; getExports: () => string[]; getModuleExecIndex: () => number; @@ -108,7 +107,7 @@ export interface AstContext { traceExport: (name: string) => Variable; traceVariable: (name: string) => Variable | null; usesTopLevelAwait: boolean; - warn: (warning: RollupWarning, pos?: number) => void; + warn: (warning: RollupWarning, pos: number) => void; } function tryParse(module: Module, Parser: typeof acorn.Parser, acornOptions: acorn.Options) { @@ -178,7 +177,6 @@ function getVariableForExportNameRecursive( } export default class Module { - chunk: Chunk | null = null; chunkFileNames = new Set(); chunkName: string | null = null; code!: string; @@ -196,7 +194,6 @@ export default class Module { exportAllSources = new Set(); exports: { [name: string]: ExportDescription } = Object.create(null); exportsAll: { [name: string]: string } = Object.create(null); - facadeChunk: Chunk | null = null; implicitlyLoadedAfter = new Set(); implicitlyLoadedBefore = new Set(); importDescriptions: { [name: string]: ImportDescription } = Object.create(null); @@ -206,7 +203,6 @@ export default class Module { includedDynamicImporters: Module[] = []; isExecuted = false; isUserDefinedEntryPoint = false; - manualChunkAlias: string = null as any; namespace!: NamespaceVariable; originalCode!: string; originalSourcemap!: ExistingDecodedSourceMap | null; @@ -260,33 +256,8 @@ export default class Module { this.ast.bind(); } - error(props: RollupError, pos?: number): never { - if (typeof pos === 'number') { - props.pos = pos; - let location: { column: number; line: number } = locate(this.code, pos, { offsetLine: 1 }); - try { - location = getOriginalLocation(this.sourcemapChain, location); - } catch (e) { - this.warn({ - code: 'SOURCEMAP_ERROR', - loc: { - column: location.column, - file: this.id, - line: location.line - }, - message: `Error when using sourcemap for reporting an error: ${e.message}`, - pos - }); - } - - props.loc = { - column: location.column, - file: this.id, - line: location.line - }; - props.frame = getCodeFrame(this.originalCode, location.line, location.column); - } - + error(props: RollupError, pos: number): never { + this.addLocationToLogProps(props, pos); return error(props); } @@ -336,11 +307,7 @@ export default class Module { const additionalSideEffectModules = new Set(); const possibleDependencies = new Set(this.dependencies); let dependencyVariables = this.imports; - if ( - this.isEntryPoint || - this.includedDynamicImporters.length > 0 || - this.options.preserveModules - ) { + if (this.isEntryPoint || this.includedDynamicImporters.length > 0 || this.namespace.included) { dependencyVariables = new Set(dependencyVariables); for (const exportName of [...this.getReexports(), ...this.getExports()]) { dependencyVariables.add(this.getVariableForExportName(exportName)); @@ -492,7 +459,7 @@ export default class Module { return this.exportShimVariable; } const name = exportDeclaration.localName; - return this.traceVariable(name) || this.graph.scope.findVariable(name); + return this.traceVariable(name)!; } if (name !== 'default') { @@ -575,29 +542,31 @@ export default class Module { return this.ast.included || this.namespace.included; } - linkDependencies() { - for (const source of this.sources) { - this.dependencies.add(this.graph.modulesById.get(this.resolvedIds[source].id)!); - } - for (const { resolution } of this.dynamicImports) { - if (resolution instanceof Module || resolution instanceof ExternalModule) { - this.dynamicDependencies.add(resolution); - } - } - + linkImports() { this.addModulesToImportDescriptions(this.importDescriptions); this.addModulesToImportDescriptions(this.reexportDescriptions); - + for (const name in this.exports) { + if (name !== 'default') { + this.exportsAll[name] = this.id; + } + } const externalExportAllModules: ExternalModule[] = []; for (const source of this.exportAllSources) { - const module = this.graph.modulesById.get(this.resolvedIds[source].id) as - | Module - | ExternalModule; - (module instanceof ExternalModule ? externalExportAllModules : this.exportAllModules).push( - module - ); + const module = this.graph.modulesById.get(this.resolvedIds[source].id)!; + if (module instanceof ExternalModule) { + externalExportAllModules.push(module); + continue; + } + this.exportAllModules.push(module); + for (const name in module.exportsAll) { + if (name in this.exportsAll) { + this.options.onwarn(errNamespaceConflict(name, this, module)); + } else { + this.exportsAll[name] = module.exportsAll[name]; + } + } } - this.exportAllModules = [...this.exportAllModules, ...externalExportAllModules]; + this.exportAllModules.push(...externalExportAllModules); } render(options: RenderOptions): MagicString { @@ -764,18 +733,9 @@ export default class Module { return null; } - warn(warning: RollupWarning, pos?: number) { - if (typeof pos === 'number') { - warning.pos = pos; - - const { line, column } = locate(this.code, pos, { offsetLine: 1 }); // TODO trace sourcemaps, cf. error() - - warning.loc = { file: this.id, line, column }; - warning.frame = getCodeFrame(this.code, line, column); - } - - warning.id = this.id; - this.options.onwarn(warning); + warn(props: RollupWarning, pos: number) { + this.addLocationToLogProps(props, pos); + this.options.onwarn(props); } private addDynamicImport(node: ImportExpression) { @@ -885,13 +845,37 @@ export default class Module { this.importMetas.push(node); } + private addLocationToLogProps(props: RollupLogProps, pos: number): void { + props.id = this.id; + props.pos = pos; + let code = this.code; + let { column, line } = locate(code, pos, { offsetLine: 1 }); + try { + ({ column, line } = getOriginalLocation(this.sourcemapChain, { column, line })); + code = this.originalCode; + } catch (e) { + this.options.onwarn({ + code: 'SOURCEMAP_ERROR', + id: this.id, + loc: { + column, + file: this.id, + line + }, + message: `Error when using sourcemap for reporting an error: ${e.message}`, + pos + }); + } + augmentCodeLocation(props, { column, line }, code, this.id); + } + private addModulesToImportDescriptions(importDescription: { [name: string]: ImportDescription | ReexportDescription; }) { for (const name of Object.keys(importDescription)) { const specifier = importDescription[name]; const id = this.resolvedIds[specifier.source].id; - specifier.module = this.graph.modulesById.get(id) as Module | ExternalModule; + specifier.module = this.graph.modulesById.get(id)!; } } diff --git a/src/ModuleLoader.ts b/src/ModuleLoader.ts index 054879d0b53..e86cff74e05 100644 --- a/src/ModuleLoader.ts +++ b/src/ModuleLoader.ts @@ -4,7 +4,6 @@ import Graph from './Graph'; import Module from './Module'; import { EmittedChunk, - GetManualChunk, HasModuleSideEffects, NormalizedInputOptions, ResolvedId, @@ -13,12 +12,10 @@ import { } from './rollup/types'; import { errBadLoader, - errCannotAssignModuleToChunk, errEntryCannotBeExternal, errExternalSyntheticExports, errImplicitDependantCannotBeExternal, errInternalIdCannotBeExternal, - errNamespaceConflict, error, errUnresolvedEntry, errUnresolvedImplicitDependant, @@ -45,7 +42,6 @@ export class ModuleLoader { private readonly implicitEntryModules = new Set(); private readonly indexedEntryModules: { index: number; module: Module }[] = []; private latestLoadModulesPromise: Promise = Promise.resolve(); - private readonly manualChunkModules: Record = {}; private nextEntryModuleIndex = 0; constructor( @@ -59,13 +55,20 @@ export class ModuleLoader { : () => true; } + async addAdditionalModules(unresolvedModules: string[]): Promise { + const result = this.extendLoadModulesPromise( + Promise.all(unresolvedModules.map(id => this.loadEntryModule(id, false, undefined, null))) + ); + await this.awaitLoadModulesPromise(); + return result; + } + async addEntryModules( unresolvedEntryModules: UnresolvedModule[], isUserDefined: boolean ): Promise<{ entryModules: Module[]; implicitEntryModules: Module[]; - manualChunkModulesByAlias: Record; newEntryModules: Module[]; }> { const firstEntryModuleIndex = this.nextEntryModuleIndex; @@ -102,50 +105,10 @@ export class ModuleLoader { return { entryModules: this.indexedEntryModules.map(({ module }) => module), implicitEntryModules: [...this.implicitEntryModules], - manualChunkModulesByAlias: this.manualChunkModules, newEntryModules }; } - async addManualChunks(manualChunks: Record): Promise { - const unresolvedManualChunks: { alias: string; id: string }[] = []; - for (const alias of Object.keys(manualChunks)) { - const manualChunkIds = manualChunks[alias]; - for (const id of manualChunkIds) { - unresolvedManualChunks.push({ id, alias }); - } - } - const result = this.extendLoadModulesPromise( - Promise.all( - unresolvedManualChunks.map(({ id }) => this.loadEntryModule(id, false, undefined, null)) - ).then(manualChunkModules => { - for (let index = 0; index < manualChunkModules.length; index++) { - this.addModuleToManualChunk( - unresolvedManualChunks[index].alias, - manualChunkModules[index] - ); - } - }) - ); - await this.awaitLoadModulesPromise(); - return result; - } - - assignManualChunks(getManualChunk: GetManualChunk) { - const manualChunksApi = { - getModuleIds: () => this.modulesById.keys(), - getModuleInfo: this.graph.getModuleInfo - }; - for (const module of this.modulesById.values()) { - if (module instanceof Module) { - const manualChunkAlias = getManualChunk(module.id, manualChunksApi); - if (typeof manualChunkAlias === 'string') { - this.addModuleToManualChunk(manualChunkAlias, module); - } - } - } - } - async emitChunk({ fileName, id, @@ -256,17 +219,6 @@ export class ModuleLoader { } } - private addModuleToManualChunk(alias: string, module: Module) { - if (module.manualChunkAlias !== null && module.manualChunkAlias !== alias) { - return error(errCannotAssignModuleToChunk(module.id, alias, module.manualChunkAlias)); - } - module.manualChunkAlias = alias; - if (!this.manualChunkModules[alias]) { - this.manualChunkModules[alias] = []; - } - this.manualChunkModules[alias].push(module); - } - private async awaitLoadModulesPromise(): Promise { let startingPromise; do { @@ -280,40 +232,38 @@ export class ModuleLoader { loadNewModulesPromise, this.latestLoadModulesPromise ]); + this.latestLoadModulesPromise.catch(() => { + /* Avoid unhandled Promise rejections */ + }); return loadNewModulesPromise; } - private fetchAllDependencies(module: Module): Promise { - return Promise.all([ - ...Array.from(module.sources, async source => { - const resolution = await this.fetchResolvedDependency( - source, - module.id, - (module.resolvedIds[source] = - module.resolvedIds[source] || - this.handleResolveId(await this.resolveId(source, module.id), source, module.id)) - ); - resolution.importers.push(module.id); - }), - ...module.dynamicImports.map(async dynamicImport => { + private async fetchDynamicDependencies(module: Module): Promise { + const dependencies = await Promise.all( + module.dynamicImports.map(async dynamicImport => { const resolvedId = await this.resolveDynamicImport( module, dynamicImport.argument, module.id ); - if (resolvedId === null) return; + if (resolvedId === null) return null; if (typeof resolvedId === 'string') { dynamicImport.resolution = resolvedId; - } else { - const resolution = (dynamicImport.resolution = await this.fetchResolvedDependency( - relativeId(resolvedId.id), - module.id, - resolvedId - )); - resolution.dynamicImporters.push(module.id); + return null; } + return (dynamicImport.resolution = await this.fetchResolvedDependency( + relativeId(resolvedId.id), + module.id, + resolvedId + )); }) - ]); + ); + for (const dependency of dependencies) { + if (dependency) { + module.dynamicDependencies.add(dependency); + dependency.dynamicImporters.push(module.id); + } + } } private async fetchModule( @@ -347,25 +297,11 @@ export class ModuleLoader { this.modulesById.set(id, module); this.graph.watchFiles[id] = true; await this.addModuleSource(id, importer, module); - await this.fetchAllDependencies(module); - - for (const name in module.exports) { - if (name !== 'default') { - module.exportsAll[name] = module.id; - } - } - for (const source of module.exportAllSources) { - const id = module.resolvedIds[source].id; - const exportAllModule = this.modulesById.get(id); - if (exportAllModule instanceof ExternalModule) continue; - for (const name in exportAllModule!.exportsAll) { - if (name in module.exportsAll) { - this.options.onwarn(errNamespaceConflict(name, module, exportAllModule!)); - } else { - module.exportsAll[name] = exportAllModule!.exportsAll[name]; - } - } - } + await Promise.all([ + this.fetchStaticDependencies(module), + this.fetchDynamicDependencies(module) + ]); + module.linkImports(); return module; } @@ -398,6 +334,23 @@ export class ModuleLoader { } } + private async fetchStaticDependencies(module: Module): Promise { + for (const dependency of await Promise.all( + Array.from(module.sources, async source => + this.fetchResolvedDependency( + source, + module.id, + (module.resolvedIds[source] = + module.resolvedIds[source] || + this.handleResolveId(await this.resolveId(source, module.id), source, module.id)) + ) + ) + )) { + module.dependencies.add(dependency); + dependency.importers.push(module.id); + } + } + private handleResolveId( resolvedId: ResolvedId | null, source: string, diff --git a/src/ast/variables/NamespaceVariable.ts b/src/ast/variables/NamespaceVariable.ts index 0fc96b33f54..365b020ee5e 100644 --- a/src/ast/variables/NamespaceVariable.ts +++ b/src/ast/variables/NamespaceVariable.ts @@ -35,15 +35,28 @@ export default class NamespaceVariable extends Variable { // need to reassign all exports. deoptimizePath() { const memberVariables = this.getMemberVariables(); - for (const key in memberVariables) { + for (const key of Object.keys(memberVariables)) { memberVariables[key].deoptimizePath(UNKNOWN_PATH); } } + getMemberVariables(): { [name: string]: Variable } { + if (this.memberVariables) { + return this.memberVariables; + } + const memberVariables = Object.create(null); + for (const name of this.context.getExports().concat(this.context.getReexports())) { + if (name[0] !== '*') { + memberVariables[name] = this.context.traceExport(name); + } + } + this.memberVariables = memberVariables; + return (this.memberVariables = memberVariables); + } + include() { if (!this.included) { this.included = true; - const memberVariables = this.getMemberVariables(); for (const identifier of this.references) { if (identifier.context.getModuleExecIndex() <= this.context.getModuleExecIndex()) { this.referencedEarly = true; @@ -51,12 +64,10 @@ export default class NamespaceVariable extends Variable { } } this.mergedNamespaces = this.context.includeAndGetAdditionalMergedNamespaces(); - if (this.context.options.preserveModules) { - for (const memberName in memberVariables) memberVariables[memberName].include(); - } else { - for (const memberName in memberVariables) - this.context.includeVariable(memberVariables[memberName]); - } + const memberVariables = this.getMemberVariables(); + // We directly include the variables instead of context.include to not automatically + // generate imports for members from other modules + for (const memberName of Object.keys(memberVariables)) memberVariables[memberName].include(); } } @@ -118,20 +129,6 @@ export default class NamespaceVariable extends Variable { renderFirst() { return this.referencedEarly; } - - private getMemberVariables(): { [name: string]: Variable } { - if (this.memberVariables) { - return this.memberVariables; - } - const memberVariables = Object.create(null); - for (const name of this.context.getExports().concat(this.context.getReexports())) { - if (name[0] !== '*') { - memberVariables[name] = this.context.traceExport(name); - } - } - this.memberVariables = memberVariables; - return (this.memberVariables = memberVariables); - } } NamespaceVariable.prototype.isNamespace = true; diff --git a/src/rollup/rollup.ts b/src/rollup/rollup.ts index 9849ad173c8..fa732647c43 100644 --- a/src/rollup/rollup.ts +++ b/src/rollup/rollup.ts @@ -1,6 +1,5 @@ import { version as rollupVersion } from 'package.json'; import Bundle from '../Bundle'; -import Chunk from '../Chunk'; import Graph from '../Graph'; import { ensureArray } from '../utils/ensureArray'; import { errCannotEmitFromOptionsHook, error } from '../utils/error'; @@ -33,13 +32,13 @@ export async function rollupInternal( rawInputOptions: GenericConfigObject, watcher: RollupWatcher | null ): Promise { - const { options: inputOptions, unsetOptions } = getInputOptions( + const { options: inputOptions, unsetOptions: unsetInputOptions } = getInputOptions( rawInputOptions, watcher !== null ); initialiseTimers(inputOptions); - const graph = new Graph(inputOptions, unsetOptions, watcher); + const graph = new Graph(inputOptions, watcher); // remove the cache option from the memory after graph creation (cache is not used anymore) const useCache = rawInputOptions.cache !== false; @@ -48,10 +47,9 @@ export async function rollupInternal( timeStart('BUILD', 1); - let chunks: Chunk[]; try { await graph.pluginDriver.hookParallel('buildStart', [inputOptions]); - chunks = await graph.build(); + await graph.build(); } catch (err) { const watchFiles = Object.keys(graph.watchFiles); if (watchFiles.length > 0) { @@ -68,54 +66,23 @@ export async function rollupInternal( const result: RollupBuild = { cache: useCache ? graph.getCache() : undefined, async generate(rawOutputOptions: OutputOptions) { - const { - options: outputOptions, - outputPluginDriver, - unsetOptions - } = getOutputOptionsAndPluginDriver( - rawOutputOptions as GenericConfigObject, - graph.pluginDriver, - inputOptions - ); - const bundle = new Bundle( - outputOptions, - unsetOptions, + return handleGenerateWrite( + false, inputOptions, - outputPluginDriver, - chunks + unsetInputOptions, + rawOutputOptions as GenericConfigObject, + graph ); - return createOutput(await bundle.generate(false)); }, watchFiles: Object.keys(graph.watchFiles), async write(rawOutputOptions: OutputOptions) { - const { - options: outputOptions, - outputPluginDriver, - unsetOptions - } = getOutputOptionsAndPluginDriver( - rawOutputOptions as GenericConfigObject, - graph.pluginDriver, - inputOptions - ); - if (!outputOptions.dir && !outputOptions.file) { - return error({ - code: 'MISSING_OPTION', - message: 'You must specify "output.file" or "output.dir" for the build.' - }); - } - const bundle = new Bundle( - outputOptions, - unsetOptions, + return handleGenerateWrite( + true, inputOptions, - outputPluginDriver, - chunks - ); - const generated = await bundle.generate(true); - await Promise.all( - Object.keys(generated).map(chunkId => writeOutputFile(generated[chunkId], outputOptions)) + unsetInputOptions, + rawOutputOptions as GenericConfigObject, + graph ); - await outputPluginDriver.hookParallel('writeBundle', [outputOptions, generated]); - return createOutput(generated); } }; if (inputOptions.perf) result.getTimings = getTimings; @@ -160,10 +127,45 @@ function normalizePlugins(plugins: Plugin[], anonymousPrefix: string): void { } } +async function handleGenerateWrite( + isWrite: boolean, + inputOptions: NormalizedInputOptions, + unsetInputOptions: Set, + rawOutputOptions: GenericConfigObject, + graph: Graph +): Promise { + const { + options: outputOptions, + outputPluginDriver, + unsetOptions + } = getOutputOptionsAndPluginDriver( + rawOutputOptions, + graph.pluginDriver, + inputOptions, + unsetInputOptions + ); + const bundle = new Bundle(outputOptions, unsetOptions, inputOptions, outputPluginDriver, graph); + const generated = await bundle.generate(isWrite); + if (isWrite) { + if (!outputOptions.dir && !outputOptions.file) { + return error({ + code: 'MISSING_OPTION', + message: 'You must specify "output.file" or "output.dir" for the build.' + }); + } + await Promise.all( + Object.keys(generated).map(chunkId => writeOutputFile(generated[chunkId], outputOptions)) + ); + await outputPluginDriver.hookParallel('writeBundle', [outputOptions, generated]); + } + return createOutput(generated); +} + function getOutputOptionsAndPluginDriver( rawOutputOptions: GenericConfigObject, inputPluginDriver: PluginDriver, - inputOptions: NormalizedInputOptions + inputOptions: NormalizedInputOptions, + unsetInputOptions: Set ): { options: NormalizedOutputOptions; outputPluginDriver: PluginDriver; @@ -177,13 +179,14 @@ function getOutputOptionsAndPluginDriver( const outputPluginDriver = inputPluginDriver.createOutputPluginDriver(rawPlugins); return { - ...getOutputOptions(inputOptions, rawOutputOptions, outputPluginDriver), + ...getOutputOptions(inputOptions, unsetInputOptions, rawOutputOptions, outputPluginDriver), outputPluginDriver }; } function getOutputOptions( inputOptions: NormalizedInputOptions, + unsetInputOptions: Set, rawOutputOptions: GenericConfigObject, outputPluginDriver: PluginDriver ): { options: NormalizedOutputOptions; unsetOptions: Set } { @@ -201,7 +204,8 @@ function getOutputOptions( }; } ) as GenericConfigObject, - inputOptions + inputOptions, + unsetInputOptions ); } diff --git a/src/rollup/types.d.ts b/src/rollup/types.d.ts index 335e0988a7b..f01ae76dc48 100644 --- a/src/rollup/types.d.ts +++ b/src/rollup/types.d.ts @@ -490,14 +490,17 @@ export interface InputOptions { context?: string; experimentalCacheExpiry?: number; external?: ExternalOption; + /** @deprecated Use the "inlineDynamicImports" output option instead. */ inlineDynamicImports?: boolean; input?: InputOption; + /** @deprecated Use the "manualChunks" output option instead. */ manualChunks?: ManualChunksOption; moduleContext?: ((id: string) => string | null | undefined) | { [id: string]: string }; onwarn?: WarningHandlerWithDefault; perf?: boolean; plugins?: Plugin[]; preserveEntrySignatures?: PreserveEntrySignaturesOption; + /** @deprecated Use the "preserveModules" output option instead. */ preserveModules?: boolean; preserveSymlinks?: boolean; shimMissingExports?: boolean; @@ -513,15 +516,18 @@ export interface NormalizedInputOptions { context: string; experimentalCacheExpiry: number; external: IsExternal; - inlineDynamicImports: boolean; + /** @deprecated Use the "inlineDynamicImports" output option instead. */ + inlineDynamicImports: boolean | undefined; input: string[] | { [entryAlias: string]: string }; - manualChunks: ManualChunksOption; + /** @deprecated Use the "manualChunks" output option instead. */ + manualChunks: ManualChunksOption | undefined; moduleContext: (id: string) => string; onwarn: WarningHandler; perf: boolean; plugins: Plugin[]; preserveEntrySignatures: PreserveEntrySignaturesOption; - preserveModules: boolean; + /** @deprecated Use the "preserveModules" output option instead. */ + preserveModules: boolean | undefined; preserveSymlinks: boolean; shimMissingExports: boolean; strictDeprecations: boolean; @@ -560,8 +566,10 @@ export interface OutputOptions { globals?: GlobalsOption; hoistTransitiveImports?: boolean; indent?: string | boolean; + inlineDynamicImports?: boolean; interop?: boolean; intro?: string | (() => string | Promise); + manualChunks?: ManualChunksOption; minifyInternalExports?: boolean; name?: string; namespaceToStringTag?: boolean; @@ -570,6 +578,7 @@ export interface OutputOptions { paths?: OptionsPaths; plugins?: OutputPlugin[]; preferConst?: boolean; + preserveModules?: boolean; sourcemap?: boolean | 'inline' | 'hidden'; sourcemapExcludeSources?: boolean; sourcemapFile?: string; @@ -602,8 +611,10 @@ export interface NormalizedOutputOptions { globals: GlobalsOption; hoistTransitiveImports: boolean; indent: true | string; + inlineDynamicImports: boolean; interop: boolean; intro: () => string | Promise; + manualChunks: ManualChunksOption; minifyInternalExports: boolean; name: string | undefined; namespaceToStringTag: boolean; @@ -612,6 +623,7 @@ export interface NormalizedOutputOptions { paths: OptionsPaths; plugins: OutputPlugin[]; preferConst: boolean; + preserveModules: boolean; sourcemap: boolean | 'inline' | 'hidden'; sourcemapExcludeSources: boolean; sourcemapFile: string | undefined; diff --git a/src/utils/FileEmitter.ts b/src/utils/FileEmitter.ts index ba14de04ca5..ac5f6204ff1 100644 --- a/src/utils/FileEmitter.ts +++ b/src/utils/FileEmitter.ts @@ -1,3 +1,4 @@ +import Chunk from '../Chunk'; import Graph from '../Graph'; import Module from '../Module'; import { @@ -137,13 +138,17 @@ function getAssetFileName(file: ConsumedAsset, referenceId: string): string { return file.fileName; } -function getChunkFileName(file: ConsumedChunk): string { - const fileName = file.fileName || (file.module && file.module.facadeChunk!.id); +function getChunkFileName( + file: ConsumedChunk, + facadeChunkByModule: Map | null +): string { + const fileName = file.fileName || (file.module && facadeChunkByModule?.get(file.module)?.id); if (!fileName) return error(errChunkNotGeneratedForFileName(file.fileName || file.name)); return fileName; } export class FileEmitter { + private facadeChunkByModule: Map | null = null; private filesByReferenceId: Map; private output: OutputSpecificFileData | null = null; @@ -194,7 +199,7 @@ export class FileEmitter { const emittedFile = this.filesByReferenceId.get(fileReferenceId); if (!emittedFile) return error(errFileReferenceIdNotFoundForFilename(fileReferenceId)); if (emittedFile.type === 'chunk') { - return getChunkFileName(emittedFile); + return getChunkFileName(emittedFile, this.facadeChunkByModule); } else { return getAssetFileName(emittedFile, fileReferenceId); } @@ -223,12 +228,14 @@ export class FileEmitter { public setOutputBundle = ( outputBundle: OutputBundleWithPlaceholders, - assetFileNames: string + assetFileNames: string, + facadeChunkByModule: Map ): void => { this.output = { assetFileNames, bundle: outputBundle }; + this.facadeChunkByModule = facadeChunkByModule; for (const emittedFile of this.filesByReferenceId.values()) { if (emittedFile.fileName) { reserveFileNameInBundle(emittedFile.fileName, this.output.bundle, this.options.onwarn); diff --git a/src/utils/PluginDriver.ts b/src/utils/PluginDriver.ts index 7825a90ad0e..0444a4dd7a4 100644 --- a/src/utils/PluginDriver.ts +++ b/src/utils/PluginDriver.ts @@ -1,4 +1,6 @@ +import Chunk from '../Chunk'; import Graph from '../Graph'; +import Module from '../Module'; import { AddonHookFunction, AsyncPluginHooks, @@ -68,7 +70,8 @@ export class PluginDriver { public getFileName: (fileReferenceId: string) => string; public setOutputBundle: ( outputBundle: OutputBundleWithPlaceholders, - assetFileNames: string + assetFileNames: string, + facadeChunkByModule: Map ) => void; private fileEmitter: FileEmitter; diff --git a/src/utils/chunkAssignment.ts b/src/utils/chunkAssignment.ts index bf5848a4b4c..e386ebb7ca8 100644 --- a/src/utils/chunkAssignment.ts +++ b/src/utils/chunkAssignment.ts @@ -1,13 +1,26 @@ import ExternalModule from '../ExternalModule'; import Module from '../Module'; -type DependentModuleMap = Map>; +type DependentModuleMap = Map>; +type ChunkDefinitions = { alias: string | null; modules: Module[] }[]; export function getChunkAssignments( entryModules: Module[], - manualChunkModules: Record -): Module[][] { - const assignedEntryPointsByModule: DependentModuleMap = new Map(); + manualChunkAliasByEntry: Map +): ChunkDefinitions { + const chunkDefinitions: ChunkDefinitions = []; + const modulesInManualChunks = new Set(manualChunkAliasByEntry.keys()); + const manualChunkModulesByAlias: Record = Object.create(null); + for (const [entry, alias] of manualChunkAliasByEntry) { + const chunkModules = (manualChunkModulesByAlias[alias] = + manualChunkModulesByAlias[alias] || []); + addStaticDependenciesToManualChunk(entry, chunkModules, modulesInManualChunks); + } + for (const [alias, modules] of Object.entries(manualChunkModulesByAlias)) { + chunkDefinitions.push({ alias, modules }); + } + + const assignedEntryPointsByModule: DependentModuleMap = new Map(); const { dependentEntryPointsByModule, dynamicEntryModules } = analyzeModuleGraph(entryModules); const dynamicallyDependentEntryPointsByDynamicEntry: DependentModuleMap = getDynamicDependentEntryPoints( dependentEntryPointsByModule, @@ -17,17 +30,12 @@ export function getChunkAssignments( function assignEntryToStaticDependencies( entry: Module, - dynamicDependentEntryPoints: Set | null, - assignedEntry: Module | string = entry + dynamicDependentEntryPoints: Set | null ) { - const manualChunkAlias = entry.manualChunkAlias; const modulesToHandle = new Set([entry]); for (const module of modulesToHandle) { const assignedEntryPoints = getDependentModules(assignedEntryPointsByModule, module); - if (manualChunkAlias) { - module.manualChunkAlias = manualChunkAlias; - assignedEntryPoints.add(assignedEntry); - } else if ( + if ( dynamicDependentEntryPoints && areEntryPointsContainedOrDynamicallyDependent( dynamicDependentEntryPoints, @@ -36,10 +44,10 @@ export function getChunkAssignments( ) { continue; } else { - assignedEntryPoints.add(assignedEntry); + assignedEntryPoints.add(entry); } for (const dependency of module.getDependenciesToBeIncluded()) { - if (!(dependency instanceof ExternalModule || dependency.manualChunkAlias)) { + if (!(dependency instanceof ExternalModule || modulesInManualChunks.has(dependency))) { modulesToHandle.add(dependency); } } @@ -48,16 +56,16 @@ export function getChunkAssignments( function areEntryPointsContainedOrDynamicallyDependent( entryPoints: Set, - superSet: Set + containedIn: Set ): boolean { const entriesToCheck = new Set(entryPoints); for (const entry of entriesToCheck) { - if (!superSet.has(entry)) { + if (!containedIn.has(entry)) { if (staticEntries.has(entry)) return false; - const dynamicDependentEntryPoints = dynamicallyDependentEntryPointsByDynamicEntry.get( + const dynamicallyDependentEntryPoints = dynamicallyDependentEntryPointsByDynamicEntry.get( entry )!; - for (const dependentEntry of dynamicDependentEntryPoints) { + for (const dependentEntry of dynamicallyDependentEntryPoints) { entriesToCheck.add(dependentEntry); } } @@ -65,20 +73,14 @@ export function getChunkAssignments( return true; } - for (const chunkName of Object.keys(manualChunkModules)) { - for (const entry of manualChunkModules[chunkName]) { - assignEntryToStaticDependencies(entry, null, chunkName); - } - } - for (const entry of entryModules) { - if (!entry.manualChunkAlias) { + if (!modulesInManualChunks.has(entry)) { assignEntryToStaticDependencies(entry, null); } } for (const entry of dynamicEntryModules) { - if (!entry.manualChunkAlias) { + if (!modulesInManualChunks.has(entry)) { assignEntryToStaticDependencies( entry, dynamicallyDependentEntryPointsByDynamicEntry.get(entry)! @@ -86,10 +88,27 @@ export function getChunkAssignments( } } - return createChunks( - [...Object.keys(manualChunkModules), ...entryModules, ...dynamicEntryModules], - assignedEntryPointsByModule + chunkDefinitions.push( + ...createChunks([...entryModules, ...dynamicEntryModules], assignedEntryPointsByModule) ); + return chunkDefinitions; +} + +function addStaticDependenciesToManualChunk( + entry: Module, + manualChunkModules: Module[], + modulesInManualChunks: Set +) { + const modulesToHandle = new Set([entry]); + for (const module of modulesToHandle) { + modulesInManualChunks.add(module); + manualChunkModules.push(module); + for (const dependency of module.dependencies) { + if (!(dependency instanceof ExternalModule || modulesInManualChunks.has(dependency))) { + modulesToHandle.add(dependency); + } + } + } } function analyzeModuleGraph( @@ -111,11 +130,7 @@ function analyzeModuleGraph( } } for (const { resolution } of module.dynamicImports) { - if ( - resolution instanceof Module && - resolution.includedDynamicImporters.length > 0 && - !resolution.manualChunkAlias - ) { + if (resolution instanceof Module && resolution.includedDynamicImporters.length > 0) { dynamicEntryModules.add(resolution); entriesToHandle.add(resolution); } @@ -129,7 +144,7 @@ function analyzeModuleGraph( return { dependentEntryPointsByModule, dynamicEntryModules }; } -function getDependentModules(moduleMap: DependentModuleMap, module: Module): Set { +function getDependentModules(moduleMap: DependentModuleMap, module: Module): Set { const dependentModules = moduleMap.get(module) || new Set(); moduleMap.set(module, dependentModules); return dependentModules; @@ -158,9 +173,9 @@ function getDynamicDependentEntryPoints( } function createChunks( - allEntryPoints: (Module | string)[], - assignedEntryPointsByModule: DependentModuleMap -) { + allEntryPoints: Module[], + assignedEntryPointsByModule: DependentModuleMap +): ChunkDefinitions { const chunkModules: { [chunkSignature: string]: Module[] } = Object.create(null); for (const [module, assignedEntryPoints] of assignedEntryPointsByModule) { let chunkSignature = ''; @@ -174,5 +189,8 @@ function createChunks( chunkModules[chunkSignature] = [module]; } } - return Object.keys(chunkModules).map(chunkSignature => chunkModules[chunkSignature]); + return Object.keys(chunkModules).map(chunkSignature => ({ + alias: null, + modules: chunkModules[chunkSignature] + })); } diff --git a/src/utils/deconflictChunk.ts b/src/utils/deconflictChunk.ts index b4ab5ff5aca..88d93de2657 100644 --- a/src/utils/deconflictChunk.ts +++ b/src/utils/deconflictChunk.ts @@ -13,6 +13,7 @@ const DECONFLICT_IMPORTED_VARIABLES_BY_FORMAT: { dependencies: Set, interop: boolean, preserveModules: boolean, + chunkByModule: Map, syntheticExports: Set ) => void; } = { @@ -32,6 +33,7 @@ export function deconflictChunk( format: string, interop: boolean, preserveModules: boolean, + chunkByModule: Map, syntheticExports: Set, exportNamesByVariable: Map ) { @@ -45,6 +47,7 @@ export function deconflictChunk( dependencies, interop, preserveModules, + chunkByModule, syntheticExports ); @@ -59,6 +62,7 @@ function deconflictImportsEsm( dependencies: Set, interop: boolean, preserveModules: boolean, + _chunkByModule: Map, syntheticExports: Set ) { // Deconflict re-exported variables of dependencies when preserveModules is true. @@ -108,7 +112,8 @@ function deconflictImportsOther( imports: Set, dependencies: Set, interop: boolean, - preserveModules: boolean + preserveModules: boolean, + chunkByModule: Map ) { for (const chunkOrExternalModule of dependencies) { chunkOrExternalModule.variableName = getSafeName(chunkOrExternalModule.variableName, usedNames); @@ -125,7 +130,7 @@ function deconflictImportsOther( variable.setRenderNames(module.variableName, null); } } else { - const chunk = module!.chunk!; + const chunk = chunkByModule.get(module!)!; if (chunk.exportMode === 'default' || (preserveModules && variable.isNamespace)) { variable.setRenderNames(null, chunk.variableName); } else { diff --git a/src/utils/error.ts b/src/utils/error.ts index 0b08036c9c6..aa6ede7e27b 100644 --- a/src/utils/error.ts +++ b/src/utils/error.ts @@ -3,6 +3,7 @@ import Module from '../Module'; import { NormalizedInputOptions, RollupError, + RollupLogProps, RollupWarning, WarningHandler } from '../rollup/types'; @@ -15,23 +16,23 @@ export function error(base: Error | RollupError): never { } export function augmentCodeLocation( - object: RollupError | RollupWarning, + props: RollupLogProps, pos: number | { column: number; line: number }, source: string, id: string ): void { if (typeof pos === 'object') { const { line, column } = pos; - object.loc = { file: id, line, column }; + props.loc = { file: id, line, column }; } else { - object.pos = pos; + props.pos = pos; const { line, column } = locate(source, pos, { offsetLine: 1 }); - object.loc = { file: id, line, column }; + props.loc = { file: id, line, column }; } - if (object.frame === undefined) { - const { line, column } = object.loc; - object.frame = getCodeFrame(source, line, column); + if (props.frame === undefined) { + const { line, column } = props.loc; + props.frame = getCodeFrame(source, line, column); } } diff --git a/src/utils/options/mergeOptions.ts b/src/utils/options/mergeOptions.ts index 74048416b5f..2453b088ff0 100644 --- a/src/utils/options/mergeOptions.ts +++ b/src/utils/options/mergeOptions.ts @@ -207,8 +207,10 @@ function mergeOutputOptions( globals: getOption('globals'), hoistTransitiveImports: getOption('hoistTransitiveImports'), indent: getOption('indent'), + inlineDynamicImports: getOption('inlineDynamicImports'), interop: getOption('interop'), intro: getOption('intro'), + manualChunks: getOption('manualChunks'), minifyInternalExports: getOption('minifyInternalExports'), name: getOption('name'), namespaceToStringTag: getOption('namespaceToStringTag'), @@ -217,6 +219,7 @@ function mergeOutputOptions( paths: getOption('paths'), plugins: ensureArray(config.plugins) as Plugin[], preferConst: getOption('preferConst'), + preserveModules: getOption('preserveModules'), sourcemap: getOption('sourcemap'), sourcemapExcludeSources: getOption('sourcemapExcludeSources'), sourcemapFile: getOption('sourcemapFile'), diff --git a/src/utils/options/normalizeInputOptions.ts b/src/utils/options/normalizeInputOptions.ts index 751f9ac3883..7360ef08553 100644 --- a/src/utils/options/normalizeInputOptions.ts +++ b/src/utils/options/normalizeInputOptions.ts @@ -18,7 +18,7 @@ import { WarningHandlerWithDefault } from '../../rollup/types'; import { ensureArray } from '../ensureArray'; -import { errInvalidOption, error, warnDeprecationWithOptions } from '../error'; +import { errInvalidOption, warnDeprecationWithOptions } from '../error'; import { resolve } from '../path'; import relativeId from '../relativeId'; import { defaultOnWarn, GenericConfigObject, warnUnknownOptions } from './options'; @@ -37,9 +37,7 @@ export function normalizeInputOptions( const unsetOptions = new Set(); const context = (config.context as string | undefined) ?? 'undefined'; - const inlineDynamicImports = (config.inlineDynamicImports as boolean | undefined) || false; const onwarn = getOnwarn(config); - const preserveModules = getPreserveModules(config, inlineDynamicImports); const strictDeprecations = (config.strictDeprecations as boolean | undefined) || false; const options: NormalizedInputOptions & InputOptions = { acorn: getAcorn(config), @@ -48,15 +46,15 @@ export function normalizeInputOptions( context, experimentalCacheExpiry: (config.experimentalCacheExpiry as number | undefined) ?? 10, external: getIdMatcher(config.external as ExternalOption), - inlineDynamicImports, - input: getInput(config, inlineDynamicImports), - manualChunks: getManualChunks(config, inlineDynamicImports, preserveModules), + inlineDynamicImports: getInlineDynamicImports(config, onwarn, strictDeprecations), + input: getInput(config), + manualChunks: getManualChunks(config, onwarn, strictDeprecations), moduleContext: getModuleContext(config, context), onwarn, perf: (config.perf as boolean | undefined) || false, plugins: ensureArray(config.plugins) as Plugin[], - preserveEntrySignatures: getPreserveEntrySignatures(config, unsetOptions, preserveModules), - preserveModules, + preserveEntrySignatures: getPreserveEntrySignatures(config, unsetOptions), + preserveModules: getPreserveModules(config, onwarn, strictDeprecations), preserveSymlinks: (config.preserveSymlinks as boolean | undefined) || false, shimMissingExports: (config.shimMissingExports as boolean | undefined) || false, strictDeprecations, @@ -91,20 +89,6 @@ const getOnwarn = (config: GenericConfigObject): WarningHandler => { : defaultOnWarn; }; -const getPreserveModules = ( - config: GenericConfigObject, - inlineDynamicImports: boolean -): boolean => { - const preserveModules = (config.preserveModules as boolean | undefined) || false; - if (preserveModules && inlineDynamicImports) { - return error({ - code: 'INVALID_OPTION', - message: `"preserveModules" does not support the "inlineDynamicImports" option.` - }); - } - return preserveModules; -}; - const getAcorn = (config: GenericConfigObject): acorn.Options => ({ allowAwaitOutsideFunction: true, ecmaVersion: 2020, @@ -157,43 +141,43 @@ const getIdMatcher = >( return () => false; }; -const getInput = ( +const getInlineDynamicImports = ( config: GenericConfigObject, - inlineDynamicImports: boolean -): string[] | { [entryAlias: string]: string } => { - const configInput = config.input as InputOption | undefined; - const input = - configInput == null ? [] : typeof configInput === 'string' ? [configInput] : configInput; - if (inlineDynamicImports && (Array.isArray(input) ? input : Object.keys(input)).length > 1) { - return error({ - code: 'INVALID_OPTION', - message: 'Multiple inputs are not supported for "inlineDynamicImports".' - }); + warn: WarningHandler, + strictDeprecations: boolean +): boolean | undefined => { + const configInlineDynamicImports = config.inlineDynamicImports as boolean | undefined; + if (configInlineDynamicImports) { + warnDeprecationWithOptions( + 'The "inlineDynamicImports" option is deprecated. Use the "output.inlineDynamicImports" option instead.', + false, + warn, + strictDeprecations + ); } - return input; + return configInlineDynamicImports; +}; + +const getInput = (config: GenericConfigObject): string[] | { [entryAlias: string]: string } => { + const configInput = config.input as InputOption | undefined; + return configInput == null ? [] : typeof configInput === 'string' ? [configInput] : configInput; }; const getManualChunks = ( config: GenericConfigObject, - inlineDynamicImports: boolean, - preserveModules: boolean -): ManualChunksOption => { - const configManualChunks = config.manualChunks as ManualChunksOption; + warn: WarningHandler, + strictDeprecations: boolean +): ManualChunksOption | undefined => { + const configManualChunks = config.manualChunks as ManualChunksOption | undefined; if (configManualChunks) { - if (inlineDynamicImports) { - return error({ - code: 'INVALID_OPTION', - message: '"manualChunks" option is not supported for "inlineDynamicImports".' - }); - } - if (preserveModules) { - return error({ - code: 'INVALID_OPTION', - message: '"preserveModules" does not support the "manualChunks" option.' - }); - } + warnDeprecationWithOptions( + 'The "manualChunks" option is deprecated. Use the "output.manualChunks" option instead.', + false, + warn, + strictDeprecations + ); } - return configManualChunks || {}; + return configManualChunks; }; const getModuleContext = ( @@ -219,23 +203,34 @@ const getModuleContext = ( const getPreserveEntrySignatures = ( config: GenericConfigObject, - unsetOptions: Set, - preserveModules: boolean + unsetOptions: Set ): PreserveEntrySignaturesOption => { const configPreserveEntrySignatures = config.preserveEntrySignatures as | PreserveEntrySignaturesOption | undefined; if (configPreserveEntrySignatures == null) { unsetOptions.add('preserveEntrySignatures'); - } else if (configPreserveEntrySignatures === false && preserveModules) { - return error({ - code: 'INVALID_OPTION', - message: '"preserveModules" does not support setting "preserveEntrySignatures" to "false".' - }); } return configPreserveEntrySignatures ?? 'strict'; }; +const getPreserveModules = ( + config: GenericConfigObject, + warn: WarningHandler, + strictDeprecations: boolean +): boolean | undefined => { + const configPreserveModules = config.preserveModules as boolean | undefined; + if (configPreserveModules) { + warnDeprecationWithOptions( + 'The "preserveModules" option is deprecated. Use the "output.preserveModules" option instead.', + false, + warn, + strictDeprecations + ); + } + return configPreserveModules; +}; + const getTreeshake = ( config: GenericConfigObject, warn: WarningHandler, diff --git a/src/utils/options/normalizeOutputOptions.ts b/src/utils/options/normalizeOutputOptions.ts index 520530abd84..515668ed7aa 100644 --- a/src/utils/options/normalizeOutputOptions.ts +++ b/src/utils/options/normalizeOutputOptions.ts @@ -1,6 +1,7 @@ import { GlobalsOption, InternalModuleFormat, + ManualChunksOption, ModuleFormat, NormalizedInputOptions, NormalizedOutputOptions, @@ -14,15 +15,19 @@ import { GenericConfigObject, warnUnknownOptions } from './options'; export function normalizeOutputOptions( config: GenericConfigObject, - inputOptions: NormalizedInputOptions + inputOptions: NormalizedInputOptions, + unsetInputOptions: Set ): { options: NormalizedOutputOptions; unsetOptions: Set } { // These are options that may trigger special warnings or behaviour later // if the user did not select an explicit value - const unsetOptions = new Set(); + const unsetOptions = new Set(unsetInputOptions); const compact = (config.compact as boolean | undefined) || false; - const file = getFile(config, inputOptions); const format = getFormat(config); + const inlineDynamicImports = getInlineDynamicImports(config, inputOptions); + const preserveModules = getPreserveModules(config, inlineDynamicImports, inputOptions); + const file = getFile(config, preserveModules, inputOptions); + const outputOptions: NormalizedOutputOptions & OutputOptions = { amd: getAmd(config), assetFileNames: @@ -44,8 +49,10 @@ export function normalizeOutputOptions( globals: (config.globals as GlobalsOption | undefined) || {}, hoistTransitiveImports: (config.hoistTransitiveImports as boolean | undefined) ?? true, indent: getIndent(config, compact), + inlineDynamicImports, interop: (config.interop as boolean | undefined) ?? true, intro: getAddon(config, 'intro'), + manualChunks: getManualChunks(config, inlineDynamicImports, preserveModules, inputOptions), minifyInternalExports: getMinifyInternalExports(config, format, compact), name: config.name as string | undefined, namespaceToStringTag: (config.namespaceToStringTag as boolean | undefined) || false, @@ -54,6 +61,7 @@ export function normalizeOutputOptions( paths: (config.paths as OptionsPaths | undefined) || {}, plugins: ensureArray(config.plugins) as Plugin[], preferConst: (config.preferConst as boolean | undefined) || false, + preserveModules, sourcemap: (config.sourcemap as boolean | 'inline' | 'hidden' | undefined) || false, sourcemapExcludeSources: (config.sourcemapExcludeSources as boolean | undefined) || false, sourcemapFile: config.sourcemapFile as string | undefined, @@ -70,15 +78,16 @@ export function normalizeOutputOptions( const getFile = ( config: GenericConfigObject, + preserveModules: boolean, inputOptions: NormalizedInputOptions ): string | undefined => { const file = config.file as string | undefined; if (typeof file === 'string') { - if (inputOptions.preserveModules) { + if (preserveModules) { return error({ code: 'INVALID_OPTION', message: - 'You must set "output.dir" instead of "output.file" when using the "preserveModules" option.' + 'You must set "output.dir" instead of "output.file" when using the "output.preserveModules" option.' }); } if (!Array.isArray(inputOptions.input)) @@ -116,6 +125,48 @@ const getFormat = (config: GenericConfigObject): InternalModuleFormat => { } }; +const getInlineDynamicImports = ( + config: GenericConfigObject, + inputOptions: NormalizedInputOptions +): boolean => { + const inlineDynamicImports = + ((config.inlineDynamicImports as boolean | undefined) ?? inputOptions.inlineDynamicImports) || + false; + const { input } = inputOptions; + if (inlineDynamicImports && (Array.isArray(input) ? input : Object.keys(input)).length > 1) { + return error({ + code: 'INVALID_OPTION', + message: 'Multiple inputs are not supported for "output.inlineDynamicImports".' + }); + } + return inlineDynamicImports; +}; + +const getPreserveModules = ( + config: GenericConfigObject, + inlineDynamicImports: boolean, + inputOptions: NormalizedInputOptions +): boolean => { + const preserveModules = + ((config.preserveModules as boolean | undefined) ?? inputOptions.preserveModules) || false; + if (preserveModules) { + if (inlineDynamicImports) { + return error({ + code: 'INVALID_OPTION', + message: `The "output.inlineDynamicImports" option is not supported for "output.preserveModules".` + }); + } + if (inputOptions.preserveEntrySignatures === false) { + return error({ + code: 'INVALID_OPTION', + message: + 'Setting "preserveEntrySignatures" to "false" is not supported for "output.preserveModules".' + }); + } + } + return preserveModules; +}; + const getAmd = ( config: GenericConfigObject ): { @@ -188,6 +239,32 @@ const getIndent = (config: GenericConfigObject, compact: boolean): string | true return configIndent === false ? '' : configIndent ?? true; }; +const getManualChunks = ( + config: GenericConfigObject, + inlineDynamicImports: boolean, + preserveModules: boolean, + inputOptions: NormalizedInputOptions +): ManualChunksOption => { + const configManualChunks = + (config.manualChunks as ManualChunksOption | undefined) || inputOptions.manualChunks; + if (configManualChunks) { + if (inlineDynamicImports) { + return error({ + code: 'INVALID_OPTION', + message: + 'The "output.manualChunks" option is not supported for "output.inlineDynamicImports".' + }); + } + if (preserveModules) { + return error({ + code: 'INVALID_OPTION', + message: 'The "output.manualChunks" option is not supported for "output.preserveModules".' + }); + } + } + return configManualChunks || {}; +}; + const getMinifyInternalExports = ( config: GenericConfigObject, format: InternalModuleFormat, diff --git a/test/chunking-form/samples/chunk-variable-name-conflict/_expected/amd/main1.js b/test/chunking-form/samples/chunk-variable-name-conflict/_expected/amd/main1.js index f8cf7bcec88..b5ec063a056 100644 --- a/test/chunking-form/samples/chunk-variable-name-conflict/_expected/amd/main1.js +++ b/test/chunking-form/samples/chunk-variable-name-conflict/_expected/amd/main1.js @@ -1,5 +1,5 @@ -define(['./generated-dep'], function (dep$1) { 'use strict'; +define(['./generated-dep'], function (dep) { 'use strict'; - [43].map(dep => console.log(dep, dep$1.value, dep$1.x)); + [43].map(dep$1 => console.log(dep$1, dep.value, dep.x)); }); diff --git a/test/chunking-form/samples/circular-manual-chunks/_config.js b/test/chunking-form/samples/circular-manual-chunks/_config.js index 35fc197570e..4a03dcf2c88 100644 --- a/test/chunking-form/samples/circular-manual-chunks/_config.js +++ b/test/chunking-form/samples/circular-manual-chunks/_config.js @@ -3,6 +3,6 @@ module.exports = { expectedWarnings: ['CIRCULAR_DEPENDENCY'], options: { input: 'main', - manualChunks: { lib1: ['lib1'], lib2: ['lib2'] } + output: { manualChunks: { lib1: ['lib1'], lib2: ['lib2'] } } } }; diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_config.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_config.js new file mode 100644 index 00000000000..f1ceddc826f --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: + 'avoids empty imports if they do not have side-effects when preserving modules (#3359)', + options: { + strictDeprecations: false, + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/amd/a.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/amd/a.js new file mode 100644 index 00000000000..a0ee4d5c962 --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/amd/a.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + const a = 1; + + exports.a = a; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/amd/b.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/amd/b.js new file mode 100644 index 00000000000..71d3b650e8d --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/amd/b.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + const b = 2; + + exports.b = b; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/amd/main.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/amd/main.js new file mode 100644 index 00000000000..854a7e8dca1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/amd/main.js @@ -0,0 +1,5 @@ +define(['./a', './one'], function (a, one) { 'use strict'; + + console.log(a.a + one.d); + +}); diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/amd/one.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/amd/one.js new file mode 100644 index 00000000000..2d8ca9bd394 --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/amd/one.js @@ -0,0 +1,9 @@ +define(['exports', './b'], function (exports, b) { 'use strict'; + + const d = b.b + 4; + + exports.d = d; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/cjs/a.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/cjs/a.js new file mode 100644 index 00000000000..97007408241 --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/cjs/a.js @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const a = 1; + +exports.a = a; diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/cjs/b.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/cjs/b.js new file mode 100644 index 00000000000..3c417e8458a --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/cjs/b.js @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const b = 2; + +exports.b = b; diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/cjs/main.js new file mode 100644 index 00000000000..c691c0d47e9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/cjs/main.js @@ -0,0 +1,6 @@ +'use strict'; + +var a = require('./a.js'); +var one = require('./one.js'); + +console.log(a.a + one.d); diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/cjs/one.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/cjs/one.js new file mode 100644 index 00000000000..9eea4c87a9f --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/cjs/one.js @@ -0,0 +1,9 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var b = require('./b.js'); + +const d = b.b + 4; + +exports.d = d; diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/es/a.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/es/a.js new file mode 100644 index 00000000000..089815c5bdd --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/es/a.js @@ -0,0 +1,3 @@ +const a = 1; + +export { a }; diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/es/b.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/es/b.js new file mode 100644 index 00000000000..27b49eddabb --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/es/b.js @@ -0,0 +1,3 @@ +const b = 2; + +export { b }; diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/es/main.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/es/main.js new file mode 100644 index 00000000000..ae089cc4dae --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/es/main.js @@ -0,0 +1,4 @@ +import { a as a$1 } from './a.js'; +import { d } from './one.js'; + +console.log(a$1 + d); diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/es/one.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/es/one.js new file mode 100644 index 00000000000..0d36a94fad2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/es/one.js @@ -0,0 +1,5 @@ +import { b as b$1 } from './b.js'; + +const d = b$1 + 4; + +export { d }; diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/system/a.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/system/a.js new file mode 100644 index 00000000000..50f0d7760ca --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/system/a.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const a = exports('a', 1); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/system/b.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/system/b.js new file mode 100644 index 00000000000..baa28369184 --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/system/b.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const b = exports('b', 2); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/system/main.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/system/main.js new file mode 100644 index 00000000000..306aa2895cd --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/system/main.js @@ -0,0 +1,16 @@ +System.register(['./a.js', './one.js'], function () { + 'use strict'; + var a, d; + return { + setters: [function (module) { + a = module.a; + }, function (module) { + d = module.d; + }], + execute: function () { + + console.log(a + d); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/system/one.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/system/one.js new file mode 100644 index 00000000000..dac01a3453c --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/_expected/system/one.js @@ -0,0 +1,14 @@ +System.register(['./b.js'], function (exports) { + 'use strict'; + var b; + return { + setters: [function (module) { + b = module.b; + }], + execute: function () { + + const d = exports('d', b + 4); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/a.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/a.js new file mode 100644 index 00000000000..cc798ff50da --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/a.js @@ -0,0 +1 @@ +export const a = 1; diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/b.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/b.js new file mode 100644 index 00000000000..202103085ce --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/b.js @@ -0,0 +1 @@ +export const b = 2; diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/c.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/c.js new file mode 100644 index 00000000000..5f0cabef84f --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/c.js @@ -0,0 +1 @@ +export const c = 3; diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/index.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/index.js new file mode 100644 index 00000000000..c2357812df9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/index.js @@ -0,0 +1,3 @@ +export { a } from './a'; +export { b } from './b'; +export { c } from './c'; diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/main.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/main.js new file mode 100644 index 00000000000..6279273d11d --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/main.js @@ -0,0 +1,3 @@ +import { a } from './index'; +import { d } from './one'; +console.log(a + d); diff --git a/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/one.js b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/one.js new file mode 100644 index 00000000000..8a9f8689a62 --- /dev/null +++ b/test/chunking-form/samples/deprecated/avoid-imports-preserve-modules/one.js @@ -0,0 +1,2 @@ +import { b } from './index'; +export const d = b + 4; diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/_config.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/_config.js new file mode 100644 index 00000000000..1a256a1d458 --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/_config.js @@ -0,0 +1,9 @@ +module.exports = { + description: 'handles manual chunks with circular dependencies', + expectedWarnings: ['CIRCULAR_DEPENDENCY'], + options: { + strictDeprecations: false, + input: 'main', + manualChunks: { lib1: ['lib1'], lib2: ['lib2'] } + } +}; diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/amd/generated-lib1.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/amd/generated-lib1.js new file mode 100644 index 00000000000..257a2531b61 --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/amd/generated-lib1.js @@ -0,0 +1,8 @@ +define(['exports', './generated-lib2'], function (exports, lib2) { 'use strict'; + + const lib1 = 'lib1'; + console.log(`${lib1} imports ${lib2.lib2}`); + + exports.lib1 = lib1; + +}); diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/amd/generated-lib2.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/amd/generated-lib2.js new file mode 100644 index 00000000000..2d731c52482 --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/amd/generated-lib2.js @@ -0,0 +1,8 @@ +define(['exports', './generated-lib1'], function (exports, lib1) { 'use strict'; + + const lib2 = 'lib2'; + console.log(`${lib2} imports ${lib1.lib1}`); + + exports.lib2 = lib2; + +}); diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/amd/main.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/amd/main.js new file mode 100644 index 00000000000..7c53593aa26 --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/amd/main.js @@ -0,0 +1,9 @@ +define(['exports', './generated-lib2', './generated-lib1'], function (exports, lib2, lib1) { 'use strict'; + + + + exports.lib1 = lib1.lib1; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/cjs/generated-lib1.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/cjs/generated-lib1.js new file mode 100644 index 00000000000..7c6e9861e98 --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/cjs/generated-lib1.js @@ -0,0 +1,8 @@ +'use strict'; + +var lib2 = require('./generated-lib2.js'); + +const lib1 = 'lib1'; +console.log(`${lib1} imports ${lib2.lib2}`); + +exports.lib1 = lib1; diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/cjs/generated-lib2.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/cjs/generated-lib2.js new file mode 100644 index 00000000000..b1af239dfea --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/cjs/generated-lib2.js @@ -0,0 +1,8 @@ +'use strict'; + +var lib1 = require('./generated-lib1.js'); + +const lib2 = 'lib2'; +console.log(`${lib2} imports ${lib1.lib1}`); + +exports.lib2 = lib2; diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/cjs/main.js new file mode 100644 index 00000000000..7a6f3d231a7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/cjs/main.js @@ -0,0 +1,10 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +require('./generated-lib2.js'); +var lib1 = require('./generated-lib1.js'); + + + +exports.lib1 = lib1.lib1; diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/es/generated-lib1.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/es/generated-lib1.js new file mode 100644 index 00000000000..f01a233c797 --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/es/generated-lib1.js @@ -0,0 +1,6 @@ +import { l as lib2 } from './generated-lib2.js'; + +const lib1 = 'lib1'; +console.log(`${lib1} imports ${lib2}`); + +export { lib1 as l }; diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/es/generated-lib2.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/es/generated-lib2.js new file mode 100644 index 00000000000..d822262aeb0 --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/es/generated-lib2.js @@ -0,0 +1,6 @@ +import { l as lib1 } from './generated-lib1.js'; + +const lib2 = 'lib2'; +console.log(`${lib2} imports ${lib1}`); + +export { lib2 as l }; diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/es/main.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/es/main.js new file mode 100644 index 00000000000..160cdb23d43 --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/es/main.js @@ -0,0 +1,2 @@ +import './generated-lib2.js'; +export { l as lib1 } from './generated-lib1.js'; diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/system/generated-lib1.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/system/generated-lib1.js new file mode 100644 index 00000000000..482dde2146a --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/system/generated-lib1.js @@ -0,0 +1,15 @@ +System.register(['./generated-lib2.js'], function (exports) { + 'use strict'; + var lib2; + return { + setters: [function (module) { + lib2 = module.l; + }], + execute: function () { + + const lib1 = exports('l', 'lib1'); + console.log(`${lib1} imports ${lib2}`); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/system/generated-lib2.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/system/generated-lib2.js new file mode 100644 index 00000000000..d1beca4b879 --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/system/generated-lib2.js @@ -0,0 +1,15 @@ +System.register(['./generated-lib1.js'], function (exports) { + 'use strict'; + var lib1; + return { + setters: [function (module) { + lib1 = module.l; + }], + execute: function () { + + const lib2 = exports('l', 'lib2'); + console.log(`${lib2} imports ${lib1}`); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/system/main.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/system/main.js new file mode 100644 index 00000000000..cfb378bc462 --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/_expected/system/main.js @@ -0,0 +1,13 @@ +System.register(['./generated-lib2.js', './generated-lib1.js'], function (exports) { + 'use strict'; + return { + setters: [function () {}, function (module) { + exports('lib1', module.l); + }], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/lib1.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/lib1.js new file mode 100644 index 00000000000..f0e3728c779 --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/lib1.js @@ -0,0 +1,3 @@ +import { lib2 } from './lib2.js'; +export const lib1 = 'lib1'; +console.log(`${lib1} imports ${lib2}`); diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/lib2.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/lib2.js new file mode 100644 index 00000000000..cb0f5333f98 --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/lib2.js @@ -0,0 +1,3 @@ +import { lib1 } from './lib1'; +export const lib2 = 'lib2'; +console.log(`${lib2} imports ${lib1}`); diff --git a/test/chunking-form/samples/deprecated/circular-manual-chunks/main.js b/test/chunking-form/samples/deprecated/circular-manual-chunks/main.js new file mode 100644 index 00000000000..73c902d4bfa --- /dev/null +++ b/test/chunking-form/samples/deprecated/circular-manual-chunks/main.js @@ -0,0 +1 @@ +export { lib1 } from './lib1.js'; diff --git a/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_config.js b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_config.js new file mode 100644 index 00000000000..4ffc9d0f905 --- /dev/null +++ b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'supports an object with a single entry when inlining dynamic imports', + options: { + strictDeprecations: false, + inlineDynamicImports: true, + input: { entry: 'main' } + } +}; diff --git a/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_expected/amd/entry.js b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_expected/amd/entry.js new file mode 100644 index 00000000000..87c533f4a08 --- /dev/null +++ b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_expected/amd/entry.js @@ -0,0 +1,17 @@ +define(['exports'], function (exports) { 'use strict'; + + const bar = 2; + Promise.resolve().then(function () { return foo$1; }); + + const foo = 1; + + var foo$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + foo: foo + }); + + exports.bar = bar; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_expected/cjs/entry.js b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_expected/cjs/entry.js new file mode 100644 index 00000000000..188ad126796 --- /dev/null +++ b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_expected/cjs/entry.js @@ -0,0 +1,15 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const bar = 2; +Promise.resolve().then(function () { return foo$1; }); + +const foo = 1; + +var foo$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + foo: foo +}); + +exports.bar = bar; diff --git a/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_expected/es/entry.js b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_expected/es/entry.js new file mode 100644 index 00000000000..ae434046e6c --- /dev/null +++ b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_expected/es/entry.js @@ -0,0 +1,11 @@ +const bar = 2; +Promise.resolve().then(function () { return foo$1; }); + +const foo = 1; + +var foo$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + foo: foo +}); + +export { bar }; diff --git a/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_expected/system/entry.js b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_expected/system/entry.js new file mode 100644 index 00000000000..0ac064e426c --- /dev/null +++ b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/_expected/system/entry.js @@ -0,0 +1,18 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const bar = exports('bar', 2); + Promise.resolve().then(function () { return foo$1; }); + + const foo = 1; + + var foo$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + foo: foo + }); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/foo.js b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/foo.js new file mode 100644 index 00000000000..6a8018af412 --- /dev/null +++ b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/foo.js @@ -0,0 +1 @@ +export const foo = 1; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/main.js b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/main.js new file mode 100644 index 00000000000..ee3e6a770d6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/dynamic-import-inlining-object/main.js @@ -0,0 +1,2 @@ +export const bar = 2; +import('./foo.js'); diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_config.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_config.js new file mode 100644 index 00000000000..eb5d67acdb8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_config.js @@ -0,0 +1,21 @@ +const assert = require('assert'); +let referenceId; + +module.exports = { + description: 'retrieves the correct name of an emitted chunk in case a facade is created', + options: { + strictDeprecations: false, + input: 'main', + manualChunks: { + 'build-starter': ['buildStart'] + }, + plugins: { + buildStart() { + referenceId = this.emitFile({ type: 'chunk', id: 'buildStart' }); + }, + renderChunk() { + assert.strictEqual(this.getFileName(referenceId), 'generated-buildStart.js'); + } + } + } +}; diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/amd/generated-build-starter.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/amd/generated-build-starter.js new file mode 100644 index 00000000000..4974a348248 --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/amd/generated-build-starter.js @@ -0,0 +1,11 @@ +define(['exports'], function (exports) { 'use strict'; + + const value = 42; + const otherValue = 43; + + console.log('startBuild', value); + + exports.otherValue = otherValue; + exports.value = value; + +}); diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/amd/generated-buildStart.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/amd/generated-buildStart.js new file mode 100644 index 00000000000..06143748495 --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/amd/generated-buildStart.js @@ -0,0 +1,9 @@ +define(['exports', './generated-build-starter'], function (exports, buildStarter) { 'use strict'; + + + + exports.buildStartValue = buildStarter.value; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/amd/main.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/amd/main.js new file mode 100644 index 00000000000..f9191ee8ad4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/amd/main.js @@ -0,0 +1,5 @@ +define(['./generated-build-starter'], function (buildStarter) { 'use strict'; + + console.log('main', buildStarter.value, buildStarter.otherValue); + +}); diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/cjs/generated-build-starter.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/cjs/generated-build-starter.js new file mode 100644 index 00000000000..fecf7a3cd4c --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/cjs/generated-build-starter.js @@ -0,0 +1,9 @@ +'use strict'; + +const value = 42; +const otherValue = 43; + +console.log('startBuild', value); + +exports.otherValue = otherValue; +exports.value = value; diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/cjs/generated-buildStart.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/cjs/generated-buildStart.js new file mode 100644 index 00000000000..66c05cca4ba --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/cjs/generated-buildStart.js @@ -0,0 +1,9 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var buildStarter = require('./generated-build-starter.js'); + + + +exports.buildStartValue = buildStarter.value; diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/cjs/main.js new file mode 100644 index 00000000000..666c396846a --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/cjs/main.js @@ -0,0 +1,5 @@ +'use strict'; + +var buildStarter = require('./generated-build-starter.js'); + +console.log('main', buildStarter.value, buildStarter.otherValue); diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/es/generated-build-starter.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/es/generated-build-starter.js new file mode 100644 index 00000000000..43deafdd0be --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/es/generated-build-starter.js @@ -0,0 +1,6 @@ +const value = 42; +const otherValue = 43; + +console.log('startBuild', value); + +export { otherValue as o, value as v }; diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/es/generated-buildStart.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/es/generated-buildStart.js new file mode 100644 index 00000000000..ffb305eac54 --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/es/generated-buildStart.js @@ -0,0 +1 @@ +export { v as buildStartValue } from './generated-build-starter.js'; diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/es/main.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/es/main.js new file mode 100644 index 00000000000..28caef9429d --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/es/main.js @@ -0,0 +1,3 @@ +import { v as value, o as otherValue } from './generated-build-starter.js'; + +console.log('main', value, otherValue); diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/system/generated-build-starter.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/system/generated-build-starter.js new file mode 100644 index 00000000000..75f69e53e87 --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/system/generated-build-starter.js @@ -0,0 +1,13 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const value = exports('v', 42); + const otherValue = exports('o', 43); + + console.log('startBuild', value); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/system/generated-buildStart.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/system/generated-buildStart.js new file mode 100644 index 00000000000..b82461c98ab --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/system/generated-buildStart.js @@ -0,0 +1,13 @@ +System.register(['./generated-build-starter.js'], function (exports) { + 'use strict'; + return { + setters: [function (module) { + exports('buildStartValue', module.v); + }], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/system/main.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/system/main.js new file mode 100644 index 00000000000..4b52f565751 --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/_expected/system/main.js @@ -0,0 +1,15 @@ +System.register(['./generated-build-starter.js'], function () { + 'use strict'; + var value, otherValue; + return { + setters: [function (module) { + value = module.v; + otherValue = module.o; + }], + execute: function () { + + console.log('main', value, otherValue); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/buildStart.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/buildStart.js new file mode 100644 index 00000000000..49baee4964e --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/buildStart.js @@ -0,0 +1,5 @@ +import {value} from './dep.js'; + +console.log('startBuild', value); + +export { value as buildStartValue }; diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/dep.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/dep.js new file mode 100644 index 00000000000..a2db6341120 --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/dep.js @@ -0,0 +1,2 @@ +export const value = 42; +export const otherValue = 43; diff --git a/test/chunking-form/samples/deprecated/emit-file-chunk-facade/main.js b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/main.js new file mode 100644 index 00000000000..df41d56376c --- /dev/null +++ b/test/chunking-form/samples/deprecated/emit-file-chunk-facade/main.js @@ -0,0 +1,3 @@ +import { value, otherValue } from './dep'; + +console.log('main', value, otherValue); diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_config.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_config.js new file mode 100644 index 00000000000..be01fb9f36e --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_config.js @@ -0,0 +1,9 @@ +module.exports = { + description: 'does not drop indirect reexports when preserving modules', + expectedWarnings: ['MIXED_EXPORTS'], + options: { + strictDeprecations: false, + output: { name: 'bundle' }, + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/amd/components/index.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/amd/components/index.js new file mode 100644 index 00000000000..6c3ef478f75 --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/amd/components/index.js @@ -0,0 +1,10 @@ +define(['exports', './sub/index'], function (exports, index) { 'use strict'; + + const baz = { bar: index.default }; + + exports.foo = index.foo; + exports.baz = baz; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/amd/components/sub/index.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/amd/components/sub/index.js new file mode 100644 index 00000000000..812fe417fb5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/amd/components/sub/index.js @@ -0,0 +1,11 @@ +define(['exports'], function (exports) { 'use strict'; + + const foo = 'bar'; + var bar = () => {}; + + exports.default = bar; + exports.foo = foo; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/amd/main.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/amd/main.js new file mode 100644 index 00000000000..42ad50c3101 --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/amd/main.js @@ -0,0 +1,10 @@ +define(['exports', './components/sub/index', './components/index'], function (exports, index, index$1) { 'use strict'; + + + + exports.foo = index.foo; + exports.baz = index$1.baz; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/cjs/components/index.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/cjs/components/index.js new file mode 100644 index 00000000000..46429b712ad --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/cjs/components/index.js @@ -0,0 +1,10 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var index = require('./sub/index.js'); + +const baz = { bar: index.default }; + +exports.foo = index.foo; +exports.baz = baz; diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/cjs/components/sub/index.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/cjs/components/sub/index.js new file mode 100644 index 00000000000..8ffc494cbe4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/cjs/components/sub/index.js @@ -0,0 +1,9 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const foo = 'bar'; +var bar = () => {}; + +exports.default = bar; +exports.foo = foo; diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/cjs/main.js new file mode 100644 index 00000000000..bdb3ac56756 --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/cjs/main.js @@ -0,0 +1,11 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var index = require('./components/sub/index.js'); +var index$1 = require('./components/index.js'); + + + +exports.foo = index.foo; +exports.baz = index$1.baz; diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/es/components/index.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/es/components/index.js new file mode 100644 index 00000000000..baeee792cc9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/es/components/index.js @@ -0,0 +1,6 @@ +import bar from './sub/index.js'; +export { foo } from './sub/index.js'; + +const baz = { bar }; + +export { baz }; diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/es/components/sub/index.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/es/components/sub/index.js new file mode 100644 index 00000000000..3b438c25222 --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/es/components/sub/index.js @@ -0,0 +1,5 @@ +const foo = 'bar'; +var bar = () => {}; + +export default bar; +export { foo }; diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/es/main.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/es/main.js new file mode 100644 index 00000000000..4b8f56eba17 --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/es/main.js @@ -0,0 +1,2 @@ +export { foo } from './components/sub/index.js'; +export { baz } from './components/index.js'; diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/system/components/index.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/system/components/index.js new file mode 100644 index 00000000000..17def0f802d --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/system/components/index.js @@ -0,0 +1,15 @@ +System.register('bundle', ['./sub/index.js'], function (exports) { + 'use strict'; + var bar; + return { + setters: [function (module) { + bar = module.default; + exports('foo', module.foo); + }], + execute: function () { + + const baz = exports('baz', { bar }); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/system/components/sub/index.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/system/components/sub/index.js new file mode 100644 index 00000000000..2174c193998 --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/system/components/sub/index.js @@ -0,0 +1,11 @@ +System.register('bundle', [], function (exports) { + 'use strict'; + return { + execute: function () { + + const foo = exports('foo', 'bar'); + var bar = exports('default', () => {}); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/system/main.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/system/main.js new file mode 100644 index 00000000000..a5e92b9bf5d --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/_expected/system/main.js @@ -0,0 +1,15 @@ +System.register('bundle', ['./components/sub/index.js', './components/index.js'], function (exports) { + 'use strict'; + return { + setters: [function (module) { + exports('foo', module.foo); + }, function (module) { + exports('baz', module.baz); + }], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/components/index.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/components/index.js new file mode 100644 index 00000000000..0c5913716d6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/components/index.js @@ -0,0 +1,4 @@ +import bar, { foo } from './sub/index'; + +export const baz = { bar }; +export { foo }; diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/components/sub/index.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/components/sub/index.js new file mode 100644 index 00000000000..0bce193fce2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/components/sub/index.js @@ -0,0 +1,4 @@ +const foo = 'bar'; + +export { foo }; +export default () => {}; diff --git a/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/main.js b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/main.js new file mode 100644 index 00000000000..6dfbc9774ea --- /dev/null +++ b/test/chunking-form/samples/deprecated/indirect-reexports-preserve-modules/main.js @@ -0,0 +1,3 @@ +import { baz, foo } from './components/index'; + +export { baz, foo }; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_config.js b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_config.js new file mode 100644 index 00000000000..cdbcbdedf88 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_config.js @@ -0,0 +1,10 @@ +module.exports = { + description: 'avoid facades if possible when using manual chunks', + options: { + strictDeprecations: false, + input: ['main1', 'main2'], + manualChunks: { + manual: ['main2'] + } + } +}; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/amd/main1.js b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/amd/main1.js new file mode 100644 index 00000000000..a973f4d8de7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/amd/main1.js @@ -0,0 +1,5 @@ +define(['./main2'], function (manual) { 'use strict'; + + console.log('main', manual.reexported); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/amd/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/amd/main2.js new file mode 100644 index 00000000000..674f42a401c --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/amd/main2.js @@ -0,0 +1,11 @@ +define(['exports'], function (exports) { 'use strict'; + + const value = 42; + + console.log('main2', value); + + exports.reexported = value; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/cjs/main1.js b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/cjs/main1.js new file mode 100644 index 00000000000..81de531a9bb --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/cjs/main1.js @@ -0,0 +1,5 @@ +'use strict'; + +var manual = require('./main2.js'); + +console.log('main', manual.reexported); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/cjs/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/cjs/main2.js new file mode 100644 index 00000000000..f7d33362bcc --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/cjs/main2.js @@ -0,0 +1,9 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const value = 42; + +console.log('main2', value); + +exports.reexported = value; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/es/main1.js b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/es/main1.js new file mode 100644 index 00000000000..6ba22536aa3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/es/main1.js @@ -0,0 +1,3 @@ +import { reexported as value } from './main2.js'; + +console.log('main', value); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/es/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/es/main2.js new file mode 100644 index 00000000000..897452bd66e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/es/main2.js @@ -0,0 +1,5 @@ +const value = 42; + +console.log('main2', value); + +export { value as reexported }; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/system/main1.js b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/system/main1.js new file mode 100644 index 00000000000..36f1fb810be --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/system/main1.js @@ -0,0 +1,14 @@ +System.register(['./main2.js'], function () { + 'use strict'; + var value; + return { + setters: [function (module) { + value = module.reexported; + }], + execute: function () { + + console.log('main', value); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/system/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/system/main2.js new file mode 100644 index 00000000000..e00ab6a2dca --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/_expected/system/main2.js @@ -0,0 +1,12 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const value = exports('reexported', 42); + + console.log('main2', value); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/dep.js b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/dep.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/dep.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/main1.js b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/main1.js new file mode 100644 index 00000000000..5da97663c3a --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/main1.js @@ -0,0 +1,3 @@ +import { value } from './dep'; + +console.log('main', value); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/main2.js new file mode 100644 index 00000000000..868d23fd0a7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-avoid-facade/main2.js @@ -0,0 +1,5 @@ +import {value} from './dep.js'; + +console.log('main2', value); + +export { value as reexported }; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_config.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_config.js new file mode 100644 index 00000000000..eddc0b545b7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_config.js @@ -0,0 +1,13 @@ +module.exports = { + description: 'Uses entry alias if manual chunks contain entry chunks with different alias', + options: { + strictDeprecations: false, + input: { + main: 'main.js', + main2: 'main2.js' + }, + manualChunks: { + outer: ['outer'] + } + } +}; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/amd/main.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/amd/main.js new file mode 100644 index 00000000000..fc91f027a0e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/amd/main.js @@ -0,0 +1,13 @@ +define(['exports'], function (exports) { 'use strict'; + + console.log('dep'); + + console.log('main'); + + const value = 42; + + exports.value = value; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/amd/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/amd/main2.js new file mode 100644 index 00000000000..d28c079a312 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/amd/main2.js @@ -0,0 +1,5 @@ +define(['./main'], function (outer) { 'use strict'; + + + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/cjs/main.js new file mode 100644 index 00000000000..5da9ebd5132 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/cjs/main.js @@ -0,0 +1,11 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +console.log('dep'); + +console.log('main'); + +const value = 42; + +exports.value = value; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/cjs/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/cjs/main2.js new file mode 100644 index 00000000000..7ca8a520b06 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/cjs/main2.js @@ -0,0 +1,4 @@ +'use strict'; + +require('./main.js'); + diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/es/main.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/es/main.js new file mode 100644 index 00000000000..132b27a8d7c --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/es/main.js @@ -0,0 +1,7 @@ +console.log('dep'); + +console.log('main'); + +const value = 42; + +export { value }; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/es/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/es/main2.js new file mode 100644 index 00000000000..859ecc36bb9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/es/main2.js @@ -0,0 +1 @@ +import './main.js'; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/system/main.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/system/main.js new file mode 100644 index 00000000000..b92309e3bf3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/system/main.js @@ -0,0 +1,14 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + console.log('dep'); + + console.log('main'); + + const value = exports('value', 42); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/system/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/system/main2.js new file mode 100644 index 00000000000..da731958b75 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/_expected/system/main2.js @@ -0,0 +1,11 @@ +System.register(['./main.js'], function () { + 'use strict'; + return { + setters: [function () {}], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/dep.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/dep.js new file mode 100644 index 00000000000..b74a9837c07 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/dep.js @@ -0,0 +1 @@ +console.log('dep'); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/main.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/main.js new file mode 100644 index 00000000000..983ead17e5a --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/main.js @@ -0,0 +1,5 @@ +import './dep.js'; + +console.log('main'); + +export const value = 42; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/main2.js new file mode 100644 index 00000000000..d6cf3b02443 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/main2.js @@ -0,0 +1 @@ +import './dep.js'; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/outer.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/outer.js new file mode 100644 index 00000000000..26385b8a3c3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-conflict/outer.js @@ -0,0 +1,3 @@ +import './main'; + +console.log('outer'); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_config.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_config.js new file mode 100644 index 00000000000..0265957b69b --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_config.js @@ -0,0 +1,13 @@ +module.exports = { + description: + 'Identifies the entry chunk with the manual chunk that contains it if the aliases match', + options: { + strictDeprecations: false, + input: { + main: 'main.js' + }, + manualChunks: { + main: ['outer'] + } + } +}; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_expected/amd/main.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_expected/amd/main.js new file mode 100644 index 00000000000..fc91f027a0e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_expected/amd/main.js @@ -0,0 +1,13 @@ +define(['exports'], function (exports) { 'use strict'; + + console.log('dep'); + + console.log('main'); + + const value = 42; + + exports.value = value; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_expected/cjs/main.js new file mode 100644 index 00000000000..5da9ebd5132 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_expected/cjs/main.js @@ -0,0 +1,11 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +console.log('dep'); + +console.log('main'); + +const value = 42; + +exports.value = value; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_expected/es/main.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_expected/es/main.js new file mode 100644 index 00000000000..132b27a8d7c --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_expected/es/main.js @@ -0,0 +1,7 @@ +console.log('dep'); + +console.log('main'); + +const value = 42; + +export { value }; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_expected/system/main.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_expected/system/main.js new file mode 100644 index 00000000000..b92309e3bf3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/_expected/system/main.js @@ -0,0 +1,14 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + console.log('dep'); + + console.log('main'); + + const value = exports('value', 42); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/dep.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/dep.js new file mode 100644 index 00000000000..b74a9837c07 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/dep.js @@ -0,0 +1 @@ +console.log('dep'); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/main.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/main.js new file mode 100644 index 00000000000..983ead17e5a --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/main.js @@ -0,0 +1,5 @@ +import './dep.js'; + +console.log('main'); + +export const value = 42; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/outer.js b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/outer.js new file mode 100644 index 00000000000..26385b8a3c3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-contains-entry-match/outer.js @@ -0,0 +1,3 @@ +import './main'; + +console.log('outer'); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_config.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_config.js new file mode 100644 index 00000000000..e30afc125c2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_config.js @@ -0,0 +1,13 @@ +module.exports = { + description: 'Uses entry alias if manual chunks are entry chunks with different alias', + options: { + strictDeprecations: false, + input: { + main: 'main.js', + main2: 'main2.js' + }, + manualChunks: { + other: ['main'] + } + } +}; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/amd/main.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/amd/main.js new file mode 100644 index 00000000000..fc91f027a0e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/amd/main.js @@ -0,0 +1,13 @@ +define(['exports'], function (exports) { 'use strict'; + + console.log('dep'); + + console.log('main'); + + const value = 42; + + exports.value = value; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/amd/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/amd/main2.js new file mode 100644 index 00000000000..e007f54e5e2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/amd/main2.js @@ -0,0 +1,5 @@ +define(['./main'], function (other) { 'use strict'; + + + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/cjs/main.js new file mode 100644 index 00000000000..5da9ebd5132 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/cjs/main.js @@ -0,0 +1,11 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +console.log('dep'); + +console.log('main'); + +const value = 42; + +exports.value = value; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/cjs/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/cjs/main2.js new file mode 100644 index 00000000000..7ca8a520b06 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/cjs/main2.js @@ -0,0 +1,4 @@ +'use strict'; + +require('./main.js'); + diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/es/main.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/es/main.js new file mode 100644 index 00000000000..132b27a8d7c --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/es/main.js @@ -0,0 +1,7 @@ +console.log('dep'); + +console.log('main'); + +const value = 42; + +export { value }; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/es/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/es/main2.js new file mode 100644 index 00000000000..859ecc36bb9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/es/main2.js @@ -0,0 +1 @@ +import './main.js'; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/system/main.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/system/main.js new file mode 100644 index 00000000000..b92309e3bf3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/system/main.js @@ -0,0 +1,14 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + console.log('dep'); + + console.log('main'); + + const value = exports('value', 42); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/system/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/system/main2.js new file mode 100644 index 00000000000..da731958b75 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/_expected/system/main2.js @@ -0,0 +1,11 @@ +System.register(['./main.js'], function () { + 'use strict'; + return { + setters: [function () {}], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/dep.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/dep.js new file mode 100644 index 00000000000..b74a9837c07 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/dep.js @@ -0,0 +1 @@ +console.log('dep'); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/main.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/main.js new file mode 100644 index 00000000000..983ead17e5a --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/main.js @@ -0,0 +1,5 @@ +import './dep.js'; + +console.log('main'); + +export const value = 42; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/main2.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/main2.js new file mode 100644 index 00000000000..d6cf3b02443 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-conflict/main2.js @@ -0,0 +1 @@ +import './dep.js'; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_config.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_config.js new file mode 100644 index 00000000000..3207916f4f1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_config.js @@ -0,0 +1,13 @@ +module.exports = { + description: + 'Identifies the entry chunk with the manual chunk that has the same entry if the aliases match', + options: { + strictDeprecations: false, + input: { + main: 'main.js' + }, + manualChunks: { + main: ['main'] + } + } +}; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_expected/amd/main.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_expected/amd/main.js new file mode 100644 index 00000000000..fc91f027a0e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_expected/amd/main.js @@ -0,0 +1,13 @@ +define(['exports'], function (exports) { 'use strict'; + + console.log('dep'); + + console.log('main'); + + const value = 42; + + exports.value = value; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_expected/cjs/main.js new file mode 100644 index 00000000000..5da9ebd5132 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_expected/cjs/main.js @@ -0,0 +1,11 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +console.log('dep'); + +console.log('main'); + +const value = 42; + +exports.value = value; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_expected/es/main.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_expected/es/main.js new file mode 100644 index 00000000000..132b27a8d7c --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_expected/es/main.js @@ -0,0 +1,7 @@ +console.log('dep'); + +console.log('main'); + +const value = 42; + +export { value }; diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_expected/system/main.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_expected/system/main.js new file mode 100644 index 00000000000..b92309e3bf3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/_expected/system/main.js @@ -0,0 +1,14 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + console.log('dep'); + + console.log('main'); + + const value = exports('value', 42); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/dep.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/dep.js new file mode 100644 index 00000000000..b74a9837c07 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/dep.js @@ -0,0 +1 @@ +console.log('dep'); diff --git a/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/main.js b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/main.js new file mode 100644 index 00000000000..983ead17e5a --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunk-is-entry-match/main.js @@ -0,0 +1,5 @@ +import './dep.js'; + +console.log('main'); + +export const value = 42; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_config.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_config.js new file mode 100644 index 00000000000..9f46a40f134 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_config.js @@ -0,0 +1,12 @@ +module.exports = { + description: 'manual chunks can have other manual chunks as dependencies', + options: { + strictDeprecations: false, + input: ['main.js'], + manualChunks: { + 'manual-outer': ['outer.js'], + 'manual-inner': ['inner.js'], + 'manual-middle': ['middle.js'] + } + } +}; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/amd/generated-manual-inner.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/amd/generated-manual-inner.js new file mode 100644 index 00000000000..5068b5fd910 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/amd/generated-manual-inner.js @@ -0,0 +1,5 @@ +define(function () { 'use strict'; + + console.log('inner'); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/amd/generated-manual-middle.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/amd/generated-manual-middle.js new file mode 100644 index 00000000000..a12cddc2c4f --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/amd/generated-manual-middle.js @@ -0,0 +1,5 @@ +define(['./generated-manual-inner'], function (manualInner) { 'use strict'; + + console.log('middle'); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/amd/generated-manual-outer.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/amd/generated-manual-outer.js new file mode 100644 index 00000000000..19b33370089 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/amd/generated-manual-outer.js @@ -0,0 +1,5 @@ +define(['./generated-manual-middle'], function (manualMiddle) { 'use strict'; + + console.log('outer'); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/amd/main.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/amd/main.js new file mode 100644 index 00000000000..5ec5a9952d4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/amd/main.js @@ -0,0 +1,5 @@ +define(['./generated-manual-inner', './generated-manual-middle', './generated-manual-outer'], function (manualInner, manualMiddle, manualOuter) { 'use strict'; + + console.log('main'); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/cjs/generated-manual-inner.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/cjs/generated-manual-inner.js new file mode 100644 index 00000000000..02ef883da4e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/cjs/generated-manual-inner.js @@ -0,0 +1,3 @@ +'use strict'; + +console.log('inner'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/cjs/generated-manual-middle.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/cjs/generated-manual-middle.js new file mode 100644 index 00000000000..77da3dd71c1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/cjs/generated-manual-middle.js @@ -0,0 +1,5 @@ +'use strict'; + +require('./generated-manual-inner.js'); + +console.log('middle'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/cjs/generated-manual-outer.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/cjs/generated-manual-outer.js new file mode 100644 index 00000000000..8a4efba721e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/cjs/generated-manual-outer.js @@ -0,0 +1,5 @@ +'use strict'; + +require('./generated-manual-middle.js'); + +console.log('outer'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/cjs/main.js new file mode 100644 index 00000000000..7b5cf110cf4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/cjs/main.js @@ -0,0 +1,7 @@ +'use strict'; + +require('./generated-manual-inner.js'); +require('./generated-manual-middle.js'); +require('./generated-manual-outer.js'); + +console.log('main'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/es/generated-manual-inner.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/es/generated-manual-inner.js new file mode 100644 index 00000000000..8e1a29ca97f --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/es/generated-manual-inner.js @@ -0,0 +1 @@ +console.log('inner'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/es/generated-manual-middle.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/es/generated-manual-middle.js new file mode 100644 index 00000000000..247a57bae80 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/es/generated-manual-middle.js @@ -0,0 +1,3 @@ +import './generated-manual-inner.js'; + +console.log('middle'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/es/generated-manual-outer.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/es/generated-manual-outer.js new file mode 100644 index 00000000000..f348b38752c --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/es/generated-manual-outer.js @@ -0,0 +1,3 @@ +import './generated-manual-middle.js'; + +console.log('outer'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/es/main.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/es/main.js new file mode 100644 index 00000000000..de3b67e6685 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/es/main.js @@ -0,0 +1,5 @@ +import './generated-manual-inner.js'; +import './generated-manual-middle.js'; +import './generated-manual-outer.js'; + +console.log('main'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/system/generated-manual-inner.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/system/generated-manual-inner.js new file mode 100644 index 00000000000..7079c6deaf2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/system/generated-manual-inner.js @@ -0,0 +1,10 @@ +System.register([], function () { + 'use strict'; + return { + execute: function () { + + console.log('inner'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/system/generated-manual-middle.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/system/generated-manual-middle.js new file mode 100644 index 00000000000..e972910e58e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/system/generated-manual-middle.js @@ -0,0 +1,11 @@ +System.register(['./generated-manual-inner.js'], function () { + 'use strict'; + return { + setters: [function () {}], + execute: function () { + + console.log('middle'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/system/generated-manual-outer.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/system/generated-manual-outer.js new file mode 100644 index 00000000000..8657192807b --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/system/generated-manual-outer.js @@ -0,0 +1,11 @@ +System.register(['./generated-manual-middle.js'], function () { + 'use strict'; + return { + setters: [function () {}], + execute: function () { + + console.log('outer'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/system/main.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/system/main.js new file mode 100644 index 00000000000..07ba8910bbb --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/_expected/system/main.js @@ -0,0 +1,11 @@ +System.register(['./generated-manual-inner.js', './generated-manual-middle.js', './generated-manual-outer.js'], function () { + 'use strict'; + return { + setters: [function () {}, function () {}, function () {}], + execute: function () { + + console.log('main'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/inner.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/inner.js new file mode 100644 index 00000000000..8e1a29ca97f --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/inner.js @@ -0,0 +1 @@ +console.log('inner'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/main.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/main.js new file mode 100644 index 00000000000..b46ebb222d8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/main.js @@ -0,0 +1,3 @@ +import './outer.js'; + +console.log('main'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/middle.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/middle.js new file mode 100644 index 00000000000..0073259087e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/middle.js @@ -0,0 +1,3 @@ +import './inner.js'; + +console.log('middle'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-different-nested/outer.js b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/outer.js new file mode 100644 index 00000000000..c77196cec49 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-different-nested/outer.js @@ -0,0 +1,3 @@ +import './middle.js'; + +console.log('outer'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_config.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_config.js new file mode 100644 index 00000000000..9666b5675d5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_config.js @@ -0,0 +1,10 @@ +module.exports = { + description: 'creates facades for dynamic manual chunks if necessary', + options: { + strictDeprecations: false, + input: ['main.js'], + manualChunks: { + dynamic: ['dynamic1.js'] + } + } +}; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/amd/generated-dynamic.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/amd/generated-dynamic.js new file mode 100644 index 00000000000..06d0b979512 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/amd/generated-dynamic.js @@ -0,0 +1,34 @@ +define(['exports'], function (exports) { 'use strict'; + + const DEP = 'DEP'; + + const DYNAMIC_2 = 'DYNAMIC_2'; + + var dynamic2 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_2: DYNAMIC_2 + }); + + const DYNAMIC_3 = 'DYNAMIC_3'; + + var dynamic3 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_3: DYNAMIC_3 + }); + + const DYNAMIC_1 = 'DYNAMIC_1'; + + var dynamic1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_1: DYNAMIC_1, + DEP: DEP, + DYNAMIC_2: DYNAMIC_2, + DYNAMIC_3: DYNAMIC_3 + }); + + exports.DEP = DEP; + exports.dynamic1 = dynamic1; + exports.dynamic2 = dynamic2; + exports.dynamic3 = dynamic3; + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/amd/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/amd/main.js new file mode 100644 index 00000000000..dd2114e5c49 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/amd/main.js @@ -0,0 +1,7 @@ +define(['require', './generated-dynamic'], function (require, dynamic) { 'use strict'; + + Promise.all([new Promise(function (resolve, reject) { require(['./generated-dynamic'], resolve, reject) }).then(function (n) { return n.dynamic1; }), new Promise(function (resolve, reject) { require(['./generated-dynamic'], resolve, reject) }).then(function (n) { return n.dynamic2; }), new Promise(function (resolve, reject) { require(['./generated-dynamic'], resolve, reject) }).then(function (n) { return n.dynamic3; })]).then( + results => console.log(results, dynamic.DEP) + ); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/cjs/generated-dynamic.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/cjs/generated-dynamic.js new file mode 100644 index 00000000000..50c556066d4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/cjs/generated-dynamic.js @@ -0,0 +1,32 @@ +'use strict'; + +const DEP = 'DEP'; + +const DYNAMIC_2 = 'DYNAMIC_2'; + +var dynamic2 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_2: DYNAMIC_2 +}); + +const DYNAMIC_3 = 'DYNAMIC_3'; + +var dynamic3 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_3: DYNAMIC_3 +}); + +const DYNAMIC_1 = 'DYNAMIC_1'; + +var dynamic1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_1: DYNAMIC_1, + DEP: DEP, + DYNAMIC_2: DYNAMIC_2, + DYNAMIC_3: DYNAMIC_3 +}); + +exports.DEP = DEP; +exports.dynamic1 = dynamic1; +exports.dynamic2 = dynamic2; +exports.dynamic3 = dynamic3; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/cjs/main.js new file mode 100644 index 00000000000..6d822d5ed9f --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/cjs/main.js @@ -0,0 +1,7 @@ +'use strict'; + +var dynamic = require('./generated-dynamic.js'); + +Promise.all([Promise.resolve().then(function () { return require('./generated-dynamic.js'); }).then(function (n) { return n.dynamic1; }), Promise.resolve().then(function () { return require('./generated-dynamic.js'); }).then(function (n) { return n.dynamic2; }), Promise.resolve().then(function () { return require('./generated-dynamic.js'); }).then(function (n) { return n.dynamic3; })]).then( + results => console.log(results, dynamic.DEP) +); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/es/generated-dynamic.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/es/generated-dynamic.js new file mode 100644 index 00000000000..3f031460abc --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/es/generated-dynamic.js @@ -0,0 +1,27 @@ +const DEP = 'DEP'; + +const DYNAMIC_2 = 'DYNAMIC_2'; + +var dynamic2 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_2: DYNAMIC_2 +}); + +const DYNAMIC_3 = 'DYNAMIC_3'; + +var dynamic3 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_3: DYNAMIC_3 +}); + +const DYNAMIC_1 = 'DYNAMIC_1'; + +var dynamic1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_1: DYNAMIC_1, + DEP: DEP, + DYNAMIC_2: DYNAMIC_2, + DYNAMIC_3: DYNAMIC_3 +}); + +export { DEP as D, dynamic3 as a, dynamic1 as b, dynamic2 as d }; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/es/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/es/main.js new file mode 100644 index 00000000000..0ef6f970d6a --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/es/main.js @@ -0,0 +1,5 @@ +import { D as DEP } from './generated-dynamic.js'; + +Promise.all([import('./generated-dynamic.js').then(function (n) { return n.b; }), import('./generated-dynamic.js').then(function (n) { return n.d; }), import('./generated-dynamic.js').then(function (n) { return n.a; })]).then( + results => console.log(results, DEP) +); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/system/generated-dynamic.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/system/generated-dynamic.js new file mode 100644 index 00000000000..768028d36f0 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/system/generated-dynamic.js @@ -0,0 +1,37 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const DEP = exports('D', 'DEP'); + + const DYNAMIC_2 = 'DYNAMIC_2'; + + var dynamic2 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_2: DYNAMIC_2 + }); + exports('d', dynamic2); + + const DYNAMIC_3 = 'DYNAMIC_3'; + + var dynamic3 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_3: DYNAMIC_3 + }); + exports('a', dynamic3); + + const DYNAMIC_1 = 'DYNAMIC_1'; + + var dynamic1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_1: DYNAMIC_1, + DEP: DEP, + DYNAMIC_2: DYNAMIC_2, + DYNAMIC_3: DYNAMIC_3 + }); + exports('b', dynamic1); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/system/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/system/main.js new file mode 100644 index 00000000000..3d78385bd86 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/_expected/system/main.js @@ -0,0 +1,16 @@ +System.register(['./generated-dynamic.js'], function (exports, module) { + 'use strict'; + var DEP; + return { + setters: [function (module) { + DEP = module.D; + }], + execute: function () { + + Promise.all([module.import('./generated-dynamic.js').then(function (n) { return n.b; }), module.import('./generated-dynamic.js').then(function (n) { return n.d; }), module.import('./generated-dynamic.js').then(function (n) { return n.a; })]).then( + results => console.log(results, DEP) + ); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/dep.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/dep.js new file mode 100644 index 00000000000..4be514fd761 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/dep.js @@ -0,0 +1 @@ +export const DEP = 'DEP'; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/dynamic1.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/dynamic1.js new file mode 100644 index 00000000000..1591826eaf0 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/dynamic1.js @@ -0,0 +1,4 @@ +export * from './dep.js'; +export * from './dynamic2.js'; +export * from './dynamic3.js'; +export const DYNAMIC_1 = 'DYNAMIC_1'; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/dynamic2.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/dynamic2.js new file mode 100644 index 00000000000..11eeeb42896 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/dynamic2.js @@ -0,0 +1 @@ +export const DYNAMIC_2 = 'DYNAMIC_2'; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/dynamic3.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/dynamic3.js new file mode 100644 index 00000000000..439fa36aab0 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/dynamic3.js @@ -0,0 +1 @@ +export const DYNAMIC_3 = 'DYNAMIC_3'; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/main.js new file mode 100644 index 00000000000..317e03b17c5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-facades/main.js @@ -0,0 +1,5 @@ +import { DEP } from './dep'; + +Promise.all([import('./dynamic1.js'), import('./dynamic2.js'), import('./dynamic3.js')]).then( + results => console.log(results, DEP) +); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_config.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_config.js new file mode 100644 index 00000000000..28725aa0585 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_config.js @@ -0,0 +1,10 @@ +module.exports = { + description: 'handles name conflicts in manual chunks', + options: { + strictDeprecations: false, + input: ['main.js'], + manualChunks: { + dynamic: ['dynamic1.js'] + } + } +}; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/amd/generated-dynamic.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/amd/generated-dynamic.js new file mode 100644 index 00000000000..076fa7636d8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/amd/generated-dynamic.js @@ -0,0 +1,25 @@ +define(['exports'], function (exports) { 'use strict'; + + console.log('dynamic2'); + + const DYNAMIC_A = 'DYNAMIC_A'; + const DYNAMIC_B = 'DYNAMIC_B'; + + var dynamic2 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_A: DYNAMIC_A, + DYNAMIC_B: DYNAMIC_B + }); + + console.log('dynamic1'); + + var dynamic1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_B: DYNAMIC_A, + DYNAMIC_A: DYNAMIC_B + }); + + exports.dynamic1 = dynamic1; + exports.dynamic2 = dynamic2; + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/amd/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/amd/main.js new file mode 100644 index 00000000000..134e33a9f75 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/amd/main.js @@ -0,0 +1,6 @@ +define(['require'], function (require) { 'use strict'; + + new Promise(function (resolve, reject) { require(['./generated-dynamic'], resolve, reject) }).then(function (n) { return n.dynamic1; }).then(result => console.log(result)); + new Promise(function (resolve, reject) { require(['./generated-dynamic'], resolve, reject) }).then(function (n) { return n.dynamic2; }).then(result => console.log(result)); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/cjs/generated-dynamic.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/cjs/generated-dynamic.js new file mode 100644 index 00000000000..6051f8db1b3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/cjs/generated-dynamic.js @@ -0,0 +1,23 @@ +'use strict'; + +console.log('dynamic2'); + +const DYNAMIC_A = 'DYNAMIC_A'; +const DYNAMIC_B = 'DYNAMIC_B'; + +var dynamic2 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_A: DYNAMIC_A, + DYNAMIC_B: DYNAMIC_B +}); + +console.log('dynamic1'); + +var dynamic1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_B: DYNAMIC_A, + DYNAMIC_A: DYNAMIC_B +}); + +exports.dynamic1 = dynamic1; +exports.dynamic2 = dynamic2; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/cjs/main.js new file mode 100644 index 00000000000..436abdbbe3d --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/cjs/main.js @@ -0,0 +1,4 @@ +'use strict'; + +Promise.resolve().then(function () { return require('./generated-dynamic.js'); }).then(function (n) { return n.dynamic1; }).then(result => console.log(result)); +Promise.resolve().then(function () { return require('./generated-dynamic.js'); }).then(function (n) { return n.dynamic2; }).then(result => console.log(result)); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/es/generated-dynamic.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/es/generated-dynamic.js new file mode 100644 index 00000000000..34710d6347c --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/es/generated-dynamic.js @@ -0,0 +1,20 @@ +console.log('dynamic2'); + +const DYNAMIC_A = 'DYNAMIC_A'; +const DYNAMIC_B = 'DYNAMIC_B'; + +var dynamic2 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_A: DYNAMIC_A, + DYNAMIC_B: DYNAMIC_B +}); + +console.log('dynamic1'); + +var dynamic1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_B: DYNAMIC_A, + DYNAMIC_A: DYNAMIC_B +}); + +export { dynamic1 as a, dynamic2 as d }; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/es/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/es/main.js new file mode 100644 index 00000000000..e6906c3f8a2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/es/main.js @@ -0,0 +1,2 @@ +import('./generated-dynamic.js').then(function (n) { return n.a; }).then(result => console.log(result)); +import('./generated-dynamic.js').then(function (n) { return n.d; }).then(result => console.log(result)); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/system/generated-dynamic.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/system/generated-dynamic.js new file mode 100644 index 00000000000..7b09ab0ef5b --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/system/generated-dynamic.js @@ -0,0 +1,29 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + console.log('dynamic2'); + + const DYNAMIC_A = 'DYNAMIC_A'; + const DYNAMIC_B = 'DYNAMIC_B'; + + var dynamic2 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_A: DYNAMIC_A, + DYNAMIC_B: DYNAMIC_B + }); + exports('d', dynamic2); + + console.log('dynamic1'); + + var dynamic1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + DYNAMIC_B: DYNAMIC_A, + DYNAMIC_A: DYNAMIC_B + }); + exports('a', dynamic1); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/system/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/system/main.js new file mode 100644 index 00000000000..a59ec2ff8bb --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/_expected/system/main.js @@ -0,0 +1,11 @@ +System.register([], function (exports, module) { + 'use strict'; + return { + execute: function () { + + module.import('./generated-dynamic.js').then(function (n) { return n.a; }).then(result => console.log(result)); + module.import('./generated-dynamic.js').then(function (n) { return n.d; }).then(result => console.log(result)); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/dynamic1.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/dynamic1.js new file mode 100644 index 00000000000..ee02308ddb4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/dynamic1.js @@ -0,0 +1,3 @@ +console.log('dynamic1'); + +export { DYNAMIC_A as DYNAMIC_B, DYNAMIC_B as DYNAMIC_A } from './dynamic2'; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/dynamic2.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/dynamic2.js new file mode 100644 index 00000000000..6d087c59d00 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/dynamic2.js @@ -0,0 +1,4 @@ +console.log('dynamic2'); + +export const DYNAMIC_A = 'DYNAMIC_A'; +export const DYNAMIC_B = 'DYNAMIC_B'; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/main.js new file mode 100644 index 00000000000..9e2abfea069 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic-name-conflict/main.js @@ -0,0 +1,2 @@ +import('./dynamic1.js').then(result => console.log(result)); +import('./dynamic2.js').then(result => console.log(result)); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_config.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_config.js new file mode 100644 index 00000000000..cfb06c43a96 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_config.js @@ -0,0 +1,10 @@ +module.exports = { + description: 'supports dynamic manual chunks', + options: { + strictDeprecations: false, + input: ['main.js'], + manualChunks: { + dynamic: ['dynamic.js'] + } + } +}; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/amd/generated-dynamic.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/amd/generated-dynamic.js new file mode 100644 index 00000000000..94b0e40c8e0 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/amd/generated-dynamic.js @@ -0,0 +1,7 @@ +define(['exports'], function (exports) { 'use strict'; + + const DYNAMIC_USED_BY_A = 'DYNAMIC_USED_BY_A'; + + exports.DYNAMIC_USED_BY_A = DYNAMIC_USED_BY_A; + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/amd/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/amd/main.js new file mode 100644 index 00000000000..7ade37c39c9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/amd/main.js @@ -0,0 +1,5 @@ +define(['require'], function (require) { 'use strict'; + + new Promise(function (resolve, reject) { require(['./generated-dynamic'], resolve, reject) }).then(({DYNAMIC_USED_BY_A}) => console.log(DYNAMIC_USED_BY_A)); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/cjs/generated-dynamic.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/cjs/generated-dynamic.js new file mode 100644 index 00000000000..28e15f91379 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/cjs/generated-dynamic.js @@ -0,0 +1,5 @@ +'use strict'; + +const DYNAMIC_USED_BY_A = 'DYNAMIC_USED_BY_A'; + +exports.DYNAMIC_USED_BY_A = DYNAMIC_USED_BY_A; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/cjs/main.js new file mode 100644 index 00000000000..48ed2ac4287 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/cjs/main.js @@ -0,0 +1,3 @@ +'use strict'; + +Promise.resolve().then(function () { return require('./generated-dynamic.js'); }).then(({DYNAMIC_USED_BY_A}) => console.log(DYNAMIC_USED_BY_A)); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/es/generated-dynamic.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/es/generated-dynamic.js new file mode 100644 index 00000000000..4ccf6321419 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/es/generated-dynamic.js @@ -0,0 +1,3 @@ +const DYNAMIC_USED_BY_A = 'DYNAMIC_USED_BY_A'; + +export { DYNAMIC_USED_BY_A }; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/es/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/es/main.js new file mode 100644 index 00000000000..aefad148dc7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/es/main.js @@ -0,0 +1 @@ +import('./generated-dynamic.js').then(({DYNAMIC_USED_BY_A}) => console.log(DYNAMIC_USED_BY_A)); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/system/generated-dynamic.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/system/generated-dynamic.js new file mode 100644 index 00000000000..cf05be5bb3b --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/system/generated-dynamic.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const DYNAMIC_USED_BY_A = exports('DYNAMIC_USED_BY_A', 'DYNAMIC_USED_BY_A'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/system/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/system/main.js new file mode 100644 index 00000000000..5c1d9db7c1e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/_expected/system/main.js @@ -0,0 +1,10 @@ +System.register([], function (exports, module) { + 'use strict'; + return { + execute: function () { + + module.import('./generated-dynamic.js').then(({DYNAMIC_USED_BY_A}) => console.log(DYNAMIC_USED_BY_A)); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic/dynamic.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/dynamic.js new file mode 100644 index 00000000000..38cb5406d06 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/dynamic.js @@ -0,0 +1 @@ +export const DYNAMIC_USED_BY_A = 'DYNAMIC_USED_BY_A'; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/manual-chunks-dynamic/main.js b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/main.js new file mode 100644 index 00000000000..c4c5988813a --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-dynamic/main.js @@ -0,0 +1 @@ +import('./dynamic.js').then(({DYNAMIC_USED_BY_A}) => console.log(DYNAMIC_USED_BY_A)); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/_config.js b/test/chunking-form/samples/deprecated/manual-chunks-function/_config.js new file mode 100644 index 00000000000..5b225fe7552 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/_config.js @@ -0,0 +1,12 @@ +module.exports = { + description: 'allows to define manual chunks via a function', + options: { + strictDeprecations: false, + input: ['main-a'], + manualChunks(id) { + if (id[id.length - 5] === '-') { + return `chunk-${id[id.length - 4]}`; + } + } + } +}; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/amd/generated-chunk-b.js b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/amd/generated-chunk-b.js new file mode 100644 index 00000000000..234e6a42b0c --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/amd/generated-chunk-b.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + console.log('dep2'); + + console.log('dep-b'); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/amd/generated-chunk-c.js b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/amd/generated-chunk-c.js new file mode 100644 index 00000000000..d62075790ea --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/amd/generated-chunk-c.js @@ -0,0 +1,5 @@ +define(['./generated-chunk-b'], function (chunkB) { 'use strict'; + + console.log('dep-c'); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/amd/main-a.js b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/amd/main-a.js new file mode 100644 index 00000000000..939b5e414df --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/amd/main-a.js @@ -0,0 +1,9 @@ +define(['./generated-chunk-b', './generated-chunk-c'], function (chunkB, chunkC) { 'use strict'; + + console.log('dep1'); + + console.log('dep-a'); + + console.log('main-a'); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/cjs/generated-chunk-b.js b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/cjs/generated-chunk-b.js new file mode 100644 index 00000000000..51b3d3e3d98 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/cjs/generated-chunk-b.js @@ -0,0 +1,5 @@ +'use strict'; + +console.log('dep2'); + +console.log('dep-b'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/cjs/generated-chunk-c.js b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/cjs/generated-chunk-c.js new file mode 100644 index 00000000000..d8349602bd6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/cjs/generated-chunk-c.js @@ -0,0 +1,5 @@ +'use strict'; + +require('./generated-chunk-b.js'); + +console.log('dep-c'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/cjs/main-a.js b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/cjs/main-a.js new file mode 100644 index 00000000000..d65da8d78b5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/cjs/main-a.js @@ -0,0 +1,10 @@ +'use strict'; + +require('./generated-chunk-b.js'); +require('./generated-chunk-c.js'); + +console.log('dep1'); + +console.log('dep-a'); + +console.log('main-a'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/es/generated-chunk-b.js b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/es/generated-chunk-b.js new file mode 100644 index 00000000000..16fb2a90267 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/es/generated-chunk-b.js @@ -0,0 +1,3 @@ +console.log('dep2'); + +console.log('dep-b'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/es/generated-chunk-c.js b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/es/generated-chunk-c.js new file mode 100644 index 00000000000..78ee7d95de5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/es/generated-chunk-c.js @@ -0,0 +1,3 @@ +import './generated-chunk-b.js'; + +console.log('dep-c'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/es/main-a.js b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/es/main-a.js new file mode 100644 index 00000000000..ae2fdbf85e5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/es/main-a.js @@ -0,0 +1,8 @@ +import './generated-chunk-b.js'; +import './generated-chunk-c.js'; + +console.log('dep1'); + +console.log('dep-a'); + +console.log('main-a'); diff --git a/test/form/samples/custom-module-context-function/_expected/system.js b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/system/generated-chunk-b.js similarity index 65% rename from test/form/samples/custom-module-context-function/_expected/system.js rename to test/chunking-form/samples/deprecated/manual-chunks-function/_expected/system/generated-chunk-b.js index 1e323399d00..fabf038cbaa 100644 --- a/test/form/samples/custom-module-context-function/_expected/system.js +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/system/generated-chunk-b.js @@ -3,9 +3,9 @@ System.register([], function () { return { execute: function () { - undefined.prop = 'nope'; + console.log('dep2'); - lolwut.prop = '???'; + console.log('dep-b'); } }; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/system/generated-chunk-c.js b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/system/generated-chunk-c.js new file mode 100644 index 00000000000..4cd41ad57b6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/system/generated-chunk-c.js @@ -0,0 +1,11 @@ +System.register(['./generated-chunk-b.js'], function () { + 'use strict'; + return { + setters: [function () {}], + execute: function () { + + console.log('dep-c'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/system/main-a.js b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/system/main-a.js new file mode 100644 index 00000000000..69e6ce429d3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/_expected/system/main-a.js @@ -0,0 +1,15 @@ +System.register(['./generated-chunk-b.js', './generated-chunk-c.js'], function () { + 'use strict'; + return { + setters: [function () {}, function () {}], + execute: function () { + + console.log('dep1'); + + console.log('dep-a'); + + console.log('main-a'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/dep-a.js b/test/chunking-form/samples/deprecated/manual-chunks-function/dep-a.js new file mode 100644 index 00000000000..5cf180c1404 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/dep-a.js @@ -0,0 +1,4 @@ +import './dep-c'; +import './dep1'; + +console.log('dep-a'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/dep-b.js b/test/chunking-form/samples/deprecated/manual-chunks-function/dep-b.js new file mode 100644 index 00000000000..67c590f583e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/dep-b.js @@ -0,0 +1,3 @@ +import './dep2'; + +console.log('dep-b'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/dep-c.js b/test/chunking-form/samples/deprecated/manual-chunks-function/dep-c.js new file mode 100644 index 00000000000..3934b0ad90e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/dep-c.js @@ -0,0 +1,3 @@ +import './dep2'; + +console.log('dep-c'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/dep1.js b/test/chunking-form/samples/deprecated/manual-chunks-function/dep1.js new file mode 100644 index 00000000000..6aa6066cec9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/dep1.js @@ -0,0 +1 @@ +console.log('dep1'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/dep2.js b/test/chunking-form/samples/deprecated/manual-chunks-function/dep2.js new file mode 100644 index 00000000000..f5325d80e8a --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/dep2.js @@ -0,0 +1 @@ +console.log('dep2'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-function/main-a.js b/test/chunking-form/samples/deprecated/manual-chunks-function/main-a.js new file mode 100644 index 00000000000..cf97f330a79 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-function/main-a.js @@ -0,0 +1,4 @@ +import './dep-a'; +import './dep-b'; + +console.log('main-a'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-nested/_config.js b/test/chunking-form/samples/deprecated/manual-chunks-nested/_config.js new file mode 100644 index 00000000000..20ea0b64d16 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-nested/_config.js @@ -0,0 +1,10 @@ +module.exports = { + description: 'manual chunks can contain nested modules', + options: { + strictDeprecations: false, + input: ['main.js'], + manualChunks: { + manual: ['middle.js', 'inner.js', 'outer.js'] + } + } +}; diff --git a/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/amd/generated-manual.js b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/amd/generated-manual.js new file mode 100644 index 00000000000..e81d58f94e9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/amd/generated-manual.js @@ -0,0 +1,9 @@ +define(function () { 'use strict'; + + console.log('inner'); + + console.log('middle'); + + console.log('outer'); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/amd/main.js b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/amd/main.js new file mode 100644 index 00000000000..c9a0d54be11 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/amd/main.js @@ -0,0 +1,5 @@ +define(['./generated-manual'], function (manual) { 'use strict'; + + console.log('main'); + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/cjs/generated-manual.js b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/cjs/generated-manual.js new file mode 100644 index 00000000000..3ce3b1a69a1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/cjs/generated-manual.js @@ -0,0 +1,7 @@ +'use strict'; + +console.log('inner'); + +console.log('middle'); + +console.log('outer'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/cjs/main.js new file mode 100644 index 00000000000..f679e51bff2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/cjs/main.js @@ -0,0 +1,5 @@ +'use strict'; + +require('./generated-manual.js'); + +console.log('main'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/es/generated-manual.js b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/es/generated-manual.js new file mode 100644 index 00000000000..7abdcd7f151 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/es/generated-manual.js @@ -0,0 +1,5 @@ +console.log('inner'); + +console.log('middle'); + +console.log('outer'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/es/main.js b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/es/main.js new file mode 100644 index 00000000000..ddeb648f149 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/es/main.js @@ -0,0 +1,3 @@ +import './generated-manual.js'; + +console.log('main'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/system/generated-manual.js b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/system/generated-manual.js new file mode 100644 index 00000000000..b297489bbda --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/system/generated-manual.js @@ -0,0 +1,14 @@ +System.register([], function () { + 'use strict'; + return { + execute: function () { + + console.log('inner'); + + console.log('middle'); + + console.log('outer'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/system/main.js b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/system/main.js new file mode 100644 index 00000000000..a1d452ebaf8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-nested/_expected/system/main.js @@ -0,0 +1,11 @@ +System.register(['./generated-manual.js'], function () { + 'use strict'; + return { + setters: [function () {}], + execute: function () { + + console.log('main'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-nested/inner.js b/test/chunking-form/samples/deprecated/manual-chunks-nested/inner.js new file mode 100644 index 00000000000..8e1a29ca97f --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-nested/inner.js @@ -0,0 +1 @@ +console.log('inner'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-nested/main.js b/test/chunking-form/samples/deprecated/manual-chunks-nested/main.js new file mode 100644 index 00000000000..b46ebb222d8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-nested/main.js @@ -0,0 +1,3 @@ +import './outer.js'; + +console.log('main'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-nested/middle.js b/test/chunking-form/samples/deprecated/manual-chunks-nested/middle.js new file mode 100644 index 00000000000..0073259087e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-nested/middle.js @@ -0,0 +1,3 @@ +import './inner.js'; + +console.log('middle'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks-nested/outer.js b/test/chunking-form/samples/deprecated/manual-chunks-nested/outer.js new file mode 100644 index 00000000000..c77196cec49 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks-nested/outer.js @@ -0,0 +1,3 @@ +import './middle.js'; + +console.log('outer'); diff --git a/test/chunking-form/samples/deprecated/manual-chunks/_config.js b/test/chunking-form/samples/deprecated/manual-chunks/_config.js new file mode 100644 index 00000000000..626186e9b89 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/_config.js @@ -0,0 +1,11 @@ +module.exports = { + description: 'manual chunks support', + options: { + strictDeprecations: false, + input: ['main.js'], + manualChunks: { + lib1: ['lib1.js'], + deps2and3: ['dep2.js', 'dep3.js'] + } + } +}; diff --git a/test/chunking-form/samples/deprecated/manual-chunks/_expected/amd/generated-deps2and3.js b/test/chunking-form/samples/deprecated/manual-chunks/_expected/amd/generated-deps2and3.js new file mode 100644 index 00000000000..ddd28d1a05e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/_expected/amd/generated-deps2and3.js @@ -0,0 +1,20 @@ +define(['exports', './generated-lib1'], function (exports, lib1) { 'use strict'; + + function fn () { + console.log('lib2 fn'); + } + + function fn$1 () { + fn(); + console.log('dep2 fn'); + } + + function fn$2 () { + lib1.fn(); + console.log('dep3 fn'); + } + + exports.fn = fn$1; + exports.fn$1 = fn$2; + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks/_expected/amd/generated-lib1.js b/test/chunking-form/samples/deprecated/manual-chunks/_expected/amd/generated-lib1.js new file mode 100644 index 00000000000..8ee6361f5e4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/_expected/amd/generated-lib1.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + function fn () { + console.log('lib1 fn'); + } + + exports.fn = fn; + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks/_expected/amd/main.js b/test/chunking-form/samples/deprecated/manual-chunks/_expected/amd/main.js new file mode 100644 index 00000000000..e636d3d3dd1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/_expected/amd/main.js @@ -0,0 +1,17 @@ +define(['./generated-deps2and3', './generated-lib1'], function (deps2and3, lib1) { 'use strict'; + + function fn () { + console.log('dep1 fn'); + } + + class Main { + constructor () { + fn(); + deps2and3.fn(); + deps2and3.fn$1(); + } + } + + return Main; + +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks/_expected/cjs/generated-deps2and3.js b/test/chunking-form/samples/deprecated/manual-chunks/_expected/cjs/generated-deps2and3.js new file mode 100644 index 00000000000..2b98a12f897 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/_expected/cjs/generated-deps2and3.js @@ -0,0 +1,20 @@ +'use strict'; + +var lib1 = require('./generated-lib1.js'); + +function fn () { + console.log('lib2 fn'); +} + +function fn$1 () { + fn(); + console.log('dep2 fn'); +} + +function fn$2 () { + lib1.fn(); + console.log('dep3 fn'); +} + +exports.fn = fn$1; +exports.fn$1 = fn$2; diff --git a/test/chunking-form/samples/deprecated/manual-chunks/_expected/cjs/generated-lib1.js b/test/chunking-form/samples/deprecated/manual-chunks/_expected/cjs/generated-lib1.js new file mode 100644 index 00000000000..6a9d99129d3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/_expected/cjs/generated-lib1.js @@ -0,0 +1,7 @@ +'use strict'; + +function fn () { + console.log('lib1 fn'); +} + +exports.fn = fn; diff --git a/test/chunking-form/samples/deprecated/manual-chunks/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/manual-chunks/_expected/cjs/main.js new file mode 100644 index 00000000000..2a68746bab6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/_expected/cjs/main.js @@ -0,0 +1,18 @@ +'use strict'; + +var deps2and3 = require('./generated-deps2and3.js'); +require('./generated-lib1.js'); + +function fn () { + console.log('dep1 fn'); +} + +class Main { + constructor () { + fn(); + deps2and3.fn(); + deps2and3.fn$1(); + } +} + +module.exports = Main; diff --git a/test/chunking-form/samples/deprecated/manual-chunks/_expected/es/generated-deps2and3.js b/test/chunking-form/samples/deprecated/manual-chunks/_expected/es/generated-deps2and3.js new file mode 100644 index 00000000000..ab74a6ccafd --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/_expected/es/generated-deps2and3.js @@ -0,0 +1,17 @@ +import { f as fn$3 } from './generated-lib1.js'; + +function fn () { + console.log('lib2 fn'); +} + +function fn$1 () { + fn(); + console.log('dep2 fn'); +} + +function fn$2 () { + fn$3(); + console.log('dep3 fn'); +} + +export { fn$2 as a, fn$1 as f }; diff --git a/test/chunking-form/samples/deprecated/manual-chunks/_expected/es/generated-lib1.js b/test/chunking-form/samples/deprecated/manual-chunks/_expected/es/generated-lib1.js new file mode 100644 index 00000000000..ae5cdca1483 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/_expected/es/generated-lib1.js @@ -0,0 +1,5 @@ +function fn () { + console.log('lib1 fn'); +} + +export { fn as f }; diff --git a/test/chunking-form/samples/deprecated/manual-chunks/_expected/es/main.js b/test/chunking-form/samples/deprecated/manual-chunks/_expected/es/main.js new file mode 100644 index 00000000000..55591e37b6a --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/_expected/es/main.js @@ -0,0 +1,16 @@ +import { f as fn$1, a as fn$2 } from './generated-deps2and3.js'; +import './generated-lib1.js'; + +function fn () { + console.log('dep1 fn'); +} + +class Main { + constructor () { + fn(); + fn$1(); + fn$2(); + } +} + +export default Main; diff --git a/test/chunking-form/samples/deprecated/manual-chunks/_expected/system/generated-deps2and3.js b/test/chunking-form/samples/deprecated/manual-chunks/_expected/system/generated-deps2and3.js new file mode 100644 index 00000000000..2b10cd02e29 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/_expected/system/generated-deps2and3.js @@ -0,0 +1,31 @@ +System.register(['./generated-lib1.js'], function (exports) { + 'use strict'; + var fn$3; + return { + setters: [function (module) { + fn$3 = module.f; + }], + execute: function () { + + exports({ + a: fn$2, + f: fn$1 + }); + + function fn () { + console.log('lib2 fn'); + } + + function fn$1 () { + fn(); + console.log('dep2 fn'); + } + + function fn$2 () { + fn$3(); + console.log('dep3 fn'); + } + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks/_expected/system/generated-lib1.js b/test/chunking-form/samples/deprecated/manual-chunks/_expected/system/generated-lib1.js new file mode 100644 index 00000000000..46e60ceba06 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/_expected/system/generated-lib1.js @@ -0,0 +1,14 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + exports('f', fn); + + function fn () { + console.log('lib1 fn'); + } + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks/_expected/system/main.js b/test/chunking-form/samples/deprecated/manual-chunks/_expected/system/main.js new file mode 100644 index 00000000000..b9ce4867e2b --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/_expected/system/main.js @@ -0,0 +1,25 @@ +System.register(['./generated-deps2and3.js', './generated-lib1.js'], function (exports) { + 'use strict'; + var fn$1, fn$2; + return { + setters: [function (module) { + fn$1 = module.f; + fn$2 = module.a; + }, function () {}], + execute: function () { + + function fn () { + console.log('dep1 fn'); + } + + class Main { + constructor () { + fn(); + fn$1(); + fn$2(); + } + } exports('default', Main); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/manual-chunks/dep1.js b/test/chunking-form/samples/deprecated/manual-chunks/dep1.js new file mode 100644 index 00000000000..b67d0bbb2c1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/dep1.js @@ -0,0 +1,3 @@ +export function fn () { + console.log('dep1 fn'); +} \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/manual-chunks/dep2.js b/test/chunking-form/samples/deprecated/manual-chunks/dep2.js new file mode 100644 index 00000000000..1549fc1644c --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/dep2.js @@ -0,0 +1,6 @@ +import { fn as libfn } from './lib2.js'; + +export function fn () { + libfn(); + console.log('dep2 fn'); +} \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/manual-chunks/dep3.js b/test/chunking-form/samples/deprecated/manual-chunks/dep3.js new file mode 100644 index 00000000000..4e32222106a --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/dep3.js @@ -0,0 +1,8 @@ +import { fn as libfn, treeshaked } from './lib1.js'; + +export function fn () { + libfn(); + console.log('dep3 fn'); +} + +export default treeshaked; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/manual-chunks/lib1.js b/test/chunking-form/samples/deprecated/manual-chunks/lib1.js new file mode 100644 index 00000000000..5ccf83b357e --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/lib1.js @@ -0,0 +1,7 @@ +export function fn () { + console.log('lib1 fn'); +} + +export function treeshaked () { + console.log('this is tree shaken!'); +} \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/manual-chunks/lib2.js b/test/chunking-form/samples/deprecated/manual-chunks/lib2.js new file mode 100644 index 00000000000..2d6d2cf0852 --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/lib2.js @@ -0,0 +1,3 @@ +export function fn () { + console.log('lib2 fn'); +} \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/manual-chunks/main.js b/test/chunking-form/samples/deprecated/manual-chunks/main.js new file mode 100644 index 00000000000..d65cf01a5ff --- /dev/null +++ b/test/chunking-form/samples/deprecated/manual-chunks/main.js @@ -0,0 +1,15 @@ +import { fn } from './dep1.js'; +import { fn as fn2 } from './dep2.js'; +import { fn as fn3, default as treeshaked } from './dep3.js'; + +if (false) { + treeshaked(); +} + +export default class Main { + constructor () { + fn(); + fn2(); + fn3(); + } +} \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_config.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_config.js new file mode 100644 index 00000000000..23bb4b220e9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_config.js @@ -0,0 +1,10 @@ +module.exports = { + description: 'handles using dependencies with shimmed missing exports as ', + expectedWarnings: ['SHIMMED_EXPORT'], + options: { + strictDeprecations: false, + input: ['main.js'], + preserveModules: true, + shimMissingExports: true + } +}; diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/amd/dep1.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/amd/dep1.js new file mode 100644 index 00000000000..4e6617810fb --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/amd/dep1.js @@ -0,0 +1,19 @@ +define(['exports'], function (exports) { 'use strict'; + + var _missingExportShim = void 0; + + console.log('This is the output when a missing export is used internally but not reexported'); + + function almostUseUnused(useIt) { + if (useIt) { + console.log(_missingExportShim); + } + } + + almostUseUnused(false); + + exports.missing1 = _missingExportShim; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/amd/dep2.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/amd/dep2.js new file mode 100644 index 00000000000..c9382183868 --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/amd/dep2.js @@ -0,0 +1,16 @@ +define(['exports'], function (exports) { 'use strict'; + + var _missingExportShim = void 0; + + console.log('This is the output when a missing export is reexported'); + + var _missingExportShim$1 = void 0; + + console.log(_missingExportShim$1); + + exports.missing2 = _missingExportShim; + exports.previousShimmedExport = _missingExportShim$1; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/amd/main.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/amd/main.js new file mode 100644 index 00000000000..ec4beefe55b --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/amd/main.js @@ -0,0 +1,5 @@ +define(['./dep1', './dep2'], function (dep1, dep2) { 'use strict'; + + console.log(dep1.missing1, dep2.missing2, dep2.previousShimmedExport); + +}); diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/cjs/dep1.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/cjs/dep1.js new file mode 100644 index 00000000000..58c566f2849 --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/cjs/dep1.js @@ -0,0 +1,17 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var _missingExportShim = void 0; + +console.log('This is the output when a missing export is used internally but not reexported'); + +function almostUseUnused(useIt) { + if (useIt) { + console.log(_missingExportShim); + } +} + +almostUseUnused(false); + +exports.missing1 = _missingExportShim; diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/cjs/dep2.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/cjs/dep2.js new file mode 100644 index 00000000000..8a01d991453 --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/cjs/dep2.js @@ -0,0 +1,14 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var _missingExportShim = void 0; + +console.log('This is the output when a missing export is reexported'); + +var _missingExportShim$1 = void 0; + +console.log(_missingExportShim$1); + +exports.missing2 = _missingExportShim; +exports.previousShimmedExport = _missingExportShim$1; diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/cjs/main.js new file mode 100644 index 00000000000..0a8ed0c591c --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/cjs/main.js @@ -0,0 +1,6 @@ +'use strict'; + +var dep1 = require('./dep1.js'); +var dep2 = require('./dep2.js'); + +console.log(dep1.missing1, dep2.missing2, dep2.previousShimmedExport); diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/es/dep1.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/es/dep1.js new file mode 100644 index 00000000000..99f4196bf72 --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/es/dep1.js @@ -0,0 +1,13 @@ +var _missingExportShim = void 0; + +console.log('This is the output when a missing export is used internally but not reexported'); + +function almostUseUnused(useIt) { + if (useIt) { + console.log(_missingExportShim); + } +} + +almostUseUnused(false); + +export { _missingExportShim as missing1 }; diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/es/dep2.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/es/dep2.js new file mode 100644 index 00000000000..1957fef7ba9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/es/dep2.js @@ -0,0 +1,9 @@ +var _missingExportShim = void 0; + +console.log('This is the output when a missing export is reexported'); + +var _missingExportShim$1 = void 0; + +console.log(_missingExportShim$1); + +export { _missingExportShim as missing2, _missingExportShim$1 as previousShimmedExport }; diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/es/main.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/es/main.js new file mode 100644 index 00000000000..ea2616a1c8c --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/es/main.js @@ -0,0 +1,4 @@ +import { missing1 as _missingExportShim } from './dep1.js'; +import { missing2 as _missingExportShim$1, previousShimmedExport as _missingExportShim$2 } from './dep2.js'; + +console.log(_missingExportShim, _missingExportShim$1, _missingExportShim$2); diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/system/dep1.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/system/dep1.js new file mode 100644 index 00000000000..292047e5ff6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/system/dep1.js @@ -0,0 +1,22 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var _missingExportShim = void 0; + + console.log('This is the output when a missing export is used internally but not reexported'); + + function almostUseUnused(useIt) { + if (useIt) { + console.log(_missingExportShim); + } + } + + almostUseUnused(false); + + exports('missing1', _missingExportShim); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/system/dep2.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/system/dep2.js new file mode 100644 index 00000000000..da8178d1d7f --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/system/dep2.js @@ -0,0 +1,18 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var _missingExportShim = void 0; + + console.log('This is the output when a missing export is reexported'); + + var _missingExportShim$1 = exports('previousShimmedExport', void 0); + + console.log(_missingExportShim$1); + + exports('missing2', _missingExportShim); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/system/main.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/system/main.js new file mode 100644 index 00000000000..fa94551b2ef --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/_expected/system/main.js @@ -0,0 +1,17 @@ +System.register(['./dep1.js', './dep2.js'], function () { + 'use strict'; + var _missingExportShim, _missingExportShim$1, _missingExportShim$2; + return { + setters: [function (module) { + _missingExportShim = module.missing1; + }, function (module) { + _missingExportShim$1 = module.missing2; + _missingExportShim$2 = module.previousShimmedExport; + }], + execute: function () { + + console.log(_missingExportShim, _missingExportShim$1, _missingExportShim$2); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/dep1.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/dep1.js new file mode 100644 index 00000000000..84e22e0fe8f --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/dep1.js @@ -0,0 +1,9 @@ +console.log('This is the output when a missing export is used internally but not reexported'); + +function almostUseUnused(useIt) { + if (useIt) { + console.log(_missingExportShim); + } +} + +almostUseUnused(false); diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/dep2.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/dep2.js new file mode 100644 index 00000000000..e49bb16dd04 --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/dep2.js @@ -0,0 +1,7 @@ +console.log('This is the output when a missing export is reexported'); + +var _missingExportShim = void 0; + +console.log(_missingExportShim); + +export {_missingExportShim as previousShimmedExport} diff --git a/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/main.js b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/main.js new file mode 100644 index 00000000000..167c08b23fc --- /dev/null +++ b/test/chunking-form/samples/deprecated/missing-export-reused-deconflicting/main.js @@ -0,0 +1,4 @@ +import { missing1 } from './dep1.js'; +import { missing2, previousShimmedExport } from './dep2.js'; + +console.log(missing1, missing2, previousShimmedExport); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_config.js new file mode 100644 index 00000000000..31219523c90 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'Uses entry point semantics for all files when preserving modules', + options: { + strictDeprecations: false, + input: 'main.js', + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/amd/default.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/amd/default.js new file mode 100644 index 00000000000..9101b3f3d25 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/amd/default.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var foo = 'default'; + + return foo; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/amd/main.js new file mode 100644 index 00000000000..d94d10667e3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/amd/main.js @@ -0,0 +1,10 @@ +define(['require', './default', './named'], function (require, _default, named) { 'use strict'; + + console.log(_default, named.value); + + new Promise(function (resolve, reject) { require(['./default'], function (m) { resolve({ 'default': m }); }, reject) }).then(result => console.log(result.default)); + new Promise(function (resolve, reject) { require(['./named'], resolve, reject) }).then(result => console.log(result.value)); + + return _default; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/amd/named.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/amd/named.js new file mode 100644 index 00000000000..37e6d25bd85 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/amd/named.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + const value = 'named'; + + exports.value = value; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/cjs/default.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/cjs/default.js new file mode 100644 index 00000000000..f670b985a61 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/cjs/default.js @@ -0,0 +1,5 @@ +'use strict'; + +var foo = 'default'; + +module.exports = foo; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/cjs/main.js new file mode 100644 index 00000000000..468614089bd --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/cjs/main.js @@ -0,0 +1,11 @@ +'use strict'; + +var _default = require('./default.js'); +var named = require('./named.js'); + +console.log(_default, named.value); + +Promise.resolve().then(function () { return { 'default': require('./default.js') }; }).then(result => console.log(result.default)); +Promise.resolve().then(function () { return require('./named.js'); }).then(result => console.log(result.value)); + +module.exports = _default; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/cjs/named.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/cjs/named.js new file mode 100644 index 00000000000..491f8569447 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/cjs/named.js @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const value = 'named'; + +exports.value = value; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/es/default.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/es/default.js new file mode 100644 index 00000000000..97dcda8cdc9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/es/default.js @@ -0,0 +1,3 @@ +var foo = 'default'; + +export default foo; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/es/main.js new file mode 100644 index 00000000000..1db891a835f --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/es/main.js @@ -0,0 +1,8 @@ +import foo from './default.js'; +export { default } from './default.js'; +import { value } from './named.js'; + +console.log(foo, value); + +import('./default.js').then(result => console.log(result.default)); +import('./named.js').then(result => console.log(result.value)); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/es/named.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/es/named.js new file mode 100644 index 00000000000..f632590076b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/es/named.js @@ -0,0 +1,3 @@ +const value = 'named'; + +export { value }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/system/default.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/system/default.js new file mode 100644 index 00000000000..0505d3144dd --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/system/default.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var foo = exports('default', 'default'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/system/main.js new file mode 100644 index 00000000000..12e707aee57 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/system/main.js @@ -0,0 +1,20 @@ +System.register(['./default.js', './named.js'], function (exports, module) { + 'use strict'; + var foo, value; + return { + setters: [function (module) { + foo = module.default; + exports('default', module.default); + }, function (module) { + value = module.value; + }], + execute: function () { + + console.log(foo, value); + + module.import('./default.js').then(result => console.log(result.default)); + module.import('./named.js').then(result => console.log(result.value)); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/system/named.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/system/named.js new file mode 100644 index 00000000000..431654fc285 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/_expected/system/named.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const value = exports('value', 'named'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/default.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/default.js new file mode 100644 index 00000000000..413f601a377 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/default.js @@ -0,0 +1 @@ +export default 'default'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/main.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/main.js new file mode 100644 index 00000000000..72dc390d821 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/main.js @@ -0,0 +1,8 @@ +import foo from './default.js'; +import { value } from './named.js'; +console.log(foo, value); + +export { default } from './default.js'; + +import('./default').then(result => console.log(result.default)); +import('./named').then(result => console.log(result.value)); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/named.js b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/named.js new file mode 100644 index 00000000000..a5c403fef99 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-auto-export-mode/named.js @@ -0,0 +1 @@ +export const value = 'named'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_config.js new file mode 100644 index 00000000000..21593c6541f --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_config.js @@ -0,0 +1,13 @@ +const commonjs = require('@rollup/plugin-commonjs'); + +module.exports = { + description: 'Handles output from @rollup/plugin-commonjs', + expectedWarnings: ['MIXED_EXPORTS'], + options: { + strictDeprecations: false, + input: 'main.js', + preserveModules: true, + external: ['external'], + plugins: [commonjs()] + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/_virtual/_external_commonjs-external b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/_virtual/_external_commonjs-external new file mode 100644 index 00000000000..aac3dad0875 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/_virtual/_external_commonjs-external @@ -0,0 +1,9 @@ +define(['external'], function (external) { 'use strict'; + + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; + + + + return external; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-proxy b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-proxy new file mode 100644 index 00000000000..3d189e335e4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/_virtual/other.js_commonjs-proxy @@ -0,0 +1,7 @@ +define(['../other'], function (other) { 'use strict'; + + + + return other; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/commonjs.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/commonjs.js new file mode 100644 index 00000000000..483f3f246b1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/commonjs.js @@ -0,0 +1,16 @@ +define(['exports', 'external', './other'], function (exports, external, other) { 'use strict'; + + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; + + const { value } = other.default; + + console.log(external, value); + + var commonjs = 42; + + exports.__moduleExports = commonjs; + exports.default = commonjs; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/main.js new file mode 100644 index 00000000000..48e1747cfda --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/main.js @@ -0,0 +1,7 @@ +define(['external', './commonjs'], function (external, commonjs) { 'use strict'; + + external = external && Object.prototype.hasOwnProperty.call(external, 'default') ? external['default'] : external; + + console.log(commonjs.default, external); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/other.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/other.js new file mode 100644 index 00000000000..09837ba81f4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/amd/other.js @@ -0,0 +1,15 @@ +define(['exports'], function (exports) { 'use strict'; + + var value = 43; + + var other = { + value: value + }; + + exports.__moduleExports = other; + exports.default = other; + exports.value = value; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/_virtual/_external_commonjs-external b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/_virtual/_external_commonjs-external new file mode 100644 index 00000000000..c823462ee46 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/_virtual/_external_commonjs-external @@ -0,0 +1,9 @@ +'use strict'; + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var external = _interopDefault(require('external')); + + + +module.exports = external; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-proxy b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-proxy new file mode 100644 index 00000000000..ccb2cfc1e38 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/_virtual/other.js_commonjs-proxy @@ -0,0 +1,7 @@ +'use strict'; + +var other = require('../other.js'); + + + +module.exports = other; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/commonjs.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/commonjs.js new file mode 100644 index 00000000000..f68e44a56f6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/commonjs.js @@ -0,0 +1,17 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var external = _interopDefault(require('external')); +var other = require('./other.js'); + +const { value } = other.default; + +console.log(external, value); + +var commonjs = 42; + +exports.__moduleExports = commonjs; +exports.default = commonjs; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/main.js new file mode 100644 index 00000000000..3566b7d3ca4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/main.js @@ -0,0 +1,8 @@ +'use strict'; + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var external = _interopDefault(require('external')); +var commonjs = require('./commonjs.js'); + +console.log(commonjs.default, external); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/other.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/other.js new file mode 100644 index 00000000000..e89cd646ba7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/cjs/other.js @@ -0,0 +1,13 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var value = 43; + +var other = { + value: value +}; + +exports.__moduleExports = other; +exports.default = other; +exports.value = value; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/_virtual/_external_commonjs-external b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/_virtual/_external_commonjs-external new file mode 100644 index 00000000000..e15c5466550 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/_virtual/_external_commonjs-external @@ -0,0 +1,2 @@ +import external$1 from 'external'; +export { default } from 'external'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/_virtual/other.js_commonjs-proxy b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/_virtual/other.js_commonjs-proxy new file mode 100644 index 00000000000..89634986ca4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/_virtual/other.js_commonjs-proxy @@ -0,0 +1,2 @@ +import other$1 from '../other.js'; +export { default } from '../other.js'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/commonjs.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/commonjs.js new file mode 100644 index 00000000000..e3f3ee13691 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/commonjs.js @@ -0,0 +1,11 @@ +import external$1 from 'external'; +import other$1 from './other.js'; + +const { value } = other$1; + +console.log(external$1, value); + +var commonjs = 42; + +export default commonjs; +export { commonjs as __moduleExports }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/main.js new file mode 100644 index 00000000000..5686f930d70 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/main.js @@ -0,0 +1,4 @@ +import external$1 from 'external'; +import commonjs$1 from './commonjs.js'; + +console.log(commonjs$1, external$1); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/other.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/other.js new file mode 100644 index 00000000000..34718a2745c --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/es/other.js @@ -0,0 +1,8 @@ +var value = 43; + +var other = { + value: value +}; + +export default other; +export { other as __moduleExports, value }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/_virtual/_external_commonjs-external b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/_virtual/_external_commonjs-external new file mode 100644 index 00000000000..134e2d6356d --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/_virtual/_external_commonjs-external @@ -0,0 +1,15 @@ +System.register(['external'], function (exports) { + 'use strict'; + var external; + return { + setters: [function (module) { + external = module.default; + exports('default', module.default); + }], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/_virtual/other.js_commonjs-proxy b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/_virtual/other.js_commonjs-proxy new file mode 100644 index 00000000000..1edbd9c5069 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/_virtual/other.js_commonjs-proxy @@ -0,0 +1,15 @@ +System.register(['../other.js'], function (exports) { + 'use strict'; + var other; + return { + setters: [function (module) { + other = module.default; + exports('default', module.default); + }], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/commonjs.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/commonjs.js new file mode 100644 index 00000000000..6aea482e9b2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/commonjs.js @@ -0,0 +1,20 @@ +System.register(['external', './other.js'], function (exports) { + 'use strict'; + var external, other; + return { + setters: [function (module) { + external = module.default; + }, function (module) { + other = module.default; + }], + execute: function () { + + const { value } = other; + + console.log(external, value); + + var commonjs = function (v) { return exports({ default: v, __moduleExports: v }), v; }(42); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/main.js new file mode 100644 index 00000000000..8ff0da14a79 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/main.js @@ -0,0 +1,16 @@ +System.register(['external', './commonjs.js'], function () { + 'use strict'; + var external, commonjs; + return { + setters: [function (module) { + external = module.default; + }, function (module) { + commonjs = module.default; + }], + execute: function () { + + console.log(commonjs, external); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/other.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/other.js new file mode 100644 index 00000000000..b2dc51dd9ea --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/_expected/system/other.js @@ -0,0 +1,14 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var value = exports('value', 43); + + var other = function (v) { return exports({ default: v, __moduleExports: v }), v; }({ + value: value + }); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/commonjs.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/commonjs.js new file mode 100644 index 00000000000..b9bf49c3fc5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/commonjs.js @@ -0,0 +1,6 @@ +const external = require('external'); +const { value } = require('./other'); + +console.log(external, value); + +module.exports = 42; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/main.js new file mode 100644 index 00000000000..cfef423da0c --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/main.js @@ -0,0 +1,4 @@ +import value from './commonjs'; +import external from 'external'; + +console.log(value, external); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-commonjs/other.js b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/other.js new file mode 100644 index 00000000000..cd9dcc83b69 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-commonjs/other.js @@ -0,0 +1 @@ +exports.value = 43; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_config.js new file mode 100644 index 00000000000..3ed23338db8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'dynamic imports are handled correctly when preserving modules', + options: { + strictDeprecations: false, + input: ['main.js'], + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/amd/dynamic-included.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/amd/dynamic-included.js new file mode 100644 index 00000000000..afd117130dc --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/amd/dynamic-included.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + const value = 'included'; + + exports.value = value; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/amd/main.js new file mode 100644 index 00000000000..2ec310c64aa --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/amd/main.js @@ -0,0 +1,5 @@ +define(['require'], function (require) { 'use strict'; + + new Promise(function (resolve, reject) { require(['./dynamic-included'], resolve, reject) }).then(result => console.log(result)); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/cjs/dynamic-included.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/cjs/dynamic-included.js new file mode 100644 index 00000000000..2c8d642e303 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/cjs/dynamic-included.js @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const value = 'included'; + +exports.value = value; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/cjs/main.js new file mode 100644 index 00000000000..ed78ead193e --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/cjs/main.js @@ -0,0 +1,3 @@ +'use strict'; + +Promise.resolve().then(function () { return require('./dynamic-included.js'); }).then(result => console.log(result)); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/es/dynamic-included.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/es/dynamic-included.js new file mode 100644 index 00000000000..6370bf94358 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/es/dynamic-included.js @@ -0,0 +1,3 @@ +const value = 'included'; + +export { value }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/es/main.js new file mode 100644 index 00000000000..72ed76ddf10 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/es/main.js @@ -0,0 +1 @@ +import('./dynamic-included.js').then(result => console.log(result)); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/system/dynamic-included.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/system/dynamic-included.js new file mode 100644 index 00000000000..3a6e756071e --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/system/dynamic-included.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const value = exports('value', 'included'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/system/main.js new file mode 100644 index 00000000000..26c21dcccb5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/_expected/system/main.js @@ -0,0 +1,10 @@ +System.register([], function (exports, module) { + 'use strict'; + return { + execute: function () { + + module.import('./dynamic-included.js').then(result => console.log(result)); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/dynamic-included.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/dynamic-included.js new file mode 100644 index 00000000000..287c398f8d6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/dynamic-included.js @@ -0,0 +1 @@ +export const value = 'included'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/dynamic-removed.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/dynamic-removed.js new file mode 100644 index 00000000000..a0203faa48b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/dynamic-removed.js @@ -0,0 +1 @@ +export const value = 'removed'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/main.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/main.js new file mode 100644 index 00000000000..9449616c8fe --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-imports/main.js @@ -0,0 +1,6 @@ +import('./dynamic-included').then(result => console.log(result)); + +const include = false; +if (include) { + import('./dynamic-removed').then(result => console.log(result)); +} diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_config.js new file mode 100644 index 00000000000..c5483693708 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'Preserve modules properly handles internal namespace imports (#2576)', + options: { + strictDeprecations: false, + input: ['main.js'], + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/amd/m1.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/amd/m1.js new file mode 100644 index 00000000000..25f53d93a63 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/amd/m1.js @@ -0,0 +1,10 @@ +define(['exports', './m2', './m3'], function (exports, m2, m3) { 'use strict'; + + + + exports.m2 = m2; + exports.m3 = m3; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/amd/m2.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/amd/m2.js new file mode 100644 index 00000000000..22e08de419f --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/amd/m2.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var m2 = {a:1}; + + return m2; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/amd/m3.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/amd/m3.js new file mode 100644 index 00000000000..685448b54a5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/amd/m3.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var m3 = {b:2}; + + return m3; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/amd/main.js new file mode 100644 index 00000000000..b73da45ad1d --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/amd/main.js @@ -0,0 +1,5 @@ +define(['./m1'], function (m1) { 'use strict'; + + console.log(m1); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/cjs/m1.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/cjs/m1.js new file mode 100644 index 00000000000..2dcf78656c6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/cjs/m1.js @@ -0,0 +1,11 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var m2 = require('./m2.js'); +var m3 = require('./m3.js'); + + + +exports.m2 = m2; +exports.m3 = m3; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/cjs/m2.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/cjs/m2.js new file mode 100644 index 00000000000..4e7045d3fc5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/cjs/m2.js @@ -0,0 +1,5 @@ +'use strict'; + +var m2 = {a:1}; + +module.exports = m2; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/cjs/m3.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/cjs/m3.js new file mode 100644 index 00000000000..8e984623675 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/cjs/m3.js @@ -0,0 +1,5 @@ +'use strict'; + +var m3 = {b:2}; + +module.exports = m3; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/cjs/main.js new file mode 100644 index 00000000000..79afdf39744 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/cjs/main.js @@ -0,0 +1,5 @@ +'use strict'; + +var m1 = require('./m1.js'); + +console.log(m1); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/es/m1.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/es/m1.js new file mode 100644 index 00000000000..86968950d9d --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/es/m1.js @@ -0,0 +1,2 @@ +export { default as m2 } from './m2.js'; +export { default as m3 } from './m3.js'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/es/m2.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/es/m2.js new file mode 100644 index 00000000000..0ee68395af0 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/es/m2.js @@ -0,0 +1,3 @@ +var m2 = {a:1}; + +export default m2; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/es/m3.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/es/m3.js new file mode 100644 index 00000000000..0d65aa10bb9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/es/m3.js @@ -0,0 +1,3 @@ +var m3 = {b:2}; + +export default m3; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/es/main.js new file mode 100644 index 00000000000..c7526ddd8b1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/es/main.js @@ -0,0 +1,3 @@ +import * as ms from './m1.js'; + +console.log(ms); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/system/m1.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/system/m1.js new file mode 100644 index 00000000000..9f2d67db2a9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/system/m1.js @@ -0,0 +1,15 @@ +System.register(['./m2.js', './m3.js'], function (exports) { + 'use strict'; + return { + setters: [function (module) { + exports('m2', module.default); + }, function (module) { + exports('m3', module.default); + }], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/system/m2.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/system/m2.js new file mode 100644 index 00000000000..d724fa35251 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/system/m2.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var m2 = exports('default', {a:1}); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/system/m3.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/system/m3.js new file mode 100644 index 00000000000..1181b9a04ec --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/system/m3.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var m3 = exports('default', {b:2}); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/system/main.js new file mode 100644 index 00000000000..7d19155def8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/_expected/system/main.js @@ -0,0 +1,14 @@ +System.register(['./m1.js'], function () { + 'use strict'; + var ms; + return { + setters: [function (module) { + ms = module; + }], + execute: function () { + + console.log(ms); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/m1.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/m1.js new file mode 100644 index 00000000000..611f3360f0a --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/m1.js @@ -0,0 +1,5 @@ +import m2 from './m2.js'; +import m3 from './m3.js'; + +// console.log('m1'); +export { m2, m3 }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/m2.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/m2.js new file mode 100644 index 00000000000..040aecae258 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/m2.js @@ -0,0 +1,2 @@ +var m2 = {a:1}; +export default m2; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/m3.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/m3.js new file mode 100644 index 00000000000..e58c26e98bd --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/m3.js @@ -0,0 +1,2 @@ +var m3 = {b:2}; +export default m3; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/main.js b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/main.js new file mode 100644 index 00000000000..c7526ddd8b1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-dynamic-namespace/main.js @@ -0,0 +1,3 @@ +import * as ms from './m1.js'; + +console.log(ms); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-empty/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-empty/_config.js new file mode 100644 index 00000000000..820e4c3cf04 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-empty/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'Preserve modules remove empty dependencies', + options: { + strictDeprecations: false, + input: 'main.js', + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/amd/main.js new file mode 100644 index 00000000000..6fd312fad67 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/amd/main.js @@ -0,0 +1,5 @@ +define(['./two'], function (two) { 'use strict'; + + window.APP = { a: two }; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/amd/two.js b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/amd/two.js new file mode 100644 index 00000000000..68dcf822ab8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/amd/two.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var a = {}; + + return a; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/cjs/main.js new file mode 100644 index 00000000000..b882d86f306 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/cjs/main.js @@ -0,0 +1,5 @@ +'use strict'; + +var two = require('./two.js'); + +window.APP = { a: two }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/cjs/two.js b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/cjs/two.js new file mode 100644 index 00000000000..62ff33f50af --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/cjs/two.js @@ -0,0 +1,5 @@ +'use strict'; + +var a = {}; + +module.exports = a; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/es/main.js new file mode 100644 index 00000000000..c69a3355933 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/es/main.js @@ -0,0 +1,3 @@ +import a from './two.js'; + +window.APP = { a }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/es/two.js b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/es/two.js new file mode 100644 index 00000000000..0938a073152 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/es/two.js @@ -0,0 +1,3 @@ +var a = {}; + +export default a; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/system/main.js new file mode 100644 index 00000000000..b0664a8cd59 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/system/main.js @@ -0,0 +1,14 @@ +System.register(['./two.js'], function () { + 'use strict'; + var a; + return { + setters: [function (module) { + a = module.default; + }], + execute: function () { + + window.APP = { a }; + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/system/two.js b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/system/two.js new file mode 100644 index 00000000000..015fc0193bb --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-empty/_expected/system/two.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var a = exports('default', {}); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-empty/main.js b/test/chunking-form/samples/deprecated/preserve-modules-empty/main.js new file mode 100644 index 00000000000..944087cb5c5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-empty/main.js @@ -0,0 +1,3 @@ +import { a } from './one'; + +window.APP = { a }; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-empty/one.js b/test/chunking-form/samples/deprecated/preserve-modules-empty/one.js new file mode 100644 index 00000000000..2fa4a4dfd2b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-empty/one.js @@ -0,0 +1,2 @@ +export { default as a } from './two'; +export { default as b } from './three'; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-empty/three.js b/test/chunking-form/samples/deprecated/preserve-modules-empty/three.js new file mode 100644 index 00000000000..7c645e42fb7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-empty/three.js @@ -0,0 +1 @@ +export default {}; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-empty/two.js b/test/chunking-form/samples/deprecated/preserve-modules-empty/two.js new file mode 100644 index 00000000000..7c645e42fb7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-empty/two.js @@ -0,0 +1 @@ +export default {}; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_config.js new file mode 100644 index 00000000000..9ca75e06f00 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'confirm export aliases are preserved in modules', + options: { + strictDeprecations: false, + input: ['main1.js', 'main2.js'], + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/amd/dep.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/amd/dep.js new file mode 100644 index 00000000000..cab959ad2ca --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/amd/dep.js @@ -0,0 +1,10 @@ +define(['exports'], function (exports) { 'use strict'; + + const foo = 1; + + exports.bar = foo; + exports.foo = foo; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/amd/main1.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/amd/main1.js new file mode 100644 index 00000000000..4c30c2b8f1e --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/amd/main1.js @@ -0,0 +1,10 @@ +define(['exports', './dep'], function (exports, dep) { 'use strict'; + + + + exports.bar = dep.foo; + exports.foo = dep.foo; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/amd/main2.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/amd/main2.js new file mode 100644 index 00000000000..0d4dfce05b3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/amd/main2.js @@ -0,0 +1,9 @@ +define(['exports', './dep'], function (exports, dep) { 'use strict'; + + + + exports.bar = dep.foo; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/cjs/dep.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/cjs/dep.js new file mode 100644 index 00000000000..7bf4532c451 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/cjs/dep.js @@ -0,0 +1,8 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const foo = 1; + +exports.bar = foo; +exports.foo = foo; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/cjs/main1.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/cjs/main1.js new file mode 100644 index 00000000000..801c4e75c53 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/cjs/main1.js @@ -0,0 +1,10 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var dep = require('./dep.js'); + + + +exports.bar = dep.foo; +exports.foo = dep.foo; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/cjs/main2.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/cjs/main2.js new file mode 100644 index 00000000000..1c1f62cd337 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/cjs/main2.js @@ -0,0 +1,9 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var dep = require('./dep.js'); + + + +exports.bar = dep.foo; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/es/dep.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/es/dep.js new file mode 100644 index 00000000000..fd00364ba36 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/es/dep.js @@ -0,0 +1,3 @@ +const foo = 1; + +export { foo as bar, foo }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/es/main1.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/es/main1.js new file mode 100644 index 00000000000..ed1ba0cbfbb --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/es/main1.js @@ -0,0 +1 @@ +export { foo as bar, foo } from './dep.js'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/es/main2.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/es/main2.js new file mode 100644 index 00000000000..e7cedc5ee48 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/es/main2.js @@ -0,0 +1 @@ +export { foo as bar } from './dep.js'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/system/dep.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/system/dep.js new file mode 100644 index 00000000000..850241b9ad6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/system/dep.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const foo = function (v) { return exports({ foo: v, bar: v }), v; }(1); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/system/main1.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/system/main1.js new file mode 100644 index 00000000000..bfffe939f7a --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/system/main1.js @@ -0,0 +1,16 @@ +System.register(['./dep.js'], function (exports) { + 'use strict'; + return { + setters: [function (module) { + var _setter = {}; + _setter.bar = module.foo; + _setter.foo = module.foo; + exports(_setter); + }], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/system/main2.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/system/main2.js new file mode 100644 index 00000000000..d995245e8f6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/_expected/system/main2.js @@ -0,0 +1,13 @@ +System.register(['./dep.js'], function (exports) { + 'use strict'; + return { + setters: [function (module) { + exports('bar', module.foo); + }], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/dep.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/dep.js new file mode 100644 index 00000000000..6e70164af81 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/dep.js @@ -0,0 +1,3 @@ +const foo = 1; + +export { foo, foo as bar }; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/main1.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/main1.js new file mode 100644 index 00000000000..d6dbbf4db77 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/main1.js @@ -0,0 +1 @@ +export { foo, bar } from './dep'; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-export-alias/main2.js b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/main2.js new file mode 100644 index 00000000000..a9aa169df94 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-export-alias/main2.js @@ -0,0 +1 @@ +export { bar } from './dep'; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_config.js new file mode 100644 index 00000000000..fd9c3b9b431 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_config.js @@ -0,0 +1,11 @@ +module.exports = { + description: 'entryFileNames pattern supported in combination with preserveModules', + options: { + strictDeprecations: false, + input: 'src/main.ts', + output: { + entryFileNames: 'entry-[name]-[format]-[ext][extname].js' + }, + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/entry-foo-amd-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/entry-foo-amd-ts.ts.js new file mode 100644 index 00000000000..2bc02b35588 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/entry-foo-amd-ts.ts.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var foo = 42; + + return foo; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/entry-main-amd-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/entry-main-amd-ts.ts.js new file mode 100644 index 00000000000..1018355bd77 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/entry-main-amd-ts.ts.js @@ -0,0 +1,12 @@ +define(['exports', './entry-foo-amd-ts.ts', './nested/entry-bar-amd-ts.ts', './nested/entry-baz-amd-ts.ts', './entry-no-ext-amd-'], function (exports, foo, bar, baz, noExt) { 'use strict'; + + + + exports.foo = foo; + exports.bar = bar; + exports.baz = baz; + exports.noExt = noExt; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/entry-no-ext-amd-.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/entry-no-ext-amd-.js new file mode 100644 index 00000000000..8e2da77223e --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/entry-no-ext-amd-.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var noExt = 'no-ext'; + + return noExt; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/nested/entry-bar-amd-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/nested/entry-bar-amd-ts.ts.js new file mode 100644 index 00000000000..cb3bfcd5d1d --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/nested/entry-bar-amd-ts.ts.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var bar = 'banana'; + + return bar; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/nested/entry-baz-amd-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/nested/entry-baz-amd-ts.ts.js new file mode 100644 index 00000000000..35018f30618 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/amd/nested/entry-baz-amd-ts.ts.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var baz = 'whatever'; + + return baz; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/entry-foo-cjs-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/entry-foo-cjs-ts.ts.js new file mode 100644 index 00000000000..476c8ac92d3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/entry-foo-cjs-ts.ts.js @@ -0,0 +1,5 @@ +'use strict'; + +var foo = 42; + +module.exports = foo; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/entry-main-cjs-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/entry-main-cjs-ts.ts.js new file mode 100644 index 00000000000..aff83e1b5d2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/entry-main-cjs-ts.ts.js @@ -0,0 +1,15 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var foo = require('./entry-foo-cjs-ts.ts.js'); +var bar = require('./nested/entry-bar-cjs-ts.ts.js'); +var baz = require('./nested/entry-baz-cjs-ts.ts.js'); +var noExt = require('./entry-no-ext-cjs-.js'); + + + +exports.foo = foo; +exports.bar = bar; +exports.baz = baz; +exports.noExt = noExt; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/entry-no-ext-cjs-.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/entry-no-ext-cjs-.js new file mode 100644 index 00000000000..5e9e9eb2cb5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/entry-no-ext-cjs-.js @@ -0,0 +1,5 @@ +'use strict'; + +var noExt = 'no-ext'; + +module.exports = noExt; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/nested/entry-bar-cjs-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/nested/entry-bar-cjs-ts.ts.js new file mode 100644 index 00000000000..f8f56e6fc51 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/nested/entry-bar-cjs-ts.ts.js @@ -0,0 +1,5 @@ +'use strict'; + +var bar = 'banana'; + +module.exports = bar; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/nested/entry-baz-cjs-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/nested/entry-baz-cjs-ts.ts.js new file mode 100644 index 00000000000..0ba506ad3eb --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/cjs/nested/entry-baz-cjs-ts.ts.js @@ -0,0 +1,5 @@ +'use strict'; + +var baz = 'whatever'; + +module.exports = baz; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/entry-foo-es-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/entry-foo-es-ts.ts.js new file mode 100644 index 00000000000..8ac2b2169a4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/entry-foo-es-ts.ts.js @@ -0,0 +1,3 @@ +var foo = 42; + +export default foo; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/entry-main-es-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/entry-main-es-ts.ts.js new file mode 100644 index 00000000000..341e9d48d9b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/entry-main-es-ts.ts.js @@ -0,0 +1,4 @@ +export { default as foo } from './entry-foo-es-ts.ts.js'; +export { default as bar } from './nested/entry-bar-es-ts.ts.js'; +export { default as baz } from './nested/entry-baz-es-ts.ts.js'; +export { default as noExt } from './entry-no-ext-es-.js'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/entry-no-ext-es-.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/entry-no-ext-es-.js new file mode 100644 index 00000000000..e630b7b5e9d --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/entry-no-ext-es-.js @@ -0,0 +1,3 @@ +var noExt = 'no-ext'; + +export default noExt; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/nested/entry-bar-es-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/nested/entry-bar-es-ts.ts.js new file mode 100644 index 00000000000..bbf65d4599d --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/nested/entry-bar-es-ts.ts.js @@ -0,0 +1,3 @@ +var bar = 'banana'; + +export default bar; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/nested/entry-baz-es-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/nested/entry-baz-es-ts.ts.js new file mode 100644 index 00000000000..03a3023d32b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/es/nested/entry-baz-es-ts.ts.js @@ -0,0 +1,3 @@ +var baz = 'whatever'; + +export default baz; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/entry-foo-system-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/entry-foo-system-ts.ts.js new file mode 100644 index 00000000000..81b45b772a8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/entry-foo-system-ts.ts.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var foo = exports('default', 42); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/entry-main-system-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/entry-main-system-ts.ts.js new file mode 100644 index 00000000000..22b35a8d704 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/entry-main-system-ts.ts.js @@ -0,0 +1,19 @@ +System.register(['./entry-foo-system-ts.ts.js', './nested/entry-bar-system-ts.ts.js', './nested/entry-baz-system-ts.ts.js', './entry-no-ext-system-.js'], function (exports) { + 'use strict'; + return { + setters: [function (module) { + exports('foo', module.default); + }, function (module) { + exports('bar', module.default); + }, function (module) { + exports('baz', module.default); + }, function (module) { + exports('noExt', module.default); + }], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/entry-no-ext-system-.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/entry-no-ext-system-.js new file mode 100644 index 00000000000..91546e66d5b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/entry-no-ext-system-.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var noExt = exports('default', 'no-ext'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/nested/entry-bar-system-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/nested/entry-bar-system-ts.ts.js new file mode 100644 index 00000000000..5ef23f15879 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/nested/entry-bar-system-ts.ts.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var bar = exports('default', 'banana'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/nested/entry-baz-system-ts.ts.js b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/nested/entry-baz-system-ts.ts.js new file mode 100644 index 00000000000..a0526b56624 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/_expected/system/nested/entry-baz-system-ts.ts.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var baz = exports('default', 'whatever'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/foo.ts b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/foo.ts new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/foo.ts @@ -0,0 +1 @@ +export default 42; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/main.ts b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/main.ts new file mode 100644 index 00000000000..3f169c8f476 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/main.ts @@ -0,0 +1,8 @@ +// @ts-ignore +export { default as foo } from './foo.ts'; +// @ts-ignore +export { default as bar } from './nested/bar.ts'; +// @ts-ignore +export { default as baz } from './nested/baz.ts'; +// @ts-ignore +export { default as noExt } from './no-ext'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/nested/bar.ts b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/nested/bar.ts new file mode 100644 index 00000000000..7d79d5a99a8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/nested/bar.ts @@ -0,0 +1 @@ +export default 'banana'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/nested/baz.ts b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/nested/baz.ts new file mode 100644 index 00000000000..6d70feca8ec --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/nested/baz.ts @@ -0,0 +1 @@ +export default 'whatever'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/no-ext b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/no-ext new file mode 100644 index 00000000000..a59381f7298 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-filename-pattern/src/no-ext @@ -0,0 +1 @@ +export default 'no-ext' diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_config.js new file mode 100644 index 00000000000..6ffd681d55c --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_config.js @@ -0,0 +1,22 @@ +module.exports = { + description: 'Preserve modules id case sensitive', + options: { + strictDeprecations: false, + input: 'main.js', + preserveModules: true, + plugins: [ + { + resolveId(id) { + if (id.toLowerCase().includes('one')) { + return id; + } + }, + load(id) { + if (id.toLowerCase().includes('one')) { + return `export default '${id.replace('\0', '')}'`; + } + } + } + ] + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/amd/_virtual/_One1.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/amd/_virtual/_One1.js new file mode 100644 index 00000000000..0383829b24e --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/amd/_virtual/_One1.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var c = 'One1.js'; + + return c; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/amd/_virtual/_One2.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/amd/_virtual/_One2.js new file mode 100644 index 00000000000..1febaba2ef7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/amd/_virtual/_One2.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var b = 'One.js'; + + return b; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/amd/_virtual/_one.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/amd/_virtual/_one.js new file mode 100644 index 00000000000..469b63f9f86 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/amd/_virtual/_one.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var a = 'one.js'; + + return a; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/amd/main.js new file mode 100644 index 00000000000..803eecb1652 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/amd/main.js @@ -0,0 +1,5 @@ +define(['./_virtual/_one', './_virtual/_One2', './_virtual/_One1'], function (_one, _One, _One1) { 'use strict'; + + window.APP = { a: _one, b: _One, c: _One1 }; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/cjs/_virtual/_One1.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/cjs/_virtual/_One1.js new file mode 100644 index 00000000000..2e2081c7b39 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/cjs/_virtual/_One1.js @@ -0,0 +1,5 @@ +'use strict'; + +var c = 'One1.js'; + +module.exports = c; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/cjs/_virtual/_One2.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/cjs/_virtual/_One2.js new file mode 100644 index 00000000000..94e5e6eebdb --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/cjs/_virtual/_One2.js @@ -0,0 +1,5 @@ +'use strict'; + +var b = 'One.js'; + +module.exports = b; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/cjs/_virtual/_one.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/cjs/_virtual/_one.js new file mode 100644 index 00000000000..04b4a696e73 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/cjs/_virtual/_one.js @@ -0,0 +1,5 @@ +'use strict'; + +var a = 'one.js'; + +module.exports = a; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/cjs/main.js new file mode 100644 index 00000000000..d113352518b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/cjs/main.js @@ -0,0 +1,7 @@ +'use strict'; + +var _one = require('./_virtual/_one.js'); +var _One = require('./_virtual/_One2.js'); +var _One1 = require('./_virtual/_One1.js'); + +window.APP = { a: _one, b: _One, c: _One1 }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/es/_virtual/_One1.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/es/_virtual/_One1.js new file mode 100644 index 00000000000..3ea816df737 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/es/_virtual/_One1.js @@ -0,0 +1,3 @@ +var c = 'One1.js'; + +export default c; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/es/_virtual/_One2.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/es/_virtual/_One2.js new file mode 100644 index 00000000000..d889775b3d6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/es/_virtual/_One2.js @@ -0,0 +1,3 @@ +var b = 'One.js'; + +export default b; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/es/_virtual/_one.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/es/_virtual/_one.js new file mode 100644 index 00000000000..615c3de0ca9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/es/_virtual/_one.js @@ -0,0 +1,3 @@ +var a = 'one.js'; + +export default a; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/es/main.js new file mode 100644 index 00000000000..e7a751f410a --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/es/main.js @@ -0,0 +1,5 @@ +import a from './_virtual/_one.js'; +import b from './_virtual/_One2.js'; +import c from './_virtual/_One1.js'; + +window.APP = { a, b, c }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/system/_virtual/_One1.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/system/_virtual/_One1.js new file mode 100644 index 00000000000..eb4e015bab5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/system/_virtual/_One1.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var c = exports('default', 'One1.js'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/system/_virtual/_One2.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/system/_virtual/_One2.js new file mode 100644 index 00000000000..04b90908308 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/system/_virtual/_One2.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var b = exports('default', 'One.js'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/system/_virtual/_one.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/system/_virtual/_one.js new file mode 100644 index 00000000000..f6c4ac9f9fd --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/system/_virtual/_one.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var a = exports('default', 'one.js'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/system/main.js new file mode 100644 index 00000000000..17303445bb0 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/_expected/system/main.js @@ -0,0 +1,18 @@ +System.register(['./_virtual/_one.js', './_virtual/_One2.js', './_virtual/_One1.js'], function () { + 'use strict'; + var a, b, c; + return { + setters: [function (module) { + a = module.default; + }, function (module) { + b = module.default; + }, function (module) { + c = module.default; + }], + execute: function () { + + window.APP = { a, b, c }; + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/main.js b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/main.js new file mode 100644 index 00000000000..49a5f34ffef --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-id-case-sensitive/main.js @@ -0,0 +1,5 @@ +import a from '\0one.js'; +import b from '\0One.js'; +import c from '\0One1.js'; + +window.APP = { a, b, c }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_config.js new file mode 100644 index 00000000000..b79256cfb0b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_config.js @@ -0,0 +1,11 @@ +module.exports = { + description: 'respects "named" export mode in all chunks when preserving modules', + options: { + strictDeprecations: false, + input: 'main.js', + preserveModules: true, + output: { + exports: 'named' + } + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/amd/default.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/amd/default.js new file mode 100644 index 00000000000..e8359fc2e7b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/amd/default.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + var foo = 'default'; + + exports.default = foo; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/amd/main.js new file mode 100644 index 00000000000..929d5812cfc --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/amd/main.js @@ -0,0 +1,12 @@ +define(['require', 'exports', './default', './named'], function (require, exports, _default, named) { 'use strict'; + + console.log(_default.default, named.value); + + new Promise(function (resolve, reject) { require(['./default'], resolve, reject) }).then(result => console.log(result.default)); + new Promise(function (resolve, reject) { require(['./named'], resolve, reject) }).then(result => console.log(result.value)); + + exports.default = _default.default; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/amd/named.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/amd/named.js new file mode 100644 index 00000000000..37e6d25bd85 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/amd/named.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + const value = 'named'; + + exports.value = value; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/cjs/default.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/cjs/default.js new file mode 100644 index 00000000000..bc9cb9bdcb9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/cjs/default.js @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var foo = 'default'; + +exports.default = foo; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/cjs/main.js new file mode 100644 index 00000000000..9ff3162badf --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/cjs/main.js @@ -0,0 +1,13 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var _default = require('./default.js'); +var named = require('./named.js'); + +console.log(_default.default, named.value); + +Promise.resolve().then(function () { return require('./default.js'); }).then(result => console.log(result.default)); +Promise.resolve().then(function () { return require('./named.js'); }).then(result => console.log(result.value)); + +exports.default = _default.default; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/cjs/named.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/cjs/named.js new file mode 100644 index 00000000000..491f8569447 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/cjs/named.js @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const value = 'named'; + +exports.value = value; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/es/default.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/es/default.js new file mode 100644 index 00000000000..97dcda8cdc9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/es/default.js @@ -0,0 +1,3 @@ +var foo = 'default'; + +export default foo; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/es/main.js new file mode 100644 index 00000000000..1db891a835f --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/es/main.js @@ -0,0 +1,8 @@ +import foo from './default.js'; +export { default } from './default.js'; +import { value } from './named.js'; + +console.log(foo, value); + +import('./default.js').then(result => console.log(result.default)); +import('./named.js').then(result => console.log(result.value)); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/es/named.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/es/named.js new file mode 100644 index 00000000000..f632590076b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/es/named.js @@ -0,0 +1,3 @@ +const value = 'named'; + +export { value }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/system/default.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/system/default.js new file mode 100644 index 00000000000..0505d3144dd --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/system/default.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var foo = exports('default', 'default'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/system/main.js new file mode 100644 index 00000000000..12e707aee57 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/system/main.js @@ -0,0 +1,20 @@ +System.register(['./default.js', './named.js'], function (exports, module) { + 'use strict'; + var foo, value; + return { + setters: [function (module) { + foo = module.default; + exports('default', module.default); + }, function (module) { + value = module.value; + }], + execute: function () { + + console.log(foo, value); + + module.import('./default.js').then(result => console.log(result.default)); + module.import('./named.js').then(result => console.log(result.value)); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/system/named.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/system/named.js new file mode 100644 index 00000000000..431654fc285 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/_expected/system/named.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const value = exports('value', 'named'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/default.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/default.js new file mode 100644 index 00000000000..413f601a377 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/default.js @@ -0,0 +1 @@ +export default 'default'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/main.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/main.js new file mode 100644 index 00000000000..72dc390d821 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/main.js @@ -0,0 +1,8 @@ +import foo from './default.js'; +import { value } from './named.js'; +console.log(foo, value); + +export { default } from './default.js'; + +import('./default').then(result => console.log(result.default)); +import('./named').then(result => console.log(result.value)); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/named.js b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/named.js new file mode 100644 index 00000000000..a5c403fef99 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-named-export-mode/named.js @@ -0,0 +1 @@ +export const value = 'named'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_config.js new file mode 100644 index 00000000000..22ec30f4ec3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'confirm exports are deconflicted when exporting nested index aliases', + options: { + strictDeprecations: false, + input: 'main.js', + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/amd/main.js new file mode 100644 index 00000000000..12dccf71f8f --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/amd/main.js @@ -0,0 +1,10 @@ +define(['exports', './module-a/v1/index', './module-b/v1/index'], function (exports, index, index$1) { 'use strict'; + + + + exports.ModuleA_V1 = index; + exports.ModuleB_V1 = index$1; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/amd/module-a/v1/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/amd/module-a/v1/index.js new file mode 100644 index 00000000000..2c1cbb5248d --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/amd/module-a/v1/index.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + const TEST_MODULE_A = 'A'; + + exports.TEST_MODULE_A = TEST_MODULE_A; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/amd/module-b/v1/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/amd/module-b/v1/index.js new file mode 100644 index 00000000000..b56f633d9fb --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/amd/module-b/v1/index.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + const TEST_MODULE_B = 'A'; + + exports.TEST_MODULE_B = TEST_MODULE_B; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/cjs/main.js new file mode 100644 index 00000000000..632ce47b9ae --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/cjs/main.js @@ -0,0 +1,11 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var index = require('./module-a/v1/index.js'); +var index$1 = require('./module-b/v1/index.js'); + + + +exports.ModuleA_V1 = index; +exports.ModuleB_V1 = index$1; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/cjs/module-a/v1/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/cjs/module-a/v1/index.js new file mode 100644 index 00000000000..a8ab4802133 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/cjs/module-a/v1/index.js @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const TEST_MODULE_A = 'A'; + +exports.TEST_MODULE_A = TEST_MODULE_A; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/cjs/module-b/v1/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/cjs/module-b/v1/index.js new file mode 100644 index 00000000000..2c2b23c7d63 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/cjs/module-b/v1/index.js @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const TEST_MODULE_B = 'A'; + +exports.TEST_MODULE_B = TEST_MODULE_B; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/es/main.js new file mode 100644 index 00000000000..537dda397a8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/es/main.js @@ -0,0 +1,4 @@ +import * as index from './module-a/v1/index.js'; +export { index as ModuleA_V1 }; +import * as index$1 from './module-b/v1/index.js'; +export { index$1 as ModuleB_V1 }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/es/module-a/v1/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/es/module-a/v1/index.js new file mode 100644 index 00000000000..a8158380482 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/es/module-a/v1/index.js @@ -0,0 +1,3 @@ +const TEST_MODULE_A = 'A'; + +export { TEST_MODULE_A }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/es/module-b/v1/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/es/module-b/v1/index.js new file mode 100644 index 00000000000..338a266e13c --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/es/module-b/v1/index.js @@ -0,0 +1,3 @@ +const TEST_MODULE_B = 'A'; + +export { TEST_MODULE_B }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/system/main.js new file mode 100644 index 00000000000..69423415aa6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/system/main.js @@ -0,0 +1,15 @@ +System.register(['./module-a/v1/index.js', './module-b/v1/index.js'], function (exports) { + 'use strict'; + return { + setters: [function (module) { + exports('ModuleA_V1', module); + }, function (module) { + exports('ModuleB_V1', module); + }], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/system/module-a/v1/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/system/module-a/v1/index.js new file mode 100644 index 00000000000..400a5460fc9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/system/module-a/v1/index.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const TEST_MODULE_A = exports('TEST_MODULE_A', 'A'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/system/module-b/v1/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/system/module-b/v1/index.js new file mode 100644 index 00000000000..337b556bb25 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/_expected/system/module-b/v1/index.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const TEST_MODULE_B = exports('TEST_MODULE_B', 'A'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/main.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/main.js new file mode 100644 index 00000000000..6322b946820 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/main.js @@ -0,0 +1,2 @@ +export * from './module-a/index' +export * from './module-b/index' \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/module-a/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/module-a/index.js new file mode 100644 index 00000000000..6bd359daf1f --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/module-a/index.js @@ -0,0 +1,3 @@ +import * as ModuleA_V1 from './v1/index' + +export { ModuleA_V1 } \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/module-a/v1/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/module-a/v1/index.js new file mode 100644 index 00000000000..8bc392c756a --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/module-a/v1/index.js @@ -0,0 +1 @@ +export const TEST_MODULE_A = 'A' \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/module-b/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/module-b/index.js new file mode 100644 index 00000000000..f9b363cdf9f --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/module-b/index.js @@ -0,0 +1,3 @@ +import * as ModuleB_V1 from './v1/index' + +export { ModuleB_V1 } \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/module-b/v1/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/module-b/v1/index.js new file mode 100644 index 00000000000..1d751964f68 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-barrel-es-export/module-b/v1/index.js @@ -0,0 +1 @@ +export const TEST_MODULE_B = 'A' \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_config.js new file mode 100644 index 00000000000..291753db080 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'confirm exports are preserved when exporting a module', + options: { + strictDeprecations: false, + input: 'main.js', + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/amd/inner/more_inner/something.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/amd/inner/more_inner/something.js new file mode 100644 index 00000000000..138d9ba9e40 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/amd/inner/more_inner/something.js @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + const Something = 'Hello World'; + + exports.Something = Something; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/amd/inner/some_effect.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/amd/inner/some_effect.js new file mode 100644 index 00000000000..621699a15d1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/amd/inner/some_effect.js @@ -0,0 +1,5 @@ +define(function () { 'use strict'; + + console.log('side-effect'); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/amd/main.js new file mode 100644 index 00000000000..c89b17c4c11 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/amd/main.js @@ -0,0 +1,9 @@ +define(['exports', './inner/more_inner/something', './inner/some_effect'], function (exports, something, some_effect) { 'use strict'; + + + + exports.Something = something.Something; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/cjs/inner/more_inner/something.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/cjs/inner/more_inner/something.js new file mode 100644 index 00000000000..32f3040b7c0 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/cjs/inner/more_inner/something.js @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const Something = 'Hello World'; + +exports.Something = Something; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/cjs/inner/some_effect.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/cjs/inner/some_effect.js new file mode 100644 index 00000000000..28e48ebec94 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/cjs/inner/some_effect.js @@ -0,0 +1,3 @@ +'use strict'; + +console.log('side-effect'); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/cjs/main.js new file mode 100644 index 00000000000..ffa1d0bc5bb --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/cjs/main.js @@ -0,0 +1,10 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var something = require('./inner/more_inner/something.js'); +require('./inner/some_effect.js'); + + + +exports.Something = something.Something; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/es/inner/more_inner/something.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/es/inner/more_inner/something.js new file mode 100644 index 00000000000..636a4132444 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/es/inner/more_inner/something.js @@ -0,0 +1,3 @@ +const Something = 'Hello World'; + +export { Something }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/es/inner/some_effect.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/es/inner/some_effect.js new file mode 100644 index 00000000000..4ca9b41c411 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/es/inner/some_effect.js @@ -0,0 +1 @@ +console.log('side-effect'); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/es/main.js new file mode 100644 index 00000000000..efa908a5a5b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/es/main.js @@ -0,0 +1,2 @@ +export { Something } from './inner/more_inner/something.js'; +import './inner/some_effect.js'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/system/inner/more_inner/something.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/system/inner/more_inner/something.js new file mode 100644 index 00000000000..1b4bba21314 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/system/inner/more_inner/something.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const Something = exports('Something', 'Hello World'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/system/inner/some_effect.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/system/inner/some_effect.js new file mode 100644 index 00000000000..19dd3ec79bd --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/system/inner/some_effect.js @@ -0,0 +1,10 @@ +System.register([], function () { + 'use strict'; + return { + execute: function () { + + console.log('side-effect'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/system/main.js new file mode 100644 index 00000000000..16e27681d9a --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/_expected/system/main.js @@ -0,0 +1,13 @@ +System.register(['./inner/more_inner/something.js', './inner/some_effect.js'], function (exports) { + 'use strict'; + return { + setters: [function (module) { + exports('Something', module.Something); + }, function () {}], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/inner/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/inner/index.js new file mode 100644 index 00000000000..b46f14091cf --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/inner/index.js @@ -0,0 +1,2 @@ +export * from './more_inner/index'; +import './some_effect'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/inner/more_inner/index.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/inner/more_inner/index.js new file mode 100644 index 00000000000..93e297c24fb --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/inner/more_inner/index.js @@ -0,0 +1 @@ +export * from './something'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/inner/more_inner/something.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/inner/more_inner/something.js new file mode 100644 index 00000000000..60e3455d002 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/inner/more_inner/something.js @@ -0,0 +1 @@ +export const Something = 'Hello World'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/inner/some_effect.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/inner/some_effect.js new file mode 100644 index 00000000000..4ca9b41c411 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/inner/some_effect.js @@ -0,0 +1 @@ +console.log('side-effect'); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-nested-export/main.js b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/main.js new file mode 100644 index 00000000000..ee0c7608365 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-nested-export/main.js @@ -0,0 +1 @@ +export * from './inner/index'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_config.js new file mode 100644 index 00000000000..157659436ee --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'imports and exports of non-entry points are tracked', + options: { + strictDeprecations: false, + input: 'main.js', + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/amd/dep2.js b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/amd/dep2.js new file mode 100644 index 00000000000..16210f80f24 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/amd/dep2.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + function foo() {} + + return foo; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/amd/main.js new file mode 100644 index 00000000000..085588168a4 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/amd/main.js @@ -0,0 +1,7 @@ +define(['./dep2'], function (dep2) { 'use strict'; + + + + return dep2; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/cjs/dep2.js b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/cjs/dep2.js new file mode 100644 index 00000000000..d356914dcc3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/cjs/dep2.js @@ -0,0 +1,5 @@ +'use strict'; + +function foo() {} + +module.exports = foo; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/cjs/main.js new file mode 100644 index 00000000000..663b040c9e7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/cjs/main.js @@ -0,0 +1,7 @@ +'use strict'; + +var dep2 = require('./dep2.js'); + + + +module.exports = dep2; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/es/dep2.js b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/es/dep2.js new file mode 100644 index 00000000000..e39ccfc8db2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/es/dep2.js @@ -0,0 +1,3 @@ +function foo() {} + +export default foo; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/es/main.js new file mode 100644 index 00000000000..845c1582956 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/es/main.js @@ -0,0 +1,2 @@ +import foo from './dep2.js'; +export { default } from './dep2.js'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/system/dep2.js b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/system/dep2.js new file mode 100644 index 00000000000..eb88d79aeda --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/system/dep2.js @@ -0,0 +1,12 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + exports('default', foo); + + function foo() {} + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/system/main.js new file mode 100644 index 00000000000..8f2d06a8f51 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/_expected/system/main.js @@ -0,0 +1,15 @@ +System.register(['./dep2.js'], function (exports) { + 'use strict'; + var foo; + return { + setters: [function (module) { + foo = module.default; + exports('default', module.default); + }], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/dep1.js b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/dep1.js new file mode 100644 index 00000000000..2c5a157d2d8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/dep1.js @@ -0,0 +1 @@ +export { default } from './dep2'; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/dep2.js b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/dep2.js new file mode 100644 index 00000000000..a5e4ff3389d --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/dep2.js @@ -0,0 +1 @@ +export default function() {}; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/main.js b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/main.js new file mode 100644 index 00000000000..24640f29f7f --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-non-entry-imports/main.js @@ -0,0 +1,3 @@ +import foo from './dep1'; + +export default foo; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_config.js new file mode 100644 index 00000000000..19e53c11fe1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_config.js @@ -0,0 +1,9 @@ +module.exports = { + description: + 'correctly resolves imports via a proxy module as direct imports when preserving modules', + options: { + strictDeprecations: false, + preserveModules: true, + external: 'external' + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/amd/main.js new file mode 100644 index 00000000000..44f6509d271 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/amd/main.js @@ -0,0 +1,8 @@ +define(['external'], function (path) { 'use strict'; + + path = path && Object.prototype.hasOwnProperty.call(path, 'default') ? path['default'] : path; + + console.log(path.normalize('foo\\bar')); + console.log(path.normalize('foo\\bar')); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/amd/proxy.js b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/amd/proxy.js new file mode 100644 index 00000000000..5635775aa4b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/amd/proxy.js @@ -0,0 +1,9 @@ +define(['external'], function (path) { 'use strict'; + + path = path && Object.prototype.hasOwnProperty.call(path, 'default') ? path['default'] : path; + + + + return path; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/cjs/main.js new file mode 100644 index 00000000000..654e8af8d93 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/cjs/main.js @@ -0,0 +1,8 @@ +'use strict'; + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var path = _interopDefault(require('external')); + +console.log(path.normalize('foo\\bar')); +console.log(path.normalize('foo\\bar')); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/cjs/proxy.js b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/cjs/proxy.js new file mode 100644 index 00000000000..d19101d4b40 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/cjs/proxy.js @@ -0,0 +1,9 @@ +'use strict'; + +function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; } + +var path = _interopDefault(require('external')); + + + +module.exports = path; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/es/main.js new file mode 100644 index 00000000000..ce092ae39e2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/es/main.js @@ -0,0 +1,4 @@ +import path$1 from 'external'; + +console.log(path$1.normalize('foo\\bar')); +console.log(path$1.normalize('foo\\bar')); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/es/proxy.js b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/es/proxy.js new file mode 100644 index 00000000000..5e9a06a041a --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/es/proxy.js @@ -0,0 +1,2 @@ +import path$1 from 'external'; +export { default } from 'external'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/system/main.js new file mode 100644 index 00000000000..cdb1f31d2d8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/system/main.js @@ -0,0 +1,15 @@ +System.register(['external'], function () { + 'use strict'; + var path; + return { + setters: [function (module) { + path = module.default; + }], + execute: function () { + + console.log(path.normalize('foo\\bar')); + console.log(path.normalize('foo\\bar')); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/system/proxy.js b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/system/proxy.js new file mode 100644 index 00000000000..131f0eac764 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/_expected/system/proxy.js @@ -0,0 +1,15 @@ +System.register(['external'], function (exports) { + 'use strict'; + var path; + return { + setters: [function (module) { + path = module.default; + exports('default', module.default); + }], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/main.js b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/main.js new file mode 100644 index 00000000000..288bd4a163c --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/main.js @@ -0,0 +1,5 @@ +import path from 'external'; +import proxyPath from './proxy'; + +console.log(path.normalize('foo\\bar')); +console.log(proxyPath.normalize('foo\\bar')); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/proxy.js b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/proxy.js new file mode 100644 index 00000000000..4635dc5b4a2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-proxy-import/proxy.js @@ -0,0 +1,2 @@ +import path from 'external'; +export default path; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_config.js new file mode 100644 index 00000000000..e71eaf513aa --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'change the module destination', + options: { + strictDeprecations: false, + input: 'src/lib/main.js', + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/amd/dep.js b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/amd/dep.js new file mode 100644 index 00000000000..93365a06219 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/amd/dep.js @@ -0,0 +1,11 @@ +define(['exports'], function (exports) { 'use strict'; + + function fn () { + console.log('dep fn'); + } + + exports.fn = fn; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/amd/lib/main.js b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/amd/lib/main.js new file mode 100644 index 00000000000..ff8eacced99 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/amd/lib/main.js @@ -0,0 +1,11 @@ +define(['../dep'], function (dep) { 'use strict'; + + class Main { + constructor () { + dep.fn(); + } + } + + return Main; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/cjs/dep.js b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/cjs/dep.js new file mode 100644 index 00000000000..b67a1e41d97 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/cjs/dep.js @@ -0,0 +1,9 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function fn () { + console.log('dep fn'); +} + +exports.fn = fn; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/cjs/lib/main.js b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/cjs/lib/main.js new file mode 100644 index 00000000000..fb6e31f3abc --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/cjs/lib/main.js @@ -0,0 +1,11 @@ +'use strict'; + +var dep = require('../dep.js'); + +class Main { + constructor () { + dep.fn(); + } +} + +module.exports = Main; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/es/dep.js b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/es/dep.js new file mode 100644 index 00000000000..bfe925a46ac --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/es/dep.js @@ -0,0 +1,5 @@ +function fn () { + console.log('dep fn'); +} + +export { fn }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/es/lib/main.js b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/es/lib/main.js new file mode 100644 index 00000000000..6285f240de1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/es/lib/main.js @@ -0,0 +1,9 @@ +import { fn } from '../dep.js'; + +class Main { + constructor () { + fn(); + } +} + +export default Main; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/system/dep.js b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/system/dep.js new file mode 100644 index 00000000000..3228f5b2991 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/system/dep.js @@ -0,0 +1,14 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + exports('fn', fn); + + function fn () { + console.log('dep fn'); + } + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/system/lib/main.js b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/system/lib/main.js new file mode 100644 index 00000000000..2c8238dca02 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/_expected/system/lib/main.js @@ -0,0 +1,18 @@ +System.register(['../dep.js'], function (exports) { + 'use strict'; + var fn; + return { + setters: [function (module) { + fn = module.fn; + }], + execute: function () { + + class Main { + constructor () { + fn(); + } + } exports('default', Main); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/src/dep.js b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/src/dep.js new file mode 100644 index 00000000000..b725c96e30d --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/src/dep.js @@ -0,0 +1,3 @@ +export function fn () { + console.log('dep fn'); +} \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/src/lib/main.js b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/src/lib/main.js new file mode 100644 index 00000000000..a8f1f1403a1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-reaching-outside/src/lib/main.js @@ -0,0 +1,7 @@ +import { fn } from '../dep'; + +export default class Main { + constructor () { + fn(); + } +} \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_config.js new file mode 100644 index 00000000000..c79966da224 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_config.js @@ -0,0 +1,27 @@ +const path = require('path'); + +module.exports = { + description: 'scriptified assets have extension in preserveModules output filename', + options: { + strictDeprecations: false, + input: 'src/main.js', + preserveModules: true, + plugins: [ + { + name: 'str-num-plugin', + transform(code, id) { + switch (path.extname(id)) { + case '.num': + return { code: `export default ${code.trim()}` }; + case '.str': + return { code: `export default "${code.trim()}"` }; + case '': + return { code: 'export default "COULDN\'T TRANSFORM"' }; + default: + return null; + } + } + } + ] + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/amd/answer.num.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/amd/answer.num.js new file mode 100644 index 00000000000..66a5b0c010f --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/amd/answer.num.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var answer = 42; + + return answer; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/amd/lorem.str.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/amd/lorem.str.js new file mode 100644 index 00000000000..8aeeca012a0 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/amd/lorem.str.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; + + return lorem; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/amd/main.js new file mode 100644 index 00000000000..889e72fdb24 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/amd/main.js @@ -0,0 +1,11 @@ +define(['exports', './answer.num', './lorem.str', './no-ext'], function (exports, answer, lorem, noExt) { 'use strict'; + + + + exports.answer = answer; + exports.lorem = lorem; + exports.noExt = noExt; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/amd/no-ext.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/amd/no-ext.js new file mode 100644 index 00000000000..b60c10d9158 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/amd/no-ext.js @@ -0,0 +1,7 @@ +define(function () { 'use strict'; + + var noExt = "COULDN'T TRANSFORM"; + + return noExt; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/cjs/answer.num.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/cjs/answer.num.js new file mode 100644 index 00000000000..afe78ce4015 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/cjs/answer.num.js @@ -0,0 +1,5 @@ +'use strict'; + +var answer = 42; + +module.exports = answer; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/cjs/lorem.str.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/cjs/lorem.str.js new file mode 100644 index 00000000000..aa3ea036c2f --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/cjs/lorem.str.js @@ -0,0 +1,5 @@ +'use strict'; + +var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; + +module.exports = lorem; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/cjs/main.js new file mode 100644 index 00000000000..0c13700934e --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/cjs/main.js @@ -0,0 +1,13 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var answer = require('./answer.num.js'); +var lorem = require('./lorem.str.js'); +var noExt = require('./no-ext.js'); + + + +exports.answer = answer; +exports.lorem = lorem; +exports.noExt = noExt; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/cjs/no-ext.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/cjs/no-ext.js new file mode 100644 index 00000000000..912e8df3bfe --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/cjs/no-ext.js @@ -0,0 +1,5 @@ +'use strict'; + +var noExt = "COULDN'T TRANSFORM"; + +module.exports = noExt; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/es/answer.num.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/es/answer.num.js new file mode 100644 index 00000000000..b91051d4a13 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/es/answer.num.js @@ -0,0 +1,3 @@ +var answer = 42; + +export default answer; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/es/lorem.str.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/es/lorem.str.js new file mode 100644 index 00000000000..64a054f651b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/es/lorem.str.js @@ -0,0 +1,3 @@ +var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; + +export default lorem; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/es/main.js new file mode 100644 index 00000000000..76d97e13ffd --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/es/main.js @@ -0,0 +1,3 @@ +export { default as answer } from './answer.num.js'; +export { default as lorem } from './lorem.str.js'; +export { default as noExt } from './no-ext.js'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/es/no-ext.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/es/no-ext.js new file mode 100644 index 00000000000..b1b723a7068 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/es/no-ext.js @@ -0,0 +1,3 @@ +var noExt = "COULDN'T TRANSFORM"; + +export default noExt; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/system/answer.num.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/system/answer.num.js new file mode 100644 index 00000000000..e897f1a3be2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/system/answer.num.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var answer = exports('default', 42); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/system/lorem.str.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/system/lorem.str.js new file mode 100644 index 00000000000..7ebf110f98b --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/system/lorem.str.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var lorem = exports('default', "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/system/main.js new file mode 100644 index 00000000000..57340411039 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/system/main.js @@ -0,0 +1,17 @@ +System.register(['./answer.num.js', './lorem.str.js', './no-ext.js'], function (exports) { + 'use strict'; + return { + setters: [function (module) { + exports('answer', module.default); + }, function (module) { + exports('lorem', module.default); + }, function (module) { + exports('noExt', module.default); + }], + execute: function () { + + + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/system/no-ext.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/system/no-ext.js new file mode 100644 index 00000000000..bd0ec5a3c61 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/_expected/system/no-ext.js @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + var noExt = exports('default', "COULDN'T TRANSFORM"); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/src/answer.num b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/src/answer.num new file mode 100644 index 00000000000..d81cc0710eb --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/src/answer.num @@ -0,0 +1 @@ +42 diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/src/lorem.str b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/src/lorem.str new file mode 100644 index 00000000000..1b376877f43 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/src/lorem.str @@ -0,0 +1 @@ +Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/src/main.js b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/src/main.js new file mode 100644 index 00000000000..7ebfc9b7c45 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/src/main.js @@ -0,0 +1,3 @@ +export { default as answer } from './answer.num'; +export { default as lorem } from './lorem.str'; +export { default as noExt } from './no-ext'; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/src/no-ext b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/src/no-ext new file mode 100644 index 00000000000..ec25b34dbc2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-scriptified-assets/src/no-ext @@ -0,0 +1 @@ +WHATEVER diff --git a/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_config.js new file mode 100644 index 00000000000..2c68b2aa9fc --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'single entry names file correctly', + options: { + strictDeprecations: false, + input: 'main.js', + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_expected/amd/main.js new file mode 100644 index 00000000000..799d8161ff5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_expected/amd/main.js @@ -0,0 +1,5 @@ +define(function () { 'use strict'; + + console.log(); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_expected/cjs/main.js new file mode 100644 index 00000000000..21c7c3af005 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_expected/cjs/main.js @@ -0,0 +1,3 @@ +'use strict'; + +console.log(); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_expected/es/main.js new file mode 100644 index 00000000000..b7bd4c88516 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_expected/es/main.js @@ -0,0 +1 @@ +console.log(); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_expected/system/main.js new file mode 100644 index 00000000000..9c717dc8ff3 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-single-entry/_expected/system/main.js @@ -0,0 +1,10 @@ +System.register([], function () { + 'use strict'; + return { + execute: function () { + + console.log(); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-single-entry/main.js b/test/chunking-form/samples/deprecated/preserve-modules-single-entry/main.js new file mode 100644 index 00000000000..13ae9bfeec7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-single-entry/main.js @@ -0,0 +1 @@ +console.log() \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_config.js b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_config.js new file mode 100644 index 00000000000..f9785b99872 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_config.js @@ -0,0 +1,23 @@ +module.exports = { + description: 'Generates actual files for virtual modules when preserving modules', + options: { + strictDeprecations: false, + input: 'main.js', + preserveModules: true, + plugins: [ + { + resolveId(id) { + if (id === '\0virtualModule') return id; + }, + load(id) { + if (id !== '\0virtualModule') return null; + return 'export const virtual = "Virtual!";\n'; + }, + transform(code, id) { + if (id === '\0virtualModule') return null; + return 'import {virtual} from "\0virtualModule";\n' + code; + } + } + ] + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule new file mode 100644 index 00000000000..e847f6c12b8 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/amd/_virtual/_virtualModule @@ -0,0 +1,9 @@ +define(['exports'], function (exports) { 'use strict'; + + const virtual = "Virtual!"; + + exports.virtual = virtual; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/amd/main.js b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/amd/main.js new file mode 100644 index 00000000000..452f5c4b435 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/amd/main.js @@ -0,0 +1,5 @@ +define(['./_virtual/_virtualModule'], function (_virtualModule) { 'use strict'; + + assert.equal(_virtualModule.virtual, 'Virtual!'); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule new file mode 100644 index 00000000000..3b40ebf67c2 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/_virtual/_virtualModule @@ -0,0 +1,7 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +const virtual = "Virtual!"; + +exports.virtual = virtual; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/main.js b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/main.js new file mode 100644 index 00000000000..c32672f1b85 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/cjs/main.js @@ -0,0 +1,5 @@ +'use strict'; + +var _virtualModule = require('./_virtual/_virtualModule'); + +assert.equal(_virtualModule.virtual, 'Virtual!'); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/_virtual/_virtualModule b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/_virtual/_virtualModule new file mode 100644 index 00000000000..2bada18c396 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/_virtual/_virtualModule @@ -0,0 +1,3 @@ +const virtual = "Virtual!"; + +export { virtual }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/main.js b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/main.js new file mode 100644 index 00000000000..6bb75abdf27 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/es/main.js @@ -0,0 +1,3 @@ +import { virtual } from './_virtual/_virtualModule'; + +assert.equal(virtual, 'Virtual!'); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/_virtual/_virtualModule b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/_virtual/_virtualModule new file mode 100644 index 00000000000..2281d70c5a9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/_virtual/_virtualModule @@ -0,0 +1,10 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + const virtual = exports('virtual', "Virtual!"); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/main.js b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/main.js new file mode 100644 index 00000000000..7b8b65e237d --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/_expected/system/main.js @@ -0,0 +1,14 @@ +System.register(['./_virtual/_virtualModule'], function () { + 'use strict'; + var virtual; + return { + setters: [function (module) { + virtual = module.virtual; + }], + execute: function () { + + assert.equal(virtual, 'Virtual!'); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/main.js b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/main.js new file mode 100644 index 00000000000..505982998fa --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules-virtual-modules/main.js @@ -0,0 +1 @@ +assert.equal(virtual, 'Virtual!'); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_config.js b/test/chunking-form/samples/deprecated/preserve-modules/_config.js new file mode 100644 index 00000000000..fb89b5a641c --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'Rewrite modules in-place', + options: { + strictDeprecations: false, + input: ['main1.js', 'main2.js'], + preserveModules: true + } +}; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/deps/dep1.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/deps/dep1.js new file mode 100644 index 00000000000..eb1b2814d87 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/deps/dep1.js @@ -0,0 +1,11 @@ +define(['exports'], function (exports) { 'use strict'; + + function fn () { + console.log('dep1 fn'); + } + + exports.fn = fn; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/deps/dep2.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/deps/dep2.js new file mode 100644 index 00000000000..2a152d376d9 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/deps/dep2.js @@ -0,0 +1,12 @@ +define(['exports', '../lib/lib2'], function (exports, lib2) { 'use strict'; + + function fn () { + lib2.fn(); + console.log('dep2 fn'); + } + + exports.fn = fn; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/deps/dep3.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/deps/dep3.js new file mode 100644 index 00000000000..bfc8f877c33 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/deps/dep3.js @@ -0,0 +1,12 @@ +define(['exports', '../lib/lib1'], function (exports, lib1) { 'use strict'; + + function fn () { + lib1.fn(); + console.log('dep3 fn'); + } + + exports.fn = fn; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/lib/lib1.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/lib/lib1.js new file mode 100644 index 00000000000..93c0a3a4169 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/lib/lib1.js @@ -0,0 +1,11 @@ +define(['exports'], function (exports) { 'use strict'; + + function fn () { + console.log('lib1 fn'); + } + + exports.fn = fn; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/lib/lib2.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/lib/lib2.js new file mode 100644 index 00000000000..8e8e2d17cdc --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/lib/lib2.js @@ -0,0 +1,11 @@ +define(['exports'], function (exports) { 'use strict'; + + function fn () { + console.log('lib2 fn'); + } + + exports.fn = fn; + + Object.defineProperty(exports, '__esModule', { value: true }); + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/main1.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/main1.js new file mode 100644 index 00000000000..70e5862bab7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/main1.js @@ -0,0 +1,12 @@ +define(['./deps/dep1', './deps/dep2'], function (dep1, dep2) { 'use strict'; + + class Main1 { + constructor () { + dep1.fn(); + dep2.fn(); + } + } + + return Main1; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/main2.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/main2.js new file mode 100644 index 00000000000..b9dd02ca10c --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/amd/main2.js @@ -0,0 +1,12 @@ +define(['./deps/dep2', './deps/dep3'], function (dep2, dep3) { 'use strict'; + + class Main2 { + constructor () { + dep3.fn(); + dep2.fn(); + } + } + + return Main2; + +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/deps/dep1.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/deps/dep1.js new file mode 100644 index 00000000000..94bfa086430 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/deps/dep1.js @@ -0,0 +1,9 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function fn () { + console.log('dep1 fn'); +} + +exports.fn = fn; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/deps/dep2.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/deps/dep2.js new file mode 100644 index 00000000000..a9f8fb62635 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/deps/dep2.js @@ -0,0 +1,12 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var lib2 = require('../lib/lib2.js'); + +function fn () { + lib2.fn(); + console.log('dep2 fn'); +} + +exports.fn = fn; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/deps/dep3.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/deps/dep3.js new file mode 100644 index 00000000000..eb901c61adc --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/deps/dep3.js @@ -0,0 +1,12 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +var lib1 = require('../lib/lib1.js'); + +function fn () { + lib1.fn(); + console.log('dep3 fn'); +} + +exports.fn = fn; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/lib/lib1.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/lib/lib1.js new file mode 100644 index 00000000000..135c3023fcc --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/lib/lib1.js @@ -0,0 +1,9 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function fn () { + console.log('lib1 fn'); +} + +exports.fn = fn; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/lib/lib2.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/lib/lib2.js new file mode 100644 index 00000000000..ee3ad249352 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/lib/lib2.js @@ -0,0 +1,9 @@ +'use strict'; + +Object.defineProperty(exports, '__esModule', { value: true }); + +function fn () { + console.log('lib2 fn'); +} + +exports.fn = fn; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/main1.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/main1.js new file mode 100644 index 00000000000..0181b38e214 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/main1.js @@ -0,0 +1,13 @@ +'use strict'; + +var dep1 = require('./deps/dep1.js'); +var dep2 = require('./deps/dep2.js'); + +class Main1 { + constructor () { + dep1.fn(); + dep2.fn(); + } +} + +module.exports = Main1; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/main2.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/main2.js new file mode 100644 index 00000000000..5078fc7854f --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/cjs/main2.js @@ -0,0 +1,13 @@ +'use strict'; + +var dep2 = require('./deps/dep2.js'); +var dep3 = require('./deps/dep3.js'); + +class Main2 { + constructor () { + dep3.fn(); + dep2.fn(); + } +} + +module.exports = Main2; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/deps/dep1.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/deps/dep1.js new file mode 100644 index 00000000000..34a5e9c11a5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/deps/dep1.js @@ -0,0 +1,5 @@ +function fn () { + console.log('dep1 fn'); +} + +export { fn }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/deps/dep2.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/deps/dep2.js new file mode 100644 index 00000000000..233b8235a07 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/deps/dep2.js @@ -0,0 +1,8 @@ +import { fn as fn$1 } from '../lib/lib2.js'; + +function fn () { + fn$1(); + console.log('dep2 fn'); +} + +export { fn }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/deps/dep3.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/deps/dep3.js new file mode 100644 index 00000000000..e01b47ef194 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/deps/dep3.js @@ -0,0 +1,8 @@ +import { fn as fn$1 } from '../lib/lib1.js'; + +function fn () { + fn$1(); + console.log('dep3 fn'); +} + +export { fn }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/lib/lib1.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/lib/lib1.js new file mode 100644 index 00000000000..0d869dbec7d --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/lib/lib1.js @@ -0,0 +1,5 @@ +function fn () { + console.log('lib1 fn'); +} + +export { fn }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/lib/lib2.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/lib/lib2.js new file mode 100644 index 00000000000..a6f4f0324f1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/lib/lib2.js @@ -0,0 +1,5 @@ +function fn () { + console.log('lib2 fn'); +} + +export { fn }; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/main1.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/main1.js new file mode 100644 index 00000000000..db71b463402 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/main1.js @@ -0,0 +1,11 @@ +import { fn } from './deps/dep1.js'; +import { fn as fn$1 } from './deps/dep2.js'; + +class Main1 { + constructor () { + fn(); + fn$1(); + } +} + +export default Main1; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/main2.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/main2.js new file mode 100644 index 00000000000..a3b4ef89ff7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/es/main2.js @@ -0,0 +1,11 @@ +import { fn as fn$1 } from './deps/dep2.js'; +import { fn } from './deps/dep3.js'; + +class Main2 { + constructor () { + fn(); + fn$1(); + } +} + +export default Main2; diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/deps/dep1.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/deps/dep1.js new file mode 100644 index 00000000000..813157baf2d --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/deps/dep1.js @@ -0,0 +1,14 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + exports('fn', fn); + + function fn () { + console.log('dep1 fn'); + } + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/deps/dep2.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/deps/dep2.js new file mode 100644 index 00000000000..e659b606bfb --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/deps/dep2.js @@ -0,0 +1,19 @@ +System.register(['../lib/lib2.js'], function (exports) { + 'use strict'; + var fn$1; + return { + setters: [function (module) { + fn$1 = module.fn; + }], + execute: function () { + + exports('fn', fn); + + function fn () { + fn$1(); + console.log('dep2 fn'); + } + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/deps/dep3.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/deps/dep3.js new file mode 100644 index 00000000000..bd88b3e2d36 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/deps/dep3.js @@ -0,0 +1,19 @@ +System.register(['../lib/lib1.js'], function (exports) { + 'use strict'; + var fn$1; + return { + setters: [function (module) { + fn$1 = module.fn; + }], + execute: function () { + + exports('fn', fn); + + function fn () { + fn$1(); + console.log('dep3 fn'); + } + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/lib/lib1.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/lib/lib1.js new file mode 100644 index 00000000000..744d84434d7 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/lib/lib1.js @@ -0,0 +1,14 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + exports('fn', fn); + + function fn () { + console.log('lib1 fn'); + } + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/lib/lib2.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/lib/lib2.js new file mode 100644 index 00000000000..b27f09d18bd --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/lib/lib2.js @@ -0,0 +1,14 @@ +System.register([], function (exports) { + 'use strict'; + return { + execute: function () { + + exports('fn', fn); + + function fn () { + console.log('lib2 fn'); + } + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/main1.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/main1.js new file mode 100644 index 00000000000..17f7ddb453e --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/main1.js @@ -0,0 +1,21 @@ +System.register(['./deps/dep1.js', './deps/dep2.js'], function (exports) { + 'use strict'; + var fn, fn$1; + return { + setters: [function (module) { + fn = module.fn; + }, function (module) { + fn$1 = module.fn; + }], + execute: function () { + + class Main1 { + constructor () { + fn(); + fn$1(); + } + } exports('default', Main1); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/main2.js b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/main2.js new file mode 100644 index 00000000000..4833f43826d --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/_expected/system/main2.js @@ -0,0 +1,21 @@ +System.register(['./deps/dep2.js', './deps/dep3.js'], function (exports) { + 'use strict'; + var fn$1, fn; + return { + setters: [function (module) { + fn$1 = module.fn; + }, function (module) { + fn = module.fn; + }], + execute: function () { + + class Main2 { + constructor () { + fn(); + fn$1(); + } + } exports('default', Main2); + + } + }; +}); diff --git a/test/chunking-form/samples/deprecated/preserve-modules/deps/dep1.js b/test/chunking-form/samples/deprecated/preserve-modules/deps/dep1.js new file mode 100644 index 00000000000..b67d0bbb2c1 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/deps/dep1.js @@ -0,0 +1,3 @@ +export function fn () { + console.log('dep1 fn'); +} \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules/deps/dep2.js b/test/chunking-form/samples/deprecated/preserve-modules/deps/dep2.js new file mode 100644 index 00000000000..031534c44bb --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/deps/dep2.js @@ -0,0 +1,6 @@ +import { fn as libfn } from '../lib/lib2.js'; + +export function fn () { + libfn(); + console.log('dep2 fn'); +} \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules/deps/dep3.js b/test/chunking-form/samples/deprecated/preserve-modules/deps/dep3.js new file mode 100644 index 00000000000..0ebd9320bc6 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/deps/dep3.js @@ -0,0 +1,8 @@ +import { fn as libfn, treeshaked } from '../lib/lib1.js'; + +export function fn () { + libfn(); + console.log('dep3 fn'); +} + +export default treeshaked; \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules/lib/lib1.js b/test/chunking-form/samples/deprecated/preserve-modules/lib/lib1.js new file mode 100644 index 00000000000..5ccf83b357e --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/lib/lib1.js @@ -0,0 +1,7 @@ +export function fn () { + console.log('lib1 fn'); +} + +export function treeshaked () { + console.log('this is tree shaken!'); +} \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules/lib/lib2.js b/test/chunking-form/samples/deprecated/preserve-modules/lib/lib2.js new file mode 100644 index 00000000000..2d6d2cf0852 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/lib/lib2.js @@ -0,0 +1,3 @@ +export function fn () { + console.log('lib2 fn'); +} \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules/main1.js b/test/chunking-form/samples/deprecated/preserve-modules/main1.js new file mode 100644 index 00000000000..dfbcdf631e5 --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/main1.js @@ -0,0 +1,9 @@ +import { fn } from './deps/dep1.js'; +import { fn as fn2 } from './deps/dep2.js'; + +export default class Main1 { + constructor () { + fn(); + fn2(); + } +} \ No newline at end of file diff --git a/test/chunking-form/samples/deprecated/preserve-modules/main2.js b/test/chunking-form/samples/deprecated/preserve-modules/main2.js new file mode 100644 index 00000000000..67202404b6a --- /dev/null +++ b/test/chunking-form/samples/deprecated/preserve-modules/main2.js @@ -0,0 +1,13 @@ +import { fn } from './deps/dep2.js'; +import { fn as fn2, default as treeshaked } from './deps/dep3.js'; + +if (false) { + treeshaked(); +} + +export default class Main2 { + constructor () { + fn2(); + fn(); + } +} \ No newline at end of file diff --git a/test/chunking-form/samples/dynamic-import-inlining-object/_config.js b/test/chunking-form/samples/dynamic-import-inlining-object/_config.js index 5adf9230f61..7dec64bfdc0 100644 --- a/test/chunking-form/samples/dynamic-import-inlining-object/_config.js +++ b/test/chunking-form/samples/dynamic-import-inlining-object/_config.js @@ -1,7 +1,7 @@ module.exports = { description: 'supports an object with a single entry when inlining dynamic imports', options: { - inlineDynamicImports: true, + output: { inlineDynamicImports: true }, input: { entry: 'main' } } }; diff --git a/test/chunking-form/samples/emit-file/emit-chunk-facade/_config.js b/test/chunking-form/samples/emit-file/emit-chunk-facade/_config.js index 5434bb22502..2c185dd564d 100644 --- a/test/chunking-form/samples/emit-file/emit-chunk-facade/_config.js +++ b/test/chunking-form/samples/emit-file/emit-chunk-facade/_config.js @@ -5,8 +5,10 @@ module.exports = { description: 'retrieves the correct name of an emitted chunk in case a facade is created', options: { input: 'main', - manualChunks: { - 'build-starter': ['buildStart'] + output: { + manualChunks: { + 'build-starter': ['buildStart'] + } }, plugins: { buildStart() { diff --git a/test/chunking-form/samples/indirect-reexports-preserve-modules/_config.js b/test/chunking-form/samples/indirect-reexports-preserve-modules/_config.js index 9d663da377f..e2616fe4ab7 100644 --- a/test/chunking-form/samples/indirect-reexports-preserve-modules/_config.js +++ b/test/chunking-form/samples/indirect-reexports-preserve-modules/_config.js @@ -2,7 +2,6 @@ module.exports = { description: 'does not drop indirect reexports when preserving modules', expectedWarnings: ['MIXED_EXPORTS'], options: { - output: { name: 'bundle' }, - preserveModules: true + output: { name: 'bundle', preserveModules: true } } }; diff --git a/test/chunking-form/samples/manual-chunk-avoid-facade/_config.js b/test/chunking-form/samples/manual-chunk-avoid-facade/_config.js index 3872987a3f1..b3f1783fee8 100644 --- a/test/chunking-form/samples/manual-chunk-avoid-facade/_config.js +++ b/test/chunking-form/samples/manual-chunk-avoid-facade/_config.js @@ -2,8 +2,10 @@ module.exports = { description: 'avoid facades if possible when using manual chunks', options: { input: ['main1', 'main2'], - manualChunks: { - manual: ['main2'] + output: { + manualChunks: { + manual: ['main2'] + } } } }; diff --git a/test/chunking-form/samples/manual-chunk-contains-entry-conflict/_config.js b/test/chunking-form/samples/manual-chunk-contains-entry-conflict/_config.js index 31b66fa814e..a37dc57a3b7 100644 --- a/test/chunking-form/samples/manual-chunk-contains-entry-conflict/_config.js +++ b/test/chunking-form/samples/manual-chunk-contains-entry-conflict/_config.js @@ -1,12 +1,15 @@ module.exports = { + expectedWarnings: ['EMPTY_BUNDLE'], description: 'Uses entry alias if manual chunks contain entry chunks with different alias', options: { input: { main: 'main.js', main2: 'main2.js' }, - manualChunks: { - outer: ['outer'] + output: { + manualChunks: { + outer: ['outer'] + } } } }; diff --git a/test/chunking-form/samples/manual-chunk-contains-entry-conflict/_expected/amd/main2.js b/test/chunking-form/samples/manual-chunk-contains-entry-conflict/_expected/amd/main2.js index 0c144671364..d28c079a312 100644 --- a/test/chunking-form/samples/manual-chunk-contains-entry-conflict/_expected/amd/main2.js +++ b/test/chunking-form/samples/manual-chunk-contains-entry-conflict/_expected/amd/main2.js @@ -1,4 +1,4 @@ -define(['./main'], function (main) { 'use strict'; +define(['./main'], function (outer) { 'use strict'; diff --git a/test/chunking-form/samples/manual-chunk-contains-entry-match/_config.js b/test/chunking-form/samples/manual-chunk-contains-entry-match/_config.js index a08d4f85d17..886f2483469 100644 --- a/test/chunking-form/samples/manual-chunk-contains-entry-match/_config.js +++ b/test/chunking-form/samples/manual-chunk-contains-entry-match/_config.js @@ -5,8 +5,10 @@ module.exports = { input: { main: 'main.js' }, - manualChunks: { - main: ['outer'] + output: { + manualChunks: { + main: ['outer'] + } } } }; diff --git a/test/chunking-form/samples/manual-chunk-is-entry-conflict/_config.js b/test/chunking-form/samples/manual-chunk-is-entry-conflict/_config.js index 3b18f870977..ff3ff114277 100644 --- a/test/chunking-form/samples/manual-chunk-is-entry-conflict/_config.js +++ b/test/chunking-form/samples/manual-chunk-is-entry-conflict/_config.js @@ -5,8 +5,10 @@ module.exports = { main: 'main.js', main2: 'main2.js' }, - manualChunks: { - other: ['main'] + output: { + manualChunks: { + other: ['main'] + } } } }; diff --git a/test/chunking-form/samples/manual-chunk-is-entry-conflict/_expected/amd/main2.js b/test/chunking-form/samples/manual-chunk-is-entry-conflict/_expected/amd/main2.js index 0c144671364..e007f54e5e2 100644 --- a/test/chunking-form/samples/manual-chunk-is-entry-conflict/_expected/amd/main2.js +++ b/test/chunking-form/samples/manual-chunk-is-entry-conflict/_expected/amd/main2.js @@ -1,4 +1,4 @@ -define(['./main'], function (main) { 'use strict'; +define(['./main'], function (other) { 'use strict'; diff --git a/test/chunking-form/samples/manual-chunk-is-entry-match/_config.js b/test/chunking-form/samples/manual-chunk-is-entry-match/_config.js index f86733b33a7..e48ab6e5c57 100644 --- a/test/chunking-form/samples/manual-chunk-is-entry-match/_config.js +++ b/test/chunking-form/samples/manual-chunk-is-entry-match/_config.js @@ -5,8 +5,10 @@ module.exports = { input: { main: 'main.js' }, - manualChunks: { - main: ['main'] + output: { + manualChunks: { + main: ['main'] + } } } }; diff --git a/test/chunking-form/samples/manual-chunks-different-nested/_config.js b/test/chunking-form/samples/manual-chunks-different-nested/_config.js index ef32850d199..b3cb648c6ce 100644 --- a/test/chunking-form/samples/manual-chunks-different-nested/_config.js +++ b/test/chunking-form/samples/manual-chunks-different-nested/_config.js @@ -2,10 +2,12 @@ module.exports = { description: 'manual chunks can have other manual chunks as dependencies', options: { input: ['main.js'], - manualChunks: { - 'manual-outer': ['outer.js'], - 'manual-inner': ['inner.js'], - 'manual-middle': ['middle.js'] + output: { + manualChunks: { + 'manual-outer': ['outer.js'], + 'manual-inner': ['inner.js'], + 'manual-middle': ['middle.js'] + } } } }; diff --git a/test/chunking-form/samples/manual-chunks-dynamic-facades/_config.js b/test/chunking-form/samples/manual-chunks-dynamic-facades/_config.js index ce24fdc1b3f..4b561f0ff92 100644 --- a/test/chunking-form/samples/manual-chunks-dynamic-facades/_config.js +++ b/test/chunking-form/samples/manual-chunks-dynamic-facades/_config.js @@ -2,8 +2,10 @@ module.exports = { description: 'creates facades for dynamic manual chunks if necessary', options: { input: ['main.js'], - manualChunks: { - dynamic: ['dynamic1.js'] + output: { + manualChunks: { + dynamic: ['dynamic1.js'] + } } } }; diff --git a/test/chunking-form/samples/manual-chunks-dynamic-name-conflict/_config.js b/test/chunking-form/samples/manual-chunks-dynamic-name-conflict/_config.js index 2e5e55b0c41..05c5ee743cf 100644 --- a/test/chunking-form/samples/manual-chunks-dynamic-name-conflict/_config.js +++ b/test/chunking-form/samples/manual-chunks-dynamic-name-conflict/_config.js @@ -2,8 +2,10 @@ module.exports = { description: 'handles name conflicts in manual chunks', options: { input: ['main.js'], - manualChunks: { - dynamic: ['dynamic1.js'] + output: { + manualChunks: { + dynamic: ['dynamic1.js'] + } } } }; diff --git a/test/chunking-form/samples/manual-chunks-dynamic/_config.js b/test/chunking-form/samples/manual-chunks-dynamic/_config.js index ae6451ab03c..e41c6eed7a7 100644 --- a/test/chunking-form/samples/manual-chunks-dynamic/_config.js +++ b/test/chunking-form/samples/manual-chunks-dynamic/_config.js @@ -2,8 +2,10 @@ module.exports = { description: 'supports dynamic manual chunks', options: { input: ['main.js'], - manualChunks: { - dynamic: ['dynamic.js'] + output: { + manualChunks: { + dynamic: ['dynamic.js'] + } } } }; diff --git a/test/chunking-form/samples/manual-chunks-function/_config.js b/test/chunking-form/samples/manual-chunks-function/_config.js index 7dce4fbb810..1c3e6daf708 100644 --- a/test/chunking-form/samples/manual-chunks-function/_config.js +++ b/test/chunking-form/samples/manual-chunks-function/_config.js @@ -2,9 +2,11 @@ module.exports = { description: 'allows to define manual chunks via a function', options: { input: ['main-a'], - manualChunks(id) { - if (id[id.length - 5] === '-') { - return `chunk-${id[id.length - 4]}`; + output: { + manualChunks(id) { + if (id[id.length - 5] === '-') { + return `chunk-${id[id.length - 4]}`; + } } } } diff --git a/test/chunking-form/samples/manual-chunks-nested/_config.js b/test/chunking-form/samples/manual-chunks-nested/_config.js index a617f04b21f..8214e629eaf 100644 --- a/test/chunking-form/samples/manual-chunks-nested/_config.js +++ b/test/chunking-form/samples/manual-chunks-nested/_config.js @@ -2,8 +2,10 @@ module.exports = { description: 'manual chunks can contain nested modules', options: { input: ['main.js'], - manualChunks: { - manual: ['middle.js', 'inner.js', 'outer.js'] + output: { + manualChunks: { + manual: ['middle.js', 'inner.js', 'outer.js'] + } } } }; diff --git a/test/chunking-form/samples/manual-chunks/_config.js b/test/chunking-form/samples/manual-chunks/_config.js index db37984cc08..2589e95d79a 100644 --- a/test/chunking-form/samples/manual-chunks/_config.js +++ b/test/chunking-form/samples/manual-chunks/_config.js @@ -2,9 +2,11 @@ module.exports = { description: 'manual chunks support', options: { input: ['main.js'], - manualChunks: { - lib1: ['lib1.js'], - deps2and3: ['dep2.js', 'dep3.js'] + output: { + manualChunks: { + lib1: ['lib1.js'], + deps2and3: ['dep2.js', 'dep3.js'] + } } } }; diff --git a/test/chunking-form/samples/missing-export-reused-deconflicting/_config.js b/test/chunking-form/samples/missing-export-reused-deconflicting/_config.js index 6244f66663a..fa8ef996a91 100644 --- a/test/chunking-form/samples/missing-export-reused-deconflicting/_config.js +++ b/test/chunking-form/samples/missing-export-reused-deconflicting/_config.js @@ -3,7 +3,7 @@ module.exports = { expectedWarnings: ['SHIMMED_EXPORT'], options: { input: ['main.js'], - preserveModules: true, - shimMissingExports: true + shimMissingExports: true, + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/namespace-reexports/_expected/amd/main.js b/test/chunking-form/samples/namespace-reexports/_expected/amd/main.js index ab833f3837e..47919c68682 100644 --- a/test/chunking-form/samples/namespace-reexports/_expected/amd/main.js +++ b/test/chunking-form/samples/namespace-reexports/_expected/amd/main.js @@ -1,6 +1,6 @@ -define(['exports', './hsl2hsv', './generated-index'], function (exports, hsl2hsv$1, index) { 'use strict'; +define(['exports', './hsl2hsv', './generated-index'], function (exports, hsl2hsv, index) { 'use strict'; - console.log(hsl2hsv$1.p); + console.log(hsl2hsv.p); var main = new Map(Object.entries(index.lib)); exports.default = main; diff --git a/test/chunking-form/samples/preserve-modules-auto-export-mode/_config.js b/test/chunking-form/samples/preserve-modules-auto-export-mode/_config.js index 647ad33e23b..7afad981a92 100644 --- a/test/chunking-form/samples/preserve-modules-auto-export-mode/_config.js +++ b/test/chunking-form/samples/preserve-modules-auto-export-mode/_config.js @@ -2,6 +2,6 @@ module.exports = { description: 'Uses entry point semantics for all files when preserving modules', options: { input: 'main.js', - preserveModules: true + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/preserve-modules-commonjs/_config.js b/test/chunking-form/samples/preserve-modules-commonjs/_config.js index 98966ed2bcf..c748f85794d 100644 --- a/test/chunking-form/samples/preserve-modules-commonjs/_config.js +++ b/test/chunking-form/samples/preserve-modules-commonjs/_config.js @@ -5,8 +5,8 @@ module.exports = { expectedWarnings: ['MIXED_EXPORTS'], options: { input: 'main.js', - preserveModules: true, external: ['external'], - plugins: [commonjs()] + plugins: [commonjs()], + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/preserve-modules-dynamic-imports/_config.js b/test/chunking-form/samples/preserve-modules-dynamic-imports/_config.js index 798b10bf38f..cd38717b589 100644 --- a/test/chunking-form/samples/preserve-modules-dynamic-imports/_config.js +++ b/test/chunking-form/samples/preserve-modules-dynamic-imports/_config.js @@ -2,6 +2,6 @@ module.exports = { description: 'dynamic imports are handled correctly when preserving modules', options: { input: ['main.js'], - preserveModules: true + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_config.js b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_config.js index 01cb359eb12..10c317cd8fc 100644 --- a/test/chunking-form/samples/preserve-modules-dynamic-namespace/_config.js +++ b/test/chunking-form/samples/preserve-modules-dynamic-namespace/_config.js @@ -2,6 +2,6 @@ module.exports = { description: 'Preserve modules properly handles internal namespace imports (#2576)', options: { input: ['main.js'], - preserveModules: true + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/preserve-modules-empty/_config.js b/test/chunking-form/samples/preserve-modules-empty/_config.js index 40a998bf69b..7b9d517b336 100644 --- a/test/chunking-form/samples/preserve-modules-empty/_config.js +++ b/test/chunking-form/samples/preserve-modules-empty/_config.js @@ -2,6 +2,6 @@ module.exports = { description: 'Preserve modules remove empty dependencies', options: { input: 'main.js', - preserveModules: true + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/preserve-modules-export-alias/_config.js b/test/chunking-form/samples/preserve-modules-export-alias/_config.js index 5b0d222a443..9c422ba3d6d 100644 --- a/test/chunking-form/samples/preserve-modules-export-alias/_config.js +++ b/test/chunking-form/samples/preserve-modules-export-alias/_config.js @@ -2,6 +2,6 @@ module.exports = { description: 'confirm export aliases are preserved in modules', options: { input: ['main1.js', 'main2.js'], - preserveModules: true + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/preserve-modules-filename-pattern/_config.js b/test/chunking-form/samples/preserve-modules-filename-pattern/_config.js index 6322a7ba3d0..f8e36cb7cbd 100644 --- a/test/chunking-form/samples/preserve-modules-filename-pattern/_config.js +++ b/test/chunking-form/samples/preserve-modules-filename-pattern/_config.js @@ -3,8 +3,8 @@ module.exports = { options: { input: 'src/main.ts', output: { - entryFileNames: 'entry-[name]-[format]-[ext][extname].js' - }, - preserveModules: true + entryFileNames: 'entry-[name]-[format]-[ext][extname].js', + preserveModules: true + } } }; diff --git a/test/chunking-form/samples/preserve-modules-id-case-sensitive/_config.js b/test/chunking-form/samples/preserve-modules-id-case-sensitive/_config.js index 85f8e574fd6..7650f6f19b0 100644 --- a/test/chunking-form/samples/preserve-modules-id-case-sensitive/_config.js +++ b/test/chunking-form/samples/preserve-modules-id-case-sensitive/_config.js @@ -2,7 +2,7 @@ module.exports = { description: 'Preserve modules id case sensitive', options: { input: 'main.js', - preserveModules: true, + output: { preserveModules: true }, plugins: [ { resolveId(id) { diff --git a/test/chunking-form/samples/preserve-modules-named-export-mode/_config.js b/test/chunking-form/samples/preserve-modules-named-export-mode/_config.js index edad038168f..0ad8d5aad54 100644 --- a/test/chunking-form/samples/preserve-modules-named-export-mode/_config.js +++ b/test/chunking-form/samples/preserve-modules-named-export-mode/_config.js @@ -2,9 +2,9 @@ module.exports = { description: 'respects "named" export mode in all chunks when preserving modules', options: { input: 'main.js', - preserveModules: true, output: { - exports: 'named' + exports: 'named', + preserveModules: true } } }; diff --git a/test/chunking-form/samples/preserve-modules-nested-barrel-es-export/_config.js b/test/chunking-form/samples/preserve-modules-nested-barrel-es-export/_config.js index 650ae278b0d..209f77d87a8 100644 --- a/test/chunking-form/samples/preserve-modules-nested-barrel-es-export/_config.js +++ b/test/chunking-form/samples/preserve-modules-nested-barrel-es-export/_config.js @@ -2,6 +2,6 @@ module.exports = { description: 'confirm exports are deconflicted when exporting nested index aliases', options: { input: 'main.js', - preserveModules: true + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/preserve-modules-nested-export/_config.js b/test/chunking-form/samples/preserve-modules-nested-export/_config.js index 454bc294b9b..f2cdd1cc149 100644 --- a/test/chunking-form/samples/preserve-modules-nested-export/_config.js +++ b/test/chunking-form/samples/preserve-modules-nested-export/_config.js @@ -2,6 +2,6 @@ module.exports = { description: 'confirm exports are preserved when exporting a module', options: { input: 'main.js', - preserveModules: true + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/preserve-modules-non-entry-imports/_config.js b/test/chunking-form/samples/preserve-modules-non-entry-imports/_config.js index c5fa075124d..732fa455ebe 100644 --- a/test/chunking-form/samples/preserve-modules-non-entry-imports/_config.js +++ b/test/chunking-form/samples/preserve-modules-non-entry-imports/_config.js @@ -2,6 +2,6 @@ module.exports = { description: 'imports and exports of non-entry points are tracked', options: { input: 'main.js', - preserveModules: true + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/preserve-modules-proxy-import/_config.js b/test/chunking-form/samples/preserve-modules-proxy-import/_config.js index e14c8b8d0bd..23a87ffcbec 100644 --- a/test/chunking-form/samples/preserve-modules-proxy-import/_config.js +++ b/test/chunking-form/samples/preserve-modules-proxy-import/_config.js @@ -2,7 +2,7 @@ module.exports = { description: 'correctly resolves imports via a proxy module as direct imports when preserving modules', options: { - preserveModules: true, - external: 'external' + external: 'external', + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/preserve-modules-reaching-outside/_config.js b/test/chunking-form/samples/preserve-modules-reaching-outside/_config.js index ac0a33eec3d..61fa9b612c1 100644 --- a/test/chunking-form/samples/preserve-modules-reaching-outside/_config.js +++ b/test/chunking-form/samples/preserve-modules-reaching-outside/_config.js @@ -2,6 +2,6 @@ module.exports = { description: 'change the module destination', options: { input: 'src/lib/main.js', - preserveModules: true + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/preserve-modules-scriptified-assets/_config.js b/test/chunking-form/samples/preserve-modules-scriptified-assets/_config.js index 0cd10867ec0..6022c27f9cf 100644 --- a/test/chunking-form/samples/preserve-modules-scriptified-assets/_config.js +++ b/test/chunking-form/samples/preserve-modules-scriptified-assets/_config.js @@ -4,7 +4,7 @@ module.exports = { description: 'scriptified assets have extension in preserveModules output filename', options: { input: 'src/main.js', - preserveModules: true, + output: { preserveModules: true }, plugins: [ { name: 'str-num-plugin', diff --git a/test/chunking-form/samples/preserve-modules-single-entry/_config.js b/test/chunking-form/samples/preserve-modules-single-entry/_config.js index 0a48e7f9c8b..05ac0170147 100644 --- a/test/chunking-form/samples/preserve-modules-single-entry/_config.js +++ b/test/chunking-form/samples/preserve-modules-single-entry/_config.js @@ -2,6 +2,6 @@ module.exports = { description: 'single entry names file correctly', options: { input: 'main.js', - preserveModules: true + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/preserve-modules-virtual-modules/_config.js b/test/chunking-form/samples/preserve-modules-virtual-modules/_config.js index 71765b9a4bf..bd10fa0ad02 100644 --- a/test/chunking-form/samples/preserve-modules-virtual-modules/_config.js +++ b/test/chunking-form/samples/preserve-modules-virtual-modules/_config.js @@ -2,7 +2,7 @@ module.exports = { description: 'Generates actual files for virtual modules when preserving modules', options: { input: 'main.js', - preserveModules: true, + output: { preserveModules: true }, plugins: [ { resolveId(id) { diff --git a/test/chunking-form/samples/preserve-modules/_config.js b/test/chunking-form/samples/preserve-modules/_config.js index 7c666fc33ab..54d9611466a 100644 --- a/test/chunking-form/samples/preserve-modules/_config.js +++ b/test/chunking-form/samples/preserve-modules/_config.js @@ -2,6 +2,6 @@ module.exports = { description: 'Rewrite modules in-place', options: { input: ['main1.js', 'main2.js'], - preserveModules: true + output: { preserveModules: true } } }; diff --git a/test/chunking-form/samples/side-effect-free-dependencies/avoid-imports-preserve-modules/_config.js b/test/chunking-form/samples/side-effect-free-dependencies/avoid-imports-preserve-modules/_config.js index e3fdb18ef33..48c8a85b3ff 100644 --- a/test/chunking-form/samples/side-effect-free-dependencies/avoid-imports-preserve-modules/_config.js +++ b/test/chunking-form/samples/side-effect-free-dependencies/avoid-imports-preserve-modules/_config.js @@ -2,6 +2,6 @@ module.exports = { description: 'avoids empty imports if they do not have side-effects when preserving modules (#3359)', options: { - preserveModules: true + output: { preserveModules: true } } }; diff --git a/test/cli/samples/config-multiple-getfilename/_config.js b/test/cli/samples/config-multiple-getfilename/_config.js index ba17660e7a0..842113b93e1 100644 --- a/test/cli/samples/config-multiple-getfilename/_config.js +++ b/test/cli/samples/config-multiple-getfilename/_config.js @@ -1,5 +1,4 @@ module.exports = { - skip: true, description: 'returns correct file names for multiple outputs (#3467)', command: 'rollup -c' }; diff --git a/test/cli/samples/config-multiple-getfilename/_expected/es.txt b/test/cli/samples/config-multiple-getfilename/_expected/es.txt index 3c21391e2b3..deeb1faca1d 100644 --- a/test/cli/samples/config-multiple-getfilename/_expected/es.txt +++ b/test/cli/samples/config-multiple-getfilename/_expected/es.txt @@ -1 +1 @@ -es-main.js +es-main.js \ No newline at end of file diff --git a/test/cli/samples/warn-mixed-exports-multiple/_config.js b/test/cli/samples/warn-mixed-exports-multiple/_config.js index 75ed8c1955a..fc19537ac45 100644 --- a/test/cli/samples/warn-mixed-exports-multiple/_config.js +++ b/test/cli/samples/warn-mixed-exports-multiple/_config.js @@ -9,9 +9,9 @@ module.exports = { '(!) Mixing named and default exports\n' + 'https://rollupjs.org/guide/en/#output-exports\n' + 'The following entry modules are using named and default exports together:\n' + + 'main.js\n' + 'lib1.js\n' + 'lib2.js\n' + - 'lib3.js\n' + '...and 3 other entry modules\n' + '\n' + "Consumers of your bundle will have to use chunk['default'] to access their default export, which may not be what you want. Use `output.exports: 'named'` to disable this warning\n" diff --git a/test/form/samples/custom-module-context-function/_config.js b/test/form/samples/custom-module-context-function/_config.js index e42a80b2638..c10efdfacbe 100644 --- a/test/form/samples/custom-module-context-function/_config.js +++ b/test/form/samples/custom-module-context-function/_config.js @@ -3,7 +3,12 @@ module.exports = { expectedWarnings: ['THIS_IS_UNDEFINED'], options: { moduleContext(id) { - return /main\.js$/.test(id) ? 'lolwut' : 'undefined'; + if (id.endsWith('main.js')) { + return 'window'; + } + if (id.endsWith('foo.js')) { + return 'global'; + } } } }; diff --git a/test/form/samples/custom-module-context-function/_expected.js b/test/form/samples/custom-module-context-function/_expected.js new file mode 100644 index 00000000000..c4918f43758 --- /dev/null +++ b/test/form/samples/custom-module-context-function/_expected.js @@ -0,0 +1,5 @@ +global.prop = 'foo'; + +undefined.prop = 'bar'; + +window.prop = 'main'; diff --git a/test/form/samples/custom-module-context-function/_expected/amd.js b/test/form/samples/custom-module-context-function/_expected/amd.js deleted file mode 100644 index 92747997ff2..00000000000 --- a/test/form/samples/custom-module-context-function/_expected/amd.js +++ /dev/null @@ -1,7 +0,0 @@ -define(function () { 'use strict'; - - undefined.prop = 'nope'; - - lolwut.prop = '???'; - -}); diff --git a/test/form/samples/custom-module-context-function/_expected/cjs.js b/test/form/samples/custom-module-context-function/_expected/cjs.js deleted file mode 100644 index 35a5b08d3a9..00000000000 --- a/test/form/samples/custom-module-context-function/_expected/cjs.js +++ /dev/null @@ -1,5 +0,0 @@ -'use strict'; - -undefined.prop = 'nope'; - -lolwut.prop = '???'; diff --git a/test/form/samples/custom-module-context-function/_expected/es.js b/test/form/samples/custom-module-context-function/_expected/es.js deleted file mode 100644 index a6903e00c89..00000000000 --- a/test/form/samples/custom-module-context-function/_expected/es.js +++ /dev/null @@ -1,3 +0,0 @@ -undefined.prop = 'nope'; - -lolwut.prop = '???'; diff --git a/test/form/samples/custom-module-context-function/_expected/iife.js b/test/form/samples/custom-module-context-function/_expected/iife.js deleted file mode 100644 index 7926fe6e7ea..00000000000 --- a/test/form/samples/custom-module-context-function/_expected/iife.js +++ /dev/null @@ -1,8 +0,0 @@ -(function () { - 'use strict'; - - undefined.prop = 'nope'; - - lolwut.prop = '???'; - -}()); diff --git a/test/form/samples/custom-module-context-function/bar.js b/test/form/samples/custom-module-context-function/bar.js new file mode 100644 index 00000000000..8fac7db67d4 --- /dev/null +++ b/test/form/samples/custom-module-context-function/bar.js @@ -0,0 +1 @@ +this.prop = 'bar'; diff --git a/test/form/samples/custom-module-context-function/foo.js b/test/form/samples/custom-module-context-function/foo.js index a5a991d6d63..f1342c2914b 100644 --- a/test/form/samples/custom-module-context-function/foo.js +++ b/test/form/samples/custom-module-context-function/foo.js @@ -1 +1 @@ -this.prop = 'nope'; +this.prop = 'foo'; diff --git a/test/form/samples/custom-module-context-function/main.js b/test/form/samples/custom-module-context-function/main.js index 1323b6820ce..87b1865062b 100644 --- a/test/form/samples/custom-module-context-function/main.js +++ b/test/form/samples/custom-module-context-function/main.js @@ -1,2 +1,3 @@ import './foo.js'; -this.prop = '???'; +import './bar.js'; +this.prop = 'main'; diff --git a/test/form/samples/deprecated/dynamic-import-inlining-array/_config.js b/test/form/samples/deprecated/dynamic-import-inlining-array/_config.js new file mode 100644 index 00000000000..5f4382d6a8b --- /dev/null +++ b/test/form/samples/deprecated/dynamic-import-inlining-array/_config.js @@ -0,0 +1,8 @@ +module.exports = { + description: 'supports an array with a single entry when inlining dynamic imports', + options: { + strictDeprecations: false, + inlineDynamicImports: true, + input: ['main'] + } +}; diff --git a/test/form/samples/deprecated/dynamic-import-inlining-array/_expected.js b/test/form/samples/deprecated/dynamic-import-inlining-array/_expected.js new file mode 100644 index 00000000000..ae434046e6c --- /dev/null +++ b/test/form/samples/deprecated/dynamic-import-inlining-array/_expected.js @@ -0,0 +1,11 @@ +const bar = 2; +Promise.resolve().then(function () { return foo$1; }); + +const foo = 1; + +var foo$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + foo: foo +}); + +export { bar }; diff --git a/test/form/samples/deprecated/dynamic-import-inlining-array/foo.js b/test/form/samples/deprecated/dynamic-import-inlining-array/foo.js new file mode 100644 index 00000000000..6a8018af412 --- /dev/null +++ b/test/form/samples/deprecated/dynamic-import-inlining-array/foo.js @@ -0,0 +1 @@ +export const foo = 1; \ No newline at end of file diff --git a/test/form/samples/deprecated/dynamic-import-inlining-array/main.js b/test/form/samples/deprecated/dynamic-import-inlining-array/main.js new file mode 100644 index 00000000000..ee3e6a770d6 --- /dev/null +++ b/test/form/samples/deprecated/dynamic-import-inlining-array/main.js @@ -0,0 +1,2 @@ +export const bar = 2; +import('./foo.js'); diff --git a/test/form/samples/deprecated/dynamic-import-inlining/_config.js b/test/form/samples/deprecated/dynamic-import-inlining/_config.js new file mode 100644 index 00000000000..42be3fab8a0 --- /dev/null +++ b/test/form/samples/deprecated/dynamic-import-inlining/_config.js @@ -0,0 +1,7 @@ +module.exports = { + description: 'dynamic import inlining', + options: { + strictDeprecations: false, + inlineDynamicImports: true + } +}; diff --git a/test/form/samples/deprecated/dynamic-import-inlining/_expected.js b/test/form/samples/deprecated/dynamic-import-inlining/_expected.js new file mode 100644 index 00000000000..ae434046e6c --- /dev/null +++ b/test/form/samples/deprecated/dynamic-import-inlining/_expected.js @@ -0,0 +1,11 @@ +const bar = 2; +Promise.resolve().then(function () { return foo$1; }); + +const foo = 1; + +var foo$1 = /*#__PURE__*/Object.freeze({ + __proto__: null, + foo: foo +}); + +export { bar }; diff --git a/test/form/samples/deprecated/dynamic-import-inlining/foo.js b/test/form/samples/deprecated/dynamic-import-inlining/foo.js new file mode 100644 index 00000000000..6a8018af412 --- /dev/null +++ b/test/form/samples/deprecated/dynamic-import-inlining/foo.js @@ -0,0 +1 @@ +export const foo = 1; \ No newline at end of file diff --git a/test/form/samples/deprecated/dynamic-import-inlining/main.js b/test/form/samples/deprecated/dynamic-import-inlining/main.js new file mode 100644 index 00000000000..ee3e6a770d6 --- /dev/null +++ b/test/form/samples/deprecated/dynamic-import-inlining/main.js @@ -0,0 +1,2 @@ +export const bar = 2; +import('./foo.js'); diff --git a/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_config.js b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_config.js new file mode 100644 index 00000000000..70a30536aa8 --- /dev/null +++ b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_config.js @@ -0,0 +1,7 @@ +module.exports = { + description: 'completely removes tree-shaken dynamic imports ', + options: { + strictDeprecations: false, + inlineDynamicImports: true + } +}; diff --git a/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/amd.js b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/amd.js new file mode 100644 index 00000000000..126aa22ee83 --- /dev/null +++ b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/amd.js @@ -0,0 +1,5 @@ +define(function () { 'use strict'; + + console.log('main'); + +}); diff --git a/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/cjs.js b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/cjs.js new file mode 100644 index 00000000000..d0ed06d8c90 --- /dev/null +++ b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/cjs.js @@ -0,0 +1,3 @@ +'use strict'; + +console.log('main'); diff --git a/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/es.js b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/es.js new file mode 100644 index 00000000000..c0b933d7b56 --- /dev/null +++ b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/es.js @@ -0,0 +1 @@ +console.log('main'); diff --git a/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/iife.js b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/iife.js new file mode 100644 index 00000000000..d283cbce8ba --- /dev/null +++ b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/iife.js @@ -0,0 +1,6 @@ +(function () { + 'use strict'; + + console.log('main'); + +}()); diff --git a/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/system.js b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/system.js new file mode 100644 index 00000000000..c83499bc2d4 --- /dev/null +++ b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/system.js @@ -0,0 +1,10 @@ +System.register([], function () { + 'use strict'; + return { + execute: function () { + + console.log('main'); + + } + }; +}); diff --git a/test/form/samples/custom-module-context-function/_expected/umd.js b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/umd.js similarity index 73% rename from test/form/samples/custom-module-context-function/_expected/umd.js rename to test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/umd.js index 79188921edf..f69e11c0256 100644 --- a/test/form/samples/custom-module-context-function/_expected/umd.js +++ b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/_expected/umd.js @@ -3,8 +3,6 @@ factory(); }((function () { 'use strict'; - undefined.prop = 'nope'; - - lolwut.prop = '???'; + console.log('main'); }))); diff --git a/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/dynamic.js b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/dynamic.js new file mode 100644 index 00000000000..1d7a1acc1b8 --- /dev/null +++ b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/dynamic.js @@ -0,0 +1,2 @@ +console.log('dynamic'); +export var dynamic = 42; diff --git a/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/main.js b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/main.js new file mode 100644 index 00000000000..9b0aad2c210 --- /dev/null +++ b/test/form/samples/deprecated/inlined-treeshaken-dynamic-import/main.js @@ -0,0 +1,2 @@ +console.log('main'); +const getFoo = () => import('./dynamic.js'); diff --git a/test/form/samples/deprecated/nested-inlined-dynamic-import/_config.js b/test/form/samples/deprecated/nested-inlined-dynamic-import/_config.js new file mode 100644 index 00000000000..b72d8e62afc --- /dev/null +++ b/test/form/samples/deprecated/nested-inlined-dynamic-import/_config.js @@ -0,0 +1,7 @@ +module.exports = { + description: 'deconflicts variables when nested dynamic imports are inlined', + options: { + strictDeprecations: false, + inlineDynamicImports: true + } +}; diff --git a/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/amd.js b/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/amd.js new file mode 100644 index 00000000000..83e0443cf4b --- /dev/null +++ b/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/amd.js @@ -0,0 +1,18 @@ +define(function () { 'use strict'; + + async function main() { + const foo$1 = 1; + const ns = await Promise.resolve().then(function () { return foo; }); + console.log(ns.value + foo$1); + } + + main(); + + const value = 42; + + var foo = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value + }); + +}); diff --git a/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/cjs.js b/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/cjs.js new file mode 100644 index 00000000000..9226d1268d7 --- /dev/null +++ b/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/cjs.js @@ -0,0 +1,16 @@ +'use strict'; + +async function main() { + const foo$1 = 1; + const ns = await Promise.resolve().then(function () { return foo; }); + console.log(ns.value + foo$1); +} + +main(); + +const value = 42; + +var foo = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value +}); diff --git a/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/es.js b/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/es.js new file mode 100644 index 00000000000..97b0b8e51f5 --- /dev/null +++ b/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/es.js @@ -0,0 +1,14 @@ +async function main() { + const foo$1 = 1; + const ns = await Promise.resolve().then(function () { return foo; }); + console.log(ns.value + foo$1); +} + +main(); + +const value = 42; + +var foo = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value +}); diff --git a/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/iife.js b/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/iife.js new file mode 100644 index 00000000000..6a2dd7b2aaa --- /dev/null +++ b/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/iife.js @@ -0,0 +1,19 @@ +(function () { + 'use strict'; + + async function main() { + const foo$1 = 1; + const ns = await Promise.resolve().then(function () { return foo; }); + console.log(ns.value + foo$1); + } + + main(); + + const value = 42; + + var foo = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value + }); + +}()); diff --git a/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/system.js b/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/system.js new file mode 100644 index 00000000000..a11234126c3 --- /dev/null +++ b/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/system.js @@ -0,0 +1,23 @@ +System.register([], function () { + 'use strict'; + return { + execute: function () { + + async function main() { + const foo$1 = 1; + const ns = await Promise.resolve().then(function () { return foo; }); + console.log(ns.value + foo$1); + } + + main(); + + const value = 42; + + var foo = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value + }); + + } + }; +}); diff --git a/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/umd.js b/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/umd.js new file mode 100644 index 00000000000..04bde1cc42f --- /dev/null +++ b/test/form/samples/deprecated/nested-inlined-dynamic-import/_expected/umd.js @@ -0,0 +1,21 @@ +(function (factory) { + typeof define === 'function' && define.amd ? define(factory) : + factory(); +}((function () { 'use strict'; + + async function main() { + const foo$1 = 1; + const ns = await Promise.resolve().then(function () { return foo; }); + console.log(ns.value + foo$1); + } + + main(); + + const value = 42; + + var foo = /*#__PURE__*/Object.freeze({ + __proto__: null, + value: value + }); + +}))); diff --git a/test/form/samples/deprecated/nested-inlined-dynamic-import/foo.js b/test/form/samples/deprecated/nested-inlined-dynamic-import/foo.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/form/samples/deprecated/nested-inlined-dynamic-import/foo.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/form/samples/deprecated/nested-inlined-dynamic-import/main.js b/test/form/samples/deprecated/nested-inlined-dynamic-import/main.js new file mode 100644 index 00000000000..685c5cc1aef --- /dev/null +++ b/test/form/samples/deprecated/nested-inlined-dynamic-import/main.js @@ -0,0 +1,7 @@ +async function main() { + const foo = 1; + const ns = await import('./foo.js'); + console.log(ns.value + foo); +} + +main(); diff --git a/test/form/samples/dynamic-import-inlining-array/_config.js b/test/form/samples/dynamic-import-inlining-array/_config.js index f426fa668a1..81ad9e51008 100644 --- a/test/form/samples/dynamic-import-inlining-array/_config.js +++ b/test/form/samples/dynamic-import-inlining-array/_config.js @@ -1,7 +1,7 @@ module.exports = { description: 'supports an array with a single entry when inlining dynamic imports', options: { - inlineDynamicImports: true, + output: { inlineDynamicImports: true }, input: ['main'] } }; diff --git a/test/form/samples/dynamic-import-inlining/_config.js b/test/form/samples/dynamic-import-inlining/_config.js index a83eaef5244..7e80cf62b7f 100644 --- a/test/form/samples/dynamic-import-inlining/_config.js +++ b/test/form/samples/dynamic-import-inlining/_config.js @@ -1,6 +1,6 @@ module.exports = { description: 'dynamic import inlining', options: { - inlineDynamicImports: true + output: { inlineDynamicImports: true } } }; diff --git a/test/form/samples/inlined-treeshaken-dynamic-import/_config.js b/test/form/samples/inlined-treeshaken-dynamic-import/_config.js index b5257d549c5..1703f4c9c1f 100644 --- a/test/form/samples/inlined-treeshaken-dynamic-import/_config.js +++ b/test/form/samples/inlined-treeshaken-dynamic-import/_config.js @@ -1,6 +1,6 @@ module.exports = { description: 'completely removes tree-shaken dynamic imports ', options: { - inlineDynamicImports: true + output: { inlineDynamicImports: true } } }; diff --git a/test/form/samples/nested-inlined-dynamic-import/_config.js b/test/form/samples/nested-inlined-dynamic-import/_config.js index 86e5a2e6ddf..11403c10e01 100644 --- a/test/form/samples/nested-inlined-dynamic-import/_config.js +++ b/test/form/samples/nested-inlined-dynamic-import/_config.js @@ -1,6 +1,6 @@ module.exports = { description: 'deconflicts variables when nested dynamic imports are inlined', options: { - inlineDynamicImports: true + output: { inlineDynamicImports: true } } }; diff --git a/test/form/samples/side-effects-internal-modules/_config.js b/test/form/samples/side-effects-internal-modules/_config.js new file mode 100644 index 00000000000..aa9d774424c --- /dev/null +++ b/test/form/samples/side-effects-internal-modules/_config.js @@ -0,0 +1,28 @@ +const assert = require('assert'); +const VIRTUAL_ID = '\0virtual'; + +module.exports = { + description: 'does not pass internal modules to moduleSideEffects', + expectedWarnings: ['EMPTY_BUNDLE'], + options: { + treeshake: { + moduleSideEffects: id => { + assert.notStrictEqual(id, VIRTUAL_ID); + return false; + } + }, + plugins: { + name: 'test-plugin', + resolveId(id) { + if (id === 'virtual') { + return VIRTUAL_ID; + } + }, + load(id) { + if (id === VIRTUAL_ID) { + return "console.log('effect')"; + } + } + } + } +}; diff --git a/test/form/samples/side-effects-internal-modules/_expected.js b/test/form/samples/side-effects-internal-modules/_expected.js new file mode 100644 index 00000000000..49686f47986 --- /dev/null +++ b/test/form/samples/side-effects-internal-modules/_expected.js @@ -0,0 +1,3 @@ +console.log('effect'); + +console.log('main'); diff --git a/test/form/samples/side-effects-internal-modules/main.js b/test/form/samples/side-effects-internal-modules/main.js new file mode 100644 index 00000000000..2a3bd7a3f51 --- /dev/null +++ b/test/form/samples/side-effects-internal-modules/main.js @@ -0,0 +1,2 @@ +import 'virtual'; +console.log('main'); diff --git a/test/function/samples/cannot-resolve-sourcemap-warning/_config.js b/test/function/samples/cannot-resolve-sourcemap-warning/_config.js new file mode 100644 index 00000000000..a803b5b72e8 --- /dev/null +++ b/test/function/samples/cannot-resolve-sourcemap-warning/_config.js @@ -0,0 +1,45 @@ +const path = require('path'); +const ID_MAIN = path.join(__dirname, 'main.js'); + +module.exports = { + description: 'handles when a sourcemap cannot be resolved in a warning', + options: { + plugins: { + name: 'test-plugin', + transform() { + return { code: 'export default this', map: { mappings: 'X' } }; + } + } + }, + warnings: [ + { + code: 'SOURCEMAP_ERROR', + id: ID_MAIN, + loc: { + column: 15, + file: ID_MAIN, + line: 1 + }, + message: + "Error when using sourcemap for reporting an error: Can't resolve original location of error.", + pos: 15 + }, + { + code: 'THIS_IS_UNDEFINED', + frame: ` + 1: export default this + ^ + `, + id: ID_MAIN, + loc: { + column: 15, + file: ID_MAIN, + line: 1 + }, + message: + "The 'this' keyword is equivalent to 'undefined' at the top level of an ES module, and has been rewritten", + pos: 15, + url: 'https://rollupjs.org/guide/en/#error-this-is-undefined' + } + ] +}; diff --git a/test/function/samples/cannot-resolve-sourcemap-warning/main.js b/test/function/samples/cannot-resolve-sourcemap-warning/main.js new file mode 100644 index 00000000000..a9244a453fb --- /dev/null +++ b/test/function/samples/cannot-resolve-sourcemap-warning/main.js @@ -0,0 +1 @@ +throw new Error('Not executed'); diff --git a/test/function/samples/circular-missed-reexports-2/_config.js b/test/function/samples/circular-missed-reexports-2/_config.js index e17a190410c..04075a8bb86 100644 --- a/test/function/samples/circular-missed-reexports-2/_config.js +++ b/test/function/samples/circular-missed-reexports-2/_config.js @@ -8,6 +8,7 @@ module.exports = { }, error: { code: 'MISSING_EXPORT', + id: path.resolve(__dirname, 'dep2.js'), frame: ` 1: export { doesNotExist } from './dep1.js'; ^`, diff --git a/test/function/samples/default-not-reexported/_config.js b/test/function/samples/default-not-reexported/_config.js index be866dd0b30..c0800c241c5 100644 --- a/test/function/samples/default-not-reexported/_config.js +++ b/test/function/samples/default-not-reexported/_config.js @@ -5,6 +5,7 @@ module.exports = { error: { code: 'MISSING_EXPORT', message: `'default' is not exported by foo.js, imported by main.js`, + id: path.resolve(__dirname, 'main.js'), pos: 7, watchFiles: [ path.resolve(__dirname, 'main.js'), diff --git a/test/function/samples/deprecated/dynamic-import-duplicates/_config.js b/test/function/samples/deprecated/dynamic-import-duplicates/_config.js new file mode 100644 index 00000000000..c71c26f5b04 --- /dev/null +++ b/test/function/samples/deprecated/dynamic-import-duplicates/_config.js @@ -0,0 +1,15 @@ +const assert = require('assert'); + +module.exports = { + description: 'Dynamic import inlining', + options: { + strictDeprecations: false, + inlineDynamicImports: true + }, + exports(exports) { + assert.equal(exports.x, 41); + return exports.promise.then(y => { + assert.equal(y, 42); + }); + } +}; diff --git a/test/function/samples/deprecated/dynamic-import-duplicates/foo.js b/test/function/samples/deprecated/dynamic-import-duplicates/foo.js new file mode 100644 index 00000000000..ddb14e1522c --- /dev/null +++ b/test/function/samples/deprecated/dynamic-import-duplicates/foo.js @@ -0,0 +1 @@ +export var x = 42; \ No newline at end of file diff --git a/test/function/samples/deprecated/dynamic-import-duplicates/main.js b/test/function/samples/deprecated/dynamic-import-duplicates/main.js new file mode 100644 index 00000000000..37a427d7d1a --- /dev/null +++ b/test/function/samples/deprecated/dynamic-import-duplicates/main.js @@ -0,0 +1,5 @@ +export var x = 41; + +export var promise = Promise.all([import('./foo'), import('./foo')]).then(foos => { + return foos[0].x; +}); diff --git a/test/function/samples/deprecated/dynamic-import-inlining/_config.js b/test/function/samples/deprecated/dynamic-import-inlining/_config.js new file mode 100644 index 00000000000..c71c26f5b04 --- /dev/null +++ b/test/function/samples/deprecated/dynamic-import-inlining/_config.js @@ -0,0 +1,15 @@ +const assert = require('assert'); + +module.exports = { + description: 'Dynamic import inlining', + options: { + strictDeprecations: false, + inlineDynamicImports: true + }, + exports(exports) { + assert.equal(exports.x, 41); + return exports.promise.then(y => { + assert.equal(y, 42); + }); + } +}; diff --git a/test/function/samples/deprecated/dynamic-import-inlining/foo.js b/test/function/samples/deprecated/dynamic-import-inlining/foo.js new file mode 100644 index 00000000000..ddb14e1522c --- /dev/null +++ b/test/function/samples/deprecated/dynamic-import-inlining/foo.js @@ -0,0 +1 @@ +export var x = 42; \ No newline at end of file diff --git a/test/function/samples/deprecated/dynamic-import-inlining/main.js b/test/function/samples/deprecated/dynamic-import-inlining/main.js new file mode 100644 index 00000000000..94869cb0b70 --- /dev/null +++ b/test/function/samples/deprecated/dynamic-import-inlining/main.js @@ -0,0 +1,5 @@ +export var x = 41; + +export var promise = import('./foo').then(foo => { + return foo.x; +}); diff --git a/test/function/samples/deprecated/emit-chunk/chunk-filename-not-available-render-start/_config.js b/test/function/samples/deprecated/emit-chunk/chunk-filename-not-available-render-start/_config.js new file mode 100644 index 00000000000..42a48e679eb --- /dev/null +++ b/test/function/samples/deprecated/emit-chunk/chunk-filename-not-available-render-start/_config.js @@ -0,0 +1,26 @@ +let chunkId; + +module.exports = { + description: 'Throws when accessing the filename in renderStart', + options: { + strictDeprecations: false, + input: 'main.js', + plugins: { + name: 'test-plugin', + buildStart() { + chunkId = this.emitChunk('chunk.js'); + }, + renderStart() { + this.getChunkFileName(chunkId); + } + } + }, + generateError: { + code: 'PLUGIN_ERROR', + hook: 'renderStart', + message: + 'Plugin error - Unable to get file name for chunk "chunk.js". Ensure that generate is called first.', + plugin: 'test-plugin', + pluginCode: 'CHUNK_NOT_GENERATED' + } +}; diff --git a/test/function/samples/deprecated/emit-chunk/chunk-filename-not-available-render-start/chunk.js b/test/function/samples/deprecated/emit-chunk/chunk-filename-not-available-render-start/chunk.js new file mode 100644 index 00000000000..36b1d61dd25 --- /dev/null +++ b/test/function/samples/deprecated/emit-chunk/chunk-filename-not-available-render-start/chunk.js @@ -0,0 +1 @@ +console.log('chunk'); diff --git a/test/function/samples/deprecated/emit-chunk/chunk-filename-not-available-render-start/main.js b/test/function/samples/deprecated/emit-chunk/chunk-filename-not-available-render-start/main.js new file mode 100644 index 00000000000..c0b933d7b56 --- /dev/null +++ b/test/function/samples/deprecated/emit-chunk/chunk-filename-not-available-render-start/main.js @@ -0,0 +1 @@ +console.log('main'); diff --git a/test/function/samples/deprecated/inline-dynamic-imports-bundle/_config.js b/test/function/samples/deprecated/inline-dynamic-imports-bundle/_config.js new file mode 100644 index 00000000000..ce23254e2ce --- /dev/null +++ b/test/function/samples/deprecated/inline-dynamic-imports-bundle/_config.js @@ -0,0 +1,18 @@ +const assert = require('assert'); +const path = require('path'); + +module.exports = { + description: 'ignores non-bundled modules when inlining dynamic imports', + options: { + strictDeprecations: false, + inlineDynamicImports: true, + plugins: { + generateBundle(options, bundle) { + assert.deepStrictEqual(Object.keys(bundle['main.js'].modules), [ + path.join(__dirname, 'lib.js'), + path.join(__dirname, 'main.js') + ]); + } + } + } +}; diff --git a/test/function/samples/deprecated/inline-dynamic-imports-bundle/lib.js b/test/function/samples/deprecated/inline-dynamic-imports-bundle/lib.js new file mode 100644 index 00000000000..9d7381d29f6 --- /dev/null +++ b/test/function/samples/deprecated/inline-dynamic-imports-bundle/lib.js @@ -0,0 +1 @@ +export const foo = 42; diff --git a/test/function/samples/deprecated/inline-dynamic-imports-bundle/main.js b/test/function/samples/deprecated/inline-dynamic-imports-bundle/main.js new file mode 100644 index 00000000000..0bb1f9f4b4a --- /dev/null +++ b/test/function/samples/deprecated/inline-dynamic-imports-bundle/main.js @@ -0,0 +1 @@ +export { foo } from './reexporter'; diff --git a/test/function/samples/deprecated/inline-dynamic-imports-bundle/reexporter.js b/test/function/samples/deprecated/inline-dynamic-imports-bundle/reexporter.js new file mode 100644 index 00000000000..26a05cf13db --- /dev/null +++ b/test/function/samples/deprecated/inline-dynamic-imports-bundle/reexporter.js @@ -0,0 +1 @@ +export { foo } from './lib'; diff --git a/test/function/samples/deprecated/inline-imports-with-manual/_config.js b/test/function/samples/deprecated/inline-imports-with-manual/_config.js new file mode 100644 index 00000000000..803c6f315cd --- /dev/null +++ b/test/function/samples/deprecated/inline-imports-with-manual/_config.js @@ -0,0 +1,15 @@ +module.exports = { + description: 'Manual chunks are not supported when inlining dynamic imports', + options: { + strictDeprecations: false, + input: ['main.js'], + inlineDynamicImports: true, + manualChunks: { + lib: ['lib.js'] + } + }, + generateError: { + code: 'INVALID_OPTION', + message: 'The "output.manualChunks" option is not supported for "output.inlineDynamicImports".' + } +}; diff --git a/test/function/samples/deprecated/inline-imports-with-manual/lib.js b/test/function/samples/deprecated/inline-imports-with-manual/lib.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/function/samples/deprecated/inline-imports-with-manual/lib.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/function/samples/deprecated/inline-imports-with-manual/main.js b/test/function/samples/deprecated/inline-imports-with-manual/main.js new file mode 100644 index 00000000000..4869dc82f38 --- /dev/null +++ b/test/function/samples/deprecated/inline-imports-with-manual/main.js @@ -0,0 +1 @@ +import('./lib').then(({value}) => assert.equal(value, 42)); diff --git a/test/function/samples/deprecated/inline-imports-with-multiple-array/_config.js b/test/function/samples/deprecated/inline-imports-with-multiple-array/_config.js new file mode 100644 index 00000000000..dd87192aaf2 --- /dev/null +++ b/test/function/samples/deprecated/inline-imports-with-multiple-array/_config.js @@ -0,0 +1,12 @@ +module.exports = { + description: 'Having multiple inputs in an array is not supported when inlining dynamic imports', + options: { + strictDeprecations: false, + input: ['main.js', 'lib.js'], + inlineDynamicImports: true + }, + generateError: { + code: 'INVALID_OPTION', + message: 'Multiple inputs are not supported for "output.inlineDynamicImports".' + } +}; diff --git a/test/function/samples/deprecated/inline-imports-with-multiple-array/lib.js b/test/function/samples/deprecated/inline-imports-with-multiple-array/lib.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/function/samples/deprecated/inline-imports-with-multiple-array/lib.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/function/samples/deprecated/inline-imports-with-multiple-array/main.js b/test/function/samples/deprecated/inline-imports-with-multiple-array/main.js new file mode 100644 index 00000000000..4869dc82f38 --- /dev/null +++ b/test/function/samples/deprecated/inline-imports-with-multiple-array/main.js @@ -0,0 +1 @@ +import('./lib').then(({value}) => assert.equal(value, 42)); diff --git a/test/function/samples/deprecated/inline-imports-with-multiple-object/_config.js b/test/function/samples/deprecated/inline-imports-with-multiple-object/_config.js new file mode 100644 index 00000000000..58bd7b00a6f --- /dev/null +++ b/test/function/samples/deprecated/inline-imports-with-multiple-object/_config.js @@ -0,0 +1,12 @@ +module.exports = { + description: 'Having multiple inputs in an object is not supported when inlining dynamic imports', + options: { + strictDeprecations: false, + input: { main: 'main.js', lib: 'lib.js' }, + inlineDynamicImports: true + }, + generateError: { + code: 'INVALID_OPTION', + message: 'Multiple inputs are not supported for "output.inlineDynamicImports".' + } +}; diff --git a/test/function/samples/deprecated/inline-imports-with-multiple-object/lib.js b/test/function/samples/deprecated/inline-imports-with-multiple-object/lib.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/function/samples/deprecated/inline-imports-with-multiple-object/lib.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/function/samples/deprecated/inline-imports-with-multiple-object/main.js b/test/function/samples/deprecated/inline-imports-with-multiple-object/main.js new file mode 100644 index 00000000000..4869dc82f38 --- /dev/null +++ b/test/function/samples/deprecated/inline-imports-with-multiple-object/main.js @@ -0,0 +1 @@ +import('./lib').then(({value}) => assert.equal(value, 42)); diff --git a/test/function/samples/deprecated/manual-chunks-conflict/_config.js b/test/function/samples/deprecated/manual-chunks-conflict/_config.js new file mode 100644 index 00000000000..8ef99e03397 --- /dev/null +++ b/test/function/samples/deprecated/manual-chunks-conflict/_config.js @@ -0,0 +1,17 @@ +module.exports = { + description: 'Throws for conflicts between manual chunks', + options: { + strictDeprecations: false, + input: ['main.js'], + output: { + manualChunks: { + dep1: ['dep.js'], + dep2: ['dep.js'] + } + } + }, + generateError: { + code: 'INVALID_CHUNK', + message: `Cannot assign dep.js to the "dep2" chunk as it is already in the "dep1" chunk.` + } +}; diff --git a/test/function/samples/deprecated/manual-chunks-conflict/dep.js b/test/function/samples/deprecated/manual-chunks-conflict/dep.js new file mode 100644 index 00000000000..b74a9837c07 --- /dev/null +++ b/test/function/samples/deprecated/manual-chunks-conflict/dep.js @@ -0,0 +1 @@ +console.log('dep'); diff --git a/test/function/samples/deprecated/manual-chunks-conflict/main.js b/test/function/samples/deprecated/manual-chunks-conflict/main.js new file mode 100644 index 00000000000..d6cf3b02443 --- /dev/null +++ b/test/function/samples/deprecated/manual-chunks-conflict/main.js @@ -0,0 +1 @@ +import './dep.js'; diff --git a/test/function/samples/deprecated/manual-chunks-info/_config.js b/test/function/samples/deprecated/manual-chunks-info/_config.js new file mode 100644 index 00000000000..962574e7cff --- /dev/null +++ b/test/function/samples/deprecated/manual-chunks-info/_config.js @@ -0,0 +1,75 @@ +const assert = require('assert'); +const path = require('path'); + +function getId(name) { + return path.resolve(__dirname, `${name}.js`); +} + +module.exports = { + description: 'provides additional chunk information to a manualChunks function', + options: { + strictDeprecations: false, + external: 'external', + output: { + manualChunks(id, { getModuleIds, getModuleInfo }) { + assert.deepStrictEqual( + [...getModuleIds()], + [getId('main'), 'external', getId('lib'), getId('dynamic')] + ); + assert.deepStrictEqual( + [...getModuleIds()].map(id => getModuleInfo(id)), + [ + { + dynamicImporters: [], + dynamicallyImportedIds: [getId('dynamic')], + hasModuleSideEffects: true, + id: getId('main'), + implicitlyLoadedAfterOneOf: [], + implicitlyLoadedBefore: [], + importers: [], + importedIds: [getId('lib'), 'external'], + isEntry: true, + isExternal: false + }, + { + dynamicImporters: [getId('dynamic')], + dynamicallyImportedIds: [], + hasModuleSideEffects: true, + id: 'external', + implicitlyLoadedAfterOneOf: [], + implicitlyLoadedBefore: [], + importers: [getId('main')], + importedIds: [], + isEntry: false, + isExternal: true + }, + { + dynamicImporters: [], + dynamicallyImportedIds: [], + hasModuleSideEffects: true, + id: getId('lib'), + implicitlyLoadedAfterOneOf: [], + implicitlyLoadedBefore: [], + importers: [getId('dynamic'), getId('main')], + importedIds: [], + isEntry: false, + isExternal: false + }, + { + dynamicImporters: [getId('main')], + dynamicallyImportedIds: ['external'], + hasModuleSideEffects: true, + id: getId('dynamic'), + implicitlyLoadedAfterOneOf: [], + implicitlyLoadedBefore: [], + importers: [], + importedIds: [getId('lib')], + isEntry: false, + isExternal: false + } + ] + ); + } + } + } +}; diff --git a/test/function/samples/deprecated/manual-chunks-info/dynamic.js b/test/function/samples/deprecated/manual-chunks-info/dynamic.js new file mode 100644 index 00000000000..2d2ab6f359b --- /dev/null +++ b/test/function/samples/deprecated/manual-chunks-info/dynamic.js @@ -0,0 +1,2 @@ +export const promise = import('external'); +export { default as internal } from './lib'; diff --git a/test/function/samples/deprecated/manual-chunks-info/lib.js b/test/function/samples/deprecated/manual-chunks-info/lib.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/function/samples/deprecated/manual-chunks-info/lib.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/function/samples/deprecated/manual-chunks-info/main.js b/test/function/samples/deprecated/manual-chunks-info/main.js new file mode 100644 index 00000000000..c79c2fe09f7 --- /dev/null +++ b/test/function/samples/deprecated/manual-chunks-info/main.js @@ -0,0 +1,3 @@ +export const promise = import('./dynamic'); +export { default as value } from './lib'; +export { external } from 'external'; diff --git a/test/function/samples/deprecated/manual-chunks-preserve-modules/_config.js b/test/function/samples/deprecated/manual-chunks-preserve-modules/_config.js new file mode 100644 index 00000000000..b896cd2aaa2 --- /dev/null +++ b/test/function/samples/deprecated/manual-chunks-preserve-modules/_config.js @@ -0,0 +1,15 @@ +module.exports = { + description: 'Assigning manual chunks fails when preserving modules', + options: { + strictDeprecations: false, + input: ['main.js'], + preserveModules: true, + manualChunks: { + lib: ['lib.js'] + } + }, + generateError: { + code: 'INVALID_OPTION', + message: 'The "output.manualChunks" option is not supported for "output.preserveModules".' + } +}; diff --git a/test/function/samples/deprecated/manual-chunks-preserve-modules/lib.js b/test/function/samples/deprecated/manual-chunks-preserve-modules/lib.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/function/samples/deprecated/manual-chunks-preserve-modules/lib.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/function/samples/deprecated/manual-chunks-preserve-modules/main.js b/test/function/samples/deprecated/manual-chunks-preserve-modules/main.js new file mode 100644 index 00000000000..0786352d0f9 --- /dev/null +++ b/test/function/samples/deprecated/manual-chunks-preserve-modules/main.js @@ -0,0 +1,3 @@ +import { value } from './lib'; + +assert.equal(value, 42); diff --git a/test/function/samples/deprecated/nested-inlined-dynamic-import-1/_config.js b/test/function/samples/deprecated/nested-inlined-dynamic-import-1/_config.js new file mode 100644 index 00000000000..ad243453388 --- /dev/null +++ b/test/function/samples/deprecated/nested-inlined-dynamic-import-1/_config.js @@ -0,0 +1,12 @@ +const assert = require('assert'); + +module.exports = { + description: + 'deconflicts variables when nested dynamic imports are inlined via inlineDynamicImports', + options: { + output: { inlineDynamicImports: true } + }, + exports(exports) { + return exports().then(result => assert.strictEqual(result, 43)); + } +}; diff --git a/test/function/samples/deprecated/nested-inlined-dynamic-import-1/foo.js b/test/function/samples/deprecated/nested-inlined-dynamic-import-1/foo.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/function/samples/deprecated/nested-inlined-dynamic-import-1/foo.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/function/samples/deprecated/nested-inlined-dynamic-import-1/main.js b/test/function/samples/deprecated/nested-inlined-dynamic-import-1/main.js new file mode 100644 index 00000000000..24dfcc33be9 --- /dev/null +++ b/test/function/samples/deprecated/nested-inlined-dynamic-import-1/main.js @@ -0,0 +1,4 @@ +export default () => { + const foo = 1; + return import('./foo.js').then(ns => ns.value + foo); +}; diff --git a/test/function/samples/deprecated/preserveModules/inline-dynamic-imports/_config.js b/test/function/samples/deprecated/preserveModules/inline-dynamic-imports/_config.js new file mode 100644 index 00000000000..af0f5fe5964 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/inline-dynamic-imports/_config.js @@ -0,0 +1,14 @@ +module.exports = { + description: 'Inlining dynamic imports is not supported when preserving modules', + options: { + strictDeprecations: false, + input: ['main.js'], + preserveModules: true, + inlineDynamicImports: true + }, + generateError: { + code: 'INVALID_OPTION', + message: + 'The "output.inlineDynamicImports" option is not supported for "output.preserveModules".' + } +}; diff --git a/test/function/samples/deprecated/preserveModules/inline-dynamic-imports/lib.js b/test/function/samples/deprecated/preserveModules/inline-dynamic-imports/lib.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/inline-dynamic-imports/lib.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/function/samples/deprecated/preserveModules/inline-dynamic-imports/main.js b/test/function/samples/deprecated/preserveModules/inline-dynamic-imports/main.js new file mode 100644 index 00000000000..4869dc82f38 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/inline-dynamic-imports/main.js @@ -0,0 +1 @@ +import('./lib').then(({value}) => assert.equal(value, 42)); diff --git a/test/function/samples/deprecated/preserveModules/invalid-default-export-mode/_config.js b/test/function/samples/deprecated/preserveModules/invalid-default-export-mode/_config.js new file mode 100644 index 00000000000..88944569e52 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/invalid-default-export-mode/_config.js @@ -0,0 +1,16 @@ +module.exports = { + description: 'throws when using default export mode with named exports', + options: { + strictDeprecations: false, + input: ['main.js'], + preserveModules: true, + output: { + exports: 'default' + } + }, + generateError: { + code: 'INVALID_EXPORT_OPTION', + message: + '"default" was specified for "output.exports", but entry module "lib.js" has the following exports: value' + } +}; diff --git a/test/function/samples/deprecated/preserveModules/invalid-default-export-mode/lib.js b/test/function/samples/deprecated/preserveModules/invalid-default-export-mode/lib.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/invalid-default-export-mode/lib.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/function/samples/deprecated/preserveModules/invalid-default-export-mode/main.js b/test/function/samples/deprecated/preserveModules/invalid-default-export-mode/main.js new file mode 100644 index 00000000000..c379b667da9 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/invalid-default-export-mode/main.js @@ -0,0 +1,3 @@ +import { value } from './lib.js'; +assert.equal(value, 42); +export default 43; diff --git a/test/function/samples/deprecated/preserveModules/invalid-no-preserve-entry-signatures/_config.js b/test/function/samples/deprecated/preserveModules/invalid-no-preserve-entry-signatures/_config.js new file mode 100644 index 00000000000..dc378668cc5 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/invalid-no-preserve-entry-signatures/_config.js @@ -0,0 +1,14 @@ +module.exports = { + description: 'throws when setting preserveEntrySignatures to false', + options: { + strictDeprecations: false, + input: ['main.js'], + preserveModules: true, + preserveEntrySignatures: false + }, + generateError: { + code: 'INVALID_OPTION', + message: + 'Setting "preserveEntrySignatures" to "false" is not supported for "output.preserveModules".' + } +}; diff --git a/test/function/samples/deprecated/preserveModules/invalid-no-preserve-entry-signatures/main.js b/test/function/samples/deprecated/preserveModules/invalid-no-preserve-entry-signatures/main.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/invalid-no-preserve-entry-signatures/main.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/function/samples/deprecated/preserveModules/invalid-none-export-mode/_config.js b/test/function/samples/deprecated/preserveModules/invalid-none-export-mode/_config.js new file mode 100644 index 00000000000..e9fadad6a3e --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/invalid-none-export-mode/_config.js @@ -0,0 +1,16 @@ +module.exports = { + description: 'throws when using none export mode with named exports', + options: { + strictDeprecations: false, + input: ['main.js'], + preserveModules: true, + output: { + exports: 'none' + } + }, + generateError: { + code: 'INVALID_EXPORT_OPTION', + message: + '"none" was specified for "output.exports", but entry module "lib.js" has the following exports: value' + } +}; diff --git a/test/function/samples/deprecated/preserveModules/invalid-none-export-mode/lib.js b/test/function/samples/deprecated/preserveModules/invalid-none-export-mode/lib.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/invalid-none-export-mode/lib.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/function/samples/deprecated/preserveModules/invalid-none-export-mode/main.js b/test/function/samples/deprecated/preserveModules/invalid-none-export-mode/main.js new file mode 100644 index 00000000000..f26e8d860a6 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/invalid-none-export-mode/main.js @@ -0,0 +1,3 @@ +import { value } from './lib.js'; + +assert.equal(value, 42); diff --git a/test/function/samples/deprecated/preserveModules/manual-chunks/_config.js b/test/function/samples/deprecated/preserveModules/manual-chunks/_config.js new file mode 100644 index 00000000000..3bef57f7752 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/manual-chunks/_config.js @@ -0,0 +1,17 @@ +module.exports = { + description: 'Assigning manual chunks fails when preserving modules', + options: { + strictDeprecations: false, + input: ['main.js'], + preserveModules: true, + output: { + manualChunks: { + lib: ['lib.js'] + } + } + }, + generateError: { + code: 'INVALID_OPTION', + message: 'The "output.manualChunks" option is not supported for "output.preserveModules".' + } +}; diff --git a/test/function/samples/deprecated/preserveModules/manual-chunks/lib.js b/test/function/samples/deprecated/preserveModules/manual-chunks/lib.js new file mode 100644 index 00000000000..46d3ca8c61f --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/manual-chunks/lib.js @@ -0,0 +1 @@ +export const value = 42; diff --git a/test/function/samples/deprecated/preserveModules/manual-chunks/main.js b/test/function/samples/deprecated/preserveModules/manual-chunks/main.js new file mode 100644 index 00000000000..0786352d0f9 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/manual-chunks/main.js @@ -0,0 +1,3 @@ +import { value } from './lib'; + +assert.equal(value, 42); diff --git a/test/function/samples/deprecated/preserveModules/mixed-exports/_config.js b/test/function/samples/deprecated/preserveModules/mixed-exports/_config.js new file mode 100644 index 00000000000..9ac628d5122 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/mixed-exports/_config.js @@ -0,0 +1,26 @@ +const path = require('path'); + +module.exports = { + description: 'warns for mixed exports in all chunks when preserving modules', + options: { + strictDeprecations: false, + input: ['main.js'], + preserveModules: true + }, + warnings: [ + { + code: 'MIXED_EXPORTS', + id: path.resolve(__dirname, 'main.js'), + message: + 'Entry module "main.js" is using named and default exports together. Consumers of your bundle will have to use `chunk["default"]` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning', + url: 'https://rollupjs.org/guide/en/#output-exports' + }, + { + code: 'MIXED_EXPORTS', + id: path.resolve(__dirname, 'lib1.js'), + message: + 'Entry module "lib1.js" is using named and default exports together. Consumers of your bundle will have to use `chunk["default"]` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning', + url: 'https://rollupjs.org/guide/en/#output-exports' + } + ] +}; diff --git a/test/function/samples/deprecated/preserveModules/mixed-exports/lib1.js b/test/function/samples/deprecated/preserveModules/mixed-exports/lib1.js new file mode 100644 index 00000000000..fea73e2bf15 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/mixed-exports/lib1.js @@ -0,0 +1,2 @@ +export const value1 = 42; +export default 42; diff --git a/test/function/samples/deprecated/preserveModules/mixed-exports/lib2.js b/test/function/samples/deprecated/preserveModules/mixed-exports/lib2.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/mixed-exports/lib2.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/function/samples/deprecated/preserveModules/mixed-exports/lib3.js b/test/function/samples/deprecated/preserveModules/mixed-exports/lib3.js new file mode 100644 index 00000000000..baeef4a82d8 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/mixed-exports/lib3.js @@ -0,0 +1 @@ +export const value3 = 42; diff --git a/test/function/samples/deprecated/preserveModules/mixed-exports/main.js b/test/function/samples/deprecated/preserveModules/mixed-exports/main.js new file mode 100644 index 00000000000..0bd8737542e --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/mixed-exports/main.js @@ -0,0 +1,11 @@ +import lib1, { value1 } from './lib1'; +import lib2 from './lib2'; +import { value3 } from './lib3'; + +assert.equal(lib1, 42); +assert.equal(value1, 42); +assert.equal(lib2, 42); +assert.equal(value3, 42); + +export const value = 42; +export default 42; diff --git a/test/function/samples/deprecated/preserveModules/virtual-modules-conflict/_config.js b/test/function/samples/deprecated/preserveModules/virtual-modules-conflict/_config.js new file mode 100644 index 00000000000..0f024647c97 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/virtual-modules-conflict/_config.js @@ -0,0 +1,33 @@ +const assert = require('assert'); + +module.exports = { + description: 'Generates actual files for virtual modules when preserving modules', + options: { + strictDeprecations: false, + input: ['main.js'], + preserveModules: true, + plugins: [ + { + resolveId(id) { + if (id === '\0virtualModule.js') return id; + }, + load(id) { + if (id !== '\0virtualModule.js') return null; + return 'export const virtual = "Virtual!";\n'; + }, + transform(code, id) { + if (id === '\0virtualModule.js') return null; + return 'import {virtual} from "\0virtualModule.js";\n' + code; + } + } + ] + }, + bundle(bundle) { + return bundle.generate({ format: 'es' }).then(generated => + assert.deepEqual( + generated.output.map(chunk => chunk.fileName), + ['main.js', '_virtual/_virtualModule.js', '_virtual/_virtualModule2.js'] + ) + ); + } +}; diff --git a/test/function/samples/deprecated/preserveModules/virtual-modules-conflict/_virtual/_virtualModule.js b/test/function/samples/deprecated/preserveModules/virtual-modules-conflict/_virtual/_virtualModule.js new file mode 100644 index 00000000000..3901a31bd31 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/virtual-modules-conflict/_virtual/_virtualModule.js @@ -0,0 +1,3 @@ +export const notSoVirtual = 'real'; + +assert.equal(virtual, 'Virtual!'); diff --git a/test/function/samples/deprecated/preserveModules/virtual-modules-conflict/main.js b/test/function/samples/deprecated/preserveModules/virtual-modules-conflict/main.js new file mode 100644 index 00000000000..7653b354896 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/virtual-modules-conflict/main.js @@ -0,0 +1,4 @@ +import { notSoVirtual } from './_virtual/_virtualModule'; + +assert.equal(virtual, 'Virtual!'); +assert.equal(notSoVirtual, 'real'); diff --git a/test/function/samples/deprecated/preserveModules/virtual-modules/_config.js b/test/function/samples/deprecated/preserveModules/virtual-modules/_config.js new file mode 100644 index 00000000000..47d4dfa4303 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/virtual-modules/_config.js @@ -0,0 +1,33 @@ +const assert = require('assert'); + +module.exports = { + description: 'Generates actual files for virtual modules when preserving modules', + options: { + strictDeprecations: false, + input: ['main.js'], + preserveModules: true, + plugins: [ + { + resolveId(id) { + if (id === '\0virtualModule') return id; + }, + load(id) { + if (id !== '\0virtualModule') return null; + return 'export const virtual = "Virtual!";\n'; + }, + transform(code, id) { + if (id === '\0virtualModule') return null; + return 'import {virtual} from "\0virtualModule";\n' + code; + } + } + ] + }, + bundle(bundle) { + return bundle.generate({ format: 'es' }).then(generated => + assert.deepEqual( + generated.output.map(chunk => chunk.fileName), + ['main.js', '_virtual/_virtualModule', 'lib/lib.js'] + ) + ); + } +}; diff --git a/test/function/samples/deprecated/preserveModules/virtual-modules/lib/lib.js b/test/function/samples/deprecated/preserveModules/virtual-modules/lib/lib.js new file mode 100644 index 00000000000..505982998fa --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/virtual-modules/lib/lib.js @@ -0,0 +1 @@ +assert.equal(virtual, 'Virtual!'); diff --git a/test/function/samples/deprecated/preserveModules/virtual-modules/main.js b/test/function/samples/deprecated/preserveModules/virtual-modules/main.js new file mode 100644 index 00000000000..f983b2526f1 --- /dev/null +++ b/test/function/samples/deprecated/preserveModules/virtual-modules/main.js @@ -0,0 +1,3 @@ +import './lib/lib.js'; + +assert.equal(virtual, 'Virtual!'); diff --git a/test/function/samples/deprecations/inlineDynamicImports/_config.js b/test/function/samples/deprecations/inlineDynamicImports/_config.js new file mode 100644 index 00000000000..82055f9b9ed --- /dev/null +++ b/test/function/samples/deprecations/inlineDynamicImports/_config.js @@ -0,0 +1,11 @@ +module.exports = { + description: 'marks the "inlineDynamicImports" input option as deprecated', + options: { + inlineDynamicImports: true + }, + error: { + code: 'DEPRECATED_FEATURE', + message: + 'The "inlineDynamicImports" option is deprecated. Use the "output.inlineDynamicImports" option instead.' + } +}; diff --git a/test/function/samples/deprecations/inlineDynamicImports/main.js b/test/function/samples/deprecations/inlineDynamicImports/main.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/function/samples/deprecations/inlineDynamicImports/main.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/function/samples/deprecations/manualChunks/_config.js b/test/function/samples/deprecations/manualChunks/_config.js new file mode 100644 index 00000000000..186f248569b --- /dev/null +++ b/test/function/samples/deprecations/manualChunks/_config.js @@ -0,0 +1,13 @@ +module.exports = { + description: 'marks the "manualChunks" input option as deprecated', + options: { + manualChunks() { + return 'manual'; + } + }, + error: { + code: 'DEPRECATED_FEATURE', + message: + 'The "manualChunks" option is deprecated. Use the "output.manualChunks" option instead.' + } +}; diff --git a/test/function/samples/deprecations/manualChunks/main.js b/test/function/samples/deprecations/manualChunks/main.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/function/samples/deprecations/manualChunks/main.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/function/samples/deprecations/preserveModules/_config.js b/test/function/samples/deprecations/preserveModules/_config.js new file mode 100644 index 00000000000..5e29e525797 --- /dev/null +++ b/test/function/samples/deprecations/preserveModules/_config.js @@ -0,0 +1,11 @@ +module.exports = { + description: 'marks the "preserveModules" input option as deprecated', + options: { + preserveModules: true + }, + error: { + code: 'DEPRECATED_FEATURE', + message: + 'The "preserveModules" option is deprecated. Use the "output.preserveModules" option instead.' + } +}; diff --git a/test/function/samples/deprecations/preserveModules/main.js b/test/function/samples/deprecations/preserveModules/main.js new file mode 100644 index 00000000000..7a4e8a723a4 --- /dev/null +++ b/test/function/samples/deprecations/preserveModules/main.js @@ -0,0 +1 @@ +export default 42; diff --git a/test/function/samples/double-default-export/_config.js b/test/function/samples/double-default-export/_config.js index 792dad2d2db..9a928a5e040 100644 --- a/test/function/samples/double-default-export/_config.js +++ b/test/function/samples/double-default-export/_config.js @@ -5,6 +5,7 @@ module.exports = { error: { code: 'PARSE_ERROR', message: `Duplicate export 'default'`, + id: path.resolve(__dirname, 'foo.js'), parserError: { loc: { column: 7, diff --git a/test/function/samples/double-named-export/_config.js b/test/function/samples/double-named-export/_config.js index e9d7d5d5f54..7c24f8d04db 100644 --- a/test/function/samples/double-named-export/_config.js +++ b/test/function/samples/double-named-export/_config.js @@ -5,6 +5,7 @@ module.exports = { error: { code: 'PARSE_ERROR', message: `Duplicate export 'foo'`, + id: path.resolve(__dirname, 'foo.js'), parserError: { loc: { column: 9, diff --git a/test/function/samples/double-named-reexport/_config.js b/test/function/samples/double-named-reexport/_config.js index 8fae7ea261a..597181042c6 100644 --- a/test/function/samples/double-named-reexport/_config.js +++ b/test/function/samples/double-named-reexport/_config.js @@ -5,6 +5,7 @@ module.exports = { error: { code: 'PARSE_ERROR', message: `Duplicate export 'foo'`, + id: path.resolve(__dirname, 'foo.js'), parserError: { loc: { column: 9, diff --git a/test/function/samples/duplicate-import-fails/_config.js b/test/function/samples/duplicate-import-fails/_config.js index e31695fba5f..a52a5446a20 100644 --- a/test/function/samples/duplicate-import-fails/_config.js +++ b/test/function/samples/duplicate-import-fails/_config.js @@ -5,6 +5,7 @@ module.exports = { error: { code: 'PARSE_ERROR', message: `Identifier 'a' has already been declared`, + id: path.resolve(__dirname, 'main.js'), parserError: { loc: { column: 9, diff --git a/test/function/samples/duplicate-import-specifier-fails/_config.js b/test/function/samples/duplicate-import-specifier-fails/_config.js index 02e51693dc4..a62bacddad9 100644 --- a/test/function/samples/duplicate-import-specifier-fails/_config.js +++ b/test/function/samples/duplicate-import-specifier-fails/_config.js @@ -5,6 +5,7 @@ module.exports = { error: { code: 'PARSE_ERROR', message: `Identifier 'a' has already been declared`, + id: path.resolve(__dirname, 'main.js'), parserError: { loc: { column: 12, diff --git a/test/function/samples/dynamic-import-duplicates/_config.js b/test/function/samples/dynamic-import-duplicates/_config.js index 9fd9be2f7c6..8ff6c25a426 100644 --- a/test/function/samples/dynamic-import-duplicates/_config.js +++ b/test/function/samples/dynamic-import-duplicates/_config.js @@ -3,7 +3,7 @@ const assert = require('assert'); module.exports = { description: 'Dynamic import inlining', options: { - inlineDynamicImports: true + output: { inlineDynamicImports: true } }, exports(exports) { assert.equal(exports.x, 41); diff --git a/test/function/samples/dynamic-import-inlining/_config.js b/test/function/samples/dynamic-import-inlining/_config.js index 9fd9be2f7c6..8ff6c25a426 100644 --- a/test/function/samples/dynamic-import-inlining/_config.js +++ b/test/function/samples/dynamic-import-inlining/_config.js @@ -3,7 +3,7 @@ const assert = require('assert'); module.exports = { description: 'Dynamic import inlining', options: { - inlineDynamicImports: true + output: { inlineDynamicImports: true } }, exports(exports) { assert.equal(exports.x, 41); diff --git a/test/function/samples/emit-file/chunk-filename-not-available-buildEnd/_config.js b/test/function/samples/emit-file/chunk-filename-not-available-buildEnd/_config.js new file mode 100644 index 00000000000..95688f451a8 --- /dev/null +++ b/test/function/samples/emit-file/chunk-filename-not-available-buildEnd/_config.js @@ -0,0 +1,25 @@ +let chunkId; + +module.exports = { + description: 'Throws when accessing the filename before it has been generated in buildEnd', + options: { + input: 'main.js', + plugins: { + name: 'test-plugin', + buildStart() { + chunkId = this.emitFile({ type: 'chunk', id: 'chunk.js' }); + }, + buildEnd() { + this.getFileName(chunkId); + } + } + }, + error: { + code: 'PLUGIN_ERROR', + hook: 'buildEnd', + message: + 'Plugin error - Unable to get file name for chunk "chunk.js". Ensure that generate is called first.', + plugin: 'test-plugin', + pluginCode: 'CHUNK_NOT_GENERATED' + } +}; diff --git a/test/function/samples/emit-file/chunk-filename-not-available-buildEnd/chunk.js b/test/function/samples/emit-file/chunk-filename-not-available-buildEnd/chunk.js new file mode 100644 index 00000000000..36b1d61dd25 --- /dev/null +++ b/test/function/samples/emit-file/chunk-filename-not-available-buildEnd/chunk.js @@ -0,0 +1 @@ +console.log('chunk'); diff --git a/test/function/samples/emit-file/chunk-filename-not-available-buildEnd/main.js b/test/function/samples/emit-file/chunk-filename-not-available-buildEnd/main.js new file mode 100644 index 00000000000..c0b933d7b56 --- /dev/null +++ b/test/function/samples/emit-file/chunk-filename-not-available-buildEnd/main.js @@ -0,0 +1 @@ +console.log('main'); diff --git a/test/function/samples/emit-file/chunk-filename-not-available-renderStart/_config.js b/test/function/samples/emit-file/chunk-filename-not-available-renderStart/_config.js new file mode 100644 index 00000000000..8a35d9cfc2e --- /dev/null +++ b/test/function/samples/emit-file/chunk-filename-not-available-renderStart/_config.js @@ -0,0 +1,25 @@ +let chunkId; + +module.exports = { + description: 'Throws when accessing the filename before it has been generated in renderStart', + options: { + input: 'main.js', + plugins: { + name: 'test-plugin', + buildStart() { + chunkId = this.emitFile({ type: 'chunk', id: 'chunk.js' }); + }, + renderStart() { + this.getFileName(chunkId); + } + } + }, + generateError: { + code: 'PLUGIN_ERROR', + hook: 'renderStart', + message: + 'Plugin error - Unable to get file name for chunk "chunk.js". Ensure that generate is called first.', + plugin: 'test-plugin', + pluginCode: 'CHUNK_NOT_GENERATED' + } +}; diff --git a/test/function/samples/emit-file/chunk-filename-not-available-renderStart/chunk.js b/test/function/samples/emit-file/chunk-filename-not-available-renderStart/chunk.js new file mode 100644 index 00000000000..36b1d61dd25 --- /dev/null +++ b/test/function/samples/emit-file/chunk-filename-not-available-renderStart/chunk.js @@ -0,0 +1 @@ +console.log('chunk'); diff --git a/test/function/samples/emit-file/chunk-filename-not-available-renderStart/main.js b/test/function/samples/emit-file/chunk-filename-not-available-renderStart/main.js new file mode 100644 index 00000000000..c0b933d7b56 --- /dev/null +++ b/test/function/samples/emit-file/chunk-filename-not-available-renderStart/main.js @@ -0,0 +1 @@ +console.log('main'); diff --git a/test/function/samples/error-after-transform-should-throw-correct-location/_config.js b/test/function/samples/error-after-transform-should-throw-correct-location/_config.js index 58c2caa9550..9cc9f582a25 100644 --- a/test/function/samples/error-after-transform-should-throw-correct-location/_config.js +++ b/test/function/samples/error-after-transform-should-throw-correct-location/_config.js @@ -21,6 +21,7 @@ module.exports = { error: { code: 'MISSING_EXPORT', message: `'default' is not exported by empty.js, imported by main.js`, + id: path.resolve(__dirname, 'main.js'), pos: 44, watchFiles: [path.resolve(__dirname, 'main.js'), path.resolve(__dirname, 'empty.js')], loc: { diff --git a/test/function/samples/error-parse-json/_config.js b/test/function/samples/error-parse-json/_config.js index 62dbc19fa45..a7d15c32b53 100644 --- a/test/function/samples/error-parse-json/_config.js +++ b/test/function/samples/error-parse-json/_config.js @@ -6,6 +6,7 @@ module.exports = { error: { code: 'PARSE_ERROR', message: 'Unexpected token (Note that you need @rollup/plugin-json to import JSON files)', + id: path.resolve(__dirname, 'file.json'), parserError: { loc: { column: 8, diff --git a/test/function/samples/error-parse-unknown-extension/_config.js b/test/function/samples/error-parse-unknown-extension/_config.js index a9949efb4ef..3f8a81d873b 100644 --- a/test/function/samples/error-parse-unknown-extension/_config.js +++ b/test/function/samples/error-parse-unknown-extension/_config.js @@ -7,6 +7,7 @@ module.exports = { code: 'PARSE_ERROR', message: 'Unexpected token (Note that you need plugins to import files that are not JavaScript)', + id: path.resolve(__dirname, 'file.css'), parserError: { loc: { column: 0, diff --git a/test/function/samples/export-not-at-top-level-fails/_config.js b/test/function/samples/export-not-at-top-level-fails/_config.js index 17680e24306..3ce0c368be7 100644 --- a/test/function/samples/export-not-at-top-level-fails/_config.js +++ b/test/function/samples/export-not-at-top-level-fails/_config.js @@ -5,6 +5,7 @@ module.exports = { error: { code: 'PARSE_ERROR', message: `'import' and 'export' may only appear at the top level`, + id: path.resolve(__dirname, 'main.js'), parserError: { loc: { column: 2, diff --git a/test/function/samples/import-not-at-top-level-fails/_config.js b/test/function/samples/import-not-at-top-level-fails/_config.js index a6da4dffaad..2aef5c09f88 100644 --- a/test/function/samples/import-not-at-top-level-fails/_config.js +++ b/test/function/samples/import-not-at-top-level-fails/_config.js @@ -5,6 +5,7 @@ module.exports = { error: { code: 'PARSE_ERROR', message: `'import' and 'export' may only appear at the top level`, + id: path.resolve(__dirname, 'main.js'), parserError: { loc: { column: 2, diff --git a/test/function/samples/import-of-unexported-fails/_config.js b/test/function/samples/import-of-unexported-fails/_config.js index 6f5fa5552b2..f5f8c261651 100644 --- a/test/function/samples/import-of-unexported-fails/_config.js +++ b/test/function/samples/import-of-unexported-fails/_config.js @@ -5,6 +5,7 @@ module.exports = { error: { code: 'MISSING_EXPORT', message: `'default' is not exported by empty.js, imported by main.js`, + id: path.resolve(__dirname, 'main.js'), pos: 7, watchFiles: [path.resolve(__dirname, 'main.js'), path.resolve(__dirname, 'empty.js')], loc: { diff --git a/test/function/samples/inline-dynamic-imports-bundle/_config.js b/test/function/samples/inline-dynamic-imports-bundle/_config.js new file mode 100644 index 00000000000..79be84373bc --- /dev/null +++ b/test/function/samples/inline-dynamic-imports-bundle/_config.js @@ -0,0 +1,17 @@ +const assert = require('assert'); +const path = require('path'); + +module.exports = { + description: 'ignores non-bundled modules when inlining dynamic imports', + options: { + output: { inlineDynamicImports: true }, + plugins: { + generateBundle(options, bundle) { + assert.deepStrictEqual(Object.keys(bundle['main.js'].modules), [ + path.join(__dirname, 'lib.js'), + path.join(__dirname, 'main.js') + ]); + } + } + } +}; diff --git a/test/function/samples/inline-dynamic-imports-bundle/lib.js b/test/function/samples/inline-dynamic-imports-bundle/lib.js new file mode 100644 index 00000000000..9d7381d29f6 --- /dev/null +++ b/test/function/samples/inline-dynamic-imports-bundle/lib.js @@ -0,0 +1 @@ +export const foo = 42; diff --git a/test/function/samples/inline-dynamic-imports-bundle/main.js b/test/function/samples/inline-dynamic-imports-bundle/main.js new file mode 100644 index 00000000000..0bb1f9f4b4a --- /dev/null +++ b/test/function/samples/inline-dynamic-imports-bundle/main.js @@ -0,0 +1 @@ +export { foo } from './reexporter'; diff --git a/test/function/samples/inline-dynamic-imports-bundle/reexporter.js b/test/function/samples/inline-dynamic-imports-bundle/reexporter.js new file mode 100644 index 00000000000..26a05cf13db --- /dev/null +++ b/test/function/samples/inline-dynamic-imports-bundle/reexporter.js @@ -0,0 +1 @@ +export { foo } from './lib'; diff --git a/test/function/samples/inline-imports-with-manual/_config.js b/test/function/samples/inline-imports-with-manual/_config.js index 2b3af2a2835..e5e7877082c 100644 --- a/test/function/samples/inline-imports-with-manual/_config.js +++ b/test/function/samples/inline-imports-with-manual/_config.js @@ -2,13 +2,15 @@ module.exports = { description: 'Manual chunks are not supported when inlining dynamic imports', options: { input: ['main.js'], - inlineDynamicImports: true, - manualChunks: { - lib: ['lib.js'] + output: { + inlineDynamicImports: true, + manualChunks: { + lib: ['lib.js'] + } } }, - error: { + generateError: { code: 'INVALID_OPTION', - message: '"manualChunks" option is not supported for "inlineDynamicImports".' + message: 'The "output.manualChunks" option is not supported for "output.inlineDynamicImports".' } }; diff --git a/test/function/samples/inline-imports-with-multiple-array/_config.js b/test/function/samples/inline-imports-with-multiple-array/_config.js index 4164867fe1c..a1be26d335e 100644 --- a/test/function/samples/inline-imports-with-multiple-array/_config.js +++ b/test/function/samples/inline-imports-with-multiple-array/_config.js @@ -2,10 +2,10 @@ module.exports = { description: 'Having multiple inputs in an array is not supported when inlining dynamic imports', options: { input: ['main.js', 'lib.js'], - inlineDynamicImports: true + output: { inlineDynamicImports: true } }, - error: { + generateError: { code: 'INVALID_OPTION', - message: 'Multiple inputs are not supported for "inlineDynamicImports".' + message: 'Multiple inputs are not supported for "output.inlineDynamicImports".' } }; diff --git a/test/function/samples/inline-imports-with-multiple-object/_config.js b/test/function/samples/inline-imports-with-multiple-object/_config.js index 417b1ccdc15..9a5b1fd1af4 100644 --- a/test/function/samples/inline-imports-with-multiple-object/_config.js +++ b/test/function/samples/inline-imports-with-multiple-object/_config.js @@ -2,10 +2,10 @@ module.exports = { description: 'Having multiple inputs in an object is not supported when inlining dynamic imports', options: { input: { main: 'main.js', lib: 'lib.js' }, - inlineDynamicImports: true + output: { inlineDynamicImports: true } }, - error: { + generateError: { code: 'INVALID_OPTION', - message: 'Multiple inputs are not supported for "inlineDynamicImports".' + message: 'Multiple inputs are not supported for "output.inlineDynamicImports".' } }; diff --git a/test/function/samples/manual-chunks-conflict/_config.js b/test/function/samples/manual-chunks-conflict/_config.js index f84e76fb7ae..a3f06ae895c 100644 --- a/test/function/samples/manual-chunks-conflict/_config.js +++ b/test/function/samples/manual-chunks-conflict/_config.js @@ -1,17 +1,16 @@ -const path = require('path'); - module.exports = { description: 'Throws for conflicts between manual chunks', options: { input: ['main.js'], - manualChunks: { - dep1: ['dep.js'], - dep2: ['dep.js'] + output: { + manualChunks: { + dep1: ['dep.js'], + dep2: ['dep.js'] + } } }, - error: { + generateError: { code: 'INVALID_CHUNK', - message: `Cannot assign dep.js to the "dep2" chunk as it is already in the "dep1" chunk.`, - watchFiles: [path.resolve(__dirname, 'main.js'), path.resolve(__dirname, 'dep.js')] + message: `Cannot assign dep.js to the "dep2" chunk as it is already in the "dep1" chunk.` } }; diff --git a/test/function/samples/manual-chunks-info/_config.js b/test/function/samples/manual-chunks-info/_config.js index a501278ef4a..8939821f4f7 100644 --- a/test/function/samples/manual-chunks-info/_config.js +++ b/test/function/samples/manual-chunks-info/_config.js @@ -9,64 +9,66 @@ module.exports = { description: 'provides additional chunk information to a manualChunks function', options: { external: 'external', - manualChunks(id, { getModuleIds, getModuleInfo }) { - assert.deepStrictEqual( - [...getModuleIds()], - [getId('main'), 'external', getId('lib'), getId('dynamic')] - ); - assert.deepStrictEqual( - [...getModuleIds()].map(id => getModuleInfo(id)), - [ - { - dynamicImporters: [], - dynamicallyImportedIds: [getId('dynamic')], - hasModuleSideEffects: true, - id: getId('main'), - implicitlyLoadedAfterOneOf: [], - implicitlyLoadedBefore: [], - importers: [], - importedIds: [getId('lib'), 'external'], - isEntry: true, - isExternal: false - }, - { - dynamicImporters: [getId('dynamic')], - dynamicallyImportedIds: [], - hasModuleSideEffects: true, - id: 'external', - implicitlyLoadedAfterOneOf: [], - implicitlyLoadedBefore: [], - importers: [getId('main')], - importedIds: [], - isEntry: false, - isExternal: true - }, - { - dynamicImporters: [], - dynamicallyImportedIds: [], - hasModuleSideEffects: true, - id: getId('lib'), - implicitlyLoadedAfterOneOf: [], - implicitlyLoadedBefore: [], - importers: [getId('dynamic'), getId('main')], - importedIds: [], - isEntry: false, - isExternal: false - }, - { - dynamicImporters: [getId('main')], - dynamicallyImportedIds: ['external'], - hasModuleSideEffects: true, - id: getId('dynamic'), - implicitlyLoadedAfterOneOf: [], - implicitlyLoadedBefore: [], - importers: [], - importedIds: [getId('lib')], - isEntry: false, - isExternal: false - } - ] - ); + output: { + manualChunks(id, { getModuleIds, getModuleInfo }) { + assert.deepStrictEqual( + [...getModuleIds()], + [getId('main'), 'external', getId('lib'), getId('dynamic')] + ); + assert.deepStrictEqual( + [...getModuleIds()].map(id => getModuleInfo(id)), + [ + { + dynamicImporters: [], + dynamicallyImportedIds: [getId('dynamic')], + hasModuleSideEffects: true, + id: getId('main'), + implicitlyLoadedAfterOneOf: [], + implicitlyLoadedBefore: [], + importers: [], + importedIds: [getId('lib'), 'external'], + isEntry: true, + isExternal: false + }, + { + dynamicImporters: [getId('dynamic')], + dynamicallyImportedIds: [], + hasModuleSideEffects: true, + id: 'external', + implicitlyLoadedAfterOneOf: [], + implicitlyLoadedBefore: [], + importers: [getId('main')], + importedIds: [], + isEntry: false, + isExternal: true + }, + { + dynamicImporters: [], + dynamicallyImportedIds: [], + hasModuleSideEffects: true, + id: getId('lib'), + implicitlyLoadedAfterOneOf: [], + implicitlyLoadedBefore: [], + importers: [getId('dynamic'), getId('main')], + importedIds: [], + isEntry: false, + isExternal: false + }, + { + dynamicImporters: [getId('main')], + dynamicallyImportedIds: ['external'], + hasModuleSideEffects: true, + id: getId('dynamic'), + implicitlyLoadedAfterOneOf: [], + implicitlyLoadedBefore: [], + importers: [], + importedIds: [getId('lib')], + isEntry: false, + isExternal: false + } + ] + ); + } } } }; diff --git a/test/function/samples/nested-inlined-dynamic-import-1/_config.js b/test/function/samples/nested-inlined-dynamic-import-1/_config.js index b835ea30221..ad243453388 100644 --- a/test/function/samples/nested-inlined-dynamic-import-1/_config.js +++ b/test/function/samples/nested-inlined-dynamic-import-1/_config.js @@ -4,7 +4,7 @@ module.exports = { description: 'deconflicts variables when nested dynamic imports are inlined via inlineDynamicImports', options: { - inlineDynamicImports: true + output: { inlineDynamicImports: true } }, exports(exports) { return exports().then(result => assert.strictEqual(result, 43)); diff --git a/test/function/samples/options-hook/_config.js b/test/function/samples/options-hook/_config.js index 230a403ca1d..97eb6623de8 100644 --- a/test/function/samples/options-hook/_config.js +++ b/test/function/samples/options-hook/_config.js @@ -18,9 +18,7 @@ module.exports = { acornInjectPlugins: [null, null, null], context: 'undefined', experimentalCacheExpiry: 10, - inlineDynamicImports: false, input: ['used'], - manualChunks: {}, perf: false, plugins: [ { @@ -28,7 +26,6 @@ module.exports = { } ], preserveEntrySignatures: 'strict', - preserveModules: false, preserveSymlinks: false, shimMissingExports: false, strictDeprecations: true, diff --git a/test/function/samples/output-options-hook/_config.js b/test/function/samples/output-options-hook/_config.js index c78dc2fba81..45789085be3 100644 --- a/test/function/samples/output-options-hook/_config.js +++ b/test/function/samples/output-options-hook/_config.js @@ -32,13 +32,16 @@ module.exports = { globals: {}, hoistTransitiveImports: true, indent: true, + inlineDynamicImports: false, interop: true, + manualChunks: {}, minifyInternalExports: false, namespaceToStringTag: false, noConflict: false, paths: {}, plugins: [], preferConst: false, + preserveModules: false, sourcemap: false, sourcemapExcludeSources: false, strict: true, diff --git a/test/function/samples/preserve-modules/inline-dynamic-imports/_config.js b/test/function/samples/preserve-modules/inline-dynamic-imports/_config.js index 1f25bd9968d..b315aa96fca 100644 --- a/test/function/samples/preserve-modules/inline-dynamic-imports/_config.js +++ b/test/function/samples/preserve-modules/inline-dynamic-imports/_config.js @@ -2,11 +2,14 @@ module.exports = { description: 'Inlining dynamic imports is not supported when preserving modules', options: { input: ['main.js'], - preserveModules: true, - inlineDynamicImports: true + output: { + preserveModules: true, + inlineDynamicImports: true + } }, - error: { + generateError: { code: 'INVALID_OPTION', - message: '"preserveModules" does not support the "inlineDynamicImports" option.' + message: + 'The "output.inlineDynamicImports" option is not supported for "output.preserveModules".' } }; diff --git a/test/function/samples/preserve-modules/invalid-default-export-mode/_config.js b/test/function/samples/preserve-modules/invalid-default-export-mode/_config.js index e66d62ecc36..3256f5ca2b8 100644 --- a/test/function/samples/preserve-modules/invalid-default-export-mode/_config.js +++ b/test/function/samples/preserve-modules/invalid-default-export-mode/_config.js @@ -2,9 +2,9 @@ module.exports = { description: 'throws when using default export mode with named exports', options: { input: ['main.js'], - preserveModules: true, output: { - exports: 'default' + exports: 'default', + preserveModules: true } }, generateError: { diff --git a/test/function/samples/preserve-modules/invalid-default-export-mode/main.js b/test/function/samples/preserve-modules/invalid-default-export-mode/main.js index f26e8d860a6..c379b667da9 100644 --- a/test/function/samples/preserve-modules/invalid-default-export-mode/main.js +++ b/test/function/samples/preserve-modules/invalid-default-export-mode/main.js @@ -1,3 +1,3 @@ import { value } from './lib.js'; - assert.equal(value, 42); +export default 43; diff --git a/test/function/samples/preserve-modules/invalid-no-preserve-entry-signatures/_config.js b/test/function/samples/preserve-modules/invalid-no-preserve-entry-signatures/_config.js index 7a0e4dfc3a1..dcd159dc9d9 100644 --- a/test/function/samples/preserve-modules/invalid-no-preserve-entry-signatures/_config.js +++ b/test/function/samples/preserve-modules/invalid-no-preserve-entry-signatures/_config.js @@ -2,11 +2,12 @@ module.exports = { description: 'throws when setting preserveEntrySignatures to false', options: { input: ['main.js'], - preserveModules: true, - preserveEntrySignatures: false + preserveEntrySignatures: false, + output: { preserveModules: true } }, - error: { + generateError: { code: 'INVALID_OPTION', - message: '"preserveModules" does not support setting "preserveEntrySignatures" to "false".' + message: + 'Setting "preserveEntrySignatures" to "false" is not supported for "output.preserveModules".' } }; diff --git a/test/function/samples/preserve-modules/invalid-none-export-mode/_config.js b/test/function/samples/preserve-modules/invalid-none-export-mode/_config.js index d8f3412169e..8dfb14e480d 100644 --- a/test/function/samples/preserve-modules/invalid-none-export-mode/_config.js +++ b/test/function/samples/preserve-modules/invalid-none-export-mode/_config.js @@ -2,9 +2,9 @@ module.exports = { description: 'throws when using none export mode with named exports', options: { input: ['main.js'], - preserveModules: true, output: { - exports: 'none' + exports: 'none', + preserveModules: true } }, generateError: { diff --git a/test/function/samples/preserve-modules/manual-chunks/_config.js b/test/function/samples/preserve-modules/manual-chunks/_config.js index 3d11ec5f9b9..5f9f2e6ecd0 100644 --- a/test/function/samples/preserve-modules/manual-chunks/_config.js +++ b/test/function/samples/preserve-modules/manual-chunks/_config.js @@ -2,13 +2,15 @@ module.exports = { description: 'Assigning manual chunks fails when preserving modules', options: { input: ['main.js'], - preserveModules: true, - manualChunks: { - lib: ['lib.js'] + output: { + manualChunks: { + lib: ['lib.js'] + }, + preserveModules: true } }, - error: { + generateError: { code: 'INVALID_OPTION', - message: '"preserveModules" does not support the "manualChunks" option.' + message: 'The "output.manualChunks" option is not supported for "output.preserveModules".' } }; diff --git a/test/function/samples/preserve-modules/mixed-exports/_config.js b/test/function/samples/preserve-modules/mixed-exports/_config.js index d6b878a4ba9..11e89b8d1e7 100644 --- a/test/function/samples/preserve-modules/mixed-exports/_config.js +++ b/test/function/samples/preserve-modules/mixed-exports/_config.js @@ -4,21 +4,21 @@ module.exports = { description: 'warns for mixed exports in all chunks when preserving modules', options: { input: ['main.js'], - preserveModules: true + output: { preserveModules: true } }, warnings: [ { code: 'MIXED_EXPORTS', - id: path.resolve(__dirname, 'lib1.js'), + id: path.resolve(__dirname, 'main.js'), message: - 'Entry module "lib1.js" is using named and default exports together. Consumers of your bundle will have to use `chunk["default"]` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning', + 'Entry module "main.js" is using named and default exports together. Consumers of your bundle will have to use `chunk["default"]` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning', url: 'https://rollupjs.org/guide/en/#output-exports' }, { code: 'MIXED_EXPORTS', - id: path.resolve(__dirname, 'main.js'), + id: path.resolve(__dirname, 'lib1.js'), message: - 'Entry module "main.js" is using named and default exports together. Consumers of your bundle will have to use `chunk["default"]` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning', + 'Entry module "lib1.js" is using named and default exports together. Consumers of your bundle will have to use `chunk["default"]` to access the default export, which may not be what you want. Use `output.exports: "named"` to disable this warning', url: 'https://rollupjs.org/guide/en/#output-exports' } ] diff --git a/test/function/samples/preserve-modules/virtual-modules-conflict/_config.js b/test/function/samples/preserve-modules/virtual-modules-conflict/_config.js index 6739c34f66c..2138da5c8aa 100644 --- a/test/function/samples/preserve-modules/virtual-modules-conflict/_config.js +++ b/test/function/samples/preserve-modules/virtual-modules-conflict/_config.js @@ -3,8 +3,6 @@ const assert = require('assert'); module.exports = { description: 'Generates actual files for virtual modules when preserving modules', options: { - input: ['main.js'], - preserveModules: true, plugins: [ { resolveId(id) { @@ -22,7 +20,7 @@ module.exports = { ] }, bundle(bundle) { - return bundle.generate({ format: 'es' }).then(generated => + return bundle.generate({ format: 'es', preserveModules: true }).then(generated => assert.deepEqual( generated.output.map(chunk => chunk.fileName), ['main.js', '_virtual/_virtualModule.js', '_virtual/_virtualModule2.js'] diff --git a/test/function/samples/preserve-modules/virtual-modules/_config.js b/test/function/samples/preserve-modules/virtual-modules/_config.js index 17cbf8b541b..8965977575f 100644 --- a/test/function/samples/preserve-modules/virtual-modules/_config.js +++ b/test/function/samples/preserve-modules/virtual-modules/_config.js @@ -3,8 +3,6 @@ const assert = require('assert'); module.exports = { description: 'Generates actual files for virtual modules when preserving modules', options: { - input: ['main.js'], - preserveModules: true, plugins: [ { resolveId(id) { @@ -22,7 +20,7 @@ module.exports = { ] }, bundle(bundle) { - return bundle.generate({ format: 'es' }).then(generated => + return bundle.generate({ format: 'es', preserveModules: true }).then(generated => assert.deepEqual( generated.output.map(chunk => chunk.fileName), ['main.js', '_virtual/_virtualModule', 'lib/lib.js'] diff --git a/test/function/samples/reassign-import-fails/_config.js b/test/function/samples/reassign-import-fails/_config.js index 1f8b3bf9027..f0d28451839 100644 --- a/test/function/samples/reassign-import-fails/_config.js +++ b/test/function/samples/reassign-import-fails/_config.js @@ -5,6 +5,7 @@ module.exports = { error: { code: 'ILLEGAL_REASSIGNMENT', message: `Illegal reassignment to import 'x'`, + id: path.resolve(__dirname, 'main.js'), pos: 113, watchFiles: [path.resolve(__dirname, 'main.js'), path.resolve(__dirname, 'foo.js')], loc: { diff --git a/test/function/samples/reassign-import-not-at-top-level-fails/_config.js b/test/function/samples/reassign-import-not-at-top-level-fails/_config.js index e826b171f13..65c3b8a6170 100644 --- a/test/function/samples/reassign-import-not-at-top-level-fails/_config.js +++ b/test/function/samples/reassign-import-not-at-top-level-fails/_config.js @@ -5,6 +5,7 @@ module.exports = { error: { code: 'ILLEGAL_REASSIGNMENT', message: `Illegal reassignment to import 'x'`, + id: path.resolve(__dirname, 'main.js'), pos: 95, watchFiles: [path.resolve(__dirname, 'main.js'), path.resolve(__dirname, 'foo.js')], loc: { diff --git a/test/function/samples/reexport-missing-error/_config.js b/test/function/samples/reexport-missing-error/_config.js index 5a17f6c2bd5..bf769eccade 100644 --- a/test/function/samples/reexport-missing-error/_config.js +++ b/test/function/samples/reexport-missing-error/_config.js @@ -5,6 +5,7 @@ module.exports = { error: { code: 'MISSING_EXPORT', message: `'foo' is not exported by empty.js, imported by main.js`, + id: path.resolve(__dirname, 'main.js'), pos: 9, watchFiles: [path.resolve(__dirname, 'main.js'), path.resolve(__dirname, 'empty.js')], loc: { diff --git a/test/function/samples/update-expression-of-import-fails/_config.js b/test/function/samples/update-expression-of-import-fails/_config.js index cff3fb53b1d..4911b8316ef 100644 --- a/test/function/samples/update-expression-of-import-fails/_config.js +++ b/test/function/samples/update-expression-of-import-fails/_config.js @@ -5,6 +5,7 @@ module.exports = { error: { code: 'ILLEGAL_REASSIGNMENT', message: `Illegal reassignment to import 'a'`, + id: path.resolve(__dirname, 'main.js'), pos: 28, watchFiles: [path.resolve(__dirname, 'main.js'), path.resolve(__dirname, 'foo.js')], loc: { diff --git a/test/misc/optionList.js b/test/misc/optionList.js index 01b18d55da0..3ab7271f774 100644 --- a/test/misc/optionList.js +++ b/test/misc/optionList.js @@ -1,3 +1,3 @@ exports.input = 'acorn, acornInjectPlugins, cache, context, experimentalCacheExpiry, external, inlineDynamicImports, input, manualChunks, moduleContext, onwarn, perf, plugins, preserveEntrySignatures, preserveModules, preserveSymlinks, shimMissingExports, strictDeprecations, treeshake, watch'; exports.flags = 'acorn, acornInjectPlugins, amd, assetFileNames, banner, c, cache, chunkFileNames, compact, config, context, d, dir, dynamicImportFunction, e, entryFileNames, environment, esModule, experimentalCacheExpiry, exports, extend, external, externalLiveBindings, f, file, footer, format, freeze, g, globals, h, hoistTransitiveImports, i, indent, inlineDynamicImports, input, interop, intro, m, manualChunks, minifyInternalExports, moduleContext, n, name, namespaceToStringTag, noConflict, o, onwarn, outro, p, paths, perf, plugin, plugins, preferConst, preserveEntrySignatures, preserveModules, preserveSymlinks, shimMissingExports, silent, sourcemap, sourcemapExcludeSources, sourcemapFile, stdin, strict, strictDeprecations, systemNullSetters, treeshake, v, w, waitForBundleInput, watch'; -exports.output = 'amd, assetFileNames, banner, chunkFileNames, compact, dir, dynamicImportFunction, entryFileNames, esModule, exports, extend, externalLiveBindings, file, footer, format, freeze, globals, hoistTransitiveImports, indent, interop, intro, minifyInternalExports, name, namespaceToStringTag, noConflict, outro, paths, plugins, preferConst, sourcemap, sourcemapExcludeSources, sourcemapFile, sourcemapPathTransform, strict, systemNullSetters'; +exports.output = 'amd, assetFileNames, banner, chunkFileNames, compact, dir, dynamicImportFunction, entryFileNames, esModule, exports, extend, externalLiveBindings, file, footer, format, freeze, globals, hoistTransitiveImports, indent, inlineDynamicImports, interop, intro, manualChunks, minifyInternalExports, name, namespaceToStringTag, noConflict, outro, paths, plugins, preferConst, preserveModules, sourcemap, sourcemapExcludeSources, sourcemapFile, sourcemapPathTransform, strict, systemNullSetters'; diff --git a/test/misc/sanity-checks.js b/test/misc/sanity-checks.js index 6ef7efe6c6a..4e8d4d0627d 100644 --- a/test/misc/sanity-checks.js +++ b/test/misc/sanity-checks.js @@ -96,7 +96,6 @@ describe('sanity checks', () => { ); }); - it('throws on incorrect bundle.generate format option', async () => { let error = null; const bundle = await rollup.rollup({ @@ -125,9 +124,7 @@ describe('sanity checks', () => { assert.equal(code, `function foo(x){ console.log(x); }\n\nexport { foo };\n`); }); - it('reuses existing error object', () => { - let error; - + it('reuses existing error object', async () => { class CustomError extends Error { constructor(message, x) { super(message); @@ -135,22 +132,24 @@ describe('sanity checks', () => { } } - return rollup - .rollup({ + let error = null; + const customError = new CustomError('foo', 'bar'); + try { + await rollup.rollup({ input: 'x', plugins: [ loader({ x: `console.log( 42 );` }), { - transform(code) { - error = new CustomError('foo', 'bar'); - this.error(error); + transform() { + this.error(customError); } } ] - }) - .catch(e => { - assert.equal(e, error); }); + } catch (buildError) { + error = buildError; + } + assert.strictEqual(error, customError); }); it('throws when using multiple inputs together with the "file" option', async () => { @@ -225,17 +224,16 @@ describe('sanity checks', () => { let error = null; const bundle = await rollup.rollup({ input: 'x', - preserveModules: true, plugins: [loader({ x: 'console.log( "x" );' })] }); try { - await bundle.generate({ file: 'x', format: 'es' }); + await bundle.generate({ file: 'x', format: 'es', preserveModules: true }); } catch (generateError) { error = generateError; } assert.strictEqual( error && error.message, - 'You must set "output.dir" instead of "output.file" when using the "preserveModules" option.' + 'You must set "output.dir" instead of "output.file" when using the "output.preserveModules" option.' ); }); }); diff --git a/test/watch/index.js b/test/watch/index.js index 66f1a931169..8c005b160ca 100644 --- a/test/watch/index.js +++ b/test/watch/index.js @@ -1200,7 +1200,7 @@ describe('rollup.watch', () => { describe('addWatchFile', () => { it('supports adding additional watch files in plugin hooks', () => { - const watchChangeIds = []; + const watchChangeIds = new Set(); const buildStartFile = path.resolve('test/_tmp/input/buildStart'); const loadFile = path.resolve('test/_tmp/input/load'); const resolveIdFile = path.resolve('test/_tmp/input/resolveId'); @@ -1231,7 +1231,7 @@ describe('rollup.watch', () => { this.addWatchFile(transformFile); }, watchChange(id) { - watchChangeIds.push(id); + watchChangeIds.add(id); } } }); @@ -1243,7 +1243,7 @@ describe('rollup.watch', () => { 'END', () => { assert.strictEqual(run('../_tmp/output/bundle.js'), 42); - assert.deepStrictEqual(watchChangeIds, []); + assert.strictEqual(watchChangeIds.size, 0); for (const file of watchFiles) sander.writeFileSync(file, 'changed'); }, 'START', @@ -1252,7 +1252,7 @@ describe('rollup.watch', () => { 'END', () => { assert.strictEqual(run('../_tmp/output/bundle.js'), 42); - assert.deepStrictEqual(watchChangeIds.sort(), watchFiles.sort()); + assert.deepStrictEqual([...watchChangeIds].sort(), watchFiles.sort()); } ]); });