@zayne-labs/callapi 1.6.14 → 1.6.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cjs/{common-B_9jiZXC.d.cts → error-MH9dJCiM.d.cts} +25 -9
- package/dist/cjs/index.cjs +773 -1
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +11 -10
- package/dist/cjs/utils/index.cjs +129 -1
- package/dist/cjs/utils/index.cjs.map +1 -1
- package/dist/cjs/utils/index.d.cts +2 -3
- package/dist/esm/chunk-JP7YMR7V.js +263 -0
- package/dist/esm/{chunk-MOMG57MZ.js.map → chunk-JP7YMR7V.js.map} +1 -1
- package/dist/esm/{common-B_9jiZXC.d.ts → error-MH9dJCiM.d.ts} +25 -9
- package/dist/esm/index.d.ts +11 -10
- package/dist/esm/index.js +481 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/utils/index.d.ts +2 -3
- package/dist/esm/utils/index.js +3 -1
- package/package.json +7 -13
- package/dist/cjs/error-lBRMiMeF.d.cts +0 -17
- package/dist/cjs/options/index.cjs +0 -1
- package/dist/cjs/options/index.cjs.map +0 -1
- package/dist/cjs/options/index.d.cts +0 -25
- package/dist/esm/chunk-DQY5GNZB.js +0 -1
- package/dist/esm/chunk-DQY5GNZB.js.map +0 -1
- package/dist/esm/chunk-MOMG57MZ.js +0 -1
- package/dist/esm/error-lBRMiMeF.d.ts +0 -17
- package/dist/esm/options/index.d.ts +0 -25
- package/dist/esm/options/index.js +0 -1
- package/dist/esm/options/index.js.map +0 -1
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { d as DefaultDataType, R as ResultModeUnion, a as ResponseTypeUnion, C as CallApiSchemas, b as CallApiPlugin, D as DefaultPluginArray, c as CallApiExtraOptions, I as InferSchemaResult, x as InitURL, G as GetCallApiResult, B as BaseCallApiExtraOptions, e as DefaultThrowOnError, f as DefaultMoreOptions } from '../common-B_9jiZXC.js';
|
|
2
|
-
import '@standard-schema/spec';
|
|
3
|
-
|
|
4
|
-
type CallApiExtraOptionsWithRequiredURL<TData = DefaultDataType, TErrorData = DefaultDataType, TResultMode extends ResultModeUnion = ResultModeUnion, TThrowOnError extends boolean = boolean, TResponseType extends ResponseTypeUnion = ResponseTypeUnion, TSchemas extends CallApiSchemas = CallApiSchemas, TPluginArray extends CallApiPlugin[] = DefaultPluginArray> = Omit<CallApiExtraOptions<TData, TErrorData, TResultMode, TThrowOnError, TResponseType, TSchemas, TPluginArray>, "initURL"> & {
|
|
5
|
-
initURL: InferSchemaResult<TSchemas["initURL"], InitURL>;
|
|
6
|
-
};
|
|
7
|
-
|
|
8
|
-
declare const createFetchClientWithOptions: <TBaseData = DefaultDataType, TBaseErrorData = DefaultDataType, TBaseResultMode extends ResultModeUnion = ResultModeUnion, TBaseThrowOnError extends boolean = DefaultThrowOnError, TBaseResponseType extends ResponseTypeUnion = ResponseTypeUnion, TBaseSchemas extends CallApiSchemas = DefaultMoreOptions, TBasePluginArray extends CallApiPlugin[] = DefaultPluginArray, TBaseComputedData = InferSchemaResult<TBaseSchemas["data"], TBaseData>, TBaseComputedErrorData = InferSchemaResult<TBaseSchemas["errorData"], TBaseErrorData>>(baseConfig?: BaseCallApiExtraOptions<TBaseData, TBaseErrorData, TBaseResultMode, TBaseThrowOnError, TBaseResponseType, TBaseSchemas, TBasePluginArray>) => {
|
|
9
|
-
<TData = TBaseComputedData, TErrorData = TBaseComputedErrorData, TResultMode extends ResultModeUnion = TBaseResultMode, TThrowOnError extends boolean = TBaseThrowOnError, TResponseType extends ResponseTypeUnion = TBaseResponseType, TSchemas extends CallApiSchemas = TBaseSchemas, TPluginArray extends CallApiPlugin[] = TBasePluginArray, TComputedData = InferSchemaResult<TSchemas["data"], TData>, TComputedErrorData = InferSchemaResult<TSchemas["errorData"], TErrorData>>(config: CallApiExtraOptionsWithRequiredURL<TData, TErrorData, TResultMode, TThrowOnError, TResponseType, TSchemas, TPluginArray>): Promise<GetCallApiResult<TComputedData, TComputedErrorData, TResultMode, TThrowOnError, TResponseType>>;
|
|
10
|
-
create: <TBaseData_1 = unknown, TBaseErrorData_1 = unknown, TBaseResultMode_1 extends ResultModeUnion = ResultModeUnion, TBaseThrowOnError_1 extends boolean = boolean, TBaseResponseType_1 extends ResponseTypeUnion = ResponseTypeUnion, TBaseSchemas_1 extends CallApiSchemas = {}, TBasePluginArray_1 extends CallApiPlugin[] = DefaultPluginArray, TBaseComputedData_1 = InferSchemaResult<TBaseSchemas_1["data"], TBaseData_1>, TBaseComputedErrorData_1 = InferSchemaResult<TBaseSchemas_1["errorData"], TBaseErrorData_1>>(baseConfig?: BaseCallApiExtraOptions<TBaseData_1, TBaseErrorData_1, TBaseResultMode_1, TBaseThrowOnError_1, TBaseResponseType_1, TBaseSchemas_1, TBasePluginArray_1>) => {
|
|
11
|
-
<TData = TBaseComputedData_1, TErrorData_1 = TBaseComputedErrorData_1, TResultMode_1 extends ResultModeUnion = TBaseResultMode_1, TThrowOnError_1 extends boolean = TBaseThrowOnError_1, TResponseType_1 extends ResponseTypeUnion = TBaseResponseType_1, TSchemas_1 extends CallApiSchemas = TBaseSchemas_1, TPluginArray_1 extends CallApiPlugin[] = TBasePluginArray_1, TComputedData_1 = InferSchemaResult<TSchemas_1["data"], TData>, TComputedErrorData_1 = InferSchemaResult<TSchemas_1["errorData"], TErrorData_1>>(initURL: InferSchemaResult<TSchemas_1["initURL"], string | URL>, config?: CallApiExtraOptions<TData, TErrorData_1, TResultMode_1, TThrowOnError_1, TResponseType_1, TSchemas_1, TPluginArray_1> | undefined): Promise<GetCallApiResult<TComputedData_1, TComputedErrorData_1, TResultMode_1, TThrowOnError_1, TResponseType_1>>;
|
|
12
|
-
create: /*elided*/ any;
|
|
13
|
-
};
|
|
14
|
-
};
|
|
15
|
-
declare const callApiWithOptions: {
|
|
16
|
-
<TData = unknown, TErrorData = unknown, TResultMode extends ResultModeUnion = ResultModeUnion, TThrowOnError extends boolean = boolean, TResponseType extends ResponseTypeUnion = ResponseTypeUnion, TSchemas extends CallApiSchemas = {}, TPluginArray extends CallApiPlugin[] = DefaultPluginArray, TComputedData = InferSchemaResult<TSchemas["data"], TData>, TComputedErrorData = InferSchemaResult<TSchemas["errorData"], TErrorData>>(config: CallApiExtraOptionsWithRequiredURL<TData, TErrorData, TResultMode, TThrowOnError, TResponseType, TSchemas, TPluginArray>): Promise<GetCallApiResult<TComputedData, TComputedErrorData, TResultMode, TThrowOnError, TResponseType>>;
|
|
17
|
-
create: <TBaseData = unknown, TBaseErrorData = unknown, TBaseResultMode extends ResultModeUnion = ResultModeUnion, TBaseThrowOnError extends boolean = boolean, TBaseResponseType extends ResponseTypeUnion = ResponseTypeUnion, TBaseSchemas extends CallApiSchemas = {}, TBasePluginArray extends CallApiPlugin[] = DefaultPluginArray, TBaseComputedData = InferSchemaResult<TBaseSchemas["data"], TBaseData>, TBaseComputedErrorData = InferSchemaResult<TBaseSchemas["errorData"], TBaseErrorData>>(baseConfig?: BaseCallApiExtraOptions<TBaseData, TBaseErrorData, TBaseResultMode, TBaseThrowOnError, TBaseResponseType, TBaseSchemas, TBasePluginArray>) => {
|
|
18
|
-
<TData = TBaseComputedData, TErrorData = TBaseComputedErrorData, TResultMode extends ResultModeUnion = TBaseResultMode, TThrowOnError extends boolean = TBaseThrowOnError, TResponseType extends ResponseTypeUnion = TBaseResponseType, TSchemas extends CallApiSchemas = TBaseSchemas, TPluginArray extends CallApiPlugin[] = TBasePluginArray, TComputedData = InferSchemaResult<TSchemas["data"], TData>, TComputedErrorData = InferSchemaResult<TSchemas["errorData"], TErrorData>>(initURL: InferSchemaResult<TSchemas["initURL"], string | URL>, config?: CallApiExtraOptions<TData, TErrorData, TResultMode, TThrowOnError, TResponseType, TSchemas, TPluginArray> | undefined): Promise<GetCallApiResult<TComputedData, TComputedErrorData, TResultMode, TThrowOnError, TResponseType>>;
|
|
19
|
-
create: /*elided*/ any;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
|
|
23
|
-
declare const defineOptions: <TData = unknown, TErrorData = unknown, TResultMode extends ResultModeUnion = ResultModeUnion>(config: CallApiExtraOptionsWithRequiredURL<TData, TErrorData, TResultMode>) => CallApiExtraOptionsWithRequiredURL<TData, TErrorData, TResultMode>;
|
|
24
|
-
|
|
25
|
-
export { type CallApiExtraOptionsWithRequiredURL, callApiWithOptions, createFetchClientWithOptions, defineOptions };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{hooksEnum as e,initializePlugins as r,mergeUrlWithParamsAndQuery as t,createTimeoutSignal as o,createCombinedSignal as s,createDedupeStrategy as a,createExtensibleSchemasAndValidators as n,resolveResponseData as i,handleValidation as l,resolveSuccessResult as u,createRetryStrategy as d,createFetchClient as c}from"../chunk-DQY5GNZB.js";import{splitBaseConfig as p,splitConfig as y,combineHooks as h,mergeAndResolveHeaders as f,isPlainObject as m,defaultRetryStatusCodes as w,defaultRetryMethods as g,executeHooks as R,HTTPError as E,resolveErrorResult as M,waitUntil as b,isFunction as q,isHTTPErrorInstance as D}from"../chunk-MOMG57MZ.js";var O=O=>{const[S,k]=p(O??{}),C=new Map,v=async c=>{const{initURL:p}=c,[O,x]=y(c),H={};for(const r of Object.keys(e)){const e=h(k[r],x[r]);H[r]=e}const L={baseURL:"",bodySerializer:JSON.stringify,dedupeStrategy:"cancel",defaultErrorMessage:"Failed to fetch data from server!",mergedHooksExecutionMode:"parallel",mergedHooksExecutionOrder:"mainHooksAfterPlugins",responseType:"json",resultMode:"all",retryAttempts:0,retryDelay:1e3,retryMaxDelay:1e4,retryMethods:g,retryStatusCodes:w,retryStrategy:"linear",...k,...x,...H},U=O.body??S.body,$={...S,...O,body:m(U)?L.bodySerializer(U):U,headers:f({auth:L.auth,baseHeaders:S.headers,body:U,headers:O.headers}),signal:O.signal??S.signal},{resolvedHooks:A,resolvedOptions:j,resolvedRequestOptions:T,url:F}=await r({initURL:p,options:L,request:$}),P=`${j.baseURL}${t(F,j.params,j.query)}`,z={...j,...A,fullURL:P,initURL:p.toString()},G=new AbortController,N=null!=z.timeout?o(z.timeout):null,Z=s(T.signal,N,G.signal),B={...T,signal:Z},{handleRequestCancelStrategy:I,handleRequestDeferStrategy:J,removeDedupeKeyFromCache:K}=await a({$RequestInfoCache:C,newFetchController:G,options:z,request:B});await I();try{await R(z.onRequest({options:z,request:B})),B.headers=f({auth:z.auth,baseHeaders:S.headers,body:U,headers:B.headers});const e=await J(),r="defer"===z.dedupeStrategy||z.cloneResponse,{schemas:t,validators:o}=n(z);if(!e.ok){const s=await i(r?e.clone():e,z.responseType,z.responseParser),a=await l(s,t?.errorData,o?.errorData);throw new E({defaultErrorMessage:z.defaultErrorMessage,errorData:a,response:e})}const s=await i(r?e.clone():e,z.responseType,z.responseParser),a={data:await l(s,t?.data,o?.data),options:z,request:B,response:z.cloneResponse?e.clone():e};return await R(z.onSuccess(a),z.onResponse({...a,error:null})),await u({data:a.data,response:a.response,resultMode:z.resultMode})}catch(e){const{apiDetails:r,getErrorResult:t}=M({cloneResponse:z.cloneResponse,defaultErrorMessage:z.defaultErrorMessage,error:e,resultMode:z.resultMode}),o={error:r.error,options:z,request:B,response:r.response},{getDelay:s,shouldAttemptRetry:a}=d(z,o);if(!Z.aborted&&await a()){await R(z.onRetry(o));const e=s();await b(e);const r={...c,"~retryCount":(z["~retryCount"]??0)+1};return await v(r)}const n=q(z.throwOnError)?z.throwOnError(o):z.throwOnError,i=()=>{if(n)throw r.error};if(D(e))return await R(z.onResponseError(o),z.onError(o),z.onResponse({...o,data:null})),i(),t();if(e instanceof DOMException&&"AbortError"===e.name){const{message:r,name:o}=e;return console.error(`${o}:`,r),i(),t()}if(e instanceof DOMException&&"TimeoutError"===e.name){const r=`Request timed out after ${z.timeout}ms`;return console.error(`${e.name}:`,r),i(),t({message:r})}return await R(z.onRequestError(o),z.onError(o)),i(),t()}finally{K()}};return v.create=c,v},S=O(),k=e=>e;export{S as callApiWithOptions,O as createFetchClientWithOptions,k as defineOptions};//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/options/createFetchClientWithOptions.ts","../../../src/options/defineOptions.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["import { createFetchClient } from \"@/createFetchClient\";\nimport { type RequestInfoCache, createDedupeStrategy } from \"@/dedupe\";\nimport { HTTPError, resolveErrorResult } from \"@/error\";\nimport { type CallApiPlugin, hooksEnum, initializePlugins } from \"@/plugins\";\nimport { type ResponseTypeUnion, resolveResponseData, resolveSuccessResult } from \"@/response\";\nimport { createRetryStrategy } from \"@/retry\";\nimport type {\n\tBaseCallApiExtraOptions,\n\tCallApiRequestOptions,\n\tCallApiRequestOptionsForHooks,\n\tCombinedCallApiExtraOptions,\n\tErrorContext,\n\tGetCallApiResult,\n\tInterceptors,\n\tResultModeUnion,\n\tSuccessContext,\n} from \"@/types/common\";\nimport type {\n\tDefaultDataType,\n\tDefaultMoreOptions,\n\tDefaultPluginArray,\n\tDefaultThrowOnError,\n} from \"@/types/default-types\";\nimport { mergeUrlWithParamsAndQuery } from \"@/url\";\nimport {\n\tcombineHooks,\n\texecuteHooks,\n\tmergeAndResolveHeaders,\n\tsplitBaseConfig,\n\tsplitConfig,\n\twaitUntil,\n} from \"@/utils/common\";\nimport { defaultRetryMethods, defaultRetryStatusCodes } from \"@/utils/constants\";\nimport { createCombinedSignal, createTimeoutSignal } from \"@/utils/polyfills\";\nimport { isFunction, isHTTPErrorInstance, isPlainObject } from \"@/utils/type-guards\";\nimport {\n\ttype CallApiSchemas,\n\ttype InferSchemaResult,\n\tcreateExtensibleSchemasAndValidators,\n\thandleValidation,\n} from \"@/validation\";\nimport type { CallApiExtraOptionsWithRequiredURL } from \"./types\";\n\nexport const createFetchClientWithOptions = <\n\tTBaseData = DefaultDataType,\n\tTBaseErrorData = DefaultDataType,\n\tTBaseResultMode extends ResultModeUnion = ResultModeUnion,\n\tTBaseThrowOnError extends boolean = DefaultThrowOnError,\n\tTBaseResponseType extends ResponseTypeUnion = ResponseTypeUnion,\n\tTBaseSchemas extends CallApiSchemas = DefaultMoreOptions,\n\tTBasePluginArray extends CallApiPlugin[] = DefaultPluginArray,\n\tTBaseComputedData = InferSchemaResult<TBaseSchemas[\"data\"], TBaseData>,\n\tTBaseComputedErrorData = InferSchemaResult<TBaseSchemas[\"errorData\"], TBaseErrorData>,\n>(\n\tbaseConfig?: BaseCallApiExtraOptions<\n\t\tTBaseData,\n\t\tTBaseErrorData,\n\t\tTBaseResultMode,\n\t\tTBaseThrowOnError,\n\t\tTBaseResponseType,\n\t\tTBaseSchemas,\n\t\tTBasePluginArray\n\t>\n) => {\n\tconst [baseFetchOptions, baseExtraOptions] = splitBaseConfig(baseConfig ?? {});\n\n\tconst $RequestInfoCache: RequestInfoCache = new Map();\n\n\tconst callApi = async <\n\t\tTData = TBaseComputedData,\n\t\tTErrorData = TBaseComputedErrorData,\n\t\tTResultMode extends ResultModeUnion = TBaseResultMode,\n\t\tTThrowOnError extends boolean = TBaseThrowOnError,\n\t\tTResponseType extends ResponseTypeUnion = TBaseResponseType,\n\t\tTSchemas extends CallApiSchemas = TBaseSchemas,\n\t\tTPluginArray extends CallApiPlugin[] = TBasePluginArray,\n\t\tTComputedData = InferSchemaResult<TSchemas[\"data\"], TData>,\n\t\tTComputedErrorData = InferSchemaResult<TSchemas[\"errorData\"], TErrorData>,\n\t>(\n\t\tconfig: CallApiExtraOptionsWithRequiredURL<\n\t\t\tTData,\n\t\t\tTErrorData,\n\t\t\tTResultMode,\n\t\t\tTThrowOnError,\n\t\t\tTResponseType,\n\t\t\tTSchemas,\n\t\t\tTPluginArray\n\t\t>\n\t): Promise<\n\t\tGetCallApiResult<TComputedData, TComputedErrorData, TResultMode, TThrowOnError, TResponseType>\n\t> => {\n\t\tconst { initURL } = config;\n\n\t\tconst [fetchOptions, extraOptions] = splitConfig(config);\n\n\t\tconst initCombinedHooks = {} as Required<Interceptors>;\n\n\t\tfor (const key of Object.keys(hooksEnum)) {\n\t\t\tconst combinedHook = combineHooks(\n\t\t\t\tbaseExtraOptions[key as keyof Interceptors],\n\t\t\t\textraOptions[key as keyof Interceptors]\n\t\t\t);\n\n\t\t\tinitCombinedHooks[key as keyof Interceptors] = combinedHook as never;\n\t\t}\n\n\t\t// == Default Extra Options\n\t\tconst defaultExtraOptions = {\n\t\t\tbaseURL: \"\",\n\t\t\tbodySerializer: JSON.stringify,\n\t\t\tdedupeStrategy: \"cancel\",\n\t\t\tdefaultErrorMessage: \"Failed to fetch data from server!\",\n\t\t\tmergedHooksExecutionMode: \"parallel\",\n\t\t\tmergedHooksExecutionOrder: \"mainHooksAfterPlugins\",\n\t\t\tresponseType: \"json\",\n\t\t\tresultMode: \"all\",\n\t\t\tretryAttempts: 0,\n\t\t\tretryDelay: 1000,\n\t\t\tretryMaxDelay: 10000,\n\t\t\tretryMethods: defaultRetryMethods,\n\t\t\tretryStatusCodes: defaultRetryStatusCodes,\n\t\t\tretryStrategy: \"linear\",\n\n\t\t\t...baseExtraOptions,\n\t\t\t...extraOptions,\n\n\t\t\t...initCombinedHooks,\n\t\t} satisfies CombinedCallApiExtraOptions;\n\n\t\tconst body = fetchOptions.body ?? baseFetchOptions.body;\n\n\t\t// == Default Request Options\n\t\tconst defaultRequestOptions = {\n\t\t\t...baseFetchOptions,\n\t\t\t...fetchOptions,\n\n\t\t\tbody: isPlainObject(body) ? defaultExtraOptions.bodySerializer(body) : body,\n\n\t\t\theaders: mergeAndResolveHeaders({\n\t\t\t\tauth: defaultExtraOptions.auth,\n\t\t\t\tbaseHeaders: baseFetchOptions.headers,\n\t\t\t\tbody,\n\t\t\t\theaders: fetchOptions.headers,\n\t\t\t}),\n\n\t\t\tsignal: fetchOptions.signal ?? baseFetchOptions.signal,\n\t\t} satisfies CallApiRequestOptions;\n\n\t\tconst { resolvedHooks, resolvedOptions, resolvedRequestOptions, url } = await initializePlugins({\n\t\t\tinitURL,\n\t\t\toptions: defaultExtraOptions,\n\t\t\trequest: defaultRequestOptions,\n\t\t});\n\n\t\tconst fullURL = `${resolvedOptions.baseURL}${mergeUrlWithParamsAndQuery(url, resolvedOptions.params, resolvedOptions.query)}`;\n\n\t\tconst options = {\n\t\t\t...resolvedOptions,\n\t\t\t...resolvedHooks,\n\t\t\tfullURL,\n\t\t\tinitURL: initURL.toString(),\n\t\t} satisfies CombinedCallApiExtraOptions as typeof defaultExtraOptions & typeof resolvedHooks;\n\n\t\tconst newFetchController = new AbortController();\n\n\t\tconst timeoutSignal = options.timeout != null ? createTimeoutSignal(options.timeout) : null;\n\n\t\tconst combinedSignal = createCombinedSignal(\n\t\t\tresolvedRequestOptions.signal,\n\t\t\ttimeoutSignal,\n\t\t\tnewFetchController.signal\n\t\t);\n\n\t\tconst request = {\n\t\t\t...resolvedRequestOptions,\n\t\t\tsignal: combinedSignal,\n\t\t} satisfies CallApiRequestOptionsForHooks;\n\n\t\tconst { handleRequestCancelStrategy, handleRequestDeferStrategy, removeDedupeKeyFromCache } =\n\t\t\tawait createDedupeStrategy({ $RequestInfoCache, newFetchController, options, request });\n\n\t\tawait handleRequestCancelStrategy();\n\n\t\ttry {\n\t\t\tawait executeHooks(options.onRequest({ options, request }));\n\n\t\t\t// == Apply determined headers again after onRequest incase they were modified\n\t\t\trequest.headers = mergeAndResolveHeaders({\n\t\t\t\tauth: options.auth,\n\t\t\t\tbaseHeaders: baseFetchOptions.headers,\n\t\t\t\tbody,\n\t\t\t\theaders: request.headers,\n\t\t\t});\n\n\t\t\tconst response = await handleRequestDeferStrategy();\n\n\t\t\t// == Also clone response when dedupeStrategy is set to \"defer\", to avoid error thrown from reading response.(whatever) more than once\n\t\t\tconst shouldCloneResponse = options.dedupeStrategy === \"defer\" || options.cloneResponse;\n\n\t\t\tconst { schemas, validators } = createExtensibleSchemasAndValidators(options);\n\n\t\t\tif (!response.ok) {\n\t\t\t\tconst errorData = await resolveResponseData<TErrorData>(\n\t\t\t\t\tshouldCloneResponse ? response.clone() : response,\n\t\t\t\t\toptions.responseType,\n\t\t\t\t\toptions.responseParser\n\t\t\t\t);\n\n\t\t\t\tconst validErrorData = await handleValidation(\n\t\t\t\t\terrorData,\n\t\t\t\t\tschemas?.errorData,\n\t\t\t\t\tvalidators?.errorData\n\t\t\t\t);\n\n\t\t\t\t// == Push all error handling responsibilities to the catch block if not retrying\n\t\t\t\tthrow new HTTPError({\n\t\t\t\t\tdefaultErrorMessage: options.defaultErrorMessage,\n\t\t\t\t\terrorData: validErrorData,\n\t\t\t\t\tresponse,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst successData = await resolveResponseData<TData>(\n\t\t\t\tshouldCloneResponse ? response.clone() : response,\n\t\t\t\toptions.responseType,\n\t\t\t\toptions.responseParser\n\t\t\t);\n\n\t\t\tconst validSuccessData = await handleValidation(successData, schemas?.data, validators?.data);\n\n\t\t\tconst successContext = {\n\t\t\t\tdata: validSuccessData,\n\t\t\t\toptions,\n\t\t\t\trequest,\n\t\t\t\tresponse: options.cloneResponse ? response.clone() : response,\n\t\t\t} satisfies SuccessContext<unknown>;\n\n\t\t\tawait executeHooks(\n\t\t\t\toptions.onSuccess(successContext),\n\n\t\t\t\toptions.onResponse({ ...successContext, error: null })\n\t\t\t);\n\n\t\t\treturn await resolveSuccessResult({\n\t\t\t\tdata: successContext.data,\n\t\t\t\tresponse: successContext.response,\n\t\t\t\tresultMode: options.resultMode,\n\t\t\t});\n\n\t\t\t// == Exhaustive Error handling\n\t\t} catch (error) {\n\t\t\tconst { apiDetails, getErrorResult } = resolveErrorResult({\n\t\t\t\tcloneResponse: options.cloneResponse,\n\t\t\t\tdefaultErrorMessage: options.defaultErrorMessage,\n\t\t\t\terror,\n\t\t\t\tresultMode: options.resultMode,\n\t\t\t});\n\n\t\t\tconst errorContext = {\n\t\t\t\terror: apiDetails.error as never,\n\t\t\t\toptions,\n\t\t\t\trequest,\n\t\t\t\tresponse: apiDetails.response as never,\n\t\t\t} satisfies ErrorContext<unknown>;\n\n\t\t\tconst { getDelay, shouldAttemptRetry } = createRetryStrategy(options, errorContext);\n\n\t\t\tconst shouldRetry = !combinedSignal.aborted && (await shouldAttemptRetry());\n\n\t\t\tif (shouldRetry) {\n\t\t\t\tawait executeHooks(options.onRetry(errorContext));\n\n\t\t\t\tconst delay = getDelay();\n\n\t\t\t\tawait waitUntil(delay);\n\n\t\t\t\tconst updatedOptions = {\n\t\t\t\t\t...config,\n\t\t\t\t\t\"~retryCount\": (options[\"~retryCount\"] ?? 0) + 1,\n\t\t\t\t} satisfies typeof config as typeof config;\n\n\t\t\t\treturn await callApi(updatedOptions);\n\t\t\t}\n\n\t\t\tconst shouldThrowOnError = isFunction(options.throwOnError)\n\t\t\t\t? options.throwOnError(errorContext)\n\t\t\t\t: options.throwOnError;\n\n\t\t\t// eslint-disable-next-line unicorn/consistent-function-scoping -- False alarm: this function is depends on this scope\n\t\t\tconst handleThrowOnError = () => {\n\t\t\t\tif (!shouldThrowOnError) return;\n\n\t\t\t\t// eslint-disable-next-line ts-eslint/only-throw-error -- It's fine to throw this\n\t\t\t\tthrow apiDetails.error;\n\t\t\t};\n\n\t\t\tif (isHTTPErrorInstance<TErrorData>(error)) {\n\t\t\t\tawait executeHooks(\n\t\t\t\t\toptions.onResponseError(errorContext),\n\n\t\t\t\t\toptions.onError(errorContext),\n\n\t\t\t\t\toptions.onResponse({ ...errorContext, data: null })\n\t\t\t\t);\n\n\t\t\t\thandleThrowOnError();\n\n\t\t\t\treturn getErrorResult();\n\t\t\t}\n\n\t\t\tif (error instanceof DOMException && error.name === \"AbortError\") {\n\t\t\t\tconst { message, name } = error;\n\n\t\t\t\tconsole.error(`${name}:`, message);\n\n\t\t\t\thandleThrowOnError();\n\n\t\t\t\treturn getErrorResult();\n\t\t\t}\n\n\t\t\tif (error instanceof DOMException && error.name === \"TimeoutError\") {\n\t\t\t\tconst message = `Request timed out after ${options.timeout}ms`;\n\n\t\t\t\tconsole.error(`${error.name}:`, message);\n\n\t\t\t\thandleThrowOnError();\n\n\t\t\t\treturn getErrorResult({ message });\n\t\t\t}\n\n\t\t\tawait executeHooks(\n\t\t\t\t// == At this point only the request errors exist, so the request error interceptor is called\n\t\t\t\toptions.onRequestError(errorContext as never),\n\n\t\t\t\t// == Also call the onError interceptor\n\t\t\t\toptions.onError(errorContext)\n\t\t\t);\n\n\t\t\thandleThrowOnError();\n\n\t\t\treturn getErrorResult();\n\n\t\t\t// == Removing the now unneeded AbortController from store\n\t\t} finally {\n\t\t\tremoveDedupeKeyFromCache();\n\t\t}\n\t};\n\n\tcallApi.create = createFetchClient;\n\n\treturn callApi;\n};\nexport const callApiWithOptions = createFetchClientWithOptions();\n","import type { ResultModeUnion } from \"@/types/common\";\nimport type { CallApiExtraOptionsWithRequiredURL } from \"./types\";\n\nconst defineOptions = <\n\tTData = unknown,\n\tTErrorData = unknown,\n\tTResultMode extends ResultModeUnion = ResultModeUnion,\n>(\n\tconfig: CallApiExtraOptionsWithRequiredURL<TData, TErrorData, TResultMode>\n) => {\n\treturn config;\n};\n\nexport { defineOptions };\n"]}
|