@alwatr/fetch 4.1.0 → 4.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/README.md +1 -1
- package/dist/main.cjs +2 -2
- package/dist/main.mjs +2 -2
- package/package.json +11 -11
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [4.1.2](https://github.com/Alwatr/nanolib/compare/@alwatr/fetch@4.1.1...@alwatr/fetch@4.1.2) (2024-10-10)
|
|
7
|
+
|
|
8
|
+
### Dependencies update
|
|
9
|
+
|
|
10
|
+
* bump the development-dependencies group with 10 updates ([fa4aaf0](https://github.com/Alwatr/nanolib/commit/fa4aaf04c907ecae06aa14000ce35216170c15ad)) by @dependabot[bot]
|
|
11
|
+
|
|
12
|
+
## [4.1.1](https://github.com/Alwatr/nanolib/compare/@alwatr/fetch@4.1.0...@alwatr/fetch@4.1.1) (2024-10-08)
|
|
13
|
+
|
|
14
|
+
**Note:** Version bump only for package @alwatr/fetch
|
|
15
|
+
|
|
6
16
|
## [4.1.0](https://github.com/Alwatr/nanolib/compare/@alwatr/fetch@4.0.1...@alwatr/fetch@4.1.0) (2024-09-29)
|
|
7
17
|
|
|
8
18
|
### Features
|
package/README.md
CHANGED
|
@@ -56,7 +56,7 @@ console.log(productList);
|
|
|
56
56
|
|
|
57
57
|
## Sponsors
|
|
58
58
|
|
|
59
|
-
The following companies, organizations, and individuals support
|
|
59
|
+
The following companies, organizations, and individuals support Nanolib ongoing maintenance and development. Become a Sponsor to get your logo on our README and website.
|
|
60
60
|
|
|
61
61
|
[](https://exirstudio.com)
|
|
62
62
|
|
package/dist/main.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @alwatr/fetch v4.1.
|
|
2
|
-
"use strict";var m=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var C=(e,r)=>{for(var a in r)m(e,a,{get:r[a],enumerable:!0})},P=(e,r,a,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let c of x(r))!v.call(e,c)&&c!==a&&m(e,c,{get:()=>r[c],enumerable:!(t=k(r,c))||t.enumerable});return e};var T=e=>P(m({},"__esModule",{value:!0}),e);var F={};C(F,{cacheSupported:()=>s,fetch:()=>O,fetchJson:()=>A});module.exports=T(F);var y=require("@alwatr/delay"),f=require("@alwatr/global-scope"),g=require("@alwatr/logger"),w=require("@alwatr/package-tracer"),R=require("@alwatr/parse-duration");w.packageTracer.add("@alwatr/fetch","4.1.
|
|
1
|
+
/* @alwatr/fetch v4.1.2 */
|
|
2
|
+
"use strict";var m=Object.defineProperty;var k=Object.getOwnPropertyDescriptor;var x=Object.getOwnPropertyNames;var v=Object.prototype.hasOwnProperty;var C=(e,r)=>{for(var a in r)m(e,a,{get:r[a],enumerable:!0})},P=(e,r,a,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let c of x(r))!v.call(e,c)&&c!==a&&m(e,c,{get:()=>r[c],enumerable:!(t=k(r,c))||t.enumerable});return e};var T=e=>P(m({},"__esModule",{value:!0}),e);var F={};C(F,{cacheSupported:()=>s,fetch:()=>O,fetchJson:()=>A});module.exports=T(F);var y=require("@alwatr/delay"),f=require("@alwatr/global-scope"),g=require("@alwatr/logger"),w=require("@alwatr/package-tracer"),R=require("@alwatr/parse-duration");w.packageTracer.add("@alwatr/fetch","4.1.2");var n=(0,g.createLogger)("@alwatr/fetch"),o,s=Object.hasOwn(f.globalScope,"caches"),u={};function S(e){if(e.method??(e.method="GET"),e.window??(e.window=null),e.timeout??(e.timeout=8e3),e.retry??(e.retry=3),e.retryDelay??(e.retryDelay=1e3),e.cacheStrategy??(e.cacheStrategy="network_only"),e.removeDuplicate??(e.removeDuplicate="never"),e.headers??(e.headers={}),e.cacheStrategy!=="network_only"&&s!==!0&&(n.incident?.("fetch","fetch_cache_strategy_unsupported",{cacheSupported:s}),e.cacheStrategy="network_only"),e.removeDuplicate==="auto"&&(e.removeDuplicate=s?"until_load":"always"),e.url.lastIndexOf("?")===-1&&e.queryParams!=null){let r=e.queryParams,a=Object.keys(r).map(t=>`${t}=${String(r[t])}`);a.length>0&&(e.url+="?"+a.join("&"))}return e.bodyJson!==void 0&&(e.body=JSON.stringify(e.bodyJson),e.headers["Content-Type"]="application/json"),e.bearerToken!==void 0?e.headers.Authorization=`Bearer ${e.bearerToken}`:e.alwatrAuth!==void 0&&(e.headers.Authorization=`Alwatr ${e.alwatrAuth.userId}:${e.alwatrAuth.userToken}`),e}async function b(e){if(e.cacheStrategy==="network_only")return h(e);n.logMethod?.("_handleCacheStrategy"),o==null&&e.cacheStorageName==null&&(o=await caches.open("fetch_cache"));let r=e.cacheStorageName!=null?await caches.open(e.cacheStorageName):o,a=new Request(e.url,e);switch(e.cacheStrategy){case"cache_first":{let t=await r.match(a);if(t!=null)return t;let c=await h(e);return c.ok&&r.put(a,c.clone()),c}case"cache_only":{let t=await r.match(a);if(t==null)throw n.accident("_handleCacheStrategy","fetch_cache_not_found",{url:a.url}),new Error("fetch_cache_not_found");return t}case"network_first":try{let t=await h(e);return t.ok&&r.put(a,t.clone()),t}catch(t){let c=await r.match(a);if(c!=null)return c;throw t}case"update_cache":{let t=await h(e);return t.ok&&r.put(a,t.clone()),t}case"stale_while_revalidate":{let t=await r.match(a),c=h(e).then(l=>(l.ok&&(r.put(a,l.clone()),typeof e.revalidateCallback=="function"&&setTimeout(e.revalidateCallback,0,l.clone())),l));return t??c}default:return h(e)}}async function h(e){if(e.removeDuplicate==="never")return i(e);n.logMethod?.("handleRemoveDuplicate_");let r=e.method+" "+e.url;u[r]??(u[r]=i(e));try{let a=await u[r];return u[r]!=null&&(a.ok!==!0||e.removeDuplicate==="until_load")&&delete u[r],a.clone()}catch(a){throw delete u[r],a}}async function i(e){if(!(e.retry>1))return _(e);n.logMethod?.("_handleRetryPattern"),e.retry--;let r=e.signal;try{let a=await _(e);if(a.status<500)return a;throw new Error("fetch_server_error")}catch(a){if(n.accident("fetch","fetch_failed_retry",a),f.globalScope.navigator?.onLine===!1)throw n.accident("handleRetryPattern_","offline","Skip retry because offline"),a;return await y.delay.by(e.retryDelay),e.signal=r,i(e)}}function _(e){return e.timeout===0?f.globalScope.fetch(e.url,e):(n.logMethod?.("handleTimeout_"),new Promise((r,a)=>{let t=typeof AbortController=="function"?new AbortController:null,c=e.signal;e.signal=t?.signal,t!==null&&c!=null&&c.addEventListener("abort",()=>t.abort(),{once:!0});let l=setTimeout(()=>{a(new Error("fetch_timeout")),t?.abort("fetch_timeout")},(0,R.parseDuration)(e.timeout));f.globalScope.fetch(e.url,e).then(d=>r(d)).catch(d=>a(d)).finally(()=>{delete e.signal,clearTimeout(l)})}))}async function A(e){let r,a,t;try{return r=await O(e),a=await r.text(),t=JSON.parse(a),t.ok=!0,t.statusCode=r.status,t}catch(c){let l={ok:!1,statusCode:r?.status??500,errorCode:t?.errorCode??c.message,errorMessage:t?.errorMessage??c.message,responseText:a,meta:t?.meta};return n.accident("fetchJson","fetch_json_failed",{responseError:l,error:c}),l}}function O(e){return e=S(e),n.logMethodArgs?.("fetch",{options:e}),b(e)}0&&(module.exports={cacheSupported,fetch,fetchJson});
|
|
3
3
|
//# sourceMappingURL=main.cjs.map
|
package/dist/main.mjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
/* @alwatr/fetch v4.1.
|
|
2
|
-
import{delay as g}from"@alwatr/delay";import{globalScope as f}from"@alwatr/global-scope";import{createLogger as w}from"@alwatr/logger";import{packageTracer as R}from"@alwatr/package-tracer";import{parseDuration as S}from"@alwatr/parse-duration";R.add("@alwatr/fetch","4.1.
|
|
1
|
+
/* @alwatr/fetch v4.1.2 */
|
|
2
|
+
import{delay as g}from"@alwatr/delay";import{globalScope as f}from"@alwatr/global-scope";import{createLogger as w}from"@alwatr/logger";import{packageTracer as R}from"@alwatr/package-tracer";import{parseDuration as S}from"@alwatr/parse-duration";R.add("@alwatr/fetch","4.1.2");var n=w("@alwatr/fetch"),m,s=Object.hasOwn(f,"caches"),u={};function _(e){if(e.method??(e.method="GET"),e.window??(e.window=null),e.timeout??(e.timeout=8e3),e.retry??(e.retry=3),e.retryDelay??(e.retryDelay=1e3),e.cacheStrategy??(e.cacheStrategy="network_only"),e.removeDuplicate??(e.removeDuplicate="never"),e.headers??(e.headers={}),e.cacheStrategy!=="network_only"&&s!==!0&&(n.incident?.("fetch","fetch_cache_strategy_unsupported",{cacheSupported:s}),e.cacheStrategy="network_only"),e.removeDuplicate==="auto"&&(e.removeDuplicate=s?"until_load":"always"),e.url.lastIndexOf("?")===-1&&e.queryParams!=null){let a=e.queryParams,t=Object.keys(a).map(r=>`${r}=${String(a[r])}`);t.length>0&&(e.url+="?"+t.join("&"))}return e.bodyJson!==void 0&&(e.body=JSON.stringify(e.bodyJson),e.headers["Content-Type"]="application/json"),e.bearerToken!==void 0?e.headers.Authorization=`Bearer ${e.bearerToken}`:e.alwatrAuth!==void 0&&(e.headers.Authorization=`Alwatr ${e.alwatrAuth.userId}:${e.alwatrAuth.userToken}`),e}async function y(e){if(e.cacheStrategy==="network_only")return h(e);n.logMethod?.("_handleCacheStrategy"),m==null&&e.cacheStorageName==null&&(m=await caches.open("fetch_cache"));let a=e.cacheStorageName!=null?await caches.open(e.cacheStorageName):m,t=new Request(e.url,e);switch(e.cacheStrategy){case"cache_first":{let r=await a.match(t);if(r!=null)return r;let c=await h(e);return c.ok&&a.put(t,c.clone()),c}case"cache_only":{let r=await a.match(t);if(r==null)throw n.accident("_handleCacheStrategy","fetch_cache_not_found",{url:t.url}),new Error("fetch_cache_not_found");return r}case"network_first":try{let r=await h(e);return r.ok&&a.put(t,r.clone()),r}catch(r){let c=await a.match(t);if(c!=null)return c;throw r}case"update_cache":{let r=await h(e);return r.ok&&a.put(t,r.clone()),r}case"stale_while_revalidate":{let r=await a.match(t),c=h(e).then(l=>(l.ok&&(a.put(t,l.clone()),typeof e.revalidateCallback=="function"&&setTimeout(e.revalidateCallback,0,l.clone())),l));return r??c}default:return h(e)}}async function h(e){if(e.removeDuplicate==="never")return o(e);n.logMethod?.("handleRemoveDuplicate_");let a=e.method+" "+e.url;u[a]??(u[a]=o(e));try{let t=await u[a];return u[a]!=null&&(t.ok!==!0||e.removeDuplicate==="until_load")&&delete u[a],t.clone()}catch(t){throw delete u[a],t}}async function o(e){if(!(e.retry>1))return i(e);n.logMethod?.("_handleRetryPattern"),e.retry--;let a=e.signal;try{let t=await i(e);if(t.status<500)return t;throw new Error("fetch_server_error")}catch(t){if(n.accident("fetch","fetch_failed_retry",t),f.navigator?.onLine===!1)throw n.accident("handleRetryPattern_","offline","Skip retry because offline"),t;return await g.by(e.retryDelay),e.signal=a,o(e)}}function i(e){return e.timeout===0?f.fetch(e.url,e):(n.logMethod?.("handleTimeout_"),new Promise((a,t)=>{let r=typeof AbortController=="function"?new AbortController:null,c=e.signal;e.signal=r?.signal,r!==null&&c!=null&&c.addEventListener("abort",()=>r.abort(),{once:!0});let l=setTimeout(()=>{t(new Error("fetch_timeout")),r?.abort("fetch_timeout")},S(e.timeout));f.fetch(e.url,e).then(d=>a(d)).catch(d=>t(d)).finally(()=>{delete e.signal,clearTimeout(l)})}))}async function A(e){let a,t,r;try{return a=await b(e),t=await a.text(),r=JSON.parse(t),r.ok=!0,r.statusCode=a.status,r}catch(c){let l={ok:!1,statusCode:a?.status??500,errorCode:r?.errorCode??c.message,errorMessage:r?.errorMessage??c.message,responseText:t,meta:r?.meta};return n.accident("fetchJson","fetch_json_failed",{responseError:l,error:c}),l}}function b(e){return e=_(e),n.logMethodArgs?.("fetch",{options:e}),y(e)}export{s as cacheSupported,b as fetch,A as fetchJson};
|
|
3
3
|
//# sourceMappingURL=main.mjs.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@alwatr/fetch",
|
|
3
|
-
"version": "4.1.
|
|
3
|
+
"version": "4.1.2",
|
|
4
4
|
"description": "Enhanced fetch API with cache strategy, retry pattern, timeout, helper methods and enhanced types.",
|
|
5
5
|
"author": "S. Ali Mihandoost <ali.mihandoost@gmail.com>",
|
|
6
6
|
"keywords": [
|
|
@@ -71,19 +71,19 @@
|
|
|
71
71
|
"clean": "rm -rfv dist *.tsbuildinfo"
|
|
72
72
|
},
|
|
73
73
|
"dependencies": {
|
|
74
|
-
"@alwatr/delay": "^1.0.
|
|
75
|
-
"@alwatr/global-scope": "^1.1.
|
|
76
|
-
"@alwatr/logger": "^4.0.
|
|
77
|
-
"@alwatr/package-tracer": "^1.0.
|
|
78
|
-
"@alwatr/parse-duration": "^1.1.
|
|
74
|
+
"@alwatr/delay": "^1.0.2",
|
|
75
|
+
"@alwatr/global-scope": "^1.1.24",
|
|
76
|
+
"@alwatr/logger": "^4.0.2",
|
|
77
|
+
"@alwatr/package-tracer": "^1.0.2",
|
|
78
|
+
"@alwatr/parse-duration": "^1.1.2"
|
|
79
79
|
},
|
|
80
80
|
"devDependencies": {
|
|
81
|
-
"@alwatr/nano-build": "^1.
|
|
81
|
+
"@alwatr/nano-build": "^1.6.0",
|
|
82
82
|
"@alwatr/prettier-config": "^1.0.5",
|
|
83
|
-
"@alwatr/tsconfig-base": "^1.3.
|
|
84
|
-
"@alwatr/type-helper": "^2.0.
|
|
83
|
+
"@alwatr/tsconfig-base": "^1.3.1",
|
|
84
|
+
"@alwatr/type-helper": "^2.0.1",
|
|
85
85
|
"jest": "^29.7.0",
|
|
86
|
-
"typescript": "^5.6.
|
|
86
|
+
"typescript": "^5.6.3"
|
|
87
87
|
},
|
|
88
|
-
"gitHead": "
|
|
88
|
+
"gitHead": "6ad24764eae1b88d7d1bb19217578b02b8c22aaf"
|
|
89
89
|
}
|