{"version":3,"file":"DHzPjD2F.js","sources":["../../../../../node_modules/nuxt/dist/app/composables/asyncData.js","../../../../../node_modules/nuxt/dist/app/composables/fetch.js","../../../../stores/alert.ts","../../../../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 hasCachedData = () => options.getCachedData(key, nuxtApp) != 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(options.getCachedData(key, nuxtApp) ?? 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) && hasCachedData()) {\n return Promise.resolve(options.getCachedData(key, nuxtApp));\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 (import.meta.dev && !nuxtApp.isHydrating && (!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 || hasCachedData())) {\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 : 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?.();\n controller = typeof AbortController !== \"undefined\" ? new AbortController() : {};\n const timeoutLength = toValue(opts.timeout);\n let timeoutId;\n if (timeoutLength) {\n timeoutId = setTimeout(() => controller.abort(), 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","export const useAlertStore = defineStore('alertStore', {\n state: () => ({\n showAlert: false,\n alertMessage: '',\n alertType: 'info',\n }),\n actions: {\n show(message: string, type: 'info' | 'error' | 'success') {\n this.alertMessage = message;\n this.alertType = type;\n this.showAlert = true;\n },\n clear() {\n this.showAlert = false;\n this.alertMessage = '';\n this.alertType = 'info';\n },\n },\n});\n","import type { UseFetchOptions } from 'nuxt/app';\nimport { useAlertStore } from '../stores/alert';\n\nexport function useApi(\n url: string | (() => string),\n options?: Omit, 'default'> & { default?: () => T | Ref },\n) {\n return useFetch(url, {\n ...options,\n $fetch: useNuxtApp().$api,\n async onResponse({ response }: { response: Response }) {\n const apiVersion = response.headers.get('X-Api-Version');\n if (apiVersion) {\n handleApiVersion(apiVersion);\n }\n },\n });\n}\n\nfunction handleApiVersion(apiVersion: string) {\n const currentApiVersion = localStorage.getItem('apiVersion');\n if (!currentApiVersion) {\n localStorage.setItem('apiVersion', apiVersion);\n } else if (currentApiVersion !== apiVersion) {\n const alertStore = useAlertStore();\n localStorage.setItem('apiVersion', apiVersion);\n alertStore.show('The application has been updated. Please refresh the page.', \"info\");\n }\n}"],"names":["isDefer","dedupe","useAsyncData","args","autoKey","key","_handler","options","nuxtApp","useNuxtApp","handler","getDefault","asyncDataDefaults","getDefaultCachedData","hasCachedData","_a","_ref","ref","shallowRef","toRef","asyncData","opts","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","useAlertStore","defineStore","message","type","useApi","url","response","apiVersion","handleApiVersion","currentApiVersion","alertStore"],"mappings":"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","x_google_ignoreList":[0,1]}