fix(core): update
This commit is contained in:
		
							
								
								
									
										28
									
								
								ts/index.ts
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								ts/index.ts
									
									
									
									
									
								
							| @@ -9,7 +9,11 @@ export interface IWebrequestContructorOptions { | ||||
|  */ | ||||
| export class WebRequest { | ||||
|   private static polyfillStatusEvaluated = false; | ||||
|   private static neededPolyfillsLoadedDeferred = plugins.smartpromise.defer(); | ||||
|   private static neededPolyfillsLoadedDeferred = plugins.smartpromise.defer<{ | ||||
|     fetch: typeof fetch, | ||||
|     Response: typeof Response, | ||||
|     AbortController: typeof AbortController | ||||
|   }>(); | ||||
|   public static async loadNeededPolyfills() { | ||||
|     if (this.polyfillStatusEvaluated) { | ||||
|       return this.neededPolyfillsLoadedDeferred.promise; | ||||
| @@ -18,11 +22,19 @@ export class WebRequest { | ||||
|     const smartenv = new plugins.smartenv.Smartenv(); | ||||
|     if (!smartenv.isBrowser) { | ||||
|       this.polyfillStatusEvaluated = true; | ||||
|       const fetchMod = await smartenv.getSafeNodeModule('node-fetch'); | ||||
|       globalThis.Response = fetchMod.Response; | ||||
|       globalThis.fetch = fetchMod.default; | ||||
|       const fetchMod = await smartenv.getSafeNodeModule('@adobe/helix-fetch'); | ||||
|       this.neededPolyfillsLoadedDeferred.resolve({ | ||||
|         fetch: fetchMod.fetch, | ||||
|         Response: fetchMod.Response, | ||||
|         AbortController: fetchMod.AbortSignal | ||||
|       }); | ||||
|     } else { | ||||
|       this.neededPolyfillsLoadedDeferred.resolve({ | ||||
|         fetch: globalThis.fetch, | ||||
|         Response: globalThis.Response, | ||||
|         AbortController: globalThis.AbortController | ||||
|       }); | ||||
|     } | ||||
|     this.neededPolyfillsLoadedDeferred.resolve(); | ||||
|   } | ||||
|  | ||||
|   public cacheStore = new plugins.webstore.WebStore({ | ||||
| @@ -103,8 +115,8 @@ export class WebRequest { | ||||
|       timeoutMs?: number; | ||||
|     } | ||||
|   ) { | ||||
|     await WebRequest.neededPolyfillsLoadedDeferred.promise; | ||||
|     const controller = new AbortController(); | ||||
|     const fetchObject = await WebRequest.neededPolyfillsLoadedDeferred.promise; | ||||
|     const controller = new fetchObject.AbortController(); | ||||
|     if (optionsArg.timeoutMs) { | ||||
|       plugins.smartdelay.delayFor(optionsArg.timeoutMs).then(() => { | ||||
|         controller.abort(); | ||||
| @@ -118,7 +130,7 @@ export class WebRequest { | ||||
|     } else { | ||||
|       cachedResponseDeferred.resolve(null); | ||||
|     } | ||||
|     let response: Response = await fetch(urlArg, { | ||||
|     let response: Response = await fetchObject.fetch(urlArg, { | ||||
|       signal: controller.signal, | ||||
|       method: optionsArg.method, | ||||
|       headers: { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user