{"version":3,"file":"BqrZ2EZP.js","sources":["../../../../node_modules/nuxt/dist/app/composables/asyncData.js","../../../../node_modules/nuxt/dist/app/composables/fetch.js","../../../../composables/useAPI.ts"],"sourcesContent":["import { computed, getCurrentInstance, getCurrentScope, onBeforeMount, onScopeDispose, onServerPrefetch, onUnmounted, ref, shallowRef, toRef, unref, watch } from \"vue\";\nimport { useNuxtApp } from \"../nuxt.js\";\nimport { toArray } from \"../utils.js\";\nimport { createError } from \"./error.js\";\nimport { onNuxtReady } from \"./ready.js\";\nimport { asyncDataDefaults, resetAsyncDataToUndefined } from \"#build/nuxt.config.mjs\";\nconst isDefer = (dedupe) => dedupe === \"defer\" || dedupe === false;\nexport function useAsyncData(...args) {\n const autoKey = typeof args[args.length - 1] === \"string\" ? args.pop() : void 0;\n if (typeof args[0] !== \"string\") {\n args.unshift(autoKey);\n }\n let [key, _handler, options = {}] = args;\n if (typeof key !== \"string\") {\n throw new TypeError(\"[nuxt] [asyncData] key must be a string.\");\n }\n if (typeof _handler !== \"function\") {\n throw new TypeError(\"[nuxt] [asyncData] handler must be a function.\");\n }\n const nuxtApp = useNuxtApp();\n const handler = import.meta.client || !import.meta.prerender || !nuxtApp.ssrContext?._sharedPrerenderCache ? _handler : () => {\n const value = nuxtApp.ssrContext._sharedPrerenderCache.get(key);\n if (value) {\n return value;\n }\n const promise = Promise.resolve().then(() => nuxtApp.runWithContext(_handler));\n nuxtApp.ssrContext._sharedPrerenderCache.set(key, promise);\n return promise;\n };\n const getDefault = () => asyncDataDefaults.value;\n const getDefaultCachedData = () => nuxtApp.isHydrating ? nuxtApp.payload.data[key] : nuxtApp.static.data[key];\n options.server = options.server ?? true;\n options.default = options.default ?? getDefault;\n options.getCachedData = options.getCachedData ?? getDefaultCachedData;\n options.lazy = options.lazy ?? false;\n options.immediate = options.immediate ?? true;\n options.deep = options.deep ?? asyncDataDefaults.deep;\n options.dedupe = options.dedupe ?? \"cancel\";\n if (import.meta.dev && typeof options.dedupe === \"boolean\") {\n console.warn(\"[nuxt] `boolean` values are deprecated for the `dedupe` option of `useAsyncData` and will be removed in the future. Use 'cancel' or 'defer' instead.\");\n }\n const initialCachedData = options.getCachedData(key, nuxtApp);\n const hasCachedData = initialCachedData != null;\n if (!nuxtApp._asyncData[key] || !options.immediate) {\n nuxtApp.payload._errors[key] ??= asyncDataDefaults.errorValue;\n const _ref = options.deep ? ref : shallowRef;\n nuxtApp._asyncData[key] = {\n data: _ref(hasCachedData ? initialCachedData : options.default()),\n pending: ref(!hasCachedData),\n error: toRef(nuxtApp.payload._errors, key),\n status: ref(\"idle\"),\n _default: options.default\n };\n }\n const asyncData = { ...nuxtApp._asyncData[key] };\n delete asyncData._default;\n asyncData.refresh = asyncData.execute = (opts = {}) => {\n if (nuxtApp._asyncDataPromises[key]) {\n if (isDefer(opts.dedupe ?? options.dedupe)) {\n return nuxtApp._asyncDataPromises[key];\n }\n nuxtApp._asyncDataPromises[key].cancelled = true;\n }\n if (opts._initial || nuxtApp.isHydrating && opts._initial !== false) {\n const cachedData = opts._initial ? initialCachedData : options.getCachedData(key, nuxtApp);\n if (cachedData != null) {\n return Promise.resolve(cachedData);\n }\n }\n asyncData.pending.value = true;\n asyncData.status.value = \"pending\";\n const promise = new Promise(\n (resolve, reject) => {\n try {\n resolve(handler(nuxtApp));\n } catch (err) {\n reject(err);\n }\n }\n ).then(async (_result) => {\n if (promise.cancelled) {\n return nuxtApp._asyncDataPromises[key];\n }\n let result = _result;\n if (options.transform) {\n result = await options.transform(_result);\n }\n if (options.pick) {\n result = pick(result, options.pick);\n }\n if (import.meta.dev && import.meta.server && typeof result === \"undefined\") {\n console.warn(`[nuxt] \\`${options._functionName || \"useAsyncData\"}\\` must return a value (it should not be \\`undefined\\`) or the request may be duplicated on the client side.`);\n }\n nuxtApp.payload.data[key] = result;\n asyncData.data.value = result;\n asyncData.error.value = asyncDataDefaults.errorValue;\n asyncData.status.value = \"success\";\n }).catch((error) => {\n if (promise.cancelled) {\n return nuxtApp._asyncDataPromises[key];\n }\n asyncData.error.value = createError(error);\n asyncData.data.value = unref(options.default());\n asyncData.status.value = \"error\";\n }).finally(() => {\n if (promise.cancelled) {\n return;\n }\n asyncData.pending.value = false;\n delete nuxtApp._asyncDataPromises[key];\n });\n nuxtApp._asyncDataPromises[key] = promise;\n return nuxtApp._asyncDataPromises[key];\n };\n asyncData.clear = () => clearNuxtDataByKey(nuxtApp, key);\n const initialFetch = () => asyncData.refresh({ _initial: true });\n const fetchOnServer = options.server !== false && nuxtApp.payload.serverRendered;\n if (import.meta.server && fetchOnServer && options.immediate) {\n const promise = initialFetch();\n if (getCurrentInstance()) {\n onServerPrefetch(() => promise);\n } else {\n nuxtApp.hook(\"app:created\", async () => {\n await promise;\n });\n }\n }\n if (import.meta.client) {\n const instance = getCurrentInstance();\n if (instance && fetchOnServer && options.immediate && !instance.sp) {\n instance.sp = [];\n }\n if (import.meta.dev && !nuxtApp.isHydrating && !nuxtApp._processingMiddleware && (!instance || instance?.isMounted)) {\n console.warn(`[nuxt] [${options._functionName || \"useAsyncData\"}] Component is already mounted, please use $fetch instead. See https://nuxt.com/docs/getting-started/data-fetching`);\n }\n if (instance && !instance._nuxtOnBeforeMountCbs) {\n instance._nuxtOnBeforeMountCbs = [];\n const cbs = instance._nuxtOnBeforeMountCbs;\n onBeforeMount(() => {\n cbs.forEach((cb) => {\n cb();\n });\n cbs.splice(0, cbs.length);\n });\n onUnmounted(() => cbs.splice(0, cbs.length));\n }\n if (fetchOnServer && nuxtApp.isHydrating && (asyncData.error.value || initialCachedData != null)) {\n asyncData.pending.value = false;\n asyncData.status.value = asyncData.error.value ? \"error\" : \"success\";\n } else if (instance && (nuxtApp.payload.serverRendered && nuxtApp.isHydrating || options.lazy) && options.immediate) {\n instance._nuxtOnBeforeMountCbs.push(initialFetch);\n } else if (options.immediate) {\n initialFetch();\n }\n const hasScope = getCurrentScope();\n if (options.watch) {\n const unsub = watch(options.watch, () => asyncData.refresh());\n if (hasScope) {\n onScopeDispose(unsub);\n }\n }\n const off = nuxtApp.hook(\"app:data:refresh\", async (keys) => {\n if (!keys || keys.includes(key)) {\n await asyncData.refresh();\n }\n });\n if (hasScope) {\n onScopeDispose(off);\n }\n }\n const asyncDataPromise = Promise.resolve(nuxtApp._asyncDataPromises[key]).then(() => asyncData);\n Object.assign(asyncDataPromise, asyncData);\n return asyncDataPromise;\n}\nexport function useLazyAsyncData(...args) {\n const autoKey = typeof args[args.length - 1] === \"string\" ? args.pop() : void 0;\n if (typeof args[0] !== \"string\") {\n args.unshift(autoKey);\n }\n const [key, handler, options = {}] = args;\n if (import.meta.dev && import.meta.client) {\n options._functionName ||= \"useLazyAsyncData\";\n }\n return useAsyncData(key, handler, { ...options, lazy: true }, null);\n}\nexport function useNuxtData(key) {\n const nuxtApp = useNuxtApp();\n if (!(key in nuxtApp.payload.data)) {\n nuxtApp.payload.data[key] = asyncDataDefaults.value;\n }\n return {\n data: computed({\n get() {\n return nuxtApp._asyncData[key]?.data.value ?? nuxtApp.payload.data[key];\n },\n set(value) {\n if (nuxtApp._asyncData[key]) {\n nuxtApp._asyncData[key].data.value = value;\n } else {\n nuxtApp.payload.data[key] = value;\n }\n }\n })\n };\n}\nexport async function refreshNuxtData(keys) {\n if (import.meta.server) {\n return Promise.resolve();\n }\n await new Promise((resolve) => onNuxtReady(resolve));\n const _keys = keys ? toArray(keys) : void 0;\n await useNuxtApp().hooks.callHookParallel(\"app:data:refresh\", _keys);\n}\nexport function clearNuxtData(keys) {\n const nuxtApp = useNuxtApp();\n const _allKeys = Object.keys(nuxtApp.payload.data);\n const _keys = !keys ? _allKeys : typeof keys === \"function\" ? _allKeys.filter(keys) : toArray(keys);\n for (const key of _keys) {\n clearNuxtDataByKey(nuxtApp, key);\n }\n}\nfunction clearNuxtDataByKey(nuxtApp, key) {\n if (key in nuxtApp.payload.data) {\n nuxtApp.payload.data[key] = void 0;\n }\n if (key in nuxtApp.payload._errors) {\n nuxtApp.payload._errors[key] = asyncDataDefaults.errorValue;\n }\n if (nuxtApp._asyncData[key]) {\n nuxtApp._asyncData[key].data.value = resetAsyncDataToUndefined ? void 0 : unref(nuxtApp._asyncData[key]._default());\n nuxtApp._asyncData[key].error.value = asyncDataDefaults.errorValue;\n nuxtApp._asyncData[key].pending.value = false;\n nuxtApp._asyncData[key].status.value = \"idle\";\n }\n if (key in nuxtApp._asyncDataPromises) {\n if (nuxtApp._asyncDataPromises[key]) {\n nuxtApp._asyncDataPromises[key].cancelled = true;\n }\n nuxtApp._asyncDataPromises[key] = void 0;\n }\n}\nfunction pick(obj, keys) {\n const newObj = {};\n for (const key of keys) {\n newObj[key] = obj[key];\n }\n return newObj;\n}\n","import { computed, reactive, toValue } from \"vue\";\nimport { hash } from \"ohash\";\nimport { useRequestFetch } from \"./ssr.js\";\nimport { useAsyncData } from \"./asyncData.js\";\nimport { fetchDefaults } from \"#build/nuxt.config.mjs\";\nexport function useFetch(request, arg1, arg2) {\n const [opts = {}, autoKey] = typeof arg1 === \"string\" ? [{}, arg1] : [arg1, arg2];\n const _request = computed(() => toValue(request));\n const _key = opts.key || hash([autoKey, typeof _request.value === \"string\" ? _request.value : \"\", ...generateOptionSegments(opts)]);\n if (!_key || typeof _key !== \"string\") {\n throw new TypeError(\"[nuxt] [useFetch] key must be a string: \" + _key);\n }\n if (!request) {\n throw new Error(\"[nuxt] [useFetch] request is missing.\");\n }\n const key = _key === autoKey ? \"$f\" + _key : _key;\n if (!opts.baseURL && typeof _request.value === \"string\" && (_request.value[0] === \"/\" && _request.value[1] === \"/\")) {\n throw new Error('[nuxt] [useFetch] the request URL must not start with \"//\".');\n }\n const {\n server,\n lazy,\n default: defaultFn,\n transform,\n pick,\n watch,\n immediate,\n getCachedData,\n deep,\n dedupe,\n ...fetchOptions\n } = opts;\n const _fetchOptions = reactive({\n ...fetchDefaults,\n ...fetchOptions,\n cache: typeof opts.cache === \"boolean\" ? void 0 : opts.cache\n });\n const _asyncDataOptions = {\n server,\n lazy,\n default: defaultFn,\n transform,\n pick,\n immediate,\n getCachedData,\n deep,\n dedupe,\n watch: watch === false ? [] : [_fetchOptions, _request, ...watch || []]\n };\n if (import.meta.dev && import.meta.client) {\n _asyncDataOptions._functionName = opts._functionName || \"useFetch\";\n }\n let controller;\n const asyncData = useAsyncData(key, () => {\n controller?.abort?.(new DOMException(\"Request aborted as another request to the same endpoint was initiated.\", \"AbortError\"));\n controller = typeof AbortController !== \"undefined\" ? new AbortController() : {};\n const timeoutLength = toValue(opts.timeout);\n let timeoutId;\n if (timeoutLength) {\n timeoutId = setTimeout(() => controller.abort(new DOMException(\"Request aborted due to timeout.\", \"AbortError\")), timeoutLength);\n controller.signal.onabort = () => clearTimeout(timeoutId);\n }\n let _$fetch = opts.$fetch || globalThis.$fetch;\n if (import.meta.server && !opts.$fetch) {\n const isLocalFetch = typeof _request.value === \"string\" && _request.value[0] === \"/\" && (!toValue(opts.baseURL) || toValue(opts.baseURL)[0] === \"/\");\n if (isLocalFetch) {\n _$fetch = useRequestFetch();\n }\n }\n return _$fetch(_request.value, { signal: controller.signal, ..._fetchOptions }).finally(() => {\n clearTimeout(timeoutId);\n });\n }, _asyncDataOptions);\n return asyncData;\n}\nexport function useLazyFetch(request, arg1, arg2) {\n const [opts = {}, autoKey] = typeof arg1 === \"string\" ? [{}, arg1] : [arg1, arg2];\n if (import.meta.dev && import.meta.client) {\n opts._functionName ||= \"useLazyFetch\";\n }\n return useFetch(\n request,\n {\n ...opts,\n lazy: true\n },\n // @ts-expect-error we pass an extra argument with the resolved auto-key to prevent another from being injected\n autoKey\n );\n}\nfunction generateOptionSegments(opts) {\n const segments = [\n toValue(opts.method)?.toUpperCase() || \"GET\",\n toValue(opts.baseURL)\n ];\n for (const _obj of [opts.params || opts.query]) {\n const obj = toValue(_obj);\n if (!obj) {\n continue;\n }\n const unwrapped = {};\n for (const [key, value] of Object.entries(obj)) {\n unwrapped[toValue(key)] = toValue(value);\n }\n segments.push(unwrapped);\n }\n return segments;\n}\n","import { ERROR_SEPARATOR } from '@/utils';\nimport { defu } from 'defu';\nimport { type UseFetchOptions } from 'nuxt/app';\nimport type { FetchResponse } from 'ofetch';\n\ntype FetchOptions = UseFetchOptions & {\n timeout?: number;\n};\ntype ErrorType = { errors: Record };\n\nexport const useAPI = (\n url: string | (() => string),\n userOptions: FetchOptions = {}\n) => {\n const config = useRuntimeConfig();\n\n const controller = new AbortController();\n\n const timeoutId = setTimeout(() => {\n controller.abort(\n createError({\n statusCode: 408,\n statusMessage: 'aborted',\n message: 'This request has been automatically aborted.'\n })\n );\n }, userOptions.timeout);\n\n const defaultOptions: FetchOptions = {\n //@ts-ignore\n baseURL: config.public.ApiBaseUrl,\n method: 'GET',\n retry: 3,\n timeout: 15000,\n signal: userOptions.timeout ? controller.signal : undefined,\n credentials: 'include',\n\n // cache request\n key: typeof url === 'string' ? url : url(),\n onRequest({ options }: { options: FetchOptions }) {\n options.headers = {\n ...options.headers,\n Accept: 'application/json',\n 'Content-type': 'application/json'\n };\n },\n onResponse({ response }: { response: FetchResponse }) {\n const hasError =\n !response.status.toString().startsWith('2') ||\n response._data.status === 'error';\n\n if (hasError) {\n throw createError({\n statusCode: response.status,\n statusMessage: response._data.status,\n message:\n response._data?.message || JSON.stringify(response._data?.errors)\n });\n }\n },\n onResponseError({ response }: { response: FetchResponse }) {\n const statusCode = response.status || 500;\n const statusMessage = response.statusText || '';\n const errorsMsg = (response._data || {}) as ErrorType;\n\n const errorEntries = Object.entries(errorsMsg.errors);\n\n const message = errorEntries.reduce((acc: string[], [key, value]) => {\n return [...acc, ...value.map((item) => `${key} ${item}`)];\n }, []);\n\n throw createError({\n statusCode,\n statusMessage,\n message: message.join(ERROR_SEPARATOR)\n });\n }\n };\n\n const options = defu(userOptions, defaultOptions) as UseFetchOptions;\n\n const fetchResult = useFetch(url, options);\n\n return fetchResult\n .then((result) => {\n // If there's an error in the result, throw it to trigger catch blocks\n if (result.error.value) {\n throw result.error.value;\n }\n\n return result;\n })\n .finally(() => {\n if (userOptions.timeout && timeoutId) {\n clearTimeout(timeoutId);\n }\n });\n};\n"],"names":["isDefer","dedupe","useAsyncData","args","autoKey","key","_handler","options","nuxtApp","useNuxtApp","handler","getDefault","asyncDataDefaults","getDefaultCachedData","initialCachedData","hasCachedData","_a","_ref","ref","shallowRef","toRef","asyncData","opts","cachedData","promise","resolve","reject","err","_result","result","pick","error","createError","unref","clearNuxtDataByKey","initialFetch","fetchOnServer","instance","getCurrentInstance","cbs","onBeforeMount","cb","onUnmounted","hasScope","getCurrentScope","unsub","watch","onScopeDispose","off","keys","asyncDataPromise","obj","newObj","useFetch","request","arg1","arg2","_request","computed","toValue","_key","hash","generateOptionSegments","server","lazy","defaultFn","transform","immediate","getCachedData","deep","fetchOptions","_fetchOptions","reactive","fetchDefaults","_asyncDataOptions","controller","timeoutLength","timeoutId","segments","_obj","unwrapped","value","useAPI","url","userOptions","config","useRuntimeConfig","defaultOptions","response","_b","statusCode","statusMessage","errorsMsg","message","acc","item","ERROR_SEPARATOR","defu"],"mappings":"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","x_google_ignoreList":[0,1]}