@alwatr/fetch 4.0.0 → 4.0.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.0.1](https://github.com/Alwatr/nanolib/compare/@alwatr/fetch@4.0.0...@alwatr/fetch@4.0.1) (2024-09-21)
7
+
8
+ **Note:** Version bump only for package @alwatr/fetch
9
+
6
10
  ## [4.0.0](https://github.com/Alwatr/nanolib/compare/@alwatr/fetch@3.1.8...@alwatr/fetch@4.0.0) (2024-09-15)
7
11
 
8
12
  ### ⚠ BREAKING CHANGES
package/dist/main.cjs CHANGED
@@ -1,3 +1,3 @@
1
- /* @alwatr/fetch v4.0.0 */
2
- "use strict";var m=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var x=(e,r)=>{for(var a in r)m(e,a,{get:r[a],enumerable:!0})},v=(e,r,a,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let c of O(r))!k.call(e,c)&&c!==a&&m(e,c,{get:()=>r[c],enumerable:!(t=b(r,c))||t.enumerable});return e};var P=e=>v(m({},"__esModule",{value:!0}),e);var T={};x(T,{cacheSupported:()=>s,fetch:()=>S,fetchJson:()=>C});module.exports=P(T);var f=require("@alwatr/global-scope"),_=require("@alwatr/logger"),g=require("@alwatr/wait"),n=(0,_.definePackage)("@alwatr/fetch","4.0.0"),o,s=Object.hasOwn(f.globalScope,"caches"),u={};function w(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 R(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 y(e);n.logMethod?.("_handleRetryPattern"),e.retry--;let r=e.signal;try{let a=await y(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(0,g.waitForTimeout)(e.retryDelay),e.signal=r,i(e)}}function y(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")},e.timeout);f.globalScope.fetch(e.url,e).then(d=>r(d)).catch(d=>a(d)).finally(()=>{delete e.signal,clearTimeout(l)})}))}async function C(e){let r,a,t;try{return r=await S(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 S(e){return e=w(e),n.logMethodArgs?.("fetch",{options:e}),R(e)}0&&(module.exports={cacheSupported,fetch,fetchJson});
1
+ /* @alwatr/fetch v4.0.1 */
2
+ "use strict";var m=Object.defineProperty;var b=Object.getOwnPropertyDescriptor;var O=Object.getOwnPropertyNames;var k=Object.prototype.hasOwnProperty;var x=(e,r)=>{for(var a in r)m(e,a,{get:r[a],enumerable:!0})},v=(e,r,a,t)=>{if(r&&typeof r=="object"||typeof r=="function")for(let c of O(r))!k.call(e,c)&&c!==a&&m(e,c,{get:()=>r[c],enumerable:!(t=b(r,c))||t.enumerable});return e};var P=e=>v(m({},"__esModule",{value:!0}),e);var T={};x(T,{cacheSupported:()=>s,fetch:()=>S,fetchJson:()=>C});module.exports=P(T);var f=require("@alwatr/global-scope"),_=require("@alwatr/logger"),g=require("@alwatr/wait"),n=(0,_.definePackage)("@alwatr/fetch","4.0.1"),o,s=Object.hasOwn(f.globalScope,"caches"),u={};function w(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 R(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 y(e);n.logMethod?.("_handleRetryPattern"),e.retry--;let r=e.signal;try{let a=await y(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(0,g.waitForTimeout)(e.retryDelay),e.signal=r,i(e)}}function y(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")},e.timeout);f.globalScope.fetch(e.url,e).then(d=>r(d)).catch(d=>a(d)).finally(()=>{delete e.signal,clearTimeout(l)})}))}async function C(e){let r,a,t;try{return r=await S(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 S(e){return e=w(e),n.logMethodArgs?.("fetch",{options:e}),R(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.0.0 */
2
- import{globalScope as f}from"@alwatr/global-scope";import{definePackage as g}from"@alwatr/logger";import{waitForTimeout as w}from"@alwatr/wait";var n=g("@alwatr/fetch","4.0.0"),m,s=Object.hasOwn(f,"caches"),u={};function y(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 _(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 w(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")},e.timeout);f.fetch(e.url,e).then(d=>a(d)).catch(d=>t(d)).finally(()=>{delete e.signal,clearTimeout(l)})}))}async function v(e){let a,t,r;try{return a=await R(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 R(e){return e=y(e),n.logMethodArgs?.("fetch",{options:e}),_(e)}export{s as cacheSupported,R as fetch,v as fetchJson};
1
+ /* @alwatr/fetch v4.0.1 */
2
+ import{globalScope as f}from"@alwatr/global-scope";import{definePackage as g}from"@alwatr/logger";import{waitForTimeout as w}from"@alwatr/wait";var n=g("@alwatr/fetch","4.0.1"),m,s=Object.hasOwn(f,"caches"),u={};function y(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 _(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 w(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")},e.timeout);f.fetch(e.url,e).then(d=>a(d)).catch(d=>t(d)).finally(()=>{delete e.signal,clearTimeout(l)})}))}async function v(e){let a,t,r;try{return a=await R(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 R(e){return e=y(e),n.logMethodArgs?.("fetch",{options:e}),_(e)}export{s as cacheSupported,R as fetch,v 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.0.0",
3
+ "version": "4.0.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,12 +71,12 @@
71
71
  "clean": "rm -rfv dist *.tsbuildinfo"
72
72
  },
73
73
  "dependencies": {
74
- "@alwatr/global-scope": "^1.1.20",
75
- "@alwatr/logger": "^3.2.13",
76
- "@alwatr/wait": "^1.1.15"
74
+ "@alwatr/global-scope": "^1.1.21",
75
+ "@alwatr/logger": "^3.2.14",
76
+ "@alwatr/wait": "^1.1.16"
77
77
  },
78
78
  "devDependencies": {
79
- "@alwatr/nano-build": "^1.3.9",
79
+ "@alwatr/nano-build": "^1.3.10",
80
80
  "@alwatr/prettier-config": "^1.0.4",
81
81
  "@alwatr/tsconfig-base": "^1.2.0",
82
82
  "@alwatr/type-helper": "^1.2.6",
@@ -84,5 +84,5 @@
84
84
  "jest": "^29.7.0",
85
85
  "typescript": "^5.6.2"
86
86
  },
87
- "gitHead": "30b89ecac526d2549d7361843ec47f8dde056d45"
87
+ "gitHead": "6d82461cfdee936b30cbc67473a5a5048773255a"
88
88
  }