@nuxt/devtools 4.0.0-alpha.17 → 4.0.0-alpha.19

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.
Files changed (78) hide show
  1. package/dist/_nuxt/{CodeDiff-DgjeLx6z.js.map.json → CodeDiff-BhzZ6fTd.js.map.json} +1 -1
  2. package/dist/_nuxt/{CodeSnippets-CgfcaS4Z.js.map.json → CodeSnippets-C7LxVstU.js.map.json} +1 -1
  3. package/dist/_nuxt/{ComposableItem-BWQR7_fI.js.map.json → ComposableItem-C0rRVuVk.js.map.json} +1 -1
  4. package/dist/_nuxt/{DataSchemaButton-CqEfc2TV.js.map.json → DataSchemaButton-D-t7Fd9O.js.map.json} +1 -1
  5. package/dist/_nuxt/{DataSchemaDrawer-Xj8YzNJN.js.map.json → DataSchemaDrawer-CRqKi4Gs.js.map.json} +1 -1
  6. package/dist/_nuxt/{FilepathItem-D75bkTSa.js.map.json → FilepathItem-QhFtdBo3.js.map.json} +1 -1
  7. package/dist/_nuxt/{HelpFab-CH7NlsDf.js.map.json → HelpFab-DsqK9feu.js.map.json} +1 -1
  8. package/dist/_nuxt/{LaunchPage-ByG-3KVi.js.map.json → LaunchPage-DvnAdXoI.js.map.json} +1 -1
  9. package/dist/_nuxt/{NCheckbox-OMIu_LTG.js.map.json → NCheckbox-C4hTNEJ1.js.map.json} +1 -1
  10. package/dist/_nuxt/{NDrawer-C6Opm19C.js.map.json → NDrawer-CkklqKLr.js.map.json} +1 -1
  11. package/dist/_nuxt/{NDropdown-DseEG3tA.js.map.json → NDropdown-CgrUsKt7.js.map.json} +1 -1
  12. package/dist/_nuxt/NIcon-50gk2nbO.js.map.json +1 -0
  13. package/dist/_nuxt/{NLink-Rsxlt1NN.js.map.json → NLink-CatISrot.js.map.json} +1 -1
  14. package/dist/_nuxt/{NNavbar-CS-Z1Cle.js.map.json → NNavbar-Du6Evn0c.js.map.json} +1 -1
  15. package/dist/_nuxt/{NSectionBlock-C7kcMkbf.js.map.json → NSectionBlock-CWogkb2Y.js.map.json} +1 -1
  16. package/dist/_nuxt/{NSelect-geGP1eOG.js.map.json → NSelect-C1Q6pEoo.js.map.json} +1 -1
  17. package/dist/_nuxt/{NSelectTabs-nUMnNQy-.js.map.json → NSelectTabs-ccruddjj.js.map.json} +1 -1
  18. package/dist/_nuxt/{NSplitPane-Bh0o_t5e.js.map.json → NSplitPane-CtaObqWQ.js.map.json} +1 -1
  19. package/dist/_nuxt/{NTip-DRnTpLjG.js.map.json → NTip-DdMJ2p97.js.map.json} +1 -1
  20. package/dist/_nuxt/{ServerRouteInputs-BhIrPxPN.js.map.json → ServerRouteInputs-Y1oZjFFT.js.map.json} +1 -1
  21. package/dist/_nuxt/{StacktraceList-B-ehJIQ-.js.map.json → StacktraceList-c-F2IS3F.js.map.json} +1 -1
  22. package/dist/_nuxt/{StateEditor-Yqdbqk_c.js.map.json → StateEditor-CDR7gMTz.js.map.json} +1 -1
  23. package/dist/_nuxt/{__blank-BM2yOFO6.js.map.json → __blank-C9tG8tKE.js.map.json} +1 -1
  24. package/dist/_nuxt/{analyze-build-Cemp_oBq.js.map.json → analyze-build-BqtehgeE.js.map.json} +1 -1
  25. package/dist/_nuxt/assets-BuVkFuYO.js.map.json +1 -0
  26. package/dist/_nuxt/{components-BJnHweOE.js.map.json → components-uGD7fpTl.js.map.json} +1 -1
  27. package/dist/_nuxt/custom-_name_-CL9ijc8K.js.map.json +1 -0
  28. package/dist/_nuxt/{debug-BcJZ8M6i.js.map.json → debug-D10Jwem2.js.map.json} +1 -1
  29. package/dist/_nuxt/entry-CqsJq8Bj.js.map.json +1 -0
  30. package/dist/_nuxt/{error-404-dySA7T2P.js.map.json → error-404-B3hvNTTL.js.map.json} +1 -1
  31. package/dist/_nuxt/{error-500-2Ody89Er.js.map.json → error-500-C707LWWo.js.map.json} +1 -1
  32. package/dist/_nuxt/{error-hGc4cWUU.js.map.json → error-D03t_7ms.js.map.json} +1 -1
  33. package/dist/_nuxt/{head-BTCtirw3.js.map.json → head-BHeO3WM1.js.map.json} +1 -1
  34. package/dist/_nuxt/{hooks-BVzlIVXR.js.map.json → hooks-Dao-RDzo.js.map.json} +1 -1
  35. package/dist/_nuxt/{imports-B3k4BZF7.js.map.json → imports-CY-qGueB.js.map.json} +1 -1
  36. package/dist/_nuxt/{modules-Ck915TxZ.js.map.json → modules-BTU4bGX2.js.map.json} +1 -1
  37. package/dist/_nuxt/nuxt-CU0ot_Hr.js.map.json +1 -0
  38. package/dist/_nuxt/{nuxt-link-C-BBeF5l.js.map.json → nuxt-link-DVKhBKYR.js.map.json} +1 -1
  39. package/dist/_nuxt/{open-graph-ll_bjX_m.js.map.json → open-graph-DrWy0sHo.js.map.json} +1 -1
  40. package/dist/_nuxt/overview-DMlMZwOJ.js.map.json +1 -0
  41. package/dist/_nuxt/{pages-CrUWMxGz.js.map.json → pages-BqpyOhlp.js.map.json} +1 -1
  42. package/dist/_nuxt/{pages-DWELoQlh.js.map.json → pages-Dpy3RGh8.js.map.json} +1 -1
  43. package/dist/_nuxt/{pages-BddDWJsZ.js.map.json → pages-SVg8-7rL.js.map.json} +1 -1
  44. package/dist/_nuxt/{payload-29bFuqLh.js.map.json → payload-B4tGg_yJ.js.map.json} +1 -1
  45. package/dist/_nuxt/{plugins-fmmRaH-S.js.map.json → plugins-sOeLpXdK.js.map.json} +1 -1
  46. package/dist/_nuxt/{ready-BQ1fhXgL.js.map.json → ready-DyAGZGXh.js.map.json} +1 -1
  47. package/dist/_nuxt/{runtime-configs-iL68LNkj.js.map.json → runtime-configs-CKsHjoDA.js.map.json} +1 -1
  48. package/dist/_nuxt/server-routes-Dr4xIhnL.js.map.json +1 -0
  49. package/dist/_nuxt/server-tasks-DVSMIJ23.js.map.json +1 -0
  50. package/dist/_nuxt/{settings-Qa45tU8e.js.map.json → settings-ClAb5Ncw.js.map.json} +1 -1
  51. package/dist/_nuxt/{state-components-CksF081b.js.map.json → state-components-CUy4qfKa.js.map.json} +1 -1
  52. package/dist/_nuxt/state-modules-BiTBg3sT.js.map.json +1 -0
  53. package/dist/_nuxt/{state-tabs-m1o-BX5R.js.map.json → state-tabs-DyXoC_gu.js.map.json} +1 -1
  54. package/dist/_nuxt/storage-Bl77u--J.js.map.json +1 -0
  55. package/dist/_nuxt/{timeline-Dukbqafi.js.map.json → timeline-RijyQyqW.js.map.json} +1 -1
  56. package/dist/_nuxt/utils-B-D4Pftb.js.map.json +1 -0
  57. package/dist/_nuxt/{virtual-files-BQJM45QE.js.map.json → virtual-files-DKOje2lN.js.map.json} +1 -1
  58. package/dist/_nuxt/virtual_nuxt_node_modules_.cache_nuxt_.nuxt_fetch.server-pxhz0pzP.js.map.json +1 -0
  59. package/dist/chunks/analyze-build.mjs +1 -1
  60. package/dist/chunks/module-main.mjs +92 -61
  61. package/dist/chunks/vite-inspect.mjs +1 -1
  62. package/dist/index.mjs.map.json +1 -1
  63. package/dist/module.json +1 -1
  64. package/dist/runtime/shared/hooks.d.ts +10 -2
  65. package/dist/server.mjs.map.json +1 -1
  66. package/package.json +24 -24
  67. package/dist/_nuxt/AuthRequiredPanel-znjaI7oT.js.map.json +0 -1
  68. package/dist/_nuxt/NIcon-cjduOh_B.js.map.json +0 -1
  69. package/dist/_nuxt/assets-rTFAaows.js.map.json +0 -1
  70. package/dist/_nuxt/custom-_name_-DI8dnRDD.js.map.json +0 -1
  71. package/dist/_nuxt/entry-DZwY6FLS.js.map.json +0 -1
  72. package/dist/_nuxt/nuxt-C5VITehY.js.map.json +0 -1
  73. package/dist/_nuxt/overview-CyqDmfdE.js.map.json +0 -1
  74. package/dist/_nuxt/server-routes-Dy5_Ljmu.js.map.json +0 -1
  75. package/dist/_nuxt/server-tasks-CD-7IPFD.js.map.json +0 -1
  76. package/dist/_nuxt/state-modules-CyH4hWeN.js.map.json +0 -1
  77. package/dist/_nuxt/storage-BylO3p9r.js.map.json +0 -1
  78. package/dist/_nuxt/utils-BfB0tRbX.js.map.json +0 -1
@@ -0,0 +1 @@
1
+ {"file":"utils-B-D4Pftb.js","mappings":"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","names":[],"sources":["../../../../../../../../../../../node_modules/.pnpm/nuxt-nightly@5.0.0-29806258.d070492f_@oxc-project+types@0.148.0_@parcel+watcher@2.6.0_@_e232bcb147fd638e1275d37890b37038/node_modules/nuxt-nightly/dist/app/utils/debounce-tick.js","../../../../../../../../../../../node_modules/.pnpm/nuxt-nightly@5.0.0-29806258.d070492f_@oxc-project+types@0.148.0_@parcel+watcher@2.6.0_@_e232bcb147fd638e1275d37890b37038/node_modules/nuxt-nightly/dist/app/components/server-placeholder.js","../../../../../../../../../../../node_modules/.pnpm/nuxt-nightly@5.0.0-29806258.d070492f_@oxc-project+types@0.148.0_@parcel+watcher@2.6.0_@_e232bcb147fd638e1275d37890b37038/node_modules/nuxt-nightly/dist/app/components/client-only.js","../../../../../../../../../../../node_modules/.pnpm/nuxt-nightly@5.0.0-29806258.d070492f_@oxc-project+types@0.148.0_@parcel+watcher@2.6.0_@_e232bcb147fd638e1275d37890b37038/node_modules/nuxt-nightly/dist/compiler/runtime/index.js","../../../../../../../../../../../node_modules/.pnpm/nuxt-nightly@5.0.0-29806258.d070492f_@oxc-project+types@0.148.0_@parcel+watcher@2.6.0_@_e232bcb147fd638e1275d37890b37038/node_modules/nuxt-nightly/dist/app/diagnostics/data.js","../../../../../../../../../../../node_modules/.pnpm/nuxt-nightly@5.0.0-29806258.d070492f_@oxc-project+types@0.148.0_@parcel+watcher@2.6.0_@_e232bcb147fd638e1275d37890b37038/node_modules/nuxt-nightly/dist/app/composables/lazy-hydration.js","../../../../../../../../../../../node_modules/.pnpm/nuxt-nightly@5.0.0-29806258.d070492f_@oxc-project+types@0.148.0_@parcel+watcher@2.6.0_@_e232bcb147fd638e1275d37890b37038/node_modules/nuxt-nightly/dist/app/composables/asyncData.js","../../../../../../../../composables/state.ts","../../../../../../../../composables/utils.ts"],"sourcesContent":["import { queuePostFlushCb } from \"vue\";\n//#region src/app/utils/debounce-tick.ts\n/**\n* Debounce an async function so that repeated calls within the same tick are\n* collapsed into a single call (plus a trailing call if arguments arrived\n* while the debounced call was still pending).\n*\n* Adapted from https://github.com/unjs/perfect-debounce with the timeout\n* replaced by Vue's post-flush callback queue.\n*/\nfunction debounceTick(fn, options = {}) {\n\tlet leadingValue;\n\tlet active = false;\n\tlet resolveList = [];\n\tlet currentPromise;\n\tlet trailingArgs;\n\tconst applyFn = (_this, args) => {\n\t\tconst promise = _applyPromised(fn, _this, args);\n\t\tcurrentPromise = promise;\n\t\tpromise.finally(() => {\n\t\t\tcurrentPromise = void 0;\n\t\t\tif (trailingArgs && !active) {\n\t\t\t\tconst args = trailingArgs;\n\t\t\t\ttrailingArgs = void 0;\n\t\t\t\tapplyFn(_this, args);\n\t\t\t}\n\t\t});\n\t\treturn promise;\n\t};\n\treturn function(...args) {\n\t\ttrailingArgs = args;\n\t\tif (currentPromise) return currentPromise;\n\t\treturn new Promise((resolve) => {\n\t\t\tconst shouldCallNow = options.leading && !active;\n\t\t\tif (!active) {\n\t\t\t\tactive = true;\n\t\t\t\tqueuePostFlushCb(() => {\n\t\t\t\t\tactive = false;\n\t\t\t\t\tconst flushArgs = trailingArgs ?? args;\n\t\t\t\t\ttrailingArgs = void 0;\n\t\t\t\t\tconst promise = options.leading ? leadingValue : applyFn(this, flushArgs);\n\t\t\t\t\tfor (const _resolve of resolveList) _resolve(promise);\n\t\t\t\t\tresolveList = [];\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (shouldCallNow) {\n\t\t\t\tleadingValue = applyFn(this, args);\n\t\t\t\tresolve(leadingValue);\n\t\t\t} else resolveList.push(resolve);\n\t\t});\n\t};\n}\nasync function _applyPromised(fn, _this, args) {\n\treturn await fn.apply(_this, args);\n}\n//#endregion\nexport { debounceTick };\n","import { createCommentVNode, createElementBlock, defineComponent } from \"vue\";\nimport { clientNodePlaceholder } from \"#build/nuxt.config.mjs\";\n//#region src/app/components/server-placeholder.ts\nconst ServerPlaceholder = defineComponent({\n\tname: \"ServerPlaceholder\",\n\trender() {\n\t\treturn clientNodePlaceholder ? createCommentVNode(\"placeholder\") : createElementBlock(\"div\");\n\t}\n});\n//#endregion\nexport { ServerPlaceholder as default };\n","import { useNuxtApp } from \"../nuxt.js\";\nimport { renderDiagnostics } from \"../diagnostics/render.js\";\nimport ServerPlaceholder from \"./server-placeholder.js\";\nimport { elToStaticVNode, isVaporSlot, sanitizeTag } from \"./utils.js\";\nimport { cloneVNode, createCommentVNode, createElementBlock, defineComponent, getCurrentInstance, h, onMounted, provide, shallowRef } from \"vue\";\nimport { clientNodePlaceholder, vapor } from \"#build/nuxt.config.mjs\";\nimport { isPromise } from \"@vue/shared\";\n//#region src/app/components/client-only.ts\nconst clientOnlySymbol = Symbol.for(\"nuxt:client-only\");\nconst STATIC_DIV = \"<div></div>\";\nfunction isPlaceholderComment(el) {\n\treturn el.nodeName === \"#comment\" && el.nodeValue === \"placeholder\";\n}\nfunction createPlaceholder(el) {\n\tif (el && !isPlaceholderComment(el)) return elToStaticVNode(el, STATIC_DIV);\n\treturn clientNodePlaceholder ? createCommentVNode(\"placeholder\") : h(\"div\");\n}\nconst ClientOnly = defineComponent({\n\tname: \"ClientOnly\",\n\tinheritAttrs: false,\n\tprops: [\n\t\t\"fallback\",\n\t\t\"placeholder\",\n\t\t\"placeholderTag\",\n\t\t\"fallbackTag\"\n\t],\n\t...false && { slots: Object },\n\tsetup(props, { slots, attrs }) {\n\t\tconst mounted = shallowRef(false);\n\t\tonMounted(() => {\n\t\t\tmounted.value = true;\n\t\t});\n\t\tif (false) {\n\t\t\tconst nuxtApp = useNuxtApp();\n\t\t\tnuxtApp._isNuxtPageUsed = true;\n\t\t\tnuxtApp._isNuxtLayoutUsed = true;\n\t\t}\n\t\tconst vm = getCurrentInstance();\n\t\tif (vm) vm._nuxtClientOnly = true;\n\t\tprovide(clientOnlySymbol, true);\n\t\treturn () => {\n\t\t\tif (mounted.value) {\n\t\t\t\tconst vnodes = slots.default?.();\n\t\t\t\tif (vnodes && vnodes.length === 1 && !(vapor && isVaporSlot(slots.default))) return [cloneVNode(vnodes[0], attrs)];\n\t\t\t\tif (false && vapor && isVaporSlot(slots.default) && attrs && Object.keys(attrs).length > 0) renderDiagnostics.NUXT_E4021();\n\t\t\t\treturn vnodes;\n\t\t\t}\n\t\t\tconst slot = slots.fallback || slots.placeholder;\n\t\t\tif (slot) return h(slot);\n\t\t\tconst fallbackStr = props.fallback || props.placeholder || \"\";\n\t\t\tconst fallbackTag = sanitizeTag(props.fallbackTag || props.placeholderTag, \"span\");\n\t\t\treturn createElementBlock(fallbackTag, attrs, fallbackStr);\n\t\t};\n\t}\n});\nconst cache = /* @__PURE__ */ new WeakMap();\n/* @__NO_SIDE_EFFECTS__ */\nfunction createClientOnly(component) {\n\tif (true) return ServerPlaceholder;\n\tif (cache.has(component)) return cache.get(component);\n\tconst clone = { ...component };\n\tif (clone.render) clone.render = (ctx, cache, $props, $setup, $data, $options) => {\n\t\tif ($setup.mounted$ ?? ctx.mounted$) {\n\t\t\tconst res = component.render?.bind(ctx)(ctx, cache, $props, $setup, $data, $options);\n\t\t\treturn res.children === null || typeof res.children === \"string\" ? cloneVNode(res) : h(res);\n\t\t}\n\t\treturn createPlaceholder(ctx._.vnode.el);\n\t};\n\telse {\n\t\tconst placeholderTemplate = clientNodePlaceholder ? \"<!--placeholder-->\" : \"<div></div>\";\n\t\tclone.template &&= `\n <template v-if=\"mounted$\">${component.template}</template>\n <template v-else>${placeholderTemplate}</template>\n `;\n\t}\n\tclone.setup = (props, ctx) => {\n\t\tconst nuxtApp = useNuxtApp();\n\t\tconst mounted$ = shallowRef(nuxtApp.isHydrating === false);\n\t\tconst instance = getCurrentInstance();\n\t\tif (nuxtApp.isHydrating) {\n\t\t\tconst attrs = { ...instance.attrs };\n\t\t\tconst directives = extractDirectives(instance);\n\t\t\tfor (const key in attrs) delete instance.attrs[key];\n\t\t\tonMounted(() => {\n\t\t\t\tObject.assign(instance.attrs, attrs);\n\t\t\t\tinstance.vnode.dirs = directives;\n\t\t\t});\n\t\t}\n\t\tonMounted(() => {\n\t\t\tmounted$.value = true;\n\t\t});\n\t\tconst setupState = component.setup?.(props, ctx) || {};\n\t\tif (isPromise(setupState)) return Promise.resolve(setupState).then((setupState) => {\n\t\t\tif (typeof setupState !== \"function\") {\n\t\t\t\tsetupState ||= {};\n\t\t\t\tsetupState.mounted$ = mounted$;\n\t\t\t\treturn setupState;\n\t\t\t}\n\t\t\treturn (...args) => {\n\t\t\t\tif (mounted$.value || !nuxtApp.isHydrating) {\n\t\t\t\t\tconst res = setupState(...args);\n\t\t\t\t\treturn res.children === null || typeof res.children === \"string\" ? cloneVNode(res) : h(res);\n\t\t\t\t}\n\t\t\t\treturn createPlaceholder(instance?.vnode.el);\n\t\t\t};\n\t\t});\n\t\telse {\n\t\t\tif (typeof setupState === \"function\") return (...args) => {\n\t\t\t\tif (mounted$.value) {\n\t\t\t\t\tconst res = setupState(...args);\n\t\t\t\t\tconst attrs = clone.inheritAttrs !== false ? ctx.attrs : void 0;\n\t\t\t\t\treturn res.children === null || typeof res.children === \"string\" ? cloneVNode(res, attrs) : h(res, attrs);\n\t\t\t\t}\n\t\t\t\treturn createPlaceholder(instance?.vnode.el);\n\t\t\t};\n\t\t\treturn Object.assign(setupState, { mounted$ });\n\t\t}\n\t};\n\tcache.set(component, clone);\n\treturn clone;\n}\nfunction extractDirectives(instance) {\n\tif (!instance || !instance.vnode.dirs) return null;\n\tconst directives = instance.vnode.dirs;\n\tinstance.vnode.dirs = null;\n\treturn directives;\n}\n//#endregion\nexport { clientOnlySymbol, createClientOnly, ClientOnly as default };\n","import { appDiagnostics } from \"../../app/diagnostics/core.js\";\n//#region src/compiler/runtime/index.ts\n/**\n* Define a factory for a function that should be registered for automatic key injection.\n* @since 4.2.0\n* @param factory\n*/\nfunction defineKeyedFunctionFactory(factory) {\n\tconst placeholder = function() {\n\t\tthrow appDiagnostics.NUXT_E1007({ name: factory.name });\n\t};\n\treturn Object.defineProperty(placeholder, \"__nuxt_factory\", {\n\t\tenumerable: false,\n\t\tget: () => factory.factory\n\t});\n}\n//#endregion\nexport { defineKeyedFunctionFactory };\n","import { docsBase, prodReporters, reporters } from \"./_shared.js\";\nimport { defineDiagnostics, defineProdDiagnostics } from \"nostics\";\n//#region src/app/diagnostics/data.ts\n/**\n* E3xxx\n* Data fetching (useFetch / useAsyncData) runtime diagnostics.\n*/\nconst dataDiagnostics = !import.meta.dev ? /* #__PURE__ */ defineProdDiagnostics({\n\tdocsBase,\n\treporters: prodReporters\n}) : /* #__PURE__ */ defineDiagnostics({\n\tdocsBase,\n\treporters,\n\tcodes: {\n\t\tNUXT_E3001: {\n\t\t\twhy: (p) => `The \\`useFetch\\` request URL must not start with \"//\" (received \\`${p.url}\\`).`,\n\t\t\tfix: \"Use an absolute URL with a protocol or a relative path instead.\"\n\t\t},\n\t\tNUXT_E3002: {\n\t\t\twhy: \"`useFetch` failed to hash the request body for the cache key.\",\n\t\t\tfix: \"Pass a serializable value (plain object, string, FormData) as the request body, or provide an explicit `key` to `useFetch`.\",\n\t\t\tdocs: false\n\t\t},\n\t\tNUXT_E3003: {\n\t\t\twhy: \"`useAsyncData`/`useFetch` was called after the component had already mounted, so the data fetch cannot be awaited during setup.\",\n\t\t\tfix: \"Use `$fetch()` for requests triggered after mount (e.g. in event handlers), or call `useAsyncData`/`useFetch` in the `setup()` function.\",\n\t\t\tdocs: false\n\t\t},\n\t\tNUXT_E3004: {\n\t\t\twhy: (p) => `Incompatible options detected for \"${p.key}\":\\n${p.warnings}`,\n\t\t\tfix: \"You can use a different key or move the call to a composable to ensure the options are shared across calls.\",\n\t\t\tdocs: false\n\t\t},\n\t\tNUXT_E3005: {\n\t\t\twhy: \"`execute` was passed directly to `watch`, which causes unintended behavior.\",\n\t\t\tfix: \"Wrap the call: `watch(source, () => execute())` instead of `watch(source, execute)`.\",\n\t\t\tdocs: false\n\t\t},\n\t\tNUXT_E3006: {\n\t\t\twhy: (p) => `\\`${p.fn}\\` handler returned \\`undefined\\`, so the request may be duplicated on the client side.`,\n\t\t\tfix: \"Return a value from the handler function (e.g. `return null` instead of returning nothing).\",\n\t\t\tdocs: false\n\t\t},\n\t\tNUXT_E3007: {\n\t\t\twhy: \"`asyncData` returned a non-object value.\",\n\t\t\tfix: \"Return a plain object from the `asyncData()` function, e.g. `asyncData() { return { key: value } }`.\",\n\t\t\tdocs: false\n\t\t},\n\t\tNUXT_E3008: {\n\t\t\twhy: \"`useAsyncData` key must be a non-empty string.\",\n\t\t\tfix: \"Pass a non-empty string as the first argument to `useAsyncData()`.\"\n\t\t},\n\t\tNUXT_E3009: {\n\t\t\twhy: \"`useAsyncData` handler must be a function.\",\n\t\t\tfix: \"Pass a function as the handler argument, e.g. `useAsyncData('key', () => $fetch('/api/data'))`.\"\n\t\t},\n\t\tNUXT_E3010: {\n\t\t\twhy: \"`useFetch` no longer accepts `params`, so it was dropped from the request.\",\n\t\t\tfix: \"Rename the option to `query`, which is what `params` was an alias for.\",\n\t\t\tdocs: false\n\t\t}\n\t}\n});\n//#endregion\nexport { dataDiagnostics };\n","//#region src/app/composables/lazy-hydration.ts\nconst neverHydratedSymbol = Symbol.for(\"nuxt:never-hydrated\");\nfunction defineLazyHydrationComponent(_strategy, _source) {}\n//#endregion\nexport { defineLazyHydrationComponent, neverHydratedSymbol };\n","import { traceAsync } from \"../internal/tracing.js\";\nimport { useNuxtApp } from \"../nuxt.js\";\nimport { getUserCaller, toArray } from \"../utils.js\";\nimport { createError } from \"./error.js\";\nimport { hashFunction, hashKey } from \"../utils/hash.js\";\nimport { debounceTick } from \"../utils/debounce-tick.js\";\nimport { clientOnlySymbol } from \"../components/client-only.js\";\nimport { onNuxtReady } from \"./ready.js\";\nimport { defineKeyedFunctionFactory } from \"../../compiler/runtime/index.js\";\nimport { dataDiagnostics } from \"../diagnostics/data.js\";\nimport { neverHydratedSymbol } from \"./lazy-hydration.js\";\nimport { computed, getCurrentInstance, getCurrentScope, inject, isRef, isShallow, nextTick, onBeforeMount, onScopeDispose, onServerPrefetch, onUnmounted, queuePostFlushCb, ref, shallowRef, toRef, toValue, unref, watch } from \"vue\";\nimport { asyncDataDefaults, granularCachedData, pendingWhenIdle, purgeCachedData, stripNeverHydratedData, tracingChannelNuxt, vapor } from \"#build/nuxt.config.mjs\";\n//#region src/app/composables/asyncData.ts\nconst createUseAsyncData = defineKeyedFunctionFactory({\n\tname: \"createUseAsyncData\",\n\tfactory(options = {}) {\n\t\tfunction useAsyncData(...args) {\n\t\t\tconst autoKey = typeof args[args.length - 1] === \"string\" ? args.pop() : void 0;\n\t\t\tif (_isAutoKeyNeeded(args[0], args[1])) args.unshift(autoKey);\n\t\t\tlet [_key, _handler, opts = {}] = args;\n\t\t\tlet keyChanging = false;\n\t\t\t/** True if key is a Ref or getter; false for static string. When false, key watcher is skipped. */\n\t\t\tconst isKeyReactive = isRef(_key) || typeof _key === \"function\";\n\t\t\tconst key = isKeyReactive ? computed(() => toValue(_key)) : { value: _key };\n\t\t\tif (!key.value || typeof key.value !== \"string\") throw dataDiagnostics.NUXT_E3008();\n\t\t\tif (typeof _handler !== \"function\") throw dataDiagnostics.NUXT_E3009();\n\t\t\tconst shouldFactoryOptionsOverride = typeof options === \"function\";\n\t\t\tconst nuxtApp = useNuxtApp();\n\t\t\tconst factoryOptions = shouldFactoryOptionsOverride ? options(opts) : options;\n\t\t\tif (!shouldFactoryOptionsOverride) for (const key in factoryOptions) {\n\t\t\t\tif (factoryOptions[key] === void 0) continue;\n\t\t\t\tif (opts[key] !== void 0) continue;\n\t\t\t\topts[key] = factoryOptions[key];\n\t\t\t}\n\t\t\topts.server ??= true;\n\t\t\topts.default ??= getDefault;\n\t\t\topts.getCachedData ??= getDefaultCachedData;\n\t\t\topts.lazy ??= false;\n\t\t\topts.immediate ??= true;\n\t\t\topts.deep ??= asyncDataDefaults.deep;\n\t\t\topts.dedupe ??= \"cancel\";\n\t\t\topts.enabled ??= true;\n\t\t\tif (true && stripNeverHydratedData && opts.serialize === void 0 && getCurrentInstance() && inject(neverHydratedSymbol, false)) opts.serialize = false;\n\t\t\tif (shouldFactoryOptionsOverride) for (const key in factoryOptions) {\n\t\t\t\tif (factoryOptions[key] === void 0) continue;\n\t\t\t\topts[key] = factoryOptions[key];\n\t\t\t}\n\t\t\tconst currentData = nuxtApp._asyncData[key.value];\n\t\t\tif (false && currentData) {\n\t\t\t\tconst warnings = [];\n\t\t\t\tconst values = createHash(_handler, opts);\n\t\t\t\tif (values.handler !== currentData._hash?.handler) warnings.push(`different handler`);\n\t\t\t\tfor (const opt of [\n\t\t\t\t\t\"transform\",\n\t\t\t\t\t\"pick\",\n\t\t\t\t\t\"getCachedData\",\n\t\t\t\t\t\"serialize\"\n\t\t\t\t]) if (values[opt] !== currentData._hash[opt]) warnings.push(`different \\`${opt}\\` option`);\n\t\t\t\tif (currentData._default.toString() !== opts.default.toString()) warnings.push(`different \\`default\\` value`);\n\t\t\t\tif (opts.deep && isShallow(currentData.data)) warnings.push(`mismatching \\`deep\\` option`);\n\t\t\t\tif (warnings.length) {\n\t\t\t\t\tconst caller = getUserCaller();\n\t\t\t\t\tdataDiagnostics.NUXT_E3004({\n\t\t\t\t\t\tkey: key.value,\n\t\t\t\t\t\twarnings: warnings.map((w) => `- ${w}`).join(\"\\n\"),\n\t\t\t\t\t\tsources: caller ? [`${caller.source}:${caller.line}:${caller.column}`] : void 0\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tfunction createInitialFetch() {\n\t\t\t\tconst initialFetchOptions = {\n\t\t\t\t\tcause: \"initial\",\n\t\t\t\t\tdedupe: opts.dedupe\n\t\t\t\t};\n\t\t\t\tconst existing = nuxtApp._asyncData[key.value];\n\t\t\t\tif (!existing?._init) {\n\t\t\t\t\tinitialFetchOptions.cachedData = opts.getCachedData(key.value, nuxtApp, { cause: \"initial\" });\n\t\t\t\t\tnuxtApp._asyncData[key.value] = buildAsyncData(nuxtApp, key.value, _handler, opts, initialFetchOptions.cachedData);\n\t\t\t\t\tnuxtApp._asyncData[key.value]._initialCachedData = initialFetchOptions.cachedData;\n\t\t\t\t} else if (nuxtApp._asyncDataPromises[key.value]) initialFetchOptions.cachedData = existing._initialCachedData;\n\t\t\t\treturn () => nuxtApp._asyncData[key.value].execute(initialFetchOptions);\n\t\t\t}\n\t\t\tconst initialFetch = createInitialFetch();\n\t\t\tconst asyncData = nuxtApp._asyncData[key.value];\n\t\t\tasyncData._deps++;\n\t\t\tconst fetchOnServer = opts.server !== false && nuxtApp.payload.serverRendered;\n\t\t\tconst isWithinVaporComponent = () => {\n\t\t\t\tif (!vapor || getCurrentInstance()) return false;\n\t\t\t\tconst scope = getCurrentScope();\n\t\t\t\treturn !!scope && scope !== nuxtApp._scope;\n\t\t\t};\n\t\t\tif (true && fetchOnServer && opts.immediate) {\n\t\t\t\tconst promise = initialFetch();\n\t\t\t\tif (getCurrentInstance() || isWithinVaporComponent()) onServerPrefetch(() => promise);\n\t\t\t\telse nuxtApp.hook(\"app:created\", async () => {\n\t\t\t\t\tawait promise;\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (false) {\n\t\t\t\tconst instance = getCurrentInstance();\n\t\t\t\tconst inComponentSetup = !!instance || isWithinVaporComponent();\n\t\t\t\tif (instance && fetchOnServer && opts.immediate && !instance.sp) instance.sp = [];\n\t\t\t\tif (false && !nuxtApp.isHydrating && !nuxtApp._processingMiddleware && (!inComponentSetup || instance?.isMounted)) dataDiagnostics.NUXT_E3003();\n\t\t\t\tif (instance && !instance._nuxtOnBeforeMountCbs) {\n\t\t\t\t\tinstance._nuxtOnBeforeMountCbs = [];\n\t\t\t\t\tconst cbs = instance._nuxtOnBeforeMountCbs;\n\t\t\t\t\tonBeforeMount(() => {\n\t\t\t\t\t\tcbs.forEach((cb) => {\n\t\t\t\t\t\t\tcb();\n\t\t\t\t\t\t});\n\t\t\t\t\t\tcbs.splice(0, cbs.length);\n\t\t\t\t\t});\n\t\t\t\t\tonUnmounted(() => cbs.splice(0, cbs.length));\n\t\t\t\t}\n\t\t\t\tconst isWithinClientOnly = inComponentSetup && (instance?._nuxtClientOnly || inject(clientOnlySymbol, false));\n\t\t\t\tconst hasServerData = key.value in nuxtApp.payload.data;\n\t\t\t\tif (fetchOnServer && nuxtApp.isHydrating && (asyncData.error.value || asyncData.data.value !== void 0 && (hasServerData || asyncData._initialCachedData !== void 0))) {\n\t\t\t\t\tif (pendingWhenIdle) asyncData.pending.value = false;\n\t\t\t\t\tasyncData.status.value = asyncData.error.value ? \"error\" : \"success\";\n\t\t\t\t} else if (inComponentSetup && (!isWithinClientOnly && nuxtApp.payload.serverRendered && nuxtApp.isHydrating && (!fetchOnServer || hasServerData) || opts.lazy) && opts.immediate) {\n\t\t\t\t\tif (instance) instance._nuxtOnBeforeMountCbs.push(initialFetch);\n\t\t\t\t\telse onBeforeMount(() => {\n\t\t\t\t\t\tinitialFetch();\n\t\t\t\t\t});\n\t\t\t\t} else if (opts.immediate && asyncData.status.value !== \"success\") initialFetch();\n\t\t\t\tfunction unregister(key) {\n\t\t\t\t\tconst data = nuxtApp._asyncData[key];\n\t\t\t\t\tif (data?._deps) {\n\t\t\t\t\t\tdata._deps--;\n\t\t\t\t\t\tif (data._deps === 0) data?._off();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tconst hasScope = getCurrentScope();\n\t\t\t\tconst noop = () => {};\n\t\t\t\tconst unsubKeyWatcher = isKeyReactive ? watch(key, (newKey, oldKey) => {\n\t\t\t\t\tif ((newKey || oldKey) && newKey !== oldKey) {\n\t\t\t\t\t\tkeyChanging = true;\n\t\t\t\t\t\tconst hadData = nuxtApp._asyncData[oldKey]?.data.value !== void 0;\n\t\t\t\t\t\tconst wasRunning = nuxtApp._asyncDataPromises[oldKey] !== void 0;\n\t\t\t\t\t\tconst initialFetchOptions = {\n\t\t\t\t\t\t\tcause: \"initial\",\n\t\t\t\t\t\t\tdedupe: opts.dedupe\n\t\t\t\t\t\t};\n\t\t\t\t\t\tif (!nuxtApp._asyncData[newKey]?._init) {\n\t\t\t\t\t\t\tconst cachedData = opts.getCachedData(newKey, nuxtApp, { cause: \"initial\" });\n\t\t\t\t\t\t\tinitialFetchOptions.cachedData = cachedData;\n\t\t\t\t\t\t\tconst initialValue = oldKey && hadData && cachedData === void 0 ? nuxtApp._asyncData[oldKey].data.value : cachedData;\n\t\t\t\t\t\t\tnuxtApp._asyncData[newKey] = buildAsyncData(nuxtApp, newKey, _handler, opts, initialValue);\n\t\t\t\t\t\t\tnuxtApp._asyncData[newKey]._initialCachedData = cachedData;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnuxtApp._asyncData[newKey]._deps++;\n\t\t\t\t\t\tif (oldKey) unregister(oldKey);\n\t\t\t\t\t\tif (opts._keyTriggersExecute !== false && (opts.immediate || hadData || wasRunning)) nuxtApp._asyncData[newKey].execute(initialFetchOptions);\n\t\t\t\t\t\tqueuePostFlushCb(() => {\n\t\t\t\t\t\t\tkeyChanging = false;\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}, { flush: \"sync\" }) : noop;\n\t\t\t\tconst unsubParamsWatcher = opts.watch ? watch(opts.watch, () => {\n\t\t\t\t\tif (keyChanging) return;\n\t\t\t\t\tnuxtApp._asyncData[key.value]?._execute({\n\t\t\t\t\t\tcause: \"watch\",\n\t\t\t\t\t\tdedupe: opts.dedupe\n\t\t\t\t\t});\n\t\t\t\t}) : noop;\n\t\t\t\tconst unsubEnabledWatcher = isRef(opts.enabled) || typeof opts.enabled === \"function\" ? watch(() => toValue(opts.enabled), (isEnabled) => {\n\t\t\t\t\tconst entry = nuxtApp._asyncData[key.value];\n\t\t\t\t\tif (isEnabled || !entry || !nuxtApp._asyncDataPromises[key.value]) return;\n\t\t\t\t\tentry._abortController?.abort(new DOMException(\"AsyncData request cancelled by `enabled: false`\", \"AbortError\"));\n\t\t\t\t\tentry._abortController = void 0;\n\t\t\t\t\tdelete nuxtApp._asyncDataPromises[key.value];\n\t\t\t\t\tif (pendingWhenIdle) entry.pending.value = false;\n\t\t\t\t\tentry.status.value = \"idle\";\n\t\t\t\t}) : noop;\n\t\t\t\tif (hasScope) onScopeDispose(() => {\n\t\t\t\t\tunsubKeyWatcher();\n\t\t\t\t\tunsubParamsWatcher();\n\t\t\t\t\tunsubEnabledWatcher();\n\t\t\t\t\tunregister(key.value);\n\t\t\t\t});\n\t\t\t}\n\t\t\tconst asyncReturn = {\n\t\t\t\tdata: writableComputedRef(() => nuxtApp._asyncData[key.value]?.data, !opts.deep),\n\t\t\t\tpending: writableComputedRef(() => nuxtApp._asyncData[key.value]?.pending),\n\t\t\t\tstatus: writableComputedRef(() => nuxtApp._asyncData[key.value]?.status),\n\t\t\t\terror: writableComputedRef(() => nuxtApp._asyncData[key.value]?.error),\n\t\t\t\trefresh: (...args) => {\n\t\t\t\t\tif (!nuxtApp._asyncData[key.value]?._init) return createInitialFetch()();\n\t\t\t\t\treturn nuxtApp._asyncData[key.value].execute(...args);\n\t\t\t\t},\n\t\t\t\texecute: (...args) => asyncReturn.refresh(...args),\n\t\t\t\tclear: () => {\n\t\t\t\t\tconst entry = nuxtApp._asyncData[key.value];\n\t\t\t\t\tif (entry?._abortController) try {\n\t\t\t\t\t\tentry._abortController.abort(new DOMException(\"AsyncData aborted by user.\", \"AbortError\"));\n\t\t\t\t\t} finally {\n\t\t\t\t\t\tentry._abortController = void 0;\n\t\t\t\t\t}\n\t\t\t\t\tclearNuxtDataByKey(nuxtApp, key.value);\n\t\t\t\t}\n\t\t\t};\n\t\t\tconst asyncDataPromise = Promise.resolve(nuxtApp._asyncDataPromises[key.value]).then(() => asyncReturn);\n\t\t\tObject.assign(asyncDataPromise, asyncReturn);\n\t\t\tObject.defineProperties(asyncDataPromise, {\n\t\t\t\tthen: {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tvalue: asyncDataPromise.then.bind(asyncDataPromise)\n\t\t\t\t},\n\t\t\t\tcatch: {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tvalue: asyncDataPromise.catch.bind(asyncDataPromise)\n\t\t\t\t},\n\t\t\t\tfinally: {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tvalue: asyncDataPromise.finally.bind(asyncDataPromise)\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn asyncDataPromise;\n\t\t}\n\t\treturn useAsyncData;\n\t}\n});\nconst useAsyncData = createUseAsyncData.__nuxt_factory();\nconst useLazyAsyncData = createUseAsyncData.__nuxt_factory({\n\tlazy: true,\n\t_functionName: \"useLazyAsyncData\"\n});\nfunction writableComputedRef(getter, shallow = false) {\n\tconst forwardedRef = computed({\n\t\tget() {\n\t\t\treturn getter()?.value;\n\t\t},\n\t\tset(value) {\n\t\t\tconst ref = getter();\n\t\t\tif (ref) ref.value = value;\n\t\t}\n\t});\n\tif (shallow) forwardedRef.__v_isShallow = true;\n\treturn forwardedRef;\n}\nfunction _isAutoKeyNeeded(keyOrFetcher, fetcher) {\n\tif (typeof keyOrFetcher === \"string\") return false;\n\tif (typeof keyOrFetcher === \"object\" && keyOrFetcher !== null) return false;\n\tif (typeof keyOrFetcher === \"function\" && typeof fetcher === \"function\") return false;\n\treturn true;\n}\n/** @since 3.1.0 */\nfunction useNuxtData(key) {\n\tconst nuxtApp = useNuxtApp();\n\tif (!(key in nuxtApp.payload.data)) nuxtApp.payload.data[key] = void 0;\n\tif (nuxtApp._asyncData[key]) {\n\t\tconst data = nuxtApp._asyncData[key];\n\t\tdata._deps++;\n\t\tif (getCurrentScope()) onScopeDispose(() => {\n\t\t\tdata._deps--;\n\t\t\tif (data._deps === 0) data?._off();\n\t\t});\n\t}\n\treturn { data: computed({\n\t\tget() {\n\t\t\treturn nuxtApp._asyncData[key]?.data.value ?? nuxtApp.payload.data[key];\n\t\t},\n\t\tset(value) {\n\t\t\tif (nuxtApp._asyncData[key]) nuxtApp._asyncData[key].data.value = value;\n\t\t\telse nuxtApp.payload.data[key] = value;\n\t\t}\n\t}) };\n}\n/** @since 3.0.0 */\nasync function refreshNuxtData(keys) {\n\tif (true) return Promise.resolve();\n\tconst nuxtApp = useNuxtApp();\n\tif (nuxtApp.isHydrating) await new Promise((resolve) => onNuxtReady(resolve));\n\tconst _keys = keys ? toArray(keys) : void 0;\n\tawait nuxtApp.hooks.callHookParallel(\"app:data:refresh\", _keys);\n}\n/** @since 3.0.0 */\nfunction clearNuxtData(keys) {\n\tconst nuxtApp = useNuxtApp();\n\tconst _allKeys = Object.keys(nuxtApp.payload.data);\n\tconst _keys = !keys ? _allKeys : typeof keys === \"function\" ? _allKeys.filter(keys) : toArray(keys);\n\tfor (const key of _keys) clearNuxtDataByKey(nuxtApp, key);\n}\nfunction clearNuxtDataByKey(nuxtApp, key) {\n\tdelete nuxtApp.payload.data[key];\n\tdelete nuxtApp.payload._errors[key];\n\tif (nuxtApp._asyncData[key]) {\n\t\tnuxtApp._asyncData[key].data.value = unref(nuxtApp._asyncData[key]._default());\n\t\tnuxtApp._asyncData[key].error.value = void 0;\n\t\tif (pendingWhenIdle) nuxtApp._asyncData[key].pending.value = false;\n\t\tnuxtApp._asyncData[key].status.value = \"idle\";\n\t\tnuxtApp._asyncData[key]._initialCachedData = void 0;\n\t}\n\tdelete nuxtApp._asyncDataPromises[key];\n}\nfunction pick(obj, keys) {\n\tconst newObj = {};\n\tfor (const key of keys) newObj[key] = obj[key];\n\treturn newObj;\n}\nfunction buildAsyncData(nuxtApp, key, _handler, options, initialCachedData) {\n\tnuxtApp.payload._errors[key] ??= void 0;\n\tconst hasCustomGetCachedData = options.getCachedData !== getDefaultCachedData;\n\tconst baseHandler = false || !import.meta.prerender || !nuxtApp.ssrContext?.[\"~sharedPrerenderCache\"] ? _handler : (nuxtApp, options) => {\n\t\tconst value = nuxtApp.ssrContext[\"~sharedPrerenderCache\"].get(key);\n\t\tif (value) return value;\n\t\tconst promise = Promise.resolve().then(() => nuxtApp.runWithContext(() => _handler(nuxtApp, options)));\n\t\tnuxtApp.ssrContext[\"~sharedPrerenderCache\"].set(key, promise);\n\t\treturn promise;\n\t};\n\tconst handler = true && tracingChannelNuxt ? (nuxtApp, opts) => traceAsync(\"nuxt.data\", {\n\t\tkey,\n\t\tfunctionName: options._functionName\n\t}, () => Promise.resolve(baseHandler(nuxtApp, opts))) : baseHandler;\n\tconst _ref = options.deep ? ref : shallowRef;\n\tconst hasCachedData = initialCachedData !== void 0;\n\tconst unsubRefreshAsyncData = nuxtApp.hook(\"app:data:refresh\", async (keys) => {\n\t\tif (!keys || keys.includes(key)) await asyncData.execute({ cause: \"refresh:hook\" });\n\t});\n\tconst asyncData = {\n\t\tdata: _ref(hasCachedData ? initialCachedData : options.default()),\n\t\tpending: pendingWhenIdle ? shallowRef(!hasCachedData) : computed(() => asyncData.status.value === \"pending\"),\n\t\terror: toRef(nuxtApp.payload._errors, key),\n\t\tstatus: shallowRef(\"idle\"),\n\t\texecute: (...args) => {\n\t\t\tconst [_opts, newValue = void 0] = args;\n\t\t\tconst opts = _opts && newValue === void 0 && typeof _opts === \"object\" ? _opts : {};\n\t\t\tif (false && newValue !== void 0 && (!_opts || typeof _opts !== \"object\")) dataDiagnostics.NUXT_E3005();\n\t\t\tif (nuxtApp._asyncDataPromises[key]) {\n\t\t\t\tif ((opts.dedupe ?? options.dedupe) === \"defer\") return nuxtApp._asyncDataPromises[key];\n\t\t\t}\n\t\t\tif (granularCachedData || opts.cause === \"initial\" || nuxtApp.isHydrating) {\n\t\t\t\tconst cachedData = \"cachedData\" in opts ? opts.cachedData : options.getCachedData(key, nuxtApp, { cause: opts.cause ?? \"refresh:manual\" });\n\t\t\t\tif (cachedData !== void 0) {\n\t\t\t\t\tif (options.serialize !== false) nuxtApp.payload.data[key] = cachedData;\n\t\t\t\t\tasyncData.data.value = cachedData;\n\t\t\t\t\tasyncData.error.value = void 0;\n\t\t\t\t\tasyncData.status.value = \"success\";\n\t\t\t\t\treturn Promise.resolve(cachedData);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (toValue(options.enabled) === false) return Promise.resolve(asyncData.data.value);\n\t\t\tif (pendingWhenIdle) asyncData.pending.value = true;\n\t\t\tif (asyncData._abortController) asyncData._abortController.abort(new DOMException(\"AsyncData request cancelled by deduplication\", \"AbortError\"));\n\t\t\tasyncData._abortController = new AbortController();\n\t\t\tasyncData.status.value = \"pending\";\n\t\t\tconst cleanupController = new AbortController();\n\t\t\tconst promise = new Promise((resolve, reject) => {\n\t\t\t\ttry {\n\t\t\t\t\tconst timeout = opts.timeout ?? options.timeout;\n\t\t\t\t\tconst mergedSignal = mergeAbortSignals([asyncData._abortController?.signal, opts?.signal], cleanupController.signal, timeout);\n\t\t\t\t\tif (mergedSignal.aborted) {\n\t\t\t\t\t\tconst reason = mergedSignal.reason;\n\t\t\t\t\t\treject(reason instanceof Error ? reason : new DOMException(String(reason ?? \"Aborted\"), \"AbortError\"));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tmergedSignal.addEventListener(\"abort\", () => {\n\t\t\t\t\t\tconst reason = mergedSignal.reason;\n\t\t\t\t\t\treject(reason instanceof Error ? reason : new DOMException(String(reason ?? \"Aborted\"), \"AbortError\"));\n\t\t\t\t\t}, {\n\t\t\t\t\t\tonce: true,\n\t\t\t\t\t\tsignal: cleanupController.signal\n\t\t\t\t\t});\n\t\t\t\t\treturn Promise.resolve(handler(nuxtApp, { signal: mergedSignal })).then(resolve, reject);\n\t\t\t\t} catch (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t}\n\t\t\t}).then(async (_result) => {\n\t\t\t\tif (nuxtApp._asyncDataPromises[key] !== promise) return;\n\t\t\t\tlet result = _result;\n\t\t\t\tif (options.transform) result = await options.transform(_result);\n\t\t\t\tif (options.pick) result = pick(result, options.pick);\n\t\t\t\tif (false && true && typeof result === \"undefined\") {\n\t\t\t\t\tconst caller = getUserCaller();\n\t\t\t\t\tdataDiagnostics.NUXT_E3006({\n\t\t\t\t\t\tfn: options._functionName || \"useAsyncData\",\n\t\t\t\t\t\tsources: caller ? [`${caller.source}:${caller.line}:${caller.column}`] : void 0\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif (options.serialize !== false) nuxtApp.payload.data[key] = result;\n\t\t\t\tasyncData.data.value = result;\n\t\t\t\tasyncData.error.value = void 0;\n\t\t\t\tasyncData.status.value = \"success\";\n\t\t\t}).catch((error) => {\n\t\t\t\tif (nuxtApp._asyncDataPromises[key] !== promise) return nuxtApp._asyncDataPromises[key];\n\t\t\t\tif (asyncData._abortController?.signal.aborted) return nuxtApp._asyncDataPromises[key];\n\t\t\t\tif (typeof DOMException !== \"undefined\" && error instanceof DOMException && error.name === \"AbortError\") {\n\t\t\t\t\tasyncData.status.value = \"idle\";\n\t\t\t\t\treturn nuxtApp._asyncDataPromises[key];\n\t\t\t\t}\n\t\t\t\tasyncData.error.value = createError(error);\n\t\t\t\tasyncData.data.value = unref(options.default());\n\t\t\t\tasyncData.status.value = \"error\";\n\t\t\t}).finally(() => {\n\t\t\t\tcleanupController.abort();\n\t\t\t\tif (nuxtApp._asyncDataPromises[key] === promise) {\n\t\t\t\t\tif (pendingWhenIdle) asyncData.pending.value = false;\n\t\t\t\t\tdelete nuxtApp._asyncDataPromises[key];\n\t\t\t\t}\n\t\t\t});\n\t\t\tnuxtApp._asyncDataPromises[key] = promise;\n\t\t\treturn nuxtApp._asyncDataPromises[key];\n\t\t},\n\t\t_execute: debounceTick((...args) => asyncData.execute(...args)),\n\t\t_default: options.default,\n\t\t_deps: 0,\n\t\t_init: true,\n\t\t_hash: false ? createHash(_handler, options) : void 0,\n\t\t_off: () => {\n\t\t\tunsubRefreshAsyncData();\n\t\t\tif (nuxtApp._asyncData[key]?._init) nuxtApp._asyncData[key]._init = false;\n\t\t\tif (nuxtApp._asyncDataPromises[key]) {\n\t\t\t\tasyncData._abortController?.abort(new DOMException(\"AsyncData request cancelled by unmount\", \"AbortError\"));\n\t\t\t\tdelete nuxtApp._asyncDataPromises[key];\n\t\t\t\tif (asyncData.status.value === \"pending\") asyncData.status.value = \"idle\";\n\t\t\t\tif (pendingWhenIdle) asyncData.pending.value = false;\n\t\t\t}\n\t\t\tif (purgeCachedData && !hasCustomGetCachedData) nextTick(() => {\n\t\t\t\tif (!nuxtApp._asyncData[key]?._init) {\n\t\t\t\t\tclearNuxtDataByKey(nuxtApp, key);\n\t\t\t\t\tasyncData.execute = () => Promise.resolve();\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t};\n\treturn asyncData;\n}\nconst getDefault = () => void 0;\nconst getDefaultCachedData = (key, nuxtApp, ctx) => {\n\tif (nuxtApp.isHydrating) return nuxtApp.payload.data[key];\n\tif (ctx.cause !== \"refresh:manual\" && ctx.cause !== \"refresh:hook\") return nuxtApp.static.data[key];\n};\nfunction createHash(_handler, options) {\n\treturn {\n\t\thandler: hashFunction(_handler),\n\t\ttransform: options.transform ? hashFunction(options.transform) : void 0,\n\t\tpick: options.pick ? hashKey(options.pick) : void 0,\n\t\tgetCachedData: options.getCachedData ? hashFunction(options.getCachedData) : void 0,\n\t\tserialize: String(options.serialize ?? true)\n\t};\n}\nfunction mergeAbortSignals(signals, cleanupSignal, timeout) {\n\tconst list = signals.filter((s) => !!s);\n\tif (typeof timeout === \"number\" && timeout >= 0) {\n\t\tconst timeoutSignal = AbortSignal.timeout?.(timeout);\n\t\tif (timeoutSignal) list.push(timeoutSignal);\n\t}\n\tif (AbortSignal.any) return AbortSignal.any(list);\n\tconst controller = new AbortController();\n\tfor (const sig of list) if (sig.aborted) {\n\t\tconst reason = sig.reason ?? new DOMException(\"Aborted\", \"AbortError\");\n\t\ttry {\n\t\t\tcontroller.abort(reason);\n\t\t} catch {\n\t\t\tcontroller.abort();\n\t\t}\n\t\treturn controller.signal;\n\t}\n\tconst onAbort = () => {\n\t\tconst reason = list.find((s) => s.aborted)?.reason ?? new DOMException(\"Aborted\", \"AbortError\");\n\t\ttry {\n\t\t\tcontroller.abort(reason);\n\t\t} catch {\n\t\t\tcontroller.abort();\n\t\t}\n\t};\n\tfor (const sig of list) sig.addEventListener?.(\"abort\", onAbort, {\n\t\tonce: true,\n\t\tsignal: cleanupSignal\n\t});\n\treturn controller.signal;\n}\n//#endregion\nexport { clearNuxtData, createUseAsyncData, refreshNuxtData, useAsyncData, useLazyAsyncData, useNuxtData };\n","import type { Ref } from 'vue'\nimport type { HookInfo, RouteInfo } from '../../src/types'\nimport { objectPick } from '@antfu/utils'\nimport { $fetch } from 'ofetch'\nimport { computed } from 'vue'\nimport { useClientRouter } from './client'\nimport { rpc } from './rpc'\nimport { useAsyncState } from './utils'\n\nexport function useServerPages() {\n return useAsyncState('getServerPages', () => rpc.getServerPages())\n}\n\nexport function useServerRoutes() {\n return useAsyncState('getServerRoutes', () => rpc.getServerRoutes())\n}\n\nexport function useServerTasks() {\n return useAsyncState('getServerTasks', () => rpc.getServerTasks())\n}\n\nexport function useServerHooks() {\n return useAsyncState('getServerHooks', () => rpc.getServerHooks()) as Ref<HookInfo[] | undefined>\n}\n\nexport function useLayouts() {\n return useAsyncState('getServerLayouts', () => rpc.getServerLayouts())\n}\n\nexport function useAutoImports() {\n return useAsyncState('getAutoImports', () => rpc.getAutoImports())\n}\n\nexport function useStaticAssets() {\n return useAsyncState('getStaticAssets', () => rpc.getStaticAssets())\n}\n\nexport function useServerConfig() {\n return useAsyncState('getServerConfig', () => rpc.getServerConfig())\n}\n\nexport function useServerDebugContext() {\n return useAsyncState('getServerDebugContext', () => rpc.getServerDebugContext())\n}\n\nexport function useServerRuntimeConfig() {\n return useAsyncState('getServerRuntimeConfig', () => rpc.getServerRuntimeConfig())\n}\n\nexport function useModuleOptions() {\n return useAsyncState('getModuleOptions', () => rpc.getModuleOptions())\n}\n\nexport function useServerApp() {\n return useAsyncState('getServerApp', () => rpc.getServerApp())\n}\n\nexport function useCustomTabs() {\n return useAsyncState('getCustomTabs', () => rpc.getCustomTabs())\n}\n\nexport function useAnalyzeBuildInfo() {\n return useAsyncState('getAnalyzeBuildInfo', () => rpc.getAnalyzeBuildInfo())\n}\n\nexport interface VfsData {\n rootDir: string\n entries: {\n id: string\n path: string\n }[]\n}\n\nexport interface VfsFile {\n id: string\n content: string\n}\n\nexport function useVirtualFiles() {\n return useAsyncState('vfs-list', () => $fetch<VfsData>('/_vfs.json', { baseURL: '/', responseType: 'json' }))\n}\n\nexport function useMergedRouteList() {\n const serverPages = useServerPages()\n const router = useClientRouter()\n\n return computed((): RouteInfo[] => {\n return (router.value?.getRoutes() || [])\n .map(i => objectPick(i, ['path', 'name', 'meta', 'props', 'children']))\n .map((i) => {\n return {\n ...serverPages.value?.find(j => j.name && j.name === i.name),\n ...i,\n }\n })\n })\n}\n","import type { Component } from 'nuxt/schema'\nimport type { Ref } from 'vue'\nimport type { AsyncDataOptions } from '#app'\nimport type { ComponentRelationship, ComponentWithRelationships, NormalizedHeadTag, SocialPreviewCard, SocialPreviewResolved } from '~/../src/types'\nimport { useSessionStorage } from '@vueuse/core'\nimport { relative } from 'pathe'\nimport { triggerRef } from 'vue'\nimport { useAsyncData } from '#app/composables/asyncData'\nimport { useNuxtApp } from '#app/nuxt'\nimport { useState } from '#imports'\nimport { useClient } from './client'\nimport { useServerConfig } from './state'\n\nconst NODE_MODULES_RE = /[/\\\\]node_modules[/\\\\]/\nconst PACKAGE_NAME_RE = /^(@[a-z0-9-~][a-z0-9-._~]*\\/)?[a-z0-9-~][a-z0-9-._~]*$/\nconst BACKSLASH_RE = /\\\\/g\nconst NODE_MODULES_PATH_RE = /.*\\/node_modules\\/(.*)$/\n\nexport function isNodeModulePath(path: string) {\n return !!path.match(NODE_MODULES_RE) || isPackageName(path)\n}\n\nexport function isPackageName(name: string) {\n return name[0] === '#' || !!name.match(PACKAGE_NAME_RE)\n}\n\nexport function getModuleNameFromPath(path: string) {\n if (isPackageName(path))\n return path\n const match = path.replace(BACKSLASH_RE, '/').match(NODE_MODULES_PATH_RE)?.[1]\n if (!match)\n return undefined\n if (match.startsWith('@'))\n return match.split('/').slice(0, 2).join('/')\n return match.split('/')[0]\n}\n\nfunction getModuleSubpathFromPath(path: string) {\n const match = path.match(NODE_MODULES_PATH_RE)?.[1]\n if (!match)\n return undefined\n return match\n}\n\n/**\n * The `nuxt` package name itself, as it appears in `node_modules` / package\n * names. Aliased installs (`\"nuxt\": \"npm:nuxt-nightly@5x\"`, the older\n * `nuxt-edge` pre-release channel, ...) physically install under a different\n * package name, so anything that special-cases \"is this Nuxt's own code\"\n * needs to check all of them, not just the literal `'nuxt'` string.\n */\nexport const NUXT_PACKAGE_NAMES = new Set(['nuxt', 'nuxt-nightly', 'nuxt-edge'])\n\nexport function isNuxtPackageName(name: string | undefined) {\n return !!name && NUXT_PACKAGE_NAMES.has(name)\n}\n\nexport function isBuiltInModule(name: string | undefined) {\n if (!name)\n return\n return isNuxtPackageName(name) || ['#app', '#head', 'vue'].includes(name)\n}\n\nexport function parseReadablePath(path: string, root: string) {\n path = path.replace(BACKSLASH_RE, '/')\n if (isPackageName(path)) {\n return {\n moduleName: path,\n path,\n }\n }\n const moduleName = getModuleNameFromPath(path)\n const subpath = getModuleSubpathFromPath(path)\n if (moduleName && subpath) {\n return {\n moduleName,\n path: subpath,\n }\n }\n // Workaround https://github.com/unjs/pathe/issues/113\n try {\n let result = relative(root, path)\n if (!result.startsWith('./') && !result.startsWith('../'))\n result = `./${result}`\n if (result.startsWith('./.nuxt/'))\n result = `#build${result.slice(7)}`\n return { path: result }\n }\n catch {\n return { path }\n }\n}\n\nexport function useAsyncState<T>(key: string, fn: () => Promise<T>, options?: AsyncDataOptions<T>) {\n const nuxt = useNuxtApp()\n const { data } = useAsyncData(key, fn, {\n ...options,\n // Custom getCachedData serves two purposes:\n // 1. Returns previously fetched data from payload.data on remount, so pages render instantly\n // 2. Prevents Nuxt's purgeCachedData from clearing data when the last consumer unmounts\n getCachedData: key => nuxt.payload.data[key] as T,\n })\n return data as Ref<T | null>\n}\n\nexport function getIsMacOS() {\n return typeof navigator !== 'undefined' && navigator.platform.toLowerCase().includes('mac')\n}\n\n// @unocss-include\nconst requestMethodClass: Record<string, string> = {\n get: 'n-green',\n post: 'n-blue',\n put: 'n-orange',\n delete: 'n-red',\n patch: 'n-purple',\n head: 'n-teal',\n default: 'n-gray',\n}\n\nexport function getRequestMethodClass(method: string) {\n return requestMethodClass[method.toLowerCase()] || requestMethodClass.default\n}\n\nexport function getSocialPreviewCard(\n rawTags: NormalizedHeadTag[],\n tags: SocialPreviewCard,\n): SocialPreviewResolved {\n const resolvedTags: { [key: string]: string | undefined } = {}\n\n for (const [key, value] of Object.entries(tags)) {\n for (const tag of value) {\n const tagValue = rawTags.find(item => item.tag === tag.tag && (tag.name ? item.name === tag.name : true))?.value\n if (tagValue) {\n resolvedTags[key] = tagValue\n break\n }\n }\n }\n\n return {\n url: window.location.host,\n ...resolvedTags,\n }\n}\n\nexport function formatDuration(ms: number | string) {\n ms = Number(ms)\n if (Number.isNaN(ms) || ms < 0)\n return '-'\n if (ms < 1)\n return '<1ms'\n if (ms < 1000)\n return `${ms}ms`\n if (ms < 1000 * 60)\n return `${(ms / 1000).toFixed(2)}s`\n return `${(ms / 1000 / 60).toFixed(2)}min`\n}\n\nexport function useSessionState<T>(name: string, initialValue: T) {\n return useState(name, () => {\n return useSessionStorage(name, initialValue, { listenToStorageChanges: false })\n })\n}\n\nexport function getComponentRelationships(component: Component, relationships?: ComponentRelationship[] | null): ComponentWithRelationships {\n const dependencies = relationships\n ?.find(i => i.id === component.filePath)\n ?.deps\n ?.map(i => relationships?.find(j => j.id === i)?.id)\n .filter(Boolean) as string[] | undefined\n const dependents = relationships\n ?.filter(i => i.deps.includes(component.filePath))\n .map(i => i.id)\n\n return {\n component,\n dependencies,\n dependents,\n }\n}\n\nexport function pluralizeByCount(count: number, singular: string, plural = `${singular}s`) {\n return `${count} ${count <= 1 ? singular : plural}`\n}\n\nexport function refreshData() {\n const client = useClient()\n const nuxt = useNuxtApp()\n\n nuxt.hooks.callHookParallel('app:data:refresh', Object.keys(nuxt.payload.data))\n triggerRef(client)\n client.value.revision.value += 1\n}\n\nexport function reloadPage() {\n location.reload()\n}\n\nexport function useNuxtCompatibilityVersion() {\n const config = useServerConfig()\n return config.value?.future.compatibilityVersion\n}\n"],"version":3}
@@ -1 +1 @@
1
- {"file":"virtual-files-BQJM45QE.js","mappings":"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","names":[],"sources":["../../../../../../../../components/docs/virtual-files.md","../../../../../../../../pages/modules/virtual-files.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../pages/modules/virtual-files.vue"],"sourcesContent":["# Virtual Files\n\nVirtual files are generated on the fly to support the conventions of the framework, and to provide a better developer experience.\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createBlock as _createBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent, ssrRenderClass as _ssrRenderClass, ssrInterpolate as _ssrInterpolate, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport type { VfsFile } from '~/composables/state'\nimport Fuse from 'fuse.js'\nimport { computed, ref, watchEffect } from 'vue'\nimport { definePageMeta } from '#imports'\nimport { useVirtualFiles } from '~/composables/state'\nimport { useCurrentVirtualFile } from '~/composables/state-routes'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'virtual-files',\n __ssrInlineRender: true,\n setup(__props) {\n\ndefinePageMeta({\n icon: 'i-carbon-border-none',\n title: 'Virtual Files',\n layout: 'full',\n category: 'advanced',\n})\n\nconst searchString = ref('')\n\nconst data = useVirtualFiles()\n\nconst fileId = useCurrentVirtualFile()\nconst current = ref<VfsFile>()\n\nwatchEffect(() => {\n if (!fileId.value)\n return\n const url = `/_vfs.json/${encodeURIComponent(fileId.value)}`\n fetch(url, {\n headers: {\n accept: 'application/json',\n },\n })\n .then(i => i.json())\n .then(i => current.value = i.current)\n})\n\nfunction toShortPath(path: string) {\n if (!data.value?.rootDir)\n return\n return path.startsWith(data.value?.rootDir)\n ? path.slice(data.value.rootDir.length)\n : path\n}\n\nconst files = computed(() => {\n if (!data.value)\n return []\n return data.value\n .entries\n .filter(i => !i.id.startsWith(`${data.value?.rootDir || ''}/.nuxt/`))\n .sort((a, b) => a.id.localeCompare(b.id))\n})\n\nconst fuse = computed(() => new Fuse(files.value, {\n keys: [\n 'id',\n 'path',\n ],\n}))\n\nconst filteredFiles = computed(() => {\n if (!searchString.value)\n return files.value\n return fuse.value.search(searchString.value).map(i => i.item)\n})\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NSplitPane = _resolveComponent(\"NSplitPane\")!\n const _component_NNavbar = _resolveComponent(\"NNavbar\")!\n const _component_NCodeBlock = _resolveComponent(\"NCodeBlock\")!\n const _component_NPanelGrids = _resolveComponent(\"NPanelGrids\")!\n const _component_NCard = _resolveComponent(\"NCard\")!\n const _component_HelpFab = _resolveComponent(\"HelpFab\")!\n const _component_DocsVirtualFiles = _resolveComponent(\"DocsVirtualFiles\")!\n\n _push(`<!--[-->`)\n _push(_ssrRenderComponent(_component_NSplitPane, {\n class: \"virtual-files\",\n \"storage-key\": \"tab-virtual-files\"\n }, {\n left: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NNavbar, {\n search: searchString.value,\n \"onUpdate:search\": ($event: any) => ((searchString).value = $event),\n \"no-padding\": \"\",\n p3: \"\"\n }, null, _parent, _scopeId))\n _push(`<!--[-->`)\n _ssrRenderList(filteredFiles.value, (f) => {\n _push(`<!--[--><button block w-full select-none truncate px2 py1 text-start text-sm font-mono class=\"${\n _ssrRenderClass(f.id === current.value?.id ? 'text-primary n-bg-active' : 'text-secondary hover:n-bg-hover')\n }\"${\n _scopeId\n }>${\n _ssrInterpolate(toShortPath(f.id))\n }</button><div x-divider${\n _scopeId\n }></div><!--]-->`)\n })\n _push(`<!--]-->`)\n } else {\n return [\n _createVNode(_component_NNavbar, {\n search: searchString.value,\n \"onUpdate:search\": ($event: any) => ((searchString).value = $event),\n \"no-padding\": \"\",\n p3: \"\"\n }, null, 8, [\"search\", \"onUpdate:search\"]),\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(filteredFiles.value, (f) => {\n return (_openBlock(), _createBlock(_Fragment, {\n key: f.id\n }, [\n _createVNode(\"button\", {\n block: \"\",\n \"w-full\": \"\",\n \"select-none\": \"\",\n truncate: \"\",\n px2: \"\",\n py1: \"\",\n \"text-start\": \"\",\n \"text-sm\": \"\",\n \"font-mono\": \"\",\n class: f.id === current.value?.id ? 'text-primary n-bg-active' : 'text-secondary hover:n-bg-hover',\n onClick: ($event: any) => (fileId.value = f.id)\n }, _toDisplayString(toShortPath(f.id)), 11, [\"onClick\"]),\n _createVNode(\"div\", { \"x-divider\": \"\" })\n ], 64))\n }), 128))\n ]\n }\n }),\n right: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n if (current.value?.content) {\n _push(`<div h-full of-hidden flex=\"~ col\"${\n _scopeId\n }><div border=\"b base\" flex-none px4 py2 text-sm op75${\n _scopeId\n }><code${\n _scopeId\n }>${\n _ssrInterpolate(current.value.id)\n }</code></div>`)\n _push(_ssrRenderComponent(_component_NCodeBlock, {\n \"h-full\": \"\",\n \"of-auto\": \"\",\n \"text-sm\": \"\",\n code: current.value.content,\n lang: \"typescript\"\n }, null, _parent, _scopeId))\n _push(`</div>`)\n } else {\n _push(_ssrRenderComponent(_component_NPanelGrids, null, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NCard, {\n px6: \"\",\n py2: \"\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<span op75${_scopeId}>Select a file to start</span>`)\n } else {\n return [\n _createVNode(\"span\", { op75: \"\" }, \"Select a file to start\")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NCard, {\n px6: \"\",\n py2: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(\"span\", { op75: \"\" }, \"Select a file to start\")\n ]),\n _: 1\n })\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n }\n } else {\n return [\n (current.value?.content)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n \"h-full\": \"\",\n \"of-hidden\": \"\",\n flex: \"~ col\"\n }, [\n _createVNode(\"div\", {\n border: \"b base\",\n \"flex-none\": \"\",\n px4: \"\",\n py2: \"\",\n \"text-sm\": \"\",\n op75: \"\"\n }, [\n _createVNode(\"code\", null, _toDisplayString(current.value.id), 1)\n ]),\n _createVNode(_component_NCodeBlock, {\n \"h-full\": \"\",\n \"of-auto\": \"\",\n \"text-sm\": \"\",\n code: current.value.content,\n lang: \"typescript\"\n }, null, 8, [\"code\"])\n ]))\n : (_openBlock(), _createBlock(_component_NPanelGrids, { key: 1 }, {\n default: _withCtx(() => [\n _createVNode(_component_NCard, {\n px6: \"\",\n py2: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(\"span\", { op75: \"\" }, \"Select a file to start\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(_ssrRenderComponent(_component_HelpFab, null, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_DocsVirtualFiles, null, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_DocsVirtualFiles)\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<!--]-->`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { VfsFile } from '~/composables/state'\nimport Fuse from 'fuse.js'\nimport { computed, ref, watchEffect } from 'vue'\nimport { definePageMeta } from '#imports'\nimport { useVirtualFiles } from '~/composables/state'\nimport { useCurrentVirtualFile } from '~/composables/state-routes'\n\ndefinePageMeta({\n icon: 'i-carbon-border-none',\n title: 'Virtual Files',\n layout: 'full',\n category: 'advanced',\n})\n\nconst searchString = ref('')\n\nconst data = useVirtualFiles()\n\nconst fileId = useCurrentVirtualFile()\nconst current = ref<VfsFile>()\n\nwatchEffect(() => {\n if (!fileId.value)\n return\n const url = `/_vfs.json/${encodeURIComponent(fileId.value)}`\n fetch(url, {\n headers: {\n accept: 'application/json',\n },\n })\n .then(i => i.json())\n .then(i => current.value = i.current)\n})\n\nfunction toShortPath(path: string) {\n if (!data.value?.rootDir)\n return\n return path.startsWith(data.value?.rootDir)\n ? path.slice(data.value.rootDir.length)\n : path\n}\n\nconst files = computed(() => {\n if (!data.value)\n return []\n return data.value\n .entries\n .filter(i => !i.id.startsWith(`${data.value?.rootDir || ''}/.nuxt/`))\n .sort((a, b) => a.id.localeCompare(b.id))\n})\n\nconst fuse = computed(() => new Fuse(files.value, {\n keys: [\n 'id',\n 'path',\n ],\n}))\n\nconst filteredFiles = computed(() => {\n if (!searchString.value)\n return files.value\n return fuse.value.search(searchString.value).map(i => i.item)\n})\n</script>\n\n<template>\n <NSplitPane class=\"virtual-files\" storage-key=\"tab-virtual-files\">\n <template #left>\n <NNavbar\n v-model:search=\"searchString\"\n no-padding p3\n />\n <template\n v-for=\"f of filteredFiles\" :key=\"f.id\"\n >\n <button\n block w-full select-none truncate px2 py1 text-start text-sm font-mono\n :class=\"f.id === current?.id ? 'text-primary n-bg-active' : 'text-secondary hover:n-bg-hover'\"\n @click=\"fileId = f.id\"\n >\n {{ toShortPath(f.id) }}\n </button>\n <div x-divider />\n </template>\n </template>\n\n <template #right>\n <div v-if=\"current?.content\" h-full of-hidden flex=\"~ col\">\n <div border=\"b base\" flex-none px4 py2 text-sm op75>\n <code>{{ current.id }}</code>\n </div>\n <NCodeBlock h-full of-auto text-sm :code=\"current.content\" lang=\"typescript\" />\n </div>\n <NPanelGrids v-else>\n <NCard px6 py2>\n <span op75>Select a file to start</span>\n </NCard>\n </NPanelGrids>\n </template>\n </NSplitPane>\n\n <HelpFab>\n <DocsVirtualFiles />\n </HelpFab>\n</template>\n\n<style>\n.virtual-files .shiki {\n padding: 10px;\n background: none !important;\n}\n</style>\n"],"version":3}
1
+ {"file":"virtual-files-DKOje2lN.js","mappings":"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","names":[],"sources":["../../../../../../../../components/docs/virtual-files.md","../../../../../../../../pages/modules/virtual-files.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../pages/modules/virtual-files.vue"],"sourcesContent":["# Virtual Files\n\nVirtual files are generated on the fly to support the conventions of the framework, and to provide a better developer experience.\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, withCtx as _withCtx, createVNode as _createVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createBlock as _createBlock, toDisplayString as _toDisplayString, createCommentVNode as _createCommentVNode } from \"vue\"\nimport { ssrRenderComponent as _ssrRenderComponent, ssrRenderClass as _ssrRenderClass, ssrInterpolate as _ssrInterpolate, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport type { VfsFile } from '~/composables/state'\nimport Fuse from 'fuse.js'\nimport { computed, ref, watchEffect } from 'vue'\nimport { definePageMeta } from '#imports'\nimport { useVirtualFiles } from '~/composables/state'\nimport { useCurrentVirtualFile } from '~/composables/state-routes'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'virtual-files',\n __ssrInlineRender: true,\n setup(__props) {\n\ndefinePageMeta({\n icon: 'i-carbon-border-none',\n title: 'Virtual Files',\n layout: 'full',\n category: 'advanced',\n})\n\nconst searchString = ref('')\n\nconst data = useVirtualFiles()\n\nconst fileId = useCurrentVirtualFile()\nconst current = ref<VfsFile>()\n\nwatchEffect(() => {\n if (!fileId.value)\n return\n const url = `/_vfs.json/${encodeURIComponent(fileId.value)}`\n fetch(url, {\n headers: {\n accept: 'application/json',\n },\n })\n .then(i => i.json())\n .then(i => current.value = i.current)\n})\n\nfunction toShortPath(path: string) {\n if (!data.value?.rootDir)\n return\n return path.startsWith(data.value?.rootDir)\n ? path.slice(data.value.rootDir.length)\n : path\n}\n\nconst files = computed(() => {\n if (!data.value)\n return []\n return data.value\n .entries\n .filter(i => !i.id.startsWith(`${data.value?.rootDir || ''}/.nuxt/`))\n .sort((a, b) => a.id.localeCompare(b.id))\n})\n\nconst fuse = computed(() => new Fuse(files.value, {\n keys: [\n 'id',\n 'path',\n ],\n}))\n\nconst filteredFiles = computed(() => {\n if (!searchString.value)\n return files.value\n return fuse.value.search(searchString.value).map(i => i.item)\n})\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NSplitPane = _resolveComponent(\"NSplitPane\")!\n const _component_NNavbar = _resolveComponent(\"NNavbar\")!\n const _component_NCodeBlock = _resolveComponent(\"NCodeBlock\")!\n const _component_NPanelGrids = _resolveComponent(\"NPanelGrids\")!\n const _component_NCard = _resolveComponent(\"NCard\")!\n const _component_HelpFab = _resolveComponent(\"HelpFab\")!\n const _component_DocsVirtualFiles = _resolveComponent(\"DocsVirtualFiles\")!\n\n _push(`<!--[-->`)\n _push(_ssrRenderComponent(_component_NSplitPane, {\n class: \"virtual-files\",\n \"storage-key\": \"tab-virtual-files\"\n }, {\n left: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NNavbar, {\n search: searchString.value,\n \"onUpdate:search\": ($event: any) => ((searchString).value = $event),\n \"no-padding\": \"\",\n p3: \"\"\n }, null, _parent, _scopeId))\n _push(`<!--[-->`)\n _ssrRenderList(filteredFiles.value, (f) => {\n _push(`<!--[--><button block w-full select-none truncate px2 py1 text-start text-sm font-mono class=\"${\n _ssrRenderClass(f.id === current.value?.id ? 'text-primary n-bg-active' : 'text-secondary hover:n-bg-hover')\n }\"${\n _scopeId\n }>${\n _ssrInterpolate(toShortPath(f.id))\n }</button><div x-divider${\n _scopeId\n }></div><!--]-->`)\n })\n _push(`<!--]-->`)\n } else {\n return [\n _createVNode(_component_NNavbar, {\n search: searchString.value,\n \"onUpdate:search\": ($event: any) => ((searchString).value = $event),\n \"no-padding\": \"\",\n p3: \"\"\n }, null, 8, [\"search\", \"onUpdate:search\"]),\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(filteredFiles.value, (f) => {\n return (_openBlock(), _createBlock(_Fragment, {\n key: f.id\n }, [\n _createVNode(\"button\", {\n block: \"\",\n \"w-full\": \"\",\n \"select-none\": \"\",\n truncate: \"\",\n px2: \"\",\n py1: \"\",\n \"text-start\": \"\",\n \"text-sm\": \"\",\n \"font-mono\": \"\",\n class: f.id === current.value?.id ? 'text-primary n-bg-active' : 'text-secondary hover:n-bg-hover',\n onClick: ($event: any) => (fileId.value = f.id)\n }, _toDisplayString(toShortPath(f.id)), 11, [\"onClick\"]),\n _createVNode(\"div\", { \"x-divider\": \"\" })\n ], 64))\n }), 128))\n ]\n }\n }),\n right: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n if (current.value?.content) {\n _push(`<div h-full of-hidden flex=\"~ col\"${\n _scopeId\n }><div border=\"b base\" flex-none px4 py2 text-sm op75${\n _scopeId\n }><code${\n _scopeId\n }>${\n _ssrInterpolate(current.value.id)\n }</code></div>`)\n _push(_ssrRenderComponent(_component_NCodeBlock, {\n \"h-full\": \"\",\n \"of-auto\": \"\",\n \"text-sm\": \"\",\n code: current.value.content,\n lang: \"typescript\"\n }, null, _parent, _scopeId))\n _push(`</div>`)\n } else {\n _push(_ssrRenderComponent(_component_NPanelGrids, null, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NCard, {\n px6: \"\",\n py2: \"\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<span op75${_scopeId}>Select a file to start</span>`)\n } else {\n return [\n _createVNode(\"span\", { op75: \"\" }, \"Select a file to start\")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NCard, {\n px6: \"\",\n py2: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(\"span\", { op75: \"\" }, \"Select a file to start\")\n ]),\n _: 1\n })\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n }\n } else {\n return [\n (current.value?.content)\n ? (_openBlock(), _createBlock(\"div\", {\n key: 0,\n \"h-full\": \"\",\n \"of-hidden\": \"\",\n flex: \"~ col\"\n }, [\n _createVNode(\"div\", {\n border: \"b base\",\n \"flex-none\": \"\",\n px4: \"\",\n py2: \"\",\n \"text-sm\": \"\",\n op75: \"\"\n }, [\n _createVNode(\"code\", null, _toDisplayString(current.value.id), 1)\n ]),\n _createVNode(_component_NCodeBlock, {\n \"h-full\": \"\",\n \"of-auto\": \"\",\n \"text-sm\": \"\",\n code: current.value.content,\n lang: \"typescript\"\n }, null, 8, [\"code\"])\n ]))\n : (_openBlock(), _createBlock(_component_NPanelGrids, { key: 1 }, {\n default: _withCtx(() => [\n _createVNode(_component_NCard, {\n px6: \"\",\n py2: \"\"\n }, {\n default: _withCtx(() => [\n _createVNode(\"span\", { op75: \"\" }, \"Select a file to start\")\n ]),\n _: 1\n })\n ]),\n _: 1\n }))\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(_ssrRenderComponent(_component_HelpFab, null, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_DocsVirtualFiles, null, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_DocsVirtualFiles)\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<!--]-->`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { VfsFile } from '~/composables/state'\nimport Fuse from 'fuse.js'\nimport { computed, ref, watchEffect } from 'vue'\nimport { definePageMeta } from '#imports'\nimport { useVirtualFiles } from '~/composables/state'\nimport { useCurrentVirtualFile } from '~/composables/state-routes'\n\ndefinePageMeta({\n icon: 'i-carbon-border-none',\n title: 'Virtual Files',\n layout: 'full',\n category: 'advanced',\n})\n\nconst searchString = ref('')\n\nconst data = useVirtualFiles()\n\nconst fileId = useCurrentVirtualFile()\nconst current = ref<VfsFile>()\n\nwatchEffect(() => {\n if (!fileId.value)\n return\n const url = `/_vfs.json/${encodeURIComponent(fileId.value)}`\n fetch(url, {\n headers: {\n accept: 'application/json',\n },\n })\n .then(i => i.json())\n .then(i => current.value = i.current)\n})\n\nfunction toShortPath(path: string) {\n if (!data.value?.rootDir)\n return\n return path.startsWith(data.value?.rootDir)\n ? path.slice(data.value.rootDir.length)\n : path\n}\n\nconst files = computed(() => {\n if (!data.value)\n return []\n return data.value\n .entries\n .filter(i => !i.id.startsWith(`${data.value?.rootDir || ''}/.nuxt/`))\n .sort((a, b) => a.id.localeCompare(b.id))\n})\n\nconst fuse = computed(() => new Fuse(files.value, {\n keys: [\n 'id',\n 'path',\n ],\n}))\n\nconst filteredFiles = computed(() => {\n if (!searchString.value)\n return files.value\n return fuse.value.search(searchString.value).map(i => i.item)\n})\n</script>\n\n<template>\n <NSplitPane class=\"virtual-files\" storage-key=\"tab-virtual-files\">\n <template #left>\n <NNavbar\n v-model:search=\"searchString\"\n no-padding p3\n />\n <template\n v-for=\"f of filteredFiles\" :key=\"f.id\"\n >\n <button\n block w-full select-none truncate px2 py1 text-start text-sm font-mono\n :class=\"f.id === current?.id ? 'text-primary n-bg-active' : 'text-secondary hover:n-bg-hover'\"\n @click=\"fileId = f.id\"\n >\n {{ toShortPath(f.id) }}\n </button>\n <div x-divider />\n </template>\n </template>\n\n <template #right>\n <div v-if=\"current?.content\" h-full of-hidden flex=\"~ col\">\n <div border=\"b base\" flex-none px4 py2 text-sm op75>\n <code>{{ current.id }}</code>\n </div>\n <NCodeBlock h-full of-auto text-sm :code=\"current.content\" lang=\"typescript\" />\n </div>\n <NPanelGrids v-else>\n <NCard px6 py2>\n <span op75>Select a file to start</span>\n </NCard>\n </NPanelGrids>\n </template>\n </NSplitPane>\n\n <HelpFab>\n <DocsVirtualFiles />\n </HelpFab>\n</template>\n\n<style>\n.virtual-files .shiki {\n padding: 10px;\n background: none !important;\n}\n</style>\n"],"version":3}
@@ -0,0 +1 @@
1
+ {"file":"virtual_nuxt_node_modules_.cache_nuxt_.nuxt_fetch.server-pxhz0pzP.js","mappings":";;;;AAEA,IAAM,qBAAqB,iBAAiB,CAAC,CAAC;AAC9C,IAAa,gBAAgB,aAAa,CAAC,CAAC;;;ACA5C,IAAI,CAAC,WAAW,QACd,WAAW,SAAS,YAAY;CAC9B;CACA,UAAU,EAAE,SAAS,QAAQ,EAAE;AACjC,CAAC;AAEH,IAAaA,WAAS,WAAW","names":["$fetch"],"sources":["../../../../../../../../../virtual:nuxt:node_modules%2F.cache%2Fnuxt%2F.nuxt%2Fpaths.mjs","../../../../../../../../../virtual:nuxt:node_modules%2F.cache%2Fnuxt%2F.nuxt%2Ffetch.server.mjs"],"sourcesContent":["import { joinRelativeURL } from \"/home/runner/work/devtools/devtools/node_modules/.pnpm/ufo@1.6.4/node_modules/ufo/dist/index.mjs\"\nimport { useRuntimeConfig } from \"nitro/runtime-config\"\nconst getAppConfig = () => useRuntimeConfig().app\nexport const baseURL = () => getAppConfig().baseURL\nexport const buildAssetsDir = () => getAppConfig().buildAssetsDir\nexport const buildAssetsURL = (...path) => joinRelativeURL(publicAssetsURL(), buildAssetsDir(), ...path)\nexport const publicAssetsURL = (...path) => {\n const appConfig = getAppConfig()\n const publicBase = appConfig.cdnURL || appConfig.baseURL\n return path.length ? joinRelativeURL(publicBase, ...path) : publicBase\n}\nif (import.meta.client) {\n globalThis.__buildAssetsURL = buildAssetsURL\n globalThis.__publicAssetsURL = publicAssetsURL\n}","import { createFetch } from 'ofetch'\nimport { baseURL } from '#internal/nuxt/paths'\nimport { fetch } from \"nitro\"\nif (!globalThis.$fetch) {\n globalThis.$fetch = createFetch({\n fetch,\n defaults: { baseURL: baseURL() }\n })\n}\nexport const $fetch = globalThis.$fetch"],"version":3}
@@ -9,6 +9,7 @@ import './module-main.mjs';
9
9
  import 'node:os';
10
10
  import 'consola/utils';
11
11
  import 'devframe/utils/serve-static';
12
+ import 'verkit';
12
13
  import 'vite';
13
14
  import '../shared/devtools.BNZC-DT8.mjs';
14
15
  import '../dirs.mjs';
@@ -30,7 +31,6 @@ import 'node:assert';
30
31
  import 'node:v8';
31
32
  import 'magicast';
32
33
  import 'magicast/helpers';
33
- import 'verkit';
34
34
  import '@vitejs/devtools-kit/constants';
35
35
  import 'unstorage';
36
36
 
@@ -1,15 +1,16 @@
1
1
  import os, { homedir } from 'node:os';
2
2
  import { onDevtoolsReady, deprecate, registerHostDiagnostics, NUXT_DEVTOOLS_GROUP_ID } from '@nuxt/devtools-kit';
3
- import { logger, useNuxt, extendViteConfig, addPlugin, addVitePlugin, addTemplate, addImports } from '@nuxt/kit';
3
+ import { logger, useNuxt, addPlugin, addVitePlugin, addTemplate, extendViteConfig, addImports } from '@nuxt/kit';
4
4
  import { colors } from 'consola/utils';
5
5
  import { serveStaticNodeMiddleware } from 'devframe/utils/serve-static';
6
6
  import { join, dirname, resolve, isAbsolute } from 'pathe';
7
- import { searchForWorkspaceRoot } from 'vite';
7
+ import { isLess, isGreaterOrEqual } from 'verkit';
8
+ import { version as version$2, searchForWorkspaceRoot } from 'vite';
8
9
  import { d as defaultAllowedExtensions, c as createDefaultTabOptions, s as setServerTasksEnabledByDefault } from '../shared/devtools.BNZC-DT8.mjs';
9
10
  import { runtimeDir, packageDir } from '../dirs.mjs';
10
11
  import { execFile } from 'node:child_process';
11
- import fs$1, { promises, statSync, realpathSync, readFileSync, existsSync, accessSync, constants } from 'node:fs';
12
- import fs from 'node:fs/promises';
12
+ import fs, { promises, statSync, realpathSync, readFileSync, existsSync, accessSync, constants } from 'node:fs';
13
+ import fsp from 'node:fs/promises';
13
14
  import { promisify, format, inspect } from 'node:util';
14
15
  import { glob } from 'tinyglobby';
15
16
  import path, { relative, parse, dirname as dirname$1 } from 'node:path';
@@ -27,11 +28,10 @@ import v8 from 'node:v8';
27
28
  import { resolveModule, getPackageInfo } from 'local-pkg';
28
29
  import { parseModule } from 'magicast';
29
30
  import { getDefaultExportOptions, addNuxtModule } from 'magicast/helpers';
30
- import { isLess } from 'verkit';
31
31
  import { DEVTOOLS_TERMINALS_DOCK_ID } from '@vitejs/devtools-kit/constants';
32
32
  import { normalizeBaseKey, normalizeKey, createStorage, builtinDrivers } from 'unstorage';
33
33
 
34
- const version$1 = "4.0.0-alpha.17";
34
+ const version$1 = "4.0.0-alpha.19";
35
35
  const peerDependencies = {
36
36
  "@nuxt/devtools-assets": "workspace:*",
37
37
  "@nuxt/kit": "^4.0.0-0 || ^5.0.0-0",
@@ -124,10 +124,10 @@ function setupAnalyzeBuildRPC(ctx) {
124
124
  absolute: true
125
125
  });
126
126
  for (const file of files2) {
127
- const slug = JSON.parse(await fs.readFile(file, "utf-8")).slug;
127
+ const slug = JSON.parse(await fsp.readFile(file, "utf-8")).slug;
128
128
  const dir2 = dirname(file);
129
- await fs.mkdir(devtoolsAnalyzeDir, { recursive: true });
130
- await fs.rename(dir2, join(devtoolsAnalyzeDir, slug));
129
+ await fsp.mkdir(devtoolsAnalyzeDir, { recursive: true });
130
+ await fsp.rename(dir2, join(devtoolsAnalyzeDir, slug));
131
131
  }
132
132
  }
133
133
  const files = await glob(["**/meta.json"], {
@@ -137,13 +137,13 @@ function setupAnalyzeBuildRPC(ctx) {
137
137
  });
138
138
  builds = await Promise.all(files.map(async (file) => {
139
139
  const dir = dirname(file);
140
- const json = JSON.parse(await fs.readFile(file, "utf-8"));
140
+ const json = JSON.parse(await fsp.readFile(file, "utf-8"));
141
141
  return {
142
142
  ...json,
143
143
  features: {
144
- bundleClient: fs$1.existsSync(join(dir, "client.html")),
145
- bundleNitro: fs$1.existsSync(join(dir, "nitro.html")),
146
- viteInspect: fs$1.existsSync(join(dir, ".vite-inspect"))
144
+ bundleClient: fs.existsSync(join(dir, "client.html")),
145
+ bundleNitro: fs.existsSync(join(dir, "nitro.html")),
146
+ viteInspect: fs.existsSync(join(dir, ".vite-inspect"))
147
147
  }
148
148
  };
149
149
  }));
@@ -179,10 +179,10 @@ function setupAnalyzeBuildRPC(ctx) {
179
179
  },
180
180
  async clearAnalyzeBuilds(names) {
181
181
  if (!names) {
182
- await fs.rm(devtoolsAnalyzeDir, { recursive: true, force: true });
182
+ await fsp.rm(devtoolsAnalyzeDir, { recursive: true, force: true });
183
183
  } else {
184
184
  const targets = builds.filter((build) => names.includes(build.name));
185
- await Promise.all(targets.map((target) => fs.rm(join(devtoolsAnalyzeDir, target.slug), { recursive: true, force: true })));
185
+ await Promise.all(targets.map((target) => fsp.rm(join(devtoolsAnalyzeDir, target.slug), { recursive: true, force: true })));
186
186
  }
187
187
  initalized = readBuildInfo();
188
188
  refresh("getAnalyzeBuildInfo");
@@ -228,7 +228,7 @@ function setupAssetsRPC({ nuxt, refresh, options }) {
228
228
  const filePath = resolve(layerDir, path);
229
229
  if (!filePath.startsWith(layerDir))
230
230
  continue;
231
- const stat = await fs.lstat(filePath);
231
+ const stat = await fsp.lstat(filePath);
232
232
  const fullPath = join(baseURL, path);
233
233
  if (!uniquePaths.has(fullPath)) {
234
234
  cache.push({
@@ -254,7 +254,7 @@ function setupAssetsRPC({ nuxt, refresh, options }) {
254
254
  if (_imageMetaCache.has(filepath))
255
255
  return _imageMetaCache.get(filepath);
256
256
  try {
257
- const meta = imageMeta(await fs.readFile(filepath));
257
+ const meta = imageMeta(await fsp.readFile(filepath));
258
258
  _imageMetaCache.set(filepath, meta);
259
259
  return meta;
260
260
  } catch (e) {
@@ -265,7 +265,7 @@ function setupAssetsRPC({ nuxt, refresh, options }) {
265
265
  },
266
266
  async getTextAssetContent(filepath, limit = 300) {
267
267
  try {
268
- const content = await fs.readFile(filepath, "utf-8");
268
+ const content = await fsp.readFile(filepath, "utf-8");
269
269
  return content.slice(0, limit);
270
270
  } catch (e) {
271
271
  console.error(e);
@@ -273,11 +273,14 @@ function setupAssetsRPC({ nuxt, refresh, options }) {
273
273
  }
274
274
  },
275
275
  async writeStaticAssets(files, folder) {
276
- const baseDir = resolve(nuxt.options.srcDir, nuxt.options.dir.public + folder);
276
+ const baseDir = resolve(publicDir, folder.replace(/^[/\\]+/, ""));
277
+ if (baseDir !== publicDir && !baseDir.startsWith(`${publicDir}/`))
278
+ throw new Error(`[Nuxt DevTools] Folder ${folder} is not allowed to upload, it's outside of the public directory`);
279
+ const realPublicDir = await realpathOfNearestAncestor(publicDir);
277
280
  return await Promise.all(
278
281
  files.map(async ({ path, content, encoding, override }) => {
279
- let finalPath = resolve(baseDir, path);
280
- if (!finalPath.startsWith(baseDir))
282
+ let finalPath = resolve(baseDir, path.replace(/^[/\\]+/, ""));
283
+ if (finalPath !== baseDir && !finalPath.startsWith(`${baseDir}/`))
281
284
  throw new Error(`[Nuxt DevTools] File ${path} is not allowed to upload, it's outside of the public directory`);
282
285
  const { ext } = parse(finalPath);
283
286
  if (extensions !== "*") {
@@ -285,18 +288,24 @@ function setupAssetsRPC({ nuxt, refresh, options }) {
285
288
  throw new Error(`[Nuxt DevTools] File extension ${ext} is not allowed to upload, allowed extensions are: ${extensions.join(", ")}
286
289
  You can configure it in Nuxt config at \`devtools.assets.uploadExtensions\`.`);
287
290
  }
291
+ const realParentDir = await realpathOfNearestAncestor(dirname(finalPath));
292
+ if (realParentDir !== realPublicDir && !realParentDir.startsWith(`${realPublicDir}/`))
293
+ throw new Error(`[Nuxt DevTools] File ${path} is not allowed to upload, it's outside of the public directory`);
294
+ const targetStat = await fsp.lstat(finalPath).catch(() => void 0);
295
+ if (targetStat?.isSymbolicLink())
296
+ throw new Error(`[Nuxt DevTools] File ${path} is not allowed to upload, it's a symbolic link`);
288
297
  if (!override) {
289
298
  try {
290
- await fs.stat(finalPath);
299
+ await fsp.stat(finalPath);
291
300
  const base = finalPath.slice(0, finalPath.length - ext.length - 1);
292
301
  let i = 1;
293
- while (await fs.access(`${base}-${i}.${ext}`).then(() => true).catch(() => false))
302
+ while (await fsp.access(`${base}-${i}.${ext}`).then(() => true).catch(() => false))
294
303
  i++;
295
304
  finalPath = `${base}-${i}.${ext}`;
296
305
  } catch {
297
306
  }
298
307
  }
299
- await fs.writeFile(finalPath, content, {
308
+ await fsp.writeFile(finalPath, content, {
300
309
  encoding: encoding ?? "utf-8"
301
310
  });
302
311
  return finalPath;
@@ -304,16 +313,26 @@ You can configure it in Nuxt config at \`devtools.assets.uploadExtensions\`.`);
304
313
  );
305
314
  },
306
315
  async deleteStaticAsset(path) {
307
- return await fs.unlink(path);
316
+ return await fsp.unlink(path);
308
317
  },
309
318
  async renameStaticAsset(oldPath, newPath) {
310
319
  const exist = cache?.find((asset) => asset.filePath === newPath);
311
320
  if (exist)
312
321
  throw new Error(`[Nuxt DevTools] File ${newPath} already exists, failed to rename`);
313
- return await fs.rename(oldPath, newPath);
322
+ return await fsp.rename(oldPath, newPath);
314
323
  }
315
324
  };
316
325
  }
326
+ async function realpathOfNearestAncestor(dir) {
327
+ try {
328
+ return await fsp.realpath(dir);
329
+ } catch {
330
+ const parent = dirname(dir);
331
+ if (parent === dir)
332
+ return dir;
333
+ return realpathOfNearestAncestor(parent);
334
+ }
335
+ }
317
336
  const reImage = /\.(?:png|jpe?g|jxl|gif|svg|webp|avif|ico|bmp|tiff?)$/i;
318
337
  const reVideo = /\.(?:mp4|webm|ogv|mov|avi|flv|wmv|mpg|mpeg|mkv|3gp|3g2|ts|mts|m2ts|vob|ogm|ogx|rm|rmvb|asf|amv|divx|m4v|svi|viv|f4v|f4p|f4a|f4b)$/i;
319
338
  const reAudio = /\.(?:mp3|wav|ogg|flac|aac|wma|alac|ape|ac3|dts|tta|opus|amr|aiff|au|mid|midi|ra|rm|wv|weba|dss|spx|vox|tak|dsf|dff|dsd|cda)$/i;
@@ -7470,7 +7489,7 @@ function read(jsonPath, {base, specifier}) {
7470
7489
  let string;
7471
7490
 
7472
7491
  try {
7473
- string = fs$1.readFileSync(path.toNamespacedPath(jsonPath), 'utf8');
7492
+ string = fs.readFileSync(path.toNamespacedPath(jsonPath), 'utf8');
7474
7493
  } catch (error) {
7475
7494
  const exception = /** @type {ErrnoException} */ (error);
7476
7495
 
@@ -10282,7 +10301,7 @@ async function readLocalOptions(defaults, options) {
10282
10301
  try {
10283
10302
  const options2 = {
10284
10303
  ...defaults,
10285
- ...JSON.parse(await fs.readFile(filePath, "utf-8")).settings || {}
10304
+ ...JSON.parse(await fsp.readFile(filePath, "utf-8")).settings || {}
10286
10305
  };
10287
10306
  return options2;
10288
10307
  } catch (e) {
@@ -10310,12 +10329,12 @@ function getOptionsFilepath(options) {
10310
10329
  async function clearLocalOptions(options) {
10311
10330
  const { filePath } = getOptionsFilepath(options);
10312
10331
  if (existsSync(filePath))
10313
- await fs.unlink(filePath);
10332
+ await fsp.unlink(filePath);
10314
10333
  }
10315
10334
  async function writeLocalOptions(settings, options) {
10316
10335
  const { filePath, hashedKey } = getOptionsFilepath(options);
10317
- await fs.mkdir(dirname$1(filePath), { recursive: true });
10318
- await fs.writeFile(
10336
+ await fsp.mkdir(dirname$1(filePath), { recursive: true });
10337
+ await fsp.writeFile(
10319
10338
  filePath,
10320
10339
  JSON.stringify(
10321
10340
  {
@@ -10590,12 +10609,12 @@ const route = useRoute()
10590
10609
  </div>
10591
10610
  </template>
10592
10611
  `;
10593
- await fs.mkdir(dirname(pathPageIndex), { recursive: true });
10594
- await fs.writeFile(pathPageIndex, pagesIndexTemplate, "utf-8");
10595
- let appContent = existsSync(pathApp) ? await fs.readFile(pathApp, "utf-8") : void 0;
10612
+ await fsp.mkdir(dirname(pathPageIndex), { recursive: true });
10613
+ await fsp.writeFile(pathPageIndex, pagesIndexTemplate, "utf-8");
10614
+ let appContent = existsSync(pathApp) ? await fsp.readFile(pathApp, "utf-8") : void 0;
10596
10615
  if (appContent && !appContent.includes("<NuxtPage")) {
10597
10616
  appContent = appContent.replace("</template>", " <NuxtPage />\n</template>").replace(NUXT_WELCOME_RE, "");
10598
- await fs.writeFile(pathApp, appContent, "utf-8");
10617
+ await fsp.writeFile(pathApp, appContent, "utf-8");
10599
10618
  }
10600
10619
  logger.success("Routing creation completed");
10601
10620
  },
@@ -10704,7 +10723,7 @@ const INSTALL_METADATA = {
10704
10723
 
10705
10724
  async function pathExists(path2, type) {
10706
10725
  try {
10707
- const stat = await fs.stat(path2);
10726
+ const stat = await fsp.stat(path2);
10708
10727
  return type === "file" ? stat.isFile() : stat.isDirectory();
10709
10728
  } catch {
10710
10729
  return false;
@@ -10795,7 +10814,7 @@ function getNameAndVer(pkg) {
10795
10814
  }
10796
10815
  async function handlePackageManager(filepath, options) {
10797
10816
  try {
10798
- const content = await fs.readFile(filepath, "utf8");
10817
+ const content = await fsp.readFile(filepath, "utf8");
10799
10818
  const pkg = options.packageJsonParser ? await options.packageJsonParser(content, filepath) : JSON.parse(content);
10800
10819
  let agent;
10801
10820
  const nameAndVer = getNameAndVer(pkg);
@@ -11473,7 +11492,7 @@ function setupNpmRPC(ctx) {
11473
11492
  const commands = await getNpmCommand("install", name, { dev: true });
11474
11493
  const filepath = nuxt.options._nuxtConfigFile;
11475
11494
  let source = latestGenerated;
11476
- source ??= await fs.readFile(filepath, "utf-8");
11495
+ source ??= await fsp.readFile(filepath, "utf-8");
11477
11496
  const generated = await magicastGuard(async () => {
11478
11497
  const mod = parseModule(source, { sourceFileName: filepath });
11479
11498
  addNuxtModule(mod, name);
@@ -11514,7 +11533,7 @@ function setupNpmRPC(ctx) {
11514
11533
  });
11515
11534
  if (installSet.size === 0) {
11516
11535
  latestGenerated = null;
11517
- await fs.writeFile(filepath, generated, "utf-8");
11536
+ await fsp.writeFile(filepath, generated, "utf-8");
11518
11537
  }
11519
11538
  }
11520
11539
  return {
@@ -11527,7 +11546,7 @@ function setupNpmRPC(ctx) {
11527
11546
  async uninstallNuxtModule(name, dry = true, sessionId) {
11528
11547
  const commands = await getNpmCommand("uninstall", name);
11529
11548
  const filepath = nuxt.options._nuxtConfigFile;
11530
- const source = await fs.readFile(filepath, "utf-8");
11549
+ const source = await fsp.readFile(filepath, "utf-8");
11531
11550
  const generated = await magicastGuard(async () => {
11532
11551
  return removeNuxtModuleFromCode(source, name, filepath);
11533
11552
  });
@@ -11561,7 +11580,7 @@ function setupNpmRPC(ctx) {
11561
11580
  category: "module",
11562
11581
  notify: true
11563
11582
  });
11564
- await fs.writeFile(filepath, generated, "utf-8");
11583
+ await fsp.writeFile(filepath, generated, "utf-8");
11565
11584
  }
11566
11585
  return {
11567
11586
  configOriginal: source,
@@ -11835,7 +11854,7 @@ function setupTimelineRPC({ nuxt }) {
11835
11854
  return {
11836
11855
  async enableTimeline(dry) {
11837
11856
  const filepath = nuxt.options._nuxtConfigFile;
11838
- const source = await fs.readFile(filepath, "utf-8");
11857
+ const source = await fsp.readFile(filepath, "utf-8");
11839
11858
  const generated = await magicastGuard(async () => {
11840
11859
  const mod = parseModule(source, { sourceFileName: filepath });
11841
11860
  const options = getDefaultExportOptions(mod);
@@ -11845,7 +11864,7 @@ function setupTimelineRPC({ nuxt }) {
11845
11864
  return mod.generate().code;
11846
11865
  }, "\nYou can enable timeline manually by adding `devtools: { timeline: { enabled: true } }`");
11847
11866
  if (!dry) {
11848
- await fs.writeFile(filepath, generated, "utf-8");
11867
+ await fsp.writeFile(filepath, generated, "utf-8");
11849
11868
  await nuxt.callHook("restart", { hard: true });
11850
11869
  }
11851
11870
  return [source, generated];
@@ -12033,10 +12052,8 @@ async function enableModule(options, nuxt) {
12033
12052
  }
12034
12053
  await nuxt.callHook("devtools:before");
12035
12054
  if (options.disableAuthorization) {
12036
- extendViteConfig((config) => {
12037
- const devtoolsConfig = config.devtools ||= {};
12038
- if (devtoolsConfig.clientAuth === void 0)
12039
- devtoolsConfig.clientAuth = false;
12055
+ extendViteDevToolsConfig((devtools) => {
12056
+ devtools.clientAuth ??= false;
12040
12057
  });
12041
12058
  }
12042
12059
  nuxt.options.imports.collectMeta = true;
@@ -12072,20 +12089,25 @@ async function enableModule(options, nuxt) {
12072
12089
  if (listener?.url)
12073
12090
  publicDevServerOrigin = new URL(listener.url).origin;
12074
12091
  });
12075
- const DevTools = await import('@vitejs/devtools').then((r) => r.DevTools({
12076
- branding: {
12077
- productName: "Nuxt DevTools",
12078
- tagline: "DevTools for Nuxt",
12079
- primaryColor: "#099e61",
12080
- logo: "https://nuxt.com/assets/design-kit/icon-green.svg",
12081
- wordmark: {
12082
- light: "https://cdn.jsdelivr.net/gh/nuxt/devtools@main/assets/nuxt-devtools-light.svg",
12083
- dark: "https://cdn.jsdelivr.net/gh/nuxt/devtools@main/assets/nuxt-devtools-dark.svg"
12084
- },
12085
- windowTitle: "Nuxt DevTools"
12086
- }
12087
- }));
12088
- addVitePlugin(DevTools);
12092
+ const branding = {
12093
+ productName: "Nuxt DevTools",
12094
+ tagline: "DevTools for Nuxt",
12095
+ primaryColor: "#099e61",
12096
+ logo: "https://nuxt.com/assets/design-kit/icon-green.svg",
12097
+ wordmark: {
12098
+ light: "https://cdn.jsdelivr.net/gh/nuxt/devtools@main/assets/nuxt-devtools-light.svg",
12099
+ dark: "https://cdn.jsdelivr.net/gh/nuxt/devtools@main/assets/nuxt-devtools-dark.svg"
12100
+ },
12101
+ windowTitle: "Nuxt DevTools"
12102
+ };
12103
+ if (isGreaterOrEqual(version$2, "8.3.0")) {
12104
+ extendViteDevToolsConfig((devtools) => {
12105
+ devtools.branding ??= branding;
12106
+ });
12107
+ } else {
12108
+ const DevTools = await import('@vitejs/devtools').then((r) => r.DevTools({ branding }));
12109
+ addVitePlugin(DevTools);
12110
+ }
12089
12111
  let connectDevToolsKit;
12090
12112
  addVitePlugin(defineViteDevToolsPlugin({
12091
12113
  name: "nuxt:devtools",
@@ -12251,6 +12273,15 @@ window.__NUXT_DEVTOOLS_TIME_METRIC__.appInit = Date.now()
12251
12273
  function defineViteDevToolsPlugin(plugin) {
12252
12274
  return plugin;
12253
12275
  }
12276
+ function extendViteDevToolsConfig(extend) {
12277
+ extendViteConfig((config) => {
12278
+ if (config.devtools === false)
12279
+ return;
12280
+ const devtools = typeof config.devtools === "object" ? config.devtools : {};
12281
+ extend(devtools);
12282
+ config.devtools = devtools;
12283
+ });
12284
+ }
12254
12285
 
12255
12286
  const moduleMain = {
12256
12287
  __proto__: null,