@nuxt/devtools 4.0.0-alpha.18 → 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 (64) hide show
  1. package/dist/_nuxt/{CodeDiff-C5IA82Lq.js.map.json → CodeDiff-BhzZ6fTd.js.map.json} +1 -1
  2. package/dist/_nuxt/{CodeSnippets-iUZQ267m.js.map.json → CodeSnippets-C7LxVstU.js.map.json} +1 -1
  3. package/dist/_nuxt/{ComposableItem-K51Uhl0G.js.map.json → ComposableItem-C0rRVuVk.js.map.json} +1 -1
  4. package/dist/_nuxt/{DataSchemaButton-DdHHdnES.js.map.json → DataSchemaButton-D-t7Fd9O.js.map.json} +1 -1
  5. package/dist/_nuxt/{DataSchemaDrawer-2qqeTeF6.js.map.json → DataSchemaDrawer-CRqKi4Gs.js.map.json} +1 -1
  6. package/dist/_nuxt/{FilepathItem-D6jrZnIo.js.map.json → FilepathItem-QhFtdBo3.js.map.json} +1 -1
  7. package/dist/_nuxt/{HelpFab-xcWoP6o_.js.map.json → HelpFab-DsqK9feu.js.map.json} +1 -1
  8. package/dist/_nuxt/{LaunchPage-DVRrHA9i.js.map.json → LaunchPage-DvnAdXoI.js.map.json} +1 -1
  9. package/dist/_nuxt/{NCheckbox-Cq1GuyrF.js.map.json → NCheckbox-C4hTNEJ1.js.map.json} +1 -1
  10. package/dist/_nuxt/{NDrawer-C_ZAB3z9.js.map.json → NDrawer-CkklqKLr.js.map.json} +1 -1
  11. package/dist/_nuxt/{NDropdown-CzJi2B9y.js.map.json → NDropdown-CgrUsKt7.js.map.json} +1 -1
  12. package/dist/_nuxt/{NIcon-B-t2-q1r.js.map.json → NIcon-50gk2nbO.js.map.json} +1 -1
  13. package/dist/_nuxt/{NLink-DIWpT2C-.js.map.json → NLink-CatISrot.js.map.json} +1 -1
  14. package/dist/_nuxt/{NNavbar-BShfBHAc.js.map.json → NNavbar-Du6Evn0c.js.map.json} +1 -1
  15. package/dist/_nuxt/{NSectionBlock-Cm4pPEIM.js.map.json → NSectionBlock-CWogkb2Y.js.map.json} +1 -1
  16. package/dist/_nuxt/{NSelect-9Nk3v_sQ.js.map.json → NSelect-C1Q6pEoo.js.map.json} +1 -1
  17. package/dist/_nuxt/{NSelectTabs-D8amX2yN.js.map.json → NSelectTabs-ccruddjj.js.map.json} +1 -1
  18. package/dist/_nuxt/{NSplitPane-CWyIovAp.js.map.json → NSplitPane-CtaObqWQ.js.map.json} +1 -1
  19. package/dist/_nuxt/{NTip-BVi1j0Ir.js.map.json → NTip-DdMJ2p97.js.map.json} +1 -1
  20. package/dist/_nuxt/{ServerRouteInputs-lclUilqu.js.map.json → ServerRouteInputs-Y1oZjFFT.js.map.json} +1 -1
  21. package/dist/_nuxt/{StacktraceList-BUhKgrAv.js.map.json → StacktraceList-c-F2IS3F.js.map.json} +1 -1
  22. package/dist/_nuxt/{StateEditor-D_NCPzZq.js.map.json → StateEditor-CDR7gMTz.js.map.json} +1 -1
  23. package/dist/_nuxt/{__blank-BgoalQAL.js.map.json → __blank-C9tG8tKE.js.map.json} +1 -1
  24. package/dist/_nuxt/{analyze-build-DSk_N3wx.js.map.json → analyze-build-BqtehgeE.js.map.json} +1 -1
  25. package/dist/_nuxt/{assets-6seYEHqs.js.map.json → assets-BuVkFuYO.js.map.json} +1 -1
  26. package/dist/_nuxt/{components-CTVOL1-D.js.map.json → components-uGD7fpTl.js.map.json} +1 -1
  27. package/dist/_nuxt/{custom-_name_-DRWuAoZa.js.map.json → custom-_name_-CL9ijc8K.js.map.json} +1 -1
  28. package/dist/_nuxt/{debug-CpWOyAbK.js.map.json → debug-D10Jwem2.js.map.json} +1 -1
  29. package/dist/_nuxt/{entry-uV9FV_26.js.map.json → entry-CqsJq8Bj.js.map.json} +1 -1
  30. package/dist/_nuxt/{error-404-BN7jSsJU.js.map.json → error-404-B3hvNTTL.js.map.json} +1 -1
  31. package/dist/_nuxt/{error-500-CX60RT79.js.map.json → error-500-C707LWWo.js.map.json} +1 -1
  32. package/dist/_nuxt/{error-YOq9ydYM.js.map.json → error-D03t_7ms.js.map.json} +1 -1
  33. package/dist/_nuxt/{head-Q3WHkZN-.js.map.json → head-BHeO3WM1.js.map.json} +1 -1
  34. package/dist/_nuxt/{hooks-Dfejz2-5.js.map.json → hooks-Dao-RDzo.js.map.json} +1 -1
  35. package/dist/_nuxt/{imports-CCepJr4G.js.map.json → imports-CY-qGueB.js.map.json} +1 -1
  36. package/dist/_nuxt/{modules-CDEu6e8J.js.map.json → modules-BTU4bGX2.js.map.json} +1 -1
  37. package/dist/_nuxt/{nuxt-B-ZgUV2U.js.map.json → nuxt-CU0ot_Hr.js.map.json} +1 -1
  38. package/dist/_nuxt/{nuxt-link-X36zPJaC.js.map.json → nuxt-link-DVKhBKYR.js.map.json} +1 -1
  39. package/dist/_nuxt/{open-graph-RnltEfE1.js.map.json → open-graph-DrWy0sHo.js.map.json} +1 -1
  40. package/dist/_nuxt/{overview-0981_RjH.js.map.json → overview-DMlMZwOJ.js.map.json} +1 -1
  41. package/dist/_nuxt/{pages-Dv_rq-A5.js.map.json → pages-BqpyOhlp.js.map.json} +1 -1
  42. package/dist/_nuxt/{pages-c-R2EyNA.js.map.json → pages-Dpy3RGh8.js.map.json} +1 -1
  43. package/dist/_nuxt/{pages-BJY0ZMcV.js.map.json → pages-SVg8-7rL.js.map.json} +1 -1
  44. package/dist/_nuxt/{payload-EEc-a5Rs.js.map.json → payload-B4tGg_yJ.js.map.json} +1 -1
  45. package/dist/_nuxt/{plugins-DBU4EaVz.js.map.json → plugins-sOeLpXdK.js.map.json} +1 -1
  46. package/dist/_nuxt/{ready-B0tgRAWs.js.map.json → ready-DyAGZGXh.js.map.json} +1 -1
  47. package/dist/_nuxt/{runtime-configs-eyjqyWy0.js.map.json → runtime-configs-CKsHjoDA.js.map.json} +1 -1
  48. package/dist/_nuxt/{server-routes-CmFWvg0q.js.map.json → server-routes-Dr4xIhnL.js.map.json} +1 -1
  49. package/dist/_nuxt/{server-tasks-y13wW_sS.js.map.json → server-tasks-DVSMIJ23.js.map.json} +1 -1
  50. package/dist/_nuxt/{settings-CQHWdQH5.js.map.json → settings-ClAb5Ncw.js.map.json} +1 -1
  51. package/dist/_nuxt/{state-components-BtOK14JS.js.map.json → state-components-CUy4qfKa.js.map.json} +1 -1
  52. package/dist/_nuxt/{state-modules-B1t4RCwZ.js.map.json → state-modules-BiTBg3sT.js.map.json} +1 -1
  53. package/dist/_nuxt/{state-tabs-DgyOko_b.js.map.json → state-tabs-DyXoC_gu.js.map.json} +1 -1
  54. package/dist/_nuxt/{storage-CL3RFmxG.js.map.json → storage-Bl77u--J.js.map.json} +1 -1
  55. package/dist/_nuxt/{timeline-CrhB_ydt.js.map.json → timeline-RijyQyqW.js.map.json} +1 -1
  56. package/dist/_nuxt/{utils-DdQYVRed.js.map.json → utils-B-D4Pftb.js.map.json} +1 -1
  57. package/dist/_nuxt/{virtual-files-WqYqMpE0.js.map.json → virtual-files-DKOje2lN.js.map.json} +1 -1
  58. package/dist/chunks/analyze-build.mjs +1 -1
  59. package/dist/chunks/module-main.mjs +34 -22
  60. package/dist/chunks/vite-inspect.mjs +1 -1
  61. package/dist/index.mjs.map.json +1 -1
  62. package/dist/module.json +1 -1
  63. package/dist/server.mjs.map.json +1 -1
  64. package/package.json +19 -19
@@ -1 +1 @@
1
- {"file":"analyze-build-DSk_N3wx.js","mappings":"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","names":[],"sources":["../../../../../../../../components/BuildAnalyzeDetails.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/BuildAnalyzeDetails.vue","../../../../../../../../components/docs/analyze-build.md","../../../../../../../../pages/modules/analyze-build.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../pages/modules/analyze-build.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, withCtx as _withCtx, createTextVNode as _createTextVNode, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderClass as _ssrRenderClass, ssrRenderComponent as _ssrRenderComponent, ssrRenderAttr as _ssrRenderAttr, ssrRenderAttrs as _ssrRenderAttrs, ssrInterpolate as _ssrInterpolate, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport type { AnalyzeBuildMeta } from '../../src/types'\nimport { formatTimeAgo } from '@vueuse/core'\nimport { computed, ref } from 'vue'\nimport { useRuntimeConfig } from '#imports'\nimport { rpc } from '~/composables/rpc'\n\nconst CLIENT_BASE = '/__nuxt_devtools__/client'\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'BuildAnalyzeDetails',\n __ssrInlineRender: true,\n props: {\n current: {},\n prev: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst runtimeConfig = useRuntimeConfig()\nconst ROUTE_ANALYZE = `${runtimeConfig.app.baseURL.replace(CLIENT_BASE, '/')}/__nuxt_devtools__/analyze/`.replace(/\\/+/g, '/')\n\nconst tabs = computed(() => {\n const items = [\n { name: 'Overview', id: 'overview' },\n ]\n if (props.current.features.bundleClient)\n items.push({ name: 'Client Bundle', id: 'bundle-client' })\n if (props.current.features.bundleNitro)\n items.push({ name: 'Nitro Bundle', id: 'bundle-nitro' })\n if (props.current.features.viteInspect)\n items.push({ name: 'Vite Inspect', id: 'vite-inspect' })\n\n return items\n})\n\nconst selectedTab = ref(tabs.value[0])\n\nfunction getDuration(build: AnalyzeBuildMeta) {\n return `${((build.endTime - build.startTime) / 1000).toFixed(1)}s`\n}\n\nfunction formatFileSize(bytes: number) {\n if (bytes < 1024)\n return `${bytes}B`\n if (bytes < 1024 * 1024)\n return `${(bytes / 1024).toFixed(1)}KB`\n if (bytes < 1024 * 1024 * 1024)\n return `${(bytes / 1024 / 1024).toFixed(1)}MB`\n return `${(bytes / 1024 / 1024 / 1024).toFixed(1)}GB`\n}\n\nasync function clear(name: string) {\n return rpc.clearAnalyzeBuilds([name])\n}\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_FilepathItem = _resolveComponent(\"FilepathItem\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n\n _push(`<div${_ssrRenderAttrs(_mergeProps({\n \"h-full\": \"\",\n grid: \"~ rows-[max-content_1fr]\"\n }, _attrs))}><div flex=\"~ wrap\" w-full><!--[-->`)\n _ssrRenderList(tabs.value, (tab, idx) => {\n _push(`<button px4 py2 border=\"r base\" hover=\"bg-active\" class=\"${\n _ssrRenderClass(tab.id === selectedTab.value?.id ? '' : 'border-b')\n }\"><div class=\"${\n _ssrRenderClass(tab.id === selectedTab.value?.id ? '' : 'op30' )\n }\">${\n _ssrInterpolate(tab.name)\n }</div></button>`)\n })\n _push(`<!--]--><div border=\"b base\" flex-auto></div></div>`)\n if (selectedTab.value?.id === 'overview') {\n _push(`<div flex=\"~ col gap-4 items-center justify-center\" p4><div flex-auto></div><div grid=\"~ cols-[30px_1fr] gap-x-2 gap-y-3 items-center justify-center\" w-100><div i-carbon-commit text-xl></div><div><div text-sm op50> Name </div><div>${\n _ssrInterpolate(__props.current.name)\n }</div></div><div i-carbon-time text-xl></div><div><div text-sm op50> Build duration </div><div>${\n _ssrInterpolate(getDuration(__props.current))\n }</div></div>`)\n if (__props.current.size?.clientBundle) {\n _push(`<!--[--><div i-carbon-cics-program text-xl></div><div><div text-sm op50> Client bundle size </div><div>${_ssrInterpolate(formatFileSize(__props.current.size.clientBundle))}</div></div><!--]-->`)\n } else {\n _push(`<!---->`)\n }\n if (__props.current.size?.nitroBundle) {\n _push(`<!--[--><div i-carbon-bare-metal-server text-xl></div><div><div text-sm op50> Nitro bundle size </div><div>${_ssrInterpolate(formatFileSize(__props.current.size.nitroBundle))}</div></div><!--]-->`)\n } else {\n _push(`<!---->`)\n }\n _push(`<div i-carbon-edge-node text-xl></div><div><div text-sm op50> Built </div><div>${_ssrInterpolate(_unref(formatTimeAgo)(new Date(__props.current.endTime)))}</div></div><div i-carbon:folder-parent text-xl></div><div><div text-sm op50> Report Path </div>`)\n _push(_ssrRenderComponent(_component_FilepathItem, {\n filepath: __props.current.analyzeDir\n }, null, _parent))\n _push(`</div></div><div flex-auto></div>`)\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"rose\",\n icon: \"carbon-delete\",\n onClick: ($event: any) => (clear(__props.current.name))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Delete this report `)\n } else {\n return [\n _createTextVNode(\" Delete this report \")\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n _push(`<iframe${\n _ssrRenderAttr(\"src\", `${_unref(ROUTE_ANALYZE)}${__props.current.slug}/client.html`)\n } h-full w-full></iframe><iframe${\n _ssrRenderAttr(\"src\", `${_unref(ROUTE_ANALYZE)}${__props.current.slug}/nitro.html`)\n } h-full w-full></iframe><iframe${\n _ssrRenderAttr(\"src\", `${_unref(ROUTE_ANALYZE)}${__props.current.slug}/.vite-inspect/`)\n } h-full w-full></iframe></div>`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { AnalyzeBuildMeta } from '../../src/types'\nimport { formatTimeAgo } from '@vueuse/core'\nimport { computed, ref } from 'vue'\nimport { useRuntimeConfig } from '#imports'\nimport { rpc } from '~/composables/rpc'\n\nconst props = defineProps<{\n current: AnalyzeBuildMeta\n prev?: AnalyzeBuildMeta\n}>()\n\nconst runtimeConfig = useRuntimeConfig()\nconst CLIENT_BASE = '/__nuxt_devtools__/client'\nconst ROUTE_ANALYZE = `${runtimeConfig.app.baseURL.replace(CLIENT_BASE, '/')}/__nuxt_devtools__/analyze/`.replace(/\\/+/g, '/')\n\nconst tabs = computed(() => {\n const items = [\n { name: 'Overview', id: 'overview' },\n ]\n if (props.current.features.bundleClient)\n items.push({ name: 'Client Bundle', id: 'bundle-client' })\n if (props.current.features.bundleNitro)\n items.push({ name: 'Nitro Bundle', id: 'bundle-nitro' })\n if (props.current.features.viteInspect)\n items.push({ name: 'Vite Inspect', id: 'vite-inspect' })\n\n return items\n})\n\nconst selectedTab = ref(tabs.value[0])\n\nfunction getDuration(build: AnalyzeBuildMeta) {\n return `${((build.endTime - build.startTime) / 1000).toFixed(1)}s`\n}\n\nfunction formatFileSize(bytes: number) {\n if (bytes < 1024)\n return `${bytes}B`\n if (bytes < 1024 * 1024)\n return `${(bytes / 1024).toFixed(1)}KB`\n if (bytes < 1024 * 1024 * 1024)\n return `${(bytes / 1024 / 1024).toFixed(1)}MB`\n return `${(bytes / 1024 / 1024 / 1024).toFixed(1)}GB`\n}\n\nasync function clear(name: string) {\n return rpc.clearAnalyzeBuilds([name])\n}\n</script>\n\n<template>\n <div h-full grid=\"~ rows-[max-content_1fr]\">\n <div flex=\"~ wrap\" w-full>\n <template v-for=\"tab, idx of tabs\" :key=\"idx\">\n <button\n px4 py2 border=\"r base\"\n hover=\"bg-active\"\n :class=\"tab.id === selectedTab?.id ? '' : 'border-b'\"\n @click=\"selectedTab = tab\"\n >\n <div :class=\"tab.id === selectedTab?.id ? '' : 'op30' \">\n {{ tab.name }}\n </div>\n </button>\n </template>\n <div border=\"b base\" flex-auto />\n </div>\n <div\n v-if=\"selectedTab?.id === 'overview'\"\n flex=\"~ col gap-4 items-center justify-center\" p4\n >\n <div flex-auto />\n <div grid=\"~ cols-[30px_1fr] gap-x-2 gap-y-3 items-center justify-center\" w-100>\n <div i-carbon-commit text-xl />\n <div>\n <div text-sm op50>\n Name\n </div>\n <div>{{ current.name }}</div>\n </div>\n <div i-carbon-time text-xl />\n <div>\n <div text-sm op50>\n Build duration\n </div>\n <div>{{ getDuration(current) }}</div>\n </div>\n <template v-if=\"current.size?.clientBundle\">\n <div i-carbon-cics-program text-xl />\n <div>\n <div text-sm op50>\n Client bundle size\n </div>\n <div>{{ formatFileSize(current.size.clientBundle) }}</div>\n </div>\n </template>\n <template v-if=\"current.size?.nitroBundle\">\n <div i-carbon-bare-metal-server text-xl />\n <div>\n <div text-sm op50>\n Nitro bundle size\n </div>\n <div>{{ formatFileSize(current.size.nitroBundle) }}</div>\n </div>\n </template>\n <div i-carbon-edge-node text-xl />\n <div>\n <div text-sm op50>\n Built\n </div>\n <div>{{ formatTimeAgo(new Date(current.endTime)) }}</div>\n </div>\n <div i-carbon:folder-parent text-xl />\n <div>\n <div text-sm op50>\n Report Path\n </div>\n <FilepathItem :filepath=\"current.analyzeDir\" />\n </div>\n </div>\n <div flex-auto />\n <NButton n=\"rose\" icon=\"carbon-delete\" @click=\"clear(current.name)\">\n Delete this report\n </NButton>\n </div>\n <iframe\n v-lazy-show=\"selectedTab?.id === 'bundle-client'\"\n :src=\"`${ROUTE_ANALYZE}${current.slug}/client.html`\"\n h-full w-full\n />\n <iframe\n v-lazy-show=\"selectedTab?.id === 'bundle-nitro'\"\n :src=\"`${ROUTE_ANALYZE}${current.slug}/nitro.html`\"\n h-full w-full\n />\n <iframe\n v-lazy-show=\"selectedTab?.id === 'vite-inspect'\"\n :src=\"`${ROUTE_ANALYZE}${current.slug}/.vite-inspect/`\"\n h-full w-full\n />\n </div>\n</template>\n","# Build Analyze\n\nDevTools provides a build analyze tool to help you understand the size of your app in production. Whenever you start a new build, it runs the command `nuxt build --analyze` and present the output data directly in DevTools for easy browsing and comparing.\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, withCtx as _withCtx, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createBlock as _createBlock, toDisplayString as _toDisplayString, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\nimport { ssrRenderClass as _ssrRenderClass, ssrRenderComponent as _ssrRenderComponent, ssrInterpolate as _ssrInterpolate, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport type { AnalyzeBuildMeta } from '~/../src/types'\nimport { createTemplatePromise, formatTimeAgo } from '@vueuse/core'\nimport { computed, ref } from 'vue'\nimport { definePageMeta } from '#imports'\nimport { satisfyNuxtVersion } from '~/composables/npm'\nimport { rpc } from '~/composables/rpc'\nimport { useAnalyzeBuildInfo } from '~/composables/state'\nimport { registerCommands } from '~/composables/state-commands'\nimport { telemetry } from '~/composables/telemetry'\nimport { useSessionState } from '~/composables/utils'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'analyze-build',\n __ssrInlineRender: true,\n setup(__props) {\n\ndefinePageMeta({\n icon: 'carbon-edge-node',\n title: 'Build Analyze',\n layout: 'full',\n category: 'analyze',\n show() {\n return satisfyNuxtVersion('^3.5.0')\n },\n})\n\nconst PromiseConfirm = createTemplatePromise<boolean>()\n\nconst info = useAnalyzeBuildInfo()\nconst slug = useSessionState<string>('analyze-build:slug', '')\n\nconst selected = computed(() => info.value?.builds.find(b => b.slug === slug.value) ?? info.value?.builds[0])\n\nconst shouldRevealTerminal = ref(false)\n\nconst buildNameInput = ref('')\nconst buildNameConflicted = computed(() => info.value?.builds.some(b => b.name === buildNameInput.value.trim()))\nasync function start() {\n buildNameInput.value = await rpc.generateAnalyzeBuildName()\n\n if (!await PromiseConfirm.start())\n return\n\n telemetry('analyze-build:start')\n\n // `startAnalyzeBuild` refreshes `getAnalyzeBuildInfo` as soon as the session\n // registers, so `info.isBuilding` / `info.activeSessionId` drive the UI. It\n // also returns the id so we can reveal the dock immediately.\n const sessionId = await rpc.startAnalyzeBuild(buildNameInput.value)\n if (shouldRevealTerminal.value)\n rpc.revealTerminal(sessionId)\n}\n\nfunction getDuration(build: AnalyzeBuildMeta) {\n return `${((build.endTime - build.startTime) / 1000).toFixed(1)}s`\n}\n\nfunction revealTerminal() {\n if (info.value?.activeSessionId)\n rpc.revealTerminal(info.value.activeSessionId)\n}\n\nregisterCommands(() => [\n {\n id: 'action:analyze-build: start',\n title: 'Start a new analyze build',\n icon: 'i-carbon-edge-node',\n action: start,\n },\n])\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NSplitPane = _resolveComponent(\"NSplitPane\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n const _component_BuildAnalyzeDetails = _resolveComponent(\"BuildAnalyzeDetails\")!\n const _component_NPanelGrids = _resolveComponent(\"NPanelGrids\")!\n const _component_NDialog = _resolveComponent(\"NDialog\")!\n const _component_NTextInput = _resolveComponent(\"NTextInput\")!\n const _component_NTip = _resolveComponent(\"NTip\")!\n const _component_NCodeBlock = _resolveComponent(\"NCodeBlock\")!\n const _component_NCheckbox = _resolveComponent(\"NCheckbox\")!\n const _component_HelpFab = _resolveComponent(\"HelpFab\")!\n const _component_DocsAnalyzeBuild = _resolveComponent(\"DocsAnalyzeBuild\")!\n\n _push(`<!--[-->`)\n _push(_ssrRenderComponent(_component_NSplitPane, { \"left-size\": 30 }, {\n left: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div flex=\"~ col\"${_scopeId}><!--[-->`)\n _ssrRenderList(_unref(info)?.builds, (build) => {\n _push(`<!--[--><button flex=\"~ col gap1\" p3 hover:bg-active class=\"${\n _ssrRenderClass(build.slug === selected.value?.slug ? 'text-primary bg-active' : '')\n }\"${\n _scopeId\n }><code${\n _scopeId\n }>${\n _ssrInterpolate(build.name)\n }</code><div flex=\"~ gap-1 items-center wrap\" w-full text-sm op60${\n _scopeId\n }><div i-carbon-time${\n _scopeId\n }></div><span${\n _scopeId\n }>${\n _ssrInterpolate(getDuration(build))\n }</span><div flex-auto${\n _scopeId\n }></div><span${\n _scopeId\n }>${\n _ssrInterpolate(_unref(formatTimeAgo)(new Date(build.endTime)))\n }</span></div></button><div x-divider${\n _scopeId\n }></div><!--]-->`)\n })\n _push(`<!--]--><div flex=\"~ items-center justify-center wrap\" p4${_scopeId}>`)\n if (!_unref(info)?.isBuilding) {\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"primary\",\n icon: \"carbon-edge-node\",\n onClick: ($event: any) => (start())\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Start a new build `)\n } else {\n return [\n _createTextVNode(\" Start a new build \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"primary\",\n icon: \"carbon-circle-dash animate-spin\",\n title: \"Open the output in the Terminals dock\",\n onClick: ($event: any) => (revealTerminal())\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Building... `)\n } else {\n return [\n _createTextVNode(\" Building... \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n }\n _push(`</div></div>`)\n } else {\n return [\n _createVNode(\"div\", { flex: \"~ col\" }, [\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(_unref(info)?.builds, (build) => {\n return (_openBlock(), _createBlock(_Fragment, {\n key: build.slug\n }, [\n _createVNode(\"button\", {\n flex: \"~ col gap1\",\n p3: \"\",\n \"hover:bg-active\": \"\",\n class: build.slug === selected.value?.slug ? 'text-primary bg-active' : '',\n onClick: ($event: any) => (slug.value = build.slug)\n }, [\n _createVNode(\"code\", null, _toDisplayString(build.name), 1),\n _createVNode(\"div\", {\n flex: \"~ gap-1 items-center wrap\",\n \"w-full\": \"\",\n \"text-sm\": \"\",\n op60: \"\"\n }, [\n _createVNode(\"div\", { \"i-carbon-time\": \"\" }),\n _createVNode(\"span\", null, _toDisplayString(getDuration(build)), 1),\n _createVNode(\"div\", { \"flex-auto\": \"\" }),\n _createVNode(\"span\", null, _toDisplayString(_unref(formatTimeAgo)(new Date(build.endTime))), 1)\n ])\n ], 10, [\"onClick\"]),\n _createVNode(\"div\", { \"x-divider\": \"\" })\n ], 64))\n }), 128)),\n _createVNode(\"div\", {\n flex: \"~ items-center justify-center wrap\",\n p4: \"\"\n }, [\n (!_unref(info)?.isBuilding)\n ? (_openBlock(), _createBlock(_component_NButton, {\n key: 0,\n n: \"primary\",\n icon: \"carbon-edge-node\",\n onClick: ($event: any) => (start())\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Start a new build \")\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : (_openBlock(), _createBlock(_component_NButton, {\n key: 1,\n n: \"primary\",\n icon: \"carbon-circle-dash animate-spin\",\n title: \"Open the output in the Terminals dock\",\n onClick: ($event: any) => (revealTerminal())\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Building... \")\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n ])\n ])\n ]\n }\n }),\n right: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n if (selected.value) {\n _push(_ssrRenderComponent(_component_BuildAnalyzeDetails, { current: selected.value }, null, _parent, _scopeId))\n } else {\n _push(_ssrRenderComponent(_component_NPanelGrids, null, null, _parent, _scopeId))\n }\n } else {\n return [\n (selected.value)\n ? (_openBlock(), _createBlock(_component_BuildAnalyzeDetails, {\n key: 0,\n current: selected.value\n }, null, 8, [\"current\"]))\n : (_openBlock(), _createBlock(_component_NPanelGrids, { key: 1 }))\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(_ssrRenderComponent(_unref(PromiseConfirm), null, {\n default: _withCtx(({ resolve }, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NDialog, {\n \"model-value\": true,\n onClose: ($event: any) => (resolve(false))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div flex=\"~ col gap-1\" w-250 p4${\n _scopeId\n }><h3 class=\"text-lg font-medium leading-6\" mb2${\n _scopeId\n }> Start analyze build? </h3><p op50${\n _scopeId\n }> Enter the name of the build: </p>`)\n _push(_ssrRenderComponent(_component_NTextInput, {\n modelValue: buildNameInput.value,\n \"onUpdate:modelValue\": ($event: any) => ((buildNameInput).value = $event),\n placeholder: \"Build name\"\n }, null, _parent, _scopeId))\n if (buildNameConflicted.value) {\n _push(_ssrRenderComponent(_component_NTip, { \"n-orange\": \"\" }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` A build with the same name already exists, continue would overrides the previous build result. `)\n } else {\n return [\n _createTextVNode(\" A build with the same name already exists, continue would overrides the previous build result. \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n } else {\n _push(`<!---->`)\n }\n _push(`<div my3 x-divider${\n _scopeId\n }></div><p op50${\n _scopeId\n }> The following command will be executed in your terminal: </p>`)\n _push(_ssrRenderComponent(_component_NCodeBlock, {\n code: `npx nuxi analyze --no-serve --name=${buildNameInput.value}`,\n lang: \"bash\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, _parent, _scopeId))\n _push(_ssrRenderComponent(_component_NCheckbox, {\n modelValue: shouldRevealTerminal.value,\n \"onUpdate:modelValue\": ($event: any) => ((shouldRevealTerminal).value = $event),\n mt2: \"\",\n n: \"primary\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Open the Terminals dock `)\n } else {\n return [\n _createTextVNode(\" Open the Terminals dock \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(`<div flex=\"~ gap-3\" mt2 justify-end${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NButton, {\n onClick: ($event: any) => (resolve(false))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Cancel `)\n } else {\n return [\n _createTextVNode(\" Cancel \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"solid primary\",\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Start `)\n } else {\n return [\n _createTextVNode(\" Start \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(`</div></div>`)\n } else {\n return [\n _createVNode(\"div\", {\n flex: \"~ col gap-1\",\n \"w-250\": \"\",\n p4: \"\"\n }, [\n _createVNode(\"h3\", {\n class: \"text-lg font-medium leading-6\",\n mb2: \"\"\n }, \" Start analyze build? \"),\n _createVNode(\"p\", { op50: \"\" }, \" Enter the name of the build: \"),\n _createVNode(_component_NTextInput, {\n modelValue: buildNameInput.value,\n \"onUpdate:modelValue\": ($event: any) => ((buildNameInput).value = $event),\n placeholder: \"Build name\"\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n (buildNameConflicted.value)\n ? (_openBlock(), _createBlock(_component_NTip, {\n key: 0,\n \"n-orange\": \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" A build with the same name already exists, continue would overrides the previous build result. \")\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(\"div\", {\n my3: \"\",\n \"x-divider\": \"\"\n }),\n _createVNode(\"p\", { op50: \"\" }, \" The following command will be executed in your terminal: \"),\n _createVNode(_component_NCodeBlock, {\n code: `npx nuxi analyze --no-serve --name=${buildNameInput.value}`,\n lang: \"bash\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, 8, [\"code\"]),\n _createVNode(_component_NCheckbox, {\n modelValue: shouldRevealTerminal.value,\n \"onUpdate:modelValue\": ($event: any) => ((shouldRevealTerminal).value = $event),\n mt2: \"\",\n n: \"primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Open the Terminals dock \")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n _createVNode(\"div\", {\n flex: \"~ gap-3\",\n mt2: \"\",\n \"justify-end\": \"\"\n }, [\n _createVNode(_component_NButton, {\n onClick: ($event: any) => (resolve(false))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Cancel \")\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_NButton, {\n n: \"solid primary\",\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Start \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ])\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NDialog, {\n \"model-value\": true,\n onClose: ($event: any) => (resolve(false))\n }, {\n default: _withCtx(() => [\n _createVNode(\"div\", {\n flex: \"~ col gap-1\",\n \"w-250\": \"\",\n p4: \"\"\n }, [\n _createVNode(\"h3\", {\n class: \"text-lg font-medium leading-6\",\n mb2: \"\"\n }, \" Start analyze build? \"),\n _createVNode(\"p\", { op50: \"\" }, \" Enter the name of the build: \"),\n _createVNode(_component_NTextInput, {\n modelValue: buildNameInput.value,\n \"onUpdate:modelValue\": ($event: any) => ((buildNameInput).value = $event),\n placeholder: \"Build name\"\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n (buildNameConflicted.value)\n ? (_openBlock(), _createBlock(_component_NTip, {\n key: 0,\n \"n-orange\": \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" A build with the same name already exists, continue would overrides the previous build result. \")\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(\"div\", {\n my3: \"\",\n \"x-divider\": \"\"\n }),\n _createVNode(\"p\", { op50: \"\" }, \" The following command will be executed in your terminal: \"),\n _createVNode(_component_NCodeBlock, {\n code: `npx nuxi analyze --no-serve --name=${buildNameInput.value}`,\n lang: \"bash\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, 8, [\"code\"]),\n _createVNode(_component_NCheckbox, {\n modelValue: shouldRevealTerminal.value,\n \"onUpdate:modelValue\": ($event: any) => ((shouldRevealTerminal).value = $event),\n mt2: \"\",\n n: \"primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Open the Terminals dock \")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n _createVNode(\"div\", {\n flex: \"~ gap-3\",\n mt2: \"\",\n \"justify-end\": \"\"\n }, [\n _createVNode(_component_NButton, {\n onClick: ($event: any) => (resolve(false))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Cancel \")\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_NButton, {\n n: \"solid primary\",\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Start \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ])\n ]),\n _: 2\n }, 1032, [\"onClose\"])\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_DocsAnalyzeBuild, null, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_DocsAnalyzeBuild)\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<!--]-->`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { AnalyzeBuildMeta } from '~/../src/types'\nimport { createTemplatePromise, formatTimeAgo } from '@vueuse/core'\nimport { computed, ref } from 'vue'\nimport { definePageMeta } from '#imports'\nimport { satisfyNuxtVersion } from '~/composables/npm'\nimport { rpc } from '~/composables/rpc'\nimport { useAnalyzeBuildInfo } from '~/composables/state'\nimport { registerCommands } from '~/composables/state-commands'\nimport { telemetry } from '~/composables/telemetry'\nimport { useSessionState } from '~/composables/utils'\n\ndefinePageMeta({\n icon: 'carbon-edge-node',\n title: 'Build Analyze',\n layout: 'full',\n category: 'analyze',\n show() {\n return satisfyNuxtVersion('^3.5.0')\n },\n})\n\nconst PromiseConfirm = createTemplatePromise<boolean>()\n\nconst info = useAnalyzeBuildInfo()\nconst slug = useSessionState<string>('analyze-build:slug', '')\n\nconst selected = computed(() => info.value?.builds.find(b => b.slug === slug.value) ?? info.value?.builds[0])\n\nconst shouldRevealTerminal = ref(false)\n\nconst buildNameInput = ref('')\nconst buildNameConflicted = computed(() => info.value?.builds.some(b => b.name === buildNameInput.value.trim()))\nasync function start() {\n buildNameInput.value = await rpc.generateAnalyzeBuildName()\n\n if (!await PromiseConfirm.start())\n return\n\n telemetry('analyze-build:start')\n\n // `startAnalyzeBuild` refreshes `getAnalyzeBuildInfo` as soon as the session\n // registers, so `info.isBuilding` / `info.activeSessionId` drive the UI. It\n // also returns the id so we can reveal the dock immediately.\n const sessionId = await rpc.startAnalyzeBuild(buildNameInput.value)\n if (shouldRevealTerminal.value)\n rpc.revealTerminal(sessionId)\n}\n\nfunction getDuration(build: AnalyzeBuildMeta) {\n return `${((build.endTime - build.startTime) / 1000).toFixed(1)}s`\n}\n\nfunction revealTerminal() {\n if (info.value?.activeSessionId)\n rpc.revealTerminal(info.value.activeSessionId)\n}\n\nregisterCommands(() => [\n {\n id: 'action:analyze-build: start',\n title: 'Start a new analyze build',\n icon: 'i-carbon-edge-node',\n action: start,\n },\n])\n</script>\n\n<template>\n <NSplitPane :left-size=\"30\">\n <template #left>\n <div flex=\"~ col\">\n <template v-for=\"build of info?.builds\" :key=\"build.slug\">\n <button\n flex=\"~ col gap1\" p3 hover:bg-active\n :class=\"build.slug === selected?.slug ? 'text-primary bg-active' : ''\"\n @click=\"slug = build.slug\"\n >\n <code>{{ build.name }}</code>\n <div flex=\"~ gap-1 items-center wrap\" w-full text-sm op60>\n <div i-carbon-time />\n <span>{{ getDuration(build) }}</span>\n <div flex-auto />\n <span>{{ formatTimeAgo(new Date(build.endTime)) }}</span>\n </div>\n </button>\n <div x-divider />\n </template>\n <div flex=\"~ items-center justify-center wrap\" p4>\n <NButton v-if=\"!info?.isBuilding\" n=\"primary\" icon=\"carbon-edge-node\" @click=\"start()\">\n Start a new build\n </NButton>\n <NButton v-else n=\"primary\" icon=\"carbon-circle-dash animate-spin\" title=\"Open the output in the Terminals dock\" @click=\"revealTerminal()\">\n Building...\n </NButton>\n </div>\n </div>\n </template>\n <template #right>\n <BuildAnalyzeDetails v-if=\"selected\" :current=\"selected\" />\n <NPanelGrids v-else />\n </template>\n </NSplitPane>\n\n <PromiseConfirm v-slot=\"{ resolve }\">\n <NDialog :model-value=\"true\" @close=\"resolve(false)\">\n <div flex=\"~ col gap-1\" w-250 p4>\n <h3 class=\"text-lg font-medium leading-6\" mb2>\n Start analyze build?\n </h3>\n <p op50>\n Enter the name of the build:\n </p>\n <NTextInput\n v-model=\"buildNameInput\"\n placeholder=\"Build name\"\n />\n <NTip v-if=\"buildNameConflicted\" n-orange>\n A build with the same name already exists, continue would overrides the previous build result.\n </NTip>\n <div my3 x-divider />\n <p op50>\n The following command will be executed in your terminal:\n </p>\n <NCodeBlock\n :code=\"`npx nuxi analyze --no-serve --name=${buildNameInput}`\"\n lang=\"bash\" px4 py2 border=\"~ base rounded\"\n :lines=\"false\"\n />\n <NCheckbox v-model=\"shouldRevealTerminal\" mt2 n=\"primary\">\n Open the Terminals dock\n </NCheckbox>\n\n <div flex=\"~ gap-3\" mt2 justify-end>\n <NButton @click=\"resolve(false)\">\n Cancel\n </NButton>\n <NButton n=\"solid primary\" @click=\"resolve(true)\">\n Start\n </NButton>\n </div>\n </div>\n </NDialog>\n </PromiseConfirm>\n\n <HelpFab>\n <DocsAnalyzeBuild />\n </HelpFab>\n</template>\n"],"version":3}
1
+ {"file":"analyze-build-BqtehgeE.js","mappings":"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","names":[],"sources":["../../../../../../../../components/BuildAnalyzeDetails.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../components/BuildAnalyzeDetails.vue","../../../../../../../../components/docs/analyze-build.md","../../../../../../../../pages/modules/analyze-build.vue?vue&type=script&setup=true&lang.ts","../../../../../../../../pages/modules/analyze-build.vue"],"sourcesContent":["import { defineComponent as _defineComponent } from 'vue'\nimport { unref as _unref, resolveComponent as _resolveComponent, withCtx as _withCtx, createTextVNode as _createTextVNode, mergeProps as _mergeProps } from \"vue\"\nimport { ssrRenderClass as _ssrRenderClass, ssrRenderComponent as _ssrRenderComponent, ssrRenderAttr as _ssrRenderAttr, ssrRenderAttrs as _ssrRenderAttrs, ssrInterpolate as _ssrInterpolate, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport type { AnalyzeBuildMeta } from '../../src/types'\nimport { formatTimeAgo } from '@vueuse/core'\nimport { computed, ref } from 'vue'\nimport { useRuntimeConfig } from '#imports'\nimport { rpc } from '~/composables/rpc'\n\nconst CLIENT_BASE = '/__nuxt_devtools__/client'\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'BuildAnalyzeDetails',\n __ssrInlineRender: true,\n props: {\n current: {},\n prev: {}\n },\n setup(__props: any) {\n\nconst props = __props\n\nconst runtimeConfig = useRuntimeConfig()\nconst ROUTE_ANALYZE = `${runtimeConfig.app.baseURL.replace(CLIENT_BASE, '/')}/__nuxt_devtools__/analyze/`.replace(/\\/+/g, '/')\n\nconst tabs = computed(() => {\n const items = [\n { name: 'Overview', id: 'overview' },\n ]\n if (props.current.features.bundleClient)\n items.push({ name: 'Client Bundle', id: 'bundle-client' })\n if (props.current.features.bundleNitro)\n items.push({ name: 'Nitro Bundle', id: 'bundle-nitro' })\n if (props.current.features.viteInspect)\n items.push({ name: 'Vite Inspect', id: 'vite-inspect' })\n\n return items\n})\n\nconst selectedTab = ref(tabs.value[0])\n\nfunction getDuration(build: AnalyzeBuildMeta) {\n return `${((build.endTime - build.startTime) / 1000).toFixed(1)}s`\n}\n\nfunction formatFileSize(bytes: number) {\n if (bytes < 1024)\n return `${bytes}B`\n if (bytes < 1024 * 1024)\n return `${(bytes / 1024).toFixed(1)}KB`\n if (bytes < 1024 * 1024 * 1024)\n return `${(bytes / 1024 / 1024).toFixed(1)}MB`\n return `${(bytes / 1024 / 1024 / 1024).toFixed(1)}GB`\n}\n\nasync function clear(name: string) {\n return rpc.clearAnalyzeBuilds([name])\n}\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_FilepathItem = _resolveComponent(\"FilepathItem\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n\n _push(`<div${_ssrRenderAttrs(_mergeProps({\n \"h-full\": \"\",\n grid: \"~ rows-[max-content_1fr]\"\n }, _attrs))}><div flex=\"~ wrap\" w-full><!--[-->`)\n _ssrRenderList(tabs.value, (tab, idx) => {\n _push(`<button px4 py2 border=\"r base\" hover=\"bg-active\" class=\"${\n _ssrRenderClass(tab.id === selectedTab.value?.id ? '' : 'border-b')\n }\"><div class=\"${\n _ssrRenderClass(tab.id === selectedTab.value?.id ? '' : 'op30' )\n }\">${\n _ssrInterpolate(tab.name)\n }</div></button>`)\n })\n _push(`<!--]--><div border=\"b base\" flex-auto></div></div>`)\n if (selectedTab.value?.id === 'overview') {\n _push(`<div flex=\"~ col gap-4 items-center justify-center\" p4><div flex-auto></div><div grid=\"~ cols-[30px_1fr] gap-x-2 gap-y-3 items-center justify-center\" w-100><div i-carbon-commit text-xl></div><div><div text-sm op50> Name </div><div>${\n _ssrInterpolate(__props.current.name)\n }</div></div><div i-carbon-time text-xl></div><div><div text-sm op50> Build duration </div><div>${\n _ssrInterpolate(getDuration(__props.current))\n }</div></div>`)\n if (__props.current.size?.clientBundle) {\n _push(`<!--[--><div i-carbon-cics-program text-xl></div><div><div text-sm op50> Client bundle size </div><div>${_ssrInterpolate(formatFileSize(__props.current.size.clientBundle))}</div></div><!--]-->`)\n } else {\n _push(`<!---->`)\n }\n if (__props.current.size?.nitroBundle) {\n _push(`<!--[--><div i-carbon-bare-metal-server text-xl></div><div><div text-sm op50> Nitro bundle size </div><div>${_ssrInterpolate(formatFileSize(__props.current.size.nitroBundle))}</div></div><!--]-->`)\n } else {\n _push(`<!---->`)\n }\n _push(`<div i-carbon-edge-node text-xl></div><div><div text-sm op50> Built </div><div>${_ssrInterpolate(_unref(formatTimeAgo)(new Date(__props.current.endTime)))}</div></div><div i-carbon:folder-parent text-xl></div><div><div text-sm op50> Report Path </div>`)\n _push(_ssrRenderComponent(_component_FilepathItem, {\n filepath: __props.current.analyzeDir\n }, null, _parent))\n _push(`</div></div><div flex-auto></div>`)\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"rose\",\n icon: \"carbon-delete\",\n onClick: ($event: any) => (clear(__props.current.name))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Delete this report `)\n } else {\n return [\n _createTextVNode(\" Delete this report \")\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`</div>`)\n } else {\n _push(`<!---->`)\n }\n _push(`<iframe${\n _ssrRenderAttr(\"src\", `${_unref(ROUTE_ANALYZE)}${__props.current.slug}/client.html`)\n } h-full w-full></iframe><iframe${\n _ssrRenderAttr(\"src\", `${_unref(ROUTE_ANALYZE)}${__props.current.slug}/nitro.html`)\n } h-full w-full></iframe><iframe${\n _ssrRenderAttr(\"src\", `${_unref(ROUTE_ANALYZE)}${__props.current.slug}/.vite-inspect/`)\n } h-full w-full></iframe></div>`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { AnalyzeBuildMeta } from '../../src/types'\nimport { formatTimeAgo } from '@vueuse/core'\nimport { computed, ref } from 'vue'\nimport { useRuntimeConfig } from '#imports'\nimport { rpc } from '~/composables/rpc'\n\nconst props = defineProps<{\n current: AnalyzeBuildMeta\n prev?: AnalyzeBuildMeta\n}>()\n\nconst runtimeConfig = useRuntimeConfig()\nconst CLIENT_BASE = '/__nuxt_devtools__/client'\nconst ROUTE_ANALYZE = `${runtimeConfig.app.baseURL.replace(CLIENT_BASE, '/')}/__nuxt_devtools__/analyze/`.replace(/\\/+/g, '/')\n\nconst tabs = computed(() => {\n const items = [\n { name: 'Overview', id: 'overview' },\n ]\n if (props.current.features.bundleClient)\n items.push({ name: 'Client Bundle', id: 'bundle-client' })\n if (props.current.features.bundleNitro)\n items.push({ name: 'Nitro Bundle', id: 'bundle-nitro' })\n if (props.current.features.viteInspect)\n items.push({ name: 'Vite Inspect', id: 'vite-inspect' })\n\n return items\n})\n\nconst selectedTab = ref(tabs.value[0])\n\nfunction getDuration(build: AnalyzeBuildMeta) {\n return `${((build.endTime - build.startTime) / 1000).toFixed(1)}s`\n}\n\nfunction formatFileSize(bytes: number) {\n if (bytes < 1024)\n return `${bytes}B`\n if (bytes < 1024 * 1024)\n return `${(bytes / 1024).toFixed(1)}KB`\n if (bytes < 1024 * 1024 * 1024)\n return `${(bytes / 1024 / 1024).toFixed(1)}MB`\n return `${(bytes / 1024 / 1024 / 1024).toFixed(1)}GB`\n}\n\nasync function clear(name: string) {\n return rpc.clearAnalyzeBuilds([name])\n}\n</script>\n\n<template>\n <div h-full grid=\"~ rows-[max-content_1fr]\">\n <div flex=\"~ wrap\" w-full>\n <template v-for=\"tab, idx of tabs\" :key=\"idx\">\n <button\n px4 py2 border=\"r base\"\n hover=\"bg-active\"\n :class=\"tab.id === selectedTab?.id ? '' : 'border-b'\"\n @click=\"selectedTab = tab\"\n >\n <div :class=\"tab.id === selectedTab?.id ? '' : 'op30' \">\n {{ tab.name }}\n </div>\n </button>\n </template>\n <div border=\"b base\" flex-auto />\n </div>\n <div\n v-if=\"selectedTab?.id === 'overview'\"\n flex=\"~ col gap-4 items-center justify-center\" p4\n >\n <div flex-auto />\n <div grid=\"~ cols-[30px_1fr] gap-x-2 gap-y-3 items-center justify-center\" w-100>\n <div i-carbon-commit text-xl />\n <div>\n <div text-sm op50>\n Name\n </div>\n <div>{{ current.name }}</div>\n </div>\n <div i-carbon-time text-xl />\n <div>\n <div text-sm op50>\n Build duration\n </div>\n <div>{{ getDuration(current) }}</div>\n </div>\n <template v-if=\"current.size?.clientBundle\">\n <div i-carbon-cics-program text-xl />\n <div>\n <div text-sm op50>\n Client bundle size\n </div>\n <div>{{ formatFileSize(current.size.clientBundle) }}</div>\n </div>\n </template>\n <template v-if=\"current.size?.nitroBundle\">\n <div i-carbon-bare-metal-server text-xl />\n <div>\n <div text-sm op50>\n Nitro bundle size\n </div>\n <div>{{ formatFileSize(current.size.nitroBundle) }}</div>\n </div>\n </template>\n <div i-carbon-edge-node text-xl />\n <div>\n <div text-sm op50>\n Built\n </div>\n <div>{{ formatTimeAgo(new Date(current.endTime)) }}</div>\n </div>\n <div i-carbon:folder-parent text-xl />\n <div>\n <div text-sm op50>\n Report Path\n </div>\n <FilepathItem :filepath=\"current.analyzeDir\" />\n </div>\n </div>\n <div flex-auto />\n <NButton n=\"rose\" icon=\"carbon-delete\" @click=\"clear(current.name)\">\n Delete this report\n </NButton>\n </div>\n <iframe\n v-lazy-show=\"selectedTab?.id === 'bundle-client'\"\n :src=\"`${ROUTE_ANALYZE}${current.slug}/client.html`\"\n h-full w-full\n />\n <iframe\n v-lazy-show=\"selectedTab?.id === 'bundle-nitro'\"\n :src=\"`${ROUTE_ANALYZE}${current.slug}/nitro.html`\"\n h-full w-full\n />\n <iframe\n v-lazy-show=\"selectedTab?.id === 'vite-inspect'\"\n :src=\"`${ROUTE_ANALYZE}${current.slug}/.vite-inspect/`\"\n h-full w-full\n />\n </div>\n</template>\n","# Build Analyze\n\nDevTools provides a build analyze tool to help you understand the size of your app in production. Whenever you start a new build, it runs the command `nuxt build --analyze` and present the output data directly in DevTools for easy browsing and comparing.\n","import { defineComponent as _defineComponent } from 'vue'\nimport { resolveComponent as _resolveComponent, unref as _unref, withCtx as _withCtx, createTextVNode as _createTextVNode, renderList as _renderList, Fragment as _Fragment, openBlock as _openBlock, createBlock as _createBlock, toDisplayString as _toDisplayString, createVNode as _createVNode, createCommentVNode as _createCommentVNode } from \"vue\"\nimport { ssrRenderClass as _ssrRenderClass, ssrRenderComponent as _ssrRenderComponent, ssrInterpolate as _ssrInterpolate, ssrRenderList as _ssrRenderList } from \"vue/server-renderer\"\n\nimport type { AnalyzeBuildMeta } from '~/../src/types'\nimport { createTemplatePromise, formatTimeAgo } from '@vueuse/core'\nimport { computed, ref } from 'vue'\nimport { definePageMeta } from '#imports'\nimport { satisfyNuxtVersion } from '~/composables/npm'\nimport { rpc } from '~/composables/rpc'\nimport { useAnalyzeBuildInfo } from '~/composables/state'\nimport { registerCommands } from '~/composables/state-commands'\nimport { telemetry } from '~/composables/telemetry'\nimport { useSessionState } from '~/composables/utils'\n\n\nexport default /*@__PURE__*/_defineComponent({\n __name: 'analyze-build',\n __ssrInlineRender: true,\n setup(__props) {\n\ndefinePageMeta({\n icon: 'carbon-edge-node',\n title: 'Build Analyze',\n layout: 'full',\n category: 'analyze',\n show() {\n return satisfyNuxtVersion('^3.5.0')\n },\n})\n\nconst PromiseConfirm = createTemplatePromise<boolean>()\n\nconst info = useAnalyzeBuildInfo()\nconst slug = useSessionState<string>('analyze-build:slug', '')\n\nconst selected = computed(() => info.value?.builds.find(b => b.slug === slug.value) ?? info.value?.builds[0])\n\nconst shouldRevealTerminal = ref(false)\n\nconst buildNameInput = ref('')\nconst buildNameConflicted = computed(() => info.value?.builds.some(b => b.name === buildNameInput.value.trim()))\nasync function start() {\n buildNameInput.value = await rpc.generateAnalyzeBuildName()\n\n if (!await PromiseConfirm.start())\n return\n\n telemetry('analyze-build:start')\n\n // `startAnalyzeBuild` refreshes `getAnalyzeBuildInfo` as soon as the session\n // registers, so `info.isBuilding` / `info.activeSessionId` drive the UI. It\n // also returns the id so we can reveal the dock immediately.\n const sessionId = await rpc.startAnalyzeBuild(buildNameInput.value)\n if (shouldRevealTerminal.value)\n rpc.revealTerminal(sessionId)\n}\n\nfunction getDuration(build: AnalyzeBuildMeta) {\n return `${((build.endTime - build.startTime) / 1000).toFixed(1)}s`\n}\n\nfunction revealTerminal() {\n if (info.value?.activeSessionId)\n rpc.revealTerminal(info.value.activeSessionId)\n}\n\nregisterCommands(() => [\n {\n id: 'action:analyze-build: start',\n title: 'Start a new analyze build',\n icon: 'i-carbon-edge-node',\n action: start,\n },\n])\n\nreturn (_ctx: any,_push: any,_parent: any,_attrs: any) => {\n const _component_NSplitPane = _resolveComponent(\"NSplitPane\")!\n const _component_NButton = _resolveComponent(\"NButton\")!\n const _component_BuildAnalyzeDetails = _resolveComponent(\"BuildAnalyzeDetails\")!\n const _component_NPanelGrids = _resolveComponent(\"NPanelGrids\")!\n const _component_NDialog = _resolveComponent(\"NDialog\")!\n const _component_NTextInput = _resolveComponent(\"NTextInput\")!\n const _component_NTip = _resolveComponent(\"NTip\")!\n const _component_NCodeBlock = _resolveComponent(\"NCodeBlock\")!\n const _component_NCheckbox = _resolveComponent(\"NCheckbox\")!\n const _component_HelpFab = _resolveComponent(\"HelpFab\")!\n const _component_DocsAnalyzeBuild = _resolveComponent(\"DocsAnalyzeBuild\")!\n\n _push(`<!--[-->`)\n _push(_ssrRenderComponent(_component_NSplitPane, { \"left-size\": 30 }, {\n left: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div flex=\"~ col\"${_scopeId}><!--[-->`)\n _ssrRenderList(_unref(info)?.builds, (build) => {\n _push(`<!--[--><button flex=\"~ col gap1\" p3 hover:bg-active class=\"${\n _ssrRenderClass(build.slug === selected.value?.slug ? 'text-primary bg-active' : '')\n }\"${\n _scopeId\n }><code${\n _scopeId\n }>${\n _ssrInterpolate(build.name)\n }</code><div flex=\"~ gap-1 items-center wrap\" w-full text-sm op60${\n _scopeId\n }><div i-carbon-time${\n _scopeId\n }></div><span${\n _scopeId\n }>${\n _ssrInterpolate(getDuration(build))\n }</span><div flex-auto${\n _scopeId\n }></div><span${\n _scopeId\n }>${\n _ssrInterpolate(_unref(formatTimeAgo)(new Date(build.endTime)))\n }</span></div></button><div x-divider${\n _scopeId\n }></div><!--]-->`)\n })\n _push(`<!--]--><div flex=\"~ items-center justify-center wrap\" p4${_scopeId}>`)\n if (!_unref(info)?.isBuilding) {\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"primary\",\n icon: \"carbon-edge-node\",\n onClick: ($event: any) => (start())\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Start a new build `)\n } else {\n return [\n _createTextVNode(\" Start a new build \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n } else {\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"primary\",\n icon: \"carbon-circle-dash animate-spin\",\n title: \"Open the output in the Terminals dock\",\n onClick: ($event: any) => (revealTerminal())\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Building... `)\n } else {\n return [\n _createTextVNode(\" Building... \")\n ]\n }\n }),\n _: 1\n }, _parent, _scopeId))\n }\n _push(`</div></div>`)\n } else {\n return [\n _createVNode(\"div\", { flex: \"~ col\" }, [\n (_openBlock(true), _createBlock(_Fragment, null, _renderList(_unref(info)?.builds, (build) => {\n return (_openBlock(), _createBlock(_Fragment, {\n key: build.slug\n }, [\n _createVNode(\"button\", {\n flex: \"~ col gap1\",\n p3: \"\",\n \"hover:bg-active\": \"\",\n class: build.slug === selected.value?.slug ? 'text-primary bg-active' : '',\n onClick: ($event: any) => (slug.value = build.slug)\n }, [\n _createVNode(\"code\", null, _toDisplayString(build.name), 1),\n _createVNode(\"div\", {\n flex: \"~ gap-1 items-center wrap\",\n \"w-full\": \"\",\n \"text-sm\": \"\",\n op60: \"\"\n }, [\n _createVNode(\"div\", { \"i-carbon-time\": \"\" }),\n _createVNode(\"span\", null, _toDisplayString(getDuration(build)), 1),\n _createVNode(\"div\", { \"flex-auto\": \"\" }),\n _createVNode(\"span\", null, _toDisplayString(_unref(formatTimeAgo)(new Date(build.endTime))), 1)\n ])\n ], 10, [\"onClick\"]),\n _createVNode(\"div\", { \"x-divider\": \"\" })\n ], 64))\n }), 128)),\n _createVNode(\"div\", {\n flex: \"~ items-center justify-center wrap\",\n p4: \"\"\n }, [\n (!_unref(info)?.isBuilding)\n ? (_openBlock(), _createBlock(_component_NButton, {\n key: 0,\n n: \"primary\",\n icon: \"carbon-edge-node\",\n onClick: ($event: any) => (start())\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Start a new build \")\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n : (_openBlock(), _createBlock(_component_NButton, {\n key: 1,\n n: \"primary\",\n icon: \"carbon-circle-dash animate-spin\",\n title: \"Open the output in the Terminals dock\",\n onClick: ($event: any) => (revealTerminal())\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Building... \")\n ]),\n _: 1\n }, 8, [\"onClick\"]))\n ])\n ])\n ]\n }\n }),\n right: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n if (selected.value) {\n _push(_ssrRenderComponent(_component_BuildAnalyzeDetails, { current: selected.value }, null, _parent, _scopeId))\n } else {\n _push(_ssrRenderComponent(_component_NPanelGrids, null, null, _parent, _scopeId))\n }\n } else {\n return [\n (selected.value)\n ? (_openBlock(), _createBlock(_component_BuildAnalyzeDetails, {\n key: 0,\n current: selected.value\n }, null, 8, [\"current\"]))\n : (_openBlock(), _createBlock(_component_NPanelGrids, { key: 1 }))\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(_ssrRenderComponent(_unref(PromiseConfirm), null, {\n default: _withCtx(({ resolve }, _push, _parent, _scopeId) => {\n if (_push) {\n _push(_ssrRenderComponent(_component_NDialog, {\n \"model-value\": true,\n onClose: ($event: any) => (resolve(false))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(`<div flex=\"~ col gap-1\" w-250 p4${\n _scopeId\n }><h3 class=\"text-lg font-medium leading-6\" mb2${\n _scopeId\n }> Start analyze build? </h3><p op50${\n _scopeId\n }> Enter the name of the build: </p>`)\n _push(_ssrRenderComponent(_component_NTextInput, {\n modelValue: buildNameInput.value,\n \"onUpdate:modelValue\": ($event: any) => ((buildNameInput).value = $event),\n placeholder: \"Build name\"\n }, null, _parent, _scopeId))\n if (buildNameConflicted.value) {\n _push(_ssrRenderComponent(_component_NTip, { \"n-orange\": \"\" }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` A build with the same name already exists, continue would overrides the previous build result. `)\n } else {\n return [\n _createTextVNode(\" A build with the same name already exists, continue would overrides the previous build result. \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n } else {\n _push(`<!---->`)\n }\n _push(`<div my3 x-divider${\n _scopeId\n }></div><p op50${\n _scopeId\n }> The following command will be executed in your terminal: </p>`)\n _push(_ssrRenderComponent(_component_NCodeBlock, {\n code: `npx nuxi analyze --no-serve --name=${buildNameInput.value}`,\n lang: \"bash\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, _parent, _scopeId))\n _push(_ssrRenderComponent(_component_NCheckbox, {\n modelValue: shouldRevealTerminal.value,\n \"onUpdate:modelValue\": ($event: any) => ((shouldRevealTerminal).value = $event),\n mt2: \"\",\n n: \"primary\"\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Open the Terminals dock `)\n } else {\n return [\n _createTextVNode(\" Open the Terminals dock \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(`<div flex=\"~ gap-3\" mt2 justify-end${_scopeId}>`)\n _push(_ssrRenderComponent(_component_NButton, {\n onClick: ($event: any) => (resolve(false))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Cancel `)\n } else {\n return [\n _createTextVNode(\" Cancel \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(_ssrRenderComponent(_component_NButton, {\n n: \"solid primary\",\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx((_, _push, _parent, _scopeId) => {\n if (_push) {\n _push(` Start `)\n } else {\n return [\n _createTextVNode(\" Start \")\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n _push(`</div></div>`)\n } else {\n return [\n _createVNode(\"div\", {\n flex: \"~ col gap-1\",\n \"w-250\": \"\",\n p4: \"\"\n }, [\n _createVNode(\"h3\", {\n class: \"text-lg font-medium leading-6\",\n mb2: \"\"\n }, \" Start analyze build? \"),\n _createVNode(\"p\", { op50: \"\" }, \" Enter the name of the build: \"),\n _createVNode(_component_NTextInput, {\n modelValue: buildNameInput.value,\n \"onUpdate:modelValue\": ($event: any) => ((buildNameInput).value = $event),\n placeholder: \"Build name\"\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n (buildNameConflicted.value)\n ? (_openBlock(), _createBlock(_component_NTip, {\n key: 0,\n \"n-orange\": \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" A build with the same name already exists, continue would overrides the previous build result. \")\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(\"div\", {\n my3: \"\",\n \"x-divider\": \"\"\n }),\n _createVNode(\"p\", { op50: \"\" }, \" The following command will be executed in your terminal: \"),\n _createVNode(_component_NCodeBlock, {\n code: `npx nuxi analyze --no-serve --name=${buildNameInput.value}`,\n lang: \"bash\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, 8, [\"code\"]),\n _createVNode(_component_NCheckbox, {\n modelValue: shouldRevealTerminal.value,\n \"onUpdate:modelValue\": ($event: any) => ((shouldRevealTerminal).value = $event),\n mt2: \"\",\n n: \"primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Open the Terminals dock \")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n _createVNode(\"div\", {\n flex: \"~ gap-3\",\n mt2: \"\",\n \"justify-end\": \"\"\n }, [\n _createVNode(_component_NButton, {\n onClick: ($event: any) => (resolve(false))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Cancel \")\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_NButton, {\n n: \"solid primary\",\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Start \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ])\n ]\n }\n }),\n _: 2\n }, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_NDialog, {\n \"model-value\": true,\n onClose: ($event: any) => (resolve(false))\n }, {\n default: _withCtx(() => [\n _createVNode(\"div\", {\n flex: \"~ col gap-1\",\n \"w-250\": \"\",\n p4: \"\"\n }, [\n _createVNode(\"h3\", {\n class: \"text-lg font-medium leading-6\",\n mb2: \"\"\n }, \" Start analyze build? \"),\n _createVNode(\"p\", { op50: \"\" }, \" Enter the name of the build: \"),\n _createVNode(_component_NTextInput, {\n modelValue: buildNameInput.value,\n \"onUpdate:modelValue\": ($event: any) => ((buildNameInput).value = $event),\n placeholder: \"Build name\"\n }, null, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n (buildNameConflicted.value)\n ? (_openBlock(), _createBlock(_component_NTip, {\n key: 0,\n \"n-orange\": \"\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" A build with the same name already exists, continue would overrides the previous build result. \")\n ]),\n _: 1\n }))\n : _createCommentVNode(\"\", true),\n _createVNode(\"div\", {\n my3: \"\",\n \"x-divider\": \"\"\n }),\n _createVNode(\"p\", { op50: \"\" }, \" The following command will be executed in your terminal: \"),\n _createVNode(_component_NCodeBlock, {\n code: `npx nuxi analyze --no-serve --name=${buildNameInput.value}`,\n lang: \"bash\",\n px4: \"\",\n py2: \"\",\n border: \"~ base rounded\",\n lines: false\n }, null, 8, [\"code\"]),\n _createVNode(_component_NCheckbox, {\n modelValue: shouldRevealTerminal.value,\n \"onUpdate:modelValue\": ($event: any) => ((shouldRevealTerminal).value = $event),\n mt2: \"\",\n n: \"primary\"\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Open the Terminals dock \")\n ]),\n _: 1\n }, 8, [\"modelValue\", \"onUpdate:modelValue\"]),\n _createVNode(\"div\", {\n flex: \"~ gap-3\",\n mt2: \"\",\n \"justify-end\": \"\"\n }, [\n _createVNode(_component_NButton, {\n onClick: ($event: any) => (resolve(false))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Cancel \")\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n _createVNode(_component_NButton, {\n n: \"solid primary\",\n onClick: ($event: any) => (resolve(true))\n }, {\n default: _withCtx(() => [\n _createTextVNode(\" Start \")\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ])\n ])\n ]),\n _: 2\n }, 1032, [\"onClose\"])\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_DocsAnalyzeBuild, null, null, _parent, _scopeId))\n } else {\n return [\n _createVNode(_component_DocsAnalyzeBuild)\n ]\n }\n }),\n _: 1\n }, _parent))\n _push(`<!--]-->`)\n}\n}\n\n})","<script setup lang=\"ts\">\nimport type { AnalyzeBuildMeta } from '~/../src/types'\nimport { createTemplatePromise, formatTimeAgo } from '@vueuse/core'\nimport { computed, ref } from 'vue'\nimport { definePageMeta } from '#imports'\nimport { satisfyNuxtVersion } from '~/composables/npm'\nimport { rpc } from '~/composables/rpc'\nimport { useAnalyzeBuildInfo } from '~/composables/state'\nimport { registerCommands } from '~/composables/state-commands'\nimport { telemetry } from '~/composables/telemetry'\nimport { useSessionState } from '~/composables/utils'\n\ndefinePageMeta({\n icon: 'carbon-edge-node',\n title: 'Build Analyze',\n layout: 'full',\n category: 'analyze',\n show() {\n return satisfyNuxtVersion('^3.5.0')\n },\n})\n\nconst PromiseConfirm = createTemplatePromise<boolean>()\n\nconst info = useAnalyzeBuildInfo()\nconst slug = useSessionState<string>('analyze-build:slug', '')\n\nconst selected = computed(() => info.value?.builds.find(b => b.slug === slug.value) ?? info.value?.builds[0])\n\nconst shouldRevealTerminal = ref(false)\n\nconst buildNameInput = ref('')\nconst buildNameConflicted = computed(() => info.value?.builds.some(b => b.name === buildNameInput.value.trim()))\nasync function start() {\n buildNameInput.value = await rpc.generateAnalyzeBuildName()\n\n if (!await PromiseConfirm.start())\n return\n\n telemetry('analyze-build:start')\n\n // `startAnalyzeBuild` refreshes `getAnalyzeBuildInfo` as soon as the session\n // registers, so `info.isBuilding` / `info.activeSessionId` drive the UI. It\n // also returns the id so we can reveal the dock immediately.\n const sessionId = await rpc.startAnalyzeBuild(buildNameInput.value)\n if (shouldRevealTerminal.value)\n rpc.revealTerminal(sessionId)\n}\n\nfunction getDuration(build: AnalyzeBuildMeta) {\n return `${((build.endTime - build.startTime) / 1000).toFixed(1)}s`\n}\n\nfunction revealTerminal() {\n if (info.value?.activeSessionId)\n rpc.revealTerminal(info.value.activeSessionId)\n}\n\nregisterCommands(() => [\n {\n id: 'action:analyze-build: start',\n title: 'Start a new analyze build',\n icon: 'i-carbon-edge-node',\n action: start,\n },\n])\n</script>\n\n<template>\n <NSplitPane :left-size=\"30\">\n <template #left>\n <div flex=\"~ col\">\n <template v-for=\"build of info?.builds\" :key=\"build.slug\">\n <button\n flex=\"~ col gap1\" p3 hover:bg-active\n :class=\"build.slug === selected?.slug ? 'text-primary bg-active' : ''\"\n @click=\"slug = build.slug\"\n >\n <code>{{ build.name }}</code>\n <div flex=\"~ gap-1 items-center wrap\" w-full text-sm op60>\n <div i-carbon-time />\n <span>{{ getDuration(build) }}</span>\n <div flex-auto />\n <span>{{ formatTimeAgo(new Date(build.endTime)) }}</span>\n </div>\n </button>\n <div x-divider />\n </template>\n <div flex=\"~ items-center justify-center wrap\" p4>\n <NButton v-if=\"!info?.isBuilding\" n=\"primary\" icon=\"carbon-edge-node\" @click=\"start()\">\n Start a new build\n </NButton>\n <NButton v-else n=\"primary\" icon=\"carbon-circle-dash animate-spin\" title=\"Open the output in the Terminals dock\" @click=\"revealTerminal()\">\n Building...\n </NButton>\n </div>\n </div>\n </template>\n <template #right>\n <BuildAnalyzeDetails v-if=\"selected\" :current=\"selected\" />\n <NPanelGrids v-else />\n </template>\n </NSplitPane>\n\n <PromiseConfirm v-slot=\"{ resolve }\">\n <NDialog :model-value=\"true\" @close=\"resolve(false)\">\n <div flex=\"~ col gap-1\" w-250 p4>\n <h3 class=\"text-lg font-medium leading-6\" mb2>\n Start analyze build?\n </h3>\n <p op50>\n Enter the name of the build:\n </p>\n <NTextInput\n v-model=\"buildNameInput\"\n placeholder=\"Build name\"\n />\n <NTip v-if=\"buildNameConflicted\" n-orange>\n A build with the same name already exists, continue would overrides the previous build result.\n </NTip>\n <div my3 x-divider />\n <p op50>\n The following command will be executed in your terminal:\n </p>\n <NCodeBlock\n :code=\"`npx nuxi analyze --no-serve --name=${buildNameInput}`\"\n lang=\"bash\" px4 py2 border=\"~ base rounded\"\n :lines=\"false\"\n />\n <NCheckbox v-model=\"shouldRevealTerminal\" mt2 n=\"primary\">\n Open the Terminals dock\n </NCheckbox>\n\n <div flex=\"~ gap-3\" mt2 justify-end>\n <NButton @click=\"resolve(false)\">\n Cancel\n </NButton>\n <NButton n=\"solid primary\" @click=\"resolve(true)\">\n Start\n </NButton>\n </div>\n </div>\n </NDialog>\n </PromiseConfirm>\n\n <HelpFab>\n <DocsAnalyzeBuild />\n </HelpFab>\n</template>\n"],"version":3}