webpack 5.36.2 → 5.38.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of webpack might be problematic. Click here for more details.

Files changed (113) hide show
  1. package/README.md +5 -8
  2. package/bin/webpack.js +0 -0
  3. package/lib/CacheFacade.js +3 -3
  4. package/lib/Chunk.js +10 -5
  5. package/lib/Compilation.js +45 -57
  6. package/lib/Compiler.js +9 -6
  7. package/lib/ConcatenationScope.js +2 -1
  8. package/lib/ContextModule.js +3 -3
  9. package/lib/ContextReplacementPlugin.js +4 -3
  10. package/lib/DefinePlugin.js +16 -12
  11. package/lib/EntryPlugin.js +4 -4
  12. package/lib/EvalSourceMapDevToolPlugin.js +3 -1
  13. package/lib/ExportsInfo.js +20 -13
  14. package/lib/FileSystemInfo.js +25 -31
  15. package/lib/FlagDependencyExportsPlugin.js +8 -7
  16. package/lib/FlagDependencyUsagePlugin.js +2 -4
  17. package/lib/HotModuleReplacementPlugin.js +27 -32
  18. package/lib/JavascriptMetaInfoPlugin.js +2 -1
  19. package/lib/MainTemplate.js +2 -3
  20. package/lib/ModuleFilenameHelpers.js +4 -2
  21. package/lib/ModuleGraphConnection.js +6 -2
  22. package/lib/ModuleInfoHeaderPlugin.js +2 -3
  23. package/lib/MultiCompiler.js +31 -27
  24. package/lib/NormalModule.js +42 -8
  25. package/lib/NormalModuleFactory.js +2 -0
  26. package/lib/RecordIdsPlugin.js +5 -4
  27. package/lib/ResolverFactory.js +10 -7
  28. package/lib/RuntimeGlobals.js +7 -0
  29. package/lib/RuntimePlugin.js +19 -1
  30. package/lib/SourceMapDevToolPlugin.js +14 -15
  31. package/lib/Template.js +4 -2
  32. package/lib/Watching.js +91 -47
  33. package/lib/asset/AssetGenerator.js +46 -29
  34. package/lib/asset/AssetModulesPlugin.js +1 -1
  35. package/lib/buildChunkGraph.js +21 -21
  36. package/lib/cache/PackFileCacheStrategy.js +12 -9
  37. package/lib/config/defaults.js +31 -10
  38. package/lib/config/normalization.js +16 -7
  39. package/lib/config/target.js +7 -2
  40. package/lib/debug/ProfilingPlugin.js +4 -3
  41. package/lib/dependencies/AMDRequireDependency.js +3 -3
  42. package/lib/dependencies/CommonJsExportRequireDependency.js +2 -3
  43. package/lib/dependencies/CommonJsExportsParserPlugin.js +3 -1
  44. package/lib/dependencies/CommonJsImportsParserPlugin.js +2 -4
  45. package/lib/dependencies/CommonJsPlugin.js +8 -7
  46. package/lib/dependencies/CommonJsRequireContextDependency.js +2 -1
  47. package/lib/dependencies/ContextDependencyHelpers.js +10 -8
  48. package/lib/dependencies/CreateScriptUrlDependency.js +54 -0
  49. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +11 -13
  50. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +2 -4
  51. package/lib/dependencies/HarmonyImportSpecifierDependency.js +4 -11
  52. package/lib/dependencies/ImportDependency.js +3 -3
  53. package/lib/dependencies/ImportParserPlugin.js +2 -4
  54. package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +2 -3
  55. package/lib/dependencies/RequireEnsureDependency.js +3 -3
  56. package/lib/dependencies/WorkerDependency.js +6 -6
  57. package/lib/dependencies/WorkerPlugin.js +32 -20
  58. package/lib/hmr/LazyCompilationPlugin.js +6 -4
  59. package/lib/ids/HashedModuleIdsPlugin.js +3 -3
  60. package/lib/ids/OccurrenceModuleIdsPlugin.js +2 -3
  61. package/lib/index.js +5 -3
  62. package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +4 -6
  63. package/lib/javascript/CommonJsChunkFormatPlugin.js +2 -3
  64. package/lib/javascript/JavascriptGenerator.js +3 -1
  65. package/lib/javascript/JavascriptModulesPlugin.js +15 -23
  66. package/lib/javascript/JavascriptParser.js +10 -8
  67. package/lib/library/AssignLibraryPlugin.js +4 -2
  68. package/lib/node/NodeEnvironmentPlugin.js +1 -0
  69. package/lib/node/NodeWatchFileSystem.js +19 -4
  70. package/lib/optimize/AggressiveSplittingPlugin.js +5 -4
  71. package/lib/optimize/ConcatenatedModule.js +31 -27
  72. package/lib/optimize/FlagIncludedChunksPlugin.js +4 -6
  73. package/lib/optimize/InnerGraph.js +9 -11
  74. package/lib/optimize/InnerGraphPlugin.js +3 -1
  75. package/lib/optimize/ModuleConcatenationPlugin.js +7 -10
  76. package/lib/optimize/RealContentHashPlugin.js +14 -16
  77. package/lib/optimize/SideEffectsFlagPlugin.js +6 -5
  78. package/lib/optimize/SplitChunksPlugin.js +13 -15
  79. package/lib/runtime/CreateScriptUrlRuntimeModule.js +61 -0
  80. package/lib/runtime/EnsureChunkRuntimeModule.js +9 -8
  81. package/lib/runtime/LoadScriptRuntimeModule.js +12 -5
  82. package/lib/runtime/OnChunksLoadedRuntimeModule.js +38 -37
  83. package/lib/schemes/DataUriPlugin.js +21 -2
  84. package/lib/serialization/BinaryMiddleware.js +5 -3
  85. package/lib/serialization/FileMiddleware.js +3 -1
  86. package/lib/serialization/ObjectMiddleware.js +11 -7
  87. package/lib/stats/DefaultStatsFactoryPlugin.js +7 -7
  88. package/lib/stats/DefaultStatsPrinterPlugin.js +11 -9
  89. package/lib/stats/StatsFactory.js +2 -1
  90. package/lib/stats/StatsPrinter.js +3 -3
  91. package/lib/util/LazyBucketSortedSet.js +3 -3
  92. package/lib/util/cleverMerge.js +3 -1
  93. package/lib/util/comparators.js +13 -13
  94. package/lib/util/createHash.js +5 -4
  95. package/lib/util/fs.js +8 -8
  96. package/lib/util/identifier.js +2 -1
  97. package/lib/util/internalSerializables.js +2 -0
  98. package/lib/util/serialization.js +108 -59
  99. package/lib/validateSchema.js +5 -3
  100. package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +4 -4
  101. package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +5 -4
  102. package/lib/wasm-sync/WebAssemblyGenerator.js +89 -83
  103. package/lib/wasm-sync/WebAssemblyModulesPlugin.js +2 -1
  104. package/lib/wasm-sync/WebAssemblyParser.js +6 -5
  105. package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -4
  106. package/lib/webpack.js +11 -7
  107. package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +13 -1
  108. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +14 -4
  109. package/package.json +10 -7
  110. package/schemas/WebpackOptions.check.js +1 -1
  111. package/schemas/WebpackOptions.json +107 -60
  112. package/types.d.ts +480 -285
  113. package/lib/util/DataURI.js +0 -32
@@ -5,14 +5,18 @@
5
5
 
6
6
  "use strict";
7
7
 
8
- const browserslistTargetHandler = require("./browserslistTargetHandler");
8
+ const memoize = require("../util/memoize");
9
+
10
+ const getBrowserslistTargetHandler = memoize(() =>
11
+ require("./browserslistTargetHandler")
12
+ );
9
13
 
10
14
  /**
11
15
  * @param {string} context the context directory
12
16
  * @returns {string} default target
13
17
  */
14
18
  const getDefaultTarget = context => {
15
- const browsers = browserslistTargetHandler.load(null, context);
19
+ const browsers = getBrowserslistTargetHandler().load(null, context);
16
20
  return browsers ? "browserslist" : "web";
17
21
  };
18
22
 
@@ -78,6 +82,7 @@ const TARGETS = [
78
82
  "Resolve features from browserslist. Will resolve browserslist config automatically. Only browser or node queries are supported (electron is not supported). Examples: 'browserslist:modern' to use 'modern' environment from browserslist config",
79
83
  /^browserslist(?::(.+))?$/,
80
84
  (rest, context) => {
85
+ const browserslistTargetHandler = getBrowserslistTargetHandler();
81
86
  const browsers = browserslistTargetHandler.load(
82
87
  rest ? rest.trim() : null,
83
88
  context
@@ -332,9 +332,10 @@ const interceptAllParserHooks = (moduleFactory, tracer) => {
332
332
  const interceptAllJavascriptModulesPluginHooks = (compilation, tracer) => {
333
333
  interceptAllHooksFor(
334
334
  {
335
- hooks: require("../javascript/JavascriptModulesPlugin").getCompilationHooks(
336
- compilation
337
- )
335
+ hooks:
336
+ require("../javascript/JavascriptModulesPlugin").getCompilationHooks(
337
+ compilation
338
+ )
338
339
  },
339
340
  tracer,
340
341
  "JavascriptModulesPlugin"
@@ -77,9 +77,9 @@ AMDRequireDependency.Template = class AMDRequireDependencyTemplate extends (
77
77
  { runtimeTemplate, moduleGraph, chunkGraph, runtimeRequirements }
78
78
  ) {
79
79
  const dep = /** @type {AMDRequireDependency} */ (dependency);
80
- const depBlock = /** @type {AsyncDependenciesBlock} */ (moduleGraph.getParentBlock(
81
- dep
82
- ));
80
+ const depBlock = /** @type {AsyncDependenciesBlock} */ (
81
+ moduleGraph.getParentBlock(dep)
82
+ );
83
83
  const promise = runtimeTemplate.blockPromise({
84
84
  chunkGraph,
85
85
  block: depBlock,
@@ -230,9 +230,8 @@ class CommonJsExportRequireDependency extends ModuleDependency {
230
230
  if (name === "__esModule" && isNamespaceImport) {
231
231
  exports.add(name);
232
232
  } else if (importedExportsInfo) {
233
- const importedExportInfo = importedExportsInfo.getReadOnlyExportInfo(
234
- name
235
- );
233
+ const importedExportInfo =
234
+ importedExportsInfo.getReadOnlyExportInfo(name);
236
235
  if (importedExportInfo.provided === false) continue;
237
236
  exports.add(name);
238
237
  if (importedExportInfo.provided === true) continue;
@@ -192,7 +192,9 @@ class CommonJsExportsParserPlugin {
192
192
  parser.hooks.call
193
193
  .for("Object.defineProperty")
194
194
  .tap("CommonJsExportsParserPlugin", expression => {
195
- const expr = /** @type {import("estree").CallExpression} */ (expression);
195
+ const expr = /** @type {import("estree").CallExpression} */ (
196
+ expression
197
+ );
196
198
  if (!parser.isStatementLevelExpression(expr)) return;
197
199
  if (expr.arguments.length !== 3) return;
198
200
  if (expr.arguments[0].type === "SpreadElement") return;
@@ -182,10 +182,8 @@ class CommonJsImportsParserPlugin {
182
182
  };
183
183
  const createRequireHandler = callNew => expr => {
184
184
  if (options.commonjsMagicComments) {
185
- const {
186
- options: requireOptions,
187
- errors: commentErrors
188
- } = parser.parseCommentOptions(expr.range);
185
+ const { options: requireOptions, errors: commentErrors } =
186
+ parser.parseCommentOptions(expr.range);
189
187
 
190
188
  if (commentErrors) {
191
189
  for (const e of commentErrors) {
@@ -265,13 +265,14 @@ class NodeModuleDecoratorRuntimeModule extends RuntimeModule {
265
265
  generate() {
266
266
  const { runtimeTemplate } = this.compilation;
267
267
  return Template.asString([
268
- `${
269
- RuntimeGlobals.nodeModuleDecorator
270
- } = ${runtimeTemplate.basicFunction("module", [
271
- "module.paths = [];",
272
- "if (!module.children) module.children = [];",
273
- "return module;"
274
- ])};`
268
+ `${RuntimeGlobals.nodeModuleDecorator} = ${runtimeTemplate.basicFunction(
269
+ "module",
270
+ [
271
+ "module.paths = [];",
272
+ "if (!module.children) module.children = [];",
273
+ "return module;"
274
+ ]
275
+ )};`
275
276
  ]);
276
277
  }
277
278
  }
@@ -45,6 +45,7 @@ makeSerializable(
45
45
  "webpack/lib/dependencies/CommonJsRequireContextDependency"
46
46
  );
47
47
 
48
- CommonJsRequireContextDependency.Template = ContextDependencyTemplateAsRequireCall;
48
+ CommonJsRequireContextDependency.Template =
49
+ ContextDependencyTemplateAsRequireCall;
49
50
 
50
51
  module.exports = CommonJsRequireContextDependency;
@@ -61,10 +61,11 @@ exports.create = (Dep, range, param, expr, options, contextOptions, parser) => {
61
61
 
62
62
  const valueRange = param.range;
63
63
  const { context, prefix } = splitContextFromPrefix(prefixRaw);
64
- const { path: postfix, query, fragment } = parseResource(
65
- postfixRaw,
66
- parser
67
- );
64
+ const {
65
+ path: postfix,
66
+ query,
67
+ fragment
68
+ } = parseResource(postfixRaw, parser);
68
69
 
69
70
  // When there are more than two quasis, the generated RegExp can be more precise
70
71
  // We join the quasis with the expression regexp
@@ -160,10 +161,11 @@ exports.create = (Dep, range, param, expr, options, contextOptions, parser) => {
160
161
  param.postfix && param.postfix.isString() ? param.postfix.range : null;
161
162
  const valueRange = param.range;
162
163
  const { context, prefix } = splitContextFromPrefix(prefixRaw);
163
- const { path: postfix, query, fragment } = parseResource(
164
- postfixRaw,
165
- parser
166
- );
164
+ const {
165
+ path: postfix,
166
+ query,
167
+ fragment
168
+ } = parseResource(postfixRaw, parser);
167
169
  const regExp = new RegExp(
168
170
  `^${quoteMeta(prefix)}${options.wrappedContextRegExp.source}${quoteMeta(
169
171
  postfix
@@ -0,0 +1,54 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Tobias Koppers @sokra
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const RuntimeGlobals = require("../RuntimeGlobals");
9
+ const makeSerializable = require("../util/makeSerializable");
10
+ const NullDependency = require("./NullDependency");
11
+
12
+ /** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
13
+ /** @typedef {import("../Dependency")} Dependency */
14
+ /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
15
+
16
+ class CreateScriptUrlDependency extends NullDependency {
17
+ /**
18
+ * @param {[number, number]} range range
19
+ */
20
+ constructor(range) {
21
+ super();
22
+ this.range = range;
23
+ }
24
+
25
+ get type() {
26
+ return "create script url";
27
+ }
28
+ }
29
+
30
+ CreateScriptUrlDependency.Template = class CreateScriptUrlDependencyTemplate extends (
31
+ NullDependency.Template
32
+ ) {
33
+ /**
34
+ * @param {Dependency} dependency the dependency for which the template should be applied
35
+ * @param {ReplaceSource} source the current replace source which can be modified
36
+ * @param {DependencyTemplateContext} templateContext the context object
37
+ * @returns {void}
38
+ */
39
+ apply(dependency, source, { runtimeRequirements }) {
40
+ const dep = /** @type {CreateScriptUrlDependency} */ (dependency);
41
+
42
+ runtimeRequirements.add(RuntimeGlobals.createScriptUrl);
43
+
44
+ source.insert(dep.range[0], `${RuntimeGlobals.createScriptUrl}(`);
45
+ source.insert(dep.range[1], ")");
46
+ }
47
+ };
48
+
49
+ makeSerializable(
50
+ CreateScriptUrlDependency,
51
+ "webpack/lib/dependencies/CreateScriptUrlDependency"
52
+ );
53
+
54
+ module.exports = CreateScriptUrlDependency;
@@ -411,9 +411,8 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
411
411
  const ignoredExports = new Set(["default", ...this.activeExports]);
412
412
 
413
413
  let hiddenExports = undefined;
414
- const otherStarExports = this._discoverActiveExportsFromOtherStarExports(
415
- moduleGraph
416
- );
414
+ const otherStarExports =
415
+ this._discoverActiveExportsFromOtherStarExports(moduleGraph);
417
416
  if (otherStarExports !== undefined) {
418
417
  hiddenExports = new Set();
419
418
  for (let i = 0; i < otherStarExports.namesSlice; i++) {
@@ -441,9 +440,8 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
441
440
  const name = exportInfo.name;
442
441
  if (ignoredExports.has(name)) continue;
443
442
  if (exportInfo.getUsed(runtime) === UsageState.Unused) continue;
444
- const importedExportInfo = importedExportsInfo.getReadOnlyExportInfo(
445
- name
446
- );
443
+ const importedExportInfo =
444
+ importedExportsInfo.getReadOnlyExportInfo(name);
447
445
  if (importedExportInfo.provided === false) continue;
448
446
  if (hiddenExports !== undefined && hiddenExports.has(name)) {
449
447
  hidden.add(name);
@@ -763,9 +761,8 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
763
761
  `(reexported as '${this.name}')`
764
762
  );
765
763
  if (ids.length === 0 && this.name === null) {
766
- const potentialConflicts = this._discoverActiveExportsFromOtherStarExports(
767
- moduleGraph
768
- );
764
+ const potentialConflicts =
765
+ this._discoverActiveExportsFromOtherStarExports(moduleGraph);
769
766
  if (potentialConflicts && potentialConflicts.namesSlice > 0) {
770
767
  const ownNames = new Set(
771
768
  potentialConflicts.names.slice(
@@ -802,9 +799,8 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
802
799
  conflictingModule,
803
800
  exportInfo.name
804
801
  );
805
- const conflictingTarget = conflictingExportInfo.getTerminalBinding(
806
- moduleGraph
807
- );
802
+ const conflictingTarget =
803
+ conflictingExportInfo.getTerminalBinding(moduleGraph);
808
804
  if (!conflictingTarget) continue;
809
805
  if (target === conflictingTarget) continue;
810
806
  const list = conflicts.get(conflictingDependency.request);
@@ -882,7 +878,9 @@ HarmonyExportImportedSpecifierDependency.Template = class HarmonyExportImportedS
882
878
  apply(dependency, source, templateContext) {
883
879
  const { moduleGraph, runtime, concatenationScope } = templateContext;
884
880
 
885
- const dep = /** @type {HarmonyExportImportedSpecifierDependency} */ (dependency);
881
+ const dep = /** @type {HarmonyExportImportedSpecifierDependency} */ (
882
+ dependency
883
+ );
886
884
 
887
885
  const mode = dep.getMode(moduleGraph, runtime);
888
886
 
@@ -152,10 +152,8 @@ module.exports = class HarmonyImportDependencyParserPlugin {
152
152
  InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
153
153
  return true;
154
154
  });
155
- const {
156
- hotAcceptCallback,
157
- hotAcceptWithoutCallback
158
- } = HotModuleReplacementPlugin.getParserHooks(parser);
155
+ const { hotAcceptCallback, hotAcceptWithoutCallback } =
156
+ HotModuleReplacementPlugin.getParserHooks(parser);
159
157
  hotAcceptCallback.tap(
160
158
  "HarmonyImportDependencyParserPlugin",
161
159
  (expr, requests) => {
@@ -243,12 +243,8 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
243
243
  */
244
244
  apply(dependency, source, templateContext) {
245
245
  const dep = /** @type {HarmonyImportSpecifierDependency} */ (dependency);
246
- const {
247
- moduleGraph,
248
- module,
249
- runtime,
250
- concatenationScope
251
- } = templateContext;
246
+ const { moduleGraph, module, runtime, concatenationScope } =
247
+ templateContext;
252
248
  const connection = moduleGraph.getConnection(dep);
253
249
  // Skip rendering depending when dependency is conditional
254
250
  if (connection && !connection.isTargetActive(runtime)) return;
@@ -287,11 +283,8 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
287
283
  } else {
288
284
  super.apply(dependency, source, templateContext);
289
285
 
290
- const {
291
- runtimeTemplate,
292
- initFragments,
293
- runtimeRequirements
294
- } = templateContext;
286
+ const { runtimeTemplate, initFragments, runtimeRequirements } =
287
+ templateContext;
295
288
 
296
289
  exportExpr = runtimeTemplate.exportFromImport({
297
290
  moduleGraph,
@@ -81,9 +81,9 @@ ImportDependency.Template = class ImportDependencyTemplate extends (
81
81
  { runtimeTemplate, module, moduleGraph, chunkGraph, runtimeRequirements }
82
82
  ) {
83
83
  const dep = /** @type {ImportDependency} */ (dependency);
84
- const block = /** @type {AsyncDependenciesBlock} */ (moduleGraph.getParentBlock(
85
- dep
86
- ));
84
+ const block = /** @type {AsyncDependenciesBlock} */ (
85
+ moduleGraph.getParentBlock(dep)
86
+ );
87
87
  const content = runtimeTemplate.moduleNamespacePromise({
88
88
  chunkGraph,
89
89
  block: block,
@@ -36,10 +36,8 @@ class ImportParserPlugin {
36
36
  /** @type {RawChunkGroupOptions} */
37
37
  const groupOptions = {};
38
38
 
39
- const {
40
- options: importOptions,
41
- errors: commentErrors
42
- } = parser.parseCommentOptions(expr.range);
39
+ const { options: importOptions, errors: commentErrors } =
40
+ parser.parseCommentOptions(expr.range);
43
41
 
44
42
  if (commentErrors) {
45
43
  for (const e of commentErrors) {
@@ -46,9 +46,8 @@ module.exports = class RequireEnsureDependenciesBlockParserPlugin {
46
46
  ? dependenciesExpr.items
47
47
  : [dependenciesExpr];
48
48
  const successExpressionArg = expr.arguments[1];
49
- const successExpression = getFunctionExpression(
50
- successExpressionArg
51
- );
49
+ const successExpression =
50
+ getFunctionExpression(successExpressionArg);
52
51
 
53
52
  if (successExpression) {
54
53
  parser.walkExpressions(successExpression.expressions);
@@ -68,9 +68,9 @@ RequireEnsureDependency.Template = class RequireEnsureDependencyTemplate extends
68
68
  { runtimeTemplate, moduleGraph, chunkGraph, runtimeRequirements }
69
69
  ) {
70
70
  const dep = /** @type {RequireEnsureDependency} */ (dependency);
71
- const depBlock = /** @type {AsyncDependenciesBlock} */ (moduleGraph.getParentBlock(
72
- dep
73
- ));
71
+ const depBlock = /** @type {AsyncDependenciesBlock} */ (
72
+ moduleGraph.getParentBlock(dep)
73
+ );
74
74
  const promise = runtimeTemplate.blockPromise({
75
75
  chunkGraph,
76
76
  block: depBlock,
@@ -62,12 +62,12 @@ WorkerDependency.Template = class WorkerDependencyTemplate extends (
62
62
  apply(dependency, source, templateContext) {
63
63
  const { chunkGraph, moduleGraph, runtimeRequirements } = templateContext;
64
64
  const dep = /** @type {WorkerDependency} */ (dependency);
65
- const block = /** @type {AsyncDependenciesBlock} */ (moduleGraph.getParentBlock(
66
- dependency
67
- ));
68
- const entrypoint = /** @type {Entrypoint} */ (chunkGraph.getBlockChunkGroup(
69
- block
70
- ));
65
+ const block = /** @type {AsyncDependenciesBlock} */ (
66
+ moduleGraph.getParentBlock(dependency)
67
+ );
68
+ const entrypoint = /** @type {Entrypoint} */ (
69
+ chunkGraph.getBlockChunkGroup(block)
70
+ );
71
71
  const chunk = entrypoint.getEntrypointChunk();
72
72
 
73
73
  runtimeRequirements.add(RuntimeGlobals.publicPath);
@@ -15,6 +15,7 @@ const createHash = require("../util/createHash");
15
15
  const { contextify } = require("../util/identifier");
16
16
  const EnableWasmLoadingPlugin = require("../wasm/EnableWasmLoadingPlugin");
17
17
  const ConstDependency = require("./ConstDependency");
18
+ const CreateScriptUrlDependency = require("./CreateScriptUrlDependency");
18
19
  const {
19
20
  harmonySpecifierTag
20
21
  } = require("./HarmonyImportDependencyParserPlugin");
@@ -78,6 +79,10 @@ class WorkerPlugin {
78
79
  WorkerDependency,
79
80
  new WorkerDependency.Template()
80
81
  );
82
+ compilation.dependencyTemplates.set(
83
+ CreateScriptUrlDependency,
84
+ new CreateScriptUrlDependency.Template()
85
+ );
81
86
 
82
87
  /**
83
88
  * @param {JavascriptParser} parser the parser
@@ -181,21 +186,18 @@ class WorkerPlugin {
181
186
  spread: hasSpreadInOptions,
182
187
  insertType,
183
188
  insertLocation
184
- } =
185
- arg2 && arg2.type === "ObjectExpression"
186
- ? parseObjectExpression(parser, arg2)
187
- : {
188
- expressions: {},
189
- otherElements: [],
190
- values: {},
191
- spread: false,
192
- insertType: arg2 ? "spread" : "argument",
193
- insertLocation: arg2 ? arg2.range : arg1.range[1]
194
- };
195
- const {
196
- options: importOptions,
197
- errors: commentErrors
198
- } = parser.parseCommentOptions(expr.range);
189
+ } = arg2 && arg2.type === "ObjectExpression"
190
+ ? parseObjectExpression(parser, arg2)
191
+ : {
192
+ expressions: {},
193
+ otherElements: [],
194
+ values: {},
195
+ spread: false,
196
+ insertType: arg2 ? "spread" : "argument",
197
+ insertLocation: arg2 ? arg2.range : arg1.range[1]
198
+ };
199
+ const { options: importOptions, errors: commentErrors } =
200
+ parser.parseCommentOptions(expr.range);
199
201
 
200
202
  if (commentErrors) {
201
203
  for (const e of commentErrors) {
@@ -275,9 +277,9 @@ class WorkerPlugin {
275
277
  )}|${i}`;
276
278
  const hash = createHash(compilation.outputOptions.hashFunction);
277
279
  hash.update(name);
278
- const digest = /** @type {string} */ (hash.digest(
279
- compilation.outputOptions.hashDigest
280
- ));
280
+ const digest = /** @type {string} */ (
281
+ hash.digest(compilation.outputOptions.hashDigest)
282
+ );
281
283
  entryOptions.runtime = digest.slice(
282
284
  0,
283
285
  compilation.outputOptions.hashDigestLength
@@ -297,7 +299,14 @@ class WorkerPlugin {
297
299
  dep.loc = expr.loc;
298
300
  block.addDependency(dep);
299
301
  parser.state.module.addBlock(block);
300
- parser.walkExpression(expr.callee);
302
+
303
+ if (compilation.outputOptions.trustedTypes) {
304
+ const dep = new CreateScriptUrlDependency(
305
+ expr.arguments[0].range
306
+ );
307
+ dep.loc = expr.loc;
308
+ parser.state.module.addDependency(dep);
309
+ }
301
310
 
302
311
  if (expressions.type) {
303
312
  const expr = expressions.type;
@@ -329,6 +338,7 @@ class WorkerPlugin {
329
338
  parser.state.module.addPresentationalDependency(dep2);
330
339
  }
331
340
 
341
+ parser.walkExpression(expr.callee);
332
342
  for (const key of Object.keys(expressions)) {
333
343
  if (expressions[key]) parser.walkExpression(expressions[key]);
334
344
  }
@@ -355,7 +365,9 @@ class WorkerPlugin {
355
365
  (call ? parser.hooks.call : parser.hooks.new)
356
366
  .for(harmonySpecifierTag)
357
367
  .tap("WorkerPlugin", expr => {
358
- const settings = /** @type {HarmonySettings} */ (parser.currentTagData);
368
+ const settings = /** @type {HarmonySettings} */ (
369
+ parser.currentTagData
370
+ );
359
371
  if (
360
372
  !settings ||
361
373
  settings.source !== source ||
@@ -196,8 +196,9 @@ class LazyCompilationProxyModule extends Module {
196
196
  const sources = new Map();
197
197
  const runtimeRequirements = new Set();
198
198
  runtimeRequirements.add(RuntimeGlobals.module);
199
- const clientDep = /** @type {CommonJsRequireDependency} */ (this
200
- .dependencies[0]);
199
+ const clientDep = /** @type {CommonJsRequireDependency} */ (
200
+ this.dependencies[0]
201
+ );
201
202
  const clientModule = moduleGraph.getModule(clientDep);
202
203
  const block = this.blocks[0];
203
204
  const client = Template.asString([
@@ -290,8 +291,9 @@ class LazyCompilationDependencyFactory extends ModuleFactory {
290
291
  * @returns {void}
291
292
  */
292
293
  create(data, callback) {
293
- const dependency = /** @type {LazyCompilationDependency} */ (data
294
- .dependencies[0]);
294
+ const dependency = /** @type {LazyCompilationDependency} */ (
295
+ data.dependencies[0]
296
+ );
295
297
  callback(null, {
296
298
  module: dependency.proxyModule.originalModule
297
299
  });
@@ -63,9 +63,9 @@ class HashedModuleIdsPlugin {
63
63
  const ident = getFullModuleName(module, context, compiler.root);
64
64
  const hash = createHash(options.hashFunction);
65
65
  hash.update(ident || "");
66
- const hashId = /** @type {string} */ (hash.digest(
67
- options.hashDigest
68
- ));
66
+ const hashId = /** @type {string} */ (
67
+ hash.digest(options.hashDigest)
68
+ );
69
69
  let len = options.hashDigestLength;
70
70
  while (usedIds.has(hashId.substr(0, len))) len++;
71
71
  const moduleId = hashId.substr(0, len);
@@ -98,9 +98,8 @@ class OccurrenceModuleIdsPlugin {
98
98
  connections
99
99
  ] of moduleGraph.getIncomingConnectionsByOriginModule(module)) {
100
100
  if (!originModule) continue;
101
- const chunkModules = chunkGraph.getNumberOfModuleChunks(
102
- originModule
103
- );
101
+ const chunkModules =
102
+ chunkGraph.getNumberOfModuleChunks(originModule);
104
103
  for (const c of connections) {
105
104
  if (!c.isTargetActive(undefined)) continue;
106
105
  if (!c.dependency) continue;
package/lib/index.js CHANGED
@@ -50,9 +50,11 @@ const memoize = require("./util/memoize");
50
50
  */
51
51
  const lazyFunction = factory => {
52
52
  const fac = memoize(factory);
53
- const f = /** @type {any} */ ((...args) => {
54
- return fac()(...args);
55
- });
53
+ const f = /** @type {any} */ (
54
+ (...args) => {
55
+ return fac()(...args);
56
+ }
57
+ );
56
58
  return /** @type {T} */ (f);
57
59
  };
58
60
 
@@ -47,9 +47,8 @@ class ArrayPushCallbackChunkFormatPlugin {
47
47
  chunk instanceof HotUpdateChunk ? chunk : null;
48
48
  const globalObject = runtimeTemplate.outputOptions.globalObject;
49
49
  const source = new ConcatSource();
50
- const runtimeModules = chunkGraph.getChunkRuntimeModulesInOrder(
51
- chunk
52
- );
50
+ const runtimeModules =
51
+ chunkGraph.getChunkRuntimeModulesInOrder(chunk);
53
52
  if (hotUpdateChunk) {
54
53
  const hotUpdateGlobal =
55
54
  runtimeTemplate.outputOptions.hotUpdateGlobal;
@@ -83,9 +82,8 @@ class ArrayPushCallbackChunkFormatPlugin {
83
82
  chunkGraph.getChunkEntryModulesWithChunkGroupIterable(chunk)
84
83
  );
85
84
  if (runtimeModules.length > 0 || entries.length > 0) {
86
- const strictBailout = hooks.strictRuntimeBailout.call(
87
- renderContext
88
- );
85
+ const strictBailout =
86
+ hooks.strictRuntimeBailout.call(renderContext);
89
87
  const runtime = new ConcatSource(
90
88
  (runtimeTemplate.supportsArrowFunction()
91
89
  ? "__webpack_require__ =>"
@@ -51,9 +51,8 @@ class CommonJsChunkFormatPlugin {
51
51
  source.add(`exports.modules = `);
52
52
  source.add(modules);
53
53
  source.add(";\n");
54
- const runtimeModules = chunkGraph.getChunkRuntimeModulesInOrder(
55
- chunk
56
- );
54
+ const runtimeModules =
55
+ chunkGraph.getChunkRuntimeModulesInOrder(chunk);
57
56
  if (runtimeModules.length > 0) {
58
57
  source.add("exports.runtime =\n");
59
58
  source.add(
@@ -180,7 +180,9 @@ class JavascriptGenerator extends Generator {
180
180
  * @returns {void}
181
181
  */
182
182
  sourceDependency(module, dependency, initFragments, source, generateContext) {
183
- const constructor = /** @type {new (...args: any[]) => Dependency} */ (dependency.constructor);
183
+ const constructor = /** @type {new (...args: any[]) => Dependency} */ (
184
+ dependency.constructor
185
+ );
184
186
  const template = generateContext.dependencyTemplates.get(constructor);
185
187
  if (!template) {
186
188
  throw new Error(