@@ -57,125 +57,142 @@ module.exports = class AliasPlugin {
57
57
} ;
58
58
resolver
59
59
. getHook ( this . source )
60
- . tapAsync ( "AliasPlugin" , async ( request , resolveContext , callback ) => {
60
+ . tapAsync ( "AliasPlugin" , ( request , resolveContext , callback ) => {
61
61
const innerRequest = request . request || request . path ;
62
62
if ( ! innerRequest ) return callback ( ) ;
63
63
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 ) ;
99
107
}
100
- return callback ( null , ignoreObj ) ;
101
- }
102
108
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
+ }
117
123
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
+ }
127
135
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 ,
146
178
) ;
147
179
}
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 ) ;
171
181
}
172
- return resolveWithAlias ( item . alias , stoppingCallback ) ;
173
- }
174
182
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
+ }
179
196
} ) ;
180
197
}
181
198
} ;
0 commit comments