@karan171996/metricflow 0.13.0 → 0.15.1

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 (204) hide show
  1. package/.next/BUILD_ID +1 -1
  2. package/.next/app-path-routes-manifest.json +1 -0
  3. package/.next/build-manifest.json +7 -6
  4. package/.next/fallback-build-manifest.json +3 -3
  5. package/.next/next-server.js.nft.json +1 -1
  6. package/.next/prerender-manifest.json +9 -9
  7. package/.next/required-server-files.js +9 -5
  8. package/.next/required-server-files.json +9 -5
  9. package/.next/routes-manifest.json +6 -0
  10. package/.next/server/app/_global-error/page/build-manifest.json +4 -3
  11. package/.next/server/app/_global-error/page.js.nft.json +1 -1
  12. package/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
  13. package/.next/server/app/_global-error.html +1 -1
  14. package/.next/server/app/_global-error.rsc +1 -1
  15. package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  16. package/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  17. package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  18. package/.next/server/app/_not-found/page/build-manifest.json +4 -3
  19. package/.next/server/app/_not-found/page.js +1 -1
  20. package/.next/server/app/_not-found/page.js.nft.json +1 -1
  21. package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  22. package/.next/server/app/_not-found.html +2 -2
  23. package/.next/server/app/_not-found.rsc +23 -22
  24. package/.next/server/app/_not-found.segments/_full.segment.rsc +23 -22
  25. package/.next/server/app/_not-found.segments/_index.segment.rsc +12 -11
  26. package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +7 -7
  27. package/.next/server/app/_not-found.segments/_tree.segment.rsc +1 -1
  28. package/.next/server/app/api/analyze/route.js +1 -1
  29. package/.next/server/app/api/analyze/route.js.nft.json +1 -1
  30. package/.next/server/app/api/connect/route.js +1 -1
  31. package/.next/server/app/api/connect/route.js.nft.json +1 -1
  32. package/.next/server/app/api/health/route.js.nft.json +1 -1
  33. package/.next/server/app/api/lighthouse/route/app-paths-manifest.json +3 -0
  34. package/.next/server/app/api/lighthouse/route/build-manifest.json +12 -0
  35. package/.next/server/app/api/lighthouse/route/server-reference-manifest.json +4 -0
  36. package/.next/server/app/api/lighthouse/route.js +7 -0
  37. package/.next/server/app/api/lighthouse/route.js.nft.json +1 -0
  38. package/.next/server/app/api/lighthouse/route_client-reference-manifest.js +3 -0
  39. package/.next/server/app/api/metrics/route.js +3 -1
  40. package/.next/server/app/api/metrics/route.js.nft.json +1 -1
  41. package/.next/server/app/api/settings/route.js.nft.json +1 -1
  42. package/.next/server/app/api/setup/ai/route.js +1 -1
  43. package/.next/server/app/api/setup/ai/route.js.nft.json +1 -1
  44. package/.next/server/app/api/setup/route.js +4 -3
  45. package/.next/server/app/api/setup/route.js.nft.json +1 -1
  46. package/.next/server/app/api/timings/route.js.nft.json +1 -1
  47. package/.next/server/app/connect/page/build-manifest.json +4 -3
  48. package/.next/server/app/connect/page.js +1 -1
  49. package/.next/server/app/connect/page.js.nft.json +1 -1
  50. package/.next/server/app/connect/page_client-reference-manifest.js +1 -1
  51. package/.next/server/app/connect.html +2 -2
  52. package/.next/server/app/connect.rsc +24 -23
  53. package/.next/server/app/connect.segments/_full.segment.rsc +24 -23
  54. package/.next/server/app/connect.segments/_index.segment.rsc +12 -11
  55. package/.next/server/app/connect.segments/_tree.segment.rsc +1 -1
  56. package/.next/server/app/connect.segments/connect/__PAGE__.segment.rsc +12 -12
  57. package/.next/server/app/icon.svg/route.js +1 -1
  58. package/.next/server/app/icon.svg/route.js.nft.json +1 -1
  59. package/.next/server/app/icon.svg.body +4 -2
  60. package/.next/server/app/index.html +2 -2
  61. package/.next/server/app/index.rsc +27 -26
  62. package/.next/server/app/index.segments/__PAGE__.segment.rsc +7 -7
  63. package/.next/server/app/index.segments/_full.segment.rsc +27 -26
  64. package/.next/server/app/index.segments/_index.segment.rsc +12 -11
  65. package/.next/server/app/index.segments/_tree.segment.rsc +1 -1
  66. package/.next/server/app/page/build-manifest.json +4 -3
  67. package/.next/server/app/page.js +1 -1
  68. package/.next/server/app/page.js.nft.json +1 -1
  69. package/.next/server/app/page_client-reference-manifest.js +1 -1
  70. package/.next/server/app/performance/[slug]/page/build-manifest.json +4 -3
  71. package/.next/server/app/performance/[slug]/page.js +3 -3
  72. package/.next/server/app/performance/[slug]/page.js.nft.json +1 -1
  73. package/.next/server/app/performance/[slug]/page_client-reference-manifest.js +1 -1
  74. package/.next/server/app/performance/page/build-manifest.json +4 -3
  75. package/.next/server/app/performance/page.js +1 -1
  76. package/.next/server/app/performance/page.js.nft.json +1 -1
  77. package/.next/server/app/performance/page_client-reference-manifest.js +1 -1
  78. package/.next/server/app/performance.html +2 -2
  79. package/.next/server/app/performance.rsc +32 -31
  80. package/.next/server/app/performance.segments/_full.segment.rsc +32 -31
  81. package/.next/server/app/performance.segments/_index.segment.rsc +12 -11
  82. package/.next/server/app/performance.segments/_tree.segment.rsc +1 -1
  83. package/.next/server/app/performance.segments/performance/__PAGE__.segment.rsc +14 -14
  84. package/.next/server/app/settings/page/build-manifest.json +4 -3
  85. package/.next/server/app/settings/page.js +1 -1
  86. package/.next/server/app/settings/page.js.nft.json +1 -1
  87. package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  88. package/.next/server/app/setup/page/build-manifest.json +4 -3
  89. package/.next/server/app/setup/page.js +1 -1
  90. package/.next/server/app/setup/page.js.nft.json +1 -1
  91. package/.next/server/app/setup/page_client-reference-manifest.js +1 -1
  92. package/.next/server/app/setup.html +2 -2
  93. package/.next/server/app/setup.rsc +25 -24
  94. package/.next/server/app/setup.segments/_full.segment.rsc +25 -24
  95. package/.next/server/app/setup.segments/_index.segment.rsc +12 -11
  96. package/.next/server/app/setup.segments/_tree.segment.rsc +1 -1
  97. package/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +13 -13
  98. package/.next/server/app/tools/[tool]/page/build-manifest.json +4 -3
  99. package/.next/server/app/tools/[tool]/page.js +2 -2
  100. package/.next/server/app/tools/[tool]/page.js.nft.json +1 -1
  101. package/.next/server/app/tools/[tool]/page_client-reference-manifest.js +1 -1
  102. package/.next/server/app-paths-manifest.json +1 -0
  103. package/.next/server/chunks/[externals]__0_9e0si._.js +3 -0
  104. package/.next/server/chunks/[externals]__1f7xi3d._.js +3 -0
  105. package/.next/server/chunks/{[externals]__0lanngu._.js → [externals]__1rfyr-i._.js} +1 -1
  106. package/.next/server/chunks/[externals]_chrome-launcher_1k_yki1._.js +3 -0
  107. package/.next/server/chunks/[externals]_lighthouse_1su6d37._.js +3 -0
  108. package/.next/server/chunks/[root-of-the-server]__0_6kr31._.js +3 -0
  109. package/.next/server/chunks/[root-of-the-server]__0az11z3._.js +3 -0
  110. package/.next/server/chunks/[root-of-the-server]__0dv0ig6._.js +1 -1
  111. package/.next/server/chunks/[root-of-the-server]__0egyynf._.js +3 -0
  112. package/.next/server/chunks/[root-of-the-server]__0fkj1-q._.js +1 -1
  113. package/.next/server/chunks/[root-of-the-server]__0vbatar._.js +3 -0
  114. package/.next/server/chunks/[root-of-the-server]__1231g--._.js +3 -0
  115. package/.next/server/chunks/[root-of-the-server]__12lkcy1._.js +3 -0
  116. package/.next/server/chunks/[root-of-the-server]__1mj-h97._.js +3 -0
  117. package/.next/server/chunks/[turbopack]_runtime.js +132 -0
  118. package/.next/server/chunks/_0w8wvdn._.js +1 -1
  119. package/.next/server/chunks/_0wct7-r._.js +1 -1
  120. package/.next/server/chunks/_1f80q3b._.js +2 -2
  121. package/.next/server/chunks/_next-internal_server_app_api_lighthouse_route_actions_1_4ee8x.js +3 -0
  122. package/.next/server/chunks/lib_analytics_index_ts_00-ju4e._.js +20 -0
  123. package/.next/server/chunks/ssr/0x0c_next_dist_0lkq344._.js +1 -1
  124. package/.next/server/chunks/ssr/0x0c_next_dist_1icgwks._.js +1 -1
  125. package/.next/server/chunks/ssr/{node_modules__pnpm_1nkgz3w._.js → 10ci_lucide-react_dist_esm_Icon_mjs_05sy43t._.js} +2 -2
  126. package/.next/server/chunks/ssr/[externals]_chrome-launcher_1k_yki1._.js +3 -0
  127. package/.next/server/chunks/ssr/[externals]_lighthouse_1su6d37._.js +3 -0
  128. package/.next/server/chunks/ssr/[root-of-the-server]__02c3m72._.js +1 -1
  129. package/.next/server/chunks/ssr/[root-of-the-server]__0g1dtzd._.js +1 -1
  130. package/.next/server/chunks/ssr/{[root-of-the-server]__11p3jmb._.js → [root-of-the-server]__0hifh__._.js} +2 -2
  131. package/.next/server/chunks/ssr/[root-of-the-server]__0l4t71c._.js +1 -1
  132. package/.next/server/chunks/ssr/[root-of-the-server]__0tz50uc._.js +3 -0
  133. package/.next/server/chunks/ssr/[root-of-the-server]__0xjblsu._.js +3 -0
  134. package/.next/server/chunks/ssr/{[root-of-the-server]__1r29vac._.js → [root-of-the-server]__13w6d6f._.js} +2 -2
  135. package/.next/server/chunks/ssr/[root-of-the-server]__146cm0r._.js +1 -1
  136. package/.next/server/chunks/ssr/[root-of-the-server]__14_2v5e._.js +1 -1
  137. package/.next/server/chunks/ssr/[root-of-the-server]__1cl7b4r._.js +1 -1
  138. package/.next/server/chunks/ssr/[turbopack]_runtime.js +132 -0
  139. package/.next/server/chunks/ssr/_0aid3rp._.js +5 -3
  140. package/.next/server/chunks/ssr/{_1b8x2qw._.js → _0cst0jv._.js} +2 -2
  141. package/.next/server/chunks/ssr/{_1-c62g-._.js → _0vl4jhl._.js} +2 -2
  142. package/.next/server/chunks/ssr/{_1op3e_1._.js → _1-l5u-_._.js} +2 -2
  143. package/.next/server/chunks/ssr/{_0r3gp17._.js → _12brazw._.js} +2 -2
  144. package/.next/server/chunks/ssr/_1cfwie5._.js +3 -0
  145. package/.next/server/chunks/ssr/_1d39141._.js +3 -0
  146. package/.next/server/chunks/ssr/_1h52qq9._.js +3 -0
  147. package/.next/server/chunks/ssr/_1n6kmjf._.js +3 -0
  148. package/.next/server/chunks/ssr/{_0zneont._.js → _1ni54_c._.js} +2 -2
  149. package/.next/server/chunks/ssr/{_0-u65it._.js → _1vv2tlg._.js} +2 -2
  150. package/.next/server/chunks/ssr/node_modules__pnpm_1gezzqr._.js +151 -0
  151. package/.next/server/chunks/ssr/{node_modules__pnpm_0hf3oiy._.js → node_modules__pnpm_20_uz79._.js} +2 -2
  152. package/.next/server/middleware-build-manifest.js +7 -6
  153. package/.next/server/middleware.js.nft.json +1 -1
  154. package/.next/server/pages/404.html +2 -2
  155. package/.next/server/pages/500.html +1 -1
  156. package/.next/server/route-cache/APP_PAGE/41da0ef926a63354a29f601d8e8d0a5951196c45ebcd28b7d4708fb7f56f3bf1/$/_not-found.html +2 -0
  157. package/.next/server/route-cache/APP_PAGE/41da0ef926a63354a29f601d8e8d0a5951196c45ebcd28b7d4708fb7f56f3bf1/$/_not-found.meta +1 -0
  158. package/.next/server/route-cache/APP_PAGE/41da0ef926a63354a29f601d8e8d0a5951196c45ebcd28b7d4708fb7f56f3bf1/$/_not-found.rsc +41 -0
  159. package/.next/server/route-cache/APP_PAGE/41da0ef926a63354a29f601d8e8d0a5951196c45ebcd28b7d4708fb7f56f3bf1/$/_not-found.segments/_full.segment.rsc +41 -0
  160. package/.next/server/route-cache/APP_PAGE/41da0ef926a63354a29f601d8e8d0a5951196c45ebcd28b7d4708fb7f56f3bf1/$/_not-found.segments/_index.segment.rsc +32 -0
  161. package/.next/server/route-cache/APP_PAGE/41da0ef926a63354a29f601d8e8d0a5951196c45ebcd28b7d4708fb7f56f3bf1/$/_not-found.segments/_not-found/__PAGE__.segment.rsc +20 -0
  162. package/.next/server/route-cache/APP_PAGE/41da0ef926a63354a29f601d8e8d0a5951196c45ebcd28b7d4708fb7f56f3bf1/$/_not-found.segments/_tree.segment.rsc +2 -0
  163. package/.next/server/server-reference-manifest.js +1 -1
  164. package/.next/server/server-reference-manifest.json +1 -1
  165. package/.next/static/chunks/09gd7q3y6k-9o.js +1 -0
  166. package/.next/static/chunks/0on9boy9udzsk.js +22 -0
  167. package/.next/static/chunks/{3pxx39yay0ace.js → 0xrcyj-flkrl1.js} +1 -1
  168. package/.next/static/chunks/16dm0t9zkiz1_.js +31 -0
  169. package/.next/static/chunks/1qvxxmozdr7-c.js +1 -0
  170. package/.next/static/chunks/2wutbn1zdrzvx.js +1 -0
  171. package/.next/static/chunks/3somw8tkd8pzf.js +1 -0
  172. package/.next/static/chunks/3twacs-22zdwk.js +1 -0
  173. package/.next/static/chunks/{32-2bttdrtgys.js → 458nt4gshcy9x.js} +1 -1
  174. package/.next/static/chunks/turbopack-3icatqv27j50p.js +1 -0
  175. package/.next/static/media/icon.36lva-cxqp491.svg +6 -0
  176. package/.next/trace +1 -1
  177. package/.next/trace-build +1 -1
  178. package/README.md +6 -1
  179. package/bin/cli.mjs +14 -3
  180. package/bin/output.mjs +2 -0
  181. package/package.json +23 -16
  182. package/.next/server/chunks/[root-of-the-server]__0086g9z._.js +0 -3
  183. package/.next/server/chunks/[root-of-the-server]__0ui-otz._.js +0 -3
  184. package/.next/server/chunks/[root-of-the-server]__0urnrab._.js +0 -3
  185. package/.next/server/chunks/[root-of-the-server]__0wkeqwu._.js +0 -3
  186. package/.next/server/chunks/[root-of-the-server]__0xmaf60._.js +0 -18
  187. package/.next/server/chunks/[root-of-the-server]__0xy2rkf._.js +0 -18
  188. package/.next/server/chunks/ssr/[root-of-the-server]__0kik87u._.js +0 -3
  189. package/.next/server/chunks/ssr/[root-of-the-server]__1jyq1xk._.js +0 -3
  190. package/.next/server/chunks/ssr/_01vg-zb._.js +0 -3
  191. package/.next/server/chunks/ssr/_05t4klq._.js +0 -151
  192. package/.next/server/chunks/ssr/_09p8bi4._.js +0 -3
  193. package/.next/server/chunks/ssr/_1vj5488._.js +0 -3
  194. package/.next/static/chunks/0y_7csdv76zje.js +0 -1
  195. package/.next/static/chunks/2ez5lwfhls4_u.js +0 -1
  196. package/.next/static/chunks/3pn7ef-_3czj3.js +0 -1
  197. package/.next/static/chunks/3u-yh5wnxswb0.js +0 -1
  198. package/.next/static/chunks/3vpvl6gwhuz4w.js +0 -22
  199. package/.next/static/chunks/42z_0gfabqpr_.js +0 -31
  200. package/.next/static/chunks/turbopack-2-umre2j9nu7o.js +0 -1
  201. package/.next/static/media/icon.23mz8iwcatff2.svg +0 -4
  202. /package/.next/static/{RRS37EvIgWi0J_47nxSZN → 8LtMJdCno9wkpYotBJePk}/_buildManifest.js +0 -0
  203. /package/.next/static/{RRS37EvIgWi0J_47nxSZN → 8LtMJdCno9wkpYotBJePk}/_clientMiddlewareManifest.js +0 -0
  204. /package/.next/static/{RRS37EvIgWi0J_47nxSZN → 8LtMJdCno9wkpYotBJePk}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,55370,e=>{"use strict";var t=e.i(40798),a=e.i(96341),r=e.i(70065),s=e.i(67881),i=e.i(23750);let n=[{id:"gemini",label:"Google Gemini",help:"Create a key at aistudio.google.com/apikey."},{id:"claude",label:"Anthropic Claude",help:"Create a key at console.anthropic.com > API keys."},{id:"openai",label:"OpenAI",help:"Create a key at platform.openai.com/api-keys."}];e.s(["AiKeyForm",0,function(){let[e,o]=(0,a.useState)(n[0].id),[l,d]=(0,a.useState)(""),[c,u]=(0,a.useState)(null),[h,m]=(0,a.useState)({}),[x,p]=(0,a.useState)(null),[g,f]=(0,a.useState)(!1);async function v(t){t.preventDefault(),f(!0),p(null);try{let t=await fetch("/api/setup/ai",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({provider:e,key:l})}),a=await t.json();a.saved?(d(""),u(e),m({...h,[e]:!0}),p({ok:!0,text:"Saved. AI suggestions now use this provider. No restart needed."})):p({ok:!1,text:a.error??"Nothing was saved."})}catch{p({ok:!1,text:"Could not reach the dashboard server."})}finally{f(!1)}}(0,a.useEffect)(()=>{fetch("/api/setup/ai").then(e=>e.json()).then(e=>{e.keys&&(m(e.keys),u(e.provider),e.provider&&o(e.provider))}).catch(()=>{})},[]);let b=n.find(t=>t.id===e);return(0,t.jsxs)(r.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl mt-6",children:[(0,t.jsxs)(r.CardHeader,{children:[(0,t.jsx)(r.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"AI suggestions (optional)"}),(0,t.jsx)(r.CardDescription,{className:"text-sm text-gray-400",children:"Add a Gemini, Claude or OpenAI key to get AI insights and recommendations for your pages. Only page names, load times and error counts are sent to the provider you pick. Without a key, the dashboard shows sample suggestions."})]}),(0,t.jsx)(r.CardContent,{children:(0,t.jsxs)("form",{onSubmit:v,className:"flex flex-col gap-5",children:[(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsx)("label",{htmlFor:"ai-provider",className:"text-sm font-medium text-gray-300",children:"Provider"}),(0,t.jsx)("select",{id:"ai-provider",value:e,onChange:e=>o(e.target.value),className:"h-9 rounded-md border border-[#2d3748] bg-[#0f1419] px-3 text-sm text-gray-200",children:n.map(e=>(0,t.jsxs)("option",{value:e.id,children:[e.label,c===e.id?" (in use)":h[e.id]?" (key saved)":""]},e.id))})]}),(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("label",{htmlFor:"ai-key",className:"text-sm font-medium text-gray-300",children:[b.label," API key ",h[e]&&(0,t.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,t.jsx)(i.Input,{id:"ai-key",type:"password",autoComplete:"off",spellCheck:!1,placeholder:h[e]?"•••••••• (type to replace)":"",value:l,onChange:e=>d(e.target.value),"aria-describedby":"ai-key-help",className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,t.jsx)("p",{id:"ai-key-help",className:"text-xs text-gray-400",children:b.help})]}),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)(s.Button,{type:"submit",disabled:g||!l.trim(),children:g?"Checking…":"Check and save"}),(0,t.jsx)("span",{"aria-live":"polite",className:`text-sm ${x?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:x?.text})]})]})})]})}])},4603,e=>{"use strict";var t=e.i(40798),a=e.i(96341),r=e.i(3547),s=e.i(70065),i=e.i(67881),n=e.i(23750),o=e.i(94179),l=e.i(93834);let d=l.TOOL_IDS.flatMap(e=>{let{required:t,anyOf:a=[]}=l.TOOLS[e].keys;return[...t.map(t=>({name:t,tool:e,anyOf:!1,...l.KEY_FIELDS[t]})),...a.map(t=>({name:t,tool:e,anyOf:!0,...l.KEY_FIELDS[t]}))]});e.s(["SetupForm",0,function(){let[e,c]=(0,a.useState)({}),[u,h]=(0,a.useState)({}),[m,x]=(0,a.useState)({}),[p,g]=(0,a.useState)(null),[f,v]=(0,a.useState)(!1),[b,y]=(0,a.useState)(!1),[k,j]=(0,a.useState)(null),N=(0,a.useRef)(null);async function w(t){t.preventDefault(),v(!0),g(null);try{let t=await fetch("/api/setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(e)}),a=await t.json(),r=a.results??{};x(r);let s=d.find(e=>r[e.name]&&!r[e.name].ok);if(s&&setTimeout(()=>N.current?.querySelector(`#${s.name}`)?.focus(),0),a.saved){y(!0),c({});let t=new Set(d.filter(t=>e[t.name]?.trim()).map(e=>e.tool));h(a=>({...a,...Object.fromEntries(d.filter(a=>t.has(a.tool)&&(!a.anyOf||e[a.name]?.trim())).map(e=>[e.name,!0]))}));let a=l.TOOL_IDS.filter(e=>t.has(e)||k?.includes(e));j(a);let r=e.LIGHTHOUSE_TARGET?.trim()?` Lighthouse is now running on your project; follow it on the Lighthouse CI page. ${l.LIGHTHOUSE_WAIT}`:"";g({ok:!0,text:`Saved. ${a.map(e=>l.TOOLS[e].label).join(" and ")} ${a.length>1?"are":"is"} connected. No restart needed.${r}`})}else g({ok:!1,text:a.error??"Nothing was saved. Fix the fields marked below."})}catch{g({ok:!1,text:"Could not reach the dashboard server."})}finally{v(!1)}}return(0,a.useEffect)(()=>{fetch("/api/setup").then(e=>e.json()).then(e=>{e.keys&&h(e.keys),Array.isArray(e.tools)?j(e.tools):e.error&&g({ok:!1,text:e.error})}).catch(()=>{})},[]),(0,t.jsxs)(s.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl",children:[(0,t.jsxs)(s.CardHeader,{children:[(0,t.jsx)(s.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"Connect your tools"}),(0,t.jsx)(s.CardDescription,{className:"text-sm text-gray-400",children:"Add keys for the tools you use. You only need one. Keys are checked once, saved to .env.local in this folder, and never shown again."})]}),(0,t.jsx)(s.CardContent,{children:(0,t.jsxs)("form",{ref:N,onSubmit:w,className:"flex flex-col gap-5",children:[l.TOOL_IDS.map(a=>(0,t.jsxs)("fieldset",{id:a,className:"flex flex-col gap-5 rounded-lg border border-[#2d3748] p-4",children:[(0,t.jsxs)("legend",{className:"flex items-center gap-2 px-2 text-sm font-semibold text-white",children:[l.TOOLS[a].label,k?.includes(a)?(0,t.jsx)(o.Badge,{variant:"outline",className:"border-[#3ee0a1] text-[#3ee0a1] bg-[#3ee0a1]/10",children:"✓ Connected"}):(0,t.jsx)(o.Badge,{variant:"outline",className:"border-[#4a5568] text-gray-400",children:"Optional"})]}),d.filter(e=>e.tool===a).map(a=>{let r=m[a.name];return(0,t.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,t.jsxs)("label",{htmlFor:a.name,className:"text-sm font-medium text-gray-300",children:[a.label," ",u[a.name]&&(0,t.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,t.jsx)(n.Input,{id:a.name,name:a.name,type:a.secret?"password":"text",autoComplete:"off",spellCheck:!1,placeholder:u[a.name]?"•••••••• (leave blank to keep, type to replace)":a.placeholder??"",value:e[a.name]??"",onChange:t=>c({...e,[a.name]:t.target.value}),"aria-invalid":!!r&&!r.ok||void 0,"aria-describedby":`${a.name}-help ${a.name}-result`,className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,t.jsx)("p",{id:`${a.name}-help`,className:"text-xs text-gray-400",children:a.help}),(0,t.jsxs)("div",{id:`${a.name}-result`,"aria-live":"polite",children:[r&&!r.ok&&(0,t.jsxs)("p",{className:"text-xs text-[#f87171]",children:["✗ ",r.error]}),r?.ok&&(0,t.jsx)("p",{className:"text-xs text-[#3ee0a1]",children:"✓ Checked"}),r?.notice&&(0,t.jsx)("p",{className:"text-xs text-[#fbbf24]",children:r.notice})]})]},a.name)}),l.TOOLS[a].setupNote&&(0,t.jsx)("p",{className:"text-xs text-gray-400",children:l.TOOLS[a].setupNote})]},a)),(0,t.jsxs)("div",{className:"flex items-center gap-4",children:[(0,t.jsx)(i.Button,{type:"submit",disabled:f||!d.some(t=>e[t.name]?.trim()),children:f?"Checking…":"Check and save"}),(0,t.jsx)("span",{"aria-live":"polite",className:`text-sm ${p?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:p?.text}),!d.some(t=>e[t.name]?.trim())&&!p&&!b&&(0,t.jsx)("span",{className:"text-sm text-gray-400",children:k?.length?"Type a new key to change what is saved.":"Fill in every field for at least one tool."}),b&&(0,t.jsx)(r.default,{href:"/connect",className:(0,i.buttonVariants)({variant:"outline"}),children:"Next: connect your app"})]})]})})]})}])},94179,e=>{"use strict";var t=e.i(39294),a=e.i(69322),r=e.i(94237),s=e.i(27152);let i=(0,r.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});e.s(["Badge",0,function({className:e,variant:r="default",render:n,...o}){return(0,a.useRender)({defaultTagName:"span",props:(0,t.mergeProps)({className:(0,s.cn)(i({variant:r}),e)},o),render:n,state:{slot:"badge",variant:r}})}])},70065,e=>{"use strict";var t=e.i(40798),a=e.i(27152);e.s(["Card",0,function({className:e,size:r="default",...s}){return(0,t.jsx)("div",{"data-slot":"card","data-size":r,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...s})},"CardContent",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...r})},"CardDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",e),...r})},"CardHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...r})},"CardTitle",0,function({className:e,...r}){return(0,t.jsx)("h3",{"data-slot":"card-title",className:(0,a.cn)("title-enter font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...r})}])},42230,e=>{"use strict";var t=e.i(96341);let a=(...e)=>e.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim(),r={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},s=(0,t.createContext)({}),i=(0,t.forwardRef)(({color:e,size:i,width:n,height:o,strokeWidth:l,absoluteStrokeWidth:d,nonScalingStroke:c,className:u="",children:h,iconNode:m=[],icon:x={node:m,aliases:[],size:24},...p},g)=>{let{size:f=24,strokeWidth:v=2,absoluteStrokeWidth:b=!1,nonScalingStroke:y=!1,color:k="currentColor",className:j=""}=(0,t.useContext)(s)??{},N=!!h||(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(p),[w,C,S=[]]=function(e,t={}){return function(e,t={}){let s=t.attributeNames??{},i=e=>s[e]??e,n=e.size??e.width??r.width,o=e.size??e.height??r.height,l=e.aliases?.filter(e=>"string"==typeof e&&""!==e.trim()).map(e=>`lucide-${e}`)??[],d=[...e.name?[`lucide-${e.name}`]:[],...l],c=t.className?.split(" ").filter(Boolean)??[],u=!1===t.includeDefaultClasses?a(...c):a("lucide",...d,...c),h=t.absoluteStrokeWidth?Number(t.strokeWidth??r["stroke-width"])*Number(e.size??e.width??r.width)/Number(t.size??t.width??r.width):t.strokeWidth??r["stroke-width"];return["svg",{...Object.entries(r).reduce((e,[t,a])=>(e[i(t)]=a,e),{}),..."color"in t&&t.color&&{[i("stroke")]:t.color},..."size"in t&&null!=t.size&&{[i("width")]:t.size,[i("height")]:t.size},..."width"in t&&null!=t.width&&{[i("width")]:t.width},..."height"in t&&null!=t.height&&{[i("height")]:t.height},[i("stroke-width")]:h,...u&&{[i("class")]:u},[i("viewBox")]:`0 0 ${n} ${o}`,...!1===t.hasA11yProp?{[i("aria-hidden")]:"true"}:{},..."attributes"in t&&t.attributes},e.node.map(e=>{let[a,r,s]=e,n=t.nonScalingStroke?{[i("vector-effect")]:"non-scaling-stroke",...r}:r;return s?[a,n,s]:[a,n]})]}(e,{...t,attributeNames:{...t.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(x,{color:e??k,width:n??i??f,height:o??i??f,strokeWidth:l??v,absoluteStrokeWidth:d??b,nonScalingStroke:c??y,className:a(j,u),hasA11yProp:N,attributes:p});return(0,t.createElement)(w,{ref:g,...C},[...S.map(([e,a])=>(0,t.createElement)(e,a)),...Array.isArray(h)?h:[h]])});e.s(["default",0,i],42230)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,24851,e=>{"use strict";var t=e.i(40798),a=e.i(3547),r=e.i(70065),s=e.i(67881);e.s(["EmptyState",0,function({title:e="No data yet",reason:n="Keys work, but no page events have arrived.",href:i="/connect",cta:l="Send your first events",onRetry:o}){return(0,t.jsx)(r.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,t.jsxs)(r.CardContent,{className:"flex flex-col items-center gap-3 p-10 text-center",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-white",children:e}),(0,t.jsx)("p",{className:"max-w-md text-sm text-gray-400",children:n}),(0,t.jsxs)("div",{className:"flex gap-3",children:[i&&(0,t.jsx)(a.default,{href:i,className:(0,s.buttonVariants)(),children:l}),o&&(0,t.jsx)(s.Button,{variant:"outline",onClick:o,children:"Retry"})]})]})})}])},8643,e=>{"use strict";var t=e.i(40798),a=e.i(96341),r=e.i(67881),s=e.i(34813),n=e.i(93834);let i="Could not reach the dashboard server.";e.s(["LighthouseRun",0,function(){let[e,l]=(0,a.useState)(null),[o,d]=(0,a.useState)(null),[c,u]=(0,a.useState)(0),h=(0,a.useRef)(!1);async function m(){try{let e=await fetch("/api/lighthouse",{method:"POST",headers:{"Content-Type":"application/json"},body:"{}"});if(409===e.status)return d("Set a project address on Setup first.");if(!e.ok)throw Error();l(await e.json()),d(null)}catch{d(i)}}if((0,a.useEffect)(()=>{let e=!1;return fetch("/api/lighthouse").then(e=>e.ok?e.json():Promise.reject()).then(t=>{e||(l(t),d(null))}).catch(()=>{e||d(i)}),()=>{e=!0}},[c]),(0,a.useEffect)(()=>{let t=e?.state==="running";if(h.current&&!t&&window.dispatchEvent(new Event(s.METRICS_REFRESH_EVENT)),h.current=t,!e?.target)return;let a=setTimeout(()=>u(e=>e+1),e?.state==="running"?2e3:3e4);return()=>clearTimeout(a)},[e,c]),e&&!e.target)return null;let x=e?.state==="running",g=e?x?e.total?`Running ${Math.min(e.done+1,e.total)} of ${e.total}`:"Finding pages…":"error"===e.state?e.error:e.lastRunAt?`Last run ${new Date(e.lastRunAt).toLocaleString()}`:`Not run yet. ${n.LIGHTHOUSE_WAIT}`:"";return(0,t.jsxs)("div",{className:"mt-4 flex flex-wrap items-center gap-4",children:[e&&(0,t.jsx)(r.Button,{type:"button",onClick:m,disabled:x,children:x?"Running…":"Run now"}),(0,t.jsxs)("span",{role:"status","aria-live":"polite",className:`text-sm ${e?.state==="error"?"text-[#f87171]":"text-gray-400"}`,children:[g,x&&(0,t.jsx)("span",{className:"block text-xs text-gray-500",children:n.LIGHTHOUSE_WAIT})]}),o&&(0,t.jsx)("span",{className:"text-sm text-[#f87171]",children:o})]})}])},98537,e=>{"use strict";var t=e.i(40798),a=e.i(19085),r=e.i(47627),s=e.i(70065),n=e.i(71428),i=e.i(24851),l=e.i(34813),o=e.i(73011),d=e.i(93834);e.s(["ToolInsights",0,function({tool:e,empty:c}){let{state:u,retry:h}=(0,l.useMetrics)(),m=(0,a.useRouter)(),{label:x,stats:g}=d.TOOLS[e],f=(0,d.toolColumns)(e);if("loading"===u.status)return(0,t.jsx)(n.Skeleton,{className:"mt-6 h-64 w-full bg-[#2d3748]"});if("error"===u.status)return(0,t.jsx)(i.EmptyState,{title:"Could not load metrics",reason:u.message,onRetry:h});if(!u.configured)return(0,t.jsx)(i.EmptyState,{title:"Connect your data",reason:"Add your New Relic or Sentry keys to see real numbers.",href:"/setup",cta:"Set up keys"});if(u.failed.includes(e))return(0,t.jsx)(i.EmptyState,{title:`Could not load ${x} data`,reason:"The request failed. Your other data is unaffected.",onRetry:h});let p=u.pages.filter(o.hasData);return p.length?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("div",{className:"grid gap-6 sm:grid-cols-2 lg:grid-cols-4 mb-8 mt-4",children:g(p).map(e=>(0,t.jsx)(s.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,t.jsxs)(s.CardContent,{className:"p-6",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-gray-400",children:e.label}),(0,t.jsx)("div",{className:"mt-4 truncate text-3xl font-bold text-white tracking-tight",children:e.value})]})},e.label))}),(0,t.jsxs)(s.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md flex-1",children:[(0,t.jsx)(s.CardHeader,{children:(0,t.jsxs)(s.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:[x," by Page"]})}),(0,t.jsx)(s.CardContent,{children:(0,t.jsx)("div",{className:"rounded-md border border-[#2d3748] overflow-hidden",children:(0,t.jsxs)(r.Table,{children:[(0,t.jsx)(r.TableHeader,{className:"bg-[#0f1419]",children:(0,t.jsxs)(r.TableRow,{className:"border-[#2d3748] hover:bg-transparent",children:[(0,t.jsx)(r.TableHead,{className:"text-gray-400",children:"Page Name"}),(0,t.jsx)(r.TableHead,{className:"text-gray-400",children:"Path"}),f.map(e=>(0,t.jsx)(r.TableHead,{className:"text-gray-400",children:e.header},e.header))]})}),(0,t.jsx)(r.TableBody,{children:u.pages.map(e=>(0,t.jsxs)(r.TableRow,{className:"border-[#2d3748] hover:bg-white/5 transition-colors cursor-pointer",onClick:()=>m.push(`/performance/${e.slug}`),children:[(0,t.jsx)(r.TableCell,{className:"font-medium text-white",children:e.name}),(0,t.jsx)(r.TableCell,{className:"text-gray-500 font-mono text-xs",children:e.url}),f.map(a=>(0,t.jsx)(r.TableCell,{className:"max-w-[320px] truncate text-gray-400",children:(0,o.hasData)(e)?a.cell(e):"—"},a.header))]},e.slug))})]})})})]})]}):c?(0,t.jsx)(i.EmptyState,{title:c.title,reason:c.reason,href:null}):(0,t.jsx)(i.EmptyState,{})}])},70065,e=>{"use strict";var t=e.i(40798),a=e.i(27152);e.s(["Card",0,function({className:e,size:r="default",...s}){return(0,t.jsx)("div",{"data-slot":"card","data-size":r,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...s})},"CardContent",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...r})},"CardDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",e),...r})},"CardHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...r})},"CardTitle",0,function({className:e,...r}){return(0,t.jsx)("h3",{"data-slot":"card-title",className:(0,a.cn)("title-enter font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...r})}])},47627,e=>{"use strict";var t=e.i(40798),a=e.i(27152);e.s(["Table",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,t.jsx)("table",{"data-slot":"table",className:(0,a.cn)("w-full caption-bottom text-sm",e),...r})})},"TableBody",0,function({className:e,...r}){return(0,t.jsx)("tbody",{"data-slot":"table-body",className:(0,a.cn)("[&_tr:last-child]:border-0",e),...r})},"TableCell",0,function({className:e,...r}){return(0,t.jsx)("td",{"data-slot":"table-cell",className:(0,a.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",e),...r})},"TableHead",0,function({className:e,...r}){return(0,t.jsx)("th",{"data-slot":"table-head",className:(0,a.cn)("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",e),...r})},"TableHeader",0,function({className:e,...r}){return(0,t.jsx)("thead",{"data-slot":"table-header",className:(0,a.cn)("[&_tr]:border-b",e),...r})},"TableRow",0,function({className:e,...r}){return(0,t.jsx)("tr",{"data-slot":"table-row",className:(0,a.cn)("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",e),...r})}])},42230,e=>{"use strict";var t=e.i(96341);let a=(...e)=>e.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim(),r={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},s=(0,t.createContext)({}),n=(0,t.forwardRef)(({color:e,size:n,width:i,height:l,strokeWidth:o,absoluteStrokeWidth:d,nonScalingStroke:c,className:u="",children:h,iconNode:m=[],icon:x={node:m,aliases:[],size:24},...g},f)=>{let{size:p=24,strokeWidth:b=2,absoluteStrokeWidth:j=!1,nonScalingStroke:w=!1,color:N="currentColor",className:y=""}=(0,t.useContext)(s)??{},v=!!h||(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(g),[k,C,T=[]]=function(e,t={}){return function(e,t={}){let s=t.attributeNames??{},n=e=>s[e]??e,i=e.size??e.width??r.width,l=e.size??e.height??r.height,o=e.aliases?.filter(e=>"string"==typeof e&&""!==e.trim()).map(e=>`lucide-${e}`)??[],d=[...e.name?[`lucide-${e.name}`]:[],...o],c=t.className?.split(" ").filter(Boolean)??[],u=!1===t.includeDefaultClasses?a(...c):a("lucide",...d,...c),h=t.absoluteStrokeWidth?Number(t.strokeWidth??r["stroke-width"])*Number(e.size??e.width??r.width)/Number(t.size??t.width??r.width):t.strokeWidth??r["stroke-width"];return["svg",{...Object.entries(r).reduce((e,[t,a])=>(e[n(t)]=a,e),{}),..."color"in t&&t.color&&{[n("stroke")]:t.color},..."size"in t&&null!=t.size&&{[n("width")]:t.size,[n("height")]:t.size},..."width"in t&&null!=t.width&&{[n("width")]:t.width},..."height"in t&&null!=t.height&&{[n("height")]:t.height},[n("stroke-width")]:h,...u&&{[n("class")]:u},[n("viewBox")]:`0 0 ${i} ${l}`,...!1===t.hasA11yProp?{[n("aria-hidden")]:"true"}:{},..."attributes"in t&&t.attributes},e.node.map(e=>{let[a,r,s]=e,i=t.nonScalingStroke?{[n("vector-effect")]:"non-scaling-stroke",...r}:r;return s?[a,i,s]:[a,i]})]}(e,{...t,attributeNames:{...t.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(x,{color:e??N,width:i??n??p,height:l??n??p,strokeWidth:o??b,absoluteStrokeWidth:d??j,nonScalingStroke:c??w,className:a(y,u),hasA11yProp:v,attributes:g});return(0,t.createElement)(k,{ref:f,...C},[...T.map(([e,a])=>(0,t.createElement)(e,a)),...Array.isArray(h)?h:[h]])});e.s(["default",0,n],42230)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,36437,(e,t,r)=>{"use strict";r._=function(e){return e&&e.__esModule?e:{default:e}}},56421,(e,t,r)=>{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}r._=function(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var u={__proto__:null},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var a in e)if("default"!==a&&Object.prototype.hasOwnProperty.call(e,a)){var i=o?Object.getOwnPropertyDescriptor(e,a):null;i&&(i.get||i.set)?Object.defineProperty(u,a,i):u[a]=e[a]}return u.default=e,r&&r.set(e,u),u}},32580,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={HTTPAccessErrorStatus:function(){return o},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return i},getAccessFallbackErrorTypeByStatus:function(){return s},getAccessFallbackHTTPStatus:function(){return l},isHTTPAccessFallbackError:function(){return c}};for(var u in n)Object.defineProperty(r,u,{enumerable:!0,get:n[u]});let o={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},a=new Set(Object.values(o)),i="NEXT_HTTP_ERROR_FALLBACK";function c(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r]=e.digest.split(";");return t===i&&a.has(Number(r))}function l(e){return Number(e.digest.split(";")[1])}function s(e){switch(e){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},61411,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"isNextRouterError",{enumerable:!0,get:function(){return o}});let n=e.r(32580),u=e.r(83960);function o(e){return(0,u.isRedirectError)(e)||(0,n.isHTTPAccessFallbackError)(e)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},42438,(e,t,r)=>{"use strict";let n,u;Object.defineProperty(r,"__esModule",{value:!0});var o={useDynamicRouteParams:function(){return n},useDynamicSearchParams:function(){return u}};for(var a in o)Object.defineProperty(r,a,{enumerable:!0,get:o[a]});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},98490,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ServerInsertedHTMLContext:function(){return a},useServerInsertedHTML:function(){return i}};for(var u in n)Object.defineProperty(r,u,{enumerable:!0,get:n[u]});let o=e.r(56421)._(e.r(96341)),a=o.default.createContext(null);function i(e){let t=(0,o.useContext)(a);t&&t(e)}},53986,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"notFound",{enumerable:!0,get:function(){return o}});let n=e.r(32580),u=`${n.HTTP_ERROR_FALLBACK_ERROR_CODE};404`;function o(){let e=Object.defineProperty(Error(u),"__NEXT_ERROR_CODE",{value:"E1041",enumerable:!1,configurable:!0});throw e.digest=u,e}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},1304,(e,t,r)=>{"use strict";function n(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}e.i(54072),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"forbidden",{enumerable:!0,get:function(){return n}}),e.r(32580).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},94846,(e,t,r)=>{"use strict";function n(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}e.i(54072),Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unauthorized",{enumerable:!0,get:function(){return n}}),e.r(32580).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},99744,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ReadonlyURLSearchParams",{enumerable:!0,get:function(){return u}});class n extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams"),Object.defineProperty(this,"__NEXT_ERROR_CODE",{value:"E1174",enumerable:!1,configurable:!0})}}class u extends URLSearchParams{append(){throw new n}delete(){throw new n}set(){throw new n}sort(){throw new n}}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},83960,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={REDIRECT_ERROR_CODE:function(){return a},isRedirectError:function(){return i}};for(var u in n)Object.defineProperty(r,u,{enumerable:!0,get:n[u]});let o=e.r(80494),a="NEXT_REDIRECT";function i(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,n]=t,u=t.slice(2,-2).join(";"),i=Number(t.at(-2));return r===a&&("replace"===n||"push"===n)&&"string"==typeof u&&!isNaN(i)&&i in o.RedirectStatusCode}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},80494,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RedirectStatusCode",{enumerable:!0,get:function(){return u}});var n,u=((n={})[n.SeeOther=303]="SeeOther",n[n.TemporaryRedirect=307]="TemporaryRedirect",n[n.PermanentRedirect=308]="PermanentRedirect",n);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},13829,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={getRedirectError:function(){return c},getRedirectStatusCodeFromError:function(){return p},getRedirectTypeFromError:function(){return d},getURLFromRedirectError:function(){return f},permanentRedirect:function(){return s},redirect:function(){return l}};for(var u in n)Object.defineProperty(r,u,{enumerable:!0,get:n[u]});let o=e.r(80494),a=e.r(83960),i=e.r(74222);function c(e,t,r=o.RedirectStatusCode.TemporaryRedirect){let n=Object.defineProperty(Error(a.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n.digest=`${a.REDIRECT_ERROR_CODE};${t};${e};${r};`,n}function l(e,t){throw c(e,t??=i.actionAsyncStorage?.getStore()?.isAction?"push":"replace",o.RedirectStatusCode.TemporaryRedirect)}function s(e,t="replace"){throw c(e,t,o.RedirectStatusCode.PermanentRedirect)}function f(e){return(0,a.isRedirectError)(e)?e.digest.split(";").slice(2,-2).join(";"):null}function d(e){if(!(0,a.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return e.digest.split(";",2)[1]}function p(e){if(!(0,a.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(e.digest.split(";").at(-2))}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},74222,(e,t,r)=>{"use strict";let n,u,o;Object.defineProperty(r,"__esModule",{value:!0});var a={actionAsyncStorage:function(){return n},workAsyncStorage:function(){return u},workUnitAsyncStorage:function(){return o}};for(var i in a)Object.defineProperty(r,i,{enumerable:!0,get:a[i]});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},68131,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={UnrecognizedActionError:function(){return o},unstable_isUnrecognizedActionError:function(){return a}};for(var u in n)Object.defineProperty(r,u,{enumerable:!0,get:n[u]});class o extends Error{constructor(...e){super(...e),this.name="UnrecognizedActionError"}}function a(e){return!!(e&&"object"==typeof e&&e instanceof o)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},14026,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"unstable_rethrow",{enumerable:!0,get:function(){return function e(t){if((0,u.isNextRouterError)(t)||(0,n.isBailoutToCSRError)(t))throw t;t instanceof Error&&"cause"in t&&e(t.cause)}}});let n=e.r(9330),u=e.r(61411);("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},33906,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={ReadonlyURLSearchParams:function(){return o.ReadonlyURLSearchParams},RedirectType:function(){return d},forbidden:function(){return c.forbidden},notFound:function(){return i.notFound},permanentRedirect:function(){return a.permanentRedirect},redirect:function(){return a.redirect},unauthorized:function(){return l.unauthorized},unstable_isUnrecognizedActionError:function(){return f},unstable_rethrow:function(){return s.unstable_rethrow}};for(var u in n)Object.defineProperty(r,u,{enumerable:!0,get:n[u]});let o=e.r(99744),a=e.r(13829),i=e.r(53986),c=e.r(1304),l=e.r(94846),s=e.r(14026);function f(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}let d={push:"push",replace:"replace"};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},23064,(e,t,r)=>{"use strict";e.i(54072),Object.defineProperty(r,"__esModule",{value:!0});var n={ReadonlyURLSearchParams:function(){return i.ReadonlyURLSearchParams},RedirectType:function(){return d.RedirectType},ServerInsertedHTMLContext:function(){return s.ServerInsertedHTMLContext},forbidden:function(){return d.forbidden},notFound:function(){return d.notFound},permanentRedirect:function(){return d.permanentRedirect},redirect:function(){return d.redirect},unauthorized:function(){return d.unauthorized},unstable_isUnrecognizedActionError:function(){return f.unstable_isUnrecognizedActionError},unstable_rethrow:function(){return d.unstable_rethrow},useParams:function(){return v},usePathname:function(){return m},useRouter:function(){return h},useSearchParams:function(){return b},useSelectedLayoutSegment:function(){return E},useSelectedLayoutSegments:function(){return R},useServerInsertedHTML:function(){return s.useServerInsertedHTML}};for(var u in n)Object.defineProperty(r,u,{enumerable:!0,get:n[u]});let o=e.r(56421)._(e.r(96341)),a=e.r(13976),i=e.r(95592),c=e.r(42007),l=e.r(42438),s=e.r(98490),f=e.r(68131),d=e.r(33906),{instrumentParamsForClientValidation:p,instrumentSearchParamsForClientValidation:y,expectCompleteParamsInClientValidation:_}={};function b(){l.useDynamicSearchParams?.("useSearchParams()");let e=(0,o.useContext)(i.SearchParamsContext);return(0,o.useMemo)(()=>e?new i.ReadonlyURLSearchParams(e):null,[e])}function m(){return l.useDynamicRouteParams?.("usePathname()"),(0,o.useContext)(i.PathnameContext)}function h(){let e=(0,o.useContext)(a.AppRouterContext);if(null===e)throw Object.defineProperty(Error("invariant expected app router to be mounted"),"__NEXT_ERROR_CODE",{value:"E238",enumerable:!1,configurable:!0});let t=(0,o.useContext)(a.LayoutRouterContext),r=t?.parentCacheNode.bfcacheId??0;return(0,o.useMemo)(()=>({back:e.back,forward:e.forward,refresh:e.refresh,hmrRefresh:e.hmrRefresh,push:e.push,replace:e.replace,prefetch:e.prefetch,experimental_gesturePush:e.experimental_gesturePush,bfcacheId:"_b_"+r+"_"}),[e,r])}function v(){return l.useDynamicRouteParams?.("useParams()"),(0,o.useContext)(i.PathParamsContext)}function R(e="children"){l.useDynamicRouteParams?.("useSelectedLayoutSegments()");let t=(0,o.useContext)(a.LayoutRouterContext);return t?(0,c.getSelectedLayoutSegmentPath)(t.parentTree,e):null}function E(e="children"){l.useDynamicRouteParams?.("useSelectedLayoutSegment()"),(0,o.useContext)(i.NavigationPromisesContext);let t=R(e);return(0,c.computeSelectedLayoutSegment)(t,e)}("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},54185,(e,t,r)=>{var n={156:function(e){var t,r,n,u=e.exports={};function o(){throw Error("setTimeout has not been defined")}function a(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:o}catch(e){t=o}try{r="function"==typeof clearTimeout?clearTimeout:a}catch(e){r=a}function i(e){if(t===setTimeout)return setTimeout(e,0);if((t===o||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var c=[],l=!1,s=-1;function f(){l&&n&&(l=!1,n.length?c=n.concat(c):s=-1,c.length&&d())}function d(){if(!l){var e=i(f);l=!0;for(var t=c.length;t;){for(n=c,c=[];++s<t;)n&&n[s].run();s=-1,t=c.length}n=null,l=!1,function(e){if(r===clearTimeout)return clearTimeout(e);if((r===a||!r)&&clearTimeout)return r=clearTimeout,clearTimeout(e);try{r(e)}catch(t){try{return r.call(null,e)}catch(t){return r.call(this,e)}}}(e)}}function p(e,t){this.fun=e,this.array=t}function y(){}u.nextTick=function(e){var t=Array(arguments.length-1);if(arguments.length>1)for(var r=1;r<arguments.length;r++)t[r-1]=arguments[r];c.push(new p(e,t)),1!==c.length||l||i(d)},p.prototype.run=function(){this.fun.apply(null,this.array)},u.title="browser",u.browser=!0,u.env={},u.argv=[],u.version="",u.versions={},u.on=y,u.addListener=y,u.once=y,u.off=y,u.removeListener=y,u.removeAllListeners=y,u.emit=y,u.prependListener=y,u.prependOnceListener=y,u.listeners=function(e){return[]},u.binding=function(e){throw Error("process.binding is not supported")},u.cwd=function(){return"/"},u.chdir=function(e){throw Error("process.chdir is not supported")},u.umask=function(){return 0}}},u={};function o(e){var t=u[e];if(void 0!==t)return t.exports;var r=u[e]={exports:{}},a=!0;try{n[e](r,r.exports,o),a=!1}finally{a&&delete u[e]}return r.exports}o.ab="/ROOT/node_modules/.pnpm/next@16.3.8_@babel+core@7.29.7_supports-color@8.1.1__@opentelemetry+api@1.9.1_@types+no_c2c791d25241ae4161c9f48ecf186c77/node_modules/next/dist/compiled/process/",t.exports=o(156)},54072,(e,t,r)=>{"use strict";var n,u;t.exports=(null==(n=e.g.process)?void 0:n.env)&&"object"==typeof(null==(u=e.g.process)?void 0:u.env)?e.g.process:e.r(54185)},91698,(e,t,r)=>{"use strict";var n=Symbol.for("react.transitional.element");function u(e,t,r){var u=null;if(void 0!==r&&(u=""+r),void 0!==t.key&&(u=""+t.key),"key"in t)for(var o in r={},t)"key"!==o&&(r[o]=t[o]);else r=t;return{$$typeof:n,type:e,key:u,ref:void 0!==(t=r.ref)?t:null,props:r}}r.Fragment=Symbol.for("react.fragment"),r.jsx=u,r.jsxs=u},40798,(e,t,r)=>{"use strict";e.i(54072),t.exports=e.r(91698)},20757,(e,t,r)=>{"use strict";var n=e.i(54072),u=Symbol.for("react.transitional.element"),o=Symbol.for("react.portal"),a=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),c=Symbol.for("react.profiler"),l=Symbol.for("react.consumer"),s=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),y=Symbol.for("react.lazy"),_=Symbol.for("react.activity"),b=Symbol.for("react.view_transition"),m=Symbol.iterator,h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},v=Object.assign,R={};function E(e,t,r){this.props=e,this.context=t,this.refs=R,this.updater=r||h}function g(){}function O(e,t,r){this.props=e,this.context=t,this.refs=R,this.updater=r||h}E.prototype.isReactComponent={},E.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},E.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},g.prototype=E.prototype;var j=O.prototype=new g;j.constructor=O,v(j,E.prototype),j.isPureReactComponent=!0;var P=Array.isArray;function S(){}var T={H:null,A:null,T:null,S:null},C=Object.prototype.hasOwnProperty;function x(e,t,r){var n=r.ref;return{$$typeof:u,type:e,key:t,ref:void 0!==n?n:null,props:r}}function w(e){return"object"==typeof e&&null!==e&&e.$$typeof===u}var M=/\/+/g;function A(e,t){var r,n;return"object"==typeof e&&null!==e&&null!=e.key?(r=""+e.key,n={"=":"=0",":":"=2"},"$"+r.replace(/[=:]/g,function(e){return n[e]})):t.toString(36)}function L(e,t,r){if(null==e)return e;var n=[],a=0;return!function e(t,r,n,a,i){var c,l,s,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var d=!1;if(null===t)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(t.$$typeof){case u:case o:d=!0;break;case y:return e((d=t._init)(t._payload),r,n,a,i)}}if(d)return i=i(t),d=""===a?"."+A(t,0):a,P(i)?(n="",null!=d&&(n=d.replace(M,"$&/")+"/"),e(i,r,n,"",function(e){return e})):null!=i&&(w(i)&&(c=i,l=n+(null==i.key||t&&t.key===i.key?"":(""+i.key).replace(M,"$&/")+"/")+d,i=x(c.type,l,c.props)),r.push(i)),1;d=0;var p=""===a?".":a+":";if(P(t))for(var _=0;_<t.length;_++)f=p+A(a=t[_],_),d+=e(a,r,n,f,i);else if("function"==typeof(_=null===(s=t)||"object"!=typeof s?null:"function"==typeof(s=m&&s[m]||s["@@iterator"])?s:null))for(t=_.call(t),_=0;!(a=t.next()).done;)f=p+A(a=a.value,_++),d+=e(a,r,n,f,i);else if("object"===f){if("function"==typeof t.then)return e(function(e){switch(e.status){case"fulfilled":return e.value;case"rejected":throw e.reason;default:switch("string"==typeof e.status?e.then(S,S):(e.status="pending",e.then(function(t){"pending"===e.status&&(e.status="fulfilled",e.value=t)},function(t){"pending"===e.status&&(e.status="rejected",e.reason=t)})),e.status){case"fulfilled":return e.value;case"rejected":throw e.reason}}throw e}(t),r,n,a,i);throw Error("Objects are not valid as a React child (found: "+("[object Object]"===(r=String(t))?"object with keys {"+Object.keys(t).join(", ")+"}":r)+"). If you meant to render a collection of children, use an array instead.")}return d}(e,n,"","",function(e){return t.call(r,e,a++)}),n}function N(e){if(-1===e._status){var t=(0,e._result)();t.then(function(r){(0===e._status||-1===e._status)&&(e._status=1,e._result=r,void 0===t.status&&(t.status="fulfilled",t.value=r))},function(r){(0===e._status||-1===e._status)&&(e._status=2,e._result=r,void 0===t.status&&(t.status="rejected",t.reason=r))}),-1===e._status&&(e._status=0,e._result=t)}if(1===e._status)return e._result.default;throw e._result}var D="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof n.default&&"function"==typeof n.default.emit)return void n.default.emit("uncaughtException",e);console.error(e)};function H(e){var t=T.T,r={};r.types=null!==t?t.types:null,T.T=r;try{var n=e(),u=T.S;null!==u&&u(r,n),"object"==typeof n&&null!==n&&"function"==typeof n.then&&n.then(S,D)}catch(e){D(e)}finally{null!==t&&null!==r.types&&(t.types=r.types),T.T=t}}function k(e){var t=T.T;if(null!==t){var r=t.types;null===r?t.types=[e]:-1===r.indexOf(e)&&r.push(e)}else H(k.bind(null,e))}r.Activity=_,r.Children={map:L,forEach:function(e,t,r){L(e,function(){t.apply(this,arguments)},r)},count:function(e){var t=0;return L(e,function(){t++}),t},toArray:function(e){return L(e,function(e){return e})||[]},only:function(e){if(!w(e))throw Error("React.Children.only expected to receive a single React element child.");return e}},r.Component=E,r.Fragment=a,r.Profiler=c,r.PureComponent=O,r.StrictMode=i,r.Suspense=d,r.ViewTransition=b,r.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE=T,r.__COMPILER_RUNTIME={__proto__:null,c:function(e){return T.H.useMemoCache(e)}},r.addTransitionType=k,r.cache=function(e){return function(){return e.apply(null,arguments)}},r.cacheSignal=function(){return null},r.cloneElement=function(e,t,r){if(null==e)throw Error("The argument must be a React element, but you passed "+e+".");var n=v({},e.props),u=e.key;if(null!=t)for(o in void 0!==t.key&&(u=""+t.key),t)C.call(t,o)&&"key"!==o&&"__self"!==o&&"__source"!==o&&("ref"!==o||void 0!==t.ref)&&(n[o]=t[o]);var o=arguments.length-2;if(1===o)n.children=r;else if(1<o){for(var a=Array(o),i=0;i<o;i++)a[i]=arguments[i+2];n.children=a}return x(e.type,u,n)},r.createContext=function(e){return(e={$$typeof:s,_currentValue:e,_currentValue2:e,_threadCount:0,Provider:null,Consumer:null}).Provider=e,e.Consumer={$$typeof:l,_context:e},e},r.createElement=function(e,t,r){var n,u={},o=null;if(null!=t)for(n in void 0!==t.key&&(o=""+t.key),t)C.call(t,n)&&"key"!==n&&"__self"!==n&&"__source"!==n&&(u[n]=t[n]);var a=arguments.length-2;if(1===a)u.children=r;else if(1<a){for(var i=Array(a),c=0;c<a;c++)i[c]=arguments[c+2];u.children=i}if(e&&e.defaultProps)for(n in a=e.defaultProps)void 0===u[n]&&(u[n]=a[n]);return x(e,o,u)},r.createRef=function(){return{current:null}},r.forwardRef=function(e){return{$$typeof:f,render:e}},r.isValidElement=w,r.lazy=function(e){return{$$typeof:y,_payload:{_status:-1,_result:e},_init:N}},r.memo=function(e,t){return{$$typeof:p,type:e,compare:void 0===t?null:t}},r.startTransition=H,r.unstable_useCacheRefresh=function(){return T.H.useCacheRefresh()},r.use=function(e){return T.H.use(e)},r.useActionState=function(e,t,r){return T.H.useActionState(e,t,r)},r.useCallback=function(e,t){return T.H.useCallback(e,t)},r.useContext=function(e){return T.H.useContext(e)},r.useDebugValue=function(){},r.useDeferredValue=function(e,t){return T.H.useDeferredValue(e,t)},r.useEffect=function(e,t){return T.H.useEffect(e,t)},r.useEffectEvent=function(e){return T.H.useEffectEvent(e)},r.useId=function(){return T.H.useId()},r.useImperativeHandle=function(e,t,r){return T.H.useImperativeHandle(e,t,r)},r.useInsertionEffect=function(e,t){return T.H.useInsertionEffect(e,t)},r.useLayoutEffect=function(e,t){return T.H.useLayoutEffect(e,t)},r.useMemo=function(e,t){return T.H.useMemo(e,t)},r.useOptimistic=function(e,t){return T.H.useOptimistic(e,t)},r.useReducer=function(e,t,r){return T.H.useReducer(e,t,r)},r.useRef=function(e){return T.H.useRef(e)},r.useState=function(e){return T.H.useState(e)},r.useSyncExternalStore=function(e,t,r){return T.H.useSyncExternalStore(e,t,r)},r.useTransition=function(){return T.H.useTransition()},r.version="19.3.0-canary-cbb046ab-20260731"},96341,(e,t,r)=>{"use strict";e.i(54072),t.exports=e.r(20757)},13976,(e,t,r)=>{"use strict";e.i(54072),Object.defineProperty(r,"__esModule",{value:!0});var n={AppRouterContext:function(){return a},GlobalLayoutRouterContext:function(){return c},LayoutRouterContext:function(){return i},MissingSlotContext:function(){return s},TemplateContext:function(){return l}};for(var u in n)Object.defineProperty(r,u,{enumerable:!0,get:n[u]});let o=e.r(36437)._(e.r(96341)),a=o.default.createContext(null),i=o.default.createContext(null),c=o.default.createContext(null),l=o.default.createContext(null),s=o.default.createContext(new Set)},95592,(e,t,r)=>{"use strict";e.i(54072),Object.defineProperty(r,"__esModule",{value:!0});var n={NavigationPromisesContext:function(){return s},PathParamsContext:function(){return l},PathnameContext:function(){return c},ReadonlyURLSearchParams:function(){return a.ReadonlyURLSearchParams},SearchParamsContext:function(){return i},createDevToolsInstrumentedPromise:function(){return f}};for(var u in n)Object.defineProperty(r,u,{enumerable:!0,get:n[u]});let o=e.r(96341),a=e.r(99744),i=(0,o.createContext)(null),c=(0,o.createContext)(null),l=(0,o.createContext)(null),s=(0,o.createContext)(null);function f(e,t){let r=Promise.resolve(t);return r.status="fulfilled",r.value=t,r.displayName=`${e} (SSR)`,r}},9330,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={BailoutToCSRError:function(){return a},isBailoutToCSRError:function(){return i}};for(var u in n)Object.defineProperty(r,u,{enumerable:!0,get:n[u]});let o="BAILOUT_TO_CLIENT_SIDE_RENDERING";class a extends Error{constructor(e){super(`Bail out to client-side rendering: ${e}`),this.reason=e,this.digest=o}}function i(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===o}},42007,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var n={DEFAULT_SEGMENT_KEY:function(){return f},NOT_FOUND_SEGMENT_KEY:function(){return d},PAGE_SEGMENT_KEY:function(){return s},addSearchParamsIfPageSegment:function(){return c},computeSelectedLayoutSegment:function(){return l},getSegmentValue:function(){return o},getSelectedLayoutSegmentPath:function(){return function e(t,r,n=!0,u=[]){let a;if(n)a=t[1][r];else{let e=t[1];a=e.children??Object.values(e)[0]}if(!a)return u;let i=o(a[0]);return!i||i.startsWith(s)?u:(u.push(i),e(a,r,!1,u))}},isGroupSegment:function(){return a},isParallelRouteSegment:function(){return i}};for(var u in n)Object.defineProperty(r,u,{enumerable:!0,get:n[u]});function o(e){return Array.isArray(e)?e[1]:e}function a(e){return"("===e[0]&&e.endsWith(")")}function i(e){return e.startsWith("@")&&"@children"!==e}function c(e,t){if(e.includes(s)){let e=JSON.stringify(t);return"{}"!==e?s+"?"+e:s}return e}function l(e,t){if(!e||0===e.length)return null;let r="children"===t?e[0]:e[e.length-1];return r===f?null:r}let s="__PAGE__",f="__DEFAULT__",d="/_not-found"}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,96098,e=>{"use strict";var t=e.i(40798),a=e.i(39294),r=e.i(69322),s=e.i(27152),i=e.i(67449);let l={name:"chevron-right",size:24,node:[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]};l.node;let n=(0,i.default)(l),d={name:"ellipsis",size:24,node:[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],aliases:["more-horizontal"]};function o({className:e,...a}){return(0,t.jsx)("nav",{"aria-label":"breadcrumb","data-slot":"breadcrumb",className:(0,s.cn)(e),...a})}function c({className:e,...a}){return(0,t.jsx)("ol",{"data-slot":"breadcrumb-list",className:(0,s.cn)("flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground",e),...a})}function u({className:e,...a}){return(0,t.jsx)("li",{"data-slot":"breadcrumb-item",className:(0,s.cn)("inline-flex items-center gap-1",e),...a})}function m({className:e,render:t,...i}){return(0,r.useRender)({defaultTagName:"a",props:(0,a.mergeProps)({className:(0,s.cn)("transition-colors hover:text-foreground",e)},i),render:t,state:{slot:"breadcrumb-link"}})}function h({className:e,...a}){return(0,t.jsx)("span",{"data-slot":"breadcrumb-page",role:"link","aria-disabled":"true","aria-current":"page",className:(0,s.cn)("font-normal text-foreground",e),...a})}function x({children:e,className:a,...r}){return(0,t.jsx)("li",{"data-slot":"breadcrumb-separator",role:"presentation","aria-hidden":"true",className:(0,s.cn)("[&>svg]:size-3.5",a),...r,children:e??(0,t.jsx)(n,{})})}d.node,(0,i.default)(d),e.s(["PerformanceBreadcrumb",0,function({pageName:e="Homepage"}){return(0,t.jsx)(o,{className:"mb-6",children:(0,t.jsxs)(c,{children:[(0,t.jsx)(u,{children:(0,t.jsx)(m,{href:"/performance",className:"text-gray-400 hover:text-white",children:"Performance"})}),(0,t.jsx)(x,{}),(0,t.jsx)(u,{children:(0,t.jsx)(h,{className:"text-white font-medium",children:e})})]})})}],96098)},29672,e=>{"use strict";var t=e.i(40798),a=e.i(3547),r=e.i(19085),s=e.i(24851),i=e.i(7848),l=e.i(71428),n=e.i(34813),d=e.i(73011),o=e.i(50762),c=e.i(96098),u=e.i(5080),m=e.i(97920);let h="Keys work, but no page events have arrived.";e.s(["PerformanceDetail",0,function({slug:e}){let{state:x,retry:g}=(0,n.useMetrics)(),f=(0,o.useThresholds)();if("loading"===x.status)return(0,t.jsx)(l.Skeleton,{className:"h-64 w-full bg-[#2d3748]"});if("error"===x.status)return(0,t.jsx)(s.EmptyState,{title:"Could not load metrics",reason:x.message,onRetry:g});if(!x.configured)return(0,t.jsx)(s.EmptyState,{title:"Connect your data",reason:"Add your New Relic or Sentry keys to see real numbers.",href:"/setup",cta:"Set up keys"});if(0===x.pages.length)return(0,t.jsx)(s.EmptyState,{});let p=x.pages.find(t=>t.slug===e);p||(0,r.notFound)();let b=e=>(0,n.provides)(x,e),v=b("loadTime")&&b("errorRate")&&b("apdex")&&(0,d.hasPerformance)(p),j={...p,status:v?(0,d.deriveStatus)(p.metrics,f):void 0},y=(0,d.hasData)(j),N=j.status?(0,d.breachReasons)(j,f):[],w=y?j.status?N.length?`Over a limit: ${N.join(", ")}.`:"Within your limits.":"No performance data from New Relic for this page yet.":h;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(c.PerformanceBreadcrumb,{pageName:j.name}),(0,t.jsxs)("section",{"aria-labelledby":"page-status-title",className:"mb-6 flex flex-wrap items-center gap-x-4 gap-y-2",children:[(0,t.jsx)("h2",{id:"page-status-title",className:"sr-only",children:"Status"}),(0,t.jsx)(i.StatusBadge,{page:j}),(0,t.jsx)("p",{"data-slot":"status-sentence",className:"text-body text-dash-foreground",children:w}),(0,t.jsx)(a.default,{href:"/settings?tab=thresholds",className:"inline-flex min-h-11 items-center rounded-sm font-medium text-dash-foreground underline underline-offset-4 outline-none hover:text-dash-muted-light focus-visible:ring-3 focus-visible:ring-ring/50 md:min-h-8",children:"Edit limits"})]}),y?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(u.PerformanceKPIs,{page:j,has:b,thresholds:f}),j.metrics.errors&&(0,t.jsx)(m.RelatedErrorsList,{errors:j.metrics.errors.latest})]}):(0,t.jsx)(s.EmptyState,{reason:`${j.name} (${j.url}): ${h}`})]})}])},5080,e=>{"use strict";var t=e.i(40798),a=e.i(70065),r=e.i(86242),s=e.i(23023),i=e.i(98948),l=e.i(33451),n=e.i(66987),d=e.i(69344),o=e.i(93961),c=e.i(64114),u=e.i(73011);e.s(["PerformanceKPIs",0,function({page:e,has:m,thresholds:h}){let x=e.metrics,g=(0,u.hasPerformance)(e),f=(e,t)=>g&&void 0!==e?t(e):"—",p=[{needs:"loadTime",label:"Average Load Time",value:f(x.loadTime,o.formatDuration),icon:(0,t.jsx)(s.Clock,{className:"h-4 w-4 text-[#3ee0a1]"}),limit:"loadTime"},{needs:"errorRate",label:"Error Rate",value:f(x.errorRate,e=>`${e.toFixed(2)}%`),icon:(0,t.jsx)(r.Activity,{className:"h-4 w-4 text-[#ef4444]"}),limit:"errorRate"},{needs:"apdex",label:"Apdex",value:f(x.apdex,e=>e.toFixed(2)),icon:(0,t.jsx)(i.Gauge,{className:"h-4 w-4 text-[#3ee0a1]"}),limit:"apdex"},{needs:"traffic",label:(0,c.isSampled)([e])?"Page loads (sampled)":"Traffic Volume",value:g&&x.traffic?e.visitors:"—",icon:(0,t.jsx)(d.Zap,{className:"h-4 w-4 text-[#06b6d4]"})}];return(0,t.jsx)("div",{className:"grid gap-6 md:grid-cols-3 mb-8",children:p.filter(e=>m(e.needs)).map(e=>{let r=e.limit&&g?(0,u.metricStatus)(e.limit,x[e.limit],h):void 0,s="Warning"===r||"Critical"===r,i="Critical"===r?l.OctagonAlert:n.TriangleAlert;return(0,t.jsx)(a.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,t.jsxs)(a.CardContent,{className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-gray-400",children:e.label}),(0,t.jsx)("div",{className:"flex h-8 w-8 items-center justify-center rounded-lg bg-[#0f1419] border border-[#2d3748]",children:e.icon})]}),(0,t.jsxs)("span",{"data-over-limit":s||void 0,className:"text-3xl font-semibold text-white tracking-tight",children:[s&&(0,t.jsx)(i,{"aria-hidden":"true",className:`mr-2 inline size-6 align-[-2px] ${"Critical"===r?"text-dash-danger":"text-dash-warning"}`}),e.value,s&&(0,t.jsx)("span",{className:"sr-only",children:" over limit"})]}),e.limit&&(0,t.jsx)("span",{className:"mt-1 block text-body-sm text-dash-muted",children:(0,u.limitLabel)(e.limit,h)})]})},e.label)})})}])},97920,e=>{"use strict";var t=e.i(40798),a=e.i(70065),r=e.i(67449);let s={name:"circle-alert",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],aliases:["alert-circle"]};s.node;let i=(0,r.default)(s);var l=e.i(23023);e.s(["RelatedErrorsList",0,function({errors:e}){return(0,t.jsxs)(a.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md w-full lg:w-[400px]",children:[(0,t.jsx)(a.CardHeader,{children:(0,t.jsxs)(a.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight flex items-center gap-2",children:[(0,t.jsx)(i,{className:"h-5 w-5 text-[#ef4444]"}),"Related Errors"]})}),(0,t.jsx)(a.CardContent,{children:0===e.length?(0,t.jsx)("p",{className:"text-sm text-gray-400",children:"No errors reported for this page."}):(0,t.jsx)("div",{className:"flex flex-col gap-3",children:e.map(e=>(0,t.jsxs)("div",{className:"flex flex-col gap-2 rounded-lg border border-[#2d3748] bg-[#0f1419] p-4",children:[(0,t.jsx)("div",{className:"flex items-center justify-between",children:(0,t.jsxs)("span",{className:"text-xs font-mono text-gray-500",children:[e.count," events"]})}),(0,t.jsx)("p",{className:"text-sm font-medium text-gray-200 line-clamp-2",children:e.title}),(0,t.jsxs)("div",{className:"flex items-center gap-1 mt-1 text-xs text-gray-500",children:[(0,t.jsx)(l.Clock,{className:"h-3 w-3"}),(0,t.jsx)("span",{children:new Date(e.lastSeen).toLocaleString()})]})]},e.title))})})]})}],97920)},24851,e=>{"use strict";var t=e.i(40798),a=e.i(3547),r=e.i(70065),s=e.i(67881);e.s(["EmptyState",0,function({title:e="No data yet",reason:i="Keys work, but no page events have arrived.",href:l="/connect",cta:n="Send your first events",onRetry:d}){return(0,t.jsx)(r.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,t.jsxs)(r.CardContent,{className:"flex flex-col items-center gap-3 p-10 text-center",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-white",children:e}),(0,t.jsx)("p",{className:"max-w-md text-sm text-gray-400",children:i}),(0,t.jsxs)("div",{className:"flex gap-3",children:[l&&(0,t.jsx)(a.default,{href:l,className:(0,s.buttonVariants)(),children:n}),d&&(0,t.jsx)(s.Button,{variant:"outline",onClick:d,children:"Retry"})]})]})})}])},7848,e=>{"use strict";var t=e.i(40798),a=e.i(3547),r=e.i(19085),s=e.i(67449);let i={name:"circle-check",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 9-5.5 5.5L8 12",key:"xofnsj"}]],aliases:["check-circle-2"]};i.node;let l=(0,s.default)(i),n={name:"circle-dashed",size:24,node:[["path",{d:"M10.1 2.182a10 10 0 0 1 3.8 0",key:"5ilxe3"}],["path",{d:"M13.9 21.818a10 10 0 0 1-3.8 0",key:"11zvb9"}],["path",{d:"M17.609 3.721a10 10 0 0 1 2.69 2.7",key:"1iw5b2"}],["path",{d:"M2.182 13.9a10 10 0 0 1 0-3.8",key:"c0bmvh"}],["path",{d:"M20.279 17.609a10 10 0 0 1-2.7 2.69",key:"1ruxm7"}],["path",{d:"M21.818 10.1a10 10 0 0 1 0 3.8",key:"qkgqxc"}],["path",{d:"M3.721 6.391a10 10 0 0 1 2.7-2.69",key:"1mcia2"}],["path",{d:"M6.391 20.279a10 10 0 0 1-2.69-2.7",key:"1fvljs"}]]};n.node;let d=(0,s.default)(n);var o=e.i(33451),c=e.i(66987),u=e.i(47627),m=e.i(70065),h=e.i(94179),x=e.i(64114),g=e.i(93834),f=e.i(93961),p=e.i(73011);let b="pages-table-title",v=e=>"Warning"===e||"Critical"===e,j={Critical:{Icon:o.OctagonAlert,icon:"text-dash-danger",badge:"border-dash-danger/40 bg-dash-danger/10"},Warning:{Icon:c.TriangleAlert,icon:"text-dash-warning",badge:"border-dash-warning/40 bg-dash-warning/10"},Healthy:{Icon:l,icon:"text-dash-success",badge:"border-dash-success/40 bg-dash-success/10"}},y={Icon:d,icon:"text-dash-muted",badge:"border-dash-border-light"},N="rounded-sm outline-none focus-visible:ring-3 focus-visible:ring-ring/50",w=`font-medium text-dash-foreground underline underline-offset-4 hover:text-dash-muted-light ${N}`,k="hidden px-3 text-right tabular-nums lg:table-cell";function T({page:e}){let a=e.status??((0,p.hasData)(e)?"No performance data":"No data yet"),{Icon:r,icon:s,badge:i}=e.status?j[e.status]:y;return(0,t.jsxs)(h.Badge,{variant:"outline","data-status":a,className:`text-dash-foreground ${i}`,children:[(0,t.jsx)(r,{"aria-hidden":"true",className:s}),a]})}function C({label:e,caption:a}){return(0,t.jsxs)(u.TableHead,{scope:"col",className:`${k} h-12 text-dash-muted`,children:[e,a&&(0,t.jsx)("span",{className:"block text-body-sm",children:a})]})}function z({status:e,children:a}){let r="Critical"===e?o.OctagonAlert:c.TriangleAlert;return(0,t.jsxs)(u.TableCell,{"data-over-limit":v(e)||void 0,className:`${k} ${v(e)?"font-semibold text-dash-foreground":"text-dash-muted"}`,children:[v(e)&&(0,t.jsx)(r,{"aria-hidden":"true",className:`mr-1 inline size-3.5 align-[-2px] ${"Critical"===e?"text-dash-danger":"text-dash-warning"}`}),a,v(e)&&(0,t.jsx)("span",{className:"sr-only",children:" over limit"})]})}function S({rows:e,has:r,failed:s}){let i=e.length,n=e.filter(e=>v(e.status)).length,d=e.filter(e=>e.status).length,o=e.filter(e=>!(0,p.hasData)(e)).length,c=s.filter(g.isToolId).map(e=>g.TOOLS[e].label),u=null,m=0===o?"":1===o?"1 has no data yet.":`${o} have no data yet.`;if(n)u=1===i?"This page is over a limit.":1===n?`1 of ${i} pages is over a limit.`:`${n} of ${i} pages are over a limit. Worst first.`;else if(d){let e=1===i?"This page is within your limits.":d===i?`All ${i} pages are within your limits. Closest to a limit first.`:1===d?`1 of ${i} pages is within your limits.`:`${d} of ${i} pages are within your limits. Closest to a limit first.`;u=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(l,{"aria-hidden":"true",className:"mr-1 inline size-3.5 align-[-2px] text-dash-success"}),e]})}else c.length?(u=`Could not load ${c.join(" and ")} data, so pages are not checked against your limits.`,m=""):r("loadTime")||(u=(0,t.jsxs)(t.Fragment,{children:["Ranked by Sentry errors in the last 24h. ",(0,t.jsx)(a.default,{href:"/setup",className:w,children:"Connect New Relic"})," to check load time and error rate against your limits."]}));return(d&&c.length&&(m=[m,`Could not load ${c.join(" and ")} data.`].filter(Boolean).join(" ")),u||m)?(0,t.jsxs)("p",{"data-slot":"table-summary",className:"text-body text-dash-muted",children:[u,u&&m&&" ",m]}):null}e.s(["HUB_TABLE_TITLE_ID",0,b,"HubTable",0,function({title:e,pages:s,has:i,thresholds:l,failed:n=[],limit:d}){let o=(0,r.useRouter)(),c=(0,p.rankPages)(s,l),h=c.some(e=>e.status);return(0,t.jsxs)(m.Card,{className:"bg-dash-card text-dash-foreground",children:[(0,t.jsxs)(m.CardHeader,{children:[(0,t.jsx)("h2",{id:b,tabIndex:-1,className:`title-enter w-fit text-h3 text-dash-foreground ${N}`,children:e}),(0,t.jsx)(S,{rows:c,has:i,failed:n})]}),(0,t.jsxs)(m.CardContent,{children:[(0,t.jsxs)(u.Table,{children:[(0,t.jsx)("caption",{className:"sr-only",children:"Pages ranked worst first"}),(0,t.jsx)(u.TableHeader,{children:(0,t.jsxs)(u.TableRow,{className:"border-dash-border hover:bg-transparent",children:[(0,t.jsx)(u.TableHead,{scope:"col",className:"h-12 px-3 text-dash-muted",children:"Page"}),h&&(0,t.jsx)(u.TableHead,{scope:"col",className:"h-12 px-3 text-dash-muted",children:"Status"}),i("loadTime")&&(0,t.jsx)(C,{label:"Load time",caption:(0,p.limitLabel)("loadTime",l)}),i("errorRate")&&(0,t.jsx)(C,{label:"Error rate",caption:(0,p.limitLabel)("errorRate",l)}),i("apdex")&&(0,t.jsx)(C,{label:"Apdex",caption:(0,p.limitLabel)("apdex",l)}),i("errors")&&(0,t.jsx)(C,{label:"Sentry errors",caption:"last 24h, no limit"}),i("traffic")&&(0,t.jsx)(C,{label:(0,x.isSampled)(s)?"Page loads (sampled)":"Views (24h)"})]})}),(0,t.jsx)(u.TableBody,{children:c.slice(0,d).map(e=>{let r=(0,p.hasData)(e),s=(0,p.hasPerformance)(e),n=e.metrics,d=`/performance/${e.slug}`,c=function(e,t,a){if(!(0,p.hasData)(e))return"";if(v(e.status)){let t=(0,p.breachReasons)(e,a).join(", ");return t.charAt(0).toUpperCase()+t.slice(1)}let r=e.metrics,s=(0,p.hasPerformance)(e);return[s&&t("loadTime")&&void 0!==r.loadTime&&`Load ${(0,f.formatDuration)(r.loadTime)}`,s&&t("errorRate")&&void 0!==r.errorRate&&`Errors ${r.errorRate.toFixed(2)}%`,s&&t("apdex")&&void 0!==r.apdex&&`Apdex ${r.apdex.toFixed(2)}`,t("errors")&&r.errors&&`${r.errors.count} Sentry ${1===r.errors.count?"error":"errors"}`].filter(Boolean).join(" · ")}(e,i,l);return(0,t.jsxs)(u.TableRow,{"data-slug":e.slug,className:"h-14 cursor-pointer border-dash-border hover:bg-white/5 focus-within:bg-white/5 lg:h-12",onClick:e=>{e.target.closest("a")||o.push(d)},children:[(0,t.jsxs)("th",{scope:"row","data-slot":"table-cell",className:"w-full max-w-0 px-3 py-2 text-left align-middle font-normal",children:[(0,t.jsxs)(a.default,{href:d,title:e.name,className:`block truncate text-body font-medium text-dash-foreground ${N}`,children:[e.name,(0,t.jsx)("span",{className:"sr-only",children:", view page details"})]}),(0,t.jsx)("span",{title:e.url,className:"block truncate font-mono text-body-sm text-dash-muted",children:e.url}),c&&(0,t.jsx)("span",{"data-slot":"row-summary",className:"mt-0.5 block text-body-sm text-dash-muted lg:hidden",children:c})]}),h&&(0,t.jsx)(u.TableCell,{className:"px-3",children:(0,t.jsx)(T,{page:e})}),i("loadTime")&&(0,t.jsx)(z,{status:s?(0,p.metricStatus)("loadTime",n.loadTime,l):void 0,children:s&&void 0!==n.loadTime?(0,f.formatDuration)(n.loadTime):"—"}),i("errorRate")&&(0,t.jsx)(z,{status:s?(0,p.metricStatus)("errorRate",n.errorRate,l):void 0,children:s&&void 0!==n.errorRate?`${n.errorRate.toFixed(2)}%`:"—"}),i("apdex")&&(0,t.jsx)(z,{status:s?(0,p.metricStatus)("apdex",n.apdex,l):void 0,children:s&&void 0!==n.apdex?n.apdex.toFixed(2):"—"}),i("errors")&&(0,t.jsx)(z,{children:r&&n.errors?n.errors.count:"—"}),i("traffic")&&(0,t.jsx)(z,{children:r&&n.traffic?e.visitors:"—"})]},e.slug)})})]}),void 0!==d&&c.length>d&&(0,t.jsxs)(a.default,{href:"/performance",className:`mt-2 inline-flex min-h-11 items-center px-3 text-body md:min-h-8 ${w}`,children:["View all ",c.length," pages"]})]})]})},"StatusBadge",0,T],7848)},94179,e=>{"use strict";var t=e.i(39294),a=e.i(69322),r=e.i(94237),s=e.i(27152);let i=(0,r.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});e.s(["Badge",0,function({className:e,variant:r="default",render:l,...n}){return(0,a.useRender)({defaultTagName:"span",props:(0,t.mergeProps)({className:(0,s.cn)(i({variant:r}),e)},n),render:l,state:{slot:"badge",variant:r}})}])},70065,e=>{"use strict";var t=e.i(40798),a=e.i(27152);e.s(["Card",0,function({className:e,size:r="default",...s}){return(0,t.jsx)("div",{"data-slot":"card","data-size":r,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...s})},"CardContent",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...r})},"CardDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",e),...r})},"CardHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...r})},"CardTitle",0,function({className:e,...r}){return(0,t.jsx)("h3",{"data-slot":"card-title",className:(0,a.cn)("title-enter font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...r})}])},47627,e=>{"use strict";var t=e.i(40798),a=e.i(27152);e.s(["Table",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,t.jsx)("table",{"data-slot":"table",className:(0,a.cn)("w-full caption-bottom text-sm",e),...r})})},"TableBody",0,function({className:e,...r}){return(0,t.jsx)("tbody",{"data-slot":"table-body",className:(0,a.cn)("[&_tr:last-child]:border-0",e),...r})},"TableCell",0,function({className:e,...r}){return(0,t.jsx)("td",{"data-slot":"table-cell",className:(0,a.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",e),...r})},"TableHead",0,function({className:e,...r}){return(0,t.jsx)("th",{"data-slot":"table-head",className:(0,a.cn)("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",e),...r})},"TableHeader",0,function({className:e,...r}){return(0,t.jsx)("thead",{"data-slot":"table-header",className:(0,a.cn)("[&_tr]:border-b",e),...r})},"TableRow",0,function({className:e,...r}){return(0,t.jsx)("tr",{"data-slot":"table-row",className:(0,a.cn)("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",e),...r})}])},42230,e=>{"use strict";var t=e.i(96341);let a=(...e)=>e.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim(),r={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},s=(0,t.createContext)({}),i=(0,t.forwardRef)(({color:e,size:i,width:l,height:n,strokeWidth:d,absoluteStrokeWidth:o,nonScalingStroke:c,className:u="",children:m,iconNode:h=[],icon:x={node:h,aliases:[],size:24},...g},f)=>{let{size:p=24,strokeWidth:b=2,absoluteStrokeWidth:v=!1,nonScalingStroke:j=!1,color:y="currentColor",className:N=""}=(0,t.useContext)(s)??{},w=!!m||(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(g),[k,T,C=[]]=function(e,t={}){return function(e,t={}){let s=t.attributeNames??{},i=e=>s[e]??e,l=e.size??e.width??r.width,n=e.size??e.height??r.height,d=e.aliases?.filter(e=>"string"==typeof e&&""!==e.trim()).map(e=>`lucide-${e}`)??[],o=[...e.name?[`lucide-${e.name}`]:[],...d],c=t.className?.split(" ").filter(Boolean)??[],u=!1===t.includeDefaultClasses?a(...c):a("lucide",...o,...c),m=t.absoluteStrokeWidth?Number(t.strokeWidth??r["stroke-width"])*Number(e.size??e.width??r.width)/Number(t.size??t.width??r.width):t.strokeWidth??r["stroke-width"];return["svg",{...Object.entries(r).reduce((e,[t,a])=>(e[i(t)]=a,e),{}),..."color"in t&&t.color&&{[i("stroke")]:t.color},..."size"in t&&null!=t.size&&{[i("width")]:t.size,[i("height")]:t.size},..."width"in t&&null!=t.width&&{[i("width")]:t.width},..."height"in t&&null!=t.height&&{[i("height")]:t.height},[i("stroke-width")]:m,...u&&{[i("class")]:u},[i("viewBox")]:`0 0 ${l} ${n}`,...!1===t.hasA11yProp?{[i("aria-hidden")]:"true"}:{},..."attributes"in t&&t.attributes},e.node.map(e=>{let[a,r,s]=e,l=t.nonScalingStroke?{[i("vector-effect")]:"non-scaling-stroke",...r}:r;return s?[a,l,s]:[a,l]})]}(e,{...t,attributeNames:{...t.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(x,{color:e??y,width:l??i??p,height:n??i??p,strokeWidth:d??b,absoluteStrokeWidth:o??v,nonScalingStroke:c??j,className:a(N,u),hasA11yProp:w,attributes:g});return(0,t.createElement)(k,{ref:f,...T},[...C.map(([e,a])=>(0,t.createElement)(e,a)),...Array.isArray(m)?m:[m]])});e.s(["default",0,i],42230)},23023,e=>{"use strict";var t=e.i(67449);let a={name:"clock",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]};a.node;let r=(0,t.default)(a);e.s(["Clock",0,r],23023)},98948,e=>{"use strict";var t=e.i(67449);let a={name:"gauge",size:24,node:[["path",{d:"m12 14 4-4",key:"9kzdfg"}],["path",{d:"M3.34 19a10 10 0 1 1 17.32 0",key:"19p75a"}]]};a.node;let r=(0,t.default)(a);e.s(["Gauge",0,r],98948)},33451,66987,e=>{"use strict";var t=e.i(67449);let a={name:"octagon-alert",size:24,node:[["path",{d:"M12 16h.01",key:"1drbdi"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z",key:"1fd625"}]],aliases:["alert-octagon"]};a.node;let r=(0,t.default)(a);e.s(["OctagonAlert",0,r],33451);var s=e.i(74581);e.s(["TriangleAlert",()=>s.default],66987)},74581,e=>{"use strict";var t=e.i(67449);let a={name:"triangle-alert",size:24,node:[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],aliases:["alert-triangle"]};a.node;let r=(0,t.default)(a);e.s(["default",0,r])},69344,e=>{"use strict";var t=e.i(67449);let a={name:"zap",size:24,node:[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]]};a.node;let r=(0,t.default)(a);e.s(["Zap",0,r],69344)}]);
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,96098,e=>{"use strict";var t=e.i(40798),a=e.i(39294),r=e.i(69322),s=e.i(27152),i=e.i(67449);let l={name:"chevron-right",size:24,node:[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]};l.node;let n=(0,i.default)(l),d={name:"ellipsis",size:24,node:[["circle",{cx:"12",cy:"12",r:"1",key:"41hilf"}],["circle",{cx:"19",cy:"12",r:"1",key:"1wjl8i"}],["circle",{cx:"5",cy:"12",r:"1",key:"1pcz8c"}]],aliases:["more-horizontal"]};function o({className:e,...a}){return(0,t.jsx)("nav",{"aria-label":"breadcrumb","data-slot":"breadcrumb",className:(0,s.cn)(e),...a})}function c({className:e,...a}){return(0,t.jsx)("ol",{"data-slot":"breadcrumb-list",className:(0,s.cn)("flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground",e),...a})}function m({className:e,...a}){return(0,t.jsx)("li",{"data-slot":"breadcrumb-item",className:(0,s.cn)("inline-flex items-center gap-1",e),...a})}function u({className:e,render:t,...i}){return(0,r.useRender)({defaultTagName:"a",props:(0,a.mergeProps)({className:(0,s.cn)("transition-colors hover:text-foreground",e)},i),render:t,state:{slot:"breadcrumb-link"}})}function h({className:e,...a}){return(0,t.jsx)("span",{"data-slot":"breadcrumb-page",role:"link","aria-disabled":"true","aria-current":"page",className:(0,s.cn)("font-normal text-foreground",e),...a})}function x({children:e,className:a,...r}){return(0,t.jsx)("li",{"data-slot":"breadcrumb-separator",role:"presentation","aria-hidden":"true",className:(0,s.cn)("[&>svg]:size-3.5",a),...r,children:e??(0,t.jsx)(n,{})})}d.node,(0,i.default)(d),e.s(["PerformanceBreadcrumb",0,function({pageName:e="Homepage"}){return(0,t.jsx)(o,{className:"mb-6",children:(0,t.jsxs)(c,{children:[(0,t.jsx)(m,{children:(0,t.jsx)(u,{href:"/performance",className:"text-gray-400 hover:text-white",children:"Performance"})}),(0,t.jsx)(x,{}),(0,t.jsx)(m,{children:(0,t.jsx)(h,{className:"text-white font-medium",children:e})})]})})}],96098)},29672,e=>{"use strict";var t=e.i(40798),a=e.i(3547),r=e.i(19085),s=e.i(24851),i=e.i(7848),l=e.i(71428),n=e.i(34813),d=e.i(73011),o=e.i(50762),c=e.i(96098),m=e.i(5080),u=e.i(97920);let h="Keys work, but no page events have arrived.";e.s(["PerformanceDetail",0,function({slug:e}){let{state:x,retry:g}=(0,n.useMetrics)(),f=(0,o.useThresholds)();if("loading"===x.status)return(0,t.jsx)(l.Skeleton,{className:"h-64 w-full bg-[#2d3748]"});if("error"===x.status)return(0,t.jsx)(s.EmptyState,{title:"Could not load metrics",reason:x.message,onRetry:g});if(!x.configured)return(0,t.jsx)(s.EmptyState,{title:"Connect your data",reason:"Add your New Relic or Sentry keys to see real numbers.",href:"/setup",cta:"Set up keys"});if(0===x.pages.length)return(0,t.jsx)(s.EmptyState,{});let p=x.pages.find(t=>t.slug===e);p||(0,r.notFound)();let b=e=>(0,n.provides)(x,e),v=b("loadTime")&&b("errorRate")&&b("apdex")&&(0,d.hasPerformance)(p),j={...p,status:v?(0,d.deriveStatus)(p.metrics,f):void 0},y=(0,d.hasData)(j),N=j.status?(0,d.breachReasons)(j,f):[],w=y?j.status?N.length?`Over a limit: ${N.join(", ")}.`:"Within your limits.":"No performance data from New Relic for this page yet.":h;return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(c.PerformanceBreadcrumb,{pageName:j.name}),(0,t.jsxs)("section",{"aria-labelledby":"page-status-title",className:"mb-6 flex flex-wrap items-center gap-x-4 gap-y-2",children:[(0,t.jsx)("h2",{id:"page-status-title",className:"sr-only",children:"Status"}),(0,t.jsx)(i.StatusBadge,{page:j}),(0,t.jsx)("p",{"data-slot":"status-sentence",className:"text-body text-dash-foreground",children:w}),(0,t.jsx)(a.default,{href:"/settings?tab=thresholds",className:"inline-flex min-h-11 items-center rounded-sm font-medium text-dash-foreground underline underline-offset-4 outline-none hover:text-dash-muted-light focus-visible:ring-3 focus-visible:ring-ring/50 md:min-h-8",children:"Edit limits"})]}),y?(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(m.PerformanceKPIs,{page:j,has:b,thresholds:f}),j.metrics.errors&&(0,t.jsx)(u.RelatedErrorsList,{errors:j.metrics.errors.latest})]}):(0,t.jsx)(s.EmptyState,{reason:`${j.name} (${j.url}): ${h}`})]})}])},5080,e=>{"use strict";var t=e.i(40798),a=e.i(70065),r=e.i(86242),s=e.i(23023),i=e.i(98948),l=e.i(33451),n=e.i(66987),d=e.i(69344),o=e.i(93961),c=e.i(64114),m=e.i(73011);e.s(["PerformanceKPIs",0,function({page:e,has:u,thresholds:h}){let x=e.metrics,g=(0,m.hasPerformance)(e),f=(e,t)=>g&&void 0!==e?t(e):"—",p=[{needs:"loadTime",label:"Average Load Time",value:f(x.loadTime,o.formatDuration),icon:(0,t.jsx)(s.Clock,{className:"h-4 w-4 text-[#3ee0a1]"}),limit:"loadTime"},{needs:"errorRate",label:"Error Rate",value:f(x.errorRate,e=>`${e.toFixed(2)}%`),icon:(0,t.jsx)(r.Activity,{className:"h-4 w-4 text-[#ef4444]"}),limit:"errorRate"},{needs:"apdex",label:"Apdex",value:f(x.apdex,e=>e.toFixed(2)),icon:(0,t.jsx)(i.Gauge,{className:"h-4 w-4 text-[#3ee0a1]"}),limit:"apdex"},{needs:"traffic",label:(0,c.isSampled)([e])?"Page loads (sampled)":"Traffic Volume",value:g&&x.traffic?e.visitors:"—",icon:(0,t.jsx)(d.Zap,{className:"h-4 w-4 text-[#06b6d4]"})}];return(0,t.jsx)("div",{className:"grid gap-6 md:grid-cols-3 mb-8",children:p.filter(e=>u(e.needs)).map(e=>{let r=e.limit&&g?(0,m.metricStatus)(e.limit,x[e.limit],h):void 0,s="Warning"===r||"Critical"===r,i="Critical"===r?l.OctagonAlert:n.TriangleAlert;return(0,t.jsx)(a.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,t.jsxs)(a.CardContent,{className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsx)("span",{className:"text-sm font-medium text-gray-400",children:e.label}),(0,t.jsx)("div",{className:"flex h-8 w-8 items-center justify-center rounded-lg bg-[#0f1419] border border-[#2d3748]",children:e.icon})]}),(0,t.jsxs)("span",{"data-over-limit":s||void 0,className:"text-3xl font-semibold text-white tracking-tight",children:[s&&(0,t.jsx)(i,{"aria-hidden":"true",className:`mr-2 inline size-6 align-[-2px] ${"Critical"===r?"text-dash-danger":"text-dash-warning"}`}),e.value,s&&(0,t.jsx)("span",{className:"sr-only",children:" over limit"})]}),e.limit&&(0,t.jsx)("span",{className:"mt-1 block text-body-sm text-dash-muted",children:(0,m.limitLabel)(e.limit,h)})]})},e.label)})})}])},97920,e=>{"use strict";var t=e.i(40798),a=e.i(70065),r=e.i(67449);let s={name:"circle-alert",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]],aliases:["alert-circle"]};s.node;let i=(0,r.default)(s);var l=e.i(23023);e.s(["RelatedErrorsList",0,function({errors:e}){return(0,t.jsxs)(a.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md w-full lg:w-[400px]",children:[(0,t.jsx)(a.CardHeader,{children:(0,t.jsxs)(a.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight flex items-center gap-2",children:[(0,t.jsx)(i,{className:"h-5 w-5 text-[#ef4444]"}),"Related Errors"]})}),(0,t.jsx)(a.CardContent,{children:0===e.length?(0,t.jsx)("p",{className:"text-sm text-gray-400",children:"No errors reported for this page."}):(0,t.jsx)("div",{className:"flex flex-col gap-3",children:e.map(e=>(0,t.jsxs)("div",{className:"flex flex-col gap-2 rounded-lg border border-[#2d3748] bg-[#0f1419] p-4",children:[(0,t.jsx)("div",{className:"flex items-center justify-between",children:(0,t.jsxs)("span",{className:"text-xs font-mono text-gray-500",children:[e.count," events"]})}),(0,t.jsx)("p",{className:"text-sm font-medium text-gray-200 line-clamp-2",children:e.title}),(0,t.jsxs)("div",{className:"flex items-center gap-1 mt-1 text-xs text-gray-500",children:[(0,t.jsx)(l.Clock,{className:"h-3 w-3"}),(0,t.jsx)("span",{children:new Date(e.lastSeen).toLocaleString()})]})]},e.title))})})]})}],97920)},24851,e=>{"use strict";var t=e.i(40798),a=e.i(3547),r=e.i(70065),s=e.i(67881);e.s(["EmptyState",0,function({title:e="No data yet",reason:i="Keys work, but no page events have arrived.",href:l="/connect",cta:n="Send your first events",onRetry:d}){return(0,t.jsx)(r.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,t.jsxs)(r.CardContent,{className:"flex flex-col items-center gap-3 p-10 text-center",children:[(0,t.jsx)("h3",{className:"text-lg font-semibold text-white",children:e}),(0,t.jsx)("p",{className:"max-w-md text-sm text-gray-400",children:i}),(0,t.jsxs)("div",{className:"flex gap-3",children:[l&&(0,t.jsx)(a.default,{href:l,className:(0,s.buttonVariants)(),children:n}),d&&(0,t.jsx)(s.Button,{variant:"outline",onClick:d,children:"Retry"})]})]})})}])},7848,e=>{"use strict";var t=e.i(40798),a=e.i(3547),r=e.i(19085),s=e.i(67449);let i={name:"circle-check",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"m16 9-5.5 5.5L8 12",key:"xofnsj"}]],aliases:["check-circle-2"]};i.node;let l=(0,s.default)(i),n={name:"circle-dashed",size:24,node:[["path",{d:"M10.1 2.182a10 10 0 0 1 3.8 0",key:"5ilxe3"}],["path",{d:"M13.9 21.818a10 10 0 0 1-3.8 0",key:"11zvb9"}],["path",{d:"M17.609 3.721a10 10 0 0 1 2.69 2.7",key:"1iw5b2"}],["path",{d:"M2.182 13.9a10 10 0 0 1 0-3.8",key:"c0bmvh"}],["path",{d:"M20.279 17.609a10 10 0 0 1-2.7 2.69",key:"1ruxm7"}],["path",{d:"M21.818 10.1a10 10 0 0 1 0 3.8",key:"qkgqxc"}],["path",{d:"M3.721 6.391a10 10 0 0 1 2.7-2.69",key:"1mcia2"}],["path",{d:"M6.391 20.279a10 10 0 0 1-2.69-2.7",key:"1fvljs"}]]};n.node;let d=(0,s.default)(n);var o=e.i(33451),c=e.i(66987),m=e.i(47627),u=e.i(70065),h=e.i(94179),x=e.i(64114),g=e.i(93834),f=e.i(93961),p=e.i(73011);let b="pages-table-title",v=e=>"Warning"===e||"Critical"===e,j={Critical:{Icon:o.OctagonAlert,icon:"text-dash-danger",badge:"border-dash-danger/40 bg-dash-danger/10"},Warning:{Icon:c.TriangleAlert,icon:"text-dash-warning",badge:"border-dash-warning/40 bg-dash-warning/10"},Healthy:{Icon:l,icon:"text-dash-success",badge:"border-dash-success/40 bg-dash-success/10"}},y={Icon:d,icon:"text-dash-muted",badge:"border-dash-border-light"},N="rounded-sm outline-none focus-visible:ring-3 focus-visible:ring-ring/50",w=`font-medium text-dash-foreground underline underline-offset-4 hover:text-dash-muted-light ${N}`,k="hidden px-3 text-right tabular-nums lg:table-cell";function T({page:e}){let a=e.status??((0,p.hasData)(e)?"No performance data":"No data yet"),{Icon:r,icon:s,badge:i}=e.status?j[e.status]:y;return(0,t.jsxs)(h.Badge,{variant:"outline","data-status":a,className:`text-dash-foreground ${i}`,children:[(0,t.jsx)(r,{"aria-hidden":"true",className:s}),a]})}function C({label:e,caption:a}){return(0,t.jsxs)(m.TableHead,{scope:"col",className:`${k} h-12 text-dash-muted`,children:[e,a&&(0,t.jsx)("span",{className:"block text-body-sm",children:a})]})}function S({status:e,children:a}){let r="Critical"===e?o.OctagonAlert:c.TriangleAlert;return(0,t.jsxs)(m.TableCell,{"data-over-limit":v(e)||void 0,className:`${k} ${v(e)?"font-semibold text-dash-foreground":"text-dash-muted"}`,children:[v(e)&&(0,t.jsx)(r,{"aria-hidden":"true",className:`mr-1 inline size-3.5 align-[-2px] ${"Critical"===e?"text-dash-danger":"text-dash-warning"}`}),a,v(e)&&(0,t.jsx)("span",{className:"sr-only",children:" over limit"})]})}function $({rows:e,has:r,failed:s}){let i=e.length,n=e.filter(e=>v(e.status)).length,d=e.filter(e=>e.status).length,o=e.filter(e=>!(0,p.hasData)(e)).length,c=s.filter(g.isToolId).map(e=>g.TOOLS[e].label),m=null,u=0===o?"":1===o?"1 has no data yet.":`${o} have no data yet.`;if(n)m=1===i?"This page is over a limit.":1===n?`1 of ${i} pages is over a limit.`:`${n} of ${i} pages are over a limit. Worst first.`;else if(d){let e=1===i?"This page is within your limits.":d===i?`All ${i} pages are within your limits. Closest to a limit first.`:1===d?`1 of ${i} pages is within your limits.`:`${d} of ${i} pages are within your limits. Closest to a limit first.`;m=(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(l,{"aria-hidden":"true",className:"mr-1 inline size-3.5 align-[-2px] text-dash-success"}),e]})}else c.length?(m=`Could not load ${c.join(" and ")} data, so pages are not checked against your limits.`,u=""):r("loadTime")||(m=(0,t.jsxs)(t.Fragment,{children:["Ranked by Sentry errors in the last 24h. ",(0,t.jsx)(a.default,{href:"/setup",className:w,children:"Connect New Relic"})," to check load time and error rate against your limits."]}));return(d&&c.length&&(u=[u,`Could not load ${c.join(" and ")} data.`].filter(Boolean).join(" ")),m||u)?(0,t.jsxs)("p",{"data-slot":"table-summary",className:"text-body text-dash-muted",children:[m,m&&u&&" ",u]}):null}e.s(["HUB_TABLE_TITLE_ID",0,b,"HubTable",0,function({title:e,pages:s,has:i,thresholds:l,failed:n=[],limit:d}){let o=(0,r.useRouter)(),c=(0,p.rankPages)(s,l),h=c.some(e=>e.status);return(0,t.jsxs)(u.Card,{className:"bg-dash-card text-dash-foreground",children:[(0,t.jsxs)(u.CardHeader,{children:[(0,t.jsx)("h2",{id:b,tabIndex:-1,className:`title-enter w-fit text-h3 text-dash-foreground ${N}`,children:e}),(0,t.jsx)($,{rows:c,has:i,failed:n})]}),(0,t.jsxs)(u.CardContent,{children:[(0,t.jsxs)(m.Table,{children:[(0,t.jsx)("caption",{className:"sr-only",children:"Pages ranked worst first"}),(0,t.jsx)(m.TableHeader,{children:(0,t.jsxs)(m.TableRow,{className:"border-dash-border hover:bg-transparent",children:[(0,t.jsx)(m.TableHead,{scope:"col",className:"h-12 px-3 text-dash-muted",children:"Page"}),h&&(0,t.jsx)(m.TableHead,{scope:"col",className:"h-12 px-3 text-dash-muted",children:"Status"}),i("loadTime")&&(0,t.jsx)(C,{label:"Load time",caption:(0,p.limitLabel)("loadTime",l)}),i("errorRate")&&(0,t.jsx)(C,{label:"Error rate",caption:(0,p.limitLabel)("errorRate",l)}),i("apdex")&&(0,t.jsx)(C,{label:"Apdex",caption:(0,p.limitLabel)("apdex",l)}),i("errors")&&(0,t.jsx)(C,{label:"Sentry errors",caption:"last 24h, no limit"}),i("traffic")&&(0,t.jsx)(C,{label:(0,x.isSampled)(s)?"Page loads (sampled)":"Views (24h)"})]})}),(0,t.jsx)(m.TableBody,{children:c.slice(0,d).map(e=>{let r=(0,p.hasData)(e),s=(0,p.hasPerformance)(e),n=e.metrics,d=`/performance/${e.slug}`,c=function(e,t,a){if(!(0,p.hasData)(e))return"";if(v(e.status)){let t=(0,p.breachReasons)(e,a).join(", ");return t.charAt(0).toUpperCase()+t.slice(1)}let r=e.metrics,s=(0,p.hasPerformance)(e);return[s&&t("loadTime")&&void 0!==r.loadTime&&`Load ${(0,f.formatDuration)(r.loadTime)}`,s&&t("errorRate")&&void 0!==r.errorRate&&`Errors ${r.errorRate.toFixed(2)}%`,s&&t("apdex")&&void 0!==r.apdex&&`Apdex ${r.apdex.toFixed(2)}`,t("errors")&&r.errors&&`${r.errors.count} Sentry ${1===r.errors.count?"error":"errors"}`].filter(Boolean).join(" · ")}(e,i,l);return(0,t.jsxs)(m.TableRow,{"data-slug":e.slug,className:"h-14 cursor-pointer border-dash-border hover:bg-white/5 focus-within:bg-white/5 lg:h-12",onClick:e=>{e.target.closest("a")||o.push(d)},children:[(0,t.jsxs)("th",{scope:"row","data-slot":"table-cell",className:"w-full max-w-0 px-3 py-2 text-left align-middle font-normal",children:[(0,t.jsxs)(a.default,{href:d,title:e.name,className:`block truncate text-body font-medium text-dash-foreground ${N}`,children:[e.name,(0,t.jsx)("span",{className:"sr-only",children:", view page details"})]}),(0,t.jsx)("span",{title:e.url,className:"block truncate font-mono text-body-sm text-dash-muted",children:e.url}),c&&(0,t.jsx)("span",{"data-slot":"row-summary",className:"mt-0.5 block text-body-sm text-dash-muted lg:hidden",children:c})]}),h&&(0,t.jsx)(m.TableCell,{className:"px-3",children:(0,t.jsx)(T,{page:e})}),i("loadTime")&&(0,t.jsx)(S,{status:s?(0,p.metricStatus)("loadTime",n.loadTime,l):void 0,children:s&&void 0!==n.loadTime?(0,f.formatDuration)(n.loadTime):"—"}),i("errorRate")&&(0,t.jsx)(S,{status:s?(0,p.metricStatus)("errorRate",n.errorRate,l):void 0,children:s&&void 0!==n.errorRate?`${n.errorRate.toFixed(2)}%`:"—"}),i("apdex")&&(0,t.jsx)(S,{status:s?(0,p.metricStatus)("apdex",n.apdex,l):void 0,children:s&&void 0!==n.apdex?n.apdex.toFixed(2):"—"}),i("errors")&&(0,t.jsx)(S,{children:r&&n.errors?n.errors.count:"—"}),i("traffic")&&(0,t.jsx)(S,{children:r&&n.traffic?e.visitors:"—"})]},e.slug)})})]}),void 0!==d&&c.length>d&&(0,t.jsxs)(a.default,{href:"/performance",className:`mt-2 inline-flex min-h-11 items-center px-3 text-body md:min-h-8 ${w}`,children:["View all ",c.length," pages"]})]})]})},"StatusBadge",0,T],7848)},94179,e=>{"use strict";var t=e.i(39294),a=e.i(69322),r=e.i(94237),s=e.i(27152);let i=(0,r.cva)("group/badge inline-flex h-5 w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-4xl border border-transparent px-2 py-0.5 text-xs font-medium whitespace-nowrap transition-all focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 [&>svg]:pointer-events-none [&>svg]:size-3!",{variants:{variant:{default:"bg-primary text-primary-foreground [a]:hover:bg-primary/80",secondary:"bg-secondary text-secondary-foreground [a]:hover:bg-secondary/80",destructive:"bg-destructive/10 text-destructive focus-visible:ring-destructive/20 dark:bg-destructive/20 dark:focus-visible:ring-destructive/40 [a]:hover:bg-destructive/20",outline:"border-border text-foreground [a]:hover:bg-muted [a]:hover:text-muted-foreground",ghost:"hover:bg-muted hover:text-muted-foreground dark:hover:bg-muted/50",link:"text-primary underline-offset-4 hover:underline"}},defaultVariants:{variant:"default"}});e.s(["Badge",0,function({className:e,variant:r="default",render:l,...n}){return(0,a.useRender)({defaultTagName:"span",props:(0,t.mergeProps)({className:(0,s.cn)(i({variant:r}),e)},n),render:l,state:{slot:"badge",variant:r}})}])},70065,e=>{"use strict";var t=e.i(40798),a=e.i(27152);e.s(["Card",0,function({className:e,size:r="default",...s}){return(0,t.jsx)("div",{"data-slot":"card","data-size":r,className:(0,a.cn)("group/card flex flex-col gap-(--card-spacing) overflow-hidden rounded-xl bg-card py-(--card-spacing) text-sm text-card-foreground ring-1 ring-foreground/10 [--card-spacing:--spacing(4)] has-data-[slot=card-footer]:pb-0 has-[>img:first-child]:pt-0 data-[size=sm]:[--card-spacing:--spacing(3)] data-[size=sm]:has-data-[slot=card-footer]:pb-0 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl",e),...s})},"CardContent",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-content",className:(0,a.cn)("px-(--card-spacing)",e),...r})},"CardDescription",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-description",className:(0,a.cn)("text-sm text-muted-foreground",e),...r})},"CardHeader",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"card-header",className:(0,a.cn)("group/card-header @container/card-header grid auto-rows-min items-start gap-1 rounded-t-xl px-(--card-spacing) has-data-[slot=card-action]:grid-cols-[1fr_auto] has-data-[slot=card-description]:grid-rows-[auto_auto] [.border-b]:pb-(--card-spacing)",e),...r})},"CardTitle",0,function({className:e,...r}){return(0,t.jsx)("h3",{"data-slot":"card-title",className:(0,a.cn)("title-enter font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",e),...r})}])},47627,e=>{"use strict";var t=e.i(40798),a=e.i(27152);e.s(["Table",0,function({className:e,...r}){return(0,t.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,t.jsx)("table",{"data-slot":"table",className:(0,a.cn)("w-full caption-bottom text-sm",e),...r})})},"TableBody",0,function({className:e,...r}){return(0,t.jsx)("tbody",{"data-slot":"table-body",className:(0,a.cn)("[&_tr:last-child]:border-0",e),...r})},"TableCell",0,function({className:e,...r}){return(0,t.jsx)("td",{"data-slot":"table-cell",className:(0,a.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0",e),...r})},"TableHead",0,function({className:e,...r}){return(0,t.jsx)("th",{"data-slot":"table-head",className:(0,a.cn)("h-10 px-2 text-left align-middle font-medium whitespace-nowrap text-foreground [&:has([role=checkbox])]:pr-0",e),...r})},"TableHeader",0,function({className:e,...r}){return(0,t.jsx)("thead",{"data-slot":"table-header",className:(0,a.cn)("[&_tr]:border-b",e),...r})},"TableRow",0,function({className:e,...r}){return(0,t.jsx)("tr",{"data-slot":"table-row",className:(0,a.cn)("border-b transition-colors hover:bg-muted/50 has-aria-expanded:bg-muted/50 data-[state=selected]:bg-muted",e),...r})}])},42230,e=>{"use strict";var t=e.i(96341);let a=(...e)=>e.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim(),r={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":2,"stroke-linecap":"round","stroke-linejoin":"round"},s=(0,t.createContext)({}),i=(0,t.forwardRef)(({color:e,size:i,width:l,height:n,strokeWidth:d,absoluteStrokeWidth:o,nonScalingStroke:c,className:m="",children:u,iconNode:h=[],icon:x={node:h,aliases:[],size:24},...g},f)=>{let{size:p=24,strokeWidth:b=2,absoluteStrokeWidth:v=!1,nonScalingStroke:j=!1,color:y="currentColor",className:N=""}=(0,t.useContext)(s)??{},w=!!u||(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(g),[k,T,C=[]]=function(e,t={}){return function(e,t={}){let s=t.attributeNames??{},i=e=>s[e]??e,l=e.size??e.width??r.width,n=e.size??e.height??r.height,d=e.aliases?.filter(e=>"string"==typeof e&&""!==e.trim()).map(e=>`lucide-${e}`)??[],o=[...e.name?[`lucide-${e.name}`]:[],...d],c=t.className?.split(" ").filter(Boolean)??[],m=!1===t.includeDefaultClasses?a(...c):a("lucide",...o,...c),u=t.absoluteStrokeWidth?Number(t.strokeWidth??r["stroke-width"])*Number(e.size??e.width??r.width)/Number(t.size??t.width??r.width):t.strokeWidth??r["stroke-width"];return["svg",{...Object.entries(r).reduce((e,[t,a])=>(e[i(t)]=a,e),{}),..."color"in t&&t.color&&{[i("stroke")]:t.color},..."size"in t&&null!=t.size&&{[i("width")]:t.size,[i("height")]:t.size},..."width"in t&&null!=t.width&&{[i("width")]:t.width},..."height"in t&&null!=t.height&&{[i("height")]:t.height},[i("stroke-width")]:u,...m&&{[i("class")]:m},[i("viewBox")]:`0 0 ${l} ${n}`,...!1===t.hasA11yProp?{[i("aria-hidden")]:"true"}:{},..."attributes"in t&&t.attributes},e.node.map(e=>{let[a,r,s]=e,l=t.nonScalingStroke?{[i("vector-effect")]:"non-scaling-stroke",...r}:r;return s?[a,l,s]:[a,l]})]}(e,{...t,attributeNames:{...t.attributeNames,class:"className","stroke-width":"strokeWidth","stroke-linecap":"strokeLinecap","stroke-linejoin":"strokeLinejoin","vector-effect":"vectorEffect"}})}(x,{color:e??y,width:l??i??p,height:n??i??p,strokeWidth:d??b,absoluteStrokeWidth:o??v,nonScalingStroke:c??j,className:a(N,m),hasA11yProp:w,attributes:g});return(0,t.createElement)(k,{ref:f,...T},[...C.map(([e,a])=>(0,t.createElement)(e,a)),...Array.isArray(u)?u:[u]])});e.s(["default",0,i],42230)},23023,e=>{"use strict";var t=e.i(67449);let a={name:"clock",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]};a.node;let r=(0,t.default)(a);e.s(["Clock",0,r],23023)},33451,66987,e=>{"use strict";var t=e.i(67449);let a={name:"octagon-alert",size:24,node:[["path",{d:"M12 16h.01",key:"1drbdi"}],["path",{d:"M12 8v4",key:"1got3b"}],["path",{d:"M15.312 2a2 2 0 0 1 1.414.586l4.688 4.688A2 2 0 0 1 22 8.688v6.624a2 2 0 0 1-.586 1.414l-4.688 4.688a2 2 0 0 1-1.414.586H8.688a2 2 0 0 1-1.414-.586l-4.688-4.688A2 2 0 0 1 2 15.312V8.688a2 2 0 0 1 .586-1.414l4.688-4.688A2 2 0 0 1 8.688 2z",key:"1fd625"}]],aliases:["alert-octagon"]};a.node;let r=(0,t.default)(a);e.s(["OctagonAlert",0,r],33451);var s=e.i(74581);e.s(["TriangleAlert",()=>s.default],66987)},74581,e=>{"use strict";var t=e.i(67449);let a={name:"triangle-alert",size:24,node:[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]],aliases:["alert-triangle"]};a.node;let r=(0,t.default)(a);e.s(["default",0,r])},69344,e=>{"use strict";var t=e.i(67449);let a={name:"zap",size:24,node:[["path",{d:"M15.914 4a1.5 1.5 0 00-2.474-1.561l-9 9A1.5 1.5 0 005.5 14h4.002a.5.5 0 01.471.666L8.086 20a1.5 1.5 0 002.475 1.56l9-9A1.5 1.5 0 0018.5 10h-3.997a.5.5 0 01-.472-.667z",key:"1v7up4"}]]};a.node;let r=(0,t.default)(a);e.s(["Zap",0,r],69344)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/16dm0t9zkiz1_.js","static/chunks/3twacs-22zdwk.js","static/chunks/21q5shbghrpvd.js","static/chunks/0on9boy9udzsk.js"],runtimeModuleIds:[28607]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;var t,r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=((t=n||{})[t.Runtime=0]="Runtime",t[t.Parent=1]="Parent",t[t.Update=2]="Update",t);let o=new WeakMap;function i(e,t){this.m=e,this.e=t}let l=i.prototype,u=Object.prototype.hasOwnProperty,s="u">typeof Symbol&&Symbol.toStringTag;function c(e,t,r){u.call(e,t)||Object.defineProperty(e,t,r)}function a(e,t){let r=e[t];return r||(r=f(t),e[t]=r),r}function f(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function p(e,t,r){c(e,"__esModule",{value:!0}),s&&c(e,s,{value:"Module"});let n=0;for(;n<t.length;){let r=t[n++],o=t[n++];if("number"==typeof o)if(0===o)c(e,r,{value:t[n++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[n]?c(e,r,{get:o,set:t[n++],enumerable:!0}):c(e,r,{get:o,enumerable:!0})}r||Object.seal(e)}function h(e,t){(null!=t?a(this.c,t):this.m).exports=e}l.s=function(e,t,r){let n,o;null!=t?o=(n=a(this.c,t)).exports:(n=this.m,o=this.e),n.namespaceObject=o,p(o,e,r)},l.j=function(e,t){let r,n;null!=t?n=(r=a(this.c,t)).exports:(r=this.m,n=this.e);let i=function(e,t){let r=o.get(e);if(!r){o.set(e,r=[]);let n=e=>{if("default"!==e){for(let t of r)if(u.call(t,e))return t}};e.exports=e.namespaceObject=new Proxy(t,{get(e,t){if(u.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);let r=n(t);return r&&Reflect.get(r,t)},set:()=>!1,defineProperty:()=>!1,deleteProperty:()=>!1,has:(e,t)=>!!Reflect.has(e,t)||"default"!==t&&"__esModule"!==t&&void 0!==n(t),ownKeys(e){let t=Reflect.ownKeys(e);for(let e of r)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t},getOwnPropertyDescriptor(e,t){let r=Reflect.getOwnPropertyDescriptor(e,t);if(r||"default"===t||"__esModule"===t)return r;let o=n(t);if(o)return{enumerable:!0,configurable:!0,get:()=>Reflect.get(o,t)}}})}return r}(r,n);"object"==typeof e&&null!==e&&i.push(e)},l.v=h,l.n=function(e,t){let r;(r=null!=t?a(this.c,t):this.m).exports=r.namespaceObject=e};let d=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,m=[null,d({}),d([]),d(d)];function y(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!m.includes(t);t=d(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),p(t,n),t}function b(e){let t=I(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=y(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function g(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}l.i=b,l.A=function(e){return this.r(e)(b.bind(this))},l.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},l.r=function(e){return I(e,this.m).exports},l.f=function(e){function t(t){if(t=g(t),u.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=g(t),u.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let O=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function w(e,t){throw Error(`Invariant: ${t(e)}`)}O.prototype=URL.prototype,l.U=O,l.z=function(e){throw Error("dynamic usage of require is not supported")},l.g=globalThis;let k=Symbol("turbopack queues"),j=Symbol("turbopack exports"),C=Symbol("turbopack error");function R(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}function v(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}l.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:u}=R(),s=Object.assign(u,{[j]:r.exports,[k]:e=>{n&&e(n),o.forEach(e),s.catch(()=>{})}}),c={get:()=>s,set(e){e!==s&&(s[j]=e)}};Object.defineProperty(r,"exports",c),Object.defineProperty(r,"namespaceObject",c),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(k in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[j]:{},[k]:e=>e(t)};return e.then(e=>{r[j]=e,v(t)},e=>{r[C]=e,v(t)}),r}}return{[j]:e,[k]:()=>{}}}),r=()=>t.map(e=>{if(e[C])throw e[C];return e[j]}),{promise:i,resolve:l}=R(),u=Object.assign(()=>l(r),{queueCount:0});function s(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(u.queueCount++,e.push(u)))}return t.map(e=>e[k](s)),u.queueCount?i:r()},function(e){e?l(s[C]=e):i(s[j]),v(n)}),n&&-1===n.status&&(n.status=0)};let U=i.prototype,P="string"==typeof TURBOPACK_CHUNK_BASE_PATH?TURBOPACK_CHUNK_BASE_PATH:"/_next/",_=new Map;l.M=_;let $=new Map,A=new Map,T=new Map;async function E(e,t,r){let n;if("string"==typeof r)return function(e,t,r){return M(e,t,r)}(e,t,q(r));let o=r.included||[],i=o.map(e=>!!_.has(e)||$.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);for(let i of(n=M(e,t,q(r.path)),o))$.has(i)||$.set(i,n);await n}U.l=function(e){return E(n.Parent,this.m.id,e)};let S=Promise.resolve(void 0),x=new WeakMap;function M(t,r,o){let i=e.loadChunkCached(t,o),l=x.get(i);if(void 0===l){let e=x.set.bind(x,i,S);l=i.then(e).catch(e=>{let i;switch(t){case n.Runtime:i=`as a runtime dependency of chunk ${r}`;break;case n.Parent:i=`from module ${r}`;break;case n.Update:i="from an HMR update";break;default:w(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${o} ${i}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),x.set(i,l)}return l}U.L=function(e){var t,r;return t=n.Parent,r=this.m.id,M(t,r,e)};U.R=function(e){let t=this.r(e);return t?.default??t},U.P=function(e){return`/ROOT/${e??""}`},U.F=function(e){return e?`file:///ROOT/${e.split("/").map(encodeURIComponent).join("/")}`:"file:///ROOT/"},U.q=function(e,t){h.call(this,`${e}${r}`,t)};let K=/[^A-Za-z0-9\-_.!~*'()/]/;function q(e,t=P){let n=K.test(e)?e.split("/").map(encodeURIComponent).join("/"):e;return`${t}${n}${r}`}function N(e,t){let r,n=e.indexOf("?");if(-1!==n)r=n;else{let t=e.indexOf("#");r=-1!==t?t:e.length}return r>=t.length&&e.startsWith(t,r-t.length)}U.b=P,U.X=r,U.h=q;function B(e){return N(e,".css")}let L={};l.c=L;let I=(e,t)=>{let r=L[e];if(r){if(r.error)throw r.error;return r}return H(e,n.Parent,t.id)};function H(e,t,r){let n=_.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:w(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=f(e),l=o.exports;L[e]=o;let u=new i(o,l);try{n(u,o,l)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&y(o.exports,o.namespaceObject),o}function F(t){let r;if(!Array.isArray(t))return e.registerChunk(void 0,t);let n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let i=e[o];for(let i=r;i<o;i++){let r=e[i],o=t.get(r);if(o){n=o;break}}let l=n??i,u=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(u||(l===i&&Object.defineProperty(i,"name",{value:"module evaluation"}),u=!0),t.set(r,l))}r=o+1}}(t,_)),e.registerChunk(n,r)}let D=new Map;function z(e){let t=D.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,retryAttempts:0,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},D.set(e,t)}return t}function W(e,t,r,n,o){!(null==n||n instanceof DOMException&&"NetworkError"===n.name)||r.retryAttempts>=1||D.get(t)!==r?(D.get(t)===r&&D.delete(t),r.reject(n)):(r.retryAttempts++,setTimeout(()=>{r.resolved||D.get(t)!==r||(o?o():(r.loadingStarted=!1,X(e,t)))},200+Math.floor(401*Math.random())))}function X(e,t){let r=z(t);if(r.loadingStarted)return r.promise;if(e===n.Runtime)return r.loadingStarted=!0,B(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(B(t));else if(N(t,".js")){self.TURBOPACK_NEXT_CHUNK_URLS.push(t);try{importScripts(t)}catch(n){W(e,t,r,n)}}else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let n=decodeURI(t);if(B(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${n}"],link[rel=stylesheet][href^="${n}?"]`).length>0)r.resolve();else{let n=()=>{let o=document.createElement("link");return o.rel="stylesheet",o.crossOrigin=null,o.href=t,o.onerror=()=>{let i=document.createComment("");o.replaceWith(i),W(e,t,r,void 0,()=>i.replaceWith(n()))},o.onload=()=>{r.resolve()},o};document.head.appendChild(n())}else if(N(t,".js")){let o=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${n}"],script[src^="${n}?"]`);if(o.length>0)for(let n of Array.from(o))n.addEventListener("error",()=>{n.remove(),W(e,t,r)},{once:!0});else{let n=document.createElement("script");n.crossOrigin=null,n.src=t,n.onerror=()=>{n.remove(),W(e,t,r)},document.head.appendChild(n)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise}e={async registerChunk(e,t){let r;if(null!=e&&(r=function(e){if("string"==typeof e)return e;let t=decodeURIComponent(e.src.replace(/[?#].*$/,""));return t.startsWith(P)?t.slice(P.length):t}(e),z("string"==typeof e?q(e):e.src).resolve()),null!=t){for(let e of t.otherChunks)z(q("string"==typeof e?e:e.path));if(await Promise.all(t.otherChunks.map(e=>{var t;return t=r,E(n.Runtime,t,e)})),t.runtimeModuleIds.length>0)for(let e of t.runtimeModuleIds)!function(e,t){let r=L[t];if(r){if(r.error)throw r.error;return}H(t,n.Runtime,e)}(r,e)}},loadChunkCached:(e,t)=>X(e,t)};var J=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},J.forEach(F)})();
@@ -0,0 +1,6 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
2
+ <rect width="32" height="32" rx="8" fill="#0e1512"/>
3
+ <g transform="translate(5.5 5.5) scale(.328)">
4
+ <path d="M4 30H16L20 24L24 30L32 50L42 12L46 30H60" fill="none" stroke="#3ee0a1" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"/>
5
+ </g>
6
+ </svg>
package/.next/trace CHANGED
@@ -1 +1 @@
1
- [{"name":"generate-buildid","duration":223,"timestamp":384552503626,"id":4,"parentId":1,"tags":{},"startTime":1791647592010,"traceId":"0af8c6f989ab53d2"},{"name":"load-custom-routes","duration":435,"timestamp":384552503965,"id":5,"parentId":1,"tags":{},"startTime":1791647592010,"traceId":"0af8c6f989ab53d2"},{"name":"create-dist-dir","duration":192,"timestamp":384552504425,"id":6,"parentId":1,"tags":{},"startTime":1791647592011,"traceId":"0af8c6f989ab53d2"},{"name":"clean","duration":51743,"timestamp":384552505238,"id":7,"parentId":1,"tags":{},"startTime":1791647592012,"traceId":"0af8c6f989ab53d2"},{"name":"discover-routes","duration":6130,"timestamp":384552565687,"id":8,"parentId":1,"tags":{},"startTime":1791647592072,"traceId":"0af8c6f989ab53d2"},{"name":"create-root-mapping","duration":83,"timestamp":384552571853,"id":9,"parentId":1,"tags":{},"startTime":1791647592078,"traceId":"0af8c6f989ab53d2"},{"name":"generate-route-types","duration":15897,"timestamp":384552573208,"id":10,"parentId":1,"tags":{},"startTime":1791647592080,"traceId":"0af8c6f989ab53d2"},{"name":"public-dir-conflict-check","duration":75,"timestamp":384552589160,"id":11,"parentId":1,"tags":{},"startTime":1791647592096,"traceId":"0af8c6f989ab53d2"},{"name":"generate-routes-manifest","duration":2283,"timestamp":384552589323,"id":12,"parentId":1,"tags":{},"startTime":1791647592096,"traceId":"0af8c6f989ab53d2"},{"name":"run-turbopack","duration":2157724,"timestamp":384552599361,"id":14,"parentId":1,"tags":{},"startTime":1791647592106,"traceId":"0af8c6f989ab53d2"},{"name":"turbopack-build-events","duration":73,"timestamp":384552911610,"id":15,"parentId":1,"tags":{},"startTime":1791647592418,"traceId":"0af8c6f989ab53d2"},{"name":"turbopack-persistence","duration":164000,"timestamp":384554215598,"id":16,"parentId":15,"tags":{"reason":"stop","snapshot_duration_ms":3.761882,"persist_duration_ms":159.895503,"task_count":3618,"bytes_written":2974193,"bytes_deleted":0},"startTime":1791647593886,"traceId":"0af8c6f989ab53d2"},{"name":"run-typescript","duration":3143242,"timestamp":384554760395,"id":18,"parentId":1,"tags":{},"startTime":1791647594267,"traceId":"0af8c6f989ab53d2"},{"name":"generate-required-server-files","duration":889,"timestamp":384557904350,"id":20,"parentId":1,"tags":{},"startTime":1791647597411,"traceId":"0af8c6f989ab53d2"},{"name":"check-static-error-page","duration":11081,"timestamp":384557932587,"id":22,"parentId":21,"tags":{},"startTime":1791647597439,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1113636,"timestamp":384557945438,"id":42,"parentId":24,"tags":{},"startTime":1791647597452,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1121477,"timestamp":384557937673,"id":24,"parentId":21,"tags":{"page":"/_global-error"},"startTime":1791647597444,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1225879,"timestamp":384557945098,"id":41,"parentId":23,"tags":{},"startTime":1791647597452,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1237564,"timestamp":384557933458,"id":23,"parentId":21,"tags":{"page":"/_not-found"},"startTime":1791647597440,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1230458,"timestamp":384557949138,"id":53,"parentId":35,"tags":{},"startTime":1791647597456,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1240602,"timestamp":384557939043,"id":35,"parentId":21,"tags":{"page":"/"},"startTime":1791647597446,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1236627,"timestamp":384557949161,"id":54,"parentId":37,"tags":{},"startTime":1791647597456,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1242703,"timestamp":384557943131,"id":37,"parentId":21,"tags":{"page":"/performance"},"startTime":1791647597450,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1269240,"timestamp":384557949167,"id":55,"parentId":38,"tags":{},"startTime":1791647597456,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1275181,"timestamp":384557943278,"id":38,"parentId":21,"tags":{"page":"/settings"},"startTime":1791647597450,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1296981,"timestamp":384557949179,"id":56,"parentId":39,"tags":{},"startTime":1791647597456,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1302821,"timestamp":384557943390,"id":39,"parentId":21,"tags":{"page":"/setup"},"startTime":1791647597450,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1314320,"timestamp":384557946002,"id":48,"parentId":30,"tags":{},"startTime":1791647597453,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1321840,"timestamp":384557938527,"id":30,"parentId":21,"tags":{"page":"/api/setup/ai"},"startTime":1791647597445,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1320120,"timestamp":384557955578,"id":57,"parentId":40,"tags":{},"startTime":1791647597462,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1332257,"timestamp":384557943483,"id":40,"parentId":21,"tags":{"page":"/tools/[tool]"},"startTime":1791647597450,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1336243,"timestamp":384557945857,"id":47,"parentId":29,"tags":{},"startTime":1791647597453,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1343726,"timestamp":384557938429,"id":29,"parentId":21,"tags":{"page":"/api/settings"},"startTime":1791647597445,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1352531,"timestamp":384557946228,"id":51,"parentId":34,"tags":{},"startTime":1791647597453,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1359853,"timestamp":384557938959,"id":34,"parentId":21,"tags":{"page":"/icon.svg"},"startTime":1791647597446,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1354556,"timestamp":384557946092,"id":49,"parentId":31,"tags":{},"startTime":1791647597453,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1362060,"timestamp":384557938630,"id":31,"parentId":21,"tags":{"page":"/api/setup"},"startTime":1791647597445,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1355343,"timestamp":384557945733,"id":45,"parentId":27,"tags":{},"startTime":1791647597452,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1362892,"timestamp":384557938210,"id":27,"parentId":21,"tags":{"page":"/api/health"},"startTime":1791647597445,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1357531,"timestamp":384557946165,"id":50,"parentId":32,"tags":{},"startTime":1791647597453,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1364968,"timestamp":384557938752,"id":32,"parentId":21,"tags":{"page":"/api/timings"},"startTime":1791647597445,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1363573,"timestamp":384557949023,"id":52,"parentId":33,"tags":{},"startTime":1791647597456,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1373768,"timestamp":384557938854,"id":33,"parentId":21,"tags":{"page":"/connect"},"startTime":1791647597446,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1368820,"timestamp":384557945598,"id":43,"parentId":25,"tags":{},"startTime":1791647597452,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1376459,"timestamp":384557937980,"id":25,"parentId":21,"tags":{"page":"/api/analyze"},"startTime":1791647597445,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1395473,"timestamp":384557945674,"id":44,"parentId":26,"tags":{},"startTime":1791647597452,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1403068,"timestamp":384557938103,"id":26,"parentId":21,"tags":{"page":"/api/connect"},"startTime":1791647597445,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1402848,"timestamp":384557945789,"id":46,"parentId":28,"tags":{},"startTime":1791647597452,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1410339,"timestamp":384557938326,"id":28,"parentId":21,"tags":{"page":"/api/metrics"},"startTime":1791647597445,"traceId":"0af8c6f989ab53d2"},{"name":"is-page-static","duration":1397964,"timestamp":384557957088,"id":58,"parentId":36,"tags":{},"startTime":1791647597464,"traceId":"0af8c6f989ab53d2"},{"name":"check-page","duration":1415874,"timestamp":384557939197,"id":36,"parentId":21,"tags":{"page":"/performance/[slug]"},"startTime":1791647597446,"traceId":"0af8c6f989ab53d2"},{"name":"static-check","duration":1423037,"timestamp":384557932056,"id":21,"parentId":1,"tags":{},"startTime":1791647597439,"traceId":"0af8c6f989ab53d2"},{"name":"write-routes-manifest","duration":372,"timestamp":384559358068,"id":60,"parentId":1,"tags":{},"startTime":1791647598865,"traceId":"0af8c6f989ab53d2"},{"name":"load-dotenv","duration":44,"timestamp":384559366450,"id":63,"parentId":62,"tags":{},"startTime":1791647598873,"traceId":"0af8c6f989ab53d2"},{"name":"run-export-path-map","duration":456,"timestamp":384559367749,"id":64,"parentId":62,"tags":{},"startTime":1791647598874,"traceId":"0af8c6f989ab53d2"},{"name":"next-export","duration":444045,"timestamp":384559365592,"id":62,"parentId":1,"tags":{},"startTime":1791647598872,"traceId":"0af8c6f989ab53d2"},{"name":"move-exported-app-not-found-","duration":833,"timestamp":384559811618,"id":65,"parentId":61,"tags":{},"startTime":1791647599318,"traceId":"0af8c6f989ab53d2"},{"name":"move-exported-app-global-error-","duration":543,"timestamp":384559812544,"id":66,"parentId":61,"tags":{},"startTime":1791647599319,"traceId":"0af8c6f989ab53d2"},{"name":"static-generation","duration":453223,"timestamp":384559360137,"id":61,"parentId":1,"tags":{},"startTime":1791647598867,"traceId":"0af8c6f989ab53d2"},{"name":"write-routes-manifest","duration":262,"timestamp":384559813533,"id":67,"parentId":1,"tags":{},"startTime":1791647599320,"traceId":"0af8c6f989ab53d2"},{"name":"print-tree-view","duration":2245,"timestamp":384559855061,"id":68,"parentId":1,"tags":{},"startTime":1791647599362,"traceId":"0af8c6f989ab53d2"},{"name":"write-route-bundle-stats","duration":6174,"timestamp":384559857319,"id":69,"parentId":1,"tags":{},"startTime":1791647599364,"traceId":"0af8c6f989ab53d2"},{"name":"telemetry-flush","duration":452866,"timestamp":384559863509,"id":70,"parentId":1,"tags":{},"startTime":1791647599370,"traceId":"0af8c6f989ab53d2"},{"name":"next-build","duration":7853909,"timestamp":384552462490,"id":1,"tags":{"buildMode":"default","version":"16.3.8","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1791647591969,"traceId":"0af8c6f989ab53d2"}]
1
+ [{"name":"generate-buildid","duration":178,"timestamp":99121633,"id":4,"parentId":1,"tags":{},"startTime":1792259327984,"traceId":"33684f20cd0901f3"},{"name":"load-custom-routes","duration":386,"timestamp":99121925,"id":5,"parentId":1,"tags":{},"startTime":1792259327985,"traceId":"33684f20cd0901f3"},{"name":"create-dist-dir","duration":271,"timestamp":99122340,"id":6,"parentId":1,"tags":{},"startTime":1792259327985,"traceId":"33684f20cd0901f3"},{"name":"clean","duration":251,"timestamp":99122992,"id":7,"parentId":1,"tags":{},"startTime":1792259327986,"traceId":"33684f20cd0901f3"},{"name":"discover-routes","duration":4377,"timestamp":99152551,"id":8,"parentId":1,"tags":{},"startTime":1792259328015,"traceId":"33684f20cd0901f3"},{"name":"create-root-mapping","duration":75,"timestamp":99156960,"id":9,"parentId":1,"tags":{},"startTime":1792259328020,"traceId":"33684f20cd0901f3"},{"name":"generate-route-types","duration":15385,"timestamp":99158070,"id":10,"parentId":1,"tags":{},"startTime":1792259328021,"traceId":"33684f20cd0901f3"},{"name":"public-dir-conflict-check","duration":79,"timestamp":99173521,"id":11,"parentId":1,"tags":{},"startTime":1792259328036,"traceId":"33684f20cd0901f3"},{"name":"generate-routes-manifest","duration":1824,"timestamp":99173662,"id":12,"parentId":1,"tags":{},"startTime":1792259328036,"traceId":"33684f20cd0901f3"},{"name":"run-turbopack","duration":8807955,"timestamp":99178345,"id":14,"parentId":1,"tags":{},"startTime":1792259328041,"traceId":"33684f20cd0901f3"},{"name":"turbopack-build-events","duration":84,"timestamp":99346231,"id":15,"parentId":1,"tags":{},"startTime":1792259328209,"traceId":"33684f20cd0901f3"},{"name":"turbopack-persistence","duration":1881000,"timestamp":107472332,"id":16,"parentId":15,"tags":{"reason":"stop","snapshot_duration_ms":7.031559,"persist_duration_ms":1874.497603,"task_count":256,"bytes_written":125030235,"bytes_deleted":0},"startTime":1792259338217,"traceId":"33684f20cd0901f3"},{"name":"run-typescript","duration":5022257,"timestamp":107996165,"id":16,"parentId":1,"tags":{},"startTime":1792259336859,"traceId":"33684f20cd0901f3"},{"name":"generate-required-server-files","duration":580,"timestamp":113018920,"id":18,"parentId":1,"tags":{},"startTime":1792259341882,"traceId":"33684f20cd0901f3"},{"name":"check-static-error-page","duration":4933,"timestamp":113042387,"id":20,"parentId":19,"tags":{},"startTime":1792259341905,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":268708,"timestamp":113048462,"id":41,"parentId":22,"tags":{},"startTime":1792259341911,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":273327,"timestamp":113043921,"id":22,"parentId":19,"tags":{"page":"/_global-error"},"startTime":1792259341907,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":400825,"timestamp":113048194,"id":40,"parentId":21,"tags":{},"startTime":1792259341911,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":406027,"timestamp":113043065,"id":21,"parentId":19,"tags":{"page":"/_not-found"},"startTime":1792259341906,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":441512,"timestamp":113048575,"id":43,"parentId":24,"tags":{},"startTime":1792259341911,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":445938,"timestamp":113044211,"id":24,"parentId":19,"tags":{"page":"/api/connect"},"startTime":1792259341907,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":445122,"timestamp":113048637,"id":45,"parentId":26,"tags":{},"startTime":1792259341911,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":449470,"timestamp":113044321,"id":26,"parentId":19,"tags":{"page":"/api/lighthouse"},"startTime":1792259341907,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":452944,"timestamp":113048659,"id":46,"parentId":27,"tags":{},"startTime":1792259341911,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":457279,"timestamp":113044365,"id":27,"parentId":19,"tags":{"page":"/api/metrics"},"startTime":1792259341907,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":457090,"timestamp":113048689,"id":47,"parentId":28,"tags":{},"startTime":1792259341911,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":461391,"timestamp":113044422,"id":28,"parentId":19,"tags":{"page":"/api/settings"},"startTime":1792259341907,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":460840,"timestamp":113048726,"id":48,"parentId":29,"tags":{},"startTime":1792259341911,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":465133,"timestamp":113044470,"id":29,"parentId":19,"tags":{"page":"/api/setup/ai"},"startTime":1792259341907,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":466057,"timestamp":113048753,"id":49,"parentId":30,"tags":{},"startTime":1792259341911,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":469930,"timestamp":113044919,"id":30,"parentId":19,"tags":{"page":"/api/setup"},"startTime":1792259341908,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":467929,"timestamp":113048608,"id":44,"parentId":25,"tags":{},"startTime":1792259341911,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":472312,"timestamp":113044275,"id":25,"parentId":19,"tags":{"page":"/api/health"},"startTime":1792259341907,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":469144,"timestamp":113048786,"id":50,"parentId":31,"tags":{},"startTime":1792259341911,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":472951,"timestamp":113045019,"id":31,"parentId":19,"tags":{"page":"/api/timings"},"startTime":1792259341908,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":470635,"timestamp":113048526,"id":42,"parentId":23,"tags":{},"startTime":1792259341911,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":475069,"timestamp":113044122,"id":23,"parentId":19,"tags":{"page":"/api/analyze"},"startTime":1792259341907,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":488349,"timestamp":113048805,"id":51,"parentId":33,"tags":{},"startTime":1792259341911,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":492077,"timestamp":113045116,"id":33,"parentId":19,"tags":{"page":"/icon.svg"},"startTime":1792259341908,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":490319,"timestamp":113052748,"id":54,"parentId":36,"tags":{},"startTime":1792259341915,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":496150,"timestamp":113046959,"id":36,"parentId":19,"tags":{"page":"/performance"},"startTime":1792259341910,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":502960,"timestamp":113052753,"id":55,"parentId":37,"tags":{},"startTime":1792259341915,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":508678,"timestamp":113047064,"id":37,"parentId":19,"tags":{"page":"/settings"},"startTime":1792259341910,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":506393,"timestamp":113052765,"id":56,"parentId":38,"tags":{},"startTime":1792259341915,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":512052,"timestamp":113047128,"id":38,"parentId":19,"tags":{"page":"/setup"},"startTime":1792259341910,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":509133,"timestamp":113052730,"id":53,"parentId":34,"tags":{},"startTime":1792259341915,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":516724,"timestamp":113045157,"id":34,"parentId":19,"tags":{"page":"/"},"startTime":1792259341908,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":523882,"timestamp":113052707,"id":52,"parentId":32,"tags":{},"startTime":1792259341915,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":531557,"timestamp":113045070,"id":32,"parentId":19,"tags":{"page":"/connect"},"startTime":1792259341908,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":529566,"timestamp":113052780,"id":58,"parentId":39,"tags":{},"startTime":1792259341915,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":535196,"timestamp":113047180,"id":39,"parentId":19,"tags":{"page":"/tools/[tool]"},"startTime":1792259341910,"traceId":"33684f20cd0901f3"},{"name":"is-page-static","duration":545848,"timestamp":113052776,"id":57,"parentId":35,"tags":{},"startTime":1792259341915,"traceId":"33684f20cd0901f3"},{"name":"check-page","duration":553388,"timestamp":113045265,"id":35,"parentId":19,"tags":{"page":"/performance/[slug]"},"startTime":1792259341908,"traceId":"33684f20cd0901f3"},{"name":"static-check","duration":556879,"timestamp":113041810,"id":19,"parentId":1,"tags":{},"startTime":1792259341904,"traceId":"33684f20cd0901f3"},{"name":"write-routes-manifest","duration":263,"timestamp":113624907,"id":60,"parentId":1,"tags":{},"startTime":1792259342488,"traceId":"33684f20cd0901f3"},{"name":"load-dotenv","duration":22,"timestamp":113631746,"id":63,"parentId":62,"tags":{},"startTime":1792259342494,"traceId":"33684f20cd0901f3"},{"name":"run-export-path-map","duration":317,"timestamp":113632657,"id":64,"parentId":62,"tags":{},"startTime":1792259342495,"traceId":"33684f20cd0901f3"},{"name":"next-export","duration":431945,"timestamp":113631017,"id":62,"parentId":1,"tags":{},"startTime":1792259342494,"traceId":"33684f20cd0901f3"},{"name":"move-exported-app-not-found-","duration":1312,"timestamp":114064757,"id":65,"parentId":61,"tags":{},"startTime":1792259342927,"traceId":"33684f20cd0901f3"},{"name":"move-exported-app-global-error-","duration":291,"timestamp":114066133,"id":66,"parentId":61,"tags":{},"startTime":1792259342929,"traceId":"33684f20cd0901f3"},{"name":"static-generation","duration":439646,"timestamp":113627013,"id":61,"parentId":1,"tags":{},"startTime":1792259342490,"traceId":"33684f20cd0901f3"},{"name":"write-routes-manifest","duration":263,"timestamp":114066780,"id":67,"parentId":1,"tags":{},"startTime":1792259342929,"traceId":"33684f20cd0901f3"},{"name":"print-tree-view","duration":2400,"timestamp":114076897,"id":68,"parentId":1,"tags":{},"startTime":1792259342940,"traceId":"33684f20cd0901f3"},{"name":"write-route-bundle-stats","duration":6197,"timestamp":114079309,"id":69,"parentId":1,"tags":{},"startTime":1792259342942,"traceId":"33684f20cd0901f3"},{"name":"telemetry-flush","duration":483364,"timestamp":114085520,"id":70,"parentId":1,"tags":{},"startTime":1792259342948,"traceId":"33684f20cd0901f3"},{"name":"next-build","duration":15476775,"timestamp":99092132,"id":1,"tags":{"buildMode":"default","version":"16.3.8","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1792259327955,"traceId":"33684f20cd0901f3"}]
package/.next/trace-build CHANGED
@@ -1 +1 @@
1
- [{"name":"run-turbopack","duration":2157724,"timestamp":384552599361,"id":14,"parentId":1,"tags":{},"startTime":1791647592106,"traceId":"0af8c6f989ab53d2"},{"name":"turbopack-build-events","duration":73,"timestamp":384552911610,"id":15,"parentId":1,"tags":{},"startTime":1791647592418,"traceId":"0af8c6f989ab53d2"},{"name":"turbopack-persistence","duration":164000,"timestamp":384554215598,"id":16,"parentId":15,"tags":{"reason":"stop","snapshot_duration_ms":3.761882,"persist_duration_ms":159.895503,"task_count":3618,"bytes_written":2974193,"bytes_deleted":0},"startTime":1791647593886,"traceId":"0af8c6f989ab53d2"},{"name":"run-typescript","duration":3143242,"timestamp":384554760395,"id":18,"parentId":1,"tags":{},"startTime":1791647594267,"traceId":"0af8c6f989ab53d2"},{"name":"static-check","duration":1423037,"timestamp":384557932056,"id":21,"parentId":1,"tags":{},"startTime":1791647597439,"traceId":"0af8c6f989ab53d2"},{"name":"static-generation","duration":453223,"timestamp":384559360137,"id":61,"parentId":1,"tags":{},"startTime":1791647598867,"traceId":"0af8c6f989ab53d2"},{"name":"telemetry-flush","duration":452866,"timestamp":384559863509,"id":70,"parentId":1,"tags":{},"startTime":1791647599370,"traceId":"0af8c6f989ab53d2"},{"name":"next-build","duration":7853909,"timestamp":384552462490,"id":1,"tags":{"buildMode":"default","version":"16.3.8","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1791647591969,"traceId":"0af8c6f989ab53d2"}]
1
+ [{"name":"run-turbopack","duration":8807955,"timestamp":99178345,"id":14,"parentId":1,"tags":{},"startTime":1792259328041,"traceId":"33684f20cd0901f3"},{"name":"turbopack-build-events","duration":84,"timestamp":99346231,"id":15,"parentId":1,"tags":{},"startTime":1792259328209,"traceId":"33684f20cd0901f3"},{"name":"turbopack-persistence","duration":1881000,"timestamp":107472332,"id":16,"parentId":15,"tags":{"reason":"stop","snapshot_duration_ms":7.031559,"persist_duration_ms":1874.497603,"task_count":256,"bytes_written":125030235,"bytes_deleted":0},"startTime":1792259338217,"traceId":"33684f20cd0901f3"},{"name":"run-typescript","duration":5022257,"timestamp":107996165,"id":16,"parentId":1,"tags":{},"startTime":1792259336859,"traceId":"33684f20cd0901f3"},{"name":"static-check","duration":556879,"timestamp":113041810,"id":19,"parentId":1,"tags":{},"startTime":1792259341904,"traceId":"33684f20cd0901f3"},{"name":"static-generation","duration":439646,"timestamp":113627013,"id":61,"parentId":1,"tags":{},"startTime":1792259342490,"traceId":"33684f20cd0901f3"},{"name":"telemetry-flush","duration":483364,"timestamp":114085520,"id":70,"parentId":1,"tags":{},"startTime":1792259342948,"traceId":"33684f20cd0901f3"},{"name":"next-build","duration":15476775,"timestamp":99092132,"id":1,"tags":{"buildMode":"default","version":"16.3.8","bundler":"turbopack","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1792259327955,"traceId":"33684f20cd0901f3"}]
package/README.md CHANGED
@@ -30,7 +30,7 @@ npx @karan171996/metricflow
30
30
  ```
31
31
 
32
32
  The dashboard opens on `http://localhost:3000`. Paste your keys on the Setup page and you are done.
33
- There is no MetricFlow server and no account to create: it runs on your machine, with your keys.
33
+ The free package has no MetricFlow server and no account to create: it runs on your machine, with your keys.
34
34
 
35
35
  ## Why MetricFlow
36
36
 
@@ -79,6 +79,11 @@ Options, privacy defaults and Content Security Policy hosts are in [Sending data
79
79
  | [Configuration](https://github.com/karan171996/MetricFlow/blob/main/docs/configuration.md) | Every environment variable MetricFlow reads |
80
80
  | [Developing MetricFlow](https://github.com/karan171996/MetricFlow/blob/main/docs/development.md) | Run from source, run the tests, project structure |
81
81
 
82
+ ## Free vs hosted
83
+
84
+ - **Free (this package, MIT):** runs on your machine with no account. Lighthouse, New Relic and Sentry for the site you run on localhost, with the last 24 hours of data.
85
+ - **Hosted (coming):** adds your staging and production sites, history beyond 24 hours, alerts, and Lighthouse runs hosted for you. The hosted service is closed source and not part of this repository.
86
+
82
87
  ## Status
83
88
 
84
89
  Early and still changing. Bug reports and feedback are welcome in [Issues](https://github.com/karan171996/MetricFlow/issues).
package/bin/cli.mjs CHANGED
@@ -75,6 +75,15 @@ server.on("exit", (code) => {
75
75
  });
76
76
  for (const s of ["SIGINT", "SIGTERM"]) process.on(s, () => { stopping = true; server.kill(s); });
77
77
 
78
+ // Browser key and app ID: full on a terminal or with --show-keys. Captured stdout (logs, CI) and --json
79
+ // get a prefix only; /connect always shows the full values.
80
+ const showKeys = process.argv.includes("--show-keys") || (!wantsJson && process.stdout.isTTY === true);
81
+ const mask = (v) => {
82
+ if (v == null || showKeys) return v;
83
+ const n = String(v).length; // keys start "NRJS-", so keep 7; short values keep 3, tiny ones nothing
84
+ return `${String(v).slice(0, n > 8 ? 7 : n > 3 ? 3 : 0)}…`;
85
+ };
86
+
78
87
  /**
79
88
  * Prints the chain from the user's site to the dashboard, so "no data" says which
80
89
  * link is broken. Reuses /api/connect rather than re-implementing the checks.
@@ -88,15 +97,17 @@ async function printConnection() {
88
97
  }
89
98
  if (!s?.configured) return out.warn("No keys yet. Open /setup to add them.", { configured: false });
90
99
 
100
+ const { applicationId, browserKey } = s.setup ?? {};
91
101
  const rows = [
92
102
  ["Reading New Relic", s.accountId ? `account ${s.accountId}` : "no account id"],
93
- ["Browser app", s.setup?.appCount > 0 ? `${s.setup.appName} (application ID ${s.setup.applicationId})` : "none - create one: New Relic > Add data > Browser monitoring"],
94
- ["Browser key", s.setup?.browserKey ?? "could not read (copy the key VALUE, not the ID beside it)"],
103
+ ["Browser app", s.setup?.appCount > 0 ? `${s.setup.appName} (application ID ${mask(applicationId)})` : "none - create one: New Relic > Add data > Browser monitoring"],
104
+ ["Browser key", mask(browserKey) ?? "could not read (copy the key VALUE, not the ID beside it)"],
105
+ ...(!showKeys && (applicationId != null || browserKey != null) ? [["", "full values: open /connect"]] : []),
95
106
  ["Site sending data", s.browser?.recent > 0 ? "yes, page views arriving" : "no page views yet"],
96
107
  ["Custom events", s.custom?.recent > 0 ? "yes" : "none yet"],
97
108
  ["Sentry", s.sentry?.error ? s.sentry.error : s.sentry?.recent > 0 ? "errors arriving" : "no errors in the last 5 min"],
98
109
  ];
99
- out.kv(rows, { event: "connection", ...s });
110
+ out.kv(rows, { event: "connection", ...s, ...(s.setup && { setup: { ...s.setup, applicationId: mask(applicationId), browserKey: mask(browserKey) } }) });
100
111
  if (!(s.browser?.recent > 0)) {
101
112
  if (!(s.setup?.appCount > 0)) out.warn("New Relic is not receiving data: no Browser app exists yet, so your site has no application ID to send to.", { reason: "no_browser_app" });
102
113
  else out.warn("New Relic is not receiving data. Load your site, then check for blocked requests to nr-data.net - ad and privacy blockers drop them silently.", { reason: "no_page_views" });
package/bin/output.mjs CHANGED
@@ -75,6 +75,8 @@ ${c.bold("Options")}
75
75
  --json Machine-readable output: one JSON object per line
76
76
  --no-color Disable colors (also honors NO_COLOR and non-TTY)
77
77
  --no-open Start the server without opening a browser
78
+ --show-keys Print the browser key and app ID in full, even when output
79
+ is piped or --json (default: full only on a terminal)
78
80
 
79
81
  ${c.bold("Environment")}
80
82
  PORT Port to listen on (default 3000)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@karan171996/metricflow",
3
- "version": "0.13.0",
3
+ "version": "0.15.1",
4
4
  "description": "Local performance dashboard: New Relic page metrics and Sentry errors per page, with AI suggestions. Run with one npx command.",
5
5
  "keywords": [
6
6
  "performance",
@@ -40,6 +40,7 @@
40
40
  "ai-insights"
41
41
  ],
42
42
  "license": "MIT",
43
+ "packageManager": "pnpm@12.8.1",
43
44
  "repository": {
44
45
  "type": "git",
45
46
  "url": "git+https://github.com/karan171996/MetricFlow.git"
@@ -48,6 +49,22 @@
48
49
  "bugs": {
49
50
  "url": "https://github.com/karan171996/MetricFlow/issues"
50
51
  },
52
+ "scripts": {
53
+ "dev": "next dev -H 127.0.0.1",
54
+ "build": "next build && pnpm run build:browser",
55
+ "start": "next start -H 127.0.0.1",
56
+ "lint": "eslint",
57
+ "send-test-data": "node scripts/send-test-data.mjs",
58
+ "cy:open": "cypress open",
59
+ "cy:run": "cypress run",
60
+ "prepublishOnly": "pnpm run build",
61
+ "test:cli": "node --experimental-test-module-mocks --import ./test/register.mjs --test test/*.test.mjs",
62
+ "test:basic": "node scripts/test-env.mjs basic",
63
+ "test:real": "node scripts/test-env.mjs real",
64
+ "test": "pnpm run test:basic",
65
+ "release:bump": "node scripts/bump-version.mjs",
66
+ "build:browser": "tsc -p tsconfig.browser.json"
67
+ },
51
68
  "dependencies": {
52
69
  "@newrelic/browser-agent": "1.323.0",
53
70
  "@sentry/browser": "10.76.1",
@@ -63,6 +80,7 @@
63
80
  "@types/node": "^20.19.43",
64
81
  "@types/react": "^19.3.0",
65
82
  "@types/react-dom": "^19.3.0",
83
+ "@vercel/analytics": "2.0.1",
66
84
  "class-variance-authority": "^0.7.1",
67
85
  "cn": "^0.3.3",
68
86
  "cypress": "^16.1.1",
@@ -105,19 +123,8 @@
105
123
  "publishConfig": {
106
124
  "access": "public"
107
125
  },
108
- "scripts": {
109
- "dev": "next dev -H 127.0.0.1",
110
- "build": "next build && pnpm run build:browser",
111
- "start": "next start -H 127.0.0.1",
112
- "lint": "eslint",
113
- "send-test-data": "node scripts/send-test-data.mjs",
114
- "cy:open": "cypress open",
115
- "cy:run": "cypress run",
116
- "test:cli": "node --experimental-test-module-mocks --import ./test/register.mjs --test test/*.test.mjs",
117
- "test:basic": "node scripts/test-env.mjs basic",
118
- "test:real": "node scripts/test-env.mjs real",
119
- "test": "pnpm run test:basic",
120
- "release:bump": "node scripts/bump-version.mjs",
121
- "build:browser": "tsc -p tsconfig.browser.json"
126
+ "optionalDependencies": {
127
+ "chrome-launcher": "1.2.2",
128
+ "lighthouse": "13.5.0"
122
129
  }
123
- }
130
+ }