soon-fetch 4.0.0-beta.2 → 4.0.0-beta.3

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