Skip to content

Commit e226101

Browse files
refactor(types): more
1 parent a911bd9 commit e226101

14 files changed

+116
-52
lines changed

lib/ContextModule.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ const makeSerializable = require("./util/makeSerializable");
6363
* @property {RawChunkGroupOptions=} groupOptions
6464
* @property {string=} typePrefix
6565
* @property {string=} category
66-
* @property {string[][]=} referencedExports exports referenced from modules (won't be mangled)
66+
* @property {(string[][] | null)=} referencedExports exports referenced from modules (won't be mangled)
6767
* @property {string=} layer
6868
*/
6969

lib/Entrypoint.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ class Entrypoint extends ChunkGroup {
8383
* @returns {Chunk} chunk
8484
*/
8585
getEntrypointChunk() {
86-
return this._entrypointChunk;
86+
return /** @type {Chunk} */ (this._entrypointChunk);
8787
}
8888

8989
/**

lib/dependencies/AMDDefineDependency.js

+34-4
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,10 @@ AMDDefineDependency.Template = class AMDDefineDependencyTemplate extends (
180180
this.replace(dep, source, definition, content);
181181
}
182182

183+
/**
184+
* @param {AMDDefineDependency} dependency dependency
185+
* @returns {string} variable name
186+
*/
183187
localModuleVar(dependency) {
184188
return (
185189
dependency.localModule &&
@@ -188,6 +192,10 @@ AMDDefineDependency.Template = class AMDDefineDependencyTemplate extends (
188192
);
189193
}
190194

195+
/**
196+
* @param {AMDDefineDependency} dependency dependency
197+
* @returns {string} branch
198+
*/
191199
branch(dependency) {
192200
const localModuleVar = this.localModuleVar(dependency) ? "l" : "";
193201
const arrayRange = dependency.arrayRange ? "a" : "";
@@ -196,6 +204,12 @@ AMDDefineDependency.Template = class AMDDefineDependencyTemplate extends (
196204
return localModuleVar + arrayRange + objectRange + functionRange;
197205
}
198206

207+
/**
208+
* @param {AMDDefineDependency} dependency dependency
209+
* @param {ReplaceSource} source source
210+
* @param {string} definition definition
211+
* @param {string} text text
212+
*/
199213
replace(dependency, source, definition, text) {
200214
const localModuleVar = this.localModuleVar(dependency);
201215
if (localModuleVar) {
@@ -216,18 +230,34 @@ AMDDefineDependency.Template = class AMDDefineDependencyTemplate extends (
216230

217231
let current = dependency.range[0];
218232
if (dependency.arrayRange) {
219-
source.replace(current, dependency.arrayRange[0] - 1, texts.shift());
233+
source.replace(
234+
current,
235+
dependency.arrayRange[0] - 1,
236+
/** @type {string} */ (texts.shift())
237+
);
220238
current = dependency.arrayRange[1];
221239
}
222240

223241
if (dependency.objectRange) {
224-
source.replace(current, dependency.objectRange[0] - 1, texts.shift());
242+
source.replace(
243+
current,
244+
dependency.objectRange[0] - 1,
245+
/** @type {string} */ (texts.shift())
246+
);
225247
current = dependency.objectRange[1];
226248
} else if (dependency.functionRange) {
227-
source.replace(current, dependency.functionRange[0] - 1, texts.shift());
249+
source.replace(
250+
current,
251+
dependency.functionRange[0] - 1,
252+
/** @type {string} */ (texts.shift())
253+
);
228254
current = dependency.functionRange[1];
229255
}
230-
source.replace(current, dependency.range[1] - 1, texts.shift());
256+
source.replace(
257+
current,
258+
dependency.range[1] - 1,
259+
/** @type {string} */ (texts.shift())
260+
);
231261
if (texts.length > 0) throw new Error("Implementation error");
232262
}
233263
};

lib/dependencies/AMDDefineDependencyParserPlugin.js

+5
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,13 @@ const DynamicExports = require("./DynamicExports");
1616
const LocalModuleDependency = require("./LocalModuleDependency");
1717
const { addLocalModule, getLocalModule } = require("./LocalModulesHelpers");
1818

19+
/** @typedef {import("estree").CallExpression} CallExpression */
1920
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
2021

22+
/**
23+
* @param {CallExpression} expr expression
24+
* @returns {boolean} true if it's a bound function expression
25+
*/
2126
const isBoundFunctionExpression = expr => {
2227
if (expr.type !== "CallExpression") return false;
2328
if (expr.callee.type !== "MemberExpression") return false;

lib/dependencies/CommonJsPlugin.js

+8-4
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ const CommonJsExportRequireDependency = require("./CommonJsExportRequireDependen
3737
/** @typedef {import("../../declarations/WebpackOptions").JavascriptParserOptions} JavascriptParserOptions */
3838
/** @typedef {import("../Compilation")} Compilation */
3939
/** @typedef {import("../Compiler")} Compiler */
40+
/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */
41+
/** @typedef {import("../Module").BuildInfo} BuildInfo */
4042
/** @typedef {import("../javascript/JavascriptParser")} Parser */
4143

4244
const PLUGIN_NAME = "CommonJsPlugin";
@@ -200,25 +202,27 @@ class CommonJsPlugin {
200202
parser.hooks.expression
201203
.for(RuntimeGlobals.moduleLoaded)
202204
.tap(PLUGIN_NAME, expr => {
203-
parser.state.module.buildInfo.moduleConcatenationBailout =
205+
/** @type {BuildInfo} */
206+
(parser.state.module.buildInfo).moduleConcatenationBailout =
204207
RuntimeGlobals.moduleLoaded;
205208
const dep = new RuntimeRequirementsDependency([
206209
RuntimeGlobals.moduleLoaded
207210
]);
208-
dep.loc = expr.loc;
211+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
209212
parser.state.module.addPresentationalDependency(dep);
210213
return true;
211214
});
212215

213216
parser.hooks.expression
214217
.for(RuntimeGlobals.moduleId)
215218
.tap(PLUGIN_NAME, expr => {
216-
parser.state.module.buildInfo.moduleConcatenationBailout =
219+
/** @type {BuildInfo} */
220+
(parser.state.module.buildInfo).moduleConcatenationBailout =
217221
RuntimeGlobals.moduleId;
218222
const dep = new RuntimeRequirementsDependency([
219223
RuntimeGlobals.moduleId
220224
]);
221-
dep.loc = expr.loc;
225+
dep.loc = /** @type {DependencyLocation} */ (expr.loc);
222226
parser.state.module.addPresentationalDependency(dep);
223227
return true;
224228
});

lib/dependencies/HarmonyExportDependencyParserPlugin.js

+2
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,8 @@ const {
1818
} = require("./HarmonyImportDependencyParserPlugin");
1919
const HarmonyImportSideEffectDependency = require("./HarmonyImportSideEffectDependency");
2020

21+
/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */
22+
2123
const { HarmonyStarExportsList } = HarmonyExportImportedSpecifierDependency;
2224

2325
module.exports = class HarmonyExportDependencyParserPlugin {

lib/dependencies/HarmonyExportImportedSpecifierDependency.js

+2-2
Original file line numberDiff line numberDiff line change
@@ -330,9 +330,9 @@ class HarmonyExportImportedSpecifierDependency extends HarmonyImportDependency {
330330
* @param {string[]} ids the requested export name of the imported module
331331
* @param {string | null} name the export name of for this module
332332
* @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
334334
* @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
336336
* @param {Assertions=} assertions import assertions
337337
*/
338338
constructor(

lib/dependencies/HarmonyImportSideEffectDependency.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ const HarmonyImportDependency = require("./HarmonyImportDependency");
1111
/** @typedef {import("webpack-sources").ReplaceSource} ReplaceSource */
1212
/** @typedef {import("../Dependency")} Dependency */
1313
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
14-
/** @typedef {import("../InitFragment")} InitFragment */
1514
/** @typedef {import("../Module")} Module */
1615
/** @typedef {import("../ModuleGraph")} ModuleGraph */
1716
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
@@ -74,7 +73,7 @@ HarmonyImportSideEffectDependency.Template = class HarmonyImportSideEffectDepend
7473
apply(dependency, source, templateContext) {
7574
const { moduleGraph, concatenationScope } = templateContext;
7675
if (concatenationScope) {
77-
const module = moduleGraph.getModule(dependency);
76+
const module = /** @type {Module} */ (moduleGraph.getModule(dependency));
7877
if (concatenationScope.isModuleInScope(module)) {
7978
return;
8079
}

lib/dependencies/HarmonyImportSpecifierDependency.js

+16-7
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ const HarmonyImportDependency = require("./HarmonyImportDependency");
1919
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
2020
/** @typedef {import("../Dependency").UpdateHashContext} UpdateHashContext */
2121
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
22+
/** @typedef {import("../Module")} Module */
23+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
2224
/** @typedef {import("../ModuleGraph")} ModuleGraph */
2325
/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */
2426
/** @typedef {import("../ModuleGraphConnection").ConnectionState} ConnectionState */
@@ -66,9 +68,9 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
6668
this.directImport = undefined;
6769
this.shorthand = undefined;
6870
this.asiSafe = undefined;
69-
/** @type {Set<string> | boolean} */
71+
/** @type {Set<string> | boolean | undefined} */
7072
this.usedByExports = undefined;
71-
/** @type {Set<string>} */
73+
/** @type {Set<string> | undefined} */
7274
this.referencedPropertiesInDestructuring = undefined;
7375
}
7476

@@ -143,11 +145,14 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
143145
let namespaceObjectAsContext = this.namespaceObjectAsContext;
144146
if (ids[0] === "default") {
145147
const selfModule = moduleGraph.getParentModule(this);
146-
const importedModule = moduleGraph.getModule(this);
148+
const importedModule =
149+
/** @type {Module} */
150+
(moduleGraph.getModule(this));
147151
switch (
148152
importedModule.getExportsType(
149153
moduleGraph,
150-
selfModule.buildMeta.strictHarmonyModule
154+
/** @type {BuildMeta} */
155+
(selfModule.buildMeta).strictHarmonyModule
151156
)
152157
) {
153158
case "default-only":
@@ -201,7 +206,10 @@ class HarmonyImportSpecifierDependency extends HarmonyImportDependency {
201206
_getEffectiveExportPresenceLevel(moduleGraph) {
202207
if (this.exportPresenceMode !== ExportPresenceModes.AUTO)
203208
return this.exportPresenceMode;
204-
return moduleGraph.getParentModule(this).buildMeta.strictHarmonyModule
209+
const buildMeta = /** @type {BuildMeta} */ (
210+
moduleGraph.getParentModule(this).buildMeta
211+
);
212+
return buildMeta.strictHarmonyModule
205213
? ExportPresenceModes.ERROR
206214
: ExportPresenceModes.WARN;
207215
}
@@ -362,9 +370,10 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
362370
* @returns {string[]} generated code
363371
*/
364372
_trimIdsToThoseImported(ids, moduleGraph, dependency) {
373+
/** @type {string[]} */
365374
let trimmedIds = [];
366375
const exportsInfo = moduleGraph.getExportsInfo(
367-
moduleGraph.getModule(dependency)
376+
/** @type {Module} */ (moduleGraph.getModule(dependency))
368377
);
369378
let currentExportsInfo = /** @type {ExportsInfo=} */ exportsInfo;
370379
for (let i = 0; i < ids.length; i++) {
@@ -437,7 +446,7 @@ HarmonyImportSpecifierDependency.Template = class HarmonyImportSpecifierDependen
437446

438447
exportExpr = runtimeTemplate.exportFromImport({
439448
moduleGraph,
440-
module: moduleGraph.getModule(dep),
449+
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
441450
request: dep.request,
442451
exportName: ids,
443452
originModule: module,

lib/dependencies/ImportDependency.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ const ModuleDependency = require("./ModuleDependency");
1313
/** @typedef {import("../AsyncDependenciesBlock")} AsyncDependenciesBlock */
1414
/** @typedef {import("../Dependency").ReferencedExport} ReferencedExport */
1515
/** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */
16+
/** @typedef {import("../Module")} Module */
17+
/** @typedef {import("../Module").BuildMeta} BuildMeta */
1618
/** @typedef {import("../ModuleGraph")} ModuleGraph */
1719
/** @typedef {import("../javascript/JavascriptParser").Range} Range */
1820
/** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */
@@ -23,7 +25,7 @@ class ImportDependency extends ModuleDependency {
2325
/**
2426
* @param {string} request the request
2527
* @param {Range} range expression range
26-
* @param {string[][]=} referencedExports list of referenced exports
28+
* @param {(string[][] | null)=} referencedExports list of referenced exports
2729
*/
2830
constructor(request, range, referencedExports) {
2931
super(request);
@@ -96,9 +98,9 @@ ImportDependency.Template = class ImportDependencyTemplate extends (
9698
const content = runtimeTemplate.moduleNamespacePromise({
9799
chunkGraph,
98100
block: block,
99-
module: moduleGraph.getModule(dep),
101+
module: /** @type {Module} */ (moduleGraph.getModule(dep)),
100102
request: dep.request,
101-
strict: module.buildMeta.strictHarmonyModule,
103+
strict: /** @type {BuildMeta} */ (module.buildMeta).strictHarmonyModule,
102104
message: "import()",
103105
runtimeRequirements
104106
});

lib/dependencies/ImportEagerDependency.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ class ImportEagerDependency extends ImportDependency {
2121
/**
2222
* @param {string} request the request
2323
* @param {Range} range expression range
24-
* @param {string[][]=} referencedExports list of referenced exports
24+
* @param {(string[][] | null)=} referencedExports list of referenced exports
2525
*/
2626
constructor(request, range, referencedExports) {
2727
super(request, range, referencedExports);

0 commit comments

Comments
 (0)