fix(core): update
This commit is contained in:
		| @@ -13,31 +13,24 @@ stages: | ||||
|   - metadata | ||||
|  | ||||
| before_script: | ||||
|   - npm install -g @shipzone/npmci | ||||
|   - pnpm install -g pnpm | ||||
|   - pnpm install -g @shipzone/npmci | ||||
|   - npmci npm prepare | ||||
|  | ||||
| # ==================== | ||||
| # security stage | ||||
| # ==================== | ||||
| mirror: | ||||
|   stage: security | ||||
|   script: | ||||
|     - npmci git mirror | ||||
|   only: | ||||
|     - tags | ||||
|   tags: | ||||
|     - lossless | ||||
|     - docker | ||||
|     - notpriv | ||||
|  | ||||
| # ==================== | ||||
| # security stage | ||||
| # ==================== | ||||
| auditProductionDependencies: | ||||
|   image: registry.gitlab.com/hosttoday/ht-docker-node:npmci | ||||
|   stage: security | ||||
|   script: | ||||
|     - npmci npm prepare | ||||
|     - npmci command npm install --production --ignore-scripts | ||||
|     - npmci command npm config set registry https://registry.npmjs.org | ||||
|     - npmci command npm audit --audit-level=high --only=prod --production | ||||
|      - npmci command npm config set registry https://registry.npmjs.org | ||||
|      - npmci command pnpm audit --audit-level=high --prod | ||||
|   tags: | ||||
|     - lossless | ||||
|     - docker | ||||
|   allow_failure: true | ||||
|  | ||||
| @@ -45,11 +38,10 @@ auditDevDependencies: | ||||
|   image: registry.gitlab.com/hosttoday/ht-docker-node:npmci | ||||
|   stage: security | ||||
|   script: | ||||
|     - npmci npm prepare | ||||
|     - npmci command npm install --ignore-scripts | ||||
|     - npmci command npm config set registry https://registry.npmjs.org | ||||
|     - npmci command npm audit --audit-level=high --only=dev | ||||
|     - npmci command pnpm audit --audit-level=high --dev | ||||
|   tags: | ||||
|     - lossless | ||||
|     - docker | ||||
|   allow_failure: true | ||||
|  | ||||
| @@ -60,7 +52,6 @@ auditDevDependencies: | ||||
| testStable: | ||||
|   stage: test | ||||
|   script: | ||||
|     - npmci npm prepare | ||||
|     - npmci node install stable | ||||
|     - npmci npm install | ||||
|     - npmci npm test | ||||
| @@ -71,10 +62,9 @@ testStable: | ||||
| testBuild: | ||||
|   stage: test | ||||
|   script: | ||||
|     - npmci npm prepare | ||||
|     - npmci node install stable | ||||
|     - npmci npm install | ||||
|     - npmci command npm run build | ||||
|     - npmci npm build | ||||
|   coverage: /\d+.?\d+?\%\s*coverage/ | ||||
|   tags: | ||||
|     - docker | ||||
| @@ -100,10 +90,9 @@ codequality: | ||||
|   only: | ||||
|     - tags | ||||
|   script: | ||||
|     - npmci command npm install -g tslint typescript | ||||
|     - npmci command npm install -g typescript | ||||
|     - npmci npm prepare | ||||
|     - npmci npm install | ||||
|     - npmci command "tslint -c tslint.json ./ts/**/*.ts" | ||||
|   tags: | ||||
|     - lossless | ||||
|     - docker | ||||
| @@ -123,11 +112,9 @@ trigger: | ||||
| pages: | ||||
|   stage: metadata | ||||
|   script: | ||||
|     - npmci node install lts | ||||
|     - npmci command npm install -g @gitzone/tsdoc | ||||
|     - npmci npm prepare | ||||
|     - npmci node install stable | ||||
|     - npmci npm install | ||||
|     - npmci command tsdoc | ||||
|     - npmci command npm run buildDocs | ||||
|   tags: | ||||
|     - lossless | ||||
|     - docker | ||||
|   | ||||
							
								
								
									
										14558
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										14558
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -10,7 +10,8 @@ | ||||
|   "license": "MIT", | ||||
|   "scripts": { | ||||
|     "test": "(tstest test/ --web)", | ||||
|     "build": "(tsbuild --web --allowimplicitany && tsbundle npm)" | ||||
|     "build": "(tsbuild --web --allowimplicitany && tsbundle npm)", | ||||
|     "buildDocs": "tsdoc" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@gitzone/tsbuild": "^2.1.65", | ||||
| @@ -44,4 +45,4 @@ | ||||
|   "browserslist": [ | ||||
|     "last 1 chrome versions" | ||||
|   ] | ||||
| } | ||||
| } | ||||
							
								
								
									
										39
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										39
									
								
								pnpm-lock.yaml
									
									
									
										generated
									
									
									
								
							| @@ -43,18 +43,6 @@ packages: | ||||
|       lru-cache: 7.14.1 | ||||
|     transitivePeerDependencies: | ||||
|       - supports-color | ||||
|     dev: false | ||||
|  | ||||
|   /@adobe/helix-fetch/3.1.2: | ||||
|     resolution: {integrity: sha512-09ImUUrHAyeJpDRBZbSPLI8cz1rVwmNmwWDpBsK+f+eiwzYGqcbN+P6pPyme3i+j1ONZSGL9SAuDXXg8fUTpYA==} | ||||
|     engines: {node: '>=12.0'} | ||||
|     dependencies: | ||||
|       debug: 4.3.4 | ||||
|       http-cache-semantics: 4.1.0 | ||||
|       lru-cache: 7.13.2 | ||||
|     transitivePeerDependencies: | ||||
|       - supports-color | ||||
|     dev: true | ||||
|  | ||||
|   /@apiglobal/typedrequest-interfaces/1.0.20: | ||||
|     resolution: {integrity: sha512-ybsDtavYbzGJYSLodSbkxDvSLYtfMzBTuNZDJpiANt1rZA2MO/GCq8zk5MVLlrUUQIr/7oxPGWqxi1QDwR+RHQ==} | ||||
| @@ -71,7 +59,7 @@ packages: | ||||
|       '@pushrocks/lik': 6.0.2 | ||||
|       '@pushrocks/smartdelay': 2.0.13 | ||||
|       '@pushrocks/smartpromise': 3.1.7 | ||||
|       '@pushrocks/webrequest': 3.0.13 | ||||
|       '@pushrocks/webrequest': 3.0.15 | ||||
|     transitivePeerDependencies: | ||||
|       - supports-color | ||||
|     dev: true | ||||
| @@ -714,7 +702,7 @@ packages: | ||||
|       '@pushrocks/smartfeed': 1.0.11 | ||||
|       '@pushrocks/smartxml': 1.0.6 | ||||
|       '@pushrocks/smartyaml': 2.0.5 | ||||
|       '@pushrocks/webrequest': 3.0.13 | ||||
|       '@pushrocks/webrequest': 3.0.15 | ||||
|       '@tsclass/tsclass': 3.0.48 | ||||
|     transitivePeerDependencies: | ||||
|       - supports-color | ||||
| @@ -855,10 +843,10 @@ packages: | ||||
|       - utf-8-validate | ||||
|     dev: true | ||||
|  | ||||
|   /@pushrocks/webrequest/3.0.13: | ||||
|     resolution: {integrity: sha512-HB5xjOv+BEkKWE7HkU7baI2RB6I76q4jY3fozQOLs0xWu2JLHXFWTpezYDocZzTkd/Ad7b54lxJD6O7ZxgMoFQ==} | ||||
|   /@pushrocks/webrequest/3.0.15: | ||||
|     resolution: {integrity: sha512-YrLEKMwUSc485RBRkAe8muoAY0ogLnyQ7SITt2CiLpirt5YchfpRKU2Yhz82Rma1Ptt8BNF1p8Uy+IIH/Hm6iw==} | ||||
|     dependencies: | ||||
|       '@adobe/helix-fetch': 3.1.2 | ||||
|       '@adobe/fetch': 4.0.1 | ||||
|       '@pushrocks/smartdelay': 2.0.13 | ||||
|       '@pushrocks/smartenv': 5.0.5 | ||||
|       '@pushrocks/smartjson': 5.0.5 | ||||
| @@ -1354,11 +1342,6 @@ packages: | ||||
|       - utf-8-validate | ||||
|     dev: true | ||||
|  | ||||
|   /@xmldom/xmldom/0.8.6: | ||||
|     resolution: {integrity: sha512-uRjjusqpoqfmRkTaNuLJ2VohVr67Q5YwDATW3VU7PfzTj6IRaihGrYI7zckGZjxQPBIp63nfvJbM+Yu5ICh0Bg==} | ||||
|     engines: {node: '>=10.0.0'} | ||||
|     dev: true | ||||
|  | ||||
|   /accepts/1.3.8: | ||||
|     resolution: {integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==} | ||||
|     engines: {node: '>= 0.6'} | ||||
| @@ -2648,10 +2631,6 @@ packages: | ||||
|       http-errors: 1.8.1 | ||||
|     dev: true | ||||
|  | ||||
|   /http-cache-semantics/4.1.0: | ||||
|     resolution: {integrity: sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==} | ||||
|     dev: true | ||||
|  | ||||
|   /http-cache-semantics/4.1.1: | ||||
|     resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==} | ||||
|  | ||||
| @@ -3138,15 +3117,9 @@ packages: | ||||
|       yallist: 4.0.0 | ||||
|     dev: true | ||||
|  | ||||
|   /lru-cache/7.13.2: | ||||
|     resolution: {integrity: sha512-VJL3nIpA79TodY/ctmZEfhASgqekbT574/c4j3jn4bKXbSCnTTCH/KltZyvL2GlV+tGSMtsWyem8DCX7qKTMBA==} | ||||
|     engines: {node: '>=12'} | ||||
|     dev: true | ||||
|  | ||||
|   /lru-cache/7.14.1: | ||||
|     resolution: {integrity: sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==} | ||||
|     engines: {node: '>=12'} | ||||
|     dev: false | ||||
|  | ||||
|   /make-dir/3.1.0: | ||||
|     resolution: {integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==} | ||||
| @@ -3481,8 +3454,6 @@ packages: | ||||
|     resolution: {integrity: sha512-mXF9AIgnvq1DP/ZM2R28tAfxP2wKZHYa2DjV0R1KCwcqSzm5Iqh1XQq9rdfAt6dp2DuPP0VHZIaCALc2v1cL5A==} | ||||
|     engines: {node: '>=14.18.0', npm: '>=6.14.15'} | ||||
|     hasBin: true | ||||
|     dependencies: | ||||
|       '@xmldom/xmldom': 0.8.6 | ||||
|     dev: true | ||||
|     bundledDependencies: | ||||
|       - '@xmldom/xmldom' | ||||
|   | ||||
| @@ -21,7 +21,6 @@ Code Style | [](htt | ||||
| PackagePhobia (total standalone install weight) | [](https://lossless.cloud) | ||||
| PackagePhobia (package size on registry) | [](https://lossless.cloud) | ||||
| BundlePhobia (total size when bundled) | [](https://lossless.cloud) | ||||
| Platform support | [](https://lossless.cloud) [](https://lossless.cloud) | ||||
|  | ||||
| ## Usage | ||||
|  | ||||
| @@ -33,7 +32,6 @@ We are always happy for code contributions. If you are not the code contributing | ||||
|  | ||||
| For further information read the linked docs at the top of this readme. | ||||
|  | ||||
| > MIT licensed | **©** [Lossless GmbH](https://lossless.gmbh) | ||||
| ## Legal | ||||
| > MIT licensed | **©** [Task Venture Capital GmbH](https://task.vc) | ||||
| | By using this npm module you agree to our [privacy policy](https://lossless.gmbH/privacy) | ||||
|  | ||||
| [](https://maintainedby.lossless.com) | ||||
|   | ||||
| @@ -2,10 +2,9 @@ import { expect, tap } from '@pushrocks/tapbundle'; | ||||
| import * as webrequest from '../ts/index.js'; | ||||
|  | ||||
| tap.test('should run multiendpoint request', async (tools) => { | ||||
|   const response = await new webrequest.WebRequest() | ||||
|     .request('https://api.signup.software', { | ||||
|       method: 'GET', | ||||
|     }) | ||||
|   const response = await new webrequest.WebRequest().request('https://api.signup.software', { | ||||
|     method: 'GET', | ||||
|   }); | ||||
|   console.log(JSON.stringify(await response.text())); | ||||
| }); | ||||
|  | ||||
|   | ||||
							
								
								
									
										23
									
								
								test/test.ts
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								test/test.ts
									
									
									
									
									
								
							| @@ -43,14 +43,19 @@ tap.test('setup test server', async () => { | ||||
| }); | ||||
|  | ||||
| tap.test('first test', async (tools) => { | ||||
|   const response = await (await new webrequest.WebRequest().requestMultiEndpoint([ | ||||
|     'http://localhost:2345/apiroute1', | ||||
|     'http://localhost:2345/apiroute2', | ||||
|     'http://localhost:2345/apiroute4', | ||||
|     'http://localhost:2345/apiroute3', | ||||
|   ], { | ||||
|     method: 'GET' | ||||
|   })).json(); | ||||
|   const response = await ( | ||||
|     await new webrequest.WebRequest().requestMultiEndpoint( | ||||
|       [ | ||||
|         'http://localhost:2345/apiroute1', | ||||
|         'http://localhost:2345/apiroute2', | ||||
|         'http://localhost:2345/apiroute4', | ||||
|         'http://localhost:2345/apiroute3', | ||||
|       ], | ||||
|       { | ||||
|         method: 'GET', | ||||
|       } | ||||
|     ) | ||||
|   ).json(); | ||||
|  | ||||
|   const response2 = await new webrequest.WebRequest().getJson('http://localhost:2345/apiroute3'); | ||||
|  | ||||
| @@ -68,6 +73,6 @@ tap.test('should cache response', async () => { | ||||
|   await testServer.stop(); | ||||
|   const response2 = await webrequestInstance.getJson('http://localhost:2345/apiroute3', true); | ||||
|   expect(response2).toHaveProperty('hithere'); | ||||
| }) | ||||
| }); | ||||
|  | ||||
| tap.start(); | ||||
|   | ||||
| @@ -3,6 +3,6 @@ | ||||
|  */ | ||||
| export const commitinfo = { | ||||
|   name: '@pushrocks/webrequest', | ||||
|   version: '3.0.15', | ||||
|   version: '3.0.16', | ||||
|   description: 'securely request from browsers' | ||||
| } | ||||
|   | ||||
							
								
								
									
										54
									
								
								ts/index.ts
									
									
									
									
									
								
							
							
						
						
									
										54
									
								
								ts/index.ts
									
									
									
									
									
								
							| @@ -10,10 +10,10 @@ export interface IWebrequestContructorOptions { | ||||
| export class WebRequest { | ||||
|   private static polyfillStatusEvaluated = false; | ||||
|   private static neededPolyfillsLoadedDeferred = plugins.smartpromise.defer<{ | ||||
|     fetch: typeof fetch, | ||||
|     Response: typeof Response, | ||||
|     AbortController?: typeof AbortController, | ||||
|     helixTimeout?: any, | ||||
|     fetch: typeof fetch; | ||||
|     Response: typeof Response; | ||||
|     AbortController?: typeof AbortController; | ||||
|     helixTimeout?: any; | ||||
|   }>(); | ||||
|  | ||||
|   /** | ||||
| @@ -42,7 +42,7 @@ export class WebRequest { | ||||
|           return fetch(...args); | ||||
|         }, | ||||
|         Response: globalThis.Response, | ||||
|         AbortController: globalThis.AbortController | ||||
|         AbortController: globalThis.AbortController, | ||||
|       }); | ||||
|     } | ||||
|   } | ||||
| @@ -57,8 +57,8 @@ export class WebRequest { | ||||
|   constructor(public optionsArg: IWebrequestContructorOptions = {}) { | ||||
|     this.options = { | ||||
|       logging: true, | ||||
|       ...optionsArg | ||||
|     } | ||||
|       ...optionsArg, | ||||
|     }; | ||||
|     WebRequest.loadNeededPolyfills(); | ||||
|   } | ||||
|  | ||||
| @@ -139,7 +139,7 @@ export class WebRequest { | ||||
|       useCache: false, | ||||
|       ...optionsArg, | ||||
|     }; | ||||
|      | ||||
|  | ||||
|     const fetchObject = await WebRequest.neededPolyfillsLoadedDeferred.promise; | ||||
|     let controller: AbortController; | ||||
|     if (optionsArg.timeoutMs) { | ||||
| @@ -150,34 +150,36 @@ export class WebRequest { | ||||
|         }); | ||||
|       } else { | ||||
|         controller = { | ||||
|           signal: fetchObject.helixTimeout(optionsArg.timeoutMs) | ||||
|           signal: fetchObject.helixTimeout(optionsArg.timeoutMs), | ||||
|         } as any; | ||||
|       } | ||||
|     } | ||||
|     let cachedResponseDeferred = plugins.smartpromise.defer<Response>(); | ||||
|     let cacheUsed = false; | ||||
|     if (optionsArg.useCache && await this.cacheStore.check(urlArg)) { | ||||
|     if (optionsArg.useCache && (await this.cacheStore.check(urlArg))) { | ||||
|       const responseBuffer: ArrayBuffer = await this.cacheStore.get(urlArg); | ||||
|       cachedResponseDeferred.resolve(new Response(responseBuffer, {})); | ||||
|     } else { | ||||
|       cachedResponseDeferred.resolve(null); | ||||
|     } | ||||
|     let response: Response = await fetchObject.fetch(urlArg, { | ||||
|       signal: controller ? controller.signal : null, | ||||
|       method: optionsArg.method, | ||||
|       headers: { | ||||
|         ...(optionsArg.headers || {}), | ||||
|       }, | ||||
|       body: optionsArg.body, | ||||
|     }).catch(async (err) => { | ||||
|       if (optionsArg.useCache && (await cachedResponseDeferred.promise)) { | ||||
|         cacheUsed = true; | ||||
|         const cachedResponse = cachedResponseDeferred.promise; | ||||
|         return cachedResponse; | ||||
|       } else { | ||||
|         return err; | ||||
|       } | ||||
|     }); | ||||
|     let response: Response = await fetchObject | ||||
|       .fetch(urlArg, { | ||||
|         signal: controller ? controller.signal : null, | ||||
|         method: optionsArg.method, | ||||
|         headers: { | ||||
|           ...(optionsArg.headers || {}), | ||||
|         }, | ||||
|         body: optionsArg.body, | ||||
|       }) | ||||
|       .catch(async (err) => { | ||||
|         if (optionsArg.useCache && (await cachedResponseDeferred.promise)) { | ||||
|           cacheUsed = true; | ||||
|           const cachedResponse = cachedResponseDeferred.promise; | ||||
|           return cachedResponse; | ||||
|         } else { | ||||
|           return err; | ||||
|         } | ||||
|       }); | ||||
|     if (optionsArg.useCache && (await cachedResponseDeferred.promise) && response.status === 500) { | ||||
|       cacheUsed = true; | ||||
|       response = await cachedResponseDeferred.promise; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user