@@ -39,6 +39,7 @@ interface CreateResolveRequestOptions {
3939 } ;
4040 options : ModuleFederationConfigNormalized ;
4141 vmManager : VirtualModuleManager ;
42+ customResolver ?: CustomResolver ;
4243}
4344
4445export function createResolveRequest ( {
@@ -47,6 +48,7 @@ export function createResolveRequest({
4748 hacks,
4849 paths,
4950 isRemote,
51+ customResolver,
5052} : CreateResolveRequestOptions ) : CustomResolver {
5153 const hostEntryPathRegex = getEntryPathRegex ( {
5254 entry : paths . hostEntry ,
@@ -116,7 +118,9 @@ export function createResolveRequest({
116118 if ( [ paths . initHost ] . includes ( context . originModulePath ) ) {
117119 // init-host contains definition of shared modules so we need to prevent
118120 // circular import of shared module, by allowing import shared dependencies directly
119- return context . resolveRequest ( context , moduleName , platform ) ;
121+ return customResolver
122+ ? customResolver ( context , moduleName , platform )
123+ : context . resolveRequest ( context , moduleName , platform ) ;
120124 }
121125
122126 // shared modules handling in remote-entry.js
@@ -127,7 +131,9 @@ export function createResolveRequest({
127131 const sharedPath = getSharedPath ( moduleName , paths . tmpDir ) ;
128132 return { type : 'sourceFile' , filePath : sharedPath } ;
129133 }
130- return context . resolveRequest ( context , moduleName , platform ) ;
134+ return customResolver
135+ ? customResolver ( context , moduleName , platform )
136+ : context . resolveRequest ( context , moduleName , platform ) ;
131137 }
132138
133139 // remote modules
@@ -154,15 +160,19 @@ export function createResolveRequest({
154160
155161 // replace getDevServer module in remote with our own implementation
156162 if ( isRemote && moduleName . endsWith ( 'getDevServer' ) ) {
157- const res = context . resolveRequest ( context , moduleName , platform ) ;
163+ const res = customResolver
164+ ? customResolver ( context , moduleName , platform )
165+ : context . resolveRequest ( context , moduleName , platform ) ;
158166 const from = GET_DEV_SERVER_REGEX ;
159167 const to = resolveModule ( 'getDevServer.ts' ) ;
160168 return replaceModule ( from , to ) ( res ) ;
161169 }
162170
163171 // replace HMRClient module with HMRClientShim when using bundle commands
164172 if ( isUsingMFBundleCommand ( ) && moduleName . endsWith ( 'HMRClient' ) ) {
165- const res = context . resolveRequest ( context , moduleName , platform ) ;
173+ const res = customResolver
174+ ? customResolver ( context , moduleName , platform )
175+ : context . resolveRequest ( context , moduleName , platform ) ;
166176 const from = HMR_CLIENT_REGEX ;
167177 const to = resolveModule ( 'HMRClientShim.ts' ) ;
168178 return replaceModule ( from , to ) ( res ) ;
@@ -175,14 +185,18 @@ export function createResolveRequest({
175185 moduleName . endsWith ( 'HMRClient' ) &&
176186 context . originModulePath !== resolveModule ( 'HMRClient.ts' )
177187 ) {
178- const res = context . resolveRequest ( context , moduleName , platform ) ;
188+ const res = customResolver
189+ ? customResolver ( context , moduleName , platform )
190+ : context . resolveRequest ( context , moduleName , platform ) ;
179191 const from = HMR_CLIENT_REGEX ;
180192 const to = resolveModule ( 'HMRClient.ts' ) ;
181193 // replace HMRClient with our own
182194 return replaceModule ( from , to ) ( res ) ;
183195 }
184196
185- return context . resolveRequest ( context , moduleName , platform ) ;
197+ return customResolver
198+ ? customResolver ( context , moduleName , platform )
199+ : context . resolveRequest ( context , moduleName , platform ) ;
186200 } ;
187201}
188202
0 commit comments