From a911bd9fa1c5778b32284e229c3df727afa3f5f0 Mon Sep 17 00:00:00 2001 From: "alexander.akait" Date: Fri, 16 Jun 2023 21:49:43 +0300 Subject: [PATCH] refactor(types): more --- lib/AsyncDependenciesBlock.js | 2 +- lib/DllEntryPlugin.js | 5 ++++- .../HarmonyTopLevelThisParserPlugin.js | 2 +- lib/dependencies/ProvidedDependency.js | 5 ++++- .../RequireContextDependencyParserPlugin.js | 18 +++++++++++++----- .../RequireEnsureDependenciesBlock.js | 7 +++++-- ...quireEnsureDependenciesBlockParserPlugin.js | 7 ++++++- lib/dependencies/RequireHeaderDependency.js | 4 ++++ tsconfig.json | 2 +- types.d.ts | 4 ++-- 10 files changed, 41 insertions(+), 15 deletions(-) diff --git a/lib/AsyncDependenciesBlock.js b/lib/AsyncDependenciesBlock.js index befb1bce3..d15b32aac 100644 --- a/lib/AsyncDependenciesBlock.js +++ b/lib/AsyncDependenciesBlock.js @@ -23,7 +23,7 @@ class AsyncDependenciesBlock extends DependenciesBlock { /** * @param {ChunkGroupOptions & { entryOptions?: EntryOptions }} groupOptions options for the group * @param {DependencyLocation=} loc the line of code - * @param {string=} request the request + * @param {(string | null)=} request the request */ constructor(groupOptions, loc, request) { super(); diff --git a/lib/DllEntryPlugin.js b/lib/DllEntryPlugin.js index 62248ae05..27c784963 100644 --- a/lib/DllEntryPlugin.js +++ b/lib/DllEntryPlugin.js @@ -58,7 +58,10 @@ class DllEntryPlugin { this.options.name ), this.options, - callback + error => { + if (error) return callback(error); + callback(); + } ); }); } diff --git a/lib/dependencies/HarmonyTopLevelThisParserPlugin.js b/lib/dependencies/HarmonyTopLevelThisParserPlugin.js index f320e0a78..b8ba18486 100644 --- a/lib/dependencies/HarmonyTopLevelThisParserPlugin.js +++ b/lib/dependencies/HarmonyTopLevelThisParserPlugin.js @@ -30,7 +30,7 @@ class HarmonyTopLevelThisParserPlugin { ); dep.loc = /** @type {DependencyLocation} */ (node.loc); parser.state.module.addPresentationalDependency(dep); - return this; + return true; } }); } diff --git a/lib/dependencies/ProvidedDependency.js b/lib/dependencies/ProvidedDependency.js index 17bce4cab..ae854479e 100644 --- a/lib/dependencies/ProvidedDependency.js +++ b/lib/dependencies/ProvidedDependency.js @@ -17,6 +17,7 @@ const ModuleDependency = require("./ModuleDependency"); /** @typedef {import("../DependencyTemplate").DependencyTemplateContext} DependencyTemplateContext */ /** @typedef {import("../DependencyTemplates")} DependencyTemplates */ /** @typedef {import("../ModuleGraph")} ModuleGraph */ +/** @typedef {import("../ModuleGraphConnection")} ModuleGraphConnection */ /** @typedef {import("../RuntimeTemplate")} RuntimeTemplate */ /** @typedef {import("../javascript/JavascriptParser").Range} Range */ /** @typedef {import("../serialization/ObjectMiddleware").ObjectDeserializerContext} ObjectDeserializerContext */ @@ -127,7 +128,9 @@ class ProvidedDependencyTemplate extends ModuleDependency.Template { } ) { const dep = /** @type {ProvidedDependency} */ (dependency); - const connection = moduleGraph.getConnection(dep); + const connection = + /** @type {ModuleGraphConnection} */ + (moduleGraph.getConnection(dep)); const exportsInfo = moduleGraph.getExportsInfo(connection.module); const usedName = exportsInfo.getUsedName(dep.ids, runtime); initFragments.push( diff --git a/lib/dependencies/RequireContextDependencyParserPlugin.js b/lib/dependencies/RequireContextDependencyParserPlugin.js index 850466459..807407601 100644 --- a/lib/dependencies/RequireContextDependencyParserPlugin.js +++ b/lib/dependencies/RequireContextDependencyParserPlugin.js @@ -7,7 +7,15 @@ const RequireContextDependency = require("./RequireContextDependency"); +/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */ +/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */ +/** @typedef {import("../javascript/JavascriptParser").Range} Range */ + module.exports = class RequireContextDependencyParserPlugin { + /** + * @param {JavascriptParser} parser the parser + * @returns {void} + */ apply(parser) { parser.hooks.call .for("require.context") @@ -19,19 +27,19 @@ module.exports = class RequireContextDependencyParserPlugin { case 4: { const modeExpr = parser.evaluateExpression(expr.arguments[3]); if (!modeExpr.isString()) return; - mode = modeExpr.string; + mode = /** @type {string} */ (modeExpr.string); } // falls through case 3: { const regExpExpr = parser.evaluateExpression(expr.arguments[2]); if (!regExpExpr.isRegExp()) return; - regExp = regExpExpr.regExp; + regExp = /** @type {RegExp} */ (regExpExpr.regExp); } // falls through case 2: { const recursiveExpr = parser.evaluateExpression(expr.arguments[1]); if (!recursiveExpr.isBoolean()) return; - recursive = recursiveExpr.bool; + recursive = /** @type {boolean} */ (recursiveExpr.bool); } // falls through case 1: { @@ -45,9 +53,9 @@ module.exports = class RequireContextDependencyParserPlugin { mode, category: "commonjs" }, - expr.range + /** @type {Range} */ (expr.range) ); - dep.loc = expr.loc; + dep.loc = /** @type {DependencyLocation} */ (expr.loc); dep.optional = !!parser.scope.inTry; parser.state.current.addDependency(dep); return true; diff --git a/lib/dependencies/RequireEnsureDependenciesBlock.js b/lib/dependencies/RequireEnsureDependenciesBlock.js index 51c0984c4..6cf8294e5 100644 --- a/lib/dependencies/RequireEnsureDependenciesBlock.js +++ b/lib/dependencies/RequireEnsureDependenciesBlock.js @@ -8,10 +8,13 @@ const AsyncDependenciesBlock = require("../AsyncDependenciesBlock"); const makeSerializable = require("../util/makeSerializable"); +/** @typedef {import("../ChunkGroup").ChunkGroupOptions} ChunkGroupOptions */ +/** @typedef {import("../Dependency").DependencyLocation} DependencyLocation */ + class RequireEnsureDependenciesBlock extends AsyncDependenciesBlock { /** - * @param {TODO} chunkName chunk name - * @param {TODO} loc location info + * @param {ChunkGroupOptions & { entryOptions?: TODO }} chunkName chunk name + * @param {DependencyLocation} loc location info */ constructor(chunkName, loc) { super(chunkName, loc, null); diff --git a/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js b/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js index f9e78e5eb..7ec020468 100644 --- a/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js +++ b/lib/dependencies/RequireEnsureDependenciesBlockParserPlugin.js @@ -10,6 +10,9 @@ const RequireEnsureDependency = require("./RequireEnsureDependency"); const RequireEnsureItemDependency = require("./RequireEnsureItemDependency"); const getFunctionExpression = require("./getFunctionExpression"); +/** @typedef {import("../ChunkGroup").ChunkGroupOptions} ChunkGroupOptions */ +/** @typedef {import("../javascript/JavascriptParser")} JavascriptParser */ + module.exports = class RequireEnsureDependenciesBlockParserPlugin { apply(parser) { parser.hooks.call @@ -57,7 +60,9 @@ module.exports = class RequireEnsureDependenciesBlockParserPlugin { } const depBlock = new RequireEnsureDependenciesBlock( - chunkName, + /** @type {ChunkGroupOptions & { entryOptions?: TODO }} */ ( + chunkName + ), expr.loc ); const errorCallbackExists = diff --git a/lib/dependencies/RequireHeaderDependency.js b/lib/dependencies/RequireHeaderDependency.js index 04da525a5..7bf756035 100644 --- a/lib/dependencies/RequireHeaderDependency.js +++ b/lib/dependencies/RequireHeaderDependency.js @@ -35,6 +35,10 @@ class RequireHeaderDependency extends NullDependency { super.serialize(context); } + /** + * @param {ObjectDeserializerContext} context context + * @returns {RequireHeaderDependency} RequireHeaderDependency + */ static deserialize(context) { const obj = new RequireHeaderDependency(context.read()); obj.deserialize(context); diff --git a/tsconfig.json b/tsconfig.json index 15a146707..84f9de294 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "allowJs": true, "checkJs": true, "noEmit": true, - "strict": true, + "strict": false, "noImplicitThis": true, "alwaysStrict": true, "types": ["node"], diff --git a/types.d.ts b/types.d.ts index c44057e1e..8e57cefb3 100644 --- a/types.d.ts +++ b/types.d.ts @@ -355,13 +355,13 @@ declare class AsyncDependenciesBlock extends DependenciesBlock { entryOptions?: EntryOptions; }, loc?: SyntheticDependencyLocation | RealDependencyLocation, - request?: string + request?: null | string ); groupOptions: RawChunkGroupOptions & { name?: string } & { entryOptions?: EntryOptions; }; loc?: SyntheticDependencyLocation | RealDependencyLocation; - request?: string; + request?: null | string; chunkName?: string; module: any; }