From 14cca11c55f2e5e68fb71887cb056a7f697b0302 Mon Sep 17 00:00:00 2001 From: Philipp Kunz Date: Sun, 29 May 2022 21:29:42 +0200 Subject: [PATCH] fix(core): update --- ts/00_commitinfo_data.ts | 2 +- ts/index.ts | 14 +++++++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/ts/00_commitinfo_data.ts b/ts/00_commitinfo_data.ts index 8b57081..8aa62a1 100644 --- a/ts/00_commitinfo_data.ts +++ b/ts/00_commitinfo_data.ts @@ -3,6 +3,6 @@ */ export const commitinfo = { name: '@pushrocks/webrequest', - version: '3.0.6', + version: '3.0.7', description: 'securely request from browsers' } diff --git a/ts/index.ts b/ts/index.ts index 38e07be..b642fc3 100644 --- a/ts/index.ts +++ b/ts/index.ts @@ -49,7 +49,7 @@ export class WebRequest { const response: Response = await this.request(urlArg, { body: plugins.smartjson.stringify(requestBody), method: 'POST', - useCache: useCacheArg + useCache: useCacheArg, }); const responseText = await response.text(); const responseResult = plugins.smartjson.parse(responseText); @@ -103,12 +103,12 @@ export class WebRequest { let cachedResponseDeferred = plugins.smartpromise.defer(); let cacheUsed = false; if (optionsArg.useCache && this.cacheStore.check(urlArg)) { - const responseBuffer: ArrayBuffer = await this.cacheStore.get(urlArg) + const responseBuffer: ArrayBuffer = await this.cacheStore.get(urlArg); cachedResponseDeferred.resolve(new Response(responseBuffer, {})); } else { cachedResponseDeferred.resolve(null); } - const response: Response = await fetch(urlArg, { + let response: Response = await fetch(urlArg, { signal: controller.signal, method: optionsArg.method, headers: { @@ -116,8 +116,8 @@ export class WebRequest { ...(optionsArg.headers || {}), }, body: optionsArg.body, - }).catch(async err => { - if (optionsArg.useCache && await cachedResponseDeferred.promise) { + }).catch(async (err) => { + if (optionsArg.useCache && (await cachedResponseDeferred.promise)) { cacheUsed = true; const cachedResponse = cachedResponseDeferred.promise; return cachedResponse; @@ -125,6 +125,10 @@ export class WebRequest { return err; } }); + if (optionsArg.useCache && (await cachedResponseDeferred.promise) && response.status === 500) { + cacheUsed = true; + response = await cachedResponseDeferred.promise; + } if (!cacheUsed && optionsArg.useCache && response.status < 300) { const buffer = await response.clone().arrayBuffer(); await this.cacheStore.set(urlArg, buffer);