@zayne-labs/callapi 1.3.3 → 1.3.4
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/cjs/{index-BpNetCiS.d.cts → index-DnZtIr3r.d.cts} +11 -8
- package/dist/cjs/index.cjs.map +1 -1
- package/dist/cjs/index.d.cts +2 -2
- package/dist/cjs/options/index.cjs.map +1 -1
- package/dist/cjs/options/index.d.cts +1 -1
- package/dist/cjs/utils/index.cjs.map +1 -1
- package/dist/cjs/utils/index.d.cts +1 -1
- package/dist/esm/{chunk-SMQCV7OH.js → chunk-62WNJ6T4.js} +1 -1
- package/dist/esm/chunk-62WNJ6T4.js.map +1 -0
- package/dist/esm/{chunk-QDTFT5II.js → chunk-OCGFLXP6.js} +1 -1
- package/dist/esm/chunk-OCGFLXP6.js.map +1 -0
- package/dist/esm/{index-BpNetCiS.d.ts → index-DnZtIr3r.d.ts} +11 -8
- package/dist/esm/index.d.ts +2 -2
- package/dist/esm/index.js +1 -1
- package/dist/esm/options/index.d.ts +1 -1
- package/dist/esm/options/index.js +1 -1
- package/dist/esm/utils/index.d.ts +1 -1
- package/dist/esm/utils/index.js +1 -1
- package/package.json +1 -1
- package/dist/esm/chunk-QDTFT5II.js.map +0 -1
- package/dist/esm/chunk-SMQCV7OH.js.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/plugins.ts","../../src/dedupe.ts","../../src/retry.ts","../../src/url.ts","../../src/utils/polyfills.ts","../../src/createFetchClient.ts"],"names":["callApi"],"mappings":"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","file":"chunk-SMQCV7OH.js","sourcesContent":["import type {\n\tCallApiRequestOptionsForHooks,\n\tCombinedCallApiExtraOptions,\n\tDefaultDataType,\n\tDefaultMoreOptions,\n\tExtraOptions,\n\tInterceptors,\n\tInterceptorsOrInterceptorArray,\n\tResultModeUnion,\n} from \"./types\";\nimport { isFunction, isPlainObject, isString } from \"./utils/type-guards\";\nimport type { AnyFunction, AnyObject, Awaitable } from \"./utils/type-helpers\";\n\nexport type PluginInitContext<TMoreOptions extends AnyObject = DefaultMoreOptions> = {\n\tinitURL: string;\n\toptions: CombinedCallApiExtraOptions<DefaultDataType, DefaultDataType, ResultModeUnion, TMoreOptions>;\n\trequest: CallApiRequestOptionsForHooks;\n};\n\ntype CreateExtraOptions<TMoreOptions> = (...params: never[]) => TMoreOptions;\n\nexport type CallApiPlugin<TMoreOptions extends AnyObject = DefaultMoreOptions> = {\n\t/**\n\t * @description Defines additional options that can be passed to callApi\n\t */\n\tcreateExtraOptions?: CreateExtraOptions<TMoreOptions>;\n\n\t/**\n\t * @description A description for the plugin\n\t */\n\tdescription?: string;\n\n\t/**\n\t * Hooks / Interceptors for the plugin\n\t */\n\thooks?: InterceptorsOrInterceptorArray;\n\n\t/**\n\t * @description A unique id for the plugin\n\t */\n\tid: string;\n\n\t/**\n\t * @description A function that will be called when the plugin is\n\t * initialized. This will be called before the any\n\t * of the other internal functions.\n\t */\n\tinit?: (context: PluginInitContext) => Awaitable<Partial<PluginInitContext>> | Awaitable<void>;\n\n\t/**\n\t * @description A name for the plugin\n\t */\n\tname: string;\n\n\t/**\n\t * @description A version for the plugin\n\t */\n\tversion?: string;\n};\n\nexport const definePlugin = <\n\tTMoreOptions extends AnyObject = DefaultMoreOptions,\n\tTPlugin extends\n\t\t| AnyFunction<CallApiPlugin<TMoreOptions>>\n\t\t| CallApiPlugin<TMoreOptions> = CallApiPlugin<TMoreOptions>,\n>(\n\tplugin: TPlugin\n) => {\n\treturn plugin;\n};\n\nconst createMergedHook = (\n\thooks: Array<AnyFunction<Awaitable<unknown>> | undefined>,\n\tmergedHooksExecutionMode: CombinedCallApiExtraOptions[\"mergedHooksExecutionMode\"]\n) => {\n\treturn async (ctx: Record<string, unknown>) => {\n\t\tif (mergedHooksExecutionMode === \"sequential\") {\n\t\t\tfor (const hook of hooks) {\n\t\t\t\t// eslint-disable-next-line no-await-in-loop -- This is necessary in this case\n\t\t\t\tawait hook?.(ctx);\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tif (mergedHooksExecutionMode === \"parallel\") {\n\t\t\tconst hookArray = [...hooks];\n\n\t\t\tawait Promise.all(hookArray.map((uniqueHook) => uniqueHook?.(ctx)));\n\t\t}\n\t};\n};\n\n// prettier-ignore\ntype HookRegistries = {\n\t[Key in keyof Interceptors]: Set<Interceptors[Key]>;\n};\n\nexport const hooksEnum = {\n\tonError: new Set(),\n\tonRequest: new Set(),\n\tonRequestError: new Set(),\n\tonResponse: new Set(),\n\tonResponseError: new Set(),\n\tonRetry: new Set(),\n\tonSuccess: new Set(),\n} satisfies HookRegistries;\n\nexport const initializePlugins = async (context: PluginInitContext) => {\n\tconst { initURL, options, request } = context;\n\n\tconst hookRegistries = structuredClone(hooksEnum);\n\n\tconst addMainHooks = () => {\n\t\tfor (const key of Object.keys(hooksEnum)) {\n\t\t\tconst mainHook = options[key as keyof Interceptors] as never;\n\n\t\t\thookRegistries[key as keyof Interceptors].add(mainHook);\n\t\t}\n\t};\n\n\tconst addPluginHooks = (pluginHooks: InterceptorsOrInterceptorArray) => {\n\t\tfor (const key of Object.keys(hooksEnum)) {\n\t\t\tconst pluginHook = pluginHooks[key as keyof Interceptors] as never;\n\n\t\t\thookRegistries[key as keyof Interceptors].add(pluginHook);\n\t\t}\n\t};\n\n\tif (options.mergedHooksExecutionOrder === \"mainHooksBeforePlugins\") {\n\t\taddMainHooks();\n\t}\n\n\tconst getPluginArray = (plugins: ExtraOptions[\"plugins\"]) => {\n\t\tif (!plugins) {\n\t\t\treturn [];\n\t\t}\n\n\t\treturn isFunction(plugins) ? plugins({ initURL, options, request }) : plugins;\n\t};\n\n\tconst resolvedPlugins = [\n\t\t...getPluginArray(options.plugins),\n\t\t...getPluginArray(options.extend?.plugins),\n\t];\n\n\tlet resolvedUrl = initURL;\n\tlet resolvedOptions = options;\n\tlet resolvedRequestOptions = request;\n\n\tconst executePluginInit = async (pluginInit: CallApiPlugin[\"init\"]) => {\n\t\tif (!pluginInit) return;\n\n\t\tconst initResult = await pluginInit({ initURL, options, request });\n\n\t\tif (!isPlainObject(initResult)) return;\n\n\t\tif (isString(initResult.initURL)) {\n\t\t\tresolvedUrl = initResult.initURL;\n\t\t}\n\n\t\tif (isPlainObject(initResult.request)) {\n\t\t\tresolvedRequestOptions = initResult.request;\n\t\t}\n\n\t\tif (isPlainObject(initResult.options)) {\n\t\t\tresolvedOptions = initResult.options;\n\t\t}\n\t};\n\n\tfor (const plugin of resolvedPlugins) {\n\t\t// eslint-disable-next-line no-await-in-loop -- Await is necessary in this case.\n\t\tawait executePluginInit(plugin.init);\n\n\t\tif (!plugin.hooks) continue;\n\n\t\taddPluginHooks(plugin.hooks);\n\t}\n\n\tif (\n\t\t!options.mergedHooksExecutionOrder ||\n\t\toptions.mergedHooksExecutionOrder === \"mainHooksAfterPlugins\"\n\t) {\n\t\taddMainHooks();\n\t}\n\n\tconst resolvedHooks = {} as Required<Interceptors>;\n\n\tfor (const [key, hookRegistry] of Object.entries(hookRegistries)) {\n\t\tconst flattenedHookArray = [...hookRegistry].flat();\n\n\t\tconst mergedHook = createMergedHook(flattenedHookArray, options.mergedHooksExecutionMode);\n\n\t\tresolvedHooks[key as keyof Interceptors] = mergedHook;\n\t}\n\n\treturn {\n\t\tresolvedHooks,\n\t\tresolvedOptions,\n\t\tresolvedRequestOptions,\n\t\turl: resolvedUrl,\n\t};\n};\n","import type { CallApiExtraOptions, CallApiRequestOptions } from \"./types\";\nimport { getFetchImpl } from \"./utils/common\";\n\nexport const generateDedupeKey = (\n\tfullURL: string,\n\trequest: CallApiRequestOptions,\n\toptions: CallApiExtraOptions\n) => {\n\tconst shouldHaveDedupeKey = options.dedupeStrategy === \"cancel\" || options.dedupeStrategy === \"defer\";\n\n\tif (!shouldHaveDedupeKey) {\n\t\treturn null;\n\t}\n\n\treturn `${options.fullURL}-${JSON.stringify({ options, request })}`;\n};\n\ntype RequestInfo = { controller: AbortController; responsePromise: Promise<Response> };\n\nexport type RequestInfoCache = Map<string | null, RequestInfo>;\n\nexport const handleRequestCancelDedupe = (\n\tfullURL: string,\n\toptions: CallApiExtraOptions,\n\tprevRequestInfo: RequestInfo | undefined\n) => {\n\tconst shouldCancelRequest = prevRequestInfo && options.dedupeStrategy === \"cancel\";\n\n\tif (shouldCancelRequest) {\n\t\tconst message = options.dedupeKey\n\t\t\t? `Duplicate request detected - Aborting previous request with key '${options.dedupeKey}' as a new request was initiated`\n\t\t\t: `Duplicate request detected - Aborting previous request to '${options.fullURL}' as a new request with identical options was initiated`;\n\n\t\tconst reason = new DOMException(message, \"AbortError\");\n\n\t\tprevRequestInfo.controller.abort(reason);\n\t}\n};\n\nexport const handleRequestDeferDedupe = (\n\tfullURL: string,\n\toptions: CallApiExtraOptions,\n\trequest: CallApiRequestOptions,\n\tprevRequestInfo: RequestInfo | undefined\n) => {\n\tconst fetchApi = getFetchImpl(options.customFetchImpl);\n\n\tconst shouldUsePromiseFromCache = prevRequestInfo && options.dedupeStrategy === \"defer\";\n\n\tconst responsePromise = shouldUsePromiseFromCache\n\t\t? prevRequestInfo.responsePromise\n\t\t: fetchApi(fullURL, request as RequestInit);\n\n\treturn responsePromise;\n};\n","/* eslint-disable ts-eslint/consistent-type-definitions -- I need to use interfaces for the sake of user overrides */\n\nimport type { ErrorContext } from \"./types\";\nimport type { AnyNumber, AnyString } from \"./utils/type-helpers\";\n\ntype RetryCondition<TErrorData> = (context: ErrorContext<TErrorData>) => boolean | Promise<boolean>;\n\nexport interface RetryOptions<TErrorData> {\n\t/**\n\t * @description Number of allowed retry attempts on HTTP errors\n\t * @default 0\n\t */\n\tretryAttempts?: number;\n\n\t/**\n\t * @description Callback whose return value determines if a request should be retried or not\n\t */\n\tretryCondition?: RetryCondition<TErrorData>;\n\n\t/**\n\t * @description Keeps track of the number of times the request has already been retried\n\t */\n\tretryCount?: number;\n\n\t/**\n\t * @description Delay between retries in milliseconds\n\t * @default 1000\n\t */\n\tretryDelay?: number;\n\n\t/**\n\t * @description Maximum delay in milliseconds. Only applies to exponential strategy\n\t * @default 10000\n\t */\n\tretryMaxDelay?: number;\n\n\t/**\n\t * HTTP methods that are allowed to retry\n\t * @default [\"GET\", \"POST\"]\n\t */\n\tretryMethods?: Array<\"GET\" | \"POST\" | AnyString>;\n\n\t/**\n\t * @description HTTP status codes that trigger a retry\n\t * @default [409, 425, 429, 500, 502, 503, 504]\n\t */\n\tretryStatusCodes?: Array<409 | 425 | 429 | 500 | 502 | 503 | 504 | AnyNumber>;\n\n\t/**\n\t * @description Strategy to use when retrying\n\t * @default \"linear\"\n\t */\n\tretryStrategy?: \"exponential\" | \"linear\";\n}\n\nconst getLinearDelay = <TErrorData>(options: RetryOptions<TErrorData>) => options.retryDelay ?? 1000;\n\nconst getExponentialDelay = <TErrorData>(\n\tcurrentAttemptCount: number,\n\toptions: RetryOptions<TErrorData>\n) => {\n\tconst maxDelay = options.retryMaxDelay ?? 10000;\n\n\tconst exponentialDelay = (options.retryDelay ?? 1000) * 2 ** currentAttemptCount;\n\n\treturn Math.min(exponentialDelay, maxDelay);\n};\n\nexport const createRetryStrategy = <TErrorData>(\n\toptions: RetryOptions<TErrorData>,\n\tctx: ErrorContext<TErrorData>\n) => {\n\tconst currentRetryCount = options.retryCount ?? 0;\n\n\treturn {\n\t\tgetDelay: () => {\n\t\t\tif (options.retryStrategy === \"exponential\") {\n\t\t\t\treturn getExponentialDelay(currentRetryCount, options);\n\t\t\t}\n\n\t\t\treturn getLinearDelay(options);\n\t\t},\n\n\t\tshouldAttemptRetry: async () => {\n\t\t\tconst customRetryCondition = (await options.retryCondition?.(ctx)) ?? true;\n\n\t\t\tconst maxRetryAttempts = options.retryAttempts ?? 0;\n\n\t\t\tconst baseRetryCondition = maxRetryAttempts > currentRetryCount && customRetryCondition;\n\n\t\t\tif (ctx.error.name !== \"HTTPError\") {\n\t\t\t\treturn baseRetryCondition;\n\t\t\t}\n\n\t\t\tconst includesMethod =\n\t\t\t\t// eslint-disable-next-line no-implicit-coercion -- Boolean doesn't narrow\n\t\t\t\t!!ctx.request.method && options.retryMethods?.includes(ctx.request.method);\n\n\t\t\tconst includesCodes =\n\t\t\t\t// eslint-disable-next-line no-implicit-coercion -- Boolean doesn't narrow\n\t\t\t\t!!ctx.response?.status && options.retryStatusCodes?.includes(ctx.response.status);\n\n\t\t\treturn includesCodes && includesMethod && baseRetryCondition;\n\t\t},\n\t};\n};\n","import type { CallApiConfig, CallApiExtraOptions } from \"./types\";\nimport { toQueryString } from \"./utils\";\nimport { isArray } from \"./utils/type-guards\";\n\nconst slash = \"/\";\nconst column = \":\";\nconst mergeUrlWithParams = (url: string, params: CallApiExtraOptions[\"params\"]) => {\n\tif (!params) {\n\t\treturn url;\n\t}\n\n\tlet newUrl = url;\n\n\tif (isArray(params)) {\n\t\tconst matchedParamArray = newUrl.split(slash).filter((param) => param.startsWith(column));\n\n\t\tfor (const [index, matchedParam] of matchedParamArray.entries()) {\n\t\t\tconst realParam = params[index] as string;\n\t\t\tnewUrl = newUrl.replace(matchedParam, realParam);\n\t\t}\n\n\t\treturn newUrl;\n\t}\n\n\tfor (const [key, value] of Object.entries(params)) {\n\t\tnewUrl = newUrl.replace(`${column}${key}`, String(value));\n\t}\n\n\treturn newUrl;\n};\n\nconst questionMark = \"?\";\nconst ampersand = \"&\";\nconst mergeUrlWithQuery = (url: string, query: CallApiConfig[\"query\"]): string => {\n\tif (!query) {\n\t\treturn url;\n\t}\n\n\tconst queryString = toQueryString(query);\n\n\tif (queryString?.length === 0) {\n\t\treturn url;\n\t}\n\n\tif (url.endsWith(questionMark)) {\n\t\treturn `${url}${queryString}`;\n\t}\n\n\tif (url.includes(questionMark)) {\n\t\treturn `${url}${ampersand}${queryString}`;\n\t}\n\n\treturn `${url}${questionMark}${queryString}`;\n};\n\nexport const mergeUrlWithParamsAndQuery = (\n\turl: string,\n\tparams: CallApiExtraOptions[\"params\"],\n\tquery: CallApiExtraOptions[\"query\"]\n) => {\n\tconst urlWithMergedParams = mergeUrlWithParams(url, params);\n\n\treturn mergeUrlWithQuery(urlWithMergedParams, query);\n};\n","// prettier-ignore\nexport const createCombinedSignal = (...signals: Array<AbortSignal | null | undefined>) => AbortSignal.any(signals.filter(Boolean));\n\nexport const createTimeoutSignal = (milliseconds: number) => AbortSignal.timeout(milliseconds);\n","import {\n\ttype RequestInfoCache,\n\tgenerateDedupeKey,\n\thandleRequestCancelDedupe,\n\thandleRequestDeferDedupe,\n} from \"./dedupe\";\nimport { hooksEnum, initializePlugins } from \"./plugins\";\nimport { createRetryStrategy } from \"./retry\";\nimport type {\n\tBaseCallApiConfig,\n\tCallApiConfig,\n\tCallApiParameters,\n\tCallApiRequestOptions,\n\tCallApiRequestOptionsForHooks,\n\tCombinedCallApiExtraOptions,\n\tDefaultDataType,\n\tDefaultMoreOptions,\n\tGetCallApiResult,\n\tInterceptors,\n\tPossibleHTTPError,\n\tPossibleJavaScriptError,\n\tResultModeUnion,\n} from \"./types\";\nimport { mergeUrlWithParamsAndQuery } from \"./url\";\nimport {\n\tHTTPError,\n\tcombineHooks,\n\texecuteHooks,\n\tgetResponseData,\n\tisHTTPErrorInstance,\n\tmergeAndResolveHeaders,\n\tresolveErrorResult,\n\tresolveSuccessResult,\n\tsplitBaseConfig,\n\tsplitConfig,\n\twaitUntil,\n} from \"./utils/common\";\nimport { defaultRetryMethods, defaultRetryStatusCodes } from \"./utils/constants\";\nimport { createCombinedSignal, createTimeoutSignal } from \"./utils/polyfills\";\nimport { isFunction, isPlainObject } from \"./utils/type-guards\";\nimport type { AnyObject } from \"./utils/type-helpers\";\n\nexport const createFetchClient = <\n\tTBaseData = DefaultDataType,\n\tTBaseErrorData = DefaultDataType,\n\tTBaseResultMode extends ResultModeUnion = ResultModeUnion,\n\tTBaseMoreOptions extends AnyObject = DefaultMoreOptions,\n>(\n\tbaseConfig: BaseCallApiConfig<\n\t\tTBaseData,\n\t\tTBaseErrorData,\n\t\tTBaseResultMode,\n\t\tTBaseMoreOptions\n\t> = {} as never\n) => {\n\tconst [baseFetchConfig, baseExtraOptions] = splitBaseConfig(baseConfig);\n\n\tconst {\n\t\tbody: baseBody,\n\t\theaders: baseHeaders,\n\t\tsignal: baseSignal,\n\t\t...restOfBaseFetchConfig\n\t} = baseFetchConfig;\n\n\tconst $RequestInfoCache = new Map() satisfies RequestInfoCache;\n\n\tconst callApi = async <\n\t\tTData = TBaseData,\n\t\tTErrorData = TBaseErrorData,\n\t\tTResultMode extends ResultModeUnion = TBaseResultMode,\n\t\tTMoreOptions extends AnyObject = TBaseMoreOptions,\n\t>(\n\t\t...parameters: CallApiParameters<TData, TErrorData, TResultMode, TMoreOptions>\n\t): Promise<GetCallApiResult<TData, TErrorData, TResultMode>> => {\n\t\tconst [initURL, config = {}] = parameters;\n\n\t\tconst [fetchConfig, extraOptions] = splitConfig(config);\n\n\t\tconst { body = baseBody, headers, signal = baseSignal, ...restOfFetchConfig } = fetchConfig;\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 { resolvedHooks, resolvedOptions, resolvedRequestOptions, url } = await initializePlugins({\n\t\t\tinitURL,\n\t\t\toptions: defaultExtraOptions,\n\t\t\trequest: { ...restOfBaseFetchConfig, ...restOfFetchConfig },\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,\n\t\t} satisfies CombinedCallApiExtraOptions as typeof defaultExtraOptions & typeof resolvedHooks;\n\n\t\t// == Default Request Options\n\t\tconst defaultRequestOptions = {\n\t\t\tbody: isPlainObject(body) ? options.bodySerializer(body) : body,\n\t\t\tmethod: \"GET\",\n\n\t\t\t...resolvedRequestOptions,\n\t\t} satisfies CallApiRequestOptions;\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(newFetchController.signal, timeoutSignal, signal);\n\n\t\tconst request = {\n\t\t\tsignal: combinedSignal,\n\t\t\t...defaultRequestOptions,\n\t\t} satisfies CallApiRequestOptionsForHooks;\n\n\t\tconst dedupeKey = options.dedupeKey ?? generateDedupeKey(fullURL, request, options);\n\n\t\t// == Add a small delay to ensure proper request deduplication when multiple requests with the same key start simultaneously.\n\t\t// == This gives time for the cache to be updated with the previous request info before the next request checks it.\n\t\tdedupeKey !== null && (await waitUntil(0.1));\n\n\t\t// == This ensures cache operations only occur when key is available\n\t\tconst $RequestInfoCacheOrNull = dedupeKey !== null ? $RequestInfoCache : null;\n\n\t\tconst prevRequestInfo = $RequestInfoCacheOrNull?.get(dedupeKey);\n\n\t\thandleRequestCancelDedupe(fullURL, options, prevRequestInfo);\n\n\t\ttry {\n\t\t\tawait executeHooks(options.onRequest({ options, request }));\n\n\t\t\t// == Apply determined headers after onRequest incase they were modified\n\t\t\trequest.headers = mergeAndResolveHeaders({\n\t\t\t\tauth: options.auth,\n\t\t\t\tbaseHeaders: baseHeaders ?? headers,\n\t\t\t\tbody,\n\t\t\t\theaders: request.headers,\n\t\t\t});\n\n\t\t\tconst responsePromise = handleRequestDeferDedupe(fullURL, options, request, prevRequestInfo);\n\n\t\t\t$RequestInfoCacheOrNull?.set(dedupeKey, { controller: newFetchController, responsePromise });\n\n\t\t\tconst response = await responsePromise;\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\tif (!response.ok) {\n\t\t\t\tconst errorData = await getResponseData<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\toptions.responseErrorValidator\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,\n\t\t\t\t\tresponse,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tconst successData = await getResponseData<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\toptions.responseValidator\n\t\t\t);\n\n\t\t\tawait executeHooks(\n\t\t\t\toptions.onSuccess({\n\t\t\t\t\tdata: successData as never,\n\t\t\t\t\toptions,\n\t\t\t\t\trequest,\n\t\t\t\t\tresponse: options.cloneResponse ? response.clone() : response,\n\t\t\t\t}),\n\n\t\t\t\toptions.onResponse({\n\t\t\t\t\tdata: successData,\n\t\t\t\t\terror: null,\n\t\t\t\t\toptions,\n\t\t\t\t\trequest,\n\t\t\t\t\tresponse: options.cloneResponse ? response.clone() : response,\n\t\t\t\t})\n\t\t\t);\n\n\t\t\treturn await resolveSuccessResult({\n\t\t\t\tdata: successData,\n\t\t\t\tresponse,\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, generalErrorResult, resolveCustomErrorInfo } = resolveErrorResult({\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,\n\t\t\t};\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\tretryCount: (options.retryCount ?? 0) + 1,\n\t\t\t\t} satisfies CallApiConfig<TData, TErrorData, TResultMode>;\n\n\t\t\t\treturn await callApi(initURL, 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\tconst { response } = error;\n\n\t\t\t\tconst possibleHttpError = (generalErrorResult as { error: PossibleHTTPError<TErrorData> })\n\t\t\t\t\t.error;\n\n\t\t\t\tawait executeHooks(\n\t\t\t\t\toptions.onResponseError({\n\t\t\t\t\t\terror: possibleHttpError,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\trequest,\n\t\t\t\t\t\tresponse: options.cloneResponse ? response.clone() : response,\n\t\t\t\t\t}),\n\n\t\t\t\t\toptions.onError({\n\t\t\t\t\t\terror: possibleHttpError,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\trequest,\n\t\t\t\t\t\tresponse: options.cloneResponse ? response.clone() : response,\n\t\t\t\t\t}),\n\n\t\t\t\t\toptions.onResponse({\n\t\t\t\t\t\tdata: null,\n\t\t\t\t\t\terror: possibleHttpError,\n\t\t\t\t\t\toptions,\n\t\t\t\t\t\trequest,\n\t\t\t\t\t\tresponse: options.cloneResponse ? response.clone() : response,\n\t\t\t\t\t})\n\t\t\t\t);\n\n\t\t\t\thandleThrowOnError();\n\n\t\t\t\treturn generalErrorResult;\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 generalErrorResult;\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 resolveCustomErrorInfo({ message });\n\t\t\t}\n\n\t\t\tconst possibleJavascriptError = (generalErrorResult as { error: PossibleJavaScriptError }).error;\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({\n\t\t\t\t\terror: possibleJavascriptError,\n\t\t\t\t\toptions,\n\t\t\t\t\trequest,\n\t\t\t\t}),\n\n\t\t\t\t// == Also call the onError interceptor\n\t\t\t\toptions.onError({\n\t\t\t\t\terror: possibleJavascriptError,\n\t\t\t\t\toptions,\n\t\t\t\t\trequest,\n\t\t\t\t\tresponse: null,\n\t\t\t\t})\n\t\t\t);\n\n\t\t\thandleThrowOnError();\n\n\t\t\treturn generalErrorResult;\n\n\t\t\t// == Removing the now unneeded AbortController from store\n\t\t} finally {\n\t\t\t$RequestInfoCacheOrNull?.delete(dedupeKey);\n\t\t}\n\t};\n\n\tcallApi.create = createFetchClient;\n\n\treturn callApi;\n};\n\nexport const callApi = createFetchClient();\n"]}
|