@depup/webpack 5.110.3-depup.0 → 5.111.1-depup.0

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.
Files changed (283) hide show
  1. package/README.md +7 -8
  2. package/changes.json +7 -11
  3. package/lib/APIPlugin.js +26 -11
  4. package/lib/AutomaticPrefetchPlugin.js +1 -1
  5. package/lib/Cache.js +8 -3
  6. package/lib/CacheFacade.js +1 -1
  7. package/lib/CircularModulesPlugin.js +157 -55
  8. package/lib/CleanPlugin.js +2 -2
  9. package/lib/CompatibilityPlugin.js +3 -4
  10. package/lib/Compilation.js +336 -337
  11. package/lib/Compiler.js +213 -51
  12. package/lib/ConstPlugin.js +16 -132
  13. package/lib/CopyPlugin.js +1054 -0
  14. package/lib/DefinePlugin.js +24 -8
  15. package/lib/DependencyTemplate.js +2 -1
  16. package/lib/DotenvPlugin.js +24 -28
  17. package/lib/ErrorHelpers.js +113 -0
  18. package/lib/ExportsInfo.js +20 -16
  19. package/lib/ExternalModule.js +47 -22
  20. package/lib/FileSystemInfo.js +17 -14
  21. package/lib/FlagDependencyExportsPlugin.js +53 -34
  22. package/lib/FlagDependencyUsagePlugin.js +9 -13
  23. package/lib/Generator.js +24 -2
  24. package/lib/HotModuleReplacementPlugin.js +55 -7
  25. package/lib/IgnorePlugin.js +1 -1
  26. package/lib/JavascriptMetaInfoPlugin.js +5 -3
  27. package/lib/LoaderOptionsPlugin.js +1 -1
  28. package/lib/MainTemplate.js +5 -1
  29. package/lib/Module.js +19 -10
  30. package/lib/ModuleGraph.js +6 -9
  31. package/lib/MultiCompiler.js +7 -17
  32. package/lib/MultiWatching.js +1 -1
  33. package/lib/NormalModule.js +135 -50
  34. package/lib/NormalModuleFactory.js +1 -1
  35. package/lib/RuntimeGlobals.js +21 -7
  36. package/lib/RuntimeModule.js +28 -12
  37. package/lib/RuntimePlugin.js +30 -3
  38. package/lib/RuntimeTemplate.js +813 -518
  39. package/lib/SourceMapDevToolPlugin.js +54 -104
  40. package/lib/TemplatedPathPlugin.js +16 -59
  41. package/lib/Watching.js +9 -0
  42. package/lib/WebpackOptionsApply.js +84 -91
  43. package/lib/asset/AssetBytesGenerator.js +7 -1
  44. package/lib/asset/AssetGenerator.js +50 -24
  45. package/lib/asset/AssetModule.js +3 -0
  46. package/lib/asset/AssetSourceGenerator.js +7 -1
  47. package/lib/asset/WebManifestParser.js +7 -5
  48. package/lib/buildChunkGraph.js +11 -15
  49. package/lib/cache/AddBuildDependenciesPlugin.js +33 -4
  50. package/lib/cache/IdleFileCachePlugin.js +2 -2
  51. package/lib/cache/MemoryCachePlugin.js +4 -4
  52. package/lib/cache/MemoryWithGcCachePlugin.js +7 -8
  53. package/lib/cache/PackFileCacheStrategy.js +17 -19
  54. package/lib/cache/getLazyHashedEtag.js +3 -5
  55. package/lib/config/browserslistTargetHandler.js +17 -4
  56. package/lib/config/defaults.js +138 -128
  57. package/lib/config/getClaimedAssetTypes.js +10 -11
  58. package/lib/config/normalization.js +82 -12
  59. package/lib/config/target.js +13 -4
  60. package/lib/container/ContainerReferencePlugin.js +6 -0
  61. package/lib/container/RemoteRuntimeModule.js +9 -0
  62. package/lib/container/declaredRemotes.js +39 -0
  63. package/lib/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
  64. package/lib/{ContextModule.js → context/ContextModule.js} +54 -115
  65. package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +19 -21
  66. package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
  67. package/lib/css/CssGenerator.js +27 -11
  68. package/lib/css/CssInjectStyleRuntimeModule.js +9 -0
  69. package/lib/css/CssLoadingRuntimeModule.js +94 -36
  70. package/lib/css/CssModule.js +1 -1
  71. package/lib/css/CssModulesPlugin.js +7 -6
  72. package/lib/css/CssParser.js +162 -31
  73. package/lib/css/CssServerStylesRuntimeModule.js +9 -0
  74. package/lib/css/cssMinify.js +43 -32
  75. package/lib/css/data.js +3514 -869
  76. package/lib/css/syntax.js +6370 -1220
  77. package/lib/debug/ProfilingPlugin.js +7 -4
  78. package/lib/dependencies/AMDDefineDependencyParserPlugin.js +6 -3
  79. package/lib/dependencies/AMDRuntimeModules.js +18 -0
  80. package/lib/dependencies/CommonJsExportRequireDependency.js +13 -12
  81. package/lib/dependencies/CommonJsExportsParserPlugin.js +12 -13
  82. package/lib/dependencies/CommonJsImportsParserPlugin.js +5 -5
  83. package/lib/dependencies/CommonJsPlugin.js +19 -3
  84. package/lib/dependencies/CommonJsRequireDependency.js +14 -5
  85. package/lib/dependencies/CommonJsSelfReferenceDependency.js +2 -4
  86. package/lib/dependencies/ContextDependency.js +1 -1
  87. package/lib/dependencies/ContextDependencyHelpers.js +3 -9
  88. package/lib/dependencies/ContextElementDependency.js +1 -1
  89. package/lib/dependencies/CssIcssExportDependency.js +13 -9
  90. package/lib/dependencies/CssIcssImportDependency.js +3 -6
  91. package/lib/dependencies/CssUrlDependency.js +3 -5
  92. package/lib/dependencies/HarmonyCompatibilityDependency.js +67 -22
  93. package/lib/dependencies/HarmonyDetectionParserPlugin.js +3 -4
  94. package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +10 -7
  95. package/lib/dependencies/HarmonyExportExpressionDependency.js +47 -33
  96. package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +74 -17
  97. package/lib/dependencies/HarmonyExportInitFragment.js +110 -23
  98. package/lib/dependencies/HarmonyExportSpecifierDependency.js +25 -58
  99. package/lib/dependencies/HarmonyImportBareSideEffectDependency.js +59 -0
  100. package/lib/dependencies/HarmonyImportDependency.js +6 -1
  101. package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +111 -17
  102. package/lib/dependencies/HarmonyImportSideEffectDependency.js +3 -4
  103. package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -3
  104. package/lib/dependencies/HarmonyModulesPlugin.js +20 -0
  105. package/lib/dependencies/HtmlEntryDependency.js +124 -102
  106. package/lib/dependencies/HtmlInlineScriptDependency.js +3 -4
  107. package/lib/dependencies/HtmlInlineStyleDependency.js +3 -4
  108. package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +1 -1
  109. package/lib/dependencies/ImportMetaGlobHelpers.js +1 -1
  110. package/lib/dependencies/ImportMetaMainDependency.js +104 -0
  111. package/lib/dependencies/ImportMetaPlugin.js +67 -25
  112. package/lib/dependencies/ImportParserPlugin.js +1 -1
  113. package/lib/dependencies/LoaderPlugin.js +26 -1
  114. package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
  115. package/lib/dependencies/SystemRuntimeModule.js +9 -0
  116. package/lib/dependencies/URLContextDependency.js +1 -1
  117. package/lib/dependencies/URLDependency.js +6 -5
  118. package/lib/dependencies/WorkerAndWorkletPlugin.js +15 -21
  119. package/lib/dependencies/WorkerDependency.js +7 -7
  120. package/lib/dependencies/WorkletDependency.js +7 -11
  121. package/lib/dll/DelegatedModule.js +18 -1
  122. package/lib/dll/DllReferencePlugin.js +11 -8
  123. package/lib/dll/LibManifestPlugin.js +1 -1
  124. package/lib/errors/AnalyzableBailoutsWarning.js +41 -0
  125. package/lib/errors/DuplicateModulesWarning.js +12 -7
  126. package/lib/errors/EmptyCopyPatternWarning.js +26 -0
  127. package/lib/errors/ExternalStarReexportError.js +44 -0
  128. package/lib/errors/HookWebpackError.js +3 -2
  129. package/lib/errors/MissingSourceMapsWarning.js +36 -0
  130. package/lib/errors/ModuleParseError.js +2 -1
  131. package/lib/errors/UnusedAssetsWarning.js +36 -0
  132. package/lib/errors/UnusedFederationWarning.js +35 -0
  133. package/lib/errors/UnusedModulesWarning.js +38 -0
  134. package/lib/esm/ExportWebpackRequireRuntimeModule.js +9 -0
  135. package/lib/esm/ModuleChunkFormatPlugin.js +28 -3
  136. package/lib/esm/ModuleChunkLoadingPlugin.js +30 -11
  137. package/lib/esm/ModuleChunkLoadingRuntimeModule.js +92 -60
  138. package/lib/hmr/HotModuleReplacement.runtime.js +8 -2
  139. package/lib/hmr/HotModuleReplacementRuntimeModule.js +9 -0
  140. package/lib/hmr/LazyCompilationPlugin.js +3 -5
  141. package/lib/html/HtmlGenerator.js +72 -87
  142. package/lib/html/HtmlModulesPlugin.js +418 -200
  143. package/lib/html/HtmlParser.js +110 -147
  144. package/lib/html/builtinEmbeddedRenderer.js +107 -0
  145. package/lib/html/data.js +142 -7
  146. package/lib/html/htmlMinify.js +92 -122
  147. package/lib/html/syntax.js +1618 -1391
  148. package/lib/ids/HashedModuleIdsPlugin.js +2 -1
  149. package/lib/index.js +49 -3
  150. package/lib/javascript/ChunkFormatHelpers.js +4 -3
  151. package/lib/javascript/JavascriptGenerator.js +8 -1
  152. package/lib/javascript/JavascriptModule.js +1 -0
  153. package/lib/javascript/JavascriptModulesPlugin.js +73 -72
  154. package/lib/javascript/JavascriptParser.js +1970 -900
  155. package/lib/javascript/StartupHelpers.js +27 -3
  156. package/lib/javascript/data.js +172 -0
  157. package/lib/javascript/grammar.js +5546 -0
  158. package/lib/javascript/parser.js +1500 -0
  159. package/lib/javascript/regexp.js +1762 -0
  160. package/lib/javascript/regexpData.js +51 -0
  161. package/lib/javascript/syntax.js +9061 -5262
  162. package/lib/json/JsonGenerator.js +7 -1
  163. package/lib/library/ModuleLibraryPlugin.js +171 -132
  164. package/lib/loaders/LoaderRunner.js +137 -9
  165. package/lib/node/NodeWatchFileSystem.js +3 -9
  166. package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -0
  167. package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -0
  168. package/lib/optimize/AggressiveMergingPlugin.js +3 -5
  169. package/lib/optimize/ConcatenatedModule.js +178 -120
  170. package/lib/optimize/ConstExportsPlugin.js +50 -39
  171. package/lib/optimize/FlagIncludedChunksPlugin.js +3 -11
  172. package/lib/optimize/InlineExports.js +20 -123
  173. package/lib/optimize/InnerGraphPlugin.js +7 -13
  174. package/lib/optimize/LimitChunkCountPlugin.js +5 -8
  175. package/lib/optimize/MangleExportsPlugin.js +13 -4
  176. package/lib/optimize/ModuleConcatenationPlugin.js +27 -5
  177. package/lib/optimize/RealContentHashPlugin.js +68 -9
  178. package/lib/optimize/SideEffectsFlagPlugin.js +24 -28
  179. package/lib/optimize/SplitChunksPlugin.js +2 -4
  180. package/lib/performance/AnalyzableBailoutsPlugin.js +115 -0
  181. package/lib/performance/BroadContextsPlugin.js +1 -1
  182. package/lib/performance/CacheEffectivenessPlugin.js +7 -7
  183. package/lib/performance/DuplicateModulesPlugin.js +57 -13
  184. package/lib/performance/EvalUsagePlugin.js +5 -2
  185. package/lib/performance/MissingSourceMapsPlugin.js +115 -0
  186. package/lib/performance/PureAnnotationsPlugin.js +6 -3
  187. package/lib/performance/SizeLimitsPlugin.js +2 -4
  188. package/lib/performance/TopLevelThisPlugin.js +5 -4
  189. package/lib/performance/UnusedAssetsPlugin.js +109 -0
  190. package/lib/performance/UnusedFederationPlugin.js +147 -0
  191. package/lib/performance/UnusedModulesPlugin.js +141 -0
  192. package/lib/performance/UnusedReexportsPlugin.js +1 -55
  193. package/lib/performance/isOnlyReexported.js +65 -0
  194. package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +25 -5
  195. package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +8 -8
  196. package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +9 -0
  197. package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +9 -0
  198. package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +9 -0
  199. package/lib/prefetch/ResourceHintPlugin.js +18 -23
  200. package/lib/prefetch/ResourceHintRuntimeModule.js +9 -0
  201. package/lib/prefetch/StartupAssetHintRuntimeModule.js +16 -10
  202. package/lib/rules/RuleSetCompiler.js +211 -4
  203. package/lib/runtime/AsyncModuleRuntimeModule.js +98 -66
  204. package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -0
  205. package/lib/runtime/BaseUriRuntimeModule.js +9 -0
  206. package/lib/runtime/ChunkNameRuntimeModule.js +9 -0
  207. package/lib/runtime/EnsureChunkRuntimeModule.js +35 -16
  208. package/lib/runtime/GetChunkFilenameRuntimeModule.js +12 -4
  209. package/lib/runtime/GetFullHashRuntimeModule.js +9 -0
  210. package/lib/runtime/GetMainFilenameRuntimeModule.js +9 -0
  211. package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +9 -0
  212. package/lib/runtime/GlobalRuntimeModule.js +11 -4
  213. package/lib/runtime/HasOwnPropertyRuntimeModule.js +9 -0
  214. package/lib/runtime/HelperRuntimeModule.js +10 -0
  215. package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +305 -224
  216. package/lib/runtime/NonceRuntimeModule.js +9 -0
  217. package/lib/runtime/OnChunksLoadedRuntimeModule.js +67 -20
  218. package/lib/runtime/PublicPathRuntimeModule.js +9 -0
  219. package/lib/runtime/RuntimeIdRuntimeModule.js +9 -0
  220. package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +90 -0
  221. package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +9 -0
  222. package/lib/runtime/StartupEntrypointRuntimeModule.js +9 -0
  223. package/lib/runtime/SystemContextRuntimeModule.js +9 -0
  224. package/lib/runtime/ToBinaryRuntimeModule.js +9 -0
  225. package/lib/schemes/DataUriPlugin.js +3 -6
  226. package/lib/schemes/VirtualUrlPlugin.js +1 -1
  227. package/lib/serialization/BinaryMiddleware.js +9 -9
  228. package/lib/serialization/FileMiddleware.js +16 -16
  229. package/lib/serialization/ObjectMiddleware.js +168 -139
  230. package/lib/sharing/ConsumeSharedPlugin.js +12 -0
  231. package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -0
  232. package/lib/sharing/ShareRuntimeModule.js +9 -0
  233. package/lib/sharing/declaredShared.js +47 -0
  234. package/lib/stats/DefaultStatsFactoryPlugin.js +6 -5
  235. package/lib/stats/DefaultStatsPrinterPlugin.js +3 -0
  236. package/lib/typescript/TypeScriptPlugin.js +2 -3
  237. package/lib/url/URLParserPlugin.js +6 -8
  238. package/lib/util/LocConverter.js +4 -7
  239. package/lib/util/SourceProcessor.js +91 -91
  240. package/lib/util/async.js +292 -0
  241. package/lib/util/buildDiagnostics.js +69 -0
  242. package/lib/util/chainedImports.js +3 -4
  243. package/lib/util/concatenate.js +4 -4
  244. package/lib/util/createHooksRegistry.js +1 -2
  245. package/lib/util/dataURL.js +2 -3
  246. package/lib/util/deterministicGrouping.js +8 -13
  247. package/lib/util/findGraphRoots.js +6 -13
  248. package/lib/util/fs.js +27 -1
  249. package/lib/util/globUtils.js +1 -1
  250. package/lib/util/handlerKeys.js +40 -0
  251. package/lib/util/hash/wasm-hash.js +3 -4
  252. package/lib/util/identifier.js +20 -0
  253. package/lib/util/internalSerializables.js +5 -1
  254. package/lib/util/registerExternalSerializer.js +6 -45
  255. package/lib/util/semver.js +5 -3
  256. package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +9 -0
  257. package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +9 -0
  258. package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -1
  259. package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -1
  260. package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +12 -4
  261. package/lib/wasm-sync/WebAssemblyGenerator.js +6 -1
  262. package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -1
  263. package/lib/wasm-sync/WebAssemblyUtils.js +2 -4
  264. package/lib/web/JsonpChunkLoadingRuntimeModule.js +36 -0
  265. package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +19 -0
  266. package/package.json +55 -46
  267. package/schemas/WebpackOptions.check.js +1 -1
  268. package/schemas/WebpackOptions.json +379 -66
  269. package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
  270. package/schemas/plugins/ManifestPlugin.check.js +1 -1
  271. package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
  272. package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
  273. package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
  274. package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
  275. package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
  276. package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
  277. package/schemas/plugins/dll/DllReferencePlugin.check.js +1 -1
  278. package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -1
  279. package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
  280. package/types.d.ts +1723 -604
  281. package/lib/dependencies/ExportBindingInitFragment.js +0 -191
  282. package/lib/errors/EntrypointOverlapWarning.js +0 -45
  283. package/lib/performance/EntrypointOverlapPlugin.js +0 -122
@@ -7,12 +7,31 @@
7
7
  const RuntimeGlobals = require("../RuntimeGlobals");
8
8
  const RuntimeModule = require("../RuntimeModule");
9
9
  const Template = require("../Template");
10
+ const { getOnlyHandlerKey } = require("../util/handlerKeys");
11
+ const { propertyAccess } = require("../util/property");
10
12
 
11
13
  /** @import Compilation from "../Compilation" */
14
+ /** @import { ReadOnlyRuntimeRequirements } from "../Module" */
12
15
 
13
16
  class OnChunksLoadedRuntimeModule extends RuntimeModule {
14
- constructor() {
17
+ /**
18
+ * @param {ReadOnlyRuntimeRequirements} runtimeRequirements runtime requirements
19
+ */
20
+ constructor(runtimeRequirements) {
15
21
  super("chunk loaded");
22
+ /** @type {ReadOnlyRuntimeRequirements} */
23
+ this.runtimeRequirements = runtimeRequirements;
24
+ }
25
+
26
+ /**
27
+ * The `[handlerMap, key]` pairs this module installs onto a chunk handler map
28
+ * such as `__webpack_require__.f`, or `null` where it cannot name them.
29
+ * @returns {[string, string][] | null} installed chunk handlers (do not mutate)
30
+ */
31
+ getInstalledChunkHandlers() {
32
+ // Reads a map rather than installing onto one, so reading its code back would
33
+ // render it in a cycle.
34
+ return RuntimeModule.NO_CHUNK_HANDLERS;
16
35
  }
17
36
 
18
37
  /**
@@ -22,24 +41,38 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
22
41
  generate() {
23
42
  const compilation = /** @type {Compilation} */ (this.compilation);
24
43
  const { runtimeTemplate } = compilation;
44
+ // Only a prefetch startup callback is queued behind a priority, so without one
45
+ // the queue keeps insertion order and nothing has to hold the lowest seen.
46
+ const withPriority = this.runtimeRequirements.has(
47
+ RuntimeGlobals.hasChunkPriority
48
+ );
49
+ const only = getOnlyHandlerKey(this, RuntimeGlobals.onChunksLoaded);
25
50
  return Template.asString([
26
51
  `${runtimeTemplate.renderConst()} deferred = [];`,
27
52
  `${RuntimeGlobals.onChunksLoaded} = ${runtimeTemplate.basicFunction(
28
- "result, chunkIds, fn, priority",
53
+ `result, chunkIds, fn${withPriority ? ", priority" : ""}`,
29
54
  [
30
55
  "if(chunkIds) {",
31
- Template.indent([
32
- `${runtimeTemplate.assignOr("priority", "0")};`,
33
- "for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];",
34
- "deferred[i] = [chunkIds, fn, priority];",
35
- "return;"
36
- ]),
56
+ Template.indent(
57
+ withPriority
58
+ ? [
59
+ `${runtimeTemplate.assignOr("priority", "0")};`,
60
+ "for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];",
61
+ "deferred[i] = [chunkIds, fn, priority];",
62
+ "return;"
63
+ ]
64
+ : ["deferred.push([chunkIds, fn]);", "return;"]
65
+ ),
37
66
  "}",
38
- `${runtimeTemplate.renderLet()} notFulfilled = Infinity;`,
67
+ ...(withPriority
68
+ ? [`${runtimeTemplate.renderLet()} notFulfilled = Infinity;`]
69
+ : []),
39
70
  "for (var i = 0; i < deferred.length; i++) {",
40
71
  Template.indent([
41
72
  runtimeTemplate.destructureArray(
42
- ["chunkIds", "fn", "priority"],
73
+ withPriority
74
+ ? ["chunkIds", "fn", "priority"]
75
+ : ["chunkIds", "fn"],
43
76
  "deferred[i]"
44
77
  ),
45
78
  `${runtimeTemplate.renderLet()} fulfilled = true;`,
@@ -47,18 +80,32 @@ class OnChunksLoadedRuntimeModule extends RuntimeModule {
47
80
  Template.indent([
48
81
  // Parenthesized: `&` binds looser than `===`, so `priority & 1 === 0`
49
82
  // is `priority & false` and gates every priority, not just the odd ones.
50
- `if (((priority & 1) === 0 || notFulfilled >= priority) && Object.keys(${
51
- RuntimeGlobals.onChunksLoaded
52
- }).every(${runtimeTemplate.returningFunction(
53
- `${RuntimeGlobals.onChunksLoaded}[key](chunkIds[j])`,
54
- "key"
55
- )})) {`,
83
+ `if (${
84
+ withPriority
85
+ ? "((priority & 1) === 0 || notFulfilled >= priority) && "
86
+ : ""
87
+ }${
88
+ only === null
89
+ ? `Object.keys(${
90
+ RuntimeGlobals.onChunksLoaded
91
+ }).every(${runtimeTemplate.returningFunction(
92
+ `${RuntimeGlobals.onChunksLoaded}[key](chunkIds[j])`,
93
+ "key"
94
+ )})`
95
+ : `${RuntimeGlobals.onChunksLoaded}${propertyAccess([
96
+ only
97
+ ])}(chunkIds[j])`
98
+ }) {`,
56
99
  Template.indent(["chunkIds.splice(j--, 1);"]),
57
100
  "} else {",
58
- Template.indent([
59
- "fulfilled = false;",
60
- "if(priority < notFulfilled) notFulfilled = priority;"
61
- ]),
101
+ Template.indent(
102
+ withPriority
103
+ ? [
104
+ "fulfilled = false;",
105
+ "if(priority < notFulfilled) notFulfilled = priority;"
106
+ ]
107
+ : ["fulfilled = false;"]
108
+ ),
62
109
  "}"
63
110
  ]),
64
111
  "}",
@@ -30,6 +30,15 @@ class PublicPathRuntimeModule extends RuntimeModule {
30
30
  this.publicPath = publicPath;
31
31
  }
32
32
 
33
+ /**
34
+ * The `[handlerMap, key]` pairs this module installs onto a chunk handler map
35
+ * such as `__webpack_require__.f`, or `null` where it cannot name them.
36
+ * @returns {[string, string][] | null} installed chunk handlers (do not mutate)
37
+ */
38
+ getInstalledChunkHandlers() {
39
+ return RuntimeModule.NO_CHUNK_HANDLERS;
40
+ }
41
+
33
42
  /**
34
43
  * Generates runtime code for this runtime module.
35
44
  * @returns {string | null} runtime code
@@ -25,6 +25,15 @@ class RuntimeIdRuntimeModule extends RuntimeModule {
25
25
  return false;
26
26
  }
27
27
 
28
+ /**
29
+ * The `[handlerMap, key]` pairs this module installs onto a chunk handler map
30
+ * such as `__webpack_require__.f`, or `null` where it cannot name them.
31
+ * @returns {[string, string][] | null} installed chunk handlers (do not mutate)
32
+ */
33
+ getInstalledChunkHandlers() {
34
+ return RuntimeModule.NO_CHUNK_HANDLERS;
35
+ }
36
+
28
37
  /**
29
38
  * Generates runtime code for this runtime module.
30
39
  * @returns {string | null} runtime code
@@ -0,0 +1,90 @@
1
+ /*
2
+ MIT License http://www.opensource.org/licenses/mit-license.php
3
+ Author Alexander Akait @alexander-akait
4
+ */
5
+
6
+ "use strict";
7
+
8
+ const RuntimeGlobals = require("../RuntimeGlobals");
9
+ const Template = require("../Template");
10
+ const HelperRuntimeModule = require("./HelperRuntimeModule");
11
+
12
+ /** @import Compilation from "../Compilation" */
13
+
14
+ class SpecNamespaceObjectRuntimeModule extends HelperRuntimeModule {
15
+ constructor() {
16
+ super("spec namespace object");
17
+ }
18
+
19
+ /**
20
+ * Generates runtime code for this runtime module.
21
+ * @returns {string | null} runtime code
22
+ */
23
+ generate() {
24
+ const compilation = /** @type {Compilation} */ (this.compilation);
25
+ const { runtimeTemplate } = compilation;
26
+ const cst = runtimeTemplate.renderConst();
27
+ const lt = runtimeTemplate.renderLet();
28
+ const fn = RuntimeGlobals.specNamespaceObject;
29
+ return Template.asString([
30
+ `${fn} = ${runtimeTemplate.basicFunction("exports, record, mode", [
31
+ // One namespace per module: a module's own exports object identifies it,
32
+ // while a synthesized one is fresh per site, so its record identifies it.
33
+ `${cst} owner = record || exports;`,
34
+ `${lt} slots = ${fn}.c.get(owner);`,
35
+ `if (!slots) ${fn}.c.set(owner, (slots = { __proto__: null }));`,
36
+ // A synthesized namespace carries different names per mode, so one
37
+ // module can owe its importers more than one namespace.
38
+ `${cst} cached = slots[mode];`,
39
+ "if (cached) return cached;",
40
+ // The exports object keeps the live bindings; the sealed target
41
+ // carries only their names, so the traps stay invariant-safe.
42
+ `${cst} names = Object.getOwnPropertyNames(exports).filter(${runtimeTemplate.returningFunction(
43
+ "name !== '__esModule'",
44
+ "name"
45
+ )}).sort();`,
46
+ `${cst} target = { __proto__: null };`,
47
+ "for (var i = 0; i < names.length; i++) Object.defineProperty(target, names[i], { value: undefined, writable: true, enumerable: true, configurable: false });",
48
+ "Object.defineProperty(target, Symbol.toStringTag, { value: 'Module' });",
49
+ "Object.preventExtensions(target);",
50
+ `${cst} own = ${runtimeTemplate.returningFunction(
51
+ "typeof name === 'string' && Object.prototype.hasOwnProperty.call(target, name)",
52
+ "name"
53
+ )};`,
54
+ `${cst} ns = new Proxy(target, {`,
55
+ Template.indent([
56
+ "__proto__: null,",
57
+ "getPrototypeOf: function() { return null; },",
58
+ "setPrototypeOf: function(_, proto) { return proto === null; },",
59
+ "isExtensible: function() { return false; },",
60
+ "preventExtensions: function() { return true; },",
61
+ "get: function(_, name, receiver) { return own(name) ? exports[name] : Reflect.get(target, name, receiver); },",
62
+ "has: function(_, name) { return own(name) || Reflect.has(target, name); },",
63
+ "ownKeys: function() { return Reflect.ownKeys(target); },",
64
+ "getOwnPropertyDescriptor: function(_, name) { return own(name) ? { value: exports[name], writable: true, enumerable: true, configurable: false } : Reflect.getOwnPropertyDescriptor(target, name); },",
65
+ "set: function() { return false; },",
66
+ // A namespace may only be redefined to the descriptor it
67
+ // already reports, so anything else is rejected.
68
+ "defineProperty: function(_, name, descriptor) {",
69
+ Template.indent([
70
+ // Symbol keys are ordinary, so redefining Symbol.toStringTag
71
+ // to the descriptor it already has must still succeed.
72
+ "if (typeof name === 'symbol') return Reflect.defineProperty(target, name, descriptor);",
73
+ "if (!own(name) || 'get' in descriptor || 'set' in descriptor) return false;",
74
+ "if (descriptor.configurable === true || descriptor.enumerable === false || descriptor.writable === false) return false;",
75
+ "return !('value' in descriptor) || Object.is(descriptor.value, exports[name]);"
76
+ ]),
77
+ "},",
78
+ "deleteProperty: function(_, name) { return !own(name) && !Reflect.has(target, name); }"
79
+ ]),
80
+ "});",
81
+ "slots[mode] = ns;",
82
+ "return ns;"
83
+ ])};`,
84
+ // The same owner must always yield the same namespace.
85
+ `${fn}.c = new WeakMap();`
86
+ ]);
87
+ }
88
+ }
89
+
90
+ module.exports = SpecNamespaceObjectRuntimeModule;
@@ -23,6 +23,15 @@ class StartupChunkDependenciesRuntimeModule extends RuntimeModule {
23
23
  this.asyncChunkLoading = asyncChunkLoading;
24
24
  }
25
25
 
26
+ /**
27
+ * The `[handlerMap, key]` pairs this module installs onto a chunk handler map
28
+ * such as `__webpack_require__.f`, or `null` where it cannot name them.
29
+ * @returns {[string, string][] | null} installed chunk handlers (do not mutate)
30
+ */
31
+ getInstalledChunkHandlers() {
32
+ return RuntimeModule.NO_CHUNK_HANDLERS;
33
+ }
34
+
26
35
  /**
27
36
  * Generates runtime code for this runtime module.
28
37
  * @returns {string | null} runtime code
@@ -31,6 +31,15 @@ class StartupEntrypointRuntimeModule extends RuntimeModule {
31
31
  this.asyncChunkLoading = asyncChunkLoading;
32
32
  }
33
33
 
34
+ /**
35
+ * The `[handlerMap, key]` pairs this module installs onto a chunk handler map
36
+ * such as `__webpack_require__.f`, or `null` where it cannot name them.
37
+ * @returns {[string, string][] | null} installed chunk handlers (do not mutate)
38
+ */
39
+ getInstalledChunkHandlers() {
40
+ return RuntimeModule.NO_CHUNK_HANDLERS;
41
+ }
42
+
34
43
  /**
35
44
  * Generates runtime code for this runtime module.
36
45
  * @returns {string | null} runtime code
@@ -22,6 +22,15 @@ class SystemContextRuntimeModule extends RuntimeModule {
22
22
  return false;
23
23
  }
24
24
 
25
+ /**
26
+ * The `[handlerMap, key]` pairs this module installs onto a chunk handler map
27
+ * such as `__webpack_require__.f`, or `null` where it cannot name them.
28
+ * @returns {[string, string][] | null} installed chunk handlers (do not mutate)
29
+ */
30
+ getInstalledChunkHandlers() {
31
+ return RuntimeModule.NO_CHUNK_HANDLERS;
32
+ }
33
+
25
34
  /**
26
35
  * Generates runtime code for this runtime module.
27
36
  * @returns {string | null} runtime code
@@ -16,6 +16,15 @@ class ToBinaryRuntimeModule extends RuntimeModule {
16
16
  super("to binary");
17
17
  }
18
18
 
19
+ /**
20
+ * The `[handlerMap, key]` pairs this module installs onto a chunk handler map
21
+ * such as `__webpack_require__.f`, or `null` where it cannot name them.
22
+ * @returns {[string, string][] | null} installed chunk handlers (do not mutate)
23
+ */
24
+ getInstalledChunkHandlers() {
25
+ return RuntimeModule.NO_CHUNK_HANDLERS;
26
+ }
27
+
19
28
  /**
20
29
  * Generates runtime code for this runtime module.
21
30
  * @returns {string | null} runtime code
@@ -34,12 +34,9 @@ class DataUriPlugin {
34
34
  );
35
35
  resourceData.data.encodedContent = match[4] || "";
36
36
  }
37
- // Inherit the issuer's resolution context so any nested
38
- // dependencies discovered while parsing the data URI's body
39
- // (e.g. `url(...)` / `@import` inside an inline CSS data
40
- // URI) resolve relative to where the URI was referenced
41
- // from, instead of against the synthetic `data:.../` path
42
- // that `getContext("data:…")` would otherwise infer.
37
+ // Inherit the issuer's resolution context, so a dependency found
38
+ // inside the data URI's body resolves against where the URI was
39
+ // referenced, not the synthetic `data:…` path.
43
40
  if (
44
41
  resourceData.context === undefined &&
45
42
  resolveData.context !== undefined
@@ -36,7 +36,7 @@ const PLUGIN_NAME = "VirtualUrlPlugin";
36
36
  /**
37
37
  * Defines the loader context type used by this module.
38
38
  * @template T
39
- * @typedef {import("../../declarations/LoaderContext").LoaderContext<T>} LoaderContext
39
+ * @typedef {import("../NormalModule").LoaderContext<T>} LoaderContext
40
40
  */
41
41
 
42
42
  /**
@@ -2,15 +2,6 @@
2
2
  MIT License http://www.opensource.org/licenses/mit-license.php
3
3
  */
4
4
 
5
- "use strict";
6
-
7
- const { deserialize: v8Deserialize, serialize: v8Serialize } = require("v8");
8
- const memoize = require("../util/memoize");
9
- const SerializerMiddleware = require("./SerializerMiddleware");
10
-
11
- /** @typedef {import("./types").PrimitiveSerializableType} PrimitiveSerializableType */
12
- /** @import { BufferSerializableType } from "./types" */
13
-
14
5
  /*
15
6
  Format:
16
7
 
@@ -28,6 +19,15 @@ ValuesHeaderByte -> 0xf1
28
19
  LazyHeaderByte -> 0xf2
29
20
  */
30
21
 
22
+ "use strict";
23
+
24
+ const { deserialize: v8Deserialize, serialize: v8Serialize } = require("v8");
25
+ const memoize = require("../util/memoize");
26
+ const SerializerMiddleware = require("./SerializerMiddleware");
27
+
28
+ /** @typedef {import("./types").PrimitiveSerializableType} PrimitiveSerializableType */
29
+ /** @import { BufferSerializableType } from "./types" */
30
+
31
31
  const VALUES_HEADER = 0xf1;
32
32
  const LAZY_HEADER = 0xf2;
33
33
 
@@ -2,6 +2,22 @@
2
2
  MIT License http://www.opensource.org/licenses/mit-license.php
3
3
  */
4
4
 
5
+ /*
6
+ Format:
7
+
8
+ File -> Header Section*
9
+
10
+ Version -> u32
11
+ AmountOfSections -> u32
12
+ SectionSize -> i32 (if less than zero represents lazy value)
13
+
14
+ Header -> Version AmountOfSections SectionSize*
15
+
16
+ Buffer -> n bytes
17
+ Section -> Buffer
18
+
19
+ */
20
+
5
21
  "use strict";
6
22
 
7
23
  const { constants } = require("buffer");
@@ -35,22 +51,6 @@ const SerializerMiddleware = require("./SerializerMiddleware");
35
51
  /** @import { IStats, IntermediateFileSystem } from "../util/fs" */
36
52
  /** @import { BufferSerializableType } from "./types" */
37
53
 
38
- /*
39
- Format:
40
-
41
- File -> Header Section*
42
-
43
- Version -> u32
44
- AmountOfSections -> u32
45
- SectionSize -> i32 (if less than zero represents lazy value)
46
-
47
- Header -> Version AmountOfSections SectionSize*
48
-
49
- Buffer -> n bytes
50
- Section -> Buffer
51
-
52
- */
53
-
54
54
  // "wpc" + 1 in little-endian
55
55
  const VERSION = 0x01637077;
56
56
  const WRITE_LIMIT_TOTAL = 0x7fff0000;