Skip to content

Commit a7d9693

Browse files
committed
fix: test
1 parent 733cddf commit a7d9693

File tree

3 files changed

+129
-111
lines changed

3 files changed

+129
-111
lines changed

lib/AliasPlugin.js

Lines changed: 125 additions & 108 deletions
Original file line numberDiff line numberDiff line change
@@ -57,125 +57,142 @@ module.exports = class AliasPlugin {
5757
};
5858
resolver
5959
.getHook(this.source)
60-
.tapAsync("AliasPlugin", async (request, resolveContext, callback) => {
60+
.tapAsync("AliasPlugin", (request, resolveContext, callback) => {
6161
const innerRequest = request.request || request.path;
6262
if (!innerRequest) return callback();
6363

64-
const options = await this.options;
65-
const normalizedOptions = Array.isArray(options) ? options : [options];
66-
67-
forEachBail(
68-
normalizedOptions,
69-
(item, callback) => {
70-
/** @type {boolean} */
71-
let shouldStop = false;
72-
73-
const matchRequest =
74-
innerRequest === item.name ||
75-
(!item.onlyModule &&
76-
(request.request
77-
? innerRequest.startsWith(`${item.name}/`)
78-
: isSubPath(innerRequest, item.name)));
79-
80-
const splitName = item.name.split("*");
81-
const matchWildcard = !item.onlyModule && splitName.length === 2;
82-
83-
if (matchRequest || matchWildcard) {
84-
/**
85-
* @param {Alias} alias alias
86-
* @param {(err?: null|Error, result?: null|ResolveRequest) => void} callback callback
87-
* @returns {void}
88-
*/
89-
const resolveWithAlias = (alias, callback) => {
90-
if (alias === false) {
91-
/** @type {ResolveRequest} */
92-
const ignoreObj = {
93-
...request,
94-
path: false,
95-
};
96-
if (typeof resolveContext.yield === "function") {
97-
resolveContext.yield(ignoreObj);
98-
return callback(null, null);
64+
/**
65+
* @param {AliasOption | Array<AliasOption>} options options
66+
* @returns {void}
67+
*/
68+
const applyOptions = (options) => {
69+
const normalizedOptions = Array.isArray(options)
70+
? options
71+
: [options];
72+
73+
forEachBail(
74+
normalizedOptions,
75+
(item, callback) => {
76+
/** @type {boolean} */
77+
let shouldStop = false;
78+
79+
const matchRequest =
80+
innerRequest === item.name ||
81+
(!item.onlyModule &&
82+
(request.request
83+
? innerRequest.startsWith(`${item.name}/`)
84+
: isSubPath(innerRequest, item.name)));
85+
86+
const splitName = item.name.split("*");
87+
const matchWildcard = !item.onlyModule && splitName.length === 2;
88+
89+
if (matchRequest || matchWildcard) {
90+
/**
91+
* @param {Alias} alias alias
92+
* @param {(err?: null|Error, result?: null|ResolveRequest) => void} callback callback
93+
* @returns {void}
94+
*/
95+
const resolveWithAlias = (alias, callback) => {
96+
if (alias === false) {
97+
/** @type {ResolveRequest} */
98+
const ignoreObj = {
99+
...request,
100+
path: false,
101+
};
102+
if (typeof resolveContext.yield === "function") {
103+
resolveContext.yield(ignoreObj);
104+
return callback(null, null);
105+
}
106+
return callback(null, ignoreObj);
99107
}
100-
return callback(null, ignoreObj);
101-
}
102108

103-
let newRequestStr;
104-
105-
const [prefix, suffix] = splitName;
106-
if (
107-
matchWildcard &&
108-
innerRequest.startsWith(prefix) &&
109-
innerRequest.endsWith(suffix)
110-
) {
111-
const match = innerRequest.slice(
112-
prefix.length,
113-
innerRequest.length - suffix.length,
114-
);
115-
newRequestStr = item.alias.toString().replace("*", match);
116-
}
109+
let newRequestStr;
110+
111+
const [prefix, suffix] = splitName;
112+
if (
113+
matchWildcard &&
114+
innerRequest.startsWith(prefix) &&
115+
innerRequest.endsWith(suffix)
116+
) {
117+
const match = innerRequest.slice(
118+
prefix.length,
119+
innerRequest.length - suffix.length,
120+
);
121+
newRequestStr = item.alias.toString().replace("*", match);
122+
}
117123

118-
if (
119-
matchRequest &&
120-
innerRequest !== alias &&
121-
!innerRequest.startsWith(`${alias}/`)
122-
) {
123-
/** @type {string} */
124-
const remainingRequest = innerRequest.slice(item.name.length);
125-
newRequestStr = alias + remainingRequest;
126-
}
124+
if (
125+
matchRequest &&
126+
innerRequest !== alias &&
127+
!innerRequest.startsWith(`${alias}/`)
128+
) {
129+
/** @type {string} */
130+
const remainingRequest = innerRequest.slice(
131+
item.name.length,
132+
);
133+
newRequestStr = alias + remainingRequest;
134+
}
127135

128-
if (newRequestStr !== undefined) {
129-
shouldStop = true;
130-
/** @type {ResolveRequest} */
131-
const obj = {
132-
...request,
133-
request: newRequestStr,
134-
fullySpecified: false,
135-
};
136-
return resolver.doResolve(
137-
target,
138-
obj,
139-
`aliased with mapping '${item.name}': '${alias}' to '${newRequestStr}'`,
140-
resolveContext,
141-
(err, result) => {
142-
if (err) return callback(err);
143-
if (result) return callback(null, result);
144-
return callback();
145-
},
136+
if (newRequestStr !== undefined) {
137+
shouldStop = true;
138+
/** @type {ResolveRequest} */
139+
const obj = {
140+
...request,
141+
request: newRequestStr,
142+
fullySpecified: false,
143+
};
144+
return resolver.doResolve(
145+
target,
146+
obj,
147+
`aliased with mapping '${item.name}': '${alias}' to '${newRequestStr}'`,
148+
resolveContext,
149+
(err, result) => {
150+
if (err) return callback(err);
151+
if (result) return callback(null, result);
152+
return callback();
153+
},
154+
);
155+
}
156+
return callback();
157+
};
158+
159+
/**
160+
* @param {(null | Error)=} err error
161+
* @param {(null | ResolveRequest)=} result result
162+
* @returns {void}
163+
*/
164+
const stoppingCallback = (err, result) => {
165+
if (err) return callback(err);
166+
167+
if (result) return callback(null, result);
168+
// Don't allow other aliasing or raw request
169+
if (shouldStop) return callback(null, null);
170+
return callback();
171+
};
172+
173+
if (Array.isArray(item.alias)) {
174+
return forEachBail(
175+
item.alias,
176+
resolveWithAlias,
177+
stoppingCallback,
146178
);
147179
}
148-
return callback();
149-
};
150-
151-
/**
152-
* @param {(null | Error)=} err error
153-
* @param {(null | ResolveRequest)=} result result
154-
* @returns {void}
155-
*/
156-
const stoppingCallback = (err, result) => {
157-
if (err) return callback(err);
158-
159-
if (result) return callback(null, result);
160-
// Don't allow other aliasing or raw request
161-
if (shouldStop) return callback(null, null);
162-
return callback();
163-
};
164-
165-
if (Array.isArray(item.alias)) {
166-
return forEachBail(
167-
item.alias,
168-
resolveWithAlias,
169-
stoppingCallback,
170-
);
180+
return resolveWithAlias(item.alias, stoppingCallback);
171181
}
172-
return resolveWithAlias(item.alias, stoppingCallback);
173-
}
174182

175-
return callback();
176-
},
177-
callback,
178-
);
183+
return callback();
184+
},
185+
callback,
186+
);
187+
};
188+
189+
if (this.options instanceof Promise) {
190+
this.options.then((options) => {
191+
applyOptions(options);
192+
});
193+
} else {
194+
applyOptions(this.options);
195+
}
179196
});
180197
}
181198
};

lib/ResolverFactory.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ function createOptions(options) {
297297
preferRelative: options.preferRelative || false,
298298
preferAbsolute: options.preferAbsolute || false,
299299
restrictions: new Set(options.restrictions),
300-
tsconfig: options.tsconfig || "tsconfig.json",
300+
tsconfig: options.tsconfig || "",
301301
};
302302
}
303303

lib/TsconfigPathsPlugin.js

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,14 @@ module.exports = class TsconfigPathsPlugin {
3636
* @returns {void}
3737
*/
3838
apply(resolver) {
39+
if (!this.configFile) return;
40+
3941
const fs = resolver.fileSystem;
4042
// Load and convert tsconfig paths (including references) to AliasPlugin options
4143
const aliasOptions = this.loadAndConvertPaths(fs);
4244

4345
// Create and apply AliasPlugin with converted aliases
44-
const aliasPlugin = new AliasPlugin(this.source, aliasOptions, this.target);
45-
aliasPlugin.apply(resolver);
46+
new AliasPlugin(this.source, aliasOptions, this.target).apply(resolver);
4647
}
4748

4849
/**

0 commit comments

Comments
 (0)