feat: refactoring project

This commit is contained in:
Carlos
2024-11-23 14:56:07 -05:00
parent f0c2a50c18
commit 1c6db5818d
2351 changed files with 39323 additions and 60326 deletions

View File

@@ -7,15 +7,28 @@
const DelegatedModule = require("./DelegatedModule");
/** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptions} DllReferencePluginOptions */
/** @typedef {import("../declarations/plugins/DllReferencePlugin").DllReferencePluginOptionsContent} DllReferencePluginOptionsContent */
/** @typedef {import("./DelegatedModule").Data} Data */
/** @typedef {import("./DelegatedModule").SourceRequest} SourceRequest */
/** @typedef {import("./DelegatedModule").Type} Type */
/** @typedef {import("./NormalModuleFactory")} NormalModuleFactory */
// options.source
// options.type
// options.context
// options.scope
// options.content
// options.associatedObjectForCache
/**
* @typedef {object} Options
* @property {SourceRequest} source source
* @property {NonNullable<DllReferencePluginOptions["context"]>} context absolute context path to which lib ident is relative to
* @property {DllReferencePluginOptionsContent} content content
* @property {DllReferencePluginOptions["type"]} type type
* @property {DllReferencePluginOptions["extensions"]} extensions extensions
* @property {DllReferencePluginOptions["scope"]} scope scope
* @property {object=} associatedObjectForCache object for caching
*/
class DelegatedModuleFactoryPlugin {
/**
* @param {Options} options options
*/
constructor(options) {
this.options = options;
options.type = options.type || "require";
@@ -35,7 +48,7 @@ class DelegatedModuleFactoryPlugin {
const [dependency] = data.dependencies;
const { request } = dependency;
if (request && request.startsWith(`${scope}/`)) {
const innerRequest = "." + request.slice(scope.length);
const innerRequest = `.${request.slice(scope.length)}`;
let resolved;
if (innerRequest in this.options.content) {
resolved = this.options.content[innerRequest];
@@ -44,14 +57,17 @@ class DelegatedModuleFactoryPlugin {
new DelegatedModule(
this.options.source,
resolved,
this.options.type,
/** @type {Type} */ (this.options.type),
innerRequest,
request
)
);
}
for (let i = 0; i < this.options.extensions.length; i++) {
const extension = this.options.extensions[i];
const extensions =
/** @type {string[]} */
(this.options.extensions);
for (let i = 0; i < extensions.length; i++) {
const extension = extensions[i];
const requestPlusExt = innerRequest + extension;
if (requestPlusExt in this.options.content) {
resolved = this.options.content[requestPlusExt];
@@ -60,7 +76,7 @@ class DelegatedModuleFactoryPlugin {
new DelegatedModule(
this.options.source,
resolved,
this.options.type,
/** @type {Type} */ (this.options.type),
requestPlusExt,
request + extension
)
@@ -76,17 +92,15 @@ class DelegatedModuleFactoryPlugin {
"DelegatedModuleFactoryPlugin",
module => {
const request = module.libIdent(this.options);
if (request) {
if (request in this.options.content) {
const resolved = this.options.content[request];
return new DelegatedModule(
this.options.source,
resolved,
this.options.type,
request,
module
);
}
if (request && request in this.options.content) {
const resolved = this.options.content[request];
return new DelegatedModule(
this.options.source,
resolved,
/** @type {Type} */ (this.options.type),
request,
module
);
}
return module;
}