@depup/webpack 5.110.1-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.
- package/README.md +7 -8
- package/changes.json +7 -11
- package/lib/APIPlugin.js +26 -11
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/Cache.js +8 -3
- package/lib/CacheFacade.js +1 -1
- package/lib/ChunkGraph.js +20 -18
- package/lib/CircularModulesPlugin.js +157 -55
- package/lib/CleanPlugin.js +2 -2
- package/lib/CompatibilityPlugin.js +3 -4
- package/lib/Compilation.js +337 -338
- package/lib/Compiler.js +213 -51
- package/lib/ConcatenationScope.js +25 -35
- package/lib/ConstPlugin.js +16 -132
- package/lib/CopyPlugin.js +1054 -0
- package/lib/DefinePlugin.js +24 -8
- package/lib/DependencyTemplate.js +2 -1
- package/lib/DotenvPlugin.js +64 -40
- package/lib/ErrorHelpers.js +113 -0
- package/lib/ExportsInfo.js +30 -16
- package/lib/ExternalModule.js +47 -22
- package/lib/FileSystemInfo.js +17 -14
- package/lib/FlagDependencyExportsPlugin.js +53 -34
- package/lib/FlagDependencyUsagePlugin.js +17 -15
- package/lib/Generator.js +24 -2
- package/lib/HotModuleReplacementPlugin.js +55 -7
- package/lib/IgnorePlugin.js +1 -1
- package/lib/JavascriptMetaInfoPlugin.js +5 -3
- package/lib/LoaderOptionsPlugin.js +1 -1
- package/lib/MainTemplate.js +5 -1
- package/lib/Module.js +19 -10
- package/lib/ModuleGraph.js +6 -9
- package/lib/MultiCompiler.js +7 -17
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +148 -70
- package/lib/NormalModuleFactory.js +1 -1
- package/lib/RuntimeGlobals.js +21 -7
- package/lib/RuntimeModule.js +28 -12
- package/lib/RuntimePlugin.js +33 -3
- package/lib/RuntimeTemplate.js +1147 -847
- package/lib/SourceMapDevToolPlugin.js +54 -104
- package/lib/TemplatedPathPlugin.js +16 -59
- package/lib/Watching.js +9 -0
- package/lib/WebpackOptionsApply.js +84 -91
- package/lib/asset/AssetBytesGenerator.js +7 -1
- package/lib/asset/AssetGenerator.js +50 -24
- package/lib/asset/AssetModule.js +3 -0
- package/lib/asset/AssetSourceGenerator.js +7 -1
- package/lib/asset/WebManifestParser.js +7 -5
- package/lib/async-modules/AsyncModuleHelpers.js +10 -4
- package/lib/buildChunkGraph.js +11 -15
- package/lib/cache/AddBuildDependenciesPlugin.js +33 -4
- package/lib/cache/IdleFileCachePlugin.js +2 -2
- package/lib/cache/MemoryCachePlugin.js +4 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +7 -8
- package/lib/cache/PackFileCacheStrategy.js +17 -19
- package/lib/cache/getLazyHashedEtag.js +3 -5
- package/lib/config/browserslistTargetHandler.js +17 -4
- package/lib/config/defaults.js +162 -142
- package/lib/config/getClaimedAssetTypes.js +10 -11
- package/lib/config/normalization.js +100 -20
- package/lib/config/target.js +13 -4
- package/lib/container/ContainerReferencePlugin.js +6 -0
- package/lib/container/RemoteRuntimeModule.js +9 -0
- package/lib/container/declaredRemotes.js +39 -0
- package/lib/{ContextExclusionPlugin.js → context/ContextExclusionPlugin.js} +1 -1
- package/lib/{ContextModule.js → context/ContextModule.js} +54 -115
- package/lib/{ContextModuleFactory.js → context/ContextModuleFactory.js} +19 -21
- package/lib/{ContextReplacementPlugin.js → context/ContextReplacementPlugin.js} +4 -4
- package/lib/css/CssGenerator.js +27 -11
- package/lib/css/CssInjectStyleRuntimeModule.js +9 -0
- package/lib/css/CssLoadingRuntimeModule.js +92 -15
- package/lib/css/CssModule.js +1 -1
- package/lib/css/CssModulesPlugin.js +3 -10
- package/lib/css/CssParser.js +162 -31
- package/lib/css/CssServerStylesRuntimeModule.js +9 -0
- package/lib/css/cssMinify.js +43 -32
- package/lib/css/data.js +3526 -871
- package/lib/css/syntax.js +6455 -1237
- package/lib/debug/ProfilingPlugin.js +7 -4
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +6 -3
- package/lib/dependencies/AMDRuntimeModules.js +18 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +13 -12
- package/lib/dependencies/CommonJsExportsParserPlugin.js +12 -13
- package/lib/dependencies/CommonJsImportsParserPlugin.js +5 -5
- package/lib/dependencies/CommonJsPlugin.js +19 -3
- package/lib/dependencies/CommonJsRequireDependency.js +32 -9
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +2 -4
- package/lib/dependencies/ContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +3 -9
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +20 -7
- package/lib/dependencies/ContextElementDependency.js +1 -1
- package/lib/dependencies/CssIcssExportDependency.js +13 -9
- package/lib/dependencies/CssIcssImportDependency.js +3 -6
- package/lib/dependencies/CssUrlDependency.js +3 -5
- package/lib/dependencies/HarmonyCompatibilityDependency.js +67 -22
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +3 -4
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +10 -4
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +12 -7
- package/lib/dependencies/HarmonyExportExpressionDependency.js +47 -33
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +217 -34
- package/lib/dependencies/HarmonyExportInitFragment.js +110 -23
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +25 -58
- package/lib/dependencies/HarmonyImportBareSideEffectDependency.js +59 -0
- package/lib/dependencies/HarmonyImportDependency.js +99 -41
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +198 -25
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +117 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +40 -3
- package/lib/dependencies/HarmonyModulesPlugin.js +20 -0
- package/lib/dependencies/HtmlEntryDependency.js +136 -104
- package/lib/dependencies/HtmlInlineScriptDependency.js +3 -4
- package/lib/dependencies/HtmlInlineStyleDependency.js +3 -4
- package/lib/dependencies/ImportContextDependency.js +43 -3
- package/lib/dependencies/ImportDependency.js +8 -29
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/ImportMetaGlobHelpers.js +1 -1
- package/lib/dependencies/ImportMetaMainDependency.js +104 -0
- package/lib/dependencies/ImportMetaPlugin.js +67 -25
- package/lib/dependencies/ImportParserPlugin.js +25 -15
- package/lib/dependencies/LoaderPlugin.js +26 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RequireHeaderDependency.js +20 -21
- package/lib/dependencies/SystemRuntimeModule.js +9 -0
- package/lib/dependencies/URLContextDependency.js +1 -1
- package/lib/dependencies/URLDependency.js +6 -5
- package/lib/dependencies/WorkerAndWorkletPlugin.js +16 -21
- package/lib/dependencies/WorkerDependency.js +12 -18
- package/lib/dependencies/WorkletDependency.js +12 -20
- package/lib/dependencies/importOptionsCheck.js +47 -0
- package/lib/dll/DelegatedModule.js +18 -1
- package/lib/dll/DllReferencePlugin.js +11 -8
- package/lib/dll/LibManifestPlugin.js +1 -1
- package/lib/errors/AnalyzableBailoutsWarning.js +41 -0
- package/lib/errors/DotenvFileError.js +29 -0
- package/lib/errors/DuplicateModulesWarning.js +12 -7
- package/lib/errors/EmptyCopyPatternWarning.js +26 -0
- package/lib/errors/ExternalStarReexportError.js +44 -0
- package/lib/errors/HookWebpackError.js +3 -2
- package/lib/errors/ImportedBindingAssignmentError.js +30 -0
- package/lib/errors/MissingSourceMapsWarning.js +36 -0
- package/lib/errors/ModuleParseError.js +2 -1
- package/lib/errors/UnusedAssetsWarning.js +36 -0
- package/lib/errors/UnusedFederationWarning.js +35 -0
- package/lib/errors/UnusedModulesWarning.js +38 -0
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +9 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +28 -3
- package/lib/esm/ModuleChunkLoadingPlugin.js +21 -5
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +91 -53
- package/lib/hmr/HotModuleReplacement.runtime.js +8 -2
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +9 -0
- package/lib/hmr/LazyCompilationPlugin.js +3 -5
- package/lib/html/HtmlGenerator.js +72 -87
- package/lib/html/HtmlModulesPlugin.js +479 -215
- package/lib/html/HtmlParser.js +110 -147
- package/lib/html/builtinEmbeddedRenderer.js +107 -0
- package/lib/html/data.js +142 -7
- package/lib/html/htmlMinify.js +92 -122
- package/lib/html/syntax.js +2031 -1556
- package/lib/ids/HashedModuleIdsPlugin.js +2 -1
- package/lib/index.js +49 -3
- package/lib/javascript/ChunkFormatHelpers.js +4 -3
- package/lib/javascript/JavascriptGenerator.js +8 -1
- package/lib/javascript/JavascriptModule.js +1 -0
- package/lib/javascript/JavascriptModulesPlugin.js +76 -80
- package/lib/javascript/JavascriptParser.js +1970 -900
- package/lib/javascript/StartupHelpers.js +27 -3
- package/lib/javascript/data.js +172 -0
- package/lib/javascript/grammar.js +5546 -0
- package/lib/javascript/parser.js +1500 -0
- package/lib/javascript/regexp.js +1762 -0
- package/lib/javascript/regexpData.js +51 -0
- package/lib/javascript/syntax.js +9061 -5262
- package/lib/json/JsonGenerator.js +7 -1
- package/lib/library/ModuleLibraryPlugin.js +171 -132
- package/lib/loaders/LoaderRunner.js +170 -14
- package/lib/node/NodeWatchFileSystem.js +3 -9
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +22 -0
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +8 -15
- package/lib/node/RequireChunkLoadingRuntimeModule.js +22 -0
- package/lib/optimize/AggressiveMergingPlugin.js +3 -5
- package/lib/optimize/ConcatenatedModule.js +222 -125
- package/lib/optimize/ConstExportsPlugin.js +50 -34
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -11
- package/lib/optimize/InlineExports.js +20 -2
- package/lib/optimize/InnerGraphPlugin.js +7 -13
- package/lib/optimize/LimitChunkCountPlugin.js +5 -8
- package/lib/optimize/MangleExportsPlugin.js +13 -4
- package/lib/optimize/ModuleConcatenationPlugin.js +27 -5
- package/lib/optimize/RealContentHashPlugin.js +179 -44
- package/lib/optimize/SideEffectsFlagPlugin.js +24 -28
- package/lib/optimize/SplitChunksPlugin.js +2 -4
- package/lib/performance/AnalyzableBailoutsPlugin.js +115 -0
- package/lib/performance/BroadContextsPlugin.js +1 -1
- package/lib/performance/CacheEffectivenessPlugin.js +7 -7
- package/lib/performance/DuplicateModulesPlugin.js +57 -13
- package/lib/performance/EvalUsagePlugin.js +5 -2
- package/lib/performance/MissingSourceMapsPlugin.js +115 -0
- package/lib/performance/PureAnnotationsPlugin.js +6 -3
- package/lib/performance/SizeLimitsPlugin.js +2 -4
- package/lib/performance/TopLevelThisPlugin.js +5 -4
- package/lib/performance/UnusedAssetsPlugin.js +109 -0
- package/lib/performance/UnusedFederationPlugin.js +147 -0
- package/lib/performance/UnusedModulesPlugin.js +141 -0
- package/lib/performance/UnusedReexportsPlugin.js +1 -55
- package/lib/performance/isOnlyReexported.js +65 -0
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +25 -5
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +8 -8
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +9 -0
- package/lib/prefetch/ResourceHintPlugin.js +29 -35
- package/lib/prefetch/ResourceHintRuntimeModule.js +9 -0
- package/lib/prefetch/StartupAssetHintRuntimeModule.js +16 -10
- package/lib/rules/RuleSetCompiler.js +211 -4
- package/lib/runtime/AsyncModuleRuntimeModule.js +103 -67
- package/lib/runtime/AutoPublicPathRuntimeModule.js +9 -0
- package/lib/runtime/BaseUriRuntimeModule.js +9 -0
- package/lib/runtime/ChunkNameRuntimeModule.js +9 -0
- package/lib/runtime/EnsureChunkRuntimeModule.js +35 -16
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +12 -4
- package/lib/runtime/GetFullHashRuntimeModule.js +9 -0
- package/lib/runtime/GetMainFilenameRuntimeModule.js +9 -0
- package/lib/runtime/GetWorkletBootstrapRuntimeModule.js +9 -0
- package/lib/runtime/GlobalRuntimeModule.js +11 -4
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +9 -0
- package/lib/runtime/HelperRuntimeModule.js +10 -0
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +313 -222
- package/lib/runtime/NonceRuntimeModule.js +9 -0
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +67 -20
- package/lib/runtime/PublicPathRuntimeModule.js +9 -0
- package/lib/runtime/RuntimeIdRuntimeModule.js +9 -0
- package/lib/runtime/SpecNamespaceObjectRuntimeModule.js +90 -0
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +9 -0
- package/lib/runtime/StartupEntrypointRuntimeModule.js +9 -0
- package/lib/runtime/SystemContextRuntimeModule.js +9 -0
- package/lib/runtime/ToBinaryRuntimeModule.js +9 -0
- package/lib/schemes/DataUriPlugin.js +3 -6
- package/lib/schemes/HttpUriPlugin.js +22 -5
- package/lib/schemes/VirtualUrlPlugin.js +1 -1
- package/lib/serialization/BinaryMiddleware.js +9 -9
- package/lib/serialization/FileMiddleware.js +31 -18
- package/lib/serialization/ObjectMiddleware.js +168 -139
- package/lib/sharing/ConsumeSharedPlugin.js +12 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +11 -0
- package/lib/sharing/ShareRuntimeModule.js +9 -0
- package/lib/sharing/declaredShared.js +47 -0
- package/lib/stats/DefaultStatsFactoryPlugin.js +6 -5
- package/lib/stats/DefaultStatsPrinterPlugin.js +3 -0
- package/lib/typescript/TypeScriptPlugin.js +10 -13
- package/lib/url/URLParserPlugin.js +6 -8
- package/lib/util/ArrayQueue.js +3 -3
- package/lib/util/LocConverter.js +4 -7
- package/lib/util/SourceProcessor.js +115 -99
- package/lib/util/URLAbsoluteSpecifier.js +3 -1
- package/lib/util/async.js +292 -0
- package/lib/util/buildDiagnostics.js +69 -0
- package/lib/util/chainedImports.js +3 -4
- package/lib/util/concatenate.js +4 -4
- package/lib/util/conventions.js +5 -1
- package/lib/util/createHooksRegistry.js +1 -2
- package/lib/util/createMappings.js +25 -3
- package/lib/util/dataURL.js +2 -3
- package/lib/util/deterministicGrouping.js +8 -13
- package/lib/util/findGraphRoots.js +6 -13
- package/lib/util/fs.js +27 -1
- package/lib/util/globUtils.js +1 -1
- package/lib/util/handlerKeys.js +40 -0
- package/lib/util/hash/wasm-hash.js +3 -4
- package/lib/util/identifier.js +20 -0
- package/lib/util/internalSerializables.js +7 -1
- package/lib/util/registerExternalSerializer.js +6 -45
- package/lib/util/removeBOM.js +82 -1
- package/lib/util/semver.js +5 -3
- package/lib/wasm-async/AsyncWasmCompileRuntimeModule.js +14 -3
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +14 -3
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +6 -1
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +7 -12
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +12 -4
- package/lib/wasm-sync/WebAssemblyGenerator.js +6 -1
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +5 -1
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -4
- package/lib/web/FetchCompileAsyncWasmPlugin.js +10 -6
- package/lib/web/FetchCompileWasmPlugin.js +4 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +36 -0
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +19 -0
- package/package.json +55 -46
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +388 -76
- package/schemas/plugins/LoaderOptionsPlugin.check.js +1 -1
- package/schemas/plugins/ManifestPlugin.check.js +1 -1
- package/schemas/plugins/SourceMapDevToolPlugin.check.js +1 -1
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/debug/ProfilingPlugin.check.js +1 -1
- package/schemas/plugins/dll/DllReferencePlugin.check.js +1 -1
- package/schemas/plugins/ids/HashedModuleIdsPlugin.check.js +1 -1
- package/schemas/plugins/schemes/HttpUriPlugin.check.js +1 -1
- package/types.d.ts +1795 -608
- package/lib/dependencies/ExportBindingInitFragment.js +0 -191
- package/lib/errors/EntrypointOverlapWarning.js +0 -45
- package/lib/performance/EntrypointOverlapPlugin.js +0 -122
|
@@ -7,8 +7,12 @@
|
|
|
7
7
|
|
|
8
8
|
const { readFile } = require("fs");
|
|
9
9
|
const { parseResource } = require("../util/identifier");
|
|
10
|
+
const { adjustSourceMapForRemovedBOM } = require("../util/removeBOM");
|
|
10
11
|
const loadLoader = require("./loadLoader");
|
|
11
12
|
|
|
13
|
+
/** @import { RawSourceMap } from "webpack-sources" */
|
|
14
|
+
/** @import { Environment } from "../../declarations/WebpackOptions" */
|
|
15
|
+
|
|
12
16
|
// Set on a loader context to have each loader's own run measured. Absent
|
|
13
17
|
// unless something asked for the measurement, and read once per loader.
|
|
14
18
|
const LOADER_TIMING = Symbol("loader timing");
|
|
@@ -43,14 +47,139 @@ const LOADER_TIMING = Symbol("loader timing");
|
|
|
43
47
|
|
|
44
48
|
/** @typedef {(...args: EXPECTED_ANY[]) => void} LoaderCallback */
|
|
45
49
|
|
|
46
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* @typedef {object} AdditionalDataKnown
|
|
52
|
+
* @property {EXPECTED_OBJECT} webpackAST the AST webpack should parse instead of the source
|
|
53
|
+
*/
|
|
54
|
+
|
|
55
|
+
/** @typedef {AdditionalDataKnown & Record<string, EXPECTED_ANY>} AdditionalData */
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* @callback WebpackLoaderContextCallback
|
|
59
|
+
* @param {undefined | null | Error} err error object
|
|
60
|
+
* @param {(string | Buffer)=} content the loader result
|
|
61
|
+
* @param {(null | string | RawSourceMap)=} sourceMap a source map for the result
|
|
62
|
+
* @param {AdditionalData=} additionalData data passed to the next loader
|
|
63
|
+
* @returns {void}
|
|
64
|
+
*/
|
|
65
|
+
|
|
66
|
+
/**
|
|
67
|
+
* @typedef {object} LoaderEntry
|
|
68
|
+
* @property {string} request
|
|
69
|
+
* @property {string} path
|
|
70
|
+
* @property {string} query
|
|
71
|
+
* @property {string} fragment
|
|
72
|
+
* @property {EXPECTED_OBJECT | string | undefined} options
|
|
73
|
+
* @property {string} ident
|
|
74
|
+
* @property {EXPECTED_FUNCTION | undefined} normal
|
|
75
|
+
* @property {EXPECTED_FUNCTION | undefined} pitch
|
|
76
|
+
* @property {boolean | undefined} raw
|
|
77
|
+
* @property {EXPECTED_OBJECT | undefined} data
|
|
78
|
+
* @property {boolean} pitchExecuted
|
|
79
|
+
* @property {boolean} normalExecuted
|
|
80
|
+
* @property {("commonjs" | "module")=} type
|
|
81
|
+
*/
|
|
82
|
+
|
|
83
|
+
/**
|
|
84
|
+
* The members the runner never lets a loader assign. They carry no
|
|
85
|
+
* documentation, so a type literal loses nothing and keeps `readonly`
|
|
86
|
+
* @template OptionsType
|
|
87
|
+
* @typedef {{ readonly currentRequest: string, readonly data: EXPECTED_ANY, readonly previousRequest: string, readonly query: string | OptionsType, readonly remainingRequest: string, readonly request: string }} LoaderRunnerReadonlyContext
|
|
88
|
+
*/
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* @template OptionsType
|
|
92
|
+
* @typedef {object} LoaderRunnerMutableContext
|
|
93
|
+
* @property {(context: string) => void} addContextDependency Add a directory as dependency of the loader result.
|
|
94
|
+
* @property {(file: string) => void} addDependency Adds a file as dependency of the loader result in order to make them watchable.
|
|
95
|
+
* For example, html-loader uses this technique as it finds src and src-set attributes.
|
|
96
|
+
* Then, it sets the url's for those attributes as dependencies of the html file that is parsed.
|
|
97
|
+
* @property {(context: string) => void} addMissingDependency
|
|
98
|
+
* @property {() => WebpackLoaderContextCallback} async Make this loader async.
|
|
99
|
+
* @property {(flag?: boolean) => void} cacheable Make this loader result cacheable. By default it's cacheable.
|
|
100
|
+
* A cacheable loader must have a deterministic result, when inputs and dependencies haven't changed.
|
|
101
|
+
* This means the loader shouldn't have other dependencies than specified with this.addDependency.
|
|
102
|
+
* Most loaders are deterministic and cacheable.
|
|
103
|
+
* @property {WebpackLoaderContextCallback} callback
|
|
104
|
+
* @property {() => void} clearDependencies Remove all dependencies of the loader result. Even initial dependencies and these of other loaders.
|
|
105
|
+
* @property {string} context The directory of the module. Can be used as context for resolving other stuff.
|
|
106
|
+
* eg '/workspaces/ts-loader/examples/vanilla/src'
|
|
107
|
+
* @property {(file: string) => void} dependency alias of addDependency
|
|
108
|
+
* Adds a file as dependency of the loader result in order to make them watchable.
|
|
109
|
+
* For example, html-loader uses this technique as it finds src and src-set attributes.
|
|
110
|
+
* Then, it sets the url's for those attributes as dependencies of the html file that is parsed.
|
|
111
|
+
* @property {() => string[]} getContextDependencies
|
|
112
|
+
* @property {() => string[]} getDependencies
|
|
113
|
+
* @property {() => string[]} getMissingDependencies
|
|
114
|
+
* @property {number} loaderIndex The index in the loaders array of the current loader.
|
|
115
|
+
* In the example: in loader1: 0, in loader2: 1
|
|
116
|
+
* @property {LoaderEntry[]} loaders An array of all the loaders. It is writeable in the pitch phase.
|
|
117
|
+
* loaders = [{request: string, path: string, query: string, module: function}]
|
|
118
|
+
* @property {string} resourcePath The resource path.
|
|
119
|
+
* In the example: "/abc/resource.js"
|
|
120
|
+
* @property {string} resourceQuery The resource query string.
|
|
121
|
+
* Example: "?query"
|
|
122
|
+
* @property {string} resourceFragment The resource fragment.
|
|
123
|
+
* Example: "#frag"
|
|
124
|
+
* @property {string} resource The resource inclusive query and fragment.
|
|
125
|
+
* Example: "/abc/resource.js?query#frag"
|
|
126
|
+
* @property {string} target Target of compilation.
|
|
127
|
+
* Example: "web"
|
|
128
|
+
* @property {Environment} environment Tell what kind of ES-features may be used in the generated runtime-code.
|
|
129
|
+
* Example: { arrowFunction: true }
|
|
130
|
+
*/
|
|
131
|
+
|
|
132
|
+
/**
|
|
133
|
+
* The properties are added by https://github.com/webpack/loader-runner
|
|
134
|
+
* @template OptionsType
|
|
135
|
+
* @typedef {LoaderRunnerMutableContext<OptionsType> & LoaderRunnerReadonlyContext<OptionsType>} LoaderRunnerLoaderContext
|
|
136
|
+
*/
|
|
137
|
+
|
|
138
|
+
/**
|
|
139
|
+
* @template [OptionsType={}]
|
|
140
|
+
* @template [ContextAdditions={}]
|
|
141
|
+
* @typedef {(this: import("../NormalModule").LoaderContext<OptionsType> & ContextAdditions, remainingRequest: string, previousRequest: string, data: EXPECTED_OBJECT) => string | Buffer | Promise<string | Buffer> | void} PitchLoaderDefinitionFunction
|
|
142
|
+
*/
|
|
143
|
+
|
|
144
|
+
/**
|
|
145
|
+
* @template [OptionsType={}]
|
|
146
|
+
* @template [ContextAdditions={}]
|
|
147
|
+
* @typedef {(this: import("../NormalModule").LoaderContext<OptionsType> & ContextAdditions, content: string, sourceMap?: string | RawSourceMap, additionalData?: AdditionalData) => string | Buffer | Promise<string | Buffer> | void} LoaderDefinitionFunction
|
|
148
|
+
*/
|
|
149
|
+
|
|
150
|
+
/**
|
|
151
|
+
* @template [OptionsType={}]
|
|
152
|
+
* @template [ContextAdditions={}]
|
|
153
|
+
* @typedef {(this: import("../NormalModule").LoaderContext<OptionsType> & ContextAdditions, content: Buffer, sourceMap?: string | RawSourceMap, additionalData?: AdditionalData) => string | Buffer | Promise<string | Buffer> | void} RawLoaderDefinitionFunction
|
|
154
|
+
*/
|
|
155
|
+
|
|
156
|
+
/**
|
|
157
|
+
* @template [OptionsType={}]
|
|
158
|
+
* @template [ContextAdditions={}]
|
|
159
|
+
* @typedef {LoaderDefinitionFunction<OptionsType, ContextAdditions> & { raw?: false, pitch?: PitchLoaderDefinitionFunction<OptionsType, ContextAdditions> }} LoaderDefinition
|
|
160
|
+
*/
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* @template [OptionsType={}]
|
|
164
|
+
* @template [ContextAdditions={}]
|
|
165
|
+
* @typedef {RawLoaderDefinitionFunction<OptionsType, ContextAdditions> & { raw: true, pitch?: PitchLoaderDefinitionFunction<OptionsType, ContextAdditions> }} RawLoaderDefinition
|
|
166
|
+
*/
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* @template [OptionsType={}]
|
|
170
|
+
* @template [ContextAdditions={}]
|
|
171
|
+
* @typedef {object} LoaderModule
|
|
172
|
+
* @property {(RawLoaderDefinitionFunction<OptionsType, ContextAdditions> | LoaderDefinitionFunction<OptionsType, ContextAdditions>)=} default
|
|
173
|
+
* @property {false=} raw
|
|
174
|
+
* @property {PitchLoaderDefinitionFunction<OptionsType, ContextAdditions>=} pitch
|
|
175
|
+
*/
|
|
47
176
|
|
|
48
177
|
/**
|
|
49
178
|
* The loader context as the runner sees and mutates it: the canonical
|
|
50
179
|
* `LoaderRunnerLoaderContext` shape (not re-declared here), with only the fields
|
|
51
180
|
* the runner assigns internally before a loader runs widened to their mutable
|
|
52
181
|
* form (nullable `context`/`callback`/`async`, `LoaderObject` loaders).
|
|
53
|
-
* @typedef {Omit<LoaderRunnerLoaderContext
|
|
182
|
+
* @typedef {Omit<LoaderRunnerLoaderContext<EXPECTED_ANY>, "context" | "callback" | "async" | "loaders"> & { context: string | null, callback: LoaderCallback | null, async: (() => LoaderCallback | undefined) | null, loaders: LoaderObject[] }} LoaderContext
|
|
54
183
|
*/
|
|
55
184
|
|
|
56
185
|
const HASH_ESCAPE_REGEXP = /#/g;
|
|
@@ -59,6 +188,8 @@ const HASH_ESCAPE_REGEXP = /#/g;
|
|
|
59
188
|
const UTF8_BOM_0 = 0xef;
|
|
60
189
|
const UTF8_BOM_1 = 0xbb;
|
|
61
190
|
const UTF8_BOM_2 = 0xbf;
|
|
191
|
+
// U+FEFF, the BOM once decoded
|
|
192
|
+
const BOM_CHAR_CODE = 0xfeff;
|
|
62
193
|
|
|
63
194
|
/**
|
|
64
195
|
* @param {Buffer} buf buffer
|
|
@@ -76,6 +207,14 @@ function utf8BufferToString(buf) {
|
|
|
76
207
|
return buf.toString("utf8");
|
|
77
208
|
}
|
|
78
209
|
|
|
210
|
+
/**
|
|
211
|
+
* @param {string} str string
|
|
212
|
+
* @returns {string} string, with a leading BOM removed
|
|
213
|
+
*/
|
|
214
|
+
function stringWithoutBOM(str) {
|
|
215
|
+
return str.charCodeAt(0) === BOM_CHAR_CODE ? str.slice(1) : str;
|
|
216
|
+
}
|
|
217
|
+
|
|
79
218
|
/**
|
|
80
219
|
* Escape `#` with a preceding `\0` byte; short-circuits when there is no `#`.
|
|
81
220
|
* @param {string} str input string
|
|
@@ -292,9 +431,19 @@ function runSyncOrAsync(fn, context, args, callback) {
|
|
|
292
431
|
/**
|
|
293
432
|
* @param {EXPECTED_ANY[]} args arguments
|
|
294
433
|
* @param {boolean | null=} raw whether the loader wants a Buffer
|
|
434
|
+
* @param {boolean=} fromLoader whether args came from a loader rather than the resource
|
|
295
435
|
* @returns {void}
|
|
296
436
|
*/
|
|
297
|
-
function convertArgs(args, raw) {
|
|
437
|
+
function convertArgs(args, raw, fromLoader) {
|
|
438
|
+
// A BOM only means anything at the start of a file, so one a loader produced
|
|
439
|
+
// is content the next loader must not see. The resource keeps its own.
|
|
440
|
+
if (fromLoader && typeof args[0] === "string") {
|
|
441
|
+
const withoutBOM = stringWithoutBOM(args[0]);
|
|
442
|
+
if (withoutBOM !== args[0]) {
|
|
443
|
+
args[0] = withoutBOM;
|
|
444
|
+
if (args[1]) args[1] = adjustSourceMapForRemovedBOM(args[1]);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
298
447
|
if (!raw && Buffer.isBuffer(args[0])) {
|
|
299
448
|
args[0] = utf8BufferToString(args[0]);
|
|
300
449
|
} else if (raw && typeof args[0] === "string") {
|
|
@@ -307,9 +456,16 @@ function convertArgs(args, raw) {
|
|
|
307
456
|
* @param {LoaderContext} loaderContext the loader context
|
|
308
457
|
* @param {EXPECTED_ANY[]} args arguments
|
|
309
458
|
* @param {(err: Error | null, args?: EXPECTED_ANY[]) => void} callback callback
|
|
459
|
+
* @param {boolean=} fromLoader whether args came from a loader rather than the resource
|
|
310
460
|
* @returns {void}
|
|
311
461
|
*/
|
|
312
|
-
function iterateNormalLoaders(
|
|
462
|
+
function iterateNormalLoaders(
|
|
463
|
+
options,
|
|
464
|
+
loaderContext,
|
|
465
|
+
args,
|
|
466
|
+
callback,
|
|
467
|
+
fromLoader
|
|
468
|
+
) {
|
|
313
469
|
while (loaderContext.loaderIndex >= 0) {
|
|
314
470
|
const currentLoaderObject =
|
|
315
471
|
loaderContext.loaders[loaderContext.loaderIndex];
|
|
@@ -327,11 +483,11 @@ function iterateNormalLoaders(options, loaderContext, args, callback) {
|
|
|
327
483
|
continue;
|
|
328
484
|
}
|
|
329
485
|
|
|
330
|
-
convertArgs(args, currentLoaderObject.raw);
|
|
486
|
+
convertArgs(args, currentLoaderObject.raw, fromLoader);
|
|
331
487
|
|
|
332
488
|
return runSyncOrAsync(fn, loaderContext, args, (err, ...nextArgs) => {
|
|
333
489
|
if (err) return callback(err);
|
|
334
|
-
iterateNormalLoaders(options, loaderContext, nextArgs, callback);
|
|
490
|
+
iterateNormalLoaders(options, loaderContext, nextArgs, callback, true);
|
|
335
491
|
});
|
|
336
492
|
}
|
|
337
493
|
|
|
@@ -410,7 +566,7 @@ function iteratePitchingLoaders(options, loaderContext, callback) {
|
|
|
410
566
|
}
|
|
411
567
|
if (hasArg) {
|
|
412
568
|
loaderContext.loaderIndex--;
|
|
413
|
-
iterateNormalLoaders(options, loaderContext, args, callback);
|
|
569
|
+
iterateNormalLoaders(options, loaderContext, args, callback, true);
|
|
414
570
|
} else {
|
|
415
571
|
iteratePitchingLoaders(options, loaderContext, callback);
|
|
416
572
|
}
|
|
@@ -547,7 +703,7 @@ function createLoaderContext(base) {
|
|
|
547
703
|
* Marks the request as not cacheable with the given reasons instead of
|
|
548
704
|
* attributing the currently running loader (used by the host when the cause
|
|
549
705
|
* lives outside the loader, e.g. in a child compilation of `importModule`).
|
|
550
|
-
* @param {LoaderRunnerLoaderContext} loaderContext loader context
|
|
706
|
+
* @param {LoaderRunnerLoaderContext<EXPECTED_ANY>} loaderContext loader context
|
|
551
707
|
* @param {string[]} reasons reasons why the request is not cacheable
|
|
552
708
|
* @returns {void}
|
|
553
709
|
*/
|
|
@@ -654,12 +810,12 @@ const ACCESSORS = {
|
|
|
654
810
|
* @returns {void}
|
|
655
811
|
*/
|
|
656
812
|
module.exports.runLoaders = function runLoaders(options, callback) {
|
|
657
|
-
// reuse a context already prepared
|
|
658
|
-
// NormalModule
|
|
659
|
-
// in place. State is intentionally preserved across the handoff, so
|
|
660
|
-
//
|
|
661
|
-
// non-cacheable before the run; a caller re-running on the same context
|
|
662
|
-
// clearDependencies() first to avoid accumulating stale
|
|
813
|
+
// WHY: reuse a context `createLoaderContext` already prepared, from
|
|
814
|
+
// NormalModule say, else augment the caller-provided context, or a fresh
|
|
815
|
+
// object, in place. State is intentionally preserved across the handoff, so a
|
|
816
|
+
// host hook such as `beforeLoaders` can pre-add dependencies or mark the
|
|
817
|
+
// request non-cacheable before the run; a caller re-running on the same context
|
|
818
|
+
// should `clearDependencies()` first, to avoid accumulating stale ones.
|
|
663
819
|
const provided = /** @type {EXPECTED_ANY} */ (options.context);
|
|
664
820
|
const loaderContext =
|
|
665
821
|
provided && provided[LOADER_STATE]
|
|
@@ -147,15 +147,9 @@ class NodeWatchFileSystem {
|
|
|
147
147
|
const directoriesSet =
|
|
148
148
|
directories instanceof Set ? directories : new Set(directories);
|
|
149
149
|
|
|
150
|
-
// Watchpack reports a watched directory
|
|
151
|
-
// `
|
|
152
|
-
//
|
|
153
|
-
// prefix, so it would wipe the stat cache of every file inside the
|
|
154
|
-
// directory even though only file-level events actually invalidate
|
|
155
|
-
// file stats. For directories we explicitly watch, purge only the
|
|
156
|
-
// directory's own entry (`{ exact: true }`, enhanced-resolve >=
|
|
157
|
-
// 5.22.0); file-level events in the same aggregated batch still
|
|
158
|
-
// handle file stats and the parent readdir invalidation.
|
|
150
|
+
// Watchpack reports a watched directory whenever its contents change, and
|
|
151
|
+
// `fs.purge(dir)` matches by prefix, wiping every file's stat cache with it.
|
|
152
|
+
// Only its own entry is purged; the batch's file events carry the rest.
|
|
159
153
|
/**
|
|
160
154
|
* @param {Changes | null | undefined} changes changes set
|
|
161
155
|
* @param {Removals | null | undefined} removals removals set
|
|
@@ -32,6 +32,28 @@ class ReadFileChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
32
32
|
this.runtimeRequirements = runtimeRequirements;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
/**
|
|
36
|
+
* The `[handlerMap, key]` pairs this module installs onto a chunk handler map
|
|
37
|
+
* such as `__webpack_require__.f`, or `null` where it cannot name them.
|
|
38
|
+
* @returns {[string, string][] | null} installed chunk handlers (do not mutate)
|
|
39
|
+
*/
|
|
40
|
+
getInstalledChunkHandlers() {
|
|
41
|
+
const runtimeRequirements = this.runtimeRequirements;
|
|
42
|
+
/** @type {[string, string][]} */
|
|
43
|
+
const handlers = [];
|
|
44
|
+
if (runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers)) {
|
|
45
|
+
handlers.push([RuntimeGlobals.ensureChunkHandlers, "readFileVm"]);
|
|
46
|
+
}
|
|
47
|
+
// The hot update flow installs this one onto the same map while it runs.
|
|
48
|
+
if (runtimeRequirements.has(RuntimeGlobals.hmrDownloadUpdateHandlers)) {
|
|
49
|
+
handlers.push([RuntimeGlobals.ensureChunkHandlers, "readFileVmHmr"]);
|
|
50
|
+
}
|
|
51
|
+
if (runtimeRequirements.has(RuntimeGlobals.onChunksLoaded)) {
|
|
52
|
+
handlers.push([RuntimeGlobals.onChunksLoaded, "readFileVm"]);
|
|
53
|
+
}
|
|
54
|
+
return handlers;
|
|
55
|
+
}
|
|
56
|
+
|
|
35
57
|
/**
|
|
36
58
|
* Returns generated code.
|
|
37
59
|
* @private
|
|
@@ -62,27 +62,20 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
|
62
62
|
// settled while the plugin is being applied.
|
|
63
63
|
/**
|
|
64
64
|
* @param {string} path rendered path to the wasm file
|
|
65
|
-
* @param {
|
|
65
|
+
* @param {boolean} analyzable whether the call site bakes a complete URL
|
|
66
66
|
* @returns {string} the argument to hand the reader
|
|
67
67
|
*/
|
|
68
|
-
const wasmUrlArg = (path,
|
|
69
|
-
compilation.runtimeTemplate.
|
|
70
|
-
"wasm",
|
|
71
|
-
undefined,
|
|
72
|
-
undefined,
|
|
73
|
-
runtime
|
|
74
|
-
)
|
|
75
|
-
? path
|
|
76
|
-
: compilation.runtimeTemplate.importMetaUrl(path);
|
|
68
|
+
const wasmUrlArg = (path, analyzable) =>
|
|
69
|
+
analyzable ? path : compilation.runtimeTemplate.importMetaUrl(path);
|
|
77
70
|
/**
|
|
78
|
-
* @type {(path: string, runtime: RuntimeSpec) => string} callback to generate code to load the wasm file
|
|
71
|
+
* @type {(path: string, runtime: RuntimeSpec, analyzable: boolean) => string} callback to generate code to load the wasm file
|
|
79
72
|
*/
|
|
80
73
|
const generateLoadBinaryCode = this._import
|
|
81
|
-
? (path, runtime) =>
|
|
74
|
+
? (path, runtime, analyzable) =>
|
|
82
75
|
Template.asString([
|
|
83
76
|
"Promise.all([import('fs'), import('url')]).then(([{ readFile }, { URL }]) => new Promise((resolve, reject) => {",
|
|
84
77
|
Template.indent([
|
|
85
|
-
`readFile(${wasmUrlArg(path,
|
|
78
|
+
`readFile(${wasmUrlArg(path, analyzable)}, (err, buffer) => {`,
|
|
86
79
|
Template.indent([
|
|
87
80
|
"if (err) return reject(err);",
|
|
88
81
|
"",
|
|
@@ -154,7 +147,7 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
|
154
147
|
if (
|
|
155
148
|
!compilation.runtimeTemplate.supportsAnalyzable(
|
|
156
149
|
"wasm",
|
|
157
|
-
|
|
150
|
+
chunkGraph,
|
|
158
151
|
undefined,
|
|
159
152
|
chunk.runtime
|
|
160
153
|
) &&
|
|
@@ -196,7 +189,7 @@ class ReadFileCompileAsyncWasmPlugin {
|
|
|
196
189
|
if (
|
|
197
190
|
!compilation.runtimeTemplate.supportsAnalyzable(
|
|
198
191
|
"wasm",
|
|
199
|
-
|
|
192
|
+
chunkGraph,
|
|
200
193
|
undefined,
|
|
201
194
|
chunk.runtime
|
|
202
195
|
) &&
|
|
@@ -32,6 +32,28 @@ class RequireChunkLoadingRuntimeModule extends RuntimeModule {
|
|
|
32
32
|
this.runtimeRequirements = runtimeRequirements;
|
|
33
33
|
}
|
|
34
34
|
|
|
35
|
+
/**
|
|
36
|
+
* The `[handlerMap, key]` pairs this module installs onto a chunk handler map
|
|
37
|
+
* such as `__webpack_require__.f`, or `null` where it cannot name them.
|
|
38
|
+
* @returns {[string, string][] | null} installed chunk handlers (do not mutate)
|
|
39
|
+
*/
|
|
40
|
+
getInstalledChunkHandlers() {
|
|
41
|
+
const runtimeRequirements = this.runtimeRequirements;
|
|
42
|
+
/** @type {[string, string][]} */
|
|
43
|
+
const handlers = [];
|
|
44
|
+
if (runtimeRequirements.has(RuntimeGlobals.ensureChunkHandlers)) {
|
|
45
|
+
handlers.push([RuntimeGlobals.ensureChunkHandlers, "require"]);
|
|
46
|
+
}
|
|
47
|
+
// The hot update flow installs this one onto the same map while it runs.
|
|
48
|
+
if (runtimeRequirements.has(RuntimeGlobals.hmrDownloadUpdateHandlers)) {
|
|
49
|
+
handlers.push([RuntimeGlobals.ensureChunkHandlers, "requireHmr"]);
|
|
50
|
+
}
|
|
51
|
+
if (runtimeRequirements.has(RuntimeGlobals.onChunksLoaded)) {
|
|
52
|
+
handlers.push([RuntimeGlobals.onChunksLoaded, "require"]);
|
|
53
|
+
}
|
|
54
|
+
return handlers;
|
|
55
|
+
}
|
|
56
|
+
|
|
35
57
|
/**
|
|
36
58
|
* Returns generated code.
|
|
37
59
|
* @private
|
|
@@ -53,11 +53,9 @@ class AggressiveMergingPlugin {
|
|
|
53
53
|
},
|
|
54
54
|
(chunks) => {
|
|
55
55
|
const chunkGraph = compilation.chunkGraph;
|
|
56
|
-
//
|
|
57
|
-
//
|
|
58
|
-
//
|
|
59
|
-
// `>` keeps the first-encountered best, matching the previous stable
|
|
60
|
-
// descending sort's `[0]`.
|
|
56
|
+
// One pair is merged per pass and the hook re-runs, so the maximum is
|
|
57
|
+
// tracked directly rather than sorting every pair each time. A strict
|
|
58
|
+
// `>` keeps the first best found, as a stable descending sort would.
|
|
61
59
|
/** @type {Chunk | undefined} */
|
|
62
60
|
let bestA;
|
|
63
61
|
/** @type {Chunk | undefined} */
|