reaxify 0.0.49 → 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 a=require("../node_modules/react/jsx-runtime.cjs.js"),c=require("react"),e=c.createContext({config:{},cancelDuplicatedRequests:!1,cancelOnUnmount:!1,beforeRequest:[],afterResponse:[],afterError:[]});function l({config:t={},cancelDuplicatedRequests:s=!1,cancelOnUnmount:o=!1,beforeRequest:r=[],afterResponse:n=[],afterError:u=[],children:i}){return a.jsxRuntimeExports.jsx(e.Provider,{value:{config:t,cancelDuplicatedRequests:s,cancelOnUnmount:o,beforeRequest:r,afterResponse:n,afterError:u},children:i})}exports.AxiosContext=e;exports.default=l;
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,5 +1,5 @@
1
1
  "use client";
2
- import { j as f } from "../node_modules/react/jsx-runtime.es.js";
2
+ import { j as u } from "../node_modules/react/jsx-runtime.es.js";
3
3
  import { createContext as i } from "react";
4
4
  const c = i({
5
5
  config: {},
@@ -7,33 +7,39 @@ const c = i({
7
7
  cancelOnUnmount: !1,
8
8
  beforeRequest: [],
9
9
  afterResponse: [],
10
- afterError: []
10
+ afterError: [],
11
+ beforeRetry: [],
12
+ retry: null
11
13
  });
12
- function x({
14
+ function p({
13
15
  config: e = {},
14
- cancelDuplicatedRequests: t = !1,
15
- cancelOnUnmount: o = !1,
16
- beforeRequest: r = [],
17
- afterResponse: s = [],
18
- afterError: n = [],
19
- children: a
16
+ cancelDuplicatedRequests: r = !1,
17
+ cancelOnUnmount: t = !1,
18
+ beforeRetry: o = [],
19
+ beforeRequest: s = [],
20
+ afterResponse: n = [],
21
+ afterError: a = [],
22
+ retry: l = null,
23
+ children: f
20
24
  }) {
21
- return /* @__PURE__ */ f.jsx(
25
+ return /* @__PURE__ */ u.jsx(
22
26
  c.Provider,
23
27
  {
24
28
  value: {
25
29
  config: e,
26
- cancelDuplicatedRequests: t,
27
- cancelOnUnmount: o,
28
- beforeRequest: r,
29
- afterResponse: s,
30
- afterError: n
30
+ cancelDuplicatedRequests: r,
31
+ cancelOnUnmount: t,
32
+ beforeRequest: s,
33
+ afterResponse: n,
34
+ afterError: a,
35
+ beforeRetry: o,
36
+ retry: l
31
37
  },
32
- children: a
38
+ children: f
33
39
  }
34
40
  );
35
41
  }
36
42
  export {
37
43
  c as AxiosContext,
38
- x as default
44
+ p as default
39
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 S=require("axios"),n=require("react"),B=require("./AxiosProvider.cjs.js");function L(t=null){const h="Canceled.",l=n.useContext(B.AxiosContext),q=n.useRef([]),[O,P]=n.useTransition(),d=n.useMemo(()=>new Map,[]),a=n.useMemo(()=>{const e={...l.config,...t==null?void 0:t.config};return S.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]),[U,$]=n.useState([]),[j,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(h)),(b||p)&&(e.signal=r.signal),b&&d.set(c,r),p&&q.current.push(r),e},[d,b,p]),m=n.useCallback(e=>{if(!e)return;const c=`${e.method}-${e.url}`;d.delete(c)},[d]),R=n.useCallback(e=>{P(()=>{$(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=>{m(e.config);const c=await y(e);return R(!1),E(null),c},[R,y,m]),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)===h].some(Boolean);!c&&m(e==null?void 0:e.config);const r=await D(e);return R(!1),!c&&E(r),Promise.reject(r)},[R,D,m]);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(h)}),q.current=[])},[p]),[a,!!U.length||O,j]}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 j } from "react";
4
- import { AxiosContext as F } from "./AxiosProvider.es.js";
5
- function K(t = null) {
6
- const q = "Canceled.", c = N(F), w = _([]), [k, M] = 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]), R = 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 (!R && !p) return e;
16
- const n = `${e.method}-${e.url}`, r = new AbortController();
17
- return R && d.has(n) && ((l = d.get(n)) == null || l.abort(q)), (R || p) && (e.signal = r.signal), R && 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, R, 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
- ), m = s((e) => {
28
- M(() => {
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
- m(!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, m, 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 m(!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
- [m, 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 m(!1), !n && E(r), Promise.reject(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
- [m, 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 j(() => {
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
- ]), j(() => () => {
109
- p && (w.current.forEach((e) => {
110
- e.abort(q);
111
- }), w.current = []);
112
- }, [p]), [a, !!B.length || k, 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.49",
4
+ "version": "0.0.50",
5
5
  "type": "module",
6
6
  "types": "./dist/index.d.ts",
7
7
  "files": [