webpack 5.107.1 → 5.108.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/hot/dev-server.js +2 -0
- package/lib/APIPlugin.js +8 -4
- package/lib/CacheFacade.js +7 -0
- package/lib/Chunk.js +4 -0
- package/lib/ChunkGraph.js +30 -9
- package/lib/CircularModulesPlugin.js +190 -0
- package/lib/CleanPlugin.js +2 -1
- package/lib/Compilation.js +396 -65
- package/lib/Compiler.js +52 -14
- package/lib/ConcatenationScope.js +10 -3
- package/lib/ContextExclusionPlugin.js +1 -0
- package/lib/ContextModule.js +92 -47
- package/lib/ContextModuleFactory.js +45 -38
- package/lib/ContextReplacementPlugin.js +4 -0
- package/lib/DefinePlugin.js +89 -15
- package/lib/Dependency.js +111 -7
- package/lib/EntryOptionPlugin.js +39 -2
- package/lib/EntryPlugin.js +2 -0
- package/lib/ExportsInfo.js +314 -73
- package/lib/ExternalModule.js +82 -34
- package/lib/ExternalModuleFactoryPlugin.js +1 -0
- package/lib/ExternalsPlugin.js +1 -0
- package/lib/FileSystemInfo.js +173 -23
- package/lib/FlagAllModulesAsUsedPlugin.js +1 -5
- package/lib/FlagDependencyExportsPlugin.js +23 -0
- package/lib/FlagDependencyUsagePlugin.js +87 -5
- package/lib/FlagEntryExportAsUsedPlugin.js +2 -0
- package/lib/Generator.js +8 -0
- package/lib/HotModuleReplacementPlugin.js +65 -28
- package/lib/IgnorePlugin.js +1 -0
- package/lib/InitFragment.js +5 -0
- package/lib/JavascriptMetaInfoPlugin.js +7 -5
- package/lib/LazyBarrel.js +361 -0
- package/lib/LoaderTargetPlugin.js +1 -0
- package/lib/Module.js +21 -42
- package/lib/ModuleGraph.js +3 -2
- package/lib/ModuleProfile.js +27 -1
- package/lib/ModuleTemplate.js +2 -0
- package/lib/MultiCompiler.js +16 -0
- package/lib/MultiStats.js +1 -0
- package/lib/MultiWatching.js +2 -0
- package/lib/NodeStuffPlugin.js +22 -17
- package/lib/NormalModule.js +557 -77
- package/lib/NormalModuleReplacementPlugin.js +2 -0
- package/lib/PrefetchPlugin.js +2 -0
- package/lib/ProgressPlugin.js +9 -1
- package/lib/ProvidePlugin.js +1 -0
- package/lib/RawModule.js +20 -16
- package/lib/RecordIdsPlugin.js +1 -0
- package/lib/RuntimeGlobals.js +5 -0
- package/lib/RuntimePlugin.js +58 -26
- package/lib/RuntimeTemplate.js +278 -21
- package/lib/SelfModuleFactory.js +1 -0
- package/lib/SourceMapDevToolPlugin.js +105 -30
- package/lib/Stats.js +1 -0
- package/lib/Template.js +8 -2
- package/lib/TemplatedPathPlugin.js +473 -131
- package/lib/WarnCaseSensitiveModulesPlugin.js +1 -0
- package/lib/WarnDeprecatedOptionPlugin.js +4 -0
- package/lib/WarnNoModeSetPlugin.js +1 -0
- package/lib/WatchIgnorePlugin.js +1 -0
- package/lib/Watching.js +9 -0
- package/lib/WebpackOptionsApply.js +50 -5
- package/lib/asset/AssetBytesGenerator.js +11 -3
- package/lib/asset/AssetGenerator.js +47 -22
- package/lib/asset/AssetModule.js +47 -0
- package/lib/asset/AssetModulesPlugin.js +14 -14
- package/lib/asset/AssetParser.js +2 -2
- package/lib/asset/AssetSourceGenerator.js +8 -0
- package/lib/asset/RawDataUrlModule.js +12 -13
- package/lib/buildChunkGraph.js +88 -9
- package/lib/bun/BunTargetPlugin.js +48 -0
- package/lib/cache/AddBuildDependenciesPlugin.js +1 -0
- package/lib/cache/AddManagedPathsPlugin.js +3 -0
- package/lib/cache/IdleFileCachePlugin.js +4 -0
- package/lib/cache/MemoryWithGcCachePlugin.js +1 -0
- package/lib/cache/PackFileCacheStrategy.js +1 -0
- package/lib/cache/ResolverCachePlugin.js +2 -0
- package/lib/cache/getLazyHashedEtag.js +9 -2
- package/lib/cache/mergeEtags.js +2 -0
- package/lib/cli.js +109 -19
- package/lib/config/browserslistTargetHandler.js +99 -0
- package/lib/config/defaults.js +147 -7
- package/lib/config/defineConfig.js +31 -0
- package/lib/config/normalization.js +5 -0
- package/lib/config/target.js +181 -2
- package/lib/container/ContainerEntryModule.js +15 -14
- package/lib/container/ContainerExposedDependency.js +2 -2
- package/lib/container/ContainerReferencePlugin.js +1 -1
- package/lib/container/FallbackDependency.js +5 -7
- package/lib/container/FallbackModule.js +10 -9
- package/lib/container/RemoteModule.js +20 -10
- package/lib/container/RemoteRuntimeModule.js +14 -12
- package/lib/css/CssGenerator.js +353 -327
- package/lib/css/CssInjectStyleRuntimeModule.js +36 -8
- package/lib/css/CssLoadingRuntimeModule.js +118 -47
- package/lib/css/CssModule.js +52 -23
- package/lib/css/CssModulesPlugin.js +107 -124
- package/lib/css/CssParser.js +2759 -2205
- package/lib/css/syntax.js +2859 -0
- package/lib/debug/ProfilingPlugin.js +2 -0
- package/lib/deno/DenoTargetPlugin.js +47 -0
- package/lib/dependencies/AMDDefineDependency.js +22 -17
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +1 -0
- package/lib/dependencies/AMDRequireArrayDependency.js +7 -11
- package/lib/dependencies/AMDRequireContextDependency.js +7 -11
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +1 -0
- package/lib/dependencies/AMDRequireDependency.js +24 -20
- package/lib/dependencies/CachedConstDependency.js +3 -0
- package/lib/dependencies/CommonJsDependencyHelpers.js +1 -0
- package/lib/dependencies/CommonJsExportRequireDependency.js +79 -31
- package/lib/dependencies/CommonJsExportsDependency.js +21 -16
- package/lib/dependencies/CommonJsExportsParserPlugin.js +230 -7
- package/lib/dependencies/CommonJsFullRequireDependency.js +27 -19
- package/lib/dependencies/CommonJsImportsParserPlugin.js +51 -16
- package/lib/dependencies/CommonJsPlugin.js +1 -1
- package/lib/dependencies/CommonJsRequireContextDependency.js +10 -13
- package/lib/dependencies/CommonJsRequireDependency.js +42 -11
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +22 -14
- package/lib/dependencies/ConstDependency.js +16 -11
- package/lib/dependencies/ContextDependency.js +4 -0
- package/lib/dependencies/ContextDependencyTemplateAsId.js +1 -1
- package/lib/dependencies/ContextElementDependency.js +23 -14
- package/lib/dependencies/CreateRequireParserPlugin.js +1 -0
- package/lib/dependencies/CreateScriptUrlDependency.js +5 -7
- package/lib/dependencies/CriticalDependencyWarning.js +1 -0
- package/lib/dependencies/CssIcssExportDependency.js +512 -574
- package/lib/dependencies/CssIcssImportDependency.js +9 -9
- package/lib/dependencies/CssIcssSymbolDependency.js +22 -15
- package/lib/dependencies/CssImportDependency.js +25 -1
- package/lib/dependencies/CssUrlDependency.js +23 -14
- package/lib/dependencies/DllEntryDependency.js +9 -13
- package/lib/dependencies/ExportBindingInitFragment.js +164 -0
- package/lib/dependencies/ExportsInfoDependency.js +12 -12
- package/lib/dependencies/ExternalModuleDependency.js +8 -5
- package/lib/dependencies/ExternalModuleInitFragment.js +7 -5
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +13 -10
- package/lib/dependencies/HarmonyAcceptDependency.js +11 -11
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -0
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +47 -22
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +28 -2
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +46 -22
- package/lib/dependencies/HarmonyExportExpressionDependency.js +107 -30
- package/lib/dependencies/HarmonyExportHeaderDependency.js +7 -9
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +109 -31
- package/lib/dependencies/HarmonyExportInitFragment.js +22 -20
- package/lib/dependencies/HarmonyExportSpecifierDependency.js +83 -18
- package/lib/dependencies/HarmonyExports.js +4 -1
- package/lib/dependencies/HarmonyImportDependency.js +24 -0
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +110 -74
- package/lib/dependencies/HarmonyImportGuard.js +254 -0
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +18 -1
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +118 -14
- package/lib/dependencies/HarmonyLinkingError.js +1 -0
- package/lib/dependencies/HarmonyModulesPlugin.js +1 -0
- package/lib/dependencies/{HtmlScriptSrcDependency.js → HtmlEntryDependency.js} +267 -154
- package/lib/dependencies/HtmlInlineHtmlDependency.js +107 -0
- package/lib/dependencies/HtmlInlineScriptDependency.js +20 -27
- package/lib/dependencies/HtmlInlineStyleDependency.js +62 -11
- package/lib/dependencies/HtmlSourceDependency.js +18 -0
- package/lib/dependencies/ImportContextDependency.js +5 -9
- package/lib/dependencies/ImportDependency.js +44 -2
- package/lib/dependencies/ImportMetaHotAcceptDependency.js +1 -0
- package/lib/dependencies/ImportMetaHotDeclineDependency.js +1 -0
- package/lib/dependencies/ImportMetaPlugin.js +74 -30
- package/lib/dependencies/ImportParserPlugin.js +19 -0
- package/lib/dependencies/ImportWeakDependency.js +1 -0
- package/lib/dependencies/JsonExportsDependency.js +9 -9
- package/lib/dependencies/LoaderImportDependency.js +1 -0
- package/lib/dependencies/LocalModule.js +11 -12
- package/lib/dependencies/LocalModuleDependency.js +11 -13
- package/lib/dependencies/ModuleDecoratorDependency.js +9 -9
- package/lib/dependencies/ModuleDependency.js +7 -0
- package/lib/dependencies/ModuleHotAcceptDependency.js +1 -0
- package/lib/dependencies/ModuleHotDeclineDependency.js +1 -0
- package/lib/dependencies/ModuleInitFragmentDependency.js +15 -11
- package/lib/dependencies/ProvidedDependency.js +31 -27
- package/lib/dependencies/PureExpressionDependency.js +7 -9
- package/lib/dependencies/RequireEnsureDependency.js +12 -13
- package/lib/dependencies/RequireHeaderDependency.js +3 -4
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +3 -0
- package/lib/dependencies/RequireResolveContextDependency.js +7 -11
- package/lib/dependencies/RequireResolveDependency.js +1 -0
- package/lib/dependencies/RequireResolveHeaderDependency.js +3 -5
- package/lib/dependencies/RuntimeRequirementsDependency.js +6 -7
- package/lib/dependencies/StaticExportsDependency.js +10 -10
- package/lib/dependencies/SystemPlugin.js +2 -0
- package/lib/dependencies/URLContextDependency.js +5 -7
- package/lib/dependencies/URLDependency.js +14 -16
- package/lib/dependencies/UnsupportedDependency.js +8 -13
- package/lib/dependencies/WebAssemblyExportImportedDependency.js +11 -16
- package/lib/dependencies/WebAssemblyImportDependency.js +14 -16
- package/lib/dependencies/WebpackIsIncludedDependency.js +1 -0
- package/lib/dependencies/WorkerDependency.js +19 -8
- package/lib/dependencies/WorkerPlugin.js +40 -10
- package/lib/dependencies/processExportInfo.js +13 -11
- package/lib/dll/DelegatedModule.js +29 -15
- package/lib/dll/DelegatedModuleFactoryPlugin.js +1 -0
- package/lib/dll/DelegatedPlugin.js +1 -0
- package/lib/dll/DllEntryPlugin.js +3 -0
- package/lib/dll/DllModule.js +3 -2
- package/lib/dll/DllPlugin.js +16 -0
- package/lib/dll/DllReferencePlugin.js +3 -0
- package/lib/dll/LibManifestPlugin.js +1 -0
- package/lib/electron/ElectronTargetPlugin.js +22 -4
- package/lib/errors/ConcurrentCompilationError.js +1 -0
- package/lib/errors/HookWebpackError.js +11 -13
- package/lib/errors/IgnoreErrorModuleFactory.js +1 -0
- package/lib/errors/InvalidDependenciesModuleWarning.js +2 -0
- package/lib/errors/JSONParseError.js +9 -8
- package/lib/errors/ModuleBuildError.js +16 -13
- package/lib/errors/ModuleDependencyError.js +8 -1
- package/lib/errors/ModuleDependencyWarning.js +8 -1
- package/lib/errors/ModuleError.js +5 -11
- package/lib/errors/ModuleHashingError.js +4 -0
- package/lib/errors/ModuleNotFoundError.js +3 -0
- package/lib/errors/ModuleParseError.js +5 -11
- package/lib/errors/ModuleRestoreError.js +2 -0
- package/lib/errors/ModuleStoreError.js +3 -0
- package/lib/errors/ModuleWarning.js +7 -11
- package/lib/errors/NodeStuffInWebError.js +1 -0
- package/lib/errors/NonErrorEmittedError.js +2 -0
- package/lib/errors/UnhandledSchemeError.js +1 -0
- package/lib/esm/ModuleChunkLoadingPlugin.js +0 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +28 -23
- package/lib/hmr/HotModuleReplacement.runtime.js +175 -30
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +7 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +173 -26
- package/lib/hmr/LazyCompilationPlugin.js +134 -6
- package/lib/html/HtmlGenerator.js +292 -50
- package/lib/html/HtmlModule.js +40 -0
- package/lib/html/HtmlModulesPlugin.js +287 -60
- package/lib/html/HtmlParser.js +1108 -1099
- package/lib/html/{walkHtmlTokens.js → syntax.js} +4701 -212
- package/lib/ids/IdHelpers.js +4 -2
- package/lib/index.js +19 -0
- package/lib/javascript/BasicEvaluatedExpression.js +1 -0
- package/lib/javascript/EnableChunkLoadingPlugin.js +1 -0
- package/lib/javascript/JavascriptGenerator.js +6 -2
- package/lib/javascript/JavascriptModule.js +54 -0
- package/lib/javascript/JavascriptModulesPlugin.js +257 -102
- package/lib/javascript/JavascriptParser.js +286 -159
- package/lib/json/JsonModule.js +40 -0
- package/lib/json/JsonModulesPlugin.js +7 -0
- package/lib/json/JsonParser.js +4 -2
- package/lib/library/AssignLibraryPlugin.js +5 -3
- package/lib/library/ExportPropertyLibraryPlugin.js +1 -0
- package/lib/library/FalseIIFEUmdWarning.js +1 -0
- package/lib/library/ModuleLibraryPlugin.js +54 -29
- package/lib/library/SystemLibraryPlugin.js +3 -3
- package/lib/node/NodeTargetPlugin.js +1 -0
- package/lib/node/NodeWatchFileSystem.js +38 -22
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +10 -9
- package/lib/node/RequireChunkLoadingRuntimeModule.js +18 -16
- package/lib/optimize/ConcatenatedModule.js +397 -78
- package/lib/optimize/ConstExportsPlugin.js +211 -0
- package/lib/optimize/InlineExports.js +178 -0
- package/lib/optimize/InnerGraph.js +372 -275
- package/lib/optimize/InnerGraphPlugin.js +196 -99
- package/lib/optimize/ModuleConcatenationPlugin.js +56 -25
- package/lib/optimize/RealContentHashPlugin.js +14 -1
- package/lib/optimize/SideEffectsFlagPlugin.js +234 -64
- package/lib/runtime/AsyncModuleRuntimeModule.js +32 -30
- package/lib/runtime/AutoPublicPathRuntimeModule.js +11 -5
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +6 -4
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +33 -4
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +82 -3
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +18 -13
- package/lib/runtime/MakeDeferredNamespaceObjectRuntime.js +39 -26
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +4 -4
- package/lib/runtime/RelativeUrlRuntimeModule.js +3 -2
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +4 -3
- package/lib/runtime/WorkerRuntimeModule.js +33 -0
- package/lib/schemes/HttpUriPlugin.js +3 -2
- package/lib/serialization/AggregateErrorSerializer.js +7 -6
- package/lib/serialization/ArraySerializer.js +4 -8
- package/lib/serialization/BinaryMiddleware.js +538 -468
- package/lib/serialization/DateObjectSerializer.js +2 -2
- package/lib/serialization/ErrorObjectSerializer.js +7 -6
- package/lib/serialization/MapObjectSerializer.js +5 -9
- package/lib/serialization/NullPrototypeObjectSerializer.js +7 -9
- package/lib/serialization/ObjectMiddleware.js +50 -13
- package/lib/serialization/PlainObjectSerializer.js +9 -8
- package/lib/serialization/RegExpObjectSerializer.js +2 -2
- package/lib/serialization/Serializer.js +1 -0
- package/lib/serialization/SetObjectSerializer.js +4 -8
- package/lib/sharing/ConsumeSharedModule.js +6 -7
- package/lib/sharing/ConsumeSharedPlugin.js +1 -0
- package/lib/sharing/ConsumeSharedRuntimeModule.js +46 -41
- package/lib/sharing/ProvideSharedDependency.js +30 -15
- package/lib/sharing/ProvideSharedModule.js +30 -11
- package/lib/sharing/ProvideSharedPlugin.js +4 -2
- package/lib/sharing/SharePlugin.js +3 -0
- package/lib/sharing/ShareRuntimeModule.js +18 -16
- package/lib/sharing/resolveMatchedConfigs.js +2 -1
- package/lib/sharing/utils.js +1 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +4 -6
- package/lib/stats/DefaultStatsPrinterPlugin.js +14 -14
- package/lib/stats/StatsFactory.js +11 -9
- package/lib/stats/StatsPrinter.js +9 -2
- package/lib/url/URLParserPlugin.js +5 -2
- package/lib/util/AsyncQueue.js +10 -0
- package/lib/util/LazyBucketSortedSet.js +5 -0
- package/lib/util/LazySet.js +6 -4
- package/lib/util/LocConverter.js +11 -1
- package/lib/util/Semaphore.js +1 -0
- package/lib/util/SourceProcessor.js +106 -0
- package/lib/util/TupleSet.js +1 -0
- package/lib/util/WeakTupleMap.js +27 -1
- package/lib/util/chainedImports.js +3 -3
- package/lib/util/comparators.js +2 -2
- package/lib/util/concatenate.js +31 -7
- package/lib/util/createHash.js +0 -1
- package/lib/util/deterministicGrouping.js +19 -12
- package/lib/util/extractSourceMap.js +1 -1
- package/lib/util/findGraphRoots.js +2 -0
- package/lib/util/fs.js +16 -6
- package/lib/util/hash/DebugHash.js +1 -0
- package/lib/util/hash/hash-digest.js +24 -15
- package/lib/util/identifier.js +7 -0
- package/lib/util/internalSerializables.js +11 -2
- package/lib/util/magicComment.js +42 -0
- package/lib/util/makeSerializable.js +1 -0
- package/lib/util/nonNumericOnlyHash.js +30 -1
- package/lib/util/property.js +7 -1
- package/lib/util/publicPathPlaceholder.js +64 -0
- package/lib/util/registerExternalSerializer.js +4 -4
- package/lib/wasm-async/AsyncWasmModule.js +77 -0
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +1 -96
- package/lib/wasm-async/AsyncWebAssemblyParser.js +1 -1
- package/lib/wasm-async/UniversalCompileAsyncWasmPlugin.js +1 -1
- package/lib/wasm-sync/SyncWasmModule.js +39 -0
- package/lib/wasm-sync/UnsupportedWebAssemblyFeatureError.js +1 -0
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +6 -3
- package/lib/wasm-sync/WasmFinalizeExportsPlugin.js +2 -1
- package/lib/wasm-sync/WebAssemblyGenerator.js +1 -0
- package/lib/wasm-sync/WebAssemblyInInitialChunkError.js +2 -0
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +10 -0
- package/lib/wasm-sync/WebAssemblyParser.js +7 -3
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +45 -39
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +11 -10
- package/package.json +36 -28
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +212 -3
- package/schemas/plugins/HtmlGeneratorOptions.check.js +1 -1
- package/schemas/plugins/HtmlParserOptions.check.d.ts +7 -0
- package/schemas/plugins/HtmlParserOptions.check.js +6 -0
- package/schemas/plugins/HtmlParserOptions.json +3 -0
- package/schemas/plugins/css/CssAutoOrModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/schemas/plugins/css/CssParserOptions.check.js +1 -1
- package/types.d.ts +1592 -314
- package/lib/css/walkCssTokens.js +0 -2020
- package/lib/util/AppendOnlyStackedSet.js +0 -93
|
@@ -0,0 +1,47 @@
|
|
|
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 ExternalsPlugin = require("../ExternalsPlugin");
|
|
9
|
+
const NodeTargetPlugin = require("../node/NodeTargetPlugin");
|
|
10
|
+
|
|
11
|
+
/** @typedef {import("../Compiler")} Compiler */
|
|
12
|
+
|
|
13
|
+
// Deno only resolves node.js core modules through the `node:` specifier, so the
|
|
14
|
+
// prefix is baked into the external request for both `import` and `require`.
|
|
15
|
+
// cspell:word pnpapi
|
|
16
|
+
const coreModules = new Set(
|
|
17
|
+
NodeTargetPlugin.builtins.filter(
|
|
18
|
+
(builtin) => typeof builtin === "string" && builtin !== "pnpapi"
|
|
19
|
+
)
|
|
20
|
+
);
|
|
21
|
+
|
|
22
|
+
// Deno's own import protocols are resolved by the runtime, never bundled.
|
|
23
|
+
const DENO_PROTOCOLS = /^(?:npm|jsr|https?):/;
|
|
24
|
+
|
|
25
|
+
class DenoTargetPlugin {
|
|
26
|
+
/**
|
|
27
|
+
* Applies the plugin by registering its hooks on the compiler.
|
|
28
|
+
* @param {Compiler} compiler the compiler instance
|
|
29
|
+
* @returns {void}
|
|
30
|
+
*/
|
|
31
|
+
apply(compiler) {
|
|
32
|
+
new ExternalsPlugin(
|
|
33
|
+
(dependency) =>
|
|
34
|
+
dependency.category === "commonjs" ? "node-commonjs" : "module-import",
|
|
35
|
+
({ request }, callback) => {
|
|
36
|
+
if (!request) return callback();
|
|
37
|
+
if (request.startsWith("node:") || DENO_PROTOCOLS.test(request)) {
|
|
38
|
+
return callback(null, request);
|
|
39
|
+
}
|
|
40
|
+
if (coreModules.has(request)) return callback(null, `node:${request}`);
|
|
41
|
+
callback();
|
|
42
|
+
}
|
|
43
|
+
).apply(compiler);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
module.exports = DenoTargetPlugin;
|
|
@@ -14,8 +14,8 @@ const NullDependency = require("./NullDependency");
|
|
|
14
14
|
/** @typedef {import("../Dependency")} Dependency */
|
|
15
15
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
16
16
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
17
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
18
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
17
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range | null, Range | null, Range | null, string | null, LocalModule | null]>} ObjectDeserializerContext */
|
|
18
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range | null, Range | null, Range | null, string | null, LocalModule | null]>} ObjectSerializerContext */
|
|
19
19
|
|
|
20
20
|
/** @type {Record<string, { definition: string, content: string, requests: string[] }>} */
|
|
21
21
|
const DEFINITIONS = {
|
|
@@ -121,6 +121,7 @@ class AMDDefineDependency extends NullDependency {
|
|
|
121
121
|
this.arrayRange = arrayRange;
|
|
122
122
|
this.functionRange = functionRange;
|
|
123
123
|
this.objectRange = objectRange;
|
|
124
|
+
/** @type {string | null} */
|
|
124
125
|
this.namedModule = namedModule;
|
|
125
126
|
/** @type {LocalModule | null} */
|
|
126
127
|
this.localModule = null;
|
|
@@ -135,13 +136,13 @@ class AMDDefineDependency extends NullDependency {
|
|
|
135
136
|
* @param {ObjectSerializerContext} context context
|
|
136
137
|
*/
|
|
137
138
|
serialize(context) {
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
139
|
+
context
|
|
140
|
+
.write(this.range)
|
|
141
|
+
.write(this.arrayRange)
|
|
142
|
+
.write(this.functionRange)
|
|
143
|
+
.write(this.objectRange)
|
|
144
|
+
.write(this.namedModule)
|
|
145
|
+
.write(this.localModule);
|
|
145
146
|
super.serialize(context);
|
|
146
147
|
}
|
|
147
148
|
|
|
@@ -150,14 +151,18 @@ class AMDDefineDependency extends NullDependency {
|
|
|
150
151
|
* @param {ObjectDeserializerContext} context context
|
|
151
152
|
*/
|
|
152
153
|
deserialize(context) {
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
this.arrayRange = read();
|
|
156
|
-
|
|
157
|
-
this.
|
|
158
|
-
|
|
159
|
-
this.
|
|
160
|
-
|
|
154
|
+
this.range = context.read();
|
|
155
|
+
const c1 = context.rest;
|
|
156
|
+
this.arrayRange = c1.read();
|
|
157
|
+
const c2 = c1.rest;
|
|
158
|
+
this.functionRange = c2.read();
|
|
159
|
+
const c3 = c2.rest;
|
|
160
|
+
this.objectRange = c3.read();
|
|
161
|
+
const c4 = c3.rest;
|
|
162
|
+
this.namedModule = c4.read();
|
|
163
|
+
const c5 = c4.rest;
|
|
164
|
+
this.localModule = c5.read();
|
|
165
|
+
super.deserialize(c5.rest);
|
|
161
166
|
}
|
|
162
167
|
}
|
|
163
168
|
|
|
@@ -14,9 +14,9 @@ const NullDependency = require("./NullDependency");
|
|
|
14
14
|
/** @typedef {import("../Dependency")} Dependency */
|
|
15
15
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
16
16
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
17
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
18
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
19
17
|
/** @typedef {import("./AMDRequireItemDependency")} AMDRequireItemDependency */
|
|
18
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[(string | LocalModuleDependency | AMDRequireItemDependency)[], Range]>} ObjectDeserializerContext */
|
|
19
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[(string | LocalModuleDependency | AMDRequireItemDependency)[], Range]>} ObjectSerializerContext */
|
|
20
20
|
|
|
21
21
|
class AMDRequireArrayDependency extends NullDependency {
|
|
22
22
|
/**
|
|
@@ -44,10 +44,7 @@ class AMDRequireArrayDependency extends NullDependency {
|
|
|
44
44
|
* @param {ObjectSerializerContext} context context
|
|
45
45
|
*/
|
|
46
46
|
serialize(context) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
write(this.depsArray);
|
|
50
|
-
write(this.range);
|
|
47
|
+
context.write(this.depsArray).write(this.range);
|
|
51
48
|
|
|
52
49
|
super.serialize(context);
|
|
53
50
|
}
|
|
@@ -57,12 +54,11 @@ class AMDRequireArrayDependency extends NullDependency {
|
|
|
57
54
|
* @param {ObjectDeserializerContext} context context
|
|
58
55
|
*/
|
|
59
56
|
deserialize(context) {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
this.
|
|
63
|
-
this.range = read();
|
|
57
|
+
this.depsArray = context.read();
|
|
58
|
+
const c1 = context.rest;
|
|
59
|
+
this.range = c1.read();
|
|
64
60
|
|
|
65
|
-
super.deserialize(
|
|
61
|
+
super.deserialize(c1.rest);
|
|
66
62
|
}
|
|
67
63
|
}
|
|
68
64
|
|
|
@@ -9,8 +9,8 @@ const makeSerializable = require("../util/makeSerializable");
|
|
|
9
9
|
const ContextDependency = require("./ContextDependency");
|
|
10
10
|
|
|
11
11
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
12
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
13
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
12
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range]>} ObjectDeserializerContext */
|
|
13
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range]>} ObjectSerializerContext */
|
|
14
14
|
/** @typedef {import("./ContextDependency").ContextDependencyOptions} ContextDependencyOptions */
|
|
15
15
|
|
|
16
16
|
class AMDRequireContextDependency extends ContextDependency {
|
|
@@ -40,10 +40,7 @@ class AMDRequireContextDependency extends ContextDependency {
|
|
|
40
40
|
* @param {ObjectSerializerContext} context context
|
|
41
41
|
*/
|
|
42
42
|
serialize(context) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
write(this.range);
|
|
46
|
-
write(this.valueRange);
|
|
43
|
+
context.write(this.range).write(this.valueRange);
|
|
47
44
|
|
|
48
45
|
super.serialize(context);
|
|
49
46
|
}
|
|
@@ -53,12 +50,11 @@ class AMDRequireContextDependency extends ContextDependency {
|
|
|
53
50
|
* @param {ObjectDeserializerContext} context context
|
|
54
51
|
*/
|
|
55
52
|
deserialize(context) {
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
this.
|
|
59
|
-
this.valueRange = read();
|
|
53
|
+
this.range = context.read();
|
|
54
|
+
const c1 = context.rest;
|
|
55
|
+
this.valueRange = c1.read();
|
|
60
56
|
|
|
61
|
-
super.deserialize(
|
|
57
|
+
super.deserialize(c1.rest);
|
|
62
58
|
}
|
|
63
59
|
}
|
|
64
60
|
|
|
@@ -14,8 +14,8 @@ const NullDependency = require("./NullDependency");
|
|
|
14
14
|
/** @typedef {import("../Dependency")} Dependency */
|
|
15
15
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
|
16
16
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
17
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
18
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
17
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range, Range | null, Range | null, boolean, boolean]>} ObjectDeserializerContext */
|
|
18
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range, Range | null, Range | null, boolean, boolean]>} ObjectSerializerContext */
|
|
19
19
|
|
|
20
20
|
class AMDRequireDependency extends NullDependency {
|
|
21
21
|
/**
|
|
@@ -32,7 +32,9 @@ class AMDRequireDependency extends NullDependency {
|
|
|
32
32
|
this.arrayRange = arrayRange;
|
|
33
33
|
this.functionRange = functionRange;
|
|
34
34
|
this.errorCallbackRange = errorCallbackRange;
|
|
35
|
+
/** @type {boolean} */
|
|
35
36
|
this.functionBindThis = false;
|
|
37
|
+
/** @type {boolean} */
|
|
36
38
|
this.errorCallbackBindThis = false;
|
|
37
39
|
}
|
|
38
40
|
|
|
@@ -45,14 +47,13 @@ class AMDRequireDependency extends NullDependency {
|
|
|
45
47
|
* @param {ObjectSerializerContext} context context
|
|
46
48
|
*/
|
|
47
49
|
serialize(context) {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
write(this.errorCallbackBindThis);
|
|
50
|
+
context
|
|
51
|
+
.write(this.outerRange)
|
|
52
|
+
.write(this.arrayRange)
|
|
53
|
+
.write(this.functionRange)
|
|
54
|
+
.write(this.errorCallbackRange)
|
|
55
|
+
.write(this.functionBindThis)
|
|
56
|
+
.write(this.errorCallbackBindThis);
|
|
56
57
|
|
|
57
58
|
super.serialize(context);
|
|
58
59
|
}
|
|
@@ -62,16 +63,19 @@ class AMDRequireDependency extends NullDependency {
|
|
|
62
63
|
* @param {ObjectDeserializerContext} context context
|
|
63
64
|
*/
|
|
64
65
|
deserialize(context) {
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
this.
|
|
68
|
-
|
|
69
|
-
this.functionRange = read();
|
|
70
|
-
|
|
71
|
-
this.
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
66
|
+
this.outerRange = context.read();
|
|
67
|
+
const c1 = context.rest;
|
|
68
|
+
this.arrayRange = c1.read();
|
|
69
|
+
const c2 = c1.rest;
|
|
70
|
+
this.functionRange = c2.read();
|
|
71
|
+
const c3 = c2.rest;
|
|
72
|
+
this.errorCallbackRange = c3.read();
|
|
73
|
+
const c4 = c3.rest;
|
|
74
|
+
this.functionBindThis = c4.read();
|
|
75
|
+
const c5 = c4.rest;
|
|
76
|
+
this.errorCallbackBindThis = c5.read();
|
|
77
|
+
|
|
78
|
+
super.deserialize(c5.rest);
|
|
75
79
|
}
|
|
76
80
|
}
|
|
77
81
|
|
|
@@ -35,9 +35,12 @@ class CachedConstDependency extends NullDependency {
|
|
|
35
35
|
) {
|
|
36
36
|
super();
|
|
37
37
|
|
|
38
|
+
/** @type {string} */
|
|
38
39
|
this.expression = expression;
|
|
39
40
|
this.range = range;
|
|
41
|
+
/** @type {string} */
|
|
40
42
|
this.identifier = identifier;
|
|
43
|
+
/** @type {number} */
|
|
41
44
|
this.place = place;
|
|
42
45
|
/** @type {undefined | string} */
|
|
43
46
|
this._hashUpdate = undefined;
|
|
@@ -63,6 +63,7 @@ const getRequireEsmModuleExportsAccess = (
|
|
|
63
63
|
return null;
|
|
64
64
|
}
|
|
65
65
|
const exportsInfo = moduleGraph.getExportsInfo(importedModule);
|
|
66
|
+
// CJS exports are never inlined
|
|
66
67
|
const usedName = exportsInfo.getUsedName([ESM_MODULE_EXPORTS_NAME], runtime);
|
|
67
68
|
if (usedName === false) return null;
|
|
68
69
|
return propertyAccess(/** @type {readonly string[]} */ (usedName));
|
|
@@ -32,10 +32,10 @@ const processExportInfo = require("./processExportInfo");
|
|
|
32
32
|
/** @typedef {import("../Module")} Module */
|
|
33
33
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
34
34
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
35
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
36
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
37
35
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
|
38
36
|
/** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
|
|
37
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[undefined | boolean, Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[], ExportInfoName[], boolean, boolean]>} ObjectDeserializerContext */
|
|
38
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[undefined | boolean, Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[], ExportInfoName[], boolean, boolean]>} ObjectSerializerContext */
|
|
39
39
|
|
|
40
40
|
const idsSymbol = /** @type {symbol} */ (
|
|
41
41
|
Symbol("CommonJsExportRequireDependency.ids")
|
|
@@ -61,12 +61,20 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
|
|
61
61
|
super(request);
|
|
62
62
|
this.range = range;
|
|
63
63
|
this.valueRange = valueRange;
|
|
64
|
+
/** @type {CommonJSDependencyBaseKeywords} */
|
|
64
65
|
this.base = base;
|
|
66
|
+
/** @type {string[]} */
|
|
65
67
|
this.names = names;
|
|
68
|
+
/** @type {string[]} */
|
|
66
69
|
this.ids = ids;
|
|
70
|
+
/** @type {boolean} */
|
|
67
71
|
this.resultUsed = resultUsed;
|
|
68
72
|
/** @type {undefined | boolean} */
|
|
69
73
|
this.asiSafe = undefined;
|
|
74
|
+
// true when the reexport is a lazy `{ get: () => require(...) }` accessor
|
|
75
|
+
// (as produced by `Object.defineProperty`) rather than an eager value.
|
|
76
|
+
/** @type {boolean} */
|
|
77
|
+
this.getter = false;
|
|
70
78
|
}
|
|
71
79
|
|
|
72
80
|
get type() {
|
|
@@ -120,7 +128,7 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
|
|
120
128
|
// `require(esm)` unwraps the "module.exports" named export; any
|
|
121
129
|
// further property access lands on that value (which webpack does
|
|
122
130
|
// not model), so only the "module.exports" export is observable.
|
|
123
|
-
return [[ESM_MODULE_EXPORTS_NAME]];
|
|
131
|
+
return [{ name: [ESM_MODULE_EXPORTS_NAME], canInline: false }];
|
|
124
132
|
}
|
|
125
133
|
const getFullResult = () => {
|
|
126
134
|
if (ids.length === 0) {
|
|
@@ -129,7 +137,8 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
|
|
129
137
|
return [
|
|
130
138
|
{
|
|
131
139
|
name: ids,
|
|
132
|
-
canMangle: false
|
|
140
|
+
canMangle: false,
|
|
141
|
+
canInline: false
|
|
133
142
|
}
|
|
134
143
|
];
|
|
135
144
|
};
|
|
@@ -164,7 +173,8 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
|
|
164
173
|
}
|
|
165
174
|
return referencedExports.map((name) => ({
|
|
166
175
|
name,
|
|
167
|
-
canMangle: false
|
|
176
|
+
canMangle: false,
|
|
177
|
+
canInline: false
|
|
168
178
|
}));
|
|
169
179
|
}
|
|
170
180
|
|
|
@@ -248,7 +258,6 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
|
|
248
258
|
canMangle: !(name in EMPTY_OBJECT) && false
|
|
249
259
|
})
|
|
250
260
|
),
|
|
251
|
-
// TODO handle deep reexports
|
|
252
261
|
dependencies: [from.module]
|
|
253
262
|
};
|
|
254
263
|
}
|
|
@@ -352,14 +361,15 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
|
|
352
361
|
* @param {ObjectSerializerContext} context context
|
|
353
362
|
*/
|
|
354
363
|
serialize(context) {
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
364
|
+
context
|
|
365
|
+
.write(this.asiSafe)
|
|
366
|
+
.write(this.range)
|
|
367
|
+
.write(this.valueRange)
|
|
368
|
+
.write(this.base)
|
|
369
|
+
.write(this.names)
|
|
370
|
+
.write(this.ids)
|
|
371
|
+
.write(this.resultUsed)
|
|
372
|
+
.write(this.getter);
|
|
363
373
|
super.serialize(context);
|
|
364
374
|
}
|
|
365
375
|
|
|
@@ -368,15 +378,22 @@ class CommonJsExportRequireDependency extends ModuleDependency {
|
|
|
368
378
|
* @param {ObjectDeserializerContext} context context
|
|
369
379
|
*/
|
|
370
380
|
deserialize(context) {
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
this.range = read();
|
|
374
|
-
|
|
375
|
-
this.
|
|
376
|
-
|
|
377
|
-
this.
|
|
378
|
-
|
|
379
|
-
|
|
381
|
+
this.asiSafe = context.read();
|
|
382
|
+
const c1 = context.rest;
|
|
383
|
+
this.range = c1.read();
|
|
384
|
+
const c2 = c1.rest;
|
|
385
|
+
this.valueRange = c2.read();
|
|
386
|
+
const c3 = c2.rest;
|
|
387
|
+
this.base = c3.read();
|
|
388
|
+
const c4 = c3.rest;
|
|
389
|
+
this.names = c4.read();
|
|
390
|
+
const c5 = c4.rest;
|
|
391
|
+
this.ids = c5.read();
|
|
392
|
+
const c6 = c5.rest;
|
|
393
|
+
this.resultUsed = c6.read();
|
|
394
|
+
const c7 = c6.rest;
|
|
395
|
+
this.getter = c7.read();
|
|
396
|
+
super.deserialize(c7.rest);
|
|
380
397
|
}
|
|
381
398
|
}
|
|
382
399
|
|
|
@@ -408,9 +425,10 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
|
|
408
425
|
}
|
|
409
426
|
) {
|
|
410
427
|
const dep = /** @type {CommonJsExportRequireDependency} */ (dependency);
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
.getUsedName(dep.names, runtime)
|
|
428
|
+
// CJS exports are never inlined
|
|
429
|
+
const used = /** @type {string | string[] | false} */ (
|
|
430
|
+
moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
|
|
431
|
+
);
|
|
414
432
|
|
|
415
433
|
const [type, base] = handleDependencyBase(
|
|
416
434
|
dep.base,
|
|
@@ -436,9 +454,10 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
|
|
436
454
|
if (esmRequireAccess !== null) {
|
|
437
455
|
requireExpr += `${esmRequireAccess}${propertyAccess(ids)}`;
|
|
438
456
|
} else {
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
.getUsedName(ids, runtime)
|
|
457
|
+
// CJS exports are never inlined
|
|
458
|
+
const usedImported = /** @type {string | string[] | false} */ (
|
|
459
|
+
moduleGraph.getExportsInfo(importedModule).getUsedName(ids, runtime)
|
|
460
|
+
);
|
|
442
461
|
if (usedImported) {
|
|
443
462
|
const comment = equals(usedImported, ids)
|
|
444
463
|
? ""
|
|
@@ -458,8 +477,37 @@ CommonJsExportRequireDependency.Template = class CommonJsExportRequireDependency
|
|
|
458
477
|
: `/* unused reexport */ ${requireExpr}`
|
|
459
478
|
);
|
|
460
479
|
return;
|
|
461
|
-
case "Object.defineProperty":
|
|
462
|
-
|
|
480
|
+
case "Object.defineProperty": {
|
|
481
|
+
// `Object.defineProperty(exports, "name", { value: require("...") })`
|
|
482
|
+
// or the lazy getter form `{ get: () => require("...") }` used by
|
|
483
|
+
// barrel files (e.g. webpack's own `lib/index.js`).
|
|
484
|
+
const valueRange = /** @type {Range} */ (dep.valueRange);
|
|
485
|
+
if (!used) {
|
|
486
|
+
// A lazy getter never runs `require` until accessed, so an unused
|
|
487
|
+
// one can be dropped entirely; an eager value must keep side effects.
|
|
488
|
+
source.replace(
|
|
489
|
+
dep.range[0],
|
|
490
|
+
dep.range[1] - 1,
|
|
491
|
+
dep.getter
|
|
492
|
+
? "/* unused reexport */ 0"
|
|
493
|
+
: `/* unused reexport */ ${requireExpr}`
|
|
494
|
+
);
|
|
495
|
+
return;
|
|
496
|
+
}
|
|
497
|
+
const descriptor = dep.getter
|
|
498
|
+
? "enumerable: true, get: () => ("
|
|
499
|
+
: "value: (";
|
|
500
|
+
source.replace(
|
|
501
|
+
dep.range[0],
|
|
502
|
+
valueRange[0] - 1,
|
|
503
|
+
`Object.defineProperty(${base}${propertyAccess(
|
|
504
|
+
used.slice(0, -1)
|
|
505
|
+
)}, ${JSON.stringify(used[used.length - 1])}, { ${descriptor}`
|
|
506
|
+
);
|
|
507
|
+
source.replace(valueRange[0], valueRange[1] - 1, requireExpr);
|
|
508
|
+
source.replace(valueRange[1], dep.range[1] - 1, ") })");
|
|
509
|
+
return;
|
|
510
|
+
}
|
|
463
511
|
default:
|
|
464
512
|
throw new Error("Unexpected type");
|
|
465
513
|
}
|
|
@@ -18,9 +18,9 @@ const NullDependency = require("./NullDependency");
|
|
|
18
18
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
19
19
|
/** @typedef {import("../ExportsInfo").ExportInfoName} ExportInfoName */
|
|
20
20
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
|
21
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
|
22
|
-
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
|
23
21
|
/** @typedef {import("./CommonJsDependencyHelpers").CommonJSDependencyBaseKeywords} CommonJSDependencyBaseKeywords */
|
|
22
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext<[Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[]]>} ObjectDeserializerContext */
|
|
23
|
+
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext<[Range, Range | null, CommonJSDependencyBaseKeywords, ExportInfoName[]]>} ObjectSerializerContext */
|
|
24
24
|
|
|
25
25
|
const EMPTY_OBJECT = {};
|
|
26
26
|
|
|
@@ -36,7 +36,9 @@ class CommonJsExportsDependency extends NullDependency {
|
|
|
36
36
|
super();
|
|
37
37
|
this.range = range;
|
|
38
38
|
this.valueRange = valueRange;
|
|
39
|
+
/** @type {CommonJSDependencyBaseKeywords} */
|
|
39
40
|
this.base = base;
|
|
41
|
+
/** @type {string[]} */
|
|
40
42
|
this.names = names;
|
|
41
43
|
}
|
|
42
44
|
|
|
@@ -70,11 +72,11 @@ class CommonJsExportsDependency extends NullDependency {
|
|
|
70
72
|
* @param {ObjectSerializerContext} context context
|
|
71
73
|
*/
|
|
72
74
|
serialize(context) {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
75
|
+
context
|
|
76
|
+
.write(this.range)
|
|
77
|
+
.write(this.valueRange)
|
|
78
|
+
.write(this.base)
|
|
79
|
+
.write(this.names);
|
|
78
80
|
super.serialize(context);
|
|
79
81
|
}
|
|
80
82
|
|
|
@@ -83,12 +85,14 @@ class CommonJsExportsDependency extends NullDependency {
|
|
|
83
85
|
* @param {ObjectDeserializerContext} context context
|
|
84
86
|
*/
|
|
85
87
|
deserialize(context) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
this.valueRange = read();
|
|
89
|
-
|
|
90
|
-
this.
|
|
91
|
-
|
|
88
|
+
this.range = context.read();
|
|
89
|
+
const c1 = context.rest;
|
|
90
|
+
this.valueRange = c1.read();
|
|
91
|
+
const c2 = c1.rest;
|
|
92
|
+
this.base = c2.read();
|
|
93
|
+
const c3 = c2.rest;
|
|
94
|
+
this.names = c3.read();
|
|
95
|
+
super.deserialize(c3.rest);
|
|
92
96
|
}
|
|
93
97
|
}
|
|
94
98
|
|
|
@@ -113,9 +117,10 @@ CommonJsExportsDependency.Template = class CommonJsExportsDependencyTemplate ext
|
|
|
113
117
|
{ module, moduleGraph, initFragments, runtimeRequirements, runtime }
|
|
114
118
|
) {
|
|
115
119
|
const dep = /** @type {CommonJsExportsDependency} */ (dependency);
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
.getUsedName(dep.names, runtime)
|
|
120
|
+
// CJS exports are never inlined
|
|
121
|
+
const used = /** @type {string | string[] | false} */ (
|
|
122
|
+
moduleGraph.getExportsInfo(module).getUsedName(dep.names, runtime)
|
|
123
|
+
);
|
|
119
124
|
|
|
120
125
|
const [type, base] = handleDependencyBase(
|
|
121
126
|
dep.base,
|