@alwatr/fetch 4.1.0 → 4.1.1

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 CHANGED
@@ -3,6 +3,10 @@
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.1](https://github.com/Alwatr/nanolib/compare/@alwatr/fetch@4.1.0...@alwatr/fetch@4.1.1) (2024-10-08)
7
+
8
+ **Note:** Version bump only for package @alwatr/fetch
9
+
6
10
  ## [4.1.0](https://github.com/Alwatr/nanolib/compare/@alwatr/fetch@4.0.1...@alwatr/fetch@4.1.0) (2024-09-29)
7
11
 
8
12
  ### Features
package/dist/main.cjs CHANGED
@@ -1,3 +1,3 @@
1
- /* @alwatr/fetch v4.1.0 */
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.0");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});
1
+ /* @alwatr/fetch v4.1.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");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.0 */
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.0");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};
1
+ /* @alwatr/fetch v4.1.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");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.0",
3
+ "version": "4.1.1",
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.0",
75
- "@alwatr/global-scope": "^1.1.22",
76
- "@alwatr/logger": "^4.0.0",
77
- "@alwatr/package-tracer": "^1.0.0",
78
- "@alwatr/parse-duration": "^1.1.0"
74
+ "@alwatr/delay": "^1.0.1",
75
+ "@alwatr/global-scope": "^1.1.23",
76
+ "@alwatr/logger": "^4.0.1",
77
+ "@alwatr/package-tracer": "^1.0.1",
78
+ "@alwatr/parse-duration": "^1.1.1"
79
79
  },
80
80
  "devDependencies": {
81
- "@alwatr/nano-build": "^1.4.0",
81
+ "@alwatr/nano-build": "^1.5.0",
82
82
  "@alwatr/prettier-config": "^1.0.5",
83
83
  "@alwatr/tsconfig-base": "^1.3.0",
84
84
  "@alwatr/type-helper": "^2.0.0",
85
85
  "jest": "^29.7.0",
86
86
  "typescript": "^5.6.2"
87
87
  },
88
- "gitHead": "cc1ea8b688232dcc60e9ebc904ec5566bc25c1ac"
88
+ "gitHead": "41bd9f5a9ffe1f7306b24e63684b1895428f44b0"
89
89
  }