webpack 5.103.0 → 5.104.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/hot/dev-server.js +18 -3
- package/hot/emitter-event-target.js +7 -0
- package/hot/lazy-compilation-node.js +45 -29
- package/hot/lazy-compilation-universal.js +18 -0
- package/hot/lazy-compilation-web.js +15 -5
- package/hot/load-http.js +7 -0
- package/hot/only-dev-server.js +19 -4
- package/lib/APIPlugin.js +6 -0
- package/lib/Chunk.js +1 -1
- package/lib/ChunkGraph.js +9 -7
- package/lib/ChunkGroup.js +8 -5
- package/lib/CleanPlugin.js +6 -3
- package/lib/CodeGenerationResults.js +2 -1
- package/lib/CompatibilityPlugin.js +3 -0
- package/lib/Compilation.js +33 -19
- package/lib/Compiler.js +3 -3
- package/lib/ContextModule.js +6 -3
- package/lib/ContextModuleFactory.js +6 -4
- package/lib/DefinePlugin.js +34 -3
- package/lib/DelegatedModule.js +7 -4
- package/lib/DllModule.js +6 -3
- package/lib/DotenvPlugin.js +11 -6
- package/lib/ExportsInfo.js +5 -5
- package/lib/ExternalModule.js +8 -7
- package/lib/ExternalModuleFactoryPlugin.js +1 -1
- package/lib/FileSystemInfo.js +1 -1
- package/lib/Generator.js +10 -7
- package/lib/HookWebpackError.js +33 -4
- package/lib/HotModuleReplacementPlugin.js +22 -0
- package/lib/ManifestPlugin.js +1 -1
- package/lib/Module.js +24 -15
- package/lib/ModuleBuildError.js +1 -1
- package/lib/ModuleError.js +1 -1
- package/lib/ModuleFilenameHelpers.js +1 -1
- package/lib/ModuleGraph.js +27 -12
- package/lib/ModuleGraphConnection.js +2 -2
- package/lib/ModuleSourceTypeConstants.js +189 -0
- package/lib/ModuleTypeConstants.js +1 -4
- package/lib/ModuleWarning.js +1 -1
- package/lib/NodeStuffPlugin.js +52 -42
- package/lib/NormalModule.js +6 -4
- package/lib/NormalModuleFactory.js +7 -10
- package/lib/Parser.js +1 -1
- package/lib/RawModule.js +7 -4
- package/lib/RuntimeModule.js +1 -1
- package/lib/RuntimeTemplate.js +5 -1
- package/lib/SizeFormatHelpers.js +1 -1
- package/lib/SourceMapDevToolPlugin.js +6 -1
- package/lib/Template.js +17 -6
- package/lib/TemplatedPathPlugin.js +5 -6
- package/lib/WebpackError.js +0 -1
- package/lib/WebpackOptionsApply.js +37 -9
- package/lib/asset/AssetBytesGenerator.js +15 -11
- package/lib/asset/AssetGenerator.js +30 -24
- package/lib/asset/AssetSourceGenerator.js +15 -11
- package/lib/asset/RawDataUrlModule.js +6 -3
- package/lib/buildChunkGraph.js +4 -2
- package/lib/cache/PackFileCacheStrategy.js +6 -5
- package/lib/cli.js +2 -43
- package/lib/config/browserslistTargetHandler.js +19 -0
- package/lib/config/defaults.js +128 -43
- package/lib/config/normalization.js +2 -2
- package/lib/config/target.js +5 -0
- package/lib/container/ContainerEntryModule.js +6 -3
- package/lib/container/FallbackModule.js +6 -3
- package/lib/container/RemoteModule.js +1 -3
- package/lib/css/CssGenerator.js +26 -24
- package/lib/css/CssLoadingRuntimeModule.js +12 -4
- package/lib/css/CssModulesPlugin.js +29 -74
- package/lib/css/CssParser.js +828 -341
- package/lib/css/walkCssTokens.js +33 -13
- package/lib/dependencies/CachedConstDependency.js +24 -10
- package/lib/dependencies/CommonJsRequireContextDependency.js +1 -1
- package/lib/dependencies/ContextDependencyHelpers.js +2 -2
- package/lib/dependencies/ContextDependencyTemplateAsRequireCall.js +3 -1
- package/lib/dependencies/CssIcssExportDependency.js +242 -104
- package/lib/dependencies/CssIcssImportDependency.js +61 -4
- package/lib/dependencies/CssIcssSymbolDependency.js +2 -6
- package/lib/dependencies/CssImportDependency.js +2 -1
- package/lib/dependencies/CssUrlDependency.js +3 -2
- package/lib/dependencies/DynamicExports.js +7 -7
- package/lib/dependencies/ExternalModuleDependency.js +7 -4
- package/lib/dependencies/ExternalModuleInitFragment.js +2 -1
- package/lib/dependencies/ExternalModuleInitFragmentDependency.js +2 -1
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +3 -2
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +6 -4
- package/lib/dependencies/HarmonyExports.js +4 -4
- package/lib/dependencies/HarmonyImportDependency.js +8 -3
- package/lib/dependencies/ImportMetaContextDependencyParserPlugin.js +1 -1
- package/lib/dependencies/ImportMetaPlugin.js +57 -0
- package/lib/dependencies/ImportParserPlugin.js +2 -2
- package/lib/dependencies/LocalModulesHelpers.js +3 -3
- package/lib/dependencies/WorkerPlugin.js +2 -2
- package/lib/dependencies/getFunctionExpression.js +1 -1
- package/lib/esm/ModuleChunkFormatPlugin.js +5 -4
- package/lib/hmr/HotModuleReplacement.runtime.js +2 -1
- package/lib/hmr/LazyCompilationPlugin.js +4 -3
- package/lib/ids/IdHelpers.js +16 -7
- package/lib/javascript/ChunkHelpers.js +1 -1
- package/lib/javascript/JavascriptGenerator.js +4 -3
- package/lib/javascript/JavascriptModulesPlugin.js +57 -24
- package/lib/javascript/JavascriptParser.js +19 -6
- package/lib/json/JsonGenerator.js +5 -4
- package/lib/json/JsonParser.js +2 -1
- package/lib/library/AbstractLibraryPlugin.js +1 -1
- package/lib/library/AmdLibraryPlugin.js +4 -1
- package/lib/library/ExportPropertyLibraryPlugin.js +4 -1
- package/lib/library/ModuleLibraryPlugin.js +41 -13
- package/lib/library/SystemLibraryPlugin.js +4 -1
- package/lib/library/UmdLibraryPlugin.js +1 -1
- package/lib/logging/Logger.js +5 -4
- package/lib/logging/createConsoleLogger.js +2 -2
- package/lib/optimize/ConcatenatedModule.js +47 -32
- package/lib/optimize/ModuleConcatenationPlugin.js +5 -4
- package/lib/optimize/SideEffectsFlagPlugin.js +3 -2
- package/lib/optimize/SplitChunksPlugin.js +60 -46
- package/lib/rules/RuleSetCompiler.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +3 -2
- package/lib/schemes/HttpUriPlugin.js +97 -10
- package/lib/serialization/AggregateErrorSerializer.js +1 -2
- package/lib/serialization/ObjectMiddleware.js +0 -2
- package/lib/serialization/SingleItemMiddleware.js +1 -1
- package/lib/sharing/ConsumeSharedModule.js +1 -1
- package/lib/sharing/ConsumeSharedPlugin.js +5 -3
- package/lib/sharing/ProvideSharedModule.js +1 -1
- package/lib/sharing/resolveMatchedConfigs.js +15 -9
- package/lib/sharing/utils.js +1 -1
- package/lib/stats/DefaultStatsFactoryPlugin.js +8 -5
- package/lib/stats/DefaultStatsPresetPlugin.js +1 -1
- package/lib/stats/DefaultStatsPrinterPlugin.js +1 -1
- package/lib/util/StringXor.js +1 -1
- package/lib/util/URLAbsoluteSpecifier.js +2 -2
- package/lib/util/binarySearchBounds.js +2 -2
- package/lib/util/comparators.js +53 -76
- package/lib/util/compileBooleanMatcher.js +78 -6
- package/lib/util/createHash.js +20 -199
- package/lib/util/deprecation.js +1 -1
- package/lib/util/deterministicGrouping.js +6 -3
- package/lib/util/fs.js +75 -75
- package/lib/util/hash/BatchedHash.js +10 -9
- package/lib/util/hash/BulkUpdateHash.js +138 -0
- package/lib/util/hash/DebugHash.js +75 -0
- package/lib/util/hash/hash-digest.js +216 -0
- package/lib/util/identifier.js +82 -17
- package/lib/util/internalSerializables.js +2 -6
- package/lib/util/runtime.js +3 -3
- package/lib/util/source.js +2 -2
- package/lib/wasm-async/AsyncWebAssemblyGenerator.js +3 -2
- package/lib/wasm-async/AsyncWebAssemblyJavascriptGenerator.js +3 -2
- package/lib/wasm-sync/WebAssemblyGenerator.js +9 -6
- package/lib/wasm-sync/WebAssemblyJavascriptGenerator.js +3 -2
- package/lib/wasm-sync/WebAssemblyModulesPlugin.js +6 -2
- package/lib/webpack.js +1 -1
- package/package.json +30 -25
- package/schemas/WebpackOptions.check.js +1 -1
- package/schemas/WebpackOptions.json +59 -82
- package/schemas/plugins/css/CssModuleGeneratorOptions.check.js +1 -1
- package/schemas/plugins/css/CssModuleParserOptions.check.js +1 -1
- package/types.d.ts +225 -158
- package/lib/ModuleSourceTypesConstants.js +0 -117
- package/lib/dependencies/CssIcssFromIdentifierDependency.js +0 -124
- package/lib/dependencies/CssIcssGlobalIdentifierDependency.js +0 -48
- package/lib/dependencies/CssIcssLocalIdentifierDependency.js +0 -61
- package/lib/dependencies/CssIcssSelfLocalIdentifierDependency.js +0 -190
- package/lib/util/jsonParseEvenBetterErrors.js +0 -10
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssAutoParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssAutoParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssAutoParserOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssGlobalGeneratorOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalGeneratorOptions.json +0 -3
- package/schemas/plugins/css/CssGlobalParserOptions.check.d.ts +0 -7
- package/schemas/plugins/css/CssGlobalParserOptions.check.js +0 -6
- package/schemas/plugins/css/CssGlobalParserOptions.json +0 -3
package/lib/config/defaults.js
CHANGED
|
@@ -7,6 +7,11 @@
|
|
|
7
7
|
|
|
8
8
|
const fs = require("fs");
|
|
9
9
|
const path = require("path");
|
|
10
|
+
const {
|
|
11
|
+
CSS_TYPE,
|
|
12
|
+
JAVASCRIPT_TYPE,
|
|
13
|
+
UNKNOWN_TYPE
|
|
14
|
+
} = require("../ModuleSourceTypeConstants");
|
|
10
15
|
const {
|
|
11
16
|
ASSET_MODULE_TYPE,
|
|
12
17
|
ASSET_MODULE_TYPE_BYTES,
|
|
@@ -52,6 +57,9 @@ const {
|
|
|
52
57
|
/** @typedef {import("../../declarations/WebpackOptions").LibraryType} LibraryType */
|
|
53
58
|
/** @typedef {import("../../declarations/WebpackOptions").Loader} Loader */
|
|
54
59
|
/** @typedef {import("../../declarations/WebpackOptions").Mode} Mode */
|
|
60
|
+
/** @typedef {import("../../declarations/WebpackOptions").HashSalt} HashSalt */
|
|
61
|
+
/** @typedef {import("../../declarations/WebpackOptions").HashSalt} HashDigest */
|
|
62
|
+
/** @typedef {import("../../declarations/WebpackOptions").HashDigestLength} HashDigestLength */
|
|
55
63
|
/** @typedef {import("../../declarations/WebpackOptions").ModuleOptionsNormalized} ModuleOptions */
|
|
56
64
|
/** @typedef {import("../../declarations/WebpackOptions").Node} WebpackNode */
|
|
57
65
|
/** @typedef {import("../../declarations/WebpackOptions").OptimizationNormalized} Optimization */
|
|
@@ -390,6 +398,15 @@ const applyWebpackOptionsDefaults = (options, compilerIndex) => {
|
|
|
390
398
|
|
|
391
399
|
applyModuleDefaults(options.module, {
|
|
392
400
|
cache,
|
|
401
|
+
hashSalt: /** @type {NonNullable<Output["hashSalt"]>} */ (
|
|
402
|
+
options.output.hashSalt
|
|
403
|
+
),
|
|
404
|
+
hashDigest: /** @type {NonNullable<Output["hashDigest"]>} */ (
|
|
405
|
+
options.output.hashDigest
|
|
406
|
+
),
|
|
407
|
+
hashDigestLength: /** @type {NonNullable<Output["hashDigestLength"]>} */ (
|
|
408
|
+
options.output.hashDigestLength
|
|
409
|
+
),
|
|
393
410
|
syncWebAssembly:
|
|
394
411
|
/** @type {NonNullable<ExperimentsNormalized["syncWebAssembly"]>} */
|
|
395
412
|
(options.experiments.syncWebAssembly),
|
|
@@ -766,11 +783,17 @@ const applyCssGeneratorOptionsDefaults = (
|
|
|
766
783
|
* @param {boolean} options.deferImport is defer import enabled
|
|
767
784
|
* @param {TargetProperties | false} options.targetProperties target properties
|
|
768
785
|
* @param {Mode | undefined} options.mode mode
|
|
786
|
+
* @param {HashSalt} options.hashSalt hash salt
|
|
787
|
+
* @param {HashDigest} options.hashDigest hash digest
|
|
788
|
+
* @param {HashDigestLength} options.hashDigestLength hash digest length
|
|
769
789
|
* @returns {void}
|
|
770
790
|
*/
|
|
771
791
|
const applyModuleDefaults = (
|
|
772
792
|
module,
|
|
773
793
|
{
|
|
794
|
+
hashSalt,
|
|
795
|
+
hashDigest,
|
|
796
|
+
hashDigestLength,
|
|
774
797
|
cache,
|
|
775
798
|
syncWebAssembly,
|
|
776
799
|
asyncWebAssembly,
|
|
@@ -871,6 +894,51 @@ const applyModuleDefaults = (
|
|
|
871
894
|
true
|
|
872
895
|
);
|
|
873
896
|
|
|
897
|
+
for (const type of [
|
|
898
|
+
CSS_MODULE_TYPE_AUTO,
|
|
899
|
+
CSS_MODULE_TYPE_MODULE,
|
|
900
|
+
CSS_MODULE_TYPE_GLOBAL
|
|
901
|
+
]) {
|
|
902
|
+
F(module.parser, type, () => ({}));
|
|
903
|
+
|
|
904
|
+
D(
|
|
905
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
906
|
+
(module.parser[type]),
|
|
907
|
+
"animation",
|
|
908
|
+
true
|
|
909
|
+
);
|
|
910
|
+
D(
|
|
911
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
912
|
+
(module.parser[type]),
|
|
913
|
+
"container",
|
|
914
|
+
true
|
|
915
|
+
);
|
|
916
|
+
D(
|
|
917
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
918
|
+
(module.parser[type]),
|
|
919
|
+
"customIdents",
|
|
920
|
+
true
|
|
921
|
+
);
|
|
922
|
+
D(
|
|
923
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
924
|
+
(module.parser[type]),
|
|
925
|
+
"dashedIdents",
|
|
926
|
+
true
|
|
927
|
+
);
|
|
928
|
+
D(
|
|
929
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
930
|
+
(module.parser[type]),
|
|
931
|
+
"function",
|
|
932
|
+
true
|
|
933
|
+
);
|
|
934
|
+
D(
|
|
935
|
+
/** @type {NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<ParserOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
936
|
+
(module.parser[type]),
|
|
937
|
+
"grid",
|
|
938
|
+
true
|
|
939
|
+
);
|
|
940
|
+
}
|
|
941
|
+
|
|
874
942
|
F(module.generator, CSS_MODULE_TYPE, () => ({}));
|
|
875
943
|
|
|
876
944
|
applyCssGeneratorOptionsDefaults(
|
|
@@ -880,49 +948,58 @@ const applyModuleDefaults = (
|
|
|
880
948
|
);
|
|
881
949
|
|
|
882
950
|
const localIdentName =
|
|
883
|
-
|
|
951
|
+
mode === "development"
|
|
952
|
+
? uniqueName.length > 0
|
|
953
|
+
? "[uniqueName]-[id]-[local]"
|
|
954
|
+
: "[id]-[local]"
|
|
955
|
+
: "[fullhash]";
|
|
956
|
+
const localIdentHashSalt = hashSalt;
|
|
957
|
+
const localIdentHashDigest = "base64url";
|
|
958
|
+
const localIdentHashDigestLength = 6;
|
|
959
|
+
const exportsConvention = "as-is";
|
|
960
|
+
|
|
961
|
+
for (const type of [
|
|
962
|
+
CSS_MODULE_TYPE_AUTO,
|
|
963
|
+
CSS_MODULE_TYPE_MODULE,
|
|
964
|
+
CSS_MODULE_TYPE_GLOBAL
|
|
965
|
+
]) {
|
|
966
|
+
F(module.generator, type, () => ({}));
|
|
884
967
|
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
);
|
|
892
|
-
D(
|
|
893
|
-
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]>} */
|
|
894
|
-
(module.generator[CSS_MODULE_TYPE_AUTO]),
|
|
895
|
-
"exportsConvention",
|
|
896
|
-
"as-is"
|
|
897
|
-
);
|
|
968
|
+
D(
|
|
969
|
+
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
970
|
+
(module.generator[type]),
|
|
971
|
+
"localIdentName",
|
|
972
|
+
localIdentName
|
|
973
|
+
);
|
|
898
974
|
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
);
|
|
906
|
-
D(
|
|
907
|
-
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]>} */
|
|
908
|
-
(module.generator[CSS_MODULE_TYPE_MODULE]),
|
|
909
|
-
"exportsConvention",
|
|
910
|
-
"as-is"
|
|
911
|
-
);
|
|
975
|
+
D(
|
|
976
|
+
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
977
|
+
(module.generator[type]),
|
|
978
|
+
"localIdentHashSalt",
|
|
979
|
+
localIdentHashSalt
|
|
980
|
+
);
|
|
912
981
|
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
982
|
+
D(
|
|
983
|
+
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]>} */
|
|
984
|
+
(module.generator[type]),
|
|
985
|
+
"localIdentHashDigest",
|
|
986
|
+
localIdentHashDigest
|
|
987
|
+
);
|
|
988
|
+
|
|
989
|
+
D(
|
|
990
|
+
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]>} */
|
|
991
|
+
(module.generator[type]),
|
|
992
|
+
"localIdentHashDigestLength",
|
|
993
|
+
localIdentHashDigestLength
|
|
994
|
+
);
|
|
995
|
+
|
|
996
|
+
D(
|
|
997
|
+
/** @type {NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_AUTO]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_MODULE]> | NonNullable<GeneratorOptionsByModuleTypeKnown[CSS_MODULE_TYPE_GLOBAL]>} */
|
|
998
|
+
(module.generator[type]),
|
|
999
|
+
"exportsConvention",
|
|
1000
|
+
exportsConvention
|
|
1001
|
+
);
|
|
1002
|
+
}
|
|
926
1003
|
}
|
|
927
1004
|
|
|
928
1005
|
A(module, "defaultRules", () => {
|
|
@@ -1218,6 +1295,12 @@ const applyOutputDefaults = (
|
|
|
1218
1295
|
"const",
|
|
1219
1296
|
() => tp && optimistic(/** @type {boolean | undefined} */ (tp.const))
|
|
1220
1297
|
);
|
|
1298
|
+
F(
|
|
1299
|
+
environment,
|
|
1300
|
+
"methodShorthand",
|
|
1301
|
+
() =>
|
|
1302
|
+
tp && optimistic(/** @type {boolean | undefined} */ (tp.methodShorthand))
|
|
1303
|
+
);
|
|
1221
1304
|
F(
|
|
1222
1305
|
environment,
|
|
1223
1306
|
"arrowFunction",
|
|
@@ -1331,7 +1414,7 @@ const applyOutputDefaults = (
|
|
|
1331
1414
|
}
|
|
1332
1415
|
return "[id].css";
|
|
1333
1416
|
});
|
|
1334
|
-
D(output, "assetModuleFilename", "[hash][ext][query]");
|
|
1417
|
+
D(output, "assetModuleFilename", "[hash][ext][query][fragment]");
|
|
1335
1418
|
D(output, "webassemblyModuleFilename", "[hash].module.wasm");
|
|
1336
1419
|
D(output, "compareBeforeEmit", true);
|
|
1337
1420
|
D(output, "charset", !futureDefaults);
|
|
@@ -1516,7 +1599,7 @@ const applyOutputDefaults = (
|
|
|
1516
1599
|
*/
|
|
1517
1600
|
const forEachEntry = (fn) => {
|
|
1518
1601
|
for (const name of Object.keys(entry)) {
|
|
1519
|
-
fn(/** @type {{[k: string]
|
|
1602
|
+
fn(/** @type {{ [k: string]: EntryDescription }} */ (entry)[name]);
|
|
1520
1603
|
}
|
|
1521
1604
|
};
|
|
1522
1605
|
A(output, "enabledLibraryTypes", () => {
|
|
@@ -1792,7 +1875,9 @@ const applyOptimizationDefaults = (
|
|
|
1792
1875
|
const { splitChunks } = optimization;
|
|
1793
1876
|
if (splitChunks) {
|
|
1794
1877
|
A(splitChunks, "defaultSizeTypes", () =>
|
|
1795
|
-
css
|
|
1878
|
+
css
|
|
1879
|
+
? [JAVASCRIPT_TYPE, CSS_TYPE, UNKNOWN_TYPE]
|
|
1880
|
+
: [JAVASCRIPT_TYPE, UNKNOWN_TYPE]
|
|
1796
1881
|
);
|
|
1797
1882
|
D(splitChunks, "hidePathInfo", production);
|
|
1798
1883
|
D(splitChunks, "chunks", "async");
|
|
@@ -54,7 +54,7 @@ const nestedConfig = (value, fn) =>
|
|
|
54
54
|
|
|
55
55
|
/**
|
|
56
56
|
* @template T
|
|
57
|
-
* @param {T|undefined} value value or not
|
|
57
|
+
* @param {T | undefined} value value or not
|
|
58
58
|
* @returns {T} result value
|
|
59
59
|
*/
|
|
60
60
|
const cloneObject = (value) => /** @type {T} */ ({ ...value });
|
|
@@ -90,7 +90,7 @@ const optionalNestedArray = (value, fn) =>
|
|
|
90
90
|
/**
|
|
91
91
|
* @template T
|
|
92
92
|
* @template R
|
|
93
|
-
* @param {Record<string, T
|
|
93
|
+
* @param {Record<string, T> | undefined} value value or not
|
|
94
94
|
* @param {(value: T) => R} fn nested handler
|
|
95
95
|
* @param {Record<string, (value: T) => R>=} customKeys custom nested handler for some keys
|
|
96
96
|
* @returns {Record<string, R>} result value
|
package/lib/config/target.js
CHANGED
|
@@ -55,6 +55,7 @@ const getDefaultTarget = (context) => {
|
|
|
55
55
|
* @property {boolean | null} globalThis has globalThis variable available
|
|
56
56
|
* @property {boolean | null} bigIntLiteral big int literal syntax is available
|
|
57
57
|
* @property {boolean | null} const const and let variable declarations are available
|
|
58
|
+
* @property {boolean | null} methodShorthand object method shorthand is available
|
|
58
59
|
* @property {boolean | null} arrowFunction arrow functions are available
|
|
59
60
|
* @property {boolean | null} forOf for of iteration is available
|
|
60
61
|
* @property {boolean | null} destructuring destructuring is available
|
|
@@ -192,6 +193,7 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
|
192
193
|
const: v(6),
|
|
193
194
|
templateLiteral: v(4),
|
|
194
195
|
optionalChaining: v(14),
|
|
196
|
+
methodShorthand: v(4),
|
|
195
197
|
arrowFunction: v(6),
|
|
196
198
|
asyncFunction: v(7, 6),
|
|
197
199
|
forOf: v(5),
|
|
@@ -240,6 +242,7 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
|
240
242
|
const: v(1, 1),
|
|
241
243
|
templateLiteral: v(1, 1),
|
|
242
244
|
optionalChaining: v(8),
|
|
245
|
+
methodShorthand: v(1, 1),
|
|
243
246
|
arrowFunction: v(1, 1),
|
|
244
247
|
asyncFunction: v(1, 7),
|
|
245
248
|
forOf: v(0, 36),
|
|
@@ -278,6 +281,7 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
|
278
281
|
const: v(0, 15),
|
|
279
282
|
templateLiteral: v(0, 13),
|
|
280
283
|
optionalChaining: v(0, 44),
|
|
284
|
+
methodShorthand: v(0, 15),
|
|
281
285
|
arrowFunction: v(0, 15),
|
|
282
286
|
asyncFunction: v(0, 21),
|
|
283
287
|
forOf: v(0, 13),
|
|
@@ -300,6 +304,7 @@ You can also more options via the 'target' option: 'browserslist' / 'browserslis
|
|
|
300
304
|
const: v >= 2015,
|
|
301
305
|
templateLiteral: v >= 2015,
|
|
302
306
|
optionalChaining: v >= 2020,
|
|
307
|
+
methodShorthand: v >= 2015,
|
|
303
308
|
arrowFunction: v >= 2015,
|
|
304
309
|
forOf: v >= 2015,
|
|
305
310
|
destructuring: v >= 2015,
|
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
const { OriginalSource, RawSource } = require("webpack-sources");
|
|
9
9
|
const AsyncDependenciesBlock = require("../AsyncDependenciesBlock");
|
|
10
10
|
const Module = require("../Module");
|
|
11
|
-
const {
|
|
11
|
+
const {
|
|
12
|
+
JAVASCRIPT_TYPE,
|
|
13
|
+
JAVASCRIPT_TYPES
|
|
14
|
+
} = require("../ModuleSourceTypeConstants");
|
|
12
15
|
const { JAVASCRIPT_MODULE_TYPE_DYNAMIC } = require("../ModuleTypeConstants");
|
|
13
16
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
14
17
|
const Template = require("../Template");
|
|
@@ -57,7 +60,7 @@ class ContainerEntryModule extends Module {
|
|
|
57
60
|
* @returns {SourceTypes} types available (do not mutate)
|
|
58
61
|
*/
|
|
59
62
|
getSourceTypes() {
|
|
60
|
-
return
|
|
63
|
+
return JAVASCRIPT_TYPES;
|
|
61
64
|
}
|
|
62
65
|
|
|
63
66
|
/**
|
|
@@ -242,7 +245,7 @@ class ContainerEntryModule extends Module {
|
|
|
242
245
|
]);
|
|
243
246
|
|
|
244
247
|
sources.set(
|
|
245
|
-
|
|
248
|
+
JAVASCRIPT_TYPE,
|
|
246
249
|
this.useSourceMap || this.useSimpleSourceMap
|
|
247
250
|
? new OriginalSource(source, "webpack/container-entry")
|
|
248
251
|
: new RawSource(source)
|
|
@@ -7,7 +7,10 @@
|
|
|
7
7
|
|
|
8
8
|
const { RawSource } = require("webpack-sources");
|
|
9
9
|
const Module = require("../Module");
|
|
10
|
-
const {
|
|
10
|
+
const {
|
|
11
|
+
JAVASCRIPT_TYPE,
|
|
12
|
+
JAVASCRIPT_TYPES
|
|
13
|
+
} = require("../ModuleSourceTypeConstants");
|
|
11
14
|
const { WEBPACK_MODULE_TYPE_FALLBACK } = require("../ModuleTypeConstants");
|
|
12
15
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
13
16
|
const Template = require("../Template");
|
|
@@ -122,7 +125,7 @@ class FallbackModule extends Module {
|
|
|
122
125
|
* @returns {SourceTypes} types available (do not mutate)
|
|
123
126
|
*/
|
|
124
127
|
getSourceTypes() {
|
|
125
|
-
return
|
|
128
|
+
return JAVASCRIPT_TYPES;
|
|
126
129
|
}
|
|
127
130
|
|
|
128
131
|
/**
|
|
@@ -156,7 +159,7 @@ class FallbackModule extends Module {
|
|
|
156
159
|
"module.exports = loop();"
|
|
157
160
|
]);
|
|
158
161
|
const sources = new Map();
|
|
159
|
-
sources.set(
|
|
162
|
+
sources.set(JAVASCRIPT_TYPE, new RawSource(code));
|
|
160
163
|
return { sources, runtimeRequirements: RUNTIME_REQUIREMENTS };
|
|
161
164
|
}
|
|
162
165
|
|
|
@@ -7,9 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
const { RawSource } = require("webpack-sources");
|
|
9
9
|
const Module = require("../Module");
|
|
10
|
-
const {
|
|
11
|
-
REMOTE_AND_SHARE_INIT_TYPES
|
|
12
|
-
} = require("../ModuleSourceTypesConstants");
|
|
10
|
+
const { REMOTE_AND_SHARE_INIT_TYPES } = require("../ModuleSourceTypeConstants");
|
|
13
11
|
const { WEBPACK_MODULE_TYPE_REMOTE } = require("../ModuleTypeConstants");
|
|
14
12
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
15
13
|
const makeSerializable = require("../util/makeSerializable");
|
package/lib/css/CssGenerator.js
CHANGED
|
@@ -12,10 +12,10 @@ const InitFragment = require("../InitFragment");
|
|
|
12
12
|
const {
|
|
13
13
|
CSS_TYPE,
|
|
14
14
|
CSS_TYPES,
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
} = require("../
|
|
15
|
+
JAVASCRIPT_AND_CSS_TYPES,
|
|
16
|
+
JAVASCRIPT_TYPE,
|
|
17
|
+
JAVASCRIPT_TYPES
|
|
18
|
+
} = require("../ModuleSourceTypeConstants");
|
|
19
19
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
20
20
|
const Template = require("../Template");
|
|
21
21
|
const CssImportDependency = require("../dependencies/CssImportDependency");
|
|
@@ -23,8 +23,6 @@ const { getUndoPath } = require("../util/identifier");
|
|
|
23
23
|
const memoize = require("../util/memoize");
|
|
24
24
|
|
|
25
25
|
/** @typedef {import("webpack-sources").Source} Source */
|
|
26
|
-
/** @typedef {import("../../declarations/WebpackOptions").CssAutoGeneratorOptions} CssAutoGeneratorOptions */
|
|
27
|
-
/** @typedef {import("../../declarations/WebpackOptions").CssGlobalGeneratorOptions} CssGlobalGeneratorOptions */
|
|
28
26
|
/** @typedef {import("../../declarations/WebpackOptions").CssModuleGeneratorOptions} CssModuleGeneratorOptions */
|
|
29
27
|
/** @typedef {import("../Compilation").DependencyConstructor} DependencyConstructor */
|
|
30
28
|
/** @typedef {import("../CodeGenerationResults")} CodeGenerationResults */
|
|
@@ -36,6 +34,7 @@ const memoize = require("../util/memoize");
|
|
|
36
34
|
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
|
37
35
|
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
|
38
36
|
/** @typedef {import("../Module").ConcatenationBailoutReasonContext} ConcatenationBailoutReasonContext */
|
|
37
|
+
/** @typedef {import("../Module").SourceType} SourceType */
|
|
39
38
|
/** @typedef {import("../Module").SourceTypes} SourceTypes */
|
|
40
39
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
|
41
40
|
/** @typedef {import("../NormalModule")} NormalModule */
|
|
@@ -51,13 +50,12 @@ const getCssModulesPlugin = memoize(() => require("./CssModulesPlugin"));
|
|
|
51
50
|
|
|
52
51
|
class CssGenerator extends Generator {
|
|
53
52
|
/**
|
|
54
|
-
* @param {
|
|
53
|
+
* @param {CssModuleGeneratorOptions} options options
|
|
55
54
|
* @param {ModuleGraph} moduleGraph the module graph
|
|
56
55
|
*/
|
|
57
56
|
constructor(options, moduleGraph) {
|
|
58
57
|
super();
|
|
59
|
-
this.
|
|
60
|
-
this.localIdentName = options.localIdentName;
|
|
58
|
+
this.options = options;
|
|
61
59
|
this._exportsOnly = options.exportsOnly;
|
|
62
60
|
this._esModule = options.esModule;
|
|
63
61
|
this._moduleGraph = moduleGraph;
|
|
@@ -127,7 +125,7 @@ class CssGenerator extends Generator {
|
|
|
127
125
|
const moduleSourceContent = /** @type {Source} */ (
|
|
128
126
|
this.generate(module, {
|
|
129
127
|
...generateContext,
|
|
130
|
-
type:
|
|
128
|
+
type: CSS_TYPE
|
|
131
129
|
})
|
|
132
130
|
);
|
|
133
131
|
|
|
@@ -266,7 +264,7 @@ class CssGenerator extends Generator {
|
|
|
266
264
|
generate(module, generateContext) {
|
|
267
265
|
const exportType = /** @type {BuildMeta} */ (module.buildMeta).exportType;
|
|
268
266
|
const source =
|
|
269
|
-
generateContext.type ===
|
|
267
|
+
generateContext.type === JAVASCRIPT_TYPE
|
|
270
268
|
? exportType === "link"
|
|
271
269
|
? new ReplaceSource(new RawSource(""))
|
|
272
270
|
: new ReplaceSource(/** @type {Source} */ (module.originalSource()))
|
|
@@ -330,7 +328,7 @@ class CssGenerator extends Generator {
|
|
|
330
328
|
};
|
|
331
329
|
|
|
332
330
|
switch (generateContext.type) {
|
|
333
|
-
case
|
|
331
|
+
case JAVASCRIPT_TYPE: {
|
|
334
332
|
const isCSSModule = /** @type {BuildMeta} */ (module.buildMeta)
|
|
335
333
|
.isCSSModule;
|
|
336
334
|
const defaultExport = generateJSDefaultExport();
|
|
@@ -374,14 +372,15 @@ class CssGenerator extends Generator {
|
|
|
374
372
|
if (!usedName) {
|
|
375
373
|
continue;
|
|
376
374
|
}
|
|
377
|
-
let identifier = Template.toIdentifier(usedName);
|
|
378
375
|
|
|
376
|
+
let identifier = Template.toIdentifier(usedName);
|
|
379
377
|
if (RESERVED_IDENTIFIER.has(identifier)) {
|
|
380
378
|
identifier = `_${identifier}`;
|
|
381
379
|
}
|
|
382
|
-
|
|
380
|
+
let i = 0;
|
|
383
381
|
while (usedIdentifiers.has(identifier)) {
|
|
384
382
|
identifier = Template.toIdentifier(name + i);
|
|
383
|
+
i += 1;
|
|
385
384
|
}
|
|
386
385
|
usedIdentifiers.add(identifier);
|
|
387
386
|
generateContext.concatenationScope.registerExport(name, identifier);
|
|
@@ -428,7 +427,7 @@ class CssGenerator extends Generator {
|
|
|
428
427
|
}.exports = {\n${exports.join(",\n")}\n}${needNsObj ? ")" : ""};`
|
|
429
428
|
);
|
|
430
429
|
}
|
|
431
|
-
case
|
|
430
|
+
case CSS_TYPE: {
|
|
432
431
|
if (!this._generatesJsOnly(module)) {
|
|
433
432
|
generateContext.runtimeRequirements.add(RuntimeGlobals.hasCssModules);
|
|
434
433
|
}
|
|
@@ -448,12 +447,12 @@ class CssGenerator extends Generator {
|
|
|
448
447
|
*/
|
|
449
448
|
generateError(error, module, generateContext) {
|
|
450
449
|
switch (generateContext.type) {
|
|
451
|
-
case
|
|
450
|
+
case JAVASCRIPT_TYPE: {
|
|
452
451
|
return new RawSource(
|
|
453
452
|
`throw new Error(${JSON.stringify(error.message)});`
|
|
454
453
|
);
|
|
455
454
|
}
|
|
456
|
-
case
|
|
455
|
+
case CSS_TYPE: {
|
|
457
456
|
return new RawSource(`/**\n ${error.message} \n**/`);
|
|
458
457
|
}
|
|
459
458
|
default:
|
|
@@ -467,32 +466,35 @@ class CssGenerator extends Generator {
|
|
|
467
466
|
*/
|
|
468
467
|
getTypes(module) {
|
|
469
468
|
if (this._generatesJsOnly(module)) {
|
|
470
|
-
return
|
|
469
|
+
return JAVASCRIPT_TYPES;
|
|
471
470
|
}
|
|
472
471
|
const sourceTypes = new Set();
|
|
473
472
|
const connections = this._moduleGraph.getIncomingConnections(module);
|
|
474
473
|
for (const connection of connections) {
|
|
474
|
+
if (connection.dependency instanceof CssImportDependency) {
|
|
475
|
+
continue;
|
|
476
|
+
}
|
|
475
477
|
if (!connection.originModule) {
|
|
476
478
|
continue;
|
|
477
479
|
}
|
|
478
480
|
if (connection.originModule.type.split("/")[0] !== CSS_TYPE) {
|
|
479
|
-
sourceTypes.add(
|
|
481
|
+
sourceTypes.add(JAVASCRIPT_TYPE);
|
|
480
482
|
}
|
|
481
483
|
}
|
|
482
|
-
if (sourceTypes.has(
|
|
483
|
-
return
|
|
484
|
+
if (sourceTypes.has(JAVASCRIPT_TYPE)) {
|
|
485
|
+
return JAVASCRIPT_AND_CSS_TYPES;
|
|
484
486
|
}
|
|
485
487
|
return CSS_TYPES;
|
|
486
488
|
}
|
|
487
489
|
|
|
488
490
|
/**
|
|
489
491
|
* @param {NormalModule} module the module
|
|
490
|
-
* @param {
|
|
492
|
+
* @param {SourceType=} type source type
|
|
491
493
|
* @returns {number} estimate size of the module
|
|
492
494
|
*/
|
|
493
495
|
getSize(module, type) {
|
|
494
496
|
switch (type) {
|
|
495
|
-
case
|
|
497
|
+
case JAVASCRIPT_TYPE: {
|
|
496
498
|
const cssData = /** @type {BuildInfo} */ (module.buildInfo).cssData;
|
|
497
499
|
if (!cssData) {
|
|
498
500
|
return 42;
|
|
@@ -513,7 +515,7 @@ class CssGenerator extends Generator {
|
|
|
513
515
|
|
|
514
516
|
return stringifiedExports.length + 42;
|
|
515
517
|
}
|
|
516
|
-
case
|
|
518
|
+
case CSS_TYPE: {
|
|
517
519
|
const originalSource = module.originalSource();
|
|
518
520
|
|
|
519
521
|
if (!originalSource) {
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
const { SyncWaterfallHook } = require("tapable");
|
|
9
9
|
const Compilation = require("../Compilation");
|
|
10
|
+
const { CSS_TYPE } = require("../ModuleSourceTypeConstants");
|
|
10
11
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
|
11
12
|
const RuntimeModule = require("../RuntimeModule");
|
|
12
13
|
const Template = require("../Template");
|
|
@@ -86,7 +87,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
86
87
|
* @returns {boolean} true, if the chunk has css
|
|
87
88
|
*/
|
|
88
89
|
(chunk, chunkGraph) =>
|
|
89
|
-
Boolean(chunkGraph.getChunkModulesIterableBySourceType(chunk,
|
|
90
|
+
Boolean(chunkGraph.getChunkModulesIterableBySourceType(chunk, CSS_TYPE))
|
|
90
91
|
);
|
|
91
92
|
const hasCssMatcher = compileBooleanMatcher(conditionMap);
|
|
92
93
|
|
|
@@ -429,7 +430,7 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
429
430
|
"while(oldTags.length) {",
|
|
430
431
|
Template.indent([
|
|
431
432
|
"var oldTag = oldTags.pop();",
|
|
432
|
-
"if(oldTag.parentNode) oldTag.parentNode.removeChild(oldTag);"
|
|
433
|
+
"if(oldTag && oldTag.parentNode) oldTag.parentNode.removeChild(oldTag);"
|
|
433
434
|
]),
|
|
434
435
|
"}"
|
|
435
436
|
])}, apply: ${runtimeTemplate.basicFunction("", [
|
|
@@ -451,17 +452,24 @@ class CssLoadingRuntimeModule extends RuntimeModule {
|
|
|
451
452
|
`${
|
|
452
453
|
RuntimeGlobals.hmrDownloadUpdateHandlers
|
|
453
454
|
}.css = ${runtimeTemplate.basicFunction(
|
|
454
|
-
"chunkIds, removedChunks, removedModules, promises, applyHandlers, updatedModulesList",
|
|
455
|
+
"chunkIds, removedChunks, removedModules, promises, applyHandlers, updatedModulesList, css",
|
|
455
456
|
[
|
|
456
457
|
isNeutralPlatform
|
|
457
458
|
? "if (typeof document === 'undefined') return;"
|
|
458
459
|
: "",
|
|
459
460
|
"applyHandlers.push(applyHandler);",
|
|
461
|
+
"// Read CSS removed chunks from update manifest",
|
|
462
|
+
"var cssRemovedChunks = css && css.r;",
|
|
460
463
|
`chunkIds.forEach(${runtimeTemplate.basicFunction("chunkId", [
|
|
461
464
|
`var filename = ${RuntimeGlobals.getChunkCssFilename}(chunkId);`,
|
|
462
465
|
`var url = ${RuntimeGlobals.publicPath} + filename;`,
|
|
463
466
|
"var oldTag = loadStylesheet(chunkId, url);",
|
|
464
|
-
|
|
467
|
+
`if(!oldTag && !${withHmr} ) return;`,
|
|
468
|
+
"// Skip if CSS was removed",
|
|
469
|
+
"if(cssRemovedChunks && cssRemovedChunks.indexOf(chunkId) >= 0) {",
|
|
470
|
+
Template.indent(["oldTags.push(oldTag);", "return;"]),
|
|
471
|
+
"}",
|
|
472
|
+
"",
|
|
465
473
|
"// create error before stack unwound to get useful stacktrace later",
|
|
466
474
|
"var error = new Error();",
|
|
467
475
|
`promises.push(new Promise(${runtimeTemplate.basicFunction(
|