@react-xp/fetch 1.0.0-beta.1 → 1.0.0-beta.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.
Files changed (46) hide show
  1. package/dist/cjs/fetchHelper.js +179 -0
  2. package/dist/cjs/fetchHelper.js.map +1 -0
  3. package/dist/cjs/fetchModule.js +14 -0
  4. package/dist/cjs/fetchModule.js.map +1 -0
  5. package/dist/cjs/fetchTypes.js +3 -0
  6. package/dist/cjs/fetchTypes.js.map +1 -0
  7. package/dist/cjs/index.js +23 -0
  8. package/dist/cjs/index.js.map +1 -0
  9. package/dist/cjs/useFetch.js +99 -0
  10. package/dist/cjs/useFetch.js.map +1 -0
  11. package/dist/cjs/useFetchMutation.js +19 -0
  12. package/dist/cjs/useFetchMutation.js.map +1 -0
  13. package/dist/cjs/useFetchQuery.js +18 -0
  14. package/dist/cjs/useFetchQuery.js.map +1 -0
  15. package/dist/esm/fetchHelper.js +176 -0
  16. package/dist/esm/fetchHelper.js.map +1 -0
  17. package/dist/esm/fetchModule.js +10 -0
  18. package/dist/esm/fetchModule.js.map +1 -0
  19. package/dist/esm/fetchTypes.js +2 -0
  20. package/dist/esm/fetchTypes.js.map +1 -0
  21. package/dist/esm/index.js +7 -0
  22. package/dist/esm/index.js.map +1 -0
  23. package/dist/esm/useFetch.js +92 -0
  24. package/dist/esm/useFetch.js.map +1 -0
  25. package/dist/esm/useFetchMutation.js +15 -0
  26. package/dist/esm/useFetchMutation.js.map +1 -0
  27. package/dist/esm/useFetchQuery.js +14 -0
  28. package/dist/esm/useFetchQuery.js.map +1 -0
  29. package/dist/tsconfig.cjs.tsbuildinfo +1 -0
  30. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  31. package/dist/types/fetchHelper.d.ts +19 -0
  32. package/dist/types/fetchHelper.d.ts.map +1 -0
  33. package/dist/types/fetchModule.d.ts +5 -0
  34. package/dist/types/fetchModule.d.ts.map +1 -0
  35. package/dist/types/fetchTypes.d.ts +61 -0
  36. package/dist/types/fetchTypes.d.ts.map +1 -0
  37. package/dist/types/index.d.ts +7 -0
  38. package/dist/types/index.d.ts.map +1 -0
  39. package/dist/types/useFetch.d.ts +22 -0
  40. package/dist/types/useFetch.d.ts.map +1 -0
  41. package/dist/types/useFetchMutation.d.ts +28 -0
  42. package/dist/types/useFetchMutation.d.ts.map +1 -0
  43. package/dist/types/useFetchQuery.d.ts +26 -0
  44. package/dist/types/useFetchQuery.d.ts.map +1 -0
  45. package/package.json +22 -10
  46. package/dist/react-xp-fetch-1.0.0-beta.1.tgz +0 -0
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.fetchHelper = void 0;
4
+ const check_1 = require("@react-xp/check");
5
+ const merge_1 = require("@react-xp/merge");
6
+ const store_1 = require("@react-xp/store");
7
+ const utils_1 = require("@react-xp/utils");
8
+ let _configs = {
9
+ baseUrl: 'http://localhost:3000/api?data={{data}}',
10
+ headers: {
11
+ 'Content-Type': 'application/json',
12
+ },
13
+ onPrepareRequestBody: (data) => data,
14
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
15
+ onPrepareResponse: (response) => response.json(),
16
+ onPrepareResponseData: (response) => response,
17
+ };
18
+ const abortControllerStore = {};
19
+ exports.fetchHelper = {
20
+ configs: () => {
21
+ return _configs;
22
+ },
23
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
24
+ configure: (passedConfigs) => {
25
+ _configs = (0, merge_1.deepMerge)(_configs, passedConfigs);
26
+ },
27
+ fetch: (instanceId, input, update, passedData, optionsPassedLevel1 = {}) => {
28
+ const { fetchWithDataKey, fetchKey } = exports.fetchHelper.getComposedKey({
29
+ ...input,
30
+ data: passedData || input.data,
31
+ instanceId,
32
+ });
33
+ const fn = async (optionsPassedLevel2 = {}) => {
34
+ let state = { status: 'none' };
35
+ const storeHelper = (0, store_1.storeBranchHelper)(input.key);
36
+ try {
37
+ const { baseUrl, headers, url, data, method = 'GET', onPrepareRequestBody, onPrepareResponse, onPrepareResponseData, onError, onSuccess, options, } = (0, merge_1.deepMerge)(exports.fetchHelper.configs(), input);
38
+ const finalOptions = (0, merge_1.deepMerge)((0, merge_1.deepMerge)(optionsPassedLevel2, optionsPassedLevel1), options);
39
+ const storeConfigs = {
40
+ cache: finalOptions?.cache,
41
+ persists: finalOptions?.persists,
42
+ };
43
+ let abortController = abortControllerStore[fetchWithDataKey];
44
+ if (finalOptions.ignoreCache) {
45
+ const cachedResponse = storeHelper.getWithoutValidateExpiration(fetchWithDataKey);
46
+ if (cachedResponse?.status === 'fetching') {
47
+ return cachedResponse?.status;
48
+ }
49
+ }
50
+ else if (finalOptions?.cache) {
51
+ const cachedResponse = storeHelper.get(fetchWithDataKey, storeConfigs);
52
+ if (cachedResponse) {
53
+ state = cachedResponse;
54
+ update(state);
55
+ return cachedResponse.status;
56
+ }
57
+ }
58
+ state.status = 'fetching';
59
+ storeHelper.set(fetchWithDataKey, state, storeConfigs);
60
+ update(state);
61
+ const body = passedData || data;
62
+ const preparedBody = onPrepareRequestBody
63
+ ? onPrepareRequestBody(passedData || data)
64
+ : data;
65
+ let fullUrl = url;
66
+ try {
67
+ new URL(fullUrl);
68
+ }
69
+ catch (err) {
70
+ let treatedBaseUrl = baseUrl;
71
+ if (treatedBaseUrl.at(treatedBaseUrl.length - 1) === '/') {
72
+ treatedBaseUrl = treatedBaseUrl.substring(0, treatedBaseUrl.length - 1);
73
+ }
74
+ let treatedUrl = url;
75
+ if (treatedUrl.at(0) === '/') {
76
+ treatedUrl = treatedUrl.substring(1, treatedUrl.length);
77
+ }
78
+ fullUrl = `${treatedBaseUrl}/${treatedUrl}`;
79
+ }
80
+ const res = (0, utils_1.transformTemplateString)({
81
+ template: fullUrl,
82
+ values: body || {},
83
+ });
84
+ if (res.unusedValues) {
85
+ let queryStringUrl = '';
86
+ for (const key of Object.keys(res.unusedValues)) {
87
+ try {
88
+ if (!(0, check_1.checkIsNullOrEmpty)(res.unusedValues[key])) {
89
+ queryStringUrl += `${key}=${JSON.stringify(res.unusedValues[key])}&`;
90
+ }
91
+ }
92
+ catch (e) { }
93
+ }
94
+ queryStringUrl = queryStringUrl.substring(0, queryStringUrl.length - 1);
95
+ if (!(0, check_1.checkIsNullOrEmpty)(queryStringUrl) && method === 'GET') {
96
+ fullUrl = `${res.value}?${queryStringUrl}`;
97
+ }
98
+ else {
99
+ fullUrl = res.value;
100
+ }
101
+ }
102
+ else {
103
+ fullUrl = res.value;
104
+ }
105
+ if (abortController && finalOptions?.onlyOneRequest) {
106
+ abortController.abort();
107
+ }
108
+ abortController = new AbortController();
109
+ abortControllerStore[fetchWithDataKey] = abortController;
110
+ const response = await fetch(fullUrl, {
111
+ method,
112
+ headers,
113
+ body: ['DELETE', 'PATCH', 'POST', 'PUT'].includes(method)
114
+ ? JSON.stringify(preparedBody)
115
+ : undefined,
116
+ signal: abortController.signal,
117
+ });
118
+ if (!response.ok) {
119
+ state.status = 'error';
120
+ state.response = response;
121
+ state.error = response;
122
+ update(state);
123
+ // when not set to not raise error, call the global error handler
124
+ if (onError?.(response) !== false) {
125
+ exports.fetchHelper.configs().onError?.(response);
126
+ }
127
+ return state.status;
128
+ }
129
+ if (finalOptions?.invalidateCacheKey) {
130
+ (0, store_1.storeBranchHelper)(finalOptions.invalidateCacheKey).clear();
131
+ }
132
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
133
+ const treatedResponse = onPrepareResponse
134
+ ? await onPrepareResponse(response)
135
+ : response;
136
+ state.data = onPrepareResponseData
137
+ ? onPrepareResponseData(treatedResponse)
138
+ : treatedResponse;
139
+ state.response = treatedResponse;
140
+ state.status = 'success';
141
+ update(state);
142
+ onSuccess?.(state.data);
143
+ if (finalOptions?.cache) {
144
+ storeHelper.set(fetchWithDataKey, state, storeConfigs);
145
+ }
146
+ return state.status;
147
+ }
148
+ catch (error) {
149
+ state.error = error;
150
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
151
+ state.response = error;
152
+ state.status = 'error';
153
+ update(state);
154
+ return state.status;
155
+ }
156
+ };
157
+ const status = fn(optionsPassedLevel1);
158
+ return {
159
+ abortController: abortControllerStore[fetchWithDataKey],
160
+ fetchKey,
161
+ fetchWithDataKey,
162
+ fn,
163
+ status,
164
+ };
165
+ },
166
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
167
+ getComposedKey: (input) => {
168
+ const { data, instanceId, key, url } = input;
169
+ return {
170
+ fetchKey: input.options?.disableSync === true
171
+ ? `fetch-${url}-${instanceId}-${key}`
172
+ : `fetch-${url}-${key}`,
173
+ fetchWithDataKey: input.options?.disableSync === true
174
+ ? `fetch-${url}-${instanceId}-${key}-${JSON.stringify(data)}`
175
+ : `fetch-${url}-${key}-${JSON.stringify(data)}`,
176
+ };
177
+ },
178
+ };
179
+ //# sourceMappingURL=fetchHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchHelper.js","sourceRoot":"","sources":["../../src/fetchHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ 'use client';
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.FetchModule = void 0;
5
+ const hooks_1 = require("@react-xp/hooks");
6
+ const fetchHelper_1 = require("./fetchHelper");
7
+ const FetchModule = ({ ...rest }) => {
8
+ (0, hooks_1.useWillMount)(() => {
9
+ fetchHelper_1.fetchHelper.configure(rest);
10
+ });
11
+ return null;
12
+ };
13
+ exports.FetchModule = FetchModule;
14
+ //# sourceMappingURL=fetchModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchModule.js","sourceRoot":"","sources":["../../src/fetchModule.tsx"],"names":[],"mappings":";AAAA,YAAY,CAAC;;;AACb,2CAA+C;AAC/C,+CAA4C;AAMrC,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,IAAI,EAAqB,EAAE,EAAE;IAC5D,IAAA,oBAAY,EAAC,GAAG,EAAE;QAChB,yBAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AANW,QAAA,WAAW,eAMtB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=fetchTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchTypes.js","sourceRoot":"","sources":["../../src/fetchTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./fetchHelper"), exports);
18
+ __exportStar(require("./fetchModule"), exports);
19
+ __exportStar(require("./fetchTypes"), exports);
20
+ __exportStar(require("./useFetch"), exports);
21
+ __exportStar(require("./useFetchMutation"), exports);
22
+ __exportStar(require("./useFetchQuery"), exports);
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,gDAA8B;AAC9B,gDAA8B;AAC9B,+CAA6B;AAC7B,6CAA2B;AAC3B,qDAAmC;AACnC,kDAAgC"}
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ 'use client';
3
+ var __importDefault = (this && this.__importDefault) || function (mod) {
4
+ return (mod && mod.__esModule) ? mod : { "default": mod };
5
+ };
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.useFetch = void 0;
8
+ const console_1 = require("@react-xp/console");
9
+ const event_1 = require("@react-xp/event");
10
+ const hooks_1 = require("@react-xp/hooks");
11
+ const react_1 = __importDefault(require("react"));
12
+ const fetchHelper_1 = require("./fetchHelper");
13
+ const refetchStore = {};
14
+ const isChanged = (
15
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
16
+ oldValue,
17
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
18
+ newValue) => {
19
+ return (oldValue.status !== newValue.status ||
20
+ oldValue.response !== newValue.response);
21
+ };
22
+ const useFetch = (input) => {
23
+ const { options } = input;
24
+ const instanceId = react_1.default.useId();
25
+ const forceUpdate = (0, hooks_1.useForceUpdate)();
26
+ const state = react_1.default.useRef({
27
+ status: options?.callOnMount ? 'fetching' : 'none',
28
+ });
29
+ const isSubscribed = react_1.default.useRef('none');
30
+ const { disableSync = false } = options || {};
31
+ const { log } = (0, console_1.useConsole)('useFetch');
32
+ const { fetchKey } = fetchHelper_1.fetchHelper.getComposedKey({ ...input, instanceId });
33
+ const abortController = react_1.default.useRef(undefined);
34
+ const { emit, emitterId } = (0, event_1.useEventEmitter)({
35
+ key: input.key,
36
+ enable: !disableSync,
37
+ });
38
+ const update = react_1.default.useCallback((newState, isToEmit = true) => {
39
+ const isChangedState = isChanged(state.current, newState);
40
+ log(`${instanceId} :: update`, {
41
+ isChangedState,
42
+ isToEmit,
43
+ isSubscribed: isSubscribed.current,
44
+ });
45
+ state.current = { ...state.current, ...newState };
46
+ if ((isSubscribed.current === 'all' ||
47
+ (isSubscribed.current === 'response' &&
48
+ (state.current.status === 'success' ||
49
+ state.current.status === 'error'))) &&
50
+ isChangedState) {
51
+ forceUpdate();
52
+ }
53
+ if (isToEmit) {
54
+ emit({ status: 'changed', data: state.current });
55
+ }
56
+ }, [emit, forceUpdate, instanceId, log]);
57
+ (0, event_1.useEventSubscriber)({
58
+ key: input.key,
59
+ callback: ({ payload }) => {
60
+ update(payload.data, false);
61
+ },
62
+ ignoreEmitterIds: [emitterId],
63
+ enable: !disableSync,
64
+ });
65
+ const retFnWithSubscribed = react_1.default.useCallback((subscriptionType, data) => {
66
+ return () => {
67
+ isSubscribed.current =
68
+ isSubscribed.current === 'all' ? 'all' : subscriptionType;
69
+ return { value: data };
70
+ };
71
+ }, []);
72
+ const handleFetch = react_1.default.useCallback((passedData, options = {}) => {
73
+ const { abortController: abortControllerInner, fetchKey, fn, status, } = fetchHelper_1.fetchHelper.fetch(instanceId, input, (newState) => {
74
+ update(newState);
75
+ }, passedData, options);
76
+ abortController.current = abortControllerInner;
77
+ refetchStore[fetchKey] = fn;
78
+ return status;
79
+ }, [input, instanceId, update]);
80
+ (0, hooks_1.useDidMount)(() => {
81
+ if (input.options?.callOnMount) {
82
+ handleFetch();
83
+ }
84
+ });
85
+ return react_1.default.useMemo(() => ({
86
+ abort: () => {
87
+ abortController.current?.abort();
88
+ },
89
+ error$: retFnWithSubscribed('response', state.current.error),
90
+ data$: retFnWithSubscribed('response', state.current.data),
91
+ fetch: handleFetch,
92
+ isFetching$: retFnWithSubscribed('all', state.current.status === 'fetching'),
93
+ refetch: (options) => refetchStore[fetchKey]?.(options),
94
+ response$: retFnWithSubscribed('response', state.current.response),
95
+ status$: retFnWithSubscribed('all', state.current.status),
96
+ }), [fetchKey, handleFetch, retFnWithSubscribed]);
97
+ };
98
+ exports.useFetch = useFetch;
99
+ //# sourceMappingURL=useFetch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetch.js","sourceRoot":"","sources":["../../src/useFetch.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useFetchMutation = void 0;
4
+ const useFetch_1 = require("./useFetch");
5
+ const useFetchMutation = (input) => {
6
+ const ret = (0, useFetch_1.useFetch)(input);
7
+ const transformedRet = {
8
+ abort: ret.abort,
9
+ data$: ret.data$,
10
+ error$: ret.error$,
11
+ isFetching$: ret.isFetching$,
12
+ mutate: ret.fetch,
13
+ response$: ret.response$,
14
+ status$: ret.status$,
15
+ };
16
+ return transformedRet;
17
+ };
18
+ exports.useFetchMutation = useFetchMutation;
19
+ //# sourceMappingURL=useFetchMutation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchMutation.js","sourceRoot":"","sources":["../../src/useFetchMutation.tsx"],"names":[],"mappings":";;;AACA,yCAAsC;AAgB/B,MAAM,gBAAgB,GAAG,CAC9B,KAAwC,EACxC,EAAE;IACF,MAAM,GAAG,GAAG,IAAA,mBAAQ,EAAC,KAAK,CAAC,CAAC;IAG5B,MAAM,cAAc,GAEhB;QACF,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,KAAK,EAAE,GAAG,CAAC,KAAK;QAChB,MAAM,EAAE,GAAG,CAAC,MAAM;QAClB,WAAW,EAAE,GAAG,CAAC,WAAW;QAC5B,MAAM,EAAE,GAAG,CAAC,KAAK;QACjB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,OAAO,EAAE,GAAG,CAAC,OAAO;KACrB,CAAC;IAEF,OAAO,cAAc,CAAC;AACxB,CAAC,CAAC;AAnBW,QAAA,gBAAgB,oBAmB3B"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.useFetchQuery = void 0;
4
+ const merge_1 = require("@react-xp/merge");
5
+ const fetchHelper_1 = require("./fetchHelper");
6
+ const useFetch_1 = require("./useFetch");
7
+ const useFetchQuery = (input) => {
8
+ const deepMerge = (0, merge_1.useDeepMerge)();
9
+ const configs = fetchHelper_1.fetchHelper.configs();
10
+ return (0, useFetch_1.useFetch)(deepMerge(input, {
11
+ options: {
12
+ callOnMount: true,
13
+ cache: input.options?.cache || configs.options?.cache,
14
+ },
15
+ }));
16
+ };
17
+ exports.useFetchQuery = useFetchQuery;
18
+ //# sourceMappingURL=useFetchQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFetchQuery.js","sourceRoot":"","sources":["../../src/useFetchQuery.tsx"],"names":[],"mappings":";;;AAAA,2CAA+C;AAC/C,+CAA4C;AAE5C,yCAAsC;AAS/B,MAAM,aAAa,GAAG,CAC3B,KAAqC,EACrC,EAAE;IACF,MAAM,SAAS,GAAG,IAAA,oBAAY,GAAE,CAAC;IACjC,MAAM,OAAO,GAAG,yBAAW,CAAC,OAAO,EAAE,CAAC;IAEtC,OAAO,IAAA,mBAAQ,EACb,SAAS,CAAC,KAAK,EAAE;QACf,OAAO,EAAE;YACP,WAAW,EAAE,IAAI;YACjB,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,KAAK,IAAI,OAAO,CAAC,OAAO,EAAE,KAAK;SACtD;KACF,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAdW,QAAA,aAAa,iBAcxB"}
@@ -0,0 +1,176 @@
1
+ import { checkIsNullOrEmpty } from '@react-xp/check';
2
+ import { deepMerge } from '@react-xp/merge';
3
+ import { storeBranchHelper } from '@react-xp/store';
4
+ import { transformTemplateString } from '@react-xp/utils';
5
+ let _configs = {
6
+ baseUrl: 'http://localhost:3000/api?data={{data}}',
7
+ headers: {
8
+ 'Content-Type': 'application/json',
9
+ },
10
+ onPrepareRequestBody: (data) => data,
11
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
12
+ onPrepareResponse: (response) => response.json(),
13
+ onPrepareResponseData: (response) => response,
14
+ };
15
+ const abortControllerStore = {};
16
+ export const fetchHelper = {
17
+ configs: () => {
18
+ return _configs;
19
+ },
20
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
21
+ configure: (passedConfigs) => {
22
+ _configs = deepMerge(_configs, passedConfigs);
23
+ },
24
+ fetch: (instanceId, input, update, passedData, optionsPassedLevel1 = {}) => {
25
+ const { fetchWithDataKey, fetchKey } = fetchHelper.getComposedKey({
26
+ ...input,
27
+ data: passedData || input.data,
28
+ instanceId,
29
+ });
30
+ const fn = async (optionsPassedLevel2 = {}) => {
31
+ let state = { status: 'none' };
32
+ const storeHelper = storeBranchHelper(input.key);
33
+ try {
34
+ const { baseUrl, headers, url, data, method = 'GET', onPrepareRequestBody, onPrepareResponse, onPrepareResponseData, onError, onSuccess, options, } = deepMerge(fetchHelper.configs(), input);
35
+ const finalOptions = deepMerge(deepMerge(optionsPassedLevel2, optionsPassedLevel1), options);
36
+ const storeConfigs = {
37
+ cache: finalOptions?.cache,
38
+ persists: finalOptions?.persists,
39
+ };
40
+ let abortController = abortControllerStore[fetchWithDataKey];
41
+ if (finalOptions.ignoreCache) {
42
+ const cachedResponse = storeHelper.getWithoutValidateExpiration(fetchWithDataKey);
43
+ if (cachedResponse?.status === 'fetching') {
44
+ return cachedResponse?.status;
45
+ }
46
+ }
47
+ else if (finalOptions?.cache) {
48
+ const cachedResponse = storeHelper.get(fetchWithDataKey, storeConfigs);
49
+ if (cachedResponse) {
50
+ state = cachedResponse;
51
+ update(state);
52
+ return cachedResponse.status;
53
+ }
54
+ }
55
+ state.status = 'fetching';
56
+ storeHelper.set(fetchWithDataKey, state, storeConfigs);
57
+ update(state);
58
+ const body = passedData || data;
59
+ const preparedBody = onPrepareRequestBody
60
+ ? onPrepareRequestBody(passedData || data)
61
+ : data;
62
+ let fullUrl = url;
63
+ try {
64
+ new URL(fullUrl);
65
+ }
66
+ catch (err) {
67
+ let treatedBaseUrl = baseUrl;
68
+ if (treatedBaseUrl.at(treatedBaseUrl.length - 1) === '/') {
69
+ treatedBaseUrl = treatedBaseUrl.substring(0, treatedBaseUrl.length - 1);
70
+ }
71
+ let treatedUrl = url;
72
+ if (treatedUrl.at(0) === '/') {
73
+ treatedUrl = treatedUrl.substring(1, treatedUrl.length);
74
+ }
75
+ fullUrl = `${treatedBaseUrl}/${treatedUrl}`;
76
+ }
77
+ const res = transformTemplateString({
78
+ template: fullUrl,
79
+ values: body || {},
80
+ });
81
+ if (res.unusedValues) {
82
+ let queryStringUrl = '';
83
+ for (const key of Object.keys(res.unusedValues)) {
84
+ try {
85
+ if (!checkIsNullOrEmpty(res.unusedValues[key])) {
86
+ queryStringUrl += `${key}=${JSON.stringify(res.unusedValues[key])}&`;
87
+ }
88
+ }
89
+ catch (e) { }
90
+ }
91
+ queryStringUrl = queryStringUrl.substring(0, queryStringUrl.length - 1);
92
+ if (!checkIsNullOrEmpty(queryStringUrl) && method === 'GET') {
93
+ fullUrl = `${res.value}?${queryStringUrl}`;
94
+ }
95
+ else {
96
+ fullUrl = res.value;
97
+ }
98
+ }
99
+ else {
100
+ fullUrl = res.value;
101
+ }
102
+ if (abortController && finalOptions?.onlyOneRequest) {
103
+ abortController.abort();
104
+ }
105
+ abortController = new AbortController();
106
+ abortControllerStore[fetchWithDataKey] = abortController;
107
+ const response = await fetch(fullUrl, {
108
+ method,
109
+ headers,
110
+ body: ['DELETE', 'PATCH', 'POST', 'PUT'].includes(method)
111
+ ? JSON.stringify(preparedBody)
112
+ : undefined,
113
+ signal: abortController.signal,
114
+ });
115
+ if (!response.ok) {
116
+ state.status = 'error';
117
+ state.response = response;
118
+ state.error = response;
119
+ update(state);
120
+ // when not set to not raise error, call the global error handler
121
+ if (onError?.(response) !== false) {
122
+ fetchHelper.configs().onError?.(response);
123
+ }
124
+ return state.status;
125
+ }
126
+ if (finalOptions?.invalidateCacheKey) {
127
+ storeBranchHelper(finalOptions.invalidateCacheKey).clear();
128
+ }
129
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
130
+ const treatedResponse = onPrepareResponse
131
+ ? await onPrepareResponse(response)
132
+ : response;
133
+ state.data = onPrepareResponseData
134
+ ? onPrepareResponseData(treatedResponse)
135
+ : treatedResponse;
136
+ state.response = treatedResponse;
137
+ state.status = 'success';
138
+ update(state);
139
+ onSuccess?.(state.data);
140
+ if (finalOptions?.cache) {
141
+ storeHelper.set(fetchWithDataKey, state, storeConfigs);
142
+ }
143
+ return state.status;
144
+ }
145
+ catch (error) {
146
+ state.error = error;
147
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
148
+ state.response = error;
149
+ state.status = 'error';
150
+ update(state);
151
+ return state.status;
152
+ }
153
+ };
154
+ const status = fn(optionsPassedLevel1);
155
+ return {
156
+ abortController: abortControllerStore[fetchWithDataKey],
157
+ fetchKey,
158
+ fetchWithDataKey,
159
+ fn,
160
+ status,
161
+ };
162
+ },
163
+ // biome-ignore lint/suspicious/noExplicitAny: <explanation>
164
+ getComposedKey: (input) => {
165
+ const { data, instanceId, key, url } = input;
166
+ return {
167
+ fetchKey: input.options?.disableSync === true
168
+ ? `fetch-${url}-${instanceId}-${key}`
169
+ : `fetch-${url}-${key}`,
170
+ fetchWithDataKey: input.options?.disableSync === true
171
+ ? `fetch-${url}-${instanceId}-${key}-${JSON.stringify(data)}`
172
+ : `fetch-${url}-${key}-${JSON.stringify(data)}`,
173
+ };
174
+ },
175
+ };
176
+ //# sourceMappingURL=fetchHelper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchHelper.js","sourceRoot":"","sources":["../../src/fetchHelper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ 'use client';
2
+ import { useWillMount } from '@react-xp/hooks';
3
+ import { fetchHelper } from './fetchHelper';
4
+ export const FetchModule = ({ ...rest }) => {
5
+ useWillMount(() => {
6
+ fetchHelper.configure(rest);
7
+ });
8
+ return null;
9
+ };
10
+ //# sourceMappingURL=fetchModule.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchModule.js","sourceRoot":"","sources":["../../src/fetchModule.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;AACb,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAM5C,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,EAAE,GAAG,IAAI,EAAqB,EAAE,EAAE;IAC5D,YAAY,CAAC,GAAG,EAAE;QAChB,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=fetchTypes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fetchTypes.js","sourceRoot":"","sources":["../../src/fetchTypes.ts"],"names":[],"mappings":""}
@@ -0,0 +1,7 @@
1
+ export * from './fetchHelper';
2
+ export * from './fetchModule';
3
+ export * from './fetchTypes';
4
+ export * from './useFetch';
5
+ export * from './useFetchMutation';
6
+ export * from './useFetchQuery';
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC"}