reaxify 0.0.48 → 0.0.50

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.
@@ -1 +1 @@
1
- "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const f=require("../node_modules/react/jsx-runtime.cjs.js"),e=require("react"),t=e.createContext({config:{},cancelDuplicatedRequests:!1,cancelOnUnmount:!1,beforeRequest:[],afterResponse:[],afterError:[]});function x({config:r={},cancelDuplicatedRequests:o=!1,cancelOnUnmount:s=!1,beforeRequest:n=[],afterResponse:u=[],afterError:a=[],children:c}){const i=e.useCallback(l=>Promise.reject(l),[]);return f.jsxRuntimeExports.jsx(t.Provider,{value:{config:r,cancelDuplicatedRequests:o,cancelOnUnmount:s,beforeRequest:n,afterResponse:u,afterError:[i,...a]},children:c})}exports.AxiosContext=t;exports.default=x;
1
+ "use client";"use strict";Object.defineProperties(exports,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}});const c=require("../node_modules/react/jsx-runtime.cjs.js"),f=require("react"),e=f.createContext({config:{},cancelDuplicatedRequests:!1,cancelOnUnmount:!1,beforeRequest:[],afterResponse:[],afterError:[],beforeRetry:[],retry:null});function x({config:t={},cancelDuplicatedRequests:r=!1,cancelOnUnmount:o=!1,beforeRetry:s=[],beforeRequest:n=[],afterResponse:u=[],afterError:l=[],retry:i=null,children:a}){return c.jsxRuntimeExports.jsx(e.Provider,{value:{config:t,cancelDuplicatedRequests:r,cancelOnUnmount:o,beforeRequest:n,afterResponse:u,afterError:l,beforeRetry:s,retry:i},children:a})}exports.AxiosContext=e;exports.default=x;
@@ -2,5 +2,5 @@ import { ChildrenProps } from '../types';
2
2
  import { AxiosConfig } from './types';
3
3
  type Props = Partial<AxiosConfig> & ChildrenProps;
4
4
  export declare const AxiosContext: import('react').Context<AxiosConfig>;
5
- export default function AxiosProvider({ config, cancelDuplicatedRequests, cancelOnUnmount, beforeRequest, afterResponse, afterError, children, }: Props): import("react/jsx-runtime").JSX.Element;
5
+ export default function AxiosProvider({ config, cancelDuplicatedRequests, cancelOnUnmount, beforeRetry, beforeRequest, afterResponse, afterError, retry, children, }: Props): import("react/jsx-runtime").JSX.Element;
6
6
  export {};
@@ -1,40 +1,45 @@
1
1
  "use client";
2
- import { j as l } from "../node_modules/react/jsx-runtime.es.js";
3
- import { createContext as u, useCallback as i } from "react";
4
- const x = u({
2
+ import { j as u } from "../node_modules/react/jsx-runtime.es.js";
3
+ import { createContext as i } from "react";
4
+ const c = i({
5
5
  config: {},
6
6
  cancelDuplicatedRequests: !1,
7
7
  cancelOnUnmount: !1,
8
8
  beforeRequest: [],
9
9
  afterResponse: [],
10
- afterError: []
10
+ afterError: [],
11
+ beforeRetry: [],
12
+ retry: null
11
13
  });
12
- function d({
14
+ function p({
13
15
  config: e = {},
14
16
  cancelDuplicatedRequests: r = !1,
15
17
  cancelOnUnmount: t = !1,
16
- beforeRequest: o = [],
17
- afterResponse: s = [],
18
+ beforeRetry: o = [],
19
+ beforeRequest: s = [],
20
+ afterResponse: n = [],
18
21
  afterError: a = [],
19
- children: n
22
+ retry: l = null,
23
+ children: f
20
24
  }) {
21
- const f = i((c) => Promise.reject(c), []);
22
- return /* @__PURE__ */ l.jsx(
23
- x.Provider,
25
+ return /* @__PURE__ */ u.jsx(
26
+ c.Provider,
24
27
  {
25
28
  value: {
26
29
  config: e,
27
30
  cancelDuplicatedRequests: r,
28
31
  cancelOnUnmount: t,
29
- beforeRequest: o,
30
- afterResponse: s,
31
- afterError: [f, ...a]
32
+ beforeRequest: s,
33
+ afterResponse: n,
34
+ afterError: a,
35
+ beforeRetry: o,
36
+ retry: l
32
37
  },
33
- children: n
38
+ children: f
34
39
  }
35
40
  );
36
41
  }
37
42
  export {
38
- x as AxiosContext,
39
- d as default
43
+ c as AxiosContext,
44
+ p as default
40
45
  };
@@ -9,4 +9,10 @@ export type AxiosConfig = {
9
9
  beforeRequest: Callback<InternalAxiosRequestConfig>[];
10
10
  afterResponse: Callback<AxiosResponse>[];
11
11
  afterError: Callback<any>[];
12
+ beforeRetry: Callback<InternalAxiosRequestConfig>[];
13
+ retry: null | {
14
+ count?: number;
15
+ delay?: number;
16
+ statuses?: number[];
17
+ };
12
18
  };
@@ -1 +1 @@
1
- "use client";"use strict";const j=require("axios"),n=require("react"),B=require("./AxiosProvider.cjs.js");function L(t=null){const m="Canceled.",l=n.useContext(B.AxiosContext),q=n.useRef([]),[O,U]=n.useTransition(),d=n.useMemo(()=>new Map,[]),a=n.useMemo(()=>{const e={...l.config,...t==null?void 0:t.config};return j.create(e)},[l.config,t==null?void 0:t.config]),b=n.useMemo(()=>typeof(t==null?void 0:t.cancelDuplicatedRequests)=="boolean"?t.cancelDuplicatedRequests:l.cancelDuplicatedRequests??!1,[l.cancelDuplicatedRequests,t==null?void 0:t.cancelDuplicatedRequests]),p=n.useMemo(()=>typeof(t==null?void 0:t.cancelOnUnmount)=="boolean"?t.cancelOnUnmount:l.cancelOnUnmount??!1,[t==null?void 0:t.cancelOnUnmount,l.cancelOnUnmount]),[P,$]=n.useState([]),[S,E]=n.useState(null),k=n.useCallback(e=>{var s;if(!b&&!p)return e;const c=`${e.method}-${e.url}`,r=new AbortController;return b&&d.has(c)&&((s=d.get(c))==null||s.abort(m)),(b||p)&&(e.signal=r.signal),b&&d.set(c,r),p&&q.current.push(r),e},[d,b,p]),h=n.useCallback(e=>{if(!e)return;const c=`${e.method}-${e.url}`;d.delete(c)},[d]),R=n.useCallback(e=>{U(()=>{$(c=>{const r=[...c];return e?r.push(""):r.pop(),r})})},[]),w=n.useCallback(e=>{const c=[...l.beforeRequest,...(t==null?void 0:t.beforeRequest)??[]];return c.length?c.reduce(async(r,s)=>{const u=await r;return await s(u)??u},Promise.resolve(e)):e},[l.beforeRequest,t==null?void 0:t.beforeRequest]),y=n.useCallback(e=>{const c=[...l.afterResponse,...(t==null?void 0:t.afterResponse)??[]];return c.length?c.reduce(async(r,s)=>{const u=await r;return await s(u)??u},Promise.resolve(e)):e},[l.afterResponse,t==null?void 0:t.afterResponse]),D=n.useCallback(e=>{const c=[...l.afterError,...(t==null?void 0:t.afterError)??[]];return c.length?c.reduce(async(r,s)=>{const u=await r;return await s(u)??u},Promise.resolve(e)):e},[l.afterError,t==null?void 0:t.afterError]),v=n.useCallback(async e=>{R(!0),E(null);const c=k(e);return await w(c)},[k,R,w]),H=n.useCallback(async e=>{h(e.config);const c=await y(e);return R(!1),E(null),c},[R,y,h]),A=n.useCallback(async e=>{var s,u;const c=[(e==null?void 0:e.code)==="ERR_CANCELED",((u=(s=e==null?void 0:e.config)==null?void 0:s.signal)==null?void 0:u.reason)===m].some(Boolean);!c&&h(e==null?void 0:e.config);const r=await D(e);return R(!1),!c&&E(r),r},[R,D,h]);return n.useEffect(()=>{const e=a.interceptors.request.use(v),c=a.interceptors.response.use(H,A);return()=>{a.interceptors.request.eject(e),a.interceptors.response.eject(c)}},[a.interceptors.request,a.interceptors.response,v,H,A]),n.useEffect(()=>()=>{p&&(q.current.forEach(e=>{e.abort(m)}),q.current=[])},[p]),[a,!!P.length||O,S]}module.exports=L;
1
+ "use client";"use strict";const G=require("../helpers/wait.cjs.js"),I=require("axios"),r=require("react"),J=require("./AxiosProvider.cjs.js");function K(t=null){const w="Canceled.",u=r.useContext(J.AxiosContext),k=r.useRef([]),E=r.useRef(0),[L,T]=r.useTransition(),R=r.useMemo(()=>new Map,[]),d=r.useMemo(()=>{const e={...u.config,...t==null?void 0:t.config};return I.create(e)},[u.config,t==null?void 0:t.config]),m=r.useMemo(()=>typeof(t==null?void 0:t.cancelDuplicatedRequests)=="boolean"?t.cancelDuplicatedRequests:u.cancelDuplicatedRequests??!1,[u.cancelDuplicatedRequests,t==null?void 0:t.cancelDuplicatedRequests]),b=r.useMemo(()=>typeof(t==null?void 0:t.cancelOnUnmount)=="boolean"?t.cancelOnUnmount:u.cancelOnUnmount??!1,[t==null?void 0:t.cancelOnUnmount,u.cancelOnUnmount]),a=r.useMemo(()=>({...u.retry,...t==null?void 0:t.retry}),[t==null?void 0:t.retry,u.retry]),[N,_]=r.useState([]),[z,D]=r.useState(null),v=r.useCallback(e=>{var s;if(!m&&!b)return e;const c=`${e.method}-${e.url}`,n=new AbortController;return m&&R.has(c)&&((s=R.get(c))==null||s.abort(w)),(m||b)&&(e.signal=n.signal),m&&R.set(c,n),b&&k.current.push(n),e},[R,m,b]),h=r.useCallback(e=>{if(!e)return;const c=`${e.method}-${e.url}`;R.delete(c)},[R]),p=r.useCallback(e=>{T(()=>{_(c=>{const n=[...c];return e?n.push(""):n.pop(),n})})},[]),H=r.useCallback(e=>{const c=[...u.beforeRequest,...(t==null?void 0:t.beforeRequest)??[]];return c.length?c.reduce(async(n,s)=>{const l=await n;return await s(l)??l},Promise.resolve(e)):e},[u.beforeRequest,t==null?void 0:t.beforeRequest]),M=r.useCallback(e=>{const c=[...u.afterResponse,...(t==null?void 0:t.afterResponse)??[]];return c.length?c.reduce(async(n,s)=>{const l=await n;return await s(l)??l},Promise.resolve(e)):e},[u.afterResponse,t==null?void 0:t.afterResponse]),P=r.useCallback(e=>{const c=[...u.afterError,...(t==null?void 0:t.afterError)??[]];return c.length?c.reduce(async(n,s)=>{const l=await n;return await s(l)??l},Promise.resolve(e)):e},[u.afterError,t==null?void 0:t.afterError]),A=r.useCallback(e=>{const c=[...u.beforeRetry,...(t==null?void 0:t.beforeRetry)??[]];return c.length?c.reduce(async(n,s)=>{const l=await n;return await s(l)??l},Promise.resolve(e)):e},[u.beforeRetry,t==null?void 0:t.beforeRetry]),O=r.useCallback(e=>!(!a||a.count&&E.current>=a.count||a.statuses&&!a.statuses.includes(e)),[a]),U=r.useCallback(()=>{E.current++},[]),q=r.useCallback(()=>{E.current=0},[]),$=r.useCallback(async e=>{p(!0),D(null);const c=v(e);return await H(c)},[v,p,H]),j=r.useCallback(async e=>{h(e.config);const c=await M(e);return p(!1),D(null),q(),c},[p,M,h,q]),S=r.useCallback(async e=>{var l,y,B;const c=[(e==null?void 0:e.code)==="ERR_CANCELED",((y=(l=e==null?void 0:e.config)==null?void 0:l.signal)==null?void 0:y.reason)===w].some(Boolean),n=((B=e==null?void 0:e.response)==null?void 0:B.status)??0;if(O(n)){U(),a!=null&&a.delay&&await G(a.delay);const F=await A(e==null?void 0:e.config);return p(!1),d.request(F)}!c&&h(e==null?void 0:e.config);const s=await P(e);return p(!1),q(),!c&&D(s),Promise.reject(s)},[d,p,P,h,A,O,q,U,a]);return r.useEffect(()=>{const e=d.interceptors.request.use($),c=d.interceptors.response.use(j,S);return()=>{d.interceptors.request.eject(e),d.interceptors.response.eject(c)}},[d.interceptors.request,d.interceptors.response,$,j,S]),r.useEffect(()=>()=>{b&&(k.current.forEach(e=>{e.abort(w)}),k.current=[])},[b]),[d,!!N.length||L,z]}module.exports=K;
@@ -1,116 +1,159 @@
1
1
  "use client";
2
- import T from "axios";
3
- import { useContext as N, useRef as _, useTransition as z, useMemo as b, useState as $, useCallback as s, useEffect as k } from "react";
4
- import { AxiosContext as F } from "./AxiosProvider.es.js";
5
- function K(t = null) {
6
- const q = "Canceled.", c = N(F), w = _([]), [M, j] = z(), d = b(() => /* @__PURE__ */ new Map(), []), a = b(() => {
7
- const e = { ...c.config, ...t == null ? void 0 : t.config };
8
- return T.create(e);
9
- }, [c.config, t == null ? void 0 : t.config]), m = b(() => typeof (t == null ? void 0 : t.cancelDuplicatedRequests) == "boolean" ? t.cancelDuplicatedRequests : c.cancelDuplicatedRequests ?? !1, [
10
- c.cancelDuplicatedRequests,
2
+ import Q from "../helpers/wait.es.js";
3
+ import V from "axios";
4
+ import { useContext as W, useRef as T, useTransition as X, useMemo as b, useState as N, useCallback as s, useEffect as _ } from "react";
5
+ import { AxiosContext as Y } from "./AxiosProvider.es.js";
6
+ function C(t = null) {
7
+ const E = "Canceled.", n = W(Y), D = T([]), v = T(0), [z, F] = X(), R = b(() => /* @__PURE__ */ new Map(), []), d = b(() => {
8
+ const e = { ...n.config, ...t == null ? void 0 : t.config };
9
+ return V.create(e);
10
+ }, [n.config, t == null ? void 0 : t.config]), h = b(() => typeof (t == null ? void 0 : t.cancelDuplicatedRequests) == "boolean" ? t.cancelDuplicatedRequests : n.cancelDuplicatedRequests ?? !1, [
11
+ n.cancelDuplicatedRequests,
11
12
  t == null ? void 0 : t.cancelDuplicatedRequests
12
- ]), p = b(() => typeof (t == null ? void 0 : t.cancelOnUnmount) == "boolean" ? t.cancelOnUnmount : c.cancelOnUnmount ?? !1, [t == null ? void 0 : t.cancelOnUnmount, c.cancelOnUnmount]), [B, L] = $([]), [S, E] = $(null), y = s(
13
+ ]), y = b(() => typeof (t == null ? void 0 : t.cancelOnUnmount) == "boolean" ? t.cancelOnUnmount : n.cancelOnUnmount ?? !1, [t == null ? void 0 : t.cancelOnUnmount, n.cancelOnUnmount]), a = b(() => ({
14
+ ...n.retry,
15
+ ...t == null ? void 0 : t.retry
16
+ }), [t == null ? void 0 : t.retry, n.retry]), [G, I] = N([]), [J, H] = N(null), O = s(
13
17
  (e) => {
14
18
  var l;
15
- if (!m && !p) return e;
16
- const n = `${e.method}-${e.url}`, r = new AbortController();
17
- return m && d.has(n) && ((l = d.get(n)) == null || l.abort(q)), (m || p) && (e.signal = r.signal), m && d.set(n, r), p && w.current.push(r), e;
19
+ if (!h && !y) return e;
20
+ const r = `${e.method}-${e.url}`, c = new AbortController();
21
+ return h && R.has(r) && ((l = R.get(r)) == null || l.abort(E)), (h || y) && (e.signal = c.signal), h && R.set(r, c), y && D.current.push(c), e;
18
22
  },
19
- [d, m, p]
20
- ), h = s(
23
+ [R, h, y]
24
+ ), w = s(
21
25
  (e) => {
22
26
  if (!e) return;
23
- const n = `${e.method}-${e.url}`;
24
- d.delete(n);
27
+ const r = `${e.method}-${e.url}`;
28
+ R.delete(r);
25
29
  },
26
- [d]
27
- ), R = s((e) => {
28
- j(() => {
29
- L((n) => {
30
- const r = [...n];
31
- return e ? r.push("") : r.pop(), r;
30
+ [R]
31
+ ), p = s((e) => {
32
+ F(() => {
33
+ I((r) => {
34
+ const c = [...r];
35
+ return e ? c.push("") : c.pop(), c;
32
36
  });
33
37
  });
34
- }, []), D = s(
38
+ }, []), P = s(
35
39
  (e) => {
36
- const n = [
37
- ...c.beforeRequest,
40
+ const r = [
41
+ ...n.beforeRequest,
38
42
  ...(t == null ? void 0 : t.beforeRequest) ?? []
39
43
  ];
40
- return n.length ? n.reduce(async (r, l) => {
41
- const u = await r;
44
+ return r.length ? r.reduce(async (c, l) => {
45
+ const u = await c;
42
46
  return await l(u) ?? u;
43
47
  }, Promise.resolve(e)) : e;
44
48
  },
45
- [c.beforeRequest, t == null ? void 0 : t.beforeRequest]
46
- ), H = s(
49
+ [n.beforeRequest, t == null ? void 0 : t.beforeRequest]
50
+ ), U = s(
47
51
  (e) => {
48
- const n = [
49
- ...c.afterResponse,
52
+ const r = [
53
+ ...n.afterResponse,
50
54
  ...(t == null ? void 0 : t.afterResponse) ?? []
51
55
  ];
52
- return n.length ? n.reduce(async (r, l) => {
53
- const u = await r;
56
+ return r.length ? r.reduce(async (c, l) => {
57
+ const u = await c;
54
58
  return await l(u) ?? u;
55
59
  }, Promise.resolve(e)) : e;
56
60
  },
57
- [c.afterResponse, t == null ? void 0 : t.afterResponse]
58
- ), v = s(
61
+ [n.afterResponse, t == null ? void 0 : t.afterResponse]
62
+ ), A = s(
59
63
  (e) => {
60
- const n = [
61
- ...c.afterError,
64
+ const r = [
65
+ ...n.afterError,
62
66
  ...(t == null ? void 0 : t.afterError) ?? []
63
67
  ];
64
- return n.length ? n.reduce(async (r, l) => {
65
- const u = await r;
68
+ return r.length ? r.reduce(async (c, l) => {
69
+ const u = await c;
66
70
  return await l(u) ?? u;
67
71
  }, Promise.resolve(e)) : e;
68
72
  },
69
- [c.afterError, t == null ? void 0 : t.afterError]
70
- ), O = s(
73
+ [n.afterError, t == null ? void 0 : t.afterError]
74
+ ), $ = s(
75
+ (e) => {
76
+ const r = [
77
+ ...n.beforeRetry,
78
+ ...(t == null ? void 0 : t.beforeRetry) ?? []
79
+ ];
80
+ return r.length ? r.reduce(async (c, l) => {
81
+ const u = await c;
82
+ return await l(u) ?? u;
83
+ }, Promise.resolve(e)) : e;
84
+ },
85
+ [n.beforeRetry, t == null ? void 0 : t.beforeRetry]
86
+ ), j = s(
87
+ (e) => !(!a || a.count && v.current >= a.count || a.statuses && !a.statuses.includes(e)),
88
+ [a]
89
+ ), k = s(() => {
90
+ v.current++;
91
+ }, []), q = s(() => {
92
+ v.current = 0;
93
+ }, []), M = s(
71
94
  async (e) => {
72
- R(!0), E(null);
73
- const n = y(e);
74
- return await D(n);
95
+ p(!0), H(null);
96
+ const r = O(e);
97
+ return await P(r);
75
98
  },
76
- [y, R, D]
77
- ), U = s(
99
+ [O, p, P]
100
+ ), B = s(
78
101
  async (e) => {
79
- h(e.config);
80
- const n = await H(e);
81
- return R(!1), E(null), n;
102
+ w(e.config);
103
+ const r = await U(e);
104
+ return p(!1), H(null), q(), r;
82
105
  },
83
- [R, H, h]
84
- ), A = s(
106
+ [
107
+ p,
108
+ U,
109
+ w,
110
+ q
111
+ ]
112
+ ), L = s(
85
113
  async (e) => {
86
- var l, u;
87
- const n = [
114
+ var u, m, S;
115
+ const r = [
88
116
  (e == null ? void 0 : e.code) === "ERR_CANCELED",
89
- ((u = (l = e == null ? void 0 : e.config) == null ? void 0 : l.signal) == null ? void 0 : u.reason) === q
90
- ].some(Boolean);
91
- !n && h(e == null ? void 0 : e.config);
92
- const r = await v(e);
93
- return R(!1), !n && E(r), r;
117
+ ((m = (u = e == null ? void 0 : e.config) == null ? void 0 : u.signal) == null ? void 0 : m.reason) === E
118
+ ].some(Boolean), c = ((S = e == null ? void 0 : e.response) == null ? void 0 : S.status) ?? 0;
119
+ if (j(c)) {
120
+ k(), a != null && a.delay && await Q(a.delay);
121
+ const K = await $(e == null ? void 0 : e.config);
122
+ return p(!1), d.request(K);
123
+ }
124
+ !r && w(e == null ? void 0 : e.config);
125
+ const l = await A(e);
126
+ return p(!1), q(), !r && H(l), Promise.reject(l);
94
127
  },
95
- [R, v, h]
128
+ [
129
+ d,
130
+ p,
131
+ A,
132
+ w,
133
+ $,
134
+ j,
135
+ q,
136
+ k,
137
+ a
138
+ ]
96
139
  );
97
- return k(() => {
98
- const e = a.interceptors.request.use(O), n = a.interceptors.response.use(U, A);
140
+ return _(() => {
141
+ const e = d.interceptors.request.use(M), r = d.interceptors.response.use(B, L);
99
142
  return () => {
100
- a.interceptors.request.eject(e), a.interceptors.response.eject(n);
143
+ d.interceptors.request.eject(e), d.interceptors.response.eject(r);
101
144
  };
102
145
  }, [
103
- a.interceptors.request,
104
- a.interceptors.response,
105
- O,
106
- U,
107
- A
108
- ]), k(() => () => {
109
- p && (w.current.forEach((e) => {
110
- e.abort(q);
111
- }), w.current = []);
112
- }, [p]), [a, !!B.length || M, S];
146
+ d.interceptors.request,
147
+ d.interceptors.response,
148
+ M,
149
+ B,
150
+ L
151
+ ]), _(() => () => {
152
+ y && (D.current.forEach((e) => {
153
+ e.abort(E);
154
+ }), D.current = []);
155
+ }, [y]), [d, !!G.length || z, J];
113
156
  }
114
157
  export {
115
- K as default
158
+ C as default
116
159
  };
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "reaxify",
3
3
  "private": false,
4
- "version": "0.0.48",
4
+ "version": "0.0.50",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
7
7
  "files": [