From 95ce9628972710818d63cbe8cfa849fd388fbb4d Mon Sep 17 00:00:00 2001 From: Alexander Akait <4567934+alexander-akait@users.noreply.github.com> Date: Wed, 10 Sep 2025 01:43:17 +0300 Subject: [PATCH] refactor: avoid unnecessary the `defer` property for dependency (#19893) --- lib/Dependency.js | 5 ----- lib/ExportsInfo.js | 5 ++++- lib/dependencies/HarmonyAcceptDependency.js | 2 +- lib/dependencies/HarmonyImportDependency.js | 2 ++ lib/optimize/ConcatenatedModule.js | 2 +- types.d.ts | 2 +- 6 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/Dependency.js b/lib/Dependency.js index de8af223e..f1b1bc806 100644 --- a/lib/Dependency.js +++ b/lib/Dependency.js @@ -107,9 +107,6 @@ class Dependency { this.weak = false; // TODO check if this can be moved into ModuleDependency /** @type {boolean | undefined} */ - this.defer = false; - // TODO check if this can be moved into ModuleDependency - /** @type {boolean | undefined} */ this.optional = false; this._locSL = 0; this._locSC = 0; @@ -317,7 +314,6 @@ class Dependency { write(this._locEC); write(this._locI); write(this._locN); - write(this.defer); } /** @@ -332,7 +328,6 @@ class Dependency { this._locEC = read(); this._locI = read(); this._locN = read(); - this.defer = read(); } } diff --git a/lib/ExportsInfo.js b/lib/ExportsInfo.js index c3b0df908..d86d670e6 100644 --- a/lib/ExportsInfo.js +++ b/lib/ExportsInfo.js @@ -13,6 +13,7 @@ const { forEachRuntime } = require("./util/runtime"); /** @typedef {import("./Dependency")} Dependency */ /** @typedef {import("./Dependency").RuntimeSpec} RuntimeSpec */ /** @typedef {import("./Dependency").ExportsSpecExcludeExports} ExportsSpecExcludeExports */ +/** @typedef {import("./dependencies/HarmonyImportDependency")} HarmonyImportDependency */ /** @typedef {import("./Module")} Module */ /** @typedef {import("./ModuleGraph")} ModuleGraph */ /** @typedef {import("./ModuleGraphConnection")} ModuleGraphConnection */ @@ -1341,7 +1342,9 @@ class ExportInfo { module: rawTarget.connection.module, export: rawTarget.export, deferred: Boolean( - rawTarget.connection.dependency && rawTarget.connection.dependency.defer + rawTarget.connection.dependency && + /** @type {HarmonyImportDependency} */ + (rawTarget.connection.dependency).defer ) }; for (;;) { diff --git a/lib/dependencies/HarmonyAcceptDependency.js b/lib/dependencies/HarmonyAcceptDependency.js index 27383d2ad..61d747f21 100644 --- a/lib/dependencies/HarmonyAcceptDependency.js +++ b/lib/dependencies/HarmonyAcceptDependency.js @@ -120,7 +120,7 @@ HarmonyAcceptDependency.Template = class HarmonyAcceptDependencyTemplate extends for (const d of module.dependencies) { if (deferDependency && noDeferredDependency) break; if (isRelatedHarmonyImportDependency(dependency, d)) { - if (d.defer) { + if (/** @type {HarmonyImportDependency} */ (d).defer) { deferDependency = /** @type {HarmonyImportDependency} */ (d); } else { noDeferredDependency = /** @type {HarmonyImportDependency} */ (d); diff --git a/lib/dependencies/HarmonyImportDependency.js b/lib/dependencies/HarmonyImportDependency.js index 0832daa72..b74ad68b9 100644 --- a/lib/dependencies/HarmonyImportDependency.js +++ b/lib/dependencies/HarmonyImportDependency.js @@ -280,6 +280,7 @@ class HarmonyImportDependency extends ModuleDependency { const { write } = context; write(this.sourceOrder); write(this.assertions); + write(this.defer); super.serialize(context); } @@ -290,6 +291,7 @@ class HarmonyImportDependency extends ModuleDependency { const { read } = context; this.sourceOrder = read(); this.assertions = read(); + this.defer = read(); super.deserialize(context); } } diff --git a/lib/optimize/ConcatenatedModule.js b/lib/optimize/ConcatenatedModule.js index 71259cae6..254ae3ef6 100644 --- a/lib/optimize/ConcatenatedModule.js +++ b/lib/optimize/ConcatenatedModule.js @@ -1860,7 +1860,7 @@ ${defineGetters}` if (deferEnabled) { for (const dep of info.module.dependencies) { if ( - !dep.defer && + !(/** @type {HarmonyImportDependency} */ (dep).defer) && dep instanceof HarmonyImportSideEffectDependency ) { const referredModule = moduleGraph.getModule(dep); diff --git a/types.d.ts b/types.d.ts index e46296d1c..58f002051 100644 --- a/types.d.ts +++ b/types.d.ts @@ -3825,7 +3825,6 @@ declare interface DependenciesBlockLike { declare class Dependency { constructor(); weak: boolean; - defer?: boolean; optional?: boolean; get type(): string; get category(): string; @@ -6098,6 +6097,7 @@ declare class HarmonyImportDependency extends ModuleDependency { defer?: boolean ); sourceOrder: number; + defer?: boolean; getImportVar(moduleGraph: ModuleGraph): string; getModuleExports(__0: DependencyTemplateContext): string; getImportStatement(