soon-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.
@@ -0,0 +1,560 @@
1
+ export declare function createRequestStore(options?: {
2
+ maxCacheSize?: number;
3
+ checkInterval?: number;
4
+ }): {
5
+ entry: (key: string) => {
6
+ cache: {
7
+ get: () => any;
8
+ remove: () => void;
9
+ set: (res: Response | unknown, expiredTime: number) => void;
10
+ };
11
+ share: {
12
+ get: () => Promise<any> | undefined;
13
+ set: (value: Promise<any>) => void;
14
+ };
15
+ abort(abortController: AbortController, controllers?: [AbortController] | []): void;
16
+ };
17
+ dispose: () => void;
18
+ get: (key: string) => {
19
+ promise?: Promise<any>;
20
+ abortController?: AbortController;
21
+ cache?: any;
22
+ cache_expiredTime?: number;
23
+ };
24
+ set: (key: string, value: Partial<{
25
+ promise?: Promise<any>;
26
+ abortController?: AbortController;
27
+ cache?: any;
28
+ cache_expiredTime?: number;
29
+ }>) => void;
30
+ remove: (key: string) => void;
31
+ getAll: () => {
32
+ [x: string]: {
33
+ promise?: Promise<any>;
34
+ abortController?: AbortController;
35
+ cache?: any;
36
+ cache_expiredTime?: number;
37
+ };
38
+ };
39
+ removeAll: () => void;
40
+ clearCache: () => void;
41
+ clearExpiredCache: () => void;
42
+ abortAll: () => void;
43
+ };
44
+
45
+ export declare function createShortApi<Wrapper extends (url: string, method: string, params: Record<string, string | number> | undefined, query: Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams | undefined, body: RequestInit["body"] | object, options?: any) => Promise<unknown>>(wrapper: Wrapper): {
46
+ GET: <Url extends string>(url: Url) => {
47
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
48
+ Options: (options: Parameters<Wrapper>[5]) => {
49
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
50
+ };
51
+ Params: <Params extends Record<string, string | number>>() => {
52
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
53
+ Options: (options: Parameters<Wrapper>[5]) => {
54
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
55
+ };
56
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
57
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
58
+ Options: (options: Parameters<Wrapper>[5]) => {
59
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
60
+ };
61
+ };
62
+ };
63
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
64
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
65
+ Options: (options: Parameters<Wrapper>[5]) => {
66
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
67
+ };
68
+ };
69
+ };
70
+ } & Record<"POST" | "PATCH" | "DELETE" | "PUT", <Url extends string>(url: Url) => {
71
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
72
+ Options: (options: Parameters<Wrapper>[5]) => {
73
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
74
+ };
75
+ Body: <Body>() => unknown extends Body ? never : {
76
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
77
+ Options: (options: Parameters<Wrapper>[5]) => {
78
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
79
+ };
80
+ };
81
+ FormData: <Body>() => unknown extends Body ? never : {
82
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
83
+ Options: (options: Parameters<Wrapper>[5]) => {
84
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
85
+ };
86
+ };
87
+ Params: <Params extends Record<string, string | number>>() => {
88
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
89
+ Options: (options: Parameters<Wrapper>[5]) => {
90
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
91
+ };
92
+ Body: <Body>() => unknown extends Body ? never : {
93
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
94
+ Options: (options: Parameters<Wrapper>[5]) => {
95
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
96
+ };
97
+ };
98
+ FormData: <Body>() => unknown extends Body ? never : {
99
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
100
+ Options: (options: Parameters<Wrapper>[5]) => {
101
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
102
+ };
103
+ };
104
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
105
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
106
+ Options: (options: Parameters<Wrapper>[5]) => {
107
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
108
+ };
109
+ Body: <Body>() => unknown extends Body ? never : {
110
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
111
+ Options: (options: Parameters<Wrapper>[5]) => {
112
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
113
+ };
114
+ };
115
+ FormData: <Body>() => unknown extends Body ? never : {
116
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
117
+ Options: (options: Parameters<Wrapper>[5]) => {
118
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
119
+ };
120
+ };
121
+ };
122
+ };
123
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
124
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
125
+ Options: (options: Parameters<Wrapper>[5]) => {
126
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
127
+ };
128
+ Body: <Body>() => unknown extends Body ? never : {
129
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
130
+ Options: (options: Parameters<Wrapper>[5]) => {
131
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
132
+ };
133
+ };
134
+ FormData: <Body>() => unknown extends Body ? never : {
135
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
136
+ Options: (options: Parameters<Wrapper>[5]) => {
137
+ Ok: <Res = Awaited<ReturnType<Wrapper>>>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Parameters<Wrapper>[5] | undefined]) => Promise<Res>;
138
+ };
139
+ };
140
+ };
141
+ }>;
142
+
143
+ export declare function createShortMethods<Methods extends readonly string[], Wrapper extends (method: string) => <T>(...args: any) => Promise<T>>(methods: Methods, wrapper: Wrapper): Record<Tuple2Union<Methods>, ReturnType<Wrapper>>;
144
+
145
+ export declare function createSilentRefresh(refreshFn: () => Promise<void>): (success: () => void, fail: () => void) => void;
146
+
147
+ export declare function createSoon<Options extends SoonOptions>(request: <T>(url: string, options?: Options) => Promise<T>): {
148
+ options: <T>(url: string, options?: Options) => Promise<T>;
149
+ get: <T>(url: string, options?: Options) => Promise<T>;
150
+ post: <T>(url: string, options?: Options) => Promise<T>;
151
+ put: <T>(url: string, options?: Options) => Promise<T>;
152
+ delete: <T>(url: string, options?: Options) => Promise<T>;
153
+ patch: <T>(url: string, options?: Options) => Promise<T>;
154
+ head: <T>(url: string, options?: Options) => Promise<T>;
155
+ GET: <Url extends string>(url: Url) => {
156
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
157
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
158
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
159
+ };
160
+ Params: <Params extends Record<string, string | number>>() => {
161
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
162
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
163
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
164
+ };
165
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
166
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
167
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
168
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
169
+ };
170
+ };
171
+ };
172
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
173
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
174
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
175
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
176
+ };
177
+ };
178
+ };
179
+ POST: <Url extends string>(url: Url) => {
180
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
181
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
182
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
183
+ };
184
+ Body: <Body>() => unknown extends Body ? never : {
185
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
186
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
187
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
188
+ };
189
+ };
190
+ FormData: <Body>() => unknown extends Body ? never : {
191
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
192
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
193
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
194
+ };
195
+ };
196
+ Params: <Params extends Record<string, string | number>>() => {
197
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
198
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
199
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
200
+ };
201
+ Body: <Body>() => unknown extends Body ? never : {
202
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
203
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
204
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
205
+ };
206
+ };
207
+ FormData: <Body>() => unknown extends Body ? never : {
208
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
209
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
210
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
211
+ };
212
+ };
213
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
214
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
215
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
216
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
217
+ };
218
+ Body: <Body>() => unknown extends Body ? never : {
219
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
220
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
221
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
222
+ };
223
+ };
224
+ FormData: <Body>() => unknown extends Body ? never : {
225
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
226
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
227
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
228
+ };
229
+ };
230
+ };
231
+ };
232
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
233
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
234
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
235
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
236
+ };
237
+ Body: <Body>() => unknown extends Body ? never : {
238
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
239
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
240
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
241
+ };
242
+ };
243
+ FormData: <Body>() => unknown extends Body ? never : {
244
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
245
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
246
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
247
+ };
248
+ };
249
+ };
250
+ };
251
+ PATCH: <Url extends string>(url: Url) => {
252
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
253
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
254
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
255
+ };
256
+ Body: <Body>() => unknown extends Body ? never : {
257
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
258
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
259
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
260
+ };
261
+ };
262
+ FormData: <Body>() => unknown extends Body ? never : {
263
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
264
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
265
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
266
+ };
267
+ };
268
+ Params: <Params extends Record<string, string | number>>() => {
269
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
270
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
271
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
272
+ };
273
+ Body: <Body>() => unknown extends Body ? never : {
274
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
275
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
276
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
277
+ };
278
+ };
279
+ FormData: <Body>() => unknown extends Body ? never : {
280
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
281
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
282
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
283
+ };
284
+ };
285
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
286
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
287
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
288
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
289
+ };
290
+ Body: <Body>() => unknown extends Body ? never : {
291
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
292
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
293
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
294
+ };
295
+ };
296
+ FormData: <Body>() => unknown extends Body ? never : {
297
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
298
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
299
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
300
+ };
301
+ };
302
+ };
303
+ };
304
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
305
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
306
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
307
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
308
+ };
309
+ Body: <Body>() => unknown extends Body ? never : {
310
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
311
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
312
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
313
+ };
314
+ };
315
+ FormData: <Body>() => unknown extends Body ? never : {
316
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
317
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
318
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
319
+ };
320
+ };
321
+ };
322
+ };
323
+ DELETE: <Url extends string>(url: Url) => {
324
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
325
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
326
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
327
+ };
328
+ Body: <Body>() => unknown extends Body ? never : {
329
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
330
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
331
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
332
+ };
333
+ };
334
+ FormData: <Body>() => unknown extends Body ? never : {
335
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
336
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
337
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
338
+ };
339
+ };
340
+ Params: <Params extends Record<string, string | number>>() => {
341
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
342
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
343
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
344
+ };
345
+ Body: <Body>() => unknown extends Body ? never : {
346
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
347
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
348
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
349
+ };
350
+ };
351
+ FormData: <Body>() => unknown extends Body ? never : {
352
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
353
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
354
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
355
+ };
356
+ };
357
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
358
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
359
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
360
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
361
+ };
362
+ Body: <Body>() => unknown extends Body ? never : {
363
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
364
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
365
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
366
+ };
367
+ };
368
+ FormData: <Body>() => unknown extends Body ? never : {
369
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
370
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
371
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
372
+ };
373
+ };
374
+ };
375
+ };
376
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
377
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
378
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
379
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
380
+ };
381
+ Body: <Body>() => unknown extends Body ? never : {
382
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
383
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
384
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
385
+ };
386
+ };
387
+ FormData: <Body>() => unknown extends Body ? never : {
388
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
389
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
390
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
391
+ };
392
+ };
393
+ };
394
+ };
395
+ PUT: <Url extends string>(url: Url) => {
396
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
397
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
398
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
399
+ };
400
+ Body: <Body>() => unknown extends Body ? never : {
401
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
402
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
403
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
404
+ };
405
+ };
406
+ FormData: <Body>() => unknown extends Body ? never : {
407
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
408
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
409
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
410
+ };
411
+ };
412
+ Params: <Params extends Record<string, string | number>>() => {
413
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
414
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
415
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
416
+ };
417
+ Body: <Body>() => unknown extends Body ? never : {
418
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
419
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
420
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
421
+ };
422
+ };
423
+ FormData: <Body>() => unknown extends Body ? never : {
424
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
425
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
426
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
427
+ };
428
+ };
429
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
430
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
431
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
432
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
433
+ };
434
+ Body: <Body>() => unknown extends Body ? never : {
435
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
436
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
437
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
438
+ };
439
+ };
440
+ FormData: <Body>() => unknown extends Body ? never : {
441
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
442
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
443
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<Params>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
444
+ };
445
+ };
446
+ };
447
+ };
448
+ Query: <Query extends Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams>() => unknown extends Query ? never : {
449
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
450
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
451
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
452
+ };
453
+ Body: <Body>() => unknown extends Body ? never : {
454
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
455
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
456
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
457
+ };
458
+ };
459
+ FormData: <Body>() => unknown extends Body ? never : {
460
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
461
+ Options: (options: Omit<Options, "body" | "method" | "query" | "params"> | undefined) => {
462
+ Ok: <Res = unknown>() => (...arg: [...OptionParams<{ [key in GetUrlKey<Url>]: string | number; }>, ...OptionQuery<Query>, ...OptionBody<Body>, options?: Omit<Options, "body" | "method" | "query" | "params"> | undefined]) => Promise<Res>;
463
+ };
464
+ };
465
+ };
466
+ };
467
+ request: <T>(url: string, options?: Options) => Promise<T>;
468
+ };
469
+
470
+ export declare function deepSort(obj: unknown, sortArr?: boolean): unknown;
471
+
472
+ export declare function genRequestKey(req: {
473
+ url: string;
474
+ options?: {
475
+ method?: string;
476
+ headers?: RequestInit["headers"];
477
+ body?: RequestInit["body"] | object;
478
+ query?: Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams;
479
+ params?: Record<string, string | number>;
480
+ };
481
+ }, sortObjKeys?: boolean): string;
482
+
483
+ declare type GetUrlKey<Url> = Url extends `${string}/:${infer Key}/${infer Right}` ? `${Key}` | GetUrlKey<`/${Right}`> : Url extends `${string}/:${infer Key}` ? `${Key}` : never;
484
+
485
+ export declare function isBodyJson(body: any): boolean;
486
+
487
+ export declare const mergeHeaders: (...headersList: (HeadersInit | undefined)[]) => Headers;
488
+
489
+ export declare function mergeOptions<Options extends SoonOptions>(...optionsList: (Options | undefined)[]): Options & {
490
+ headers: Headers;
491
+ };
492
+
493
+ export declare function mergeSignals(signals?: (AbortSignal | null | undefined)[], timeout?: number): AbortSignal | undefined;
494
+
495
+ declare type OptionBody<Args> = NonNullable<Args> extends never ? [] : Exclude<Args, NonNullable<Args>> extends never ? [body: Args] : [body?: Args];
496
+
497
+ declare type OptionParams<Args> = NonNullable<Args> extends never ? [] : keyof NonNullable<Args> extends never ? [] : Exclude<Args, NonNullable<Args>> extends never ? [params: Args] : [params?: Args];
498
+
499
+ declare type OptionQuery<Args> = NonNullable<Args> extends never ? [] : keyof NonNullable<Args> extends never ? [] : Exclude<Args, NonNullable<Args>> extends never ? Partial<Args> extends Args ? [query?: Args] : [query: Args] : [query?: Args];
500
+
501
+ export declare function parseOptions<Options extends SoonOptions>(urlOptions: {
502
+ url: string;
503
+ options?: Options;
504
+ baseURL?: string;
505
+ baseOptions?: Options;
506
+ }): {
507
+ url: string;
508
+ options: Options & {
509
+ headers: Headers;
510
+ body?: RequestInit["body"];
511
+ query: URLSearchParams;
512
+ };
513
+ is_body_json: boolean;
514
+ abortController: AbortController;
515
+ };
516
+
517
+ export declare const parseUrl: (url: string, config: {
518
+ query?: Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams;
519
+ params?: Record<string, string | number>;
520
+ baseURL?: string;
521
+ }) => {
522
+ query: URLSearchParams;
523
+ url: string;
524
+ path: string;
525
+ };
526
+
527
+ export declare function progressDownload(response: Response, onProgress: (progress: number, downloaded: number, total: number) => void): Promise<ArrayBuffer>;
528
+
529
+ export declare function progressReadBody(body: ReadableStream<Uint8Array>, onProgress: (progress: number, downloaded: number, total: number) => void, total?: number): Promise<ArrayBuffer>;
530
+
531
+ export declare function requestWithStore<T>(store: ReturnType<typeof createRequestStore>, requestFn: () => Promise<any>, requestKey: string, fetchAbort: AbortController, options?: {
532
+ share?: boolean;
533
+ aborts?: [AbortController] | [];
534
+ staleTime?: number;
535
+ }): Promise<T>;
536
+
537
+ export declare const soonFetch: (config: {
538
+ url: string;
539
+ options?: SoonOptions;
540
+ baseURL?: string;
541
+ baseOptions?: SoonOptions;
542
+ store?: ReturnType<typeof createRequestStore>;
543
+ sortRequestKey?: boolean;
544
+ }) => Promise<Response>;
545
+
546
+ export declare type SoonOptions = Omit<RequestInit, "body"> & {
547
+ body?: RequestInit["body"] | object;
548
+ query?: Record<string, string | number | boolean | null | undefined | (string | number | boolean | null | undefined)[]> | URLSearchParams;
549
+ params?: Record<string, string | number>;
550
+ timeout?: number;
551
+ aborts?: [AbortController] | [];
552
+ share?: boolean;
553
+ staleTime?: number;
554
+ };
555
+
556
+ export declare function toFormData(body: Record<string, any>): FormData;
557
+
558
+ declare type Tuple2Union<T> = T extends readonly [infer T1, infer T2, ...infer R] ? T1 | T2 | Tuple2Union<R> : T extends [infer T_Only] ? T_Only : never;
559
+
560
+ export { }
package/dist/index.js ADDED
@@ -0,0 +1 @@
1
+ var e=e=>{const t=[],r=e.match(/:([^:/\d]+)\/?/g);return r&&r.forEach(e=>{t.push(e.replace(/\//g,"").replace(/:/g,""))}),t},t=(e="")=>e.endsWith("/")?e.slice(0,-1):e,r=(e="")=>e.startsWith("/")?e:"/"+e,o=(e="")=>e.startsWith("http"),n=e=>{if(!e)return[];if(e instanceof URLSearchParams||"string"==typeof e||Array.isArray(e))return Array.from(new URLSearchParams(e).entries());const t=[];return Object.entries(e).forEach(([e,r])=>{(Array.isArray(r)?r:[r]).forEach(r=>{t.push([e,String(r??"")])})}),t},a=(a,s)=>{const{query:c,params:i,baseURL:h}=s;let l=a.trim();e(a).forEach(e=>{i&&(l=l.replace(":"+e,""+i[e]))});const[u,d]=l.split("?"),p=new URLSearchParams([...n(d),...n(c)]);let y=((e,n)=>o(e)?e:t(o(n)?n:r(n))+t(r(e)))(u,h),f=y;return p.size&&(f=y+"?"+p),{query:p,url:f,path:y}},s=(...e)=>{const t=new Headers;return e.forEach(e=>{e&&(e instanceof Headers?e.forEach((e,r)=>t.set(r,e)):Array.isArray(e)?e.forEach(([e,r])=>t.set(e,r)):Object.entries(e).forEach(([e,r])=>t.set(e,r)))}),t};function c(e,t){const r=(e??[]).filter(e=>!!e);return t&&r.push(AbortSignal.timeout(t)),r.length?AbortSignal.any(r):void 0}function i(e){return!(!e||"object"!=typeof e||(e instanceof Blob||e instanceof ArrayBuffer||e instanceof FormData||e instanceof File||e instanceof DataView||e instanceof URLSearchParams||e instanceof ReadableStream||(t=e,[Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array,BigInt64Array,BigUint64Array].some(e=>t instanceof e))));var t}function h(e){const t=new FormData;return e&&"object"==typeof e&&!Array.isArray(e)&&Object.entries(e).forEach(([e,r])=>{if(null==r||"function"==typeof r)return;let o;o=r instanceof Blob?r:"object"==typeof r?JSON.stringify(r):String(r),t.append(e,o)}),t}var l=e=>{if(e instanceof Response)return e.clone();if("function"==typeof e||e instanceof Promise||null===e||"object"!=typeof e)return e;try{return structuredClone(e)}catch(t){return JSON.parse(JSON.stringify(e))}};function u(...e){const t=Object.assign({},...e);return t.headers=s(...e.map(e=>e?.headers)),t.signal=c(e.map(e=>e?.signal),t.timeout),t}function d(e){const{url:t,options:r,baseURL:o,baseOptions:n}=e,s=u(n,r),{url:h,query:l}=a(t,{...s,baseURL:o});s.query=l;const d=s?.body,p=i(d);s.body=p?JSON.stringify(d):d,p&&s.headers.append("Content-Type","application/json");const y=new AbortController;return s.signal=c([s.signal,y.signal]),{url:h,options:s,is_body_json:p,abortController:y}}var p=["get","post","put","delete","patch"];function y(e,t){const r={};return e.forEach(e=>{r[e]=t(e)}),r}function f(t){const r=(r,o,n)=>{const a=!!e(r).length;return(...e)=>{const s=[...e],{hasBody:c,hasQuery:i,isFormData:l,options:u}=n||{},d=a?s.shift():void 0,p=i?s.shift():void 0;let y=c?s.shift():void 0;l&&(y=h(y));const f=s.shift(),m=u?{...u,...f}:f;return t(r,o,d,p,y,m)}},o={};return p.forEach(e=>{const t=e.toUpperCase();o[t]=t=>({Ok:()=>r(t,e),Options:o=>({Ok:()=>r(t,e,{options:o})}),Body:()=>({Ok:()=>r(t,e,{hasBody:!0}),Options:o=>({Ok:()=>r(t,e,{hasBody:!0,options:o})})}),FormData:()=>({Ok:()=>r(t,e,{hasBody:!0,isFormData:!0}),Options:o=>({Ok:()=>r(t,e,{hasBody:!0,isFormData:!0,options:o})})}),Params:()=>({Ok:()=>r(t,e),Options:o=>({Ok:()=>r(t,e,{options:o})}),Body:()=>({Ok:()=>r(t,e,{hasBody:!0}),Options:o=>({Ok:()=>r(t,e,{hasBody:!0,options:o})})}),FormData:()=>({Ok:()=>r(t,e,{hasBody:!0,isFormData:!0}),Options:o=>({Ok:()=>r(t,e,{hasBody:!0,isFormData:!0,options:o})})}),Query:()=>({Ok:()=>r(t,e,{hasQuery:!0}),Options:o=>({Ok:()=>r(t,e,{hasQuery:!0,options:o})}),Body:()=>({Ok:()=>r(t,e,{hasBody:!0,hasQuery:!0}),Options:o=>({Ok:()=>r(t,e,{hasBody:!0,hasQuery:!0,options:o})})}),FormData:()=>({Ok:()=>r(t,e,{hasBody:!0,hasQuery:!0,isFormData:!0}),Options:o=>({Ok:()=>r(t,e,{hasBody:!0,hasQuery:!0,isFormData:!0,options:o})})})})}),Query:()=>({Ok:()=>r(t,e,{hasQuery:!0}),Options:o=>({Ok:()=>r(t,e,{hasQuery:!0,options:o})}),Body:()=>({Ok:()=>r(t,e,{hasBody:!0,hasQuery:!0}),Options:o=>({Ok:()=>r(t,e,{hasBody:!0,hasQuery:!0,options:o})})}),FormData:()=>({Ok:()=>r(t,e,{hasBody:!0,hasQuery:!0,isFormData:!0}),Options:o=>({Ok:()=>r(t,e,{hasBody:!0,hasQuery:!0,isFormData:!0,options:o})})})})})}),o}function m(e,t=!1){if(Array.isArray(e)){const r=[...e];return t&&r.sort(),r.map(e=>m(e,t))}if("object"==typeof e&&null!==e){const r={};return Object.keys(e).sort().forEach(o=>{r[o]=m(e[o],t)}),r}return e}function b(e,t){const{url:r,options:o}=e,{headers:n,method:a,body:s,query:c,params:i}=o??{},h={params:i,query:c,body:s,headers:Object.fromEntries(new Headers(n).entries())};return(a??"get").toLowerCase()+r+JSON.stringify(t?h:m(h))}function O(e={}){const t=e.maxCacheSize??1e5,r=e.checkInterval??6e4,o={},n=e=>o[e],a=(e,t)=>{const r=o[e];r?Object.assign(r,t):o[e]={...t}},s=e=>{delete o[e]},c=(e,t)=>{try{const r=n(e);r&&(t(r),Object.keys(r).some(e=>void 0!==r[e])?a(e,r):s(e))}catch(r){console.error("Error during request cleanup:",r);try{s(e)}catch(o){console.error("Failed to remove request after cleanup error:",o)}}};function i(e,r,s){const i=n(e)||{};i.cache=l(r),i.cache_expiredTime=s,a(e,i),(()=>{try{const e=Object.entries(o).filter(([e,t])=>void 0!==t.cache);if(e.length>t){e.sort(([,e],[,t])=>(e.cache_expiredTime||0)-(t.cache_expiredTime||0));const r=e.length-t;e.slice(0,r).forEach(([e])=>{c(e,e=>{delete e.cache,delete e.cache_expiredTime})})}}catch(e){console.error("Error during cache size management:",e)}})()}const h=setInterval(()=>{try{const e=Date.now();Object.entries(o).forEach(([t,r])=>{r.cache_expiredTime&&r.cache_expiredTime<e&&c(t,e=>{delete e.cache,delete e.cache_expiredTime})})}catch(e){console.warn("Error during periodic cache cleanup:",e)}},r);return{entry:e=>({cache:{get:()=>function(e){const t=n(e);if(t&&void 0!==t.cache)return t.cache_expiredTime&&t.cache_expiredTime>Date.now()?l(t.cache):void c(e,e=>{delete e.cache,delete e.cache_expiredTime})}(e),remove:()=>function(e){c(e,e=>{delete e.cache,delete e.cache_expiredTime})}(e),set:(t,r)=>i(e,t,r)},share:{get:()=>function(e){return n(e)?.promise}(e),set:t=>function(e,t){const r=n(e)||{};r.promise=t,a(e,r),t.finally(()=>{c(e,e=>{delete e.promise})})}(e,t)},abort(t,r){r&&r.length>0&&r[r.length-1]!==n(e)?.abortController&&(r.pop()?.abort("race abort"),r.push(t),a(e,{abortController:t}))}}),dispose:()=>{clearInterval(h)},get:n,set:a,remove:s,getAll:()=>({...o}),removeAll:()=>{Object.keys(o).forEach(e=>{delete o[e]})},clearCache:()=>{Object.entries(o).forEach(([e,t])=>{void 0!==t.cache&&c(e,e=>{delete e.cache,delete e.cache_expiredTime})})},clearExpiredCache:()=>{const e=Date.now();Object.entries(o).forEach(([t,r])=>{r.cache_expiredTime&&r.cache_expiredTime<e&&c(t,e=>{delete e.cache,delete e.cache_expiredTime})})},abortAll:()=>{Object.entries(o).forEach(([e,t])=>{t.abortController&&t.abortController.abort("abort all")})}}}function g(e){let t=[],r=!1;return(o,n)=>{t.push({success:o,fail:n}),r||(r=!0,e().then(()=>{t.forEach(e=>e.success())}).catch(e=>{t.forEach(e=>e.fail())}).finally(()=>{r=!1,t=[]}))}}function A(e,t,r=0){return new Promise((o,n)=>{let a=0;const s=e.getReader(),c=[];!function e(){s.read().then(({done:n,value:s})=>{if(n){const e=new Uint8Array(a);let n=0;return c.forEach(t=>{e.set(t,n),n+=t.length}),t(100,a,r),void o(e.buffer)}s&&(c.push(s),a+=s.length,r>0?t(Math.min(100,Math.round(a/r*100)),a,r):t(0,a,0)),e()}).catch(e=>{console.error("Error reading response body:",e),n(e)})}()})}function E(e,t){return new Promise((r,o)=>{if(!e.body)return void o(/* @__PURE__ */new Error("Response body is null"));const n=e.headers.get("content-length"),a=n?parseInt(n,10):0;A(e.body,t,a).then(r).catch(o)})}function k(e,t,r,o,n){return new Promise((a,s)=>{const c=e.entry(r),{share:i,aborts:h,staleTime:u}=n??{},d=new AbortController;if(d.signal.addEventListener("abort",()=>{s(d.signal.reason)}),c.abort(i?d:o,h),i){const e=c.share.get();if(e)return a(e.then(e=>l(e)))}if(u){const e=c.cache.get();if(void 0!==e)return a(e)}const p=t();i&&c.share.set(p),p.then(e=>{a(e),u&&c.cache.set(e,/* @__PURE__ */(new Date).getTime()+u)}).catch(e=>s(e))})}var v=O(),B=e=>{const t=d(e),r=b({url:e.url,options:{method:t.options?.method,headers:t.options?.headers}},e.sortRequestKey);return k(e.store??v,()=>fetch(t.url,t.options),r,t.abortController,t.options)};function j(e){const t=f((t,r,o,n,a,s)=>e(t,{...s,method:r,params:o,query:n,body:a})),r=y([...p,"head","options"],t=>(r,o)=>e(r,{...o,method:t}));return{request:e,...t,...r}}export{O as createRequestStore,f as createShortApi,y as createShortMethods,g as createSilentRefresh,j as createSoon,m as deepSort,b as genRequestKey,i as isBodyJson,s as mergeHeaders,u as mergeOptions,c as mergeSignals,d as parseOptions,a as parseUrl,E as progressDownload,A as progressReadBody,k as requestWithStore,B as soonFetch,h as toFormData};