@@ -58,20 +58,24 @@ module.exports = class AliasPlugin {
58
58
. tapAsync ( "AliasPlugin" , ( request , resolveContext , callback ) => {
59
59
const innerRequest = request . request || request . path ;
60
60
if ( ! innerRequest ) return callback ( ) ;
61
+
61
62
forEachBail (
62
63
this . options ,
63
64
( item , callback ) => {
64
65
/** @type {boolean } */
65
66
let shouldStop = false ;
66
- if (
67
+
68
+ const matchRequest =
67
69
innerRequest === item . name ||
68
70
( ! item . onlyModule &&
69
71
( request . request
70
72
? innerRequest . startsWith ( `${ item . name } /` )
71
- : isSubPath ( innerRequest , item . name ) ) )
72
- ) {
73
- /** @type {string } */
74
- const remainingRequest = innerRequest . slice ( item . name . length ) ;
73
+ : isSubPath ( innerRequest , item . name ) ) ) ;
74
+
75
+ const splitName = item . name . split ( "*" ) ;
76
+ const matchWildcard = ! item . onlyModule && splitName . length === 2 ;
77
+
78
+ if ( matchRequest || matchWildcard ) {
75
79
/**
76
80
* @param {Alias } alias alias
77
81
* @param {(err?: null|Error, result?: null|ResolveRequest) => void } callback callback
@@ -90,12 +94,34 @@ module.exports = class AliasPlugin {
90
94
}
91
95
return callback ( null , ignoreObj ) ;
92
96
}
97
+
98
+ let newRequestStr ;
99
+
100
+ const [ prefix , suffix ] = splitName ;
101
+ if (
102
+ matchWildcard &&
103
+ innerRequest . startsWith ( prefix ) &&
104
+ innerRequest . endsWith ( suffix )
105
+ ) {
106
+ const match = innerRequest . slice (
107
+ prefix . length ,
108
+ innerRequest . length - suffix . length
109
+ ) ;
110
+ newRequestStr = item . alias . toString ( ) . replace ( "*" , match ) ;
111
+ }
112
+
93
113
if (
114
+ matchRequest &&
94
115
innerRequest !== alias &&
95
116
! innerRequest . startsWith ( alias + "/" )
96
117
) {
118
+ /** @type {string } */
119
+ const remainingRequest = innerRequest . slice ( item . name . length ) ;
120
+ newRequestStr = alias + remainingRequest ;
121
+ }
122
+
123
+ if ( newRequestStr !== undefined ) {
97
124
shouldStop = true ;
98
- const newRequestStr = alias + remainingRequest ;
99
125
/** @type {ResolveRequest } */
100
126
const obj = {
101
127
...request ,
@@ -122,6 +148,7 @@ module.exports = class AliasPlugin {
122
148
}
123
149
return callback ( ) ;
124
150
} ;
151
+
125
152
/**
126
153
* @param {null|Error } [err] error
127
154
* @param {null|ResolveRequest } [result] result
@@ -135,6 +162,7 @@ module.exports = class AliasPlugin {
135
162
if ( shouldStop ) return callback ( null , null ) ;
136
163
return callback ( ) ;
137
164
} ;
165
+
138
166
if ( Array . isArray ( item . alias ) ) {
139
167
return forEachBail (
140
168
item . alias ,
@@ -145,6 +173,7 @@ module.exports = class AliasPlugin {
145
173
return resolveWithAlias ( item . alias , stoppingCallback ) ;
146
174
}
147
175
}
176
+
148
177
return callback ( ) ;
149
178
} ,
150
179
callback
0 commit comments