webpack 5.92.1 → 5.94.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 +8 -5
- package/bin/webpack.js +6 -7
- package/hot/log.js +1 -2
- package/hot/only-dev-server.js +1 -1
- package/hot/poll.js +1 -1
- package/hot/signal.js +1 -1
- package/lib/APIPlugin.js +4 -3
- package/lib/AbstractMethodError.js +10 -5
- package/lib/AutomaticPrefetchPlugin.js +1 -1
- package/lib/BannerPlugin.js +12 -6
- package/lib/Cache.js +8 -10
- package/lib/CacheFacade.js +3 -3
- package/lib/CaseSensitiveModulesWarning.js +5 -7
- package/lib/Chunk.js +14 -11
- package/lib/ChunkGraph.js +58 -36
- package/lib/ChunkGroup.js +2 -3
- package/lib/ChunkTemplate.js +43 -0
- package/lib/CleanPlugin.js +10 -11
- package/lib/CodeGenerationResults.js +6 -5
- package/lib/CommentCompilationWarning.js +0 -1
- package/lib/Compilation.js +223 -191
- package/lib/Compiler.js +81 -82
- package/lib/ConcatenationScope.js +3 -6
- package/lib/ConditionalInitFragment.js +6 -7
- package/lib/ConstPlugin.js +7 -15
- package/lib/ContextExclusionPlugin.js +3 -3
- package/lib/ContextModule.js +36 -21
- package/lib/ContextModuleFactory.js +89 -44
- package/lib/ContextReplacementPlugin.js +10 -9
- package/lib/DefinePlugin.js +76 -69
- package/lib/DelegatedModule.js +7 -3
- package/lib/DelegatedModuleFactoryPlugin.js +36 -22
- package/lib/DelegatedPlugin.js +4 -0
- package/lib/DependenciesBlock.js +0 -1
- package/lib/Dependency.js +10 -14
- package/lib/DllEntryPlugin.js +4 -2
- package/lib/DllModuleFactory.js +1 -0
- package/lib/DllPlugin.js +9 -7
- package/lib/DllReferencePlugin.js +30 -15
- package/lib/EntryPlugin.js +1 -3
- package/lib/EnvironmentPlugin.js +5 -2
- package/lib/ErrorHelpers.js +11 -12
- package/lib/EvalDevToolModulePlugin.js +10 -12
- package/lib/EvalSourceMapDevToolPlugin.js +15 -13
- package/lib/ExportsInfo.js +185 -120
- package/lib/ExternalModule.js +104 -64
- package/lib/ExternalModuleFactoryPlugin.js +23 -10
- package/lib/FileSystemInfo.js +791 -422
- package/lib/FlagAllModulesAsUsedPlugin.js +1 -1
- package/lib/FlagDependencyExportsPlugin.js +12 -11
- package/lib/FlagDependencyUsagePlugin.js +1 -1
- package/lib/Generator.js +2 -5
- package/lib/GraphHelpers.js +3 -2
- package/lib/HookWebpackError.js +8 -10
- package/lib/HotModuleReplacementPlugin.js +78 -64
- package/lib/IgnoreErrorModuleFactory.js +3 -3
- package/lib/IgnorePlugin.js +1 -3
- package/lib/IgnoreWarningsPlugin.js +6 -9
- package/lib/InitFragment.js +2 -3
- package/lib/LibManifestPlugin.js +4 -3
- package/lib/MainTemplate.js +72 -19
- package/lib/Module.js +25 -9
- package/lib/ModuleBuildError.js +4 -11
- package/lib/ModuleDependencyError.js +5 -5
- package/lib/ModuleDependencyWarning.js +5 -5
- package/lib/ModuleError.js +1 -5
- package/lib/ModuleFilenameHelpers.js +29 -46
- package/lib/ModuleGraph.js +7 -6
- package/lib/ModuleGraphConnection.js +6 -6
- package/lib/ModuleInfoHeaderPlugin.js +82 -30
- package/lib/ModuleParseError.js +8 -9
- package/lib/ModuleRestoreError.js +1 -1
- package/lib/ModuleStoreError.js +1 -1
- package/lib/ModuleTemplate.js +33 -1
- package/lib/ModuleTypeConstants.js +21 -22
- package/lib/ModuleWarning.js +1 -5
- package/lib/MultiCompiler.js +24 -26
- package/lib/MultiStats.js +73 -31
- package/lib/MultiWatching.js +1 -1
- package/lib/NormalModule.js +132 -70
- package/lib/NormalModuleFactory.js +53 -49
- package/lib/OptimizationStages.js +3 -3
- package/lib/ProgressPlugin.js +9 -9
- package/lib/ProvidePlugin.js +4 -4
- package/lib/RuntimeGlobals.js +71 -70
- package/lib/RuntimeModule.js +1 -1
- package/lib/RuntimePlugin.js +24 -12
- package/lib/RuntimeTemplate.js +40 -44
- package/lib/SizeFormatHelpers.js +2 -4
- package/lib/SourceMapDevToolPlugin.js +42 -34
- package/lib/Stats.js +5 -11
- package/lib/Template.js +18 -24
- package/lib/TemplatedPathPlugin.js +12 -10
- package/lib/UseStrictPlugin.js +8 -1
- package/lib/WarnDeprecatedOptionPlugin.js +0 -1
- package/lib/WatchIgnorePlugin.js +26 -9
- package/lib/Watching.js +10 -5
- package/lib/WebpackOptionsApply.js +89 -62
- package/lib/asset/AssetGenerator.js +107 -42
- package/lib/asset/AssetModulesPlugin.js +29 -23
- package/lib/asset/AssetSourceGenerator.js +2 -7
- package/lib/async-modules/AwaitDependenciesInitFragment.js +6 -7
- package/lib/buildChunkGraph.js +14 -19
- package/lib/cache/IdleFileCachePlugin.js +4 -4
- package/lib/cache/MemoryWithGcCachePlugin.js +5 -5
- package/lib/cache/PackFileCacheStrategy.js +51 -50
- package/lib/cache/ResolverCachePlugin.js +6 -6
- package/lib/cache/mergeEtags.js +16 -21
- package/lib/cli.js +148 -104
- package/lib/config/browserslistTargetHandler.js +16 -13
- package/lib/config/defaults.js +31 -28
- package/lib/config/normalization.js +335 -344
- package/lib/config/target.js +42 -52
- package/lib/container/ContainerEntryModule.js +2 -2
- package/lib/container/ContainerPlugin.js +1 -1
- package/lib/container/RemoteRuntimeModule.js +11 -8
- package/lib/container/options.js +18 -4
- package/lib/css/CssExportsGenerator.js +39 -40
- package/lib/css/CssGenerator.js +11 -14
- package/lib/css/CssLoadingRuntimeModule.js +10 -10
- package/lib/css/CssModulesPlugin.js +127 -47
- package/lib/css/CssParser.js +20 -18
- package/lib/css/walkCssTokens.js +80 -95
- package/lib/debug/ProfilingPlugin.js +19 -20
- package/lib/dependencies/AMDDefineDependency.js +1 -1
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +83 -47
- package/lib/dependencies/AMDRequireArrayDependency.js +9 -10
- package/lib/dependencies/AMDRequireDependenciesBlockParserPlugin.js +22 -16
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CommonJsDependencyHelpers.js +6 -2
- package/lib/dependencies/CommonJsExportRequireDependency.js +37 -41
- package/lib/dependencies/CommonJsExportsDependency.js +0 -1
- package/lib/dependencies/CommonJsExportsParserPlugin.js +19 -23
- package/lib/dependencies/CommonJsFullRequireDependency.js +1 -1
- package/lib/dependencies/CommonJsImportsParserPlugin.js +52 -61
- package/lib/dependencies/CommonJsSelfReferenceDependency.js +6 -8
- package/lib/dependencies/ConstDependency.js +1 -1
- package/lib/dependencies/ContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +31 -34
- package/lib/dependencies/ContextElementDependency.js +2 -2
- package/lib/dependencies/CriticalDependencyWarning.js +1 -1
- package/lib/dependencies/CssExportDependency.js +72 -9
- package/lib/dependencies/CssImportDependency.js +0 -2
- package/lib/dependencies/CssLocalIdentifierDependency.js +68 -21
- package/lib/dependencies/CssSelfLocalIdentifierDependency.js +2 -1
- package/lib/dependencies/CssUrlDependency.js +4 -5
- package/lib/dependencies/DynamicExports.js +5 -5
- package/lib/dependencies/ExportsInfoDependency.js +1 -2
- package/lib/dependencies/HarmonyAcceptImportDependency.js +1 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +4 -5
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +27 -16
- package/lib/dependencies/HarmonyExportExpressionDependency.js +1 -1
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +107 -64
- package/lib/dependencies/HarmonyExports.js +2 -2
- package/lib/dependencies/HarmonyImportDependency.js +2 -4
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +19 -4
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +41 -16
- package/lib/dependencies/ImportDependency.js +1 -1
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +5 -5
- package/lib/dependencies/ImportMetaPlugin.js +11 -13
- package/lib/dependencies/ImportParserPlugin.js +39 -44
- package/lib/dependencies/JsonExportsDependency.js +22 -18
- package/lib/dependencies/LoaderPlugin.js +47 -36
- package/lib/dependencies/LocalModule.js +1 -1
- package/lib/dependencies/LocalModulesHelpers.js +4 -4
- package/lib/dependencies/ModuleDecoratorDependency.js +1 -1
- package/lib/dependencies/ProvidedDependency.js +1 -1
- package/lib/dependencies/PureExpressionDependency.js +6 -6
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/RuntimeRequirementsDependency.js +1 -1
- package/lib/dependencies/SystemPlugin.js +1 -1
- package/lib/dependencies/URLDependency.js +3 -3
- package/lib/dependencies/URLPlugin.js +66 -12
- package/lib/dependencies/WorkerPlugin.js +25 -24
- package/lib/dependencies/processExportInfo.js +3 -1
- package/lib/electron/ElectronTargetPlugin.js +1 -0
- package/lib/esm/ModuleChunkFormatPlugin.js +11 -12
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +7 -3
- package/lib/formatLocation.js +1 -2
- package/lib/hmr/HotModuleReplacement.runtime.js +4 -5
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -0
- package/lib/hmr/JavascriptHotModuleReplacement.runtime.js +9 -12
- package/lib/hmr/LazyCompilationPlugin.js +27 -12
- package/lib/hmr/lazyCompilationBackend.js +64 -40
- package/lib/ids/ChunkModuleIdRangePlugin.js +1 -3
- package/lib/ids/DeterministicChunkIdsPlugin.js +2 -4
- package/lib/ids/DeterministicModuleIdsPlugin.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +5 -1
- package/lib/ids/IdHelpers.js +29 -39
- package/lib/ids/SyncModuleIdsPlugin.js +7 -2
- package/lib/index.js +1 -5
- package/lib/javascript/ArrayPushCallbackChunkFormatPlugin.js +6 -4
- package/lib/javascript/BasicEvaluatedExpression.js +4 -19
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/CommonJsChunkFormatPlugin.js +10 -11
- package/lib/javascript/EnableChunkLoadingPlugin.js +7 -6
- package/lib/javascript/JavascriptGenerator.js +23 -7
- package/lib/javascript/JavascriptModulesPlugin.js +97 -70
- package/lib/javascript/JavascriptParser.js +179 -200
- package/lib/javascript/JavascriptParserHelpers.js +20 -21
- package/lib/javascript/StartupHelpers.js +41 -13
- package/lib/json/JsonGenerator.js +7 -13
- package/lib/json/JsonModulesPlugin.js +1 -4
- package/lib/json/JsonParser.js +5 -3
- package/lib/library/AmdLibraryPlugin.js +12 -16
- package/lib/library/AssignLibraryPlugin.js +9 -11
- package/lib/library/EnableLibraryPlugin.js +25 -15
- package/lib/library/ExportPropertyLibraryPlugin.js +8 -2
- package/lib/library/JsonpLibraryPlugin.js +2 -1
- package/lib/library/ModernModuleLibraryPlugin.js +144 -0
- package/lib/library/ModuleLibraryPlugin.js +2 -1
- package/lib/library/SystemLibraryPlugin.js +2 -1
- package/lib/library/UmdLibraryPlugin.js +66 -92
- package/lib/logging/Logger.js +32 -4
- package/lib/logging/createConsoleLogger.js +12 -13
- package/lib/logging/runtime.js +7 -8
- package/lib/logging/truncateArgs.js +5 -8
- package/lib/node/NodeWatchFileSystem.js +3 -18
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/ReadFileCompileAsyncWasmPlugin.js +1 -0
- package/lib/node/RequireChunkLoadingRuntimeModule.js +2 -2
- package/lib/node/nodeConsole.js +22 -22
- package/lib/optimize/AggressiveMergingPlugin.js +2 -4
- package/lib/optimize/AggressiveSplittingPlugin.js +16 -19
- package/lib/optimize/ConcatenatedModule.js +144 -61
- package/lib/optimize/EnsureChunkConditionsPlugin.js +1 -1
- package/lib/optimize/FlagIncludedChunksPlugin.js +3 -3
- package/lib/optimize/InnerGraph.js +17 -17
- package/lib/optimize/InnerGraphPlugin.js +8 -7
- package/lib/optimize/LimitChunkCountPlugin.js +2 -3
- package/lib/optimize/MangleExportsPlugin.js +1 -0
- package/lib/optimize/MinMaxSizeWarning.js +1 -1
- package/lib/optimize/ModuleConcatenationPlugin.js +56 -78
- package/lib/optimize/RealContentHashPlugin.js +7 -10
- package/lib/optimize/RemoveParentModulesPlugin.js +3 -3
- package/lib/optimize/SideEffectsFlagPlugin.js +6 -2
- package/lib/optimize/SplitChunksPlugin.js +34 -30
- package/lib/performance/SizeLimitsPlugin.js +2 -2
- package/lib/prefetch/ChunkPrefetchPreloadPlugin.js +1 -0
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
- package/lib/rules/BasicEffectRulePlugin.js +3 -1
- package/lib/rules/BasicMatcherRulePlugin.js +3 -1
- package/lib/rules/ObjectMatcherRulePlugin.js +4 -1
- package/lib/rules/RuleSetCompiler.js +41 -22
- package/lib/rules/UseEffectRulePlugin.js +36 -32
- package/lib/runtime/AsyncModuleRuntimeModule.js +1 -1
- package/lib/runtime/AutoPublicPathRuntimeModule.js +8 -3
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +2 -2
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
- package/lib/runtime/EnsureChunkRuntimeModule.js +10 -11
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +11 -17
- package/lib/runtime/LoadScriptRuntimeModule.js +17 -18
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -3
- package/lib/schemes/DataUriPlugin.js +1 -1
- package/lib/schemes/HttpUriPlugin.js +241 -126
- package/lib/serialization/BinaryMiddleware.js +44 -28
- package/lib/serialization/DateObjectSerializer.js +1 -0
- package/lib/serialization/ErrorObjectSerializer.js +2 -0
- package/lib/serialization/FileMiddleware.js +154 -106
- package/lib/serialization/MapObjectSerializer.js +2 -1
- package/lib/serialization/NullPrototypeObjectSerializer.js +3 -2
- package/lib/serialization/ObjectMiddleware.js +52 -56
- package/lib/serialization/PlainObjectSerializer.js +32 -6
- package/lib/serialization/RegExpObjectSerializer.js +1 -0
- package/lib/serialization/Serializer.js +4 -5
- package/lib/serialization/SerializerMiddleware.js +6 -6
- package/lib/serialization/SetObjectSerializer.js +2 -1
- package/lib/sharing/ConsumeSharedModule.js +19 -14
- package/lib/sharing/ConsumeSharedPlugin.js +116 -97
- package/lib/sharing/ConsumeSharedRuntimeModule.js +108 -141
- package/lib/sharing/ProvideForSharedDependency.js +0 -1
- package/lib/sharing/ProvideSharedPlugin.js +2 -2
- package/lib/sharing/resolveMatchedConfigs.js +2 -1
- package/lib/sharing/utils.js +15 -27
- package/lib/stats/DefaultStatsFactoryPlugin.js +424 -281
- package/lib/stats/DefaultStatsPresetPlugin.js +73 -18
- package/lib/stats/DefaultStatsPrinterPlugin.js +370 -101
- package/lib/stats/StatsFactory.js +127 -56
- package/lib/stats/StatsPrinter.js +75 -44
- package/lib/util/ArrayHelpers.js +8 -4
- package/lib/util/ArrayQueue.js +1 -1
- package/lib/util/AsyncQueue.js +31 -12
- package/lib/util/IterableHelpers.js +3 -4
- package/lib/util/LazyBucketSortedSet.js +60 -44
- package/lib/util/LazySet.js +1 -0
- package/lib/util/MapHelpers.js +1 -3
- package/lib/util/ParallelismFactorCalculator.js +1 -1
- package/lib/util/Queue.js +1 -1
- package/lib/util/Semaphore.js +4 -7
- package/lib/util/SetHelpers.js +5 -5
- package/lib/util/SortableSet.js +4 -3
- package/lib/util/StackedCacheMap.js +4 -6
- package/lib/util/StackedMap.js +1 -3
- package/lib/util/StringXor.js +0 -5
- package/lib/util/TupleQueue.js +1 -1
- package/lib/util/TupleSet.js +15 -5
- package/lib/util/URLAbsoluteSpecifier.js +7 -7
- package/lib/util/WeakTupleMap.js +19 -21
- package/lib/util/binarySearchBounds.js +5 -12
- package/lib/util/chainedImports.js +1 -1
- package/lib/util/cleverMerge.js +21 -19
- package/lib/util/comparators.js +57 -52
- package/lib/util/compileBooleanMatcher.js +3 -6
- package/lib/util/conventions.js +10 -13
- package/lib/util/createHash.js +9 -6
- package/lib/util/deprecation.js +22 -12
- package/lib/util/deterministicGrouping.js +19 -26
- package/lib/util/findGraphRoots.js +2 -2
- package/lib/util/fs.js +31 -31
- package/lib/util/hash/md4.js +2 -2
- package/lib/util/hash/wasm-hash.js +7 -7
- package/lib/util/hash/xxhash64.js +2 -2
- package/lib/util/identifier.js +81 -59
- package/lib/util/memoize.js +8 -10
- package/lib/util/mergeScope.js +6 -9
- package/lib/util/nonNumericOnlyHash.js +2 -2
- package/lib/util/numberHash.js +1 -6
- package/lib/util/objectToMap.js +0 -1
- package/lib/util/propertyAccess.js +2 -5
- package/lib/util/propertyName.js +1 -3
- package/lib/util/registerExternalSerializer.js +1 -1
- package/lib/util/runtime.js +103 -113
- package/lib/util/semver.js +29 -27
- package/lib/util/serialization.js +16 -1
- package/lib/util/smartGrouping.js +5 -5
- package/lib/util/source.js +1 -1
- package/lib/wasm/EnableWasmLoadingPlugin.js +5 -4
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +3 -3
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +5 -6
- package/lib/wasm-async/AsyncWebAssemblyModulesPlugin.js +3 -3
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +20 -19
- package/lib/wasm-sync/WebAssemblyGenerator.js +14 -29
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +1 -1
- package/lib/wasm-sync/WebAssemblyUtils.js +2 -2
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +2 -3
- package/lib/webworker/ImportScriptsChunkLoadingPlugin.js +3 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
- package/package.json +17 -16
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +17 -0
- package/schemas/plugins/asset/AssetGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetInlineGeneratorOptions.check.js +1 -1
- package/schemas/plugins/asset/AssetResourceGeneratorOptions.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.check.js +1 -1
- package/schemas/plugins/container/ContainerReferencePlugin.json +1 -0
- package/schemas/plugins/container/ExternalsType.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.check.js +1 -1
- package/schemas/plugins/container/ModuleFederationPlugin.json +1 -0
- package/types.d.ts +682 -347
@@ -5,16 +5,23 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const { cssExportConvention } = require("../util/conventions");
|
8
9
|
const makeSerializable = require("../util/makeSerializable");
|
9
10
|
const NullDependency = require("./NullDependency");
|
10
11
|
|
11
12
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
13
|
+
/** @typedef {import("../../declarations/WebpackOptions").CssGeneratorExportsConvention} CssGeneratorExportsConvention */
|
14
|
+
/** @typedef {import("../CssModule")} CssModule */
|
12
15
|
/** @typedef {import("../Dependency")} Dependency */
|
13
16
|
/** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
|
17
|
+
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
14
18
|
/** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
|
15
19
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
20
|
+
/** @typedef {import("../css/CssExportsGenerator")} CssExportsGenerator */
|
21
|
+
/** @typedef {import("../css/CssGenerator")} CssGenerator */
|
16
22
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
17
23
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
24
|
+
/** @typedef {import("../util/Hash")} Hash */
|
18
25
|
|
19
26
|
class CssExportDependency extends NullDependency {
|
20
27
|
/**
|
@@ -31,24 +38,60 @@ class CssExportDependency extends NullDependency {
|
|
31
38
|
return "css :export";
|
32
39
|
}
|
33
40
|
|
41
|
+
/**
|
42
|
+
* @param {string} name export name
|
43
|
+
* @param {CssGeneratorExportsConvention} convention convention of the export name
|
44
|
+
* @returns {string[]} convention results
|
45
|
+
*/
|
46
|
+
getExportsConventionNames(name, convention) {
|
47
|
+
if (this._conventionNames) {
|
48
|
+
return this._conventionNames;
|
49
|
+
}
|
50
|
+
this._conventionNames = cssExportConvention(name, convention);
|
51
|
+
return this._conventionNames;
|
52
|
+
}
|
53
|
+
|
34
54
|
/**
|
35
55
|
* Returns the exported names
|
36
56
|
* @param {ModuleGraph} moduleGraph module graph
|
37
57
|
* @returns {ExportsSpec | undefined} export names
|
38
58
|
*/
|
39
59
|
getExports(moduleGraph) {
|
40
|
-
const
|
60
|
+
const module = /** @type {CssModule} */ (moduleGraph.getParentModule(this));
|
61
|
+
const convention =
|
62
|
+
/** @type {CssGenerator | CssExportsGenerator} */
|
63
|
+
(module.generator).convention;
|
64
|
+
const names = this.getExportsConventionNames(this.name, convention);
|
41
65
|
return {
|
42
|
-
exports:
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
}
|
47
|
-
],
|
66
|
+
exports: names.map(name => ({
|
67
|
+
name,
|
68
|
+
canMangle: true
|
69
|
+
})),
|
48
70
|
dependencies: undefined
|
49
71
|
};
|
50
72
|
}
|
51
73
|
|
74
|
+
/**
|
75
|
+
* Update the hash
|
76
|
+
* @param {Hash} hash hash to be updated
|
77
|
+
* @param {UpdateHashContext} context context
|
78
|
+
* @returns {void}
|
79
|
+
*/
|
80
|
+
updateHash(hash, { chunkGraph }) {
|
81
|
+
const module = /** @type {CssModule} */ (
|
82
|
+
chunkGraph.moduleGraph.getParentModule(this)
|
83
|
+
);
|
84
|
+
const generator =
|
85
|
+
/** @type {CssGenerator | CssExportsGenerator} */
|
86
|
+
(module.generator);
|
87
|
+
const names = this.getExportsConventionNames(
|
88
|
+
this.name,
|
89
|
+
generator.convention
|
90
|
+
);
|
91
|
+
hash.update("exportsConvention");
|
92
|
+
hash.update(JSON.stringify(names));
|
93
|
+
}
|
94
|
+
|
52
95
|
/**
|
53
96
|
* @param {ObjectSerializerContext} context context
|
54
97
|
*/
|
@@ -79,9 +122,29 @@ CssExportDependency.Template = class CssExportDependencyTemplate extends (
|
|
79
122
|
* @param {DependencyTemplateContext} templateContext the context object
|
80
123
|
* @returns {void}
|
81
124
|
*/
|
82
|
-
apply(
|
125
|
+
apply(
|
126
|
+
dependency,
|
127
|
+
source,
|
128
|
+
{ cssExportsData, module: m, runtime, moduleGraph }
|
129
|
+
) {
|
83
130
|
const dep = /** @type {CssExportDependency} */ (dependency);
|
84
|
-
|
131
|
+
const module = /** @type {CssModule} */ (m);
|
132
|
+
const convention = /** @type {CssGenerator | CssExportsGenerator} */ (
|
133
|
+
module.generator
|
134
|
+
).convention;
|
135
|
+
const names = dep.getExportsConventionNames(dep.name, convention);
|
136
|
+
const usedNames = /** @type {string[]} */ (
|
137
|
+
names
|
138
|
+
.map(name =>
|
139
|
+
moduleGraph.getExportInfo(module, name).getUsedName(name, runtime)
|
140
|
+
)
|
141
|
+
.filter(Boolean)
|
142
|
+
);
|
143
|
+
if (usedNames.length === 0) return;
|
144
|
+
|
145
|
+
for (const used of usedNames) {
|
146
|
+
cssExportsData.exports.set(used, dep.value);
|
147
|
+
}
|
85
148
|
}
|
86
149
|
};
|
87
150
|
|
@@ -26,9 +26,7 @@ const ModuleDependency = require("./ModuleDependency");
|
|
26
26
|
class CssImportDependency extends ModuleDependency {
|
27
27
|
/**
|
28
28
|
* Example of dependency:
|
29
|
-
*
|
30
29
|
* \@import url("landscape.css") layer(forms) screen and (orientation: landscape) screen and (orientation: landscape);
|
31
|
-
*
|
32
30
|
* @param {string} request request
|
33
31
|
* @param {Range} range range of the argument
|
34
32
|
* @param {string | undefined} layer layer
|
@@ -5,6 +5,7 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
const { cssExportConvention } = require("../util/conventions");
|
8
9
|
const createHash = require("../util/createHash");
|
9
10
|
const { makePathsRelative } = require("../util/identifier");
|
10
11
|
const makeSerializable = require("../util/makeSerializable");
|
@@ -17,6 +18,7 @@ const NullDependency = require("./NullDependency");
|
|
17
18
|
/** @typedef {import("../CssModule")} CssModule */
|
18
19
|
/** @typedef {import("../Dependency")} Dependency */
|
19
20
|
/** @typedef {import("../Dependency").ExportsSpec} ExportsSpec */
|
21
|
+
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
20
22
|
/** @typedef {import("../DependencyTemplate").CssDependencyTemplateContext} DependencyTemplateContext */
|
21
23
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
22
24
|
/** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */
|
@@ -25,6 +27,7 @@ const NullDependency = require("./NullDependency");
|
|
25
27
|
/** @typedef {import("../css/CssParser").Range} Range */
|
26
28
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
27
29
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectSerializerContext} ObjectSerializerContext */
|
30
|
+
/** @typedef {import("../util/Hash")} Hash */
|
28
31
|
|
29
32
|
/**
|
30
33
|
* @param {string} local css local
|
@@ -88,24 +91,62 @@ class CssLocalIdentifierDependency extends NullDependency {
|
|
88
91
|
return "css local identifier";
|
89
92
|
}
|
90
93
|
|
94
|
+
/**
|
95
|
+
* @param {string} name export name
|
96
|
+
* @param {CssGeneratorExportsConvention} convention convention of the export name
|
97
|
+
* @returns {string[]} convention results
|
98
|
+
*/
|
99
|
+
getExportsConventionNames(name, convention) {
|
100
|
+
if (this._conventionNames) {
|
101
|
+
return this._conventionNames;
|
102
|
+
}
|
103
|
+
this._conventionNames = cssExportConvention(this.name, convention);
|
104
|
+
return this._conventionNames;
|
105
|
+
}
|
106
|
+
|
91
107
|
/**
|
92
108
|
* Returns the exported names
|
93
109
|
* @param {ModuleGraph} moduleGraph module graph
|
94
110
|
* @returns {ExportsSpec | undefined} export names
|
95
111
|
*/
|
96
112
|
getExports(moduleGraph) {
|
97
|
-
const
|
113
|
+
const module = /** @type {CssModule} */ (moduleGraph.getParentModule(this));
|
114
|
+
const convention = /** @type {CssGenerator | CssExportsGenerator} */ (
|
115
|
+
module.generator
|
116
|
+
).convention;
|
117
|
+
const names = this.getExportsConventionNames(this.name, convention);
|
98
118
|
return {
|
99
|
-
exports:
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
}
|
104
|
-
],
|
119
|
+
exports: names.map(name => ({
|
120
|
+
name,
|
121
|
+
canMangle: true
|
122
|
+
})),
|
105
123
|
dependencies: undefined
|
106
124
|
};
|
107
125
|
}
|
108
126
|
|
127
|
+
/**
|
128
|
+
* Update the hash
|
129
|
+
* @param {Hash} hash hash to be updated
|
130
|
+
* @param {UpdateHashContext} context context
|
131
|
+
* @returns {void}
|
132
|
+
*/
|
133
|
+
updateHash(hash, { chunkGraph }) {
|
134
|
+
const module = /** @type {CssModule} */ (
|
135
|
+
chunkGraph.moduleGraph.getParentModule(this)
|
136
|
+
);
|
137
|
+
const generator = /** @type {CssGenerator | CssExportsGenerator} */ (
|
138
|
+
module.generator
|
139
|
+
);
|
140
|
+
const names = this.getExportsConventionNames(
|
141
|
+
this.name,
|
142
|
+
generator.convention
|
143
|
+
);
|
144
|
+
hash.update("exportsConvention");
|
145
|
+
hash.update(JSON.stringify(names));
|
146
|
+
hash.update("localIdentName");
|
147
|
+
hash.update(generator.localIdentName);
|
148
|
+
}
|
149
|
+
|
109
150
|
/**
|
110
151
|
* @param {ObjectSerializerContext} context context
|
111
152
|
*/
|
@@ -137,7 +178,7 @@ class CssLocalIdentifierDependency extends NullDependency {
|
|
137
178
|
const escapeCssIdentifier = (str, omitUnderscore) => {
|
138
179
|
const escaped = `${str}`.replace(
|
139
180
|
// cspell:word uffff
|
140
|
-
/[^a-zA-Z0-9_\u0081-\
|
181
|
+
/[^a-zA-Z0-9_\u0081-\uFFFF-]/g,
|
141
182
|
s => `\\${s}`
|
142
183
|
);
|
143
184
|
return !omitUnderscore && /^(?!--)[0-9-]/.test(escaped)
|
@@ -158,7 +199,7 @@ CssLocalIdentifierDependency.Template = class CssLocalIdentifierDependencyTempla
|
|
158
199
|
dependency,
|
159
200
|
source,
|
160
201
|
{
|
161
|
-
module,
|
202
|
+
module: m,
|
162
203
|
moduleGraph,
|
163
204
|
chunkGraph,
|
164
205
|
runtime,
|
@@ -167,26 +208,32 @@ CssLocalIdentifierDependency.Template = class CssLocalIdentifierDependencyTempla
|
|
167
208
|
}
|
168
209
|
) {
|
169
210
|
const dep = /** @type {CssLocalIdentifierDependency} */ (dependency);
|
170
|
-
const
|
171
|
-
|
172
|
-
.
|
173
|
-
|
174
|
-
|
211
|
+
const module = /** @type {CssModule} */ (m);
|
212
|
+
const convention = /** @type {CssGenerator | CssExportsGenerator} */ (
|
213
|
+
module.generator
|
214
|
+
).convention;
|
215
|
+
const names = dep.getExportsConventionNames(dep.name, convention);
|
216
|
+
const usedNames = /** @type {string[]} */ (
|
217
|
+
names
|
218
|
+
.map(name =>
|
219
|
+
moduleGraph.getExportInfo(module, name).getUsedName(name, runtime)
|
220
|
+
)
|
221
|
+
.filter(Boolean)
|
222
|
+
);
|
223
|
+
if (usedNames.length === 0) return;
|
175
224
|
|
225
|
+
// use the first usedName to generate localIdent, it's shorter when mangle exports enabled
|
176
226
|
const localIdent =
|
177
227
|
dep.prefix +
|
178
|
-
getLocalIdent(
|
179
|
-
used,
|
180
|
-
/** @type {CssModule} */ (module),
|
181
|
-
chunkGraph,
|
182
|
-
runtimeTemplate
|
183
|
-
);
|
228
|
+
getLocalIdent(usedNames[0], module, chunkGraph, runtimeTemplate);
|
184
229
|
source.replace(
|
185
230
|
dep.range[0],
|
186
231
|
dep.range[1] - 1,
|
187
232
|
escapeCssIdentifier(localIdent, dep.prefix)
|
188
233
|
);
|
189
|
-
|
234
|
+
for (const used of usedNames) {
|
235
|
+
cssExportsData.exports.set(used, localIdent);
|
236
|
+
}
|
190
237
|
}
|
191
238
|
};
|
192
239
|
|
@@ -43,8 +43,9 @@ class CssSelfLocalIdentifierDependency extends CssLocalIdentifierDependency {
|
|
43
43
|
* @returns {string | null} an identifier to merge equal requests
|
44
44
|
*/
|
45
45
|
getResourceIdentifier() {
|
46
|
-
return
|
46
|
+
return "self";
|
47
47
|
}
|
48
|
+
|
48
49
|
/**
|
49
50
|
* Returns the exported names
|
50
51
|
* @param {ModuleGraph} moduleGraph module graph
|
@@ -25,9 +25,9 @@ const ModuleDependency = require("./ModuleDependency");
|
|
25
25
|
/** @typedef {import("../util/Hash")} Hash */
|
26
26
|
/** @typedef {import("../util/runtime").RuntimeSpec} RuntimeSpec */
|
27
27
|
|
28
|
-
const getIgnoredRawDataUrlModule = memoize(
|
29
|
-
|
30
|
-
|
28
|
+
const getIgnoredRawDataUrlModule = memoize(
|
29
|
+
() => new RawDataUrlModule("data:,", "ignored-asset", "(ignored asset)")
|
30
|
+
);
|
31
31
|
|
32
32
|
class CssUrlDependency extends ModuleDependency {
|
33
33
|
/**
|
@@ -106,9 +106,8 @@ const cssEscapeString = str => {
|
|
106
106
|
return str.replace(/[\n\t ()'"\\]/g, m => `\\${m}`);
|
107
107
|
} else if (countQuotation <= countApostrophe) {
|
108
108
|
return `"${str.replace(/[\n"\\]/g, m => `\\${m}`)}"`;
|
109
|
-
} else {
|
110
|
-
return `'${str.replace(/[\n'\\]/g, m => `\\${m}`)}'`;
|
111
109
|
}
|
110
|
+
return `'${str.replace(/[\n'\\]/g, m => `\\${m}`)}'`;
|
112
111
|
};
|
113
112
|
|
114
113
|
CssUrlDependency.Template = class CssUrlDependencyTemplate extends (
|
@@ -15,7 +15,7 @@ const parserStateExportsState = new WeakMap();
|
|
15
15
|
* @param {ParserState} parserState parser state
|
16
16
|
* @returns {void}
|
17
17
|
*/
|
18
|
-
exports.bailout = parserState => {
|
18
|
+
module.exports.bailout = parserState => {
|
19
19
|
const value = parserStateExportsState.get(parserState);
|
20
20
|
parserStateExportsState.set(parserState, false);
|
21
21
|
if (value === true) {
|
@@ -29,7 +29,7 @@ exports.bailout = parserState => {
|
|
29
29
|
* @param {ParserState} parserState parser state
|
30
30
|
* @returns {void}
|
31
31
|
*/
|
32
|
-
exports.enable = parserState => {
|
32
|
+
module.exports.enable = parserState => {
|
33
33
|
const value = parserStateExportsState.get(parserState);
|
34
34
|
if (value === false) return;
|
35
35
|
parserStateExportsState.set(parserState, true);
|
@@ -44,7 +44,7 @@ exports.enable = parserState => {
|
|
44
44
|
* @param {ParserState} parserState parser state
|
45
45
|
* @returns {void}
|
46
46
|
*/
|
47
|
-
exports.setFlagged = parserState => {
|
47
|
+
module.exports.setFlagged = parserState => {
|
48
48
|
const value = parserStateExportsState.get(parserState);
|
49
49
|
if (value !== true) return;
|
50
50
|
const buildMeta = /** @type {BuildMeta} */ (parserState.module.buildMeta);
|
@@ -56,7 +56,7 @@ exports.setFlagged = parserState => {
|
|
56
56
|
* @param {ParserState} parserState parser state
|
57
57
|
* @returns {void}
|
58
58
|
*/
|
59
|
-
exports.setDynamic = parserState => {
|
59
|
+
module.exports.setDynamic = parserState => {
|
60
60
|
const value = parserStateExportsState.get(parserState);
|
61
61
|
if (value !== true) return;
|
62
62
|
/** @type {BuildMeta} */
|
@@ -67,7 +67,7 @@ exports.setDynamic = parserState => {
|
|
67
67
|
* @param {ParserState} parserState parser state
|
68
68
|
* @returns {boolean} true, when enabled
|
69
69
|
*/
|
70
|
-
exports.isEnabled = parserState => {
|
70
|
+
module.exports.isEnabled = parserState => {
|
71
71
|
const value = parserStateExportsState.get(parserState);
|
72
72
|
return value === true;
|
73
73
|
};
|
@@ -72,7 +72,7 @@ const getProperty = (moduleGraph, module, _exportName, property, runtime) => {
|
|
72
72
|
case UsageState.Unused:
|
73
73
|
return false;
|
74
74
|
case UsageState.NoInfo:
|
75
|
-
return
|
75
|
+
return;
|
76
76
|
case UsageState.Unknown:
|
77
77
|
return null;
|
78
78
|
default:
|
@@ -82,7 +82,6 @@ const getProperty = (moduleGraph, module, _exportName, property, runtime) => {
|
|
82
82
|
case "provideInfo":
|
83
83
|
return moduleGraph.getExportsInfo(module).isExportProvided(exportName);
|
84
84
|
}
|
85
|
-
return undefined;
|
86
85
|
};
|
87
86
|
|
88
87
|
class ExportsInfoDependency extends NullDependency {
|
@@ -112,11 +112,10 @@ HarmonyEvaluatedImportSpecifierDependency.Template = class HarmonyEvaluatedImpor
|
|
112
112
|
break;
|
113
113
|
}
|
114
114
|
case "namespace": {
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
}
|
115
|
+
value =
|
116
|
+
ids[0] === "__esModule"
|
117
|
+
? ids.length === 1 || undefined
|
118
|
+
: exportsInfo.isExportProvided(ids);
|
120
119
|
break;
|
121
120
|
}
|
122
121
|
case "dynamic": {
|
@@ -145,30 +145,34 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
145
145
|
"HarmonyExportDependencyParserPlugin",
|
146
146
|
(statement, id, name, idx) => {
|
147
147
|
const settings = parser.getTagData(id, harmonySpecifierTag);
|
148
|
-
let dep;
|
149
148
|
const harmonyNamedExports = (parser.state.harmonyNamedExports =
|
150
149
|
parser.state.harmonyNamedExports || new Set());
|
151
150
|
harmonyNamedExports.add(name);
|
152
151
|
InnerGraph.addVariableUsage(parser, id, name);
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
dep = new HarmonyExportSpecifierDependency(id, name);
|
167
|
-
}
|
152
|
+
const dep = settings
|
153
|
+
? new HarmonyExportImportedSpecifierDependency(
|
154
|
+
settings.source,
|
155
|
+
settings.sourceOrder,
|
156
|
+
settings.ids,
|
157
|
+
name,
|
158
|
+
harmonyNamedExports,
|
159
|
+
null,
|
160
|
+
exportPresenceMode,
|
161
|
+
null,
|
162
|
+
settings.assertions
|
163
|
+
)
|
164
|
+
: new HarmonyExportSpecifierDependency(id, name);
|
168
165
|
dep.loc = Object.create(
|
169
166
|
/** @type {DependencyLocation} */ (statement.loc)
|
170
167
|
);
|
171
168
|
dep.loc.index = idx;
|
169
|
+
const isAsiSafe = !parser.isAsiPosition(
|
170
|
+
/** @type {Range} */
|
171
|
+
(statement.range)[0]
|
172
|
+
);
|
173
|
+
if (!isAsiSafe) {
|
174
|
+
parser.setAsiPosition(/** @type {Range} */ (statement.range)[1]);
|
175
|
+
}
|
172
176
|
parser.state.current.addDependency(dep);
|
173
177
|
return true;
|
174
178
|
}
|
@@ -202,6 +206,13 @@ module.exports = class HarmonyExportDependencyParserPlugin {
|
|
202
206
|
/** @type {DependencyLocation} */ (statement.loc)
|
203
207
|
);
|
204
208
|
dep.loc.index = idx;
|
209
|
+
const isAsiSafe = !parser.isAsiPosition(
|
210
|
+
/** @type {Range} */
|
211
|
+
(statement.range)[0]
|
212
|
+
);
|
213
|
+
if (!isAsiSafe) {
|
214
|
+
parser.setAsiPosition(/** @type {Range} */ (statement.range)[1]);
|
215
|
+
}
|
205
216
|
parser.state.current.addDependency(dep);
|
206
217
|
return true;
|
207
218
|
}
|
@@ -193,7 +193,7 @@ HarmonyExportExpressionDependency.Template = class HarmonyExportDependencyTempla
|
|
193
193
|
source.replace(
|
194
194
|
dep.rangeStatement[0],
|
195
195
|
dep.range[0] - 1,
|
196
|
-
content
|
196
|
+
`${content}(${dep.prefix}`
|
197
197
|
);
|
198
198
|
source.replace(dep.range[1], dep.rangeStatement[1] - 0.5, ");");
|
199
199
|
return;
|