webpack 5.87.0 → 5.88.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.
Potentially problematic release.
This version of webpack might be problematic. Click here for more details.
- package/lib/APIPlugin.js +1 -1
- package/lib/AsyncDependenciesBlock.js +3 -3
- package/lib/ChunkGraph.js +4 -4
- package/lib/ChunkGroup.js +9 -3
- package/lib/CompatibilityPlugin.js +50 -30
- package/lib/Compilation.js +2 -1
- package/lib/ContextModule.js +4 -1
- package/lib/ContextReplacementPlugin.js +13 -0
- package/lib/DelegatedModule.js +15 -3
- package/lib/DelegatedModuleFactoryPlugin.js +6 -0
- package/lib/Dependency.js +11 -5
- package/lib/DllEntryPlugin.js +11 -1
- package/lib/DllReferencePlugin.js +13 -1
- package/lib/Entrypoint.js +1 -1
- package/lib/ErrorHelpers.js +1 -0
- package/lib/EvalSourceMapDevToolPlugin.js +4 -0
- package/lib/ExportsInfo.js +17 -3
- package/lib/ExportsInfoApiPlugin.js +14 -5
- package/lib/ExternalModule.js +5 -0
- package/lib/FlagAllModulesAsUsedPlugin.js +6 -1
- package/lib/FlagDependencyUsagePlugin.js +3 -1
- package/lib/HotModuleReplacementPlugin.js +8 -0
- package/lib/InitFragment.js +28 -5
- package/lib/JavascriptMetaInfoPlugin.js +11 -6
- package/lib/LibManifestPlugin.js +20 -4
- package/lib/Module.js +7 -2
- package/lib/ModuleProfile.js +1 -0
- package/lib/ModuleRestoreError.js +2 -0
- package/lib/NodeStuffPlugin.js +32 -6
- package/lib/ProvidePlugin.js +13 -4
- package/lib/RawModule.js +3 -1
- package/lib/RequireJsStuffPlugin.js +7 -0
- package/lib/RuntimeModule.js +3 -3
- package/lib/RuntimePlugin.js +4 -2
- package/lib/RuntimeTemplate.js +2 -2
- package/lib/SourceMapDevToolModuleOptionsPlugin.js +4 -0
- package/lib/SourceMapDevToolPlugin.js +7 -2
- package/lib/UseStrictPlugin.js +10 -3
- package/lib/WebpackIsIncludedPlugin.js +6 -4
- package/lib/asset/AssetGenerator.js +2 -1
- package/lib/asset/AssetParser.js +11 -6
- package/lib/asset/AssetSourceParser.js +8 -3
- package/lib/async-modules/AwaitDependenciesInitFragment.js +4 -0
- package/lib/cache/IdleFileCachePlugin.js +2 -1
- package/lib/cache/PackFileCacheStrategy.js +35 -14
- package/lib/config/browserslistTargetHandler.js +7 -7
- package/lib/config/defaults.js +12 -24
- package/lib/container/RemoteRuntimeModule.js +1 -1
- package/lib/css/CssLoadingRuntimeModule.js +30 -13
- package/lib/css/CssParser.js +11 -1
- package/lib/dependencies/AMDDefineDependency.js +34 -4
- package/lib/dependencies/AMDDefineDependencyParserPlugin.js +5 -0
- package/lib/dependencies/AMDRuntimeModules.js +2 -2
- package/lib/dependencies/CommonJsExportsParserPlugin.js +14 -4
- package/lib/dependencies/CommonJsImportsParserPlugin.js +169 -59
- package/lib/dependencies/CommonJsPlugin.js +13 -8
- package/lib/dependencies/CommonJsRequireContextDependency.js +2 -2
- package/lib/dependencies/ContextDependency.js +7 -2
- package/lib/dependencies/CssImportDependency.js +1 -1
- package/lib/dependencies/CssLocalIdentifierDependency.js +5 -0
- package/lib/dependencies/CssUrlDependency.js +3 -3
- package/lib/dependencies/DllEntryDependency.js +5 -0
- package/lib/dependencies/DynamicExports.js +10 -6
- package/lib/dependencies/ExportsInfoDependency.js +14 -4
- package/lib/dependencies/HarmonyCompatibilityDependency.js +2 -1
- package/lib/dependencies/HarmonyDetectionParserPlugin.js +3 -1
- package/lib/dependencies/HarmonyEvaluatedImportSpecifierDependency.js +12 -5
- package/lib/dependencies/HarmonyExportDependencyParserPlugin.js +2 -0
- package/lib/dependencies/HarmonyExportImportedSpecifierDependency.js +4 -4
- package/lib/dependencies/HarmonyExports.js +9 -5
- package/lib/dependencies/HarmonyImportDependencyParserPlugin.js +32 -17
- package/lib/dependencies/HarmonyImportSideEffectDependency.js +1 -2
- package/lib/dependencies/HarmonyImportSpecifierDependency.js +19 -9
- package/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +15 -3
- package/lib/dependencies/ImportDependency.js +5 -3
- package/lib/dependencies/ImportEagerDependency.js +5 -3
- package/lib/dependencies/ImportMetaPlugin.js +31 -15
- package/lib/dependencies/ImportParserPlugin.js +38 -25
- package/lib/dependencies/ImportWeakDependency.js +5 -3
- package/lib/dependencies/ModuleDependency.js +1 -1
- package/lib/dependencies/ModuleDependencyTemplateAsId.js +2 -1
- package/lib/dependencies/ProvidedDependency.js +4 -1
- package/lib/dependencies/RequireContextDependencyParserPlugin.js +13 -5
- package/lib/dependencies/RequireEnsureDependenciesBlock.js +5 -2
- package/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +6 -1
- package/lib/dependencies/RequireHeaderDependency.js +4 -0
- package/lib/dependencies/RequireIncludeDependencyParserPlugin.js +26 -5
- package/lib/dependencies/RequireResolveHeaderDependency.js +9 -0
- package/lib/dependencies/SystemPlugin.js +17 -5
- package/lib/dependencies/SystemRuntimeModule.js +1 -1
- package/lib/dependencies/URLDependency.js +2 -2
- package/lib/dependencies/URLPlugin.js +9 -4
- package/lib/dependencies/WebAssemblyImportDependency.js +1 -1
- package/lib/dependencies/WorkerPlugin.js +59 -22
- package/lib/esm/ExportWebpackRequireRuntimeModule.js +1 -1
- package/lib/esm/ModuleChunkLoadingRuntimeModule.js +1 -1
- package/lib/hmr/HotModuleReplacementRuntimeModule.js +1 -1
- package/lib/ids/HashedModuleIdsPlugin.js +1 -1
- package/lib/javascript/JavascriptParser.js +17 -5
- package/lib/logging/runtime.js +1 -1
- package/lib/logging/truncateArgs.js +4 -0
- package/lib/node/ReadFileChunkLoadingRuntimeModule.js +10 -6
- package/lib/node/RequireChunkLoadingRuntimeModule.js +10 -6
- package/lib/optimize/InnerGraph.js +1 -1
- package/lib/optimize/InnerGraphPlugin.js +2 -1
- package/lib/prefetch/ChunkPrefetchFunctionRuntimeModule.js +1 -1
- package/lib/prefetch/ChunkPrefetchStartupRuntimeModule.js +1 -1
- package/lib/prefetch/ChunkPrefetchTriggerRuntimeModule.js +1 -1
- package/lib/prefetch/ChunkPreloadTriggerRuntimeModule.js +1 -1
- package/lib/runtime/AsyncModuleRuntimeModule.js +4 -4
- package/lib/runtime/AutoPublicPathRuntimeModule.js +1 -1
- package/lib/runtime/BaseUriRuntimeModule.js +1 -1
- package/lib/runtime/ChunkNameRuntimeModule.js +1 -1
- package/lib/runtime/CompatGetDefaultExportRuntimeModule.js +1 -1
- package/lib/runtime/CompatRuntimeModule.js +1 -1
- package/lib/runtime/CreateFakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/CreateScriptRuntimeModule.js +1 -1
- package/lib/runtime/CreateScriptUrlRuntimeModule.js +1 -1
- package/lib/runtime/DefinePropertyGettersRuntimeModule.js +1 -1
- package/lib/runtime/EnsureChunkRuntimeModule.js +1 -1
- package/lib/runtime/GetChunkFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetFullHashRuntimeModule.js +1 -1
- package/lib/runtime/GetMainFilenameRuntimeModule.js +1 -1
- package/lib/runtime/GetTrustedTypesPolicyRuntimeModule.js +1 -1
- package/lib/runtime/GlobalRuntimeModule.js +1 -1
- package/lib/runtime/HasOwnPropertyRuntimeModule.js +1 -1
- package/lib/runtime/LoadScriptRuntimeModule.js +1 -1
- package/lib/runtime/MakeNamespaceObjectRuntimeModule.js +1 -1
- package/lib/runtime/NonceRuntimeModule.js +1 -1
- package/lib/runtime/OnChunksLoadedRuntimeModule.js +1 -1
- package/lib/runtime/PublicPathRuntimeModule.js +1 -1
- package/lib/runtime/RelativeUrlRuntimeModule.js +1 -1
- package/lib/runtime/RuntimeIdRuntimeModule.js +1 -1
- package/lib/runtime/StartupChunkDependenciesRuntimeModule.js +1 -1
- package/lib/runtime/StartupEntrypointRuntimeModule.js +1 -1
- package/lib/runtime/SystemContextRuntimeModule.js +1 -1
- package/lib/sharing/ConsumeSharedRuntimeModule.js +1 -1
- package/lib/sharing/ShareRuntimeModule.js +1 -1
- package/lib/wasm-async/AsyncWasmLoadingRuntimeModule.js +1 -1
- package/lib/wasm-sync/WasmChunkLoadingRuntimeModule.js +1 -1
- package/lib/web/JsonpChunkLoadingRuntimeModule.js +1 -1
- package/lib/webworker/ImportScriptsChunkLoadingRuntimeModule.js +1 -1
- package/package.json +2 -1
- package/types.d.ts +86 -38
@@ -5,6 +5,7 @@
|
|
5
5
|
|
6
6
|
"use strict";
|
7
7
|
|
8
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
8
9
|
/** @typedef {import("../Parser").ParserState} ParserState */
|
9
10
|
|
10
11
|
/** @type {WeakMap<ParserState, boolean>} */
|
@@ -18,8 +19,9 @@ exports.bailout = parserState => {
|
|
18
19
|
const value = parserStateExportsState.get(parserState);
|
19
20
|
parserStateExportsState.set(parserState, false);
|
20
21
|
if (value === true) {
|
21
|
-
parserState.module.buildMeta
|
22
|
-
|
22
|
+
const buildMeta = /** @type {BuildMeta} */ (parserState.module.buildMeta);
|
23
|
+
buildMeta.exportsType = undefined;
|
24
|
+
buildMeta.defaultObject = false;
|
23
25
|
}
|
24
26
|
};
|
25
27
|
|
@@ -32,8 +34,9 @@ exports.enable = parserState => {
|
|
32
34
|
if (value === false) return;
|
33
35
|
parserStateExportsState.set(parserState, true);
|
34
36
|
if (value !== true) {
|
35
|
-
parserState.module.buildMeta
|
36
|
-
|
37
|
+
const buildMeta = /** @type {BuildMeta} */ (parserState.module.buildMeta);
|
38
|
+
buildMeta.exportsType = "default";
|
39
|
+
buildMeta.defaultObject = "redirect";
|
37
40
|
}
|
38
41
|
};
|
39
42
|
|
@@ -44,7 +47,7 @@ exports.enable = parserState => {
|
|
44
47
|
exports.setFlagged = parserState => {
|
45
48
|
const value = parserStateExportsState.get(parserState);
|
46
49
|
if (value !== true) return;
|
47
|
-
const buildMeta = parserState.module.buildMeta;
|
50
|
+
const buildMeta = /** @type {BuildMeta} */ (parserState.module.buildMeta);
|
48
51
|
if (buildMeta.exportsType === "dynamic") return;
|
49
52
|
buildMeta.exportsType = "flagged";
|
50
53
|
};
|
@@ -56,7 +59,8 @@ exports.setFlagged = parserState => {
|
|
56
59
|
exports.setDynamic = parserState => {
|
57
60
|
const value = parserStateExportsState.get(parserState);
|
58
61
|
if (value !== true) return;
|
59
|
-
|
62
|
+
/** @type {BuildMeta} */
|
63
|
+
(parserState.module.buildMeta).exportsType = "dynamic";
|
60
64
|
};
|
61
65
|
|
62
66
|
/**
|
@@ -51,19 +51,23 @@ const getProperty = (moduleGraph, module, exportName, property, runtime) => {
|
|
51
51
|
switch (property) {
|
52
52
|
case "canMangle": {
|
53
53
|
const exportsInfo = moduleGraph.getExportsInfo(module);
|
54
|
-
const exportInfo = exportsInfo.getExportInfo(
|
54
|
+
const exportInfo = exportsInfo.getExportInfo(
|
55
|
+
/** @type {string} */ (exportName)
|
56
|
+
);
|
55
57
|
if (exportInfo) return exportInfo.canMangle;
|
56
58
|
return exportsInfo.otherExportsInfo.canMangle;
|
57
59
|
}
|
58
60
|
case "used":
|
59
61
|
return (
|
60
|
-
moduleGraph
|
62
|
+
moduleGraph
|
63
|
+
.getExportsInfo(module)
|
64
|
+
.getUsed(/** @type {string} */ (exportName), runtime) !==
|
61
65
|
UsageState.Unused
|
62
66
|
);
|
63
67
|
case "useInfo": {
|
64
68
|
const state = moduleGraph
|
65
69
|
.getExportsInfo(module)
|
66
|
-
.getUsed(exportName, runtime);
|
70
|
+
.getUsed(/** @type {string} */ (exportName), runtime);
|
67
71
|
switch (state) {
|
68
72
|
case UsageState.Used:
|
69
73
|
case UsageState.OnlyPropertiesUsed:
|
@@ -79,7 +83,9 @@ const getProperty = (moduleGraph, module, exportName, property, runtime) => {
|
|
79
83
|
}
|
80
84
|
}
|
81
85
|
case "provideInfo":
|
82
|
-
return moduleGraph
|
86
|
+
return moduleGraph
|
87
|
+
.getExportsInfo(module)
|
88
|
+
.isExportProvided(/** @type {string} */ (exportName));
|
83
89
|
}
|
84
90
|
return undefined;
|
85
91
|
};
|
@@ -108,6 +114,10 @@ class ExportsInfoDependency extends NullDependency {
|
|
108
114
|
super.serialize(context);
|
109
115
|
}
|
110
116
|
|
117
|
+
/**
|
118
|
+
* @param {ObjectDeserializerContext} context context
|
119
|
+
* @returns {ExportsInfoDependency} ExportsInfoDependency
|
120
|
+
*/
|
111
121
|
static deserialize(context) {
|
112
122
|
const obj = new ExportsInfoDependency(
|
113
123
|
context.read(),
|
@@ -15,6 +15,7 @@ const NullDependency = require("./NullDependency");
|
|
15
15
|
/** @typedef {import("../Dependency")} Dependency */
|
16
16
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
17
17
|
/** @typedef {import("../Module")} Module */
|
18
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
18
19
|
|
19
20
|
class HarmonyCompatibilityDependency extends NullDependency {
|
20
21
|
get type() {
|
@@ -80,7 +81,7 @@ HarmonyCompatibilityDependency.Template = class HarmonyExportDependencyTemplate
|
|
80
81
|
0,
|
81
82
|
undefined,
|
82
83
|
`\n__webpack_async_result__();\n} catch(e) { __webpack_async_result__(e); } }${
|
83
|
-
module.buildMeta.async ? ", 1" : ""
|
84
|
+
/** @type {BuildMeta} */ (module.buildMeta).async ? ", 1" : ""
|
84
85
|
});`
|
85
86
|
)
|
86
87
|
);
|
@@ -10,6 +10,7 @@ const DynamicExports = require("./DynamicExports");
|
|
10
10
|
const HarmonyCompatibilityDependency = require("./HarmonyCompatibilityDependency");
|
11
11
|
const HarmonyExports = require("./HarmonyExports");
|
12
12
|
|
13
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
13
14
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
14
15
|
/** @typedef {import("./HarmonyModulesPlugin").HarmonyModulesPluginOptions} HarmonyModulesPluginOptions */
|
15
16
|
|
@@ -72,7 +73,8 @@ module.exports = class HarmonyDetectionParserPlugin {
|
|
72
73
|
"Top-level-await is only supported in EcmaScript Modules"
|
73
74
|
);
|
74
75
|
}
|
75
|
-
|
76
|
+
/** @type {BuildMeta} */
|
77
|
+
(module.buildMeta).async = true;
|
76
78
|
});
|
77
79
|
|
78
80
|
/**
|
@@ -12,6 +12,8 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
|
|
12
12
|
/** @typedef {import("../ChunkGraph")} ChunkGraph */
|
13
13
|
/** @typedef {import("../Dependency")} Dependency */
|
14
14
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
15
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
16
|
+
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
15
17
|
/** @typedef {import("../javascript/JavascriptParser").Assertions} Assertions */
|
16
18
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
17
19
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
@@ -85,15 +87,20 @@ HarmonyEvaluatedImportSpecifierDependency.Template = class HarmonyEvaluatedImpor
|
|
85
87
|
// Skip rendering depending when dependency is conditional
|
86
88
|
if (connection && !connection.isTargetActive(runtime)) return;
|
87
89
|
|
88
|
-
const exportsInfo = moduleGraph.getExportsInfo(
|
90
|
+
const exportsInfo = moduleGraph.getExportsInfo(
|
91
|
+
/** @type {ModuleGraphConnection} */ (connection).module
|
92
|
+
);
|
89
93
|
const ids = dep.getIds(moduleGraph);
|
90
94
|
|
91
95
|
let value;
|
92
96
|
|
93
|
-
const exportsType =
|
94
|
-
|
95
|
-
module.
|
96
|
-
|
97
|
+
const exportsType =
|
98
|
+
/** @type {ModuleGraphConnection} */
|
99
|
+
(connection).module.getExportsType(
|
100
|
+
moduleGraph,
|
101
|
+
/** @type {BuildMeta} */
|
102
|
+
(module.buildMeta).strictHarmonyModule
|
103
|
+
);
|
97
104
|
switch (exportsType) {
|
98
105
|
case "default-with-named": {
|
99
106
|
if (ids[0] === "default") {
|
@@ -18,6 +18,8 @@ const {
|
|
18
18
|
} = require("./HarmonyImportDependencyParserPlugin");
|
19
19
|
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
|
20
20
|
|
21
|
+
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
22
|
+
|
21
23
|
const { HarmonyStarExportsList } = HarmonyExportImportedSpecifierDependency;
|
22
24
|
|
23
25
|
module.exports = class HarmonyExportDependencyParserPlugin {
|
@@ -330,9 +330,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
330
330
|
* @param {string[]} ids the requested export name of the imported module
|
331
331
|
* @param {string | null} name the export name of for this module
|
332
332
|
* @param {Set<string>} activeExports other named exports in the module
|
333
|
-
* @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> | Iterable<HarmonyExportImportedSpecifierDependency>} otherStarExports other star exports in the module before this import
|
333
|
+
* @param {ReadonlyArray<HarmonyExportImportedSpecifierDependency> | Iterable<HarmonyExportImportedSpecifierDependency> | null} otherStarExports other star exports in the module before this import
|
334
334
|
* @param {number} exportPresenceMode mode of checking export names
|
335
|
-
* @param {HarmonyStarExportsList} allStarExports all star exports in the module
|
335
|
+
* @param {HarmonyStarExportsList | null} allStarExports all star exports in the module
|
336
336
|
* @param {Assertions=} assertions import assertions
|
337
337
|
*/
|
338
338
|
constructor(
|
@@ -756,7 +756,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
756
756
|
/**
|
757
757
|
* Returns warnings
|
758
758
|
* @param {ModuleGraph} moduleGraph module graph
|
759
|
-
* @returns {WebpackError[]} warnings
|
759
|
+
* @returns {WebpackError[] | null | undefined} warnings
|
760
760
|
*/
|
761
761
|
getWarnings(moduleGraph) {
|
762
762
|
const exportsPresence = this._getEffectiveExportPresenceLevel(moduleGraph);
|
@@ -769,7 +769,7 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
|
|
769
769
|
/**
|
770
770
|
* Returns errors
|
771
771
|
* @param {ModuleGraph} moduleGraph module graph
|
772
|
-
* @returns {WebpackError[]} errors
|
772
|
+
* @returns {WebpackError[] | null | undefined} errors
|
773
773
|
*/
|
774
774
|
getErrors(moduleGraph) {
|
775
775
|
const exportsPresence = this._getEffectiveExportPresenceLevel(moduleGraph);
|
@@ -7,6 +7,8 @@
|
|
7
7
|
|
8
8
|
const RuntimeGlobals = require("../RuntimeGlobals");
|
9
9
|
|
10
|
+
/** @typedef {import("../Module").BuildInfo} BuildInfo */
|
11
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
10
12
|
/** @typedef {import("../Parser").ParserState} ParserState */
|
11
13
|
|
12
14
|
/** @type {WeakMap<ParserState, boolean>} */
|
@@ -22,12 +24,14 @@ exports.enable = (parserState, isStrictHarmony) => {
|
|
22
24
|
if (value === false) return;
|
23
25
|
parserStateExportsState.set(parserState, true);
|
24
26
|
if (value !== true) {
|
25
|
-
parserState.module.buildMeta
|
26
|
-
|
27
|
-
parserState.module.buildInfo
|
27
|
+
const buildMeta = /** @type {BuildMeta} */ (parserState.module.buildMeta);
|
28
|
+
buildMeta.exportsType = "namespace";
|
29
|
+
const buildInfo = /** @type {BuildInfo} */ (parserState.module.buildInfo);
|
30
|
+
buildInfo.strict = true;
|
31
|
+
buildInfo.exportsArgument = RuntimeGlobals.exports;
|
28
32
|
if (isStrictHarmony) {
|
29
|
-
|
30
|
-
|
33
|
+
buildMeta.strictHarmonyModule = true;
|
34
|
+
buildInfo.moduleArgument = "__webpack_module__";
|
31
35
|
}
|
32
36
|
}
|
33
37
|
};
|
@@ -21,8 +21,12 @@ const HarmonyImportSpecifierDependency = require("./HarmonyImportSpecifierDepend
|
|
21
21
|
/** @typedef {import("estree").Identifier} Identifier */
|
22
22
|
/** @typedef {import("estree").ImportDeclaration} ImportDeclaration */
|
23
23
|
/** @typedef {import("estree").ImportExpression} ImportExpression */
|
24
|
+
/** @typedef {import("estree").MemberExpression} MemberExpression */
|
24
25
|
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
|
26
|
+
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
27
|
+
/** @typedef {import("../javascript/BasicEvaluatedExpression")} BasicEvaluatedExpression */
|
25
28
|
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
29
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
26
30
|
/** @typedef {import("../optimize/InnerGraph").InnerGraph} InnerGraph */
|
27
31
|
/** @typedef {import("../optimize/InnerGraph").TopLevelSymbol} TopLevelSymbol */
|
28
32
|
/** @typedef {import("./HarmonyImportDependency")} HarmonyImportDependency */
|
@@ -113,19 +117,21 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
113
117
|
parser.state.lastHarmonyImportOrder =
|
114
118
|
(parser.state.lastHarmonyImportOrder || 0) + 1;
|
115
119
|
const clearDep = new ConstDependency(
|
116
|
-
parser.isAsiPosition(statement.range[0])
|
117
|
-
|
120
|
+
parser.isAsiPosition(/** @type {Range} */ (statement.range)[0])
|
121
|
+
? ";"
|
122
|
+
: "",
|
123
|
+
/** @type {Range} */ (statement.range)
|
118
124
|
);
|
119
|
-
clearDep.loc = statement.loc;
|
125
|
+
clearDep.loc = /** @type {DependencyLocation} */ (statement.loc);
|
120
126
|
parser.state.module.addPresentationalDependency(clearDep);
|
121
|
-
parser.unsetAsiPosition(statement.range[1]);
|
127
|
+
parser.unsetAsiPosition(/** @type {Range} */ (statement.range)[1]);
|
122
128
|
const assertions = getAssertions(statement);
|
123
129
|
const sideEffectDep = new HarmonyImportSideEffectDependency(
|
124
130
|
source,
|
125
131
|
parser.state.lastHarmonyImportOrder,
|
126
132
|
assertions
|
127
133
|
);
|
128
|
-
sideEffectDep.loc = statement.loc;
|
134
|
+
sideEffectDep.loc = /** @type {DependencyLocation} */ (statement.loc);
|
129
135
|
parser.state.module.addDependency(sideEffectDep);
|
130
136
|
return true;
|
131
137
|
}
|
@@ -172,13 +178,15 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
172
178
|
settings.sourceOrder,
|
173
179
|
settings.ids.concat(members).concat([leftPart]),
|
174
180
|
settings.name,
|
175
|
-
expression.range,
|
181
|
+
/** @type {Range} */ (expression.range),
|
176
182
|
settings.assertions,
|
177
183
|
"in"
|
178
184
|
);
|
179
185
|
dep.directImport = members.length === 0;
|
180
|
-
dep.asiSafe = !parser.isAsiPosition(
|
181
|
-
|
186
|
+
dep.asiSafe = !parser.isAsiPosition(
|
187
|
+
/** @type {Range} */ (expression.range)[0]
|
188
|
+
);
|
189
|
+
dep.loc = /** @type {DependencyLocation} */ (expression.loc);
|
182
190
|
parser.state.module.addDependency(dep);
|
183
191
|
InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
|
184
192
|
return true;
|
@@ -193,7 +201,7 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
193
201
|
settings.sourceOrder,
|
194
202
|
settings.ids,
|
195
203
|
settings.name,
|
196
|
-
expr.range,
|
204
|
+
/** @type {Range} */ (expr.range),
|
197
205
|
exportPresenceMode,
|
198
206
|
settings.assertions,
|
199
207
|
[]
|
@@ -202,8 +210,11 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
202
210
|
parser.destructuringAssignmentPropertiesFor(expr);
|
203
211
|
dep.shorthand = parser.scope.inShorthand;
|
204
212
|
dep.directImport = true;
|
205
|
-
dep.asiSafe = !parser.isAsiPosition(
|
206
|
-
|
213
|
+
dep.asiSafe = !parser.isAsiPosition(
|
214
|
+
/** @type {Range} */ (expr.range)[0]
|
215
|
+
);
|
216
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
217
|
+
dep.call = parser.scope.inTaggedTemplateTag;
|
207
218
|
parser.state.module.addDependency(dep);
|
208
219
|
InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
|
209
220
|
return true;
|
@@ -237,15 +248,17 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
237
248
|
settings.sourceOrder,
|
238
249
|
ids,
|
239
250
|
settings.name,
|
240
|
-
expr.range,
|
251
|
+
/** @type {Range} */ (expr.range),
|
241
252
|
exportPresenceMode,
|
242
253
|
settings.assertions,
|
243
254
|
ranges
|
244
255
|
);
|
245
256
|
dep.referencedPropertiesInDestructuring =
|
246
257
|
parser.destructuringAssignmentPropertiesFor(expr);
|
247
|
-
dep.asiSafe = !parser.isAsiPosition(
|
248
|
-
|
258
|
+
dep.asiSafe = !parser.isAsiPosition(
|
259
|
+
/** @type {Range} */ (expr.range)[0]
|
260
|
+
);
|
261
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
249
262
|
parser.state.module.addDependency(dep);
|
250
263
|
InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
|
251
264
|
return true;
|
@@ -281,18 +294,20 @@ module.exports = class HarmonyImportDependencyParserPlugin {
|
|
281
294
|
settings.sourceOrder,
|
282
295
|
ids,
|
283
296
|
settings.name,
|
284
|
-
expr.range,
|
297
|
+
/** @type {Range} */ (expr.range),
|
285
298
|
exportPresenceMode,
|
286
299
|
settings.assertions,
|
287
300
|
ranges
|
288
301
|
);
|
289
302
|
dep.directImport = members.length === 0;
|
290
303
|
dep.call = true;
|
291
|
-
dep.asiSafe = !parser.isAsiPosition(
|
304
|
+
dep.asiSafe = !parser.isAsiPosition(
|
305
|
+
/** @type {Range} */ (expr.range)[0]
|
306
|
+
);
|
292
307
|
// only in case when we strictly follow the spec we need a special case here
|
293
308
|
dep.namespaceObjectAsContext =
|
294
309
|
members.length > 0 && this.strictThisContextOnImports;
|
295
|
-
dep.loc = expr.loc;
|
310
|
+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
|
296
311
|
parser.state.module.addDependency(dep);
|
297
312
|
if (args) parser.walkExpressions(args);
|
298
313
|
InnerGraph.onUsage(parser.state, e => (dep.usedByExports = e));
|
@@ -11,7 +11,6 @@ const HarmonyImportDependency = require("./HarmonyImportDependency");
|
|
11
11
|
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
|
12
12
|
/** @typedef {import("../Dependency")} Dependency */
|
13
13
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
14
|
-
/** @typedef {import("../InitFragment")} InitFragment */
|
15
14
|
/** @typedef {import("../Module")} Module */
|
16
15
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
17
16
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
@@ -74,7 +73,7 @@ HarmonyImportSideEffectDependency.Template = class HarmonyImportSideEffectDepend
|
|
74
73
|
apply(dependency, source, templateContext) {
|
75
74
|
const { moduleGraph, concatenationScope } = templateContext;
|
76
75
|
if (concatenationScope) {
|
77
|
-
const module = moduleGraph.getModule(dependency);
|
76
|
+
const module = /** @type {Module} */ (moduleGraph.getModule(dependency));
|
78
77
|
if (concatenationScope.isModuleInScope(module)) {
|
79
78
|
return;
|
80
79
|
}
|
@@ -19,6 +19,8 @@ const HarmonyImportDependency = require("./HarmonyImportDependency");
|
|
19
19
|
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
20
20
|
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
|
21
21
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
22
|
+
/** @typedef {import("../Module")} Module */
|
23
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
22
24
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
23
25
|
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
|
24
26
|
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
|
@@ -61,14 +63,15 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
61
63
|
this.range = range;
|
62
64
|
this.idRanges = idRanges;
|
63
65
|
this.exportPresenceMode = exportPresenceMode;
|
66
|
+
/** @type {boolean | undefined} */
|
64
67
|
this.namespaceObjectAsContext = false;
|
65
68
|
this.call = undefined;
|
66
69
|
this.directImport = undefined;
|
67
70
|
this.shorthand = undefined;
|
68
71
|
this.asiSafe = undefined;
|
69
|
-
/** @type {Set<string> | boolean} */
|
72
|
+
/** @type {Set<string> | boolean | undefined} */
|
70
73
|
this.usedByExports = undefined;
|
71
|
-
/** @type {Set<string>} */
|
74
|
+
/** @type {Set<string> | undefined} */
|
72
75
|
this.referencedPropertiesInDestructuring = undefined;
|
73
76
|
}
|
74
77
|
|
@@ -143,11 +146,14 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
143
146
|
let namespaceObjectAsContext = this.namespaceObjectAsContext;
|
144
147
|
if (ids[0] === "default") {
|
145
148
|
const selfModule = moduleGraph.getParentModule(this);
|
146
|
-
const importedModule =
|
149
|
+
const importedModule =
|
150
|
+
/** @type {Module} */
|
151
|
+
(moduleGraph.getModule(this));
|
147
152
|
switch (
|
148
153
|
importedModule.getExportsType(
|
149
154
|
moduleGraph,
|
150
|
-
|
155
|
+
/** @type {BuildMeta} */
|
156
|
+
(selfModule.buildMeta).strictHarmonyModule
|
151
157
|
)
|
152
158
|
) {
|
153
159
|
case "default-only":
|
@@ -201,7 +207,10 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
201
207
|
_getEffectiveExportPresenceLevel(moduleGraph) {
|
202
208
|
if (this.exportPresenceMode !== ExportPresenceModes.AUTO)
|
203
209
|
return this.exportPresenceMode;
|
204
|
-
|
210
|
+
const buildMeta = /** @type {BuildMeta} */ (
|
211
|
+
moduleGraph.getParentModule(this).buildMeta
|
212
|
+
);
|
213
|
+
return buildMeta.strictHarmonyModule
|
205
214
|
? ExportPresenceModes.ERROR
|
206
215
|
: ExportPresenceModes.WARN;
|
207
216
|
}
|
@@ -209,7 +218,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
209
218
|
/**
|
210
219
|
* Returns warnings
|
211
220
|
* @param {ModuleGraph} moduleGraph module graph
|
212
|
-
* @returns {WebpackError[]} warnings
|
221
|
+
* @returns {WebpackError[] | null | undefined} warnings
|
213
222
|
*/
|
214
223
|
getWarnings(moduleGraph) {
|
215
224
|
const exportsPresence = this._getEffectiveExportPresenceLevel(moduleGraph);
|
@@ -222,7 +231,7 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
|
|
222
231
|
/**
|
223
232
|
* Returns errors
|
224
233
|
* @param {ModuleGraph} moduleGraph module graph
|
225
|
-
* @returns {WebpackError[]} errors
|
234
|
+
* @returns {WebpackError[] | null | undefined} errors
|
226
235
|
*/
|
227
236
|
getErrors(moduleGraph) {
|
228
237
|
const exportsPresence = this._getEffectiveExportPresenceLevel(moduleGraph);
|
@@ -362,9 +371,10 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
362
371
|
* @returns {string[]} generated code
|
363
372
|
*/
|
364
373
|
_trimIdsToThoseImported(ids, moduleGraph, dependency) {
|
374
|
+
/** @type {string[]} */
|
365
375
|
let trimmedIds = [];
|
366
376
|
const exportsInfo = moduleGraph.getExportsInfo(
|
367
|
-
moduleGraph.getModule(dependency)
|
377
|
+
/** @type {Module} */ (moduleGraph.getModule(dependency))
|
368
378
|
);
|
369
379
|
let currentExportsInfo = /** @type {ExportsInfo=} */ exportsInfo;
|
370
380
|
for (let i = 0; i < ids.length; i++) {
|
@@ -437,7 +447,7 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
|
|
437
447
|
|
438
448
|
exportExpr = runtimeTemplate.exportFromImport({
|
439
449
|
moduleGraph,
|
440
|
-
module: moduleGraph.getModule(dep),
|
450
|
+
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
441
451
|
request: dep.request,
|
442
452
|
exportName: ids,
|
443
453
|
originModule: module,
|
@@ -8,17 +8,29 @@
|
|
8
8
|
const ConstDependency = require("./ConstDependency");
|
9
9
|
const HarmonyExports = require("./HarmonyExports");
|
10
10
|
|
11
|
+
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
|
12
|
+
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
|
13
|
+
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
14
|
+
|
11
15
|
class HarmonyTopLevelThisParserPlugin {
|
16
|
+
/**
|
17
|
+
* @param {JavascriptParser} parser the parser
|
18
|
+
* @returns {void}
|
19
|
+
*/
|
12
20
|
apply(parser) {
|
13
21
|
parser.hooks.expression
|
14
22
|
.for("this")
|
15
23
|
.tap("HarmonyTopLevelThisParserPlugin", node => {
|
16
24
|
if (!parser.scope.topLevelScope) return;
|
17
25
|
if (HarmonyExports.isEnabled(parser.state)) {
|
18
|
-
const dep = new ConstDependency(
|
19
|
-
|
26
|
+
const dep = new ConstDependency(
|
27
|
+
"undefined",
|
28
|
+
/** @type {Range} */ (node.range),
|
29
|
+
null
|
30
|
+
);
|
31
|
+
dep.loc = /** @type {DependencyLocation} */ (node.loc);
|
20
32
|
parser.state.module.addPresentationalDependency(dep);
|
21
|
-
return
|
33
|
+
return true;
|
22
34
|
}
|
23
35
|
});
|
24
36
|
}
|
@@ -13,6 +13,8 @@ const ModuleDependency = require("./ModuleDependency");
|
|
13
13
|
/** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
|
14
14
|
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
15
15
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
16
|
+
/** @typedef {import("../Module")} Module */
|
17
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
16
18
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
17
19
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
18
20
|
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
|
@@ -23,7 +25,7 @@ class ImportDependency extends ModuleDependency {
|
|
23
25
|
/**
|
24
26
|
* @param {string} request the request
|
25
27
|
* @param {Range} range expression range
|
26
|
-
* @param {string[][]=} referencedExports list of referenced exports
|
28
|
+
* @param {(string[][] | null)=} referencedExports list of referenced exports
|
27
29
|
*/
|
28
30
|
constructor(request, range, referencedExports) {
|
29
31
|
super(request);
|
@@ -96,9 +98,9 @@ ImportDependency.Template = class ImportDependencyTemplate extends (
|
|
96
98
|
const content = runtimeTemplate.moduleNamespacePromise({
|
97
99
|
chunkGraph,
|
98
100
|
block: block,
|
99
|
-
module: moduleGraph.getModule(dep),
|
101
|
+
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
100
102
|
request: dep.request,
|
101
|
-
strict: module.buildMeta.strictHarmonyModule,
|
103
|
+
strict: /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule,
|
102
104
|
message: "import()",
|
103
105
|
runtimeRequirements
|
104
106
|
});
|
@@ -12,6 +12,8 @@ const ImportDependency = require("./ImportDependency");
|
|
12
12
|
/** @typedef {import("../Dependency")} Dependency */
|
13
13
|
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
|
14
14
|
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
|
15
|
+
/** @typedef {import("../Module")} Module */
|
16
|
+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
|
15
17
|
/** @typedef {import("../ModuleGraph")} ModuleGraph */
|
16
18
|
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
|
17
19
|
|
@@ -19,7 +21,7 @@ class ImportEagerDependency extends ImportDependency {
|
|
19
21
|
/**
|
20
22
|
* @param {string} request the request
|
21
23
|
* @param {Range} range expression range
|
22
|
-
* @param {string[][]=} referencedExports list of referenced exports
|
24
|
+
* @param {(string[][] | null)=} referencedExports list of referenced exports
|
23
25
|
*/
|
24
26
|
constructor(request, range, referencedExports) {
|
25
27
|
super(request, range, referencedExports);
|
@@ -56,9 +58,9 @@ ImportEagerDependency.Template = class ImportEagerDependencyTemplate extends (
|
|
56
58
|
const dep = /** @type {ImportEagerDependency} */ (dependency);
|
57
59
|
const content = runtimeTemplate.moduleNamespacePromise({
|
58
60
|
chunkGraph,
|
59
|
-
module: moduleGraph.getModule(dep),
|
61
|
+
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
|
60
62
|
request: dep.request,
|
61
|
-
strict: module.buildMeta.strictHarmonyModule,
|
63
|
+
strict: /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule,
|
62
64
|
message: "import() eager",
|
63
65
|
runtimeRequirements
|
64
66
|
});
|