fix(core): update

This commit is contained in:
Philipp Kunz 2023-07-10 22:31:55 +02:00
parent 5c7f9e5bfa
commit 4a0f2288ca
4 changed files with 13 additions and 65 deletions

View File

@ -7,10 +7,10 @@
"projectType": "npm",
"module": {
"githost": "gitlab.com",
"gitscope": "pushrocks",
"gitscope": "push.rocks",
"gitrepo": "webrequest",
"description": "securely request from browsers",
"npmPackagename": "@pushrocks/webrequest",
"npmPackagename": "@push.rocks/webrequest",
"license": "MIT"
}
}

View File

@ -1,5 +1,5 @@
{
"name": "@pushrocks/webrequest",
"name": "@push.rocks/webrequest",
"version": "3.0.28",
"private": false,
"description": "securely request from browsers",

View File

@ -2,7 +2,7 @@
* autocreated commitinfo by @pushrocks/commitinfo
*/
export const commitinfo = {
name: '@pushrocks/webrequest',
version: '3.0.28',
name: '@push.rocks/webrequest',
version: '3.0.29',
description: 'securely request from browsers'
}

View File

@ -8,42 +8,6 @@ export interface IWebrequestContructorOptions {
* web request
*/
export class WebRequest {
private static polyfillStatusEvaluated = false;
private static neededPolyfillsLoadedDeferred = plugins.smartpromise.defer<{
fetch: typeof fetch;
Response: typeof Response;
AbortController?: typeof AbortController;
helixTimeout?: any;
}>();
/**
* loads the needed polyfill
* @returns
*/
public static async loadNeededPolyfills() {
if (this.polyfillStatusEvaluated) {
return this.neededPolyfillsLoadedDeferred.promise;
}
this.polyfillStatusEvaluated = true;
const smartenv = new plugins.smartenv.Smartenv();
if (!smartenv.isBrowser) {
this.polyfillStatusEvaluated = true;
const fetchMod = await smartenv.getSafeNodeModule('@adobe/fetch');
this.neededPolyfillsLoadedDeferred.resolve({
fetch: fetchMod.fetch,
Response: fetchMod.Response,
helixTimeout: fetchMod.timeoutSignal,
});
} else {
this.neededPolyfillsLoadedDeferred.resolve({
fetch: (...args) => {
return fetch(...args);
},
Response: globalThis.Response,
AbortController: globalThis.AbortController,
});
}
}
public cacheStore = new plugins.webstore.WebStore({
dbName: 'webrequest',
@ -57,11 +21,9 @@ export class WebRequest {
logging: true,
...optionsArg,
};
WebRequest.loadNeededPolyfills();
}
public async getJson(urlArg: string, useCacheArg: boolean = false) {
await WebRequest.neededPolyfillsLoadedDeferred.promise;
const response: Response = await this.request(urlArg, {
method: 'GET',
useCache: useCacheArg,
@ -75,7 +37,6 @@ export class WebRequest {
* postJson
*/
public async postJson(urlArg: string, requestBody?: any, useCacheArg: boolean = false) {
await WebRequest.neededPolyfillsLoadedDeferred.promise;
const response: Response = await this.request(urlArg, {
method: 'POST',
headers: {
@ -93,7 +54,6 @@ export class WebRequest {
* put js
*/
public async putJson(urlArg: string, requestBody?: any, useStoreAsFallback: boolean = false) {
await WebRequest.neededPolyfillsLoadedDeferred.promise;
const response: Response = await this.request(urlArg, {
method: 'PUT',
headers: {
@ -110,7 +70,6 @@ export class WebRequest {
* put js
*/
public async deleteJson(urlArg: string, useStoreAsFallback: boolean = false) {
await WebRequest.neededPolyfillsLoadedDeferred.promise;
const response: Response = await this.request(urlArg, {
headers: {
'Content-Type': 'application/json',
@ -138,20 +97,10 @@ export class WebRequest {
...optionsArg,
};
const fetchObject = await WebRequest.neededPolyfillsLoadedDeferred.promise;
let controller: AbortController;
if (optionsArg.timeoutMs) {
if (fetchObject.AbortController) {
controller = new fetchObject.AbortController();
let controller = new AbortController();
plugins.smartdelay.delayFor(optionsArg.timeoutMs).then(() => {
controller.abort();
});
} else {
controller = {
signal: fetchObject.helixTimeout(optionsArg.timeoutMs),
} as any;
}
}
let cachedResponseDeferred = plugins.smartpromise.defer<Response>();
let cacheUsed = false;
if (optionsArg.useCache && (await this.cacheStore.check(urlArg))) {
@ -160,9 +109,8 @@ export class WebRequest {
} else {
cachedResponseDeferred.resolve(null);
}
let response: Response = await fetchObject
.fetch(urlArg, {
signal: controller ? controller.signal : null,
let response: Response = await fetch(urlArg, {
signal: controller.signal,
method: optionsArg.method,
headers: {
...(optionsArg.headers || {}),
@ -201,7 +149,7 @@ export class WebRequest {
headers?: HeadersInit;
}
): Promise<Response> {
await WebRequest.neededPolyfillsLoadedDeferred.promise;
let allUrls: string[];
let usedUrlIndex = 0;