@brickflow/http 0.0.15 → 0.0.16
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/README.md +249 -284
- package/dist/create-get.d.ts +12 -0
- package/dist/create-get.d.ts.map +1 -0
- package/dist/http.d.ts +26 -41
- package/dist/http.d.ts.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.mjs +48 -21
- package/dist/index.mjs.map +1 -1
- package/dist/nuxt-DAmJOX58.js +233 -0
- package/dist/nuxt-DAmJOX58.js.map +1 -0
- package/dist/nuxt.d.ts +25 -42
- package/dist/nuxt.d.ts.map +1 -1
- package/dist/nuxt.mjs +2 -222
- package/package.json +10 -9
- package/src/app.d.ts +11 -0
- package/src/create-get.ts +43 -0
- package/src/http.ts +286 -0
- package/src/index.ts +3 -0
- package/src/nuxt.ts +355 -0
- package/src/utils.ts +50 -0
- package/dist/nuxt.mjs.map +0 -1
- package/dist/utils-DMSINHi5.js +0 -39
- package/dist/utils-DMSINHi5.js.map +0 -1
package/dist/nuxt.d.ts
CHANGED
|
@@ -1,12 +1,16 @@
|
|
|
1
|
-
import type { HttpClient,
|
|
1
|
+
import type { HttpClient, HttpErrorGuard, HttpKey, HttpParam, HttpResponseData } from './http';
|
|
2
2
|
export interface CreateUseHttpDependencies {
|
|
3
3
|
channelName?: string;
|
|
4
|
-
getCache
|
|
4
|
+
getCache: () => null | UseHttpCache;
|
|
5
5
|
getHttpClient: () => HttpClient;
|
|
6
|
-
isError?: HttpErrorGuard<unknown, HttpError>;
|
|
7
6
|
isDev?: () => boolean;
|
|
7
|
+
isError?: HttpErrorGuard<unknown>;
|
|
8
8
|
ttl?: number;
|
|
9
9
|
}
|
|
10
|
+
export type HttpError = HttpErrorMap[keyof HttpErrorMap];
|
|
11
|
+
export interface HttpErrorMap {
|
|
12
|
+
}
|
|
13
|
+
export type HttpSuccessData<TKey extends HttpKey = HttpKey> = Exclude<HttpResponseData<TKey>, HttpError>;
|
|
10
14
|
export interface UseHttpCache {
|
|
11
15
|
deleteKeysWithPart: (part: string) => Promise<void>;
|
|
12
16
|
get: <T>(key: string) => Promise<null | UseHttpCacheEntry<T>>;
|
|
@@ -16,57 +20,36 @@ export interface UseHttpCacheEntry<T> {
|
|
|
16
20
|
hash: string;
|
|
17
21
|
value: T;
|
|
18
22
|
}
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
ignore?: (response: HttpResponse<HttpError>) => boolean;
|
|
23
|
+
export interface UseHttpFn {
|
|
24
|
+
<T extends HttpKey, P extends HttpParam>(options: UseHttpOptions<T, P>): Promise<UseHttpResult<T, P>>;
|
|
25
|
+
}
|
|
26
|
+
export interface UseHttpOptions<T extends HttpKey, P extends HttpParam> {
|
|
27
|
+
effect?: UseHttpEffect<T, P>;
|
|
25
28
|
initParams?: P;
|
|
29
|
+
isError?: (payload: HttpResponseData<T>) => boolean;
|
|
26
30
|
lazy?: true;
|
|
27
|
-
mapParams?:
|
|
31
|
+
mapParams?: (params?: P) => P;
|
|
28
32
|
server?: boolean;
|
|
29
33
|
url: T;
|
|
30
|
-
};
|
|
31
|
-
export type UseHttpOptions<T extends HttpKey, P extends HttpParam> = UseHttpOptionsBase<T, P> & {
|
|
32
|
-
isError?: (payload: HttpResponseData<T>) => boolean;
|
|
33
|
-
};
|
|
34
|
-
export type CreateGetOptions<T extends HttpKey, P extends HttpParam> = Omit<UseHttpOptions<T, P>, 'url'>;
|
|
35
|
-
export interface CreateGetResult<T extends HttpKey, P extends HttpParam> {
|
|
36
|
-
data: HttpSuccessData<T> | null;
|
|
37
|
-
error: Extract<HttpResponseData<T>, HttpError> | null;
|
|
38
|
-
fetch: (params?: P, opt?: {
|
|
39
|
-
signal: AbortSignal;
|
|
40
|
-
}) => Promise<void>;
|
|
41
|
-
hasFirstData: boolean;
|
|
42
|
-
hasFreshData: boolean;
|
|
43
|
-
pending: boolean;
|
|
44
|
-
pendingCache: boolean;
|
|
45
|
-
}
|
|
46
|
-
export interface CreateGetPayload<T extends HttpKey, P extends HttpParam> {
|
|
47
|
-
effect?: (data: HttpResponseData<T>, config: {
|
|
48
|
-
cached: boolean;
|
|
49
|
-
params: P;
|
|
50
|
-
}) => undefined;
|
|
51
|
-
ignore?: (response: HttpResponse<HttpError>) => boolean;
|
|
52
|
-
isError?: (payload: HttpResponseData<T>) => boolean;
|
|
53
|
-
mapParams?: <R extends P>(params?: R) => R;
|
|
54
34
|
}
|
|
55
35
|
export interface UseHttpResult<T extends HttpKey, P extends HttpParam> {
|
|
56
36
|
data: HttpSuccessData<T> | null;
|
|
57
|
-
error:
|
|
58
|
-
fetch:
|
|
59
|
-
signal: AbortSignal;
|
|
60
|
-
}) => Promise<void>;
|
|
37
|
+
error: null | UseHttpError<T>;
|
|
38
|
+
fetch: UseHttpFetch<P>;
|
|
61
39
|
hasFirstData: boolean;
|
|
62
40
|
hasFreshData: boolean;
|
|
63
41
|
pending: boolean;
|
|
64
42
|
pendingCache: boolean;
|
|
65
43
|
}
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
44
|
+
type UseHttpEffect<T extends HttpKey, P extends HttpParam> = (data: HttpResponseData<T>, config: UseHttpEffectConfig<P>) => void;
|
|
45
|
+
type UseHttpEffectConfig<P extends HttpParam> = {
|
|
46
|
+
cached: boolean;
|
|
47
|
+
params: P;
|
|
48
|
+
};
|
|
49
|
+
type UseHttpError<T extends HttpKey> = Extract<HttpResponseData<T>, HttpError>;
|
|
50
|
+
type UseHttpFetch<P extends HttpParam> = (params?: P, opt?: {
|
|
51
|
+
signal: AbortSignal;
|
|
52
|
+
}) => Promise<void>;
|
|
70
53
|
export declare function createUseHttp(dependencies: CreateUseHttpDependencies): UseHttpFn;
|
|
71
54
|
export {};
|
|
72
55
|
//# sourceMappingURL=nuxt.d.ts.map
|
package/dist/nuxt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nuxt.d.ts","sourceRoot":"","sources":["../src/nuxt.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nuxt.d.ts","sourceRoot":"","sources":["../src/nuxt.ts"],"names":[],"mappings":"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"}
|
package/dist/nuxt.mjs
CHANGED
|
@@ -1,222 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
3
|
-
import { onScopeDispose, shallowReactive, shallowRef } from "vue";
|
|
4
|
-
//#region src/nuxt.ts
|
|
5
|
-
const DAY = 1e3 * 60 * 60 * 24;
|
|
6
|
-
const DEFAULT_CHANNEL_NAME = "http-tab-sync";
|
|
7
|
-
const DEFAULT_TTL = DAY * 7;
|
|
8
|
-
function createGet(useHttp) {
|
|
9
|
-
return function withParams() {
|
|
10
|
-
return function withUrl(url, payload) {
|
|
11
|
-
return async function request(options = {}) {
|
|
12
|
-
return await useHttp({
|
|
13
|
-
ignore: payload?.ignore,
|
|
14
|
-
isError: options.isError ?? payload?.isError,
|
|
15
|
-
...options,
|
|
16
|
-
effect: (...args) => {
|
|
17
|
-
const [data, config] = args;
|
|
18
|
-
payload?.effect?.(data, config);
|
|
19
|
-
options?.effect?.(data, config);
|
|
20
|
-
},
|
|
21
|
-
mapParams: payload?.mapParams,
|
|
22
|
-
url
|
|
23
|
-
});
|
|
24
|
-
};
|
|
25
|
-
};
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
function createUseHttp(dependencies) {
|
|
29
|
-
let channel;
|
|
30
|
-
const useHttp = async (options) => {
|
|
31
|
-
const mapParams = (params) => {
|
|
32
|
-
if (options.mapParams) return options.mapParams(params ?? {});
|
|
33
|
-
return params ?? {};
|
|
34
|
-
};
|
|
35
|
-
const effect = options.effect;
|
|
36
|
-
const isError = createIsErrorGuard(options.isError, dependencies.isError);
|
|
37
|
-
const buildUrl = createURL;
|
|
38
|
-
const initFullUrl = buildUrl(options.url, mapParams(options.initParams));
|
|
39
|
-
const httpClient = dependencies.getHttpClient();
|
|
40
|
-
const cache = import.meta.client ? dependencies.getCache?.() ?? null : null;
|
|
41
|
-
let hasDataFromServer = false;
|
|
42
|
-
const result = shallowReactive({
|
|
43
|
-
data: null,
|
|
44
|
-
error: null,
|
|
45
|
-
fetch: async (_params, _opt) => await void 0,
|
|
46
|
-
hasFirstData: false,
|
|
47
|
-
hasFreshData: false,
|
|
48
|
-
pending: true,
|
|
49
|
-
pendingCache: true
|
|
50
|
-
});
|
|
51
|
-
const setError = (value) => {
|
|
52
|
-
result.error = value;
|
|
53
|
-
};
|
|
54
|
-
const setData = (value) => {
|
|
55
|
-
result.data = value;
|
|
56
|
-
};
|
|
57
|
-
const syncResult = (payload) => {
|
|
58
|
-
if (payload == null) {
|
|
59
|
-
setData(null);
|
|
60
|
-
setError(null);
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
if (isError(payload)) {
|
|
64
|
-
setData(null);
|
|
65
|
-
setError(payload);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
setData(payload);
|
|
69
|
-
setError(null);
|
|
70
|
-
};
|
|
71
|
-
const controller = new AbortController();
|
|
72
|
-
const serverData = useState(`http-${initFullUrl}`, () => null);
|
|
73
|
-
if (options.server && import.meta.server) {
|
|
74
|
-
const paramsReactive = shallowRef(mapParams(options.initParams));
|
|
75
|
-
const ssr = await useLazyAsyncData(initFullUrl, async () => {
|
|
76
|
-
return await httpClient.get(options.url, { params: paramsReactive.value });
|
|
77
|
-
});
|
|
78
|
-
result.fetch = async (params) => {
|
|
79
|
-
paramsReactive.value = mapParams(params);
|
|
80
|
-
await ssr.refresh();
|
|
81
|
-
};
|
|
82
|
-
serverData.value = ssr.data.value?.data ?? null;
|
|
83
|
-
const serverPayload = serverData.value;
|
|
84
|
-
syncResult(serverPayload);
|
|
85
|
-
result.pending = false;
|
|
86
|
-
result.pendingCache = false;
|
|
87
|
-
result.hasFirstData = true;
|
|
88
|
-
result.hasFreshData = true;
|
|
89
|
-
if (serverData.value) effect?.(serverData.value, {
|
|
90
|
-
cached: false,
|
|
91
|
-
params: mapParams(options.initParams)
|
|
92
|
-
});
|
|
93
|
-
if (result.data) hasDataFromServer = true;
|
|
94
|
-
}
|
|
95
|
-
if (import.meta.client) {
|
|
96
|
-
channel = getChannel(dependencies.channelName ?? DEFAULT_CHANNEL_NAME, channel);
|
|
97
|
-
const fullUrlHistory = {};
|
|
98
|
-
function onMessage(event) {
|
|
99
|
-
if (event.data.fullUrl && fullUrlHistory[event.data.fullUrl]) {
|
|
100
|
-
const eventPayload = event.data.data;
|
|
101
|
-
if (eventPayload) effect?.(eventPayload, {
|
|
102
|
-
cached: false,
|
|
103
|
-
params: event.data.params
|
|
104
|
-
});
|
|
105
|
-
syncResult(eventPayload);
|
|
106
|
-
result.hasFirstData = true;
|
|
107
|
-
result.hasFreshData = true;
|
|
108
|
-
}
|
|
109
|
-
}
|
|
110
|
-
channel?.addEventListener("message", onMessage);
|
|
111
|
-
if (serverData.value) {
|
|
112
|
-
const clientServerPayload = serverData.value;
|
|
113
|
-
syncResult(clientServerPayload);
|
|
114
|
-
result.pending = false;
|
|
115
|
-
result.pendingCache = false;
|
|
116
|
-
result.hasFirstData = true;
|
|
117
|
-
result.hasFreshData = true;
|
|
118
|
-
}
|
|
119
|
-
const raceCondition = {};
|
|
120
|
-
const ttl = dependencies.ttl ?? DEFAULT_TTL;
|
|
121
|
-
const runFetch = async (params, fetchOpt) => {
|
|
122
|
-
const mappedParams = mapParams(params);
|
|
123
|
-
const fullUrl = buildUrl(options.url, mappedParams);
|
|
124
|
-
const fetchId = Date.now() + getRandom(0, 300);
|
|
125
|
-
if (raceCondition[fullUrl]) {
|
|
126
|
-
console.info("Race Condition affect", fullUrl);
|
|
127
|
-
return;
|
|
128
|
-
}
|
|
129
|
-
raceCondition[fullUrl] = fetchId;
|
|
130
|
-
try {
|
|
131
|
-
result.pending = true;
|
|
132
|
-
result.pendingCache = true;
|
|
133
|
-
const cachedFetch = cache && !dependencies.isDev?.() ? await cache.get(fullUrl) : null;
|
|
134
|
-
if (cachedFetch) {
|
|
135
|
-
const cachedPayload = cachedFetch.value;
|
|
136
|
-
effect?.(cachedPayload, {
|
|
137
|
-
cached: true,
|
|
138
|
-
params: mappedParams
|
|
139
|
-
});
|
|
140
|
-
syncResult(cachedPayload);
|
|
141
|
-
result.hasFirstData = true;
|
|
142
|
-
result.pendingCache = false;
|
|
143
|
-
}
|
|
144
|
-
if (controller.signal.aborted || fetchOpt?.signal?.aborted) throw new DOMException("Aborted", "AbortError");
|
|
145
|
-
const signalHttp = fetchOpt?.signal ? [controller.signal, fetchOpt.signal] : controller.signal;
|
|
146
|
-
const response = await httpClient.get(options.url, {
|
|
147
|
-
ignore: options.ignore,
|
|
148
|
-
params: mappedParams,
|
|
149
|
-
signal: signalHttp
|
|
150
|
-
});
|
|
151
|
-
const responsePayload = response.data;
|
|
152
|
-
effect?.(responsePayload, {
|
|
153
|
-
cached: false,
|
|
154
|
-
params: mappedParams
|
|
155
|
-
});
|
|
156
|
-
if (isError(responsePayload)) syncResult(responsePayload);
|
|
157
|
-
else {
|
|
158
|
-
syncResult(responsePayload);
|
|
159
|
-
const successData = responsePayload;
|
|
160
|
-
fullUrlHistory[fullUrl] = true;
|
|
161
|
-
channel?.postMessage({
|
|
162
|
-
data: normalizeBroadcastValue(successData),
|
|
163
|
-
fullUrl,
|
|
164
|
-
params: normalizeBroadcastValue(mappedParams),
|
|
165
|
-
type: "STATE_UPDATE"
|
|
166
|
-
});
|
|
167
|
-
if (cache) {
|
|
168
|
-
if (cachedFetch) {
|
|
169
|
-
if (await hashData(responsePayload) !== cachedFetch.hash) await cache.deleteKeysWithPart(options.url);
|
|
170
|
-
}
|
|
171
|
-
if (response.status === 200) await cache.set(fullUrl, successData, ttl);
|
|
172
|
-
}
|
|
173
|
-
}
|
|
174
|
-
result.hasFirstData = true;
|
|
175
|
-
result.hasFreshData = true;
|
|
176
|
-
} catch (error) {
|
|
177
|
-
console.error(error);
|
|
178
|
-
} finally {
|
|
179
|
-
if (raceCondition[fullUrl] === fetchId) delete raceCondition[fullUrl];
|
|
180
|
-
result.pending = false;
|
|
181
|
-
result.pendingCache = false;
|
|
182
|
-
}
|
|
183
|
-
};
|
|
184
|
-
result.fetch = runFetch;
|
|
185
|
-
if (!hasDataFromServer && options.lazy !== true) runFetch(options.initParams);
|
|
186
|
-
onScopeDispose(() => {
|
|
187
|
-
channel?.removeEventListener("message", onMessage);
|
|
188
|
-
controller.abort(`Http Abort -> onScopeDispose ${options.url}`);
|
|
189
|
-
if (serverData.value) serverData.value = null;
|
|
190
|
-
});
|
|
191
|
-
}
|
|
192
|
-
return result;
|
|
193
|
-
};
|
|
194
|
-
return useHttp;
|
|
195
|
-
}
|
|
196
|
-
function getChannel(name, currentChannel) {
|
|
197
|
-
if (currentChannel) return currentChannel;
|
|
198
|
-
if (import.meta.server || typeof BroadcastChannel !== "function") return null;
|
|
199
|
-
return new BroadcastChannel(name);
|
|
200
|
-
}
|
|
201
|
-
function getRandom(min, max) {
|
|
202
|
-
return Math.floor(Math.random() * (max - min + 1)) + min;
|
|
203
|
-
}
|
|
204
|
-
function hasErrorStatus(payload) {
|
|
205
|
-
return Boolean(payload && typeof payload === "object" && "status" in payload && payload.status === "error");
|
|
206
|
-
}
|
|
207
|
-
function createIsErrorGuard(localGuard, globalGuard) {
|
|
208
|
-
if (localGuard) return localGuard;
|
|
209
|
-
if (globalGuard) return globalGuard;
|
|
210
|
-
return (payload) => hasErrorStatus(payload);
|
|
211
|
-
}
|
|
212
|
-
function normalizeBroadcastValue(payload) {
|
|
213
|
-
try {
|
|
214
|
-
return structuredClone(payload);
|
|
215
|
-
} catch {
|
|
216
|
-
return JSON.parse(JSON.stringify(payload));
|
|
217
|
-
}
|
|
218
|
-
}
|
|
219
|
-
//#endregion
|
|
220
|
-
export { createGet, createUseHttp };
|
|
221
|
-
|
|
222
|
-
//# sourceMappingURL=nuxt.mjs.map
|
|
1
|
+
import { t as createUseHttp } from "./nuxt-DAmJOX58.js";
|
|
2
|
+
export { createUseHttp };
|
package/package.json
CHANGED
|
@@ -1,23 +1,24 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brickflow/http",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.16",
|
|
4
4
|
"description": "Minimal HTTP transport and Nuxt state helpers for brickflow.",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"files": [
|
|
7
|
-
"dist"
|
|
7
|
+
"dist",
|
|
8
|
+
"src"
|
|
8
9
|
],
|
|
9
10
|
"main": "./dist/index.mjs",
|
|
10
11
|
"module": "./dist/index.mjs",
|
|
11
|
-
"types": "./
|
|
12
|
+
"types": "./src/index.ts",
|
|
12
13
|
"exports": {
|
|
13
14
|
".": {
|
|
14
|
-
"types": "./
|
|
15
|
+
"types": "./src/index.ts",
|
|
15
16
|
"development": "./src/index.ts",
|
|
16
17
|
"import": "./dist/index.mjs",
|
|
17
18
|
"default": "./dist/index.mjs"
|
|
18
19
|
},
|
|
19
20
|
"./nuxt": {
|
|
20
|
-
"types": "./
|
|
21
|
+
"types": "./src/nuxt.ts",
|
|
21
22
|
"development": "./src/nuxt.ts",
|
|
22
23
|
"import": "./dist/nuxt.mjs",
|
|
23
24
|
"default": "./dist/nuxt.mjs"
|
|
@@ -26,7 +27,7 @@
|
|
|
26
27
|
"scripts": {
|
|
27
28
|
"build": "rolldown -c build.config.ts && tsc --project tsconfig.build.json",
|
|
28
29
|
"typecheck": "NODE_OPTIONS='--conditions=development' tsc --project tsconfig.json --noEmit",
|
|
29
|
-
"lint": "pnpm
|
|
30
|
+
"lint": "pnpm typecheck && eslint -v && NODE_ENV=deploy eslint --cache .",
|
|
30
31
|
"lint:fix": "pnpm exec eslint . --fix",
|
|
31
32
|
"format": "pnpm exec prettier . --ignore-path ../../.prettierignore --write",
|
|
32
33
|
"format:check": "pnpm exec prettier . --ignore-path ../../.prettierignore --check"
|
|
@@ -35,13 +36,13 @@
|
|
|
35
36
|
"access": "public"
|
|
36
37
|
},
|
|
37
38
|
"dependencies": {
|
|
38
|
-
"@nuxt/kit": "
|
|
39
|
+
"@nuxt/kit": "4.4.7"
|
|
39
40
|
},
|
|
40
41
|
"devDependencies": {
|
|
41
42
|
"@brickflow/lint": "workspace:*",
|
|
42
43
|
"@brickflow/prettier": "workspace:*",
|
|
43
|
-
"rolldown": "1.0
|
|
44
|
-
"vue-tsc": "3.3.
|
|
44
|
+
"rolldown": "1.1.0",
|
|
45
|
+
"vue-tsc": "3.3.4"
|
|
45
46
|
},
|
|
46
47
|
"peerDependencies": {
|
|
47
48
|
"nuxt": ">=3",
|
package/src/app.d.ts
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { HttpClient, HttpKey, HttpParam } from './http'
|
|
2
|
+
import type { UseHttpFn, UseHttpOptions, UseHttpResult } from './nuxt'
|
|
3
|
+
|
|
4
|
+
export type CreateGetOptions<T extends HttpKey, P extends HttpParam> = Omit<UseHttpOptions<T, P>, 'url'>
|
|
5
|
+
|
|
6
|
+
export type CreateGetPayload<T extends HttpKey, P extends HttpParam> = Pick<
|
|
7
|
+
UseHttpOptions<T, P>,
|
|
8
|
+
'effect' | 'isError' | 'mapParams'
|
|
9
|
+
>
|
|
10
|
+
|
|
11
|
+
export type CreateGetResult<T extends HttpKey, P extends HttpParam> = UseHttpResult<T, P>
|
|
12
|
+
|
|
13
|
+
export function createUseCase<D>() {
|
|
14
|
+
return <T>(
|
|
15
|
+
callback: (payload: D & { httpClient: HttpClient }) => T,
|
|
16
|
+
): ((payload: D & { httpClient: HttpClient }) => T) => callback
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export function defineGet(useHttp: UseHttpFn) {
|
|
20
|
+
return function withParams<P extends HttpParam>() {
|
|
21
|
+
return function withUrl<T extends HttpKey>(
|
|
22
|
+
url: T,
|
|
23
|
+
payload?: CreateGetPayload<T, P>,
|
|
24
|
+
): (options?: CreateGetOptions<T, P>) => Promise<CreateGetResult<T, P>> {
|
|
25
|
+
return async function request(options: CreateGetOptions<T, P> = {}): Promise<CreateGetResult<T, P>> {
|
|
26
|
+
const result = await useHttp({
|
|
27
|
+
...options,
|
|
28
|
+
effect: (...args) => {
|
|
29
|
+
const [data, config] = args
|
|
30
|
+
|
|
31
|
+
payload?.effect?.(data, config)
|
|
32
|
+
options?.effect?.(data, config)
|
|
33
|
+
},
|
|
34
|
+
isError: options.isError ?? payload?.isError,
|
|
35
|
+
mapParams: options.mapParams ?? payload?.mapParams,
|
|
36
|
+
url,
|
|
37
|
+
})
|
|
38
|
+
|
|
39
|
+
return result
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|