@karan171996/metricflow 0.1.2 → 0.1.5
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.
- package/.next/BUILD_ID +1 -1
- package/.next/app-path-routes-manifest.json +5 -2
- package/.next/build-manifest.json +3 -3
- package/.next/fallback-build-manifest.json +3 -3
- package/.next/next-server.js.nft.json +1 -1
- package/.next/prerender-manifest.json +11 -11
- package/.next/routes-manifest.json +23 -3
- package/.next/server/app/_global-error/page.js +3 -3
- package/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/.next/server/app/_global-error.html +1 -1
- package/.next/server/app/_global-error.rsc +2 -3
- package/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +9 -10
- package/.next/server/app/_global-error.segments/_full.segment.rsc +2 -3
- package/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/.next/server/app/_not-found/page.js +3 -3
- package/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/.next/server/app/_not-found.html +2 -2
- package/.next/server/app/_not-found.rsc +10 -10
- package/.next/server/app/_not-found.segments/_full.segment.rsc +10 -10
- package/.next/server/app/_not-found.segments/_index.segment.rsc +8 -8
- package/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
- package/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/api/analyze/route.js +3 -2
- package/.next/server/app/api/analyze/route.js.nft.json +1 -1
- package/.next/server/app/api/connect/route.js +2 -2
- package/.next/server/app/api/connect/route.js.nft.json +1 -1
- package/.next/server/app/api/metrics/route.js +2 -2
- package/.next/server/app/api/metrics/route.js.nft.json +1 -1
- package/.next/server/app/api/settings/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/settings/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/settings/route.js +6 -0
- package/.next/server/app/api/settings/route.js.nft.json +1 -0
- package/.next/server/app/api/settings/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/setup/ai/route/app-paths-manifest.json +3 -0
- package/.next/server/app/api/setup/ai/route/build-manifest.json +12 -0
- package/.next/server/app/api/setup/ai/route/server-reference-manifest.json +4 -0
- package/.next/server/app/api/setup/ai/route.js +7 -0
- package/.next/server/app/api/setup/ai/route.js.nft.json +1 -0
- package/.next/server/app/api/setup/ai/route_client-reference-manifest.js +3 -0
- package/.next/server/app/api/setup/route.js +2 -2
- package/.next/server/app/api/setup/route.js.nft.json +1 -1
- package/.next/server/app/connect/page.js +3 -3
- package/.next/server/app/connect/page.js.nft.json +1 -1
- package/.next/server/app/connect/page_client-reference-manifest.js +1 -1
- package/.next/server/app/connect.html +2 -2
- package/.next/server/app/connect.rsc +12 -12
- package/.next/server/app/connect.segments/_full.segment.rsc +12 -12
- package/.next/server/app/connect.segments/_index.segment.rsc +8 -8
- package/.next/server/app/connect.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/connect.segments/connect/__PAGE__.segment.rsc +6 -6
- package/.next/server/app/icon.svg/route/app-paths-manifest.json +3 -0
- package/.next/server/app/icon.svg/route/build-manifest.json +12 -0
- package/.next/server/app/icon.svg/route.js +7 -0
- package/.next/server/app/{favicon.ico → icon.svg}/route.js.nft.json +1 -1
- package/.next/server/app/icon.svg.body +4 -0
- package/.next/server/app/icon.svg.meta +1 -0
- package/.next/server/app/index.html +2 -2
- package/.next/server/app/index.rsc +12 -12
- package/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/.next/server/app/index.segments/_full.segment.rsc +12 -12
- package/.next/server/app/index.segments/_index.segment.rsc +8 -8
- package/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/page.js +3 -3
- package/.next/server/app/page.js.nft.json +1 -1
- package/.next/server/app/page_client-reference-manifest.js +1 -1
- package/.next/server/app/performance/[slug]/page.js +5 -4
- package/.next/server/app/performance/[slug]/page.js.nft.json +1 -1
- package/.next/server/app/performance/[slug]/page_client-reference-manifest.js +1 -1
- package/.next/server/app/performance/page.js +3 -3
- package/.next/server/app/performance/page.js.nft.json +1 -1
- package/.next/server/app/performance/page_client-reference-manifest.js +1 -1
- package/.next/server/app/performance.html +2 -2
- package/.next/server/app/performance.rsc +13 -13
- package/.next/server/app/performance.segments/_full.segment.rsc +13 -13
- package/.next/server/app/performance.segments/_index.segment.rsc +8 -8
- package/.next/server/app/performance.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/performance.segments/performance/__PAGE__.segment.rsc +27 -26
- package/.next/server/app/settings/page.js +4 -4
- package/.next/server/app/settings/page.js.nft.json +1 -1
- package/.next/server/app/settings/page_client-reference-manifest.js +1 -1
- package/.next/server/app/settings.html +2 -2
- package/.next/server/app/settings.rsc +24 -24
- package/.next/server/app/settings.segments/_full.segment.rsc +24 -24
- package/.next/server/app/settings.segments/_index.segment.rsc +8 -8
- package/.next/server/app/settings.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/settings.segments/settings/__PAGE__.segment.rsc +20 -20
- package/.next/server/app/setup/page.js +3 -3
- package/.next/server/app/setup/page.js.nft.json +1 -1
- package/.next/server/app/setup/page_client-reference-manifest.js +1 -1
- package/.next/server/app/setup.html +2 -2
- package/.next/server/app/setup.rsc +31 -30
- package/.next/server/app/setup.segments/_full.segment.rsc +31 -30
- package/.next/server/app/setup.segments/_index.segment.rsc +8 -8
- package/.next/server/app/setup.segments/_tree.segment.rsc +2 -2
- package/.next/server/app/setup.segments/setup/__PAGE__.segment.rsc +25 -24
- package/.next/server/app/tools/[tool]/page/app-paths-manifest.json +3 -0
- package/.next/server/app/tools/[tool]/page/build-manifest.json +19 -0
- package/.next/server/app/tools/[tool]/page/next-font-manifest.json +6 -0
- package/.next/server/app/tools/[tool]/page/react-loadable-manifest.json +1 -0
- package/.next/server/app/tools/[tool]/page/server-reference-manifest.json +4 -0
- package/.next/server/app/tools/[tool]/page.js +17 -0
- package/.next/server/app/tools/[tool]/page.js.nft.json +1 -0
- package/.next/server/app/tools/[tool]/page_client-reference-manifest.js +3 -0
- package/.next/server/app-paths-manifest.json +5 -2
- package/.next/server/chunks/[root-of-the-server]__027a1hx._.js +3 -0
- package/.next/server/chunks/{[root-of-the-server]__0chxb6o._.js → [root-of-the-server]__0eo1oa6._.js} +2 -2
- package/.next/server/chunks/{[root-of-the-server]__1l249st._.js → [root-of-the-server]__0vkb6_m._.js} +2 -2
- package/.next/server/chunks/[root-of-the-server]__1d1y03f._.js +3 -0
- package/.next/server/chunks/[root-of-the-server]__1lxxc0h._.js +3 -0
- package/.next/server/chunks/{node_modules_0jatszq._.js → _0g9k22b._.js} +4 -4
- package/.next/server/chunks/_0zwkfj-._.js +8 -0
- package/.next/server/chunks/_10b5gsp._.js +22 -0
- package/.next/server/chunks/_1f-783b._.js +158 -0
- package/.next/server/chunks/_1pe45_3._.js +7 -7
- package/.next/server/chunks/_next-internal_server_app_api_settings_route_actions_1bpm9ac.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_api_setup_ai_route_actions_0-ay8t8.js +3 -0
- package/.next/server/chunks/_next-internal_server_app_icon_svg_route_actions_1r2h_ub.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__06gb9_u._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0d9igav._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__0fufdy-._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__15_sjnx._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__18-cm6x._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1fxaeqo._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1io3bae._.js +33 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1pm7uf6._.js +3 -0
- package/.next/server/chunks/ssr/[root-of-the-server]__1q99mso._.js +3 -0
- package/.next/server/chunks/ssr/{_1r2qog2._.js → _0-bp5v7._.js} +3 -3
- package/.next/server/chunks/ssr/{_042xeoh._.js → _06r8zrg._.js} +2 -2
- package/.next/server/chunks/ssr/_1-6djlo._.js +3 -0
- package/.next/server/chunks/ssr/{_1n9m819._.js → _1a5owey._.js} +2 -2
- package/.next/server/chunks/ssr/_1b_fov9._.js +3 -0
- package/.next/server/chunks/ssr/_1d1ipgp._.js +1 -1
- package/.next/server/chunks/ssr/_1d74ud1._.js +3 -0
- package/.next/server/chunks/ssr/{_0dbmzjx._.js → _1ovns3l._.js} +3 -151
- package/.next/server/chunks/ssr/_1y-b2zm._.js +151 -0
- package/.next/server/chunks/ssr/_1zb40ot._.js +3 -0
- package/.next/server/chunks/ssr/_20txlee._.js +1 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_tools_[tool]_page_actions_0-u-_p-.js +3 -0
- package/.next/server/chunks/ssr/app_layout_tsx_2144vk_._.js +1 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_0drixxt._.js +151 -0
- package/.next/server/middleware-build-manifest.js +3 -3
- package/.next/server/pages/404.html +2 -2
- package/.next/server/pages/500.html +1 -1
- package/.next/static/chunks/0ubjg1ka_080j.js +1 -0
- package/.next/static/chunks/{14pp7x-su_dnv.js → 19jmme1xtmib0.js} +2 -2
- package/.next/static/chunks/1jtdb3kujnm2_.css +1 -0
- package/.next/static/chunks/{0wyq7u3z0lfca.js → 1kpyel_do_nn_.js} +1 -1
- package/.next/static/chunks/1otvbjuxr6thq.js +1 -0
- package/.next/static/chunks/1wurvq5krow1k.js +1 -0
- package/.next/static/chunks/2bd8yoc_iosfu.js +1 -0
- package/.next/static/chunks/{3lqd2emjcxbd-.js → 2uf-bm2nz17t-.js} +1 -1
- package/.next/static/chunks/32d1qdgpjfhb0.js +4 -0
- package/.next/static/chunks/{2xy80eg_ueu_u.js → 41tx3tz7-8892.js} +1 -1
- package/.next/static/media/icon.23mz8iwcatff2.svg +4 -0
- package/.next/trace +1 -1
- package/.next/trace-build +1 -1
- package/LICENSE +21 -0
- package/bin/cli.mjs +7 -2
- package/package.json +4 -2
- package/.next/build/chunks/[root-of-the-server]__05i36w1._.js.map +0 -11
- package/.next/build/chunks/[root-of-the-server]__1kki86f._.js.map +0 -8
- package/.next/build/chunks/[turbopack-node]_transforms_postcss_ts_1gfkiq9._.js.map +0 -5
- package/.next/build/chunks/[turbopack]_runtime.js.map +0 -11
- package/.next/build/chunks/node_modules_20v-8wl._.js.map +0 -47
- package/.next/build/chunks/pool_entry-[turbopack-node]_transforms_postcss_ts_0tp-k2v._.js.map +0 -5
- package/.next/server/app/_global-error/page.js.map +0 -5
- package/.next/server/app/_not-found/page.js.map +0 -5
- package/.next/server/app/api/analyze/route.js.map +0 -5
- package/.next/server/app/api/connect/route.js.map +0 -5
- package/.next/server/app/api/health/route.js.map +0 -5
- package/.next/server/app/api/metrics/route.js.map +0 -5
- package/.next/server/app/api/setup/route.js.map +0 -5
- package/.next/server/app/api/timings/route.js.map +0 -5
- package/.next/server/app/connect/page.js.map +0 -5
- package/.next/server/app/favicon.ico/route/app-paths-manifest.json +0 -3
- package/.next/server/app/favicon.ico/route.js +0 -7
- package/.next/server/app/favicon.ico/route.js.map +0 -5
- package/.next/server/app/favicon.ico.body +0 -0
- package/.next/server/app/favicon.ico.meta +0 -1
- package/.next/server/app/page.js.map +0 -5
- package/.next/server/app/performance/[slug]/page.js.map +0 -5
- package/.next/server/app/performance/page.js.map +0 -5
- package/.next/server/app/settings/page.js.map +0 -5
- package/.next/server/app/setup/page.js.map +0 -5
- package/.next/server/chunks/[externals]__1o8qm3w._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__0chxb6o._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__14tfjrn._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1fj5wte._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1i_tsds._.js +0 -22
- package/.next/server/chunks/[root-of-the-server]__1i_tsds._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1l249st._.js.map +0 -1
- package/.next/server/chunks/[root-of-the-server]__1uv-wzy._.js.map +0 -1
- package/.next/server/chunks/[turbopack]_runtime.js.map +0 -10
- package/.next/server/chunks/_1494cut._.js.map +0 -1
- package/.next/server/chunks/_1gvvd7n._.js +0 -158
- package/.next/server/chunks/_1gvvd7n._.js.map +0 -1
- package/.next/server/chunks/_1pe45_3._.js.map +0 -1
- package/.next/server/chunks/_1qtlv__._.js.map +0 -1
- package/.next/server/chunks/_next-internal_server_app_api_analyze_route_actions_0lx-23h.js.map +0 -1
- package/.next/server/chunks/_next-internal_server_app_api_connect_route_actions_1r5w03m.js.map +0 -1
- package/.next/server/chunks/_next-internal_server_app_api_health_route_actions_1ryftkb.js.map +0 -1
- package/.next/server/chunks/_next-internal_server_app_api_metrics_route_actions_0qn5q3s.js.map +0 -1
- package/.next/server/chunks/_next-internal_server_app_api_setup_route_actions_0txsuev.js.map +0 -1
- package/.next/server/chunks/_next-internal_server_app_api_timings_route_actions_1tsq7j6.js.map +0 -1
- package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjls.js +0 -3
- package/.next/server/chunks/_next-internal_server_app_favicon_ico_route_actions_0g2jjls.js.map +0 -1
- package/.next/server/chunks/node_modules_0jatszq._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__036j_vr._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__036j_vr._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0ev464o._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0ev464o._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0f5axvr._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0f5axvr._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0hg5gib._.js +0 -33
- package/.next/server/chunks/ssr/[root-of-the-server]__0hg5gib._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0tmkhxy._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0tmkhxy._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__0ydfg18._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__0ydfg18._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__18hr860._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__18w2nrx._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__18w2nrx._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1c8dejo._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1mwg_vi._.js +0 -3
- package/.next/server/chunks/ssr/[root-of-the-server]__1mwg_vi._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1p_6ezv._.js.map +0 -1
- package/.next/server/chunks/ssr/[root-of-the-server]__1vxra_4._.js.map +0 -1
- package/.next/server/chunks/ssr/[turbopack]_runtime.js.map +0 -10
- package/.next/server/chunks/ssr/_042xeoh._.js.map +0 -1
- package/.next/server/chunks/ssr/_0c7qo1d._.js +0 -3
- package/.next/server/chunks/ssr/_0c7qo1d._.js.map +0 -1
- package/.next/server/chunks/ssr/_0dbmzjx._.js.map +0 -1
- package/.next/server/chunks/ssr/_178o6nh._.js +0 -3
- package/.next/server/chunks/ssr/_178o6nh._.js.map +0 -1
- package/.next/server/chunks/ssr/_1bbiu24._.js +0 -3
- package/.next/server/chunks/ssr/_1bbiu24._.js.map +0 -1
- package/.next/server/chunks/ssr/_1d1ipgp._.js.map +0 -1
- package/.next/server/chunks/ssr/_1n9m819._.js.map +0 -1
- package/.next/server/chunks/ssr/_1p5i72g._.js +0 -151
- package/.next/server/chunks/ssr/_1p5i72g._.js.map +0 -1
- package/.next/server/chunks/ssr/_1r2qog2._.js.map +0 -1
- package/.next/server/chunks/ssr/_1rkc3oc._.js.map +0 -1
- package/.next/server/chunks/ssr/_20txlee._.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app__global-error_page_actions_0zi5s8-.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app__not-found_page_actions_0pt47yr.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_connect_page_actions_1g-s_3i.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_page_actions_0hhsz1j.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_performance_[slug]_page_actions_1pzv3w1.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_performance_page_actions_0vi13cc.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_settings_page_actions_11x4dq5.js.map +0 -1
- package/.next/server/chunks/ssr/_next-internal_server_app_setup_page_actions_0u1sm0s.js.map +0 -1
- package/.next/server/chunks/ssr/app_layout_tsx_2144vk_._.js.map +0 -1
- package/.next/server/chunks/ssr/app_loading_tsx_0a1flg9._.js.map +0 -1
- package/.next/server/chunks/ssr/app_performance_[slug]_loading_tsx_0d5z78a._.js.map +0 -1
- package/.next/server/chunks/ssr/app_performance_loading_tsx_1bq2nq9._.js.map +0 -1
- package/.next/server/chunks/ssr/app_settings_loading_tsx_0nv_78v._.js.map +0 -1
- package/.next/server/chunks/ssr/components_0j32dj5._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_1wax83z._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_cn_dist_index_166wuka.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_0nkkbfv._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_1v8aef8._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_0wpq8j3._.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_forbidden_0symwr9.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_global-error_0q-w892.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_builtin_unauthorized_0l_sp0x.js.map +0 -1
- package/.next/server/chunks/ssr/node_modules_next_dist_client_components_server-async-storage_0t1dato.js.map +0 -1
- package/.next/static/chunks/13ihwqjtq_hlo.js +0 -1
- package/.next/static/chunks/1clwpy-vw07cb.js +0 -1
- package/.next/static/chunks/2-llbg7gt2gi5.js +0 -4
- package/.next/static/chunks/28w-hz8hg8t4v.css +0 -1
- package/.next/static/chunks/3rfi1wruz0m51.js +0 -1
- package/.next/static/media/favicon.2vob68tjqpejf.ico +0 -0
- /package/.next/server/app/{favicon.ico → api/settings}/route/build-manifest.json +0 -0
- /package/.next/static/{edA9zyNvRjRViNxMJ7dlC → kitK02ca_n40lM28SxiCO}/_buildManifest.js +0 -0
- /package/.next/static/{edA9zyNvRjRViNxMJ7dlC → kitK02ca_n40lM28SxiCO}/_clientMiddlewareManifest.js +0 -0
- /package/.next/static/{edA9zyNvRjRViNxMJ7dlC → kitK02ca_n40lM28SxiCO}/_ssgManifest.js +0 -0
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[46334,a=>{"use strict";var b=a.i(87924),c=a.i(72131),d=a.i(38246),e=a.i(3130),f=a.i(40695),g=a.i(5522);let h=[{name:"NEWRELIC_API_KEY",label:"New Relic User API key",secret:!0,help:'READS your data (starts NRAK-). Create it under API keys > key type "User".'},{name:"NEXT_PUBLIC_NEWRELIC_ACCOUNT_ID",label:"New Relic account ID",secret:!1,help:"A plain number, shown next to your keys in New Relic."},{name:"SENTRY_API_KEY",label:"Sentry auth token",secret:!0,help:"Lets the dashboard read issues (scopes: project:read, event:read)."},{name:"SENTRY_ORG_SLUG",label:"Sentry organization slug",secret:!1,help:"The name in your Sentry URL: sentry.io/organizations/<slug>/."},{name:"SENTRY_PROJECT_ID",label:"Sentry project slug",secret:!1,help:"The project's slug from Project settings."}];a.s(["SetupForm",0,function(){let[a,i]=(0,c.useState)({}),[j,k]=(0,c.useState)({}),[l,m]=(0,c.useState)({}),[n,o]=(0,c.useState)(null),[p,q]=(0,c.useState)(!1),[r,s]=(0,c.useState)(!1),t=(0,c.useRef)(null);async function u(b){b.preventDefault(),q(!0),o(null);try{let b=await fetch("/api/setup",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(a)}),c=await b.json(),d=c.results??{};m(d);let e=h.find(a=>d[a.name]&&!d[a.name].ok);e&&setTimeout(()=>t.current?.querySelector(`#${e.name}`)?.focus(),0),c.saved?(s(!0),i({}),k(Object.fromEntries(h.map(a=>[a.name,!0]))),o({ok:!0,text:"Saved. Your keys are valid and stored in .env.local. No restart needed."})):o({ok:!1,text:c.error??"Nothing was saved. Fix the fields marked below."})}catch{o({ok:!1,text:"Could not reach the dashboard server."})}finally{q(!1)}}return(0,c.useEffect)(()=>{fetch("/api/setup").then(a=>a.json()).then(a=>{a.keys?k(a.keys):a.error&&o({ok:!1,text:a.error})}).catch(()=>{})},[]),(0,b.jsxs)(e.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl",children:[(0,b.jsxs)(e.CardHeader,{children:[(0,b.jsx)(e.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight",children:"Connect New Relic and Sentry"}),(0,b.jsx)(e.CardDescription,{className:"text-sm text-gray-400",children:"Keys are checked once, saved to .env.local in this folder, and never shown again. The key that sends events (Ingest - License) is separate and is added later on the Connect page."})]}),(0,b.jsx)(e.CardContent,{children:(0,b.jsxs)("form",{ref:t,onSubmit:u,className:"flex flex-col gap-5",children:[h.map(c=>{let d=l[c.name];return(0,b.jsxs)("div",{className:"flex flex-col gap-1.5",children:[(0,b.jsxs)("label",{htmlFor:c.name,className:"text-sm font-medium text-gray-300",children:[c.label," ",j[c.name]&&(0,b.jsx)("span",{className:"ml-2 text-xs text-[#3ee0a1]",children:"✓ Set"})]}),(0,b.jsx)(g.Input,{id:c.name,name:c.name,type:c.secret?"password":"text",autoComplete:"off",spellCheck:!1,placeholder:j[c.name]?"•••••••• (leave blank to keep, type to replace)":"",value:a[c.name]??"",onChange:b=>i({...a,[c.name]:b.target.value}),"aria-invalid":!!d&&!d.ok||void 0,"aria-describedby":`${c.name}-help ${c.name}-result`,className:"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs"}),(0,b.jsx)("p",{id:`${c.name}-help`,className:"text-xs text-gray-400",children:c.help}),(0,b.jsxs)("div",{id:`${c.name}-result`,"aria-live":"polite",children:[d&&!d.ok&&(0,b.jsxs)("p",{className:"text-xs text-[#f87171]",children:["✗ ",d.error]}),d?.ok&&(0,b.jsx)("p",{className:"text-xs text-[#3ee0a1]",children:"✓ Checked"})]})]},c.name)}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)(f.Button,{type:"submit",disabled:p,children:p?"Checking…":"Check and save"}),(0,b.jsx)("span",{"aria-live":"polite",className:`text-sm ${n?.ok?"text-[#3ee0a1]":"text-[#f87171]"}`,children:n?.text}),r&&(0,b.jsx)(d.default,{href:"/connect",className:(0,f.buttonVariants)({variant:"outline"}),children:"Next: connect your app"})]})]})})]})}])},3130,a=>{"use strict";var b=a.i(87924),c=a.i(13983);a.s(["Card",0,function({className:a,size:d="default",...e}){return(0,b.jsx)("div",{"data-slot":"card","data-size":d,className:(0,c.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",a),...e})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-(--card-spacing)",a),...d})},"CardDescription",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-sm text-muted-foreground",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.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)",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",a),...d})}])},69789,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_178o6nh._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/Setup/SetupForm.tsx","../../../../components/ui/card.tsx","../../../../node_modules/next/src/client/components/server-async-storage.ts"],"sourcesContent":["\"use client\";\n\nimport { useEffect, useRef, useState } from \"react\";\nimport Link from \"next/link\";\nimport { Card, CardContent, CardDescription, CardHeader, CardTitle } from \"@/components/ui/card\";\nimport { Button, buttonVariants } from \"@/components/ui/button\";\nimport { Input } from \"@/components/ui/input\";\n\nconst FIELDS = [\n { name: \"NEWRELIC_API_KEY\", label: \"New Relic User API key\", secret: true, help: \"READS your data (starts NRAK-). Create it under API keys > key type \\\"User\\\".\" },\n { name: \"NEXT_PUBLIC_NEWRELIC_ACCOUNT_ID\", label: \"New Relic account ID\", secret: false, help: \"A plain number, shown next to your keys in New Relic.\" },\n { name: \"SENTRY_API_KEY\", label: \"Sentry auth token\", secret: true, help: \"Lets the dashboard read issues (scopes: project:read, event:read).\" },\n { name: \"SENTRY_ORG_SLUG\", label: \"Sentry organization slug\", secret: false, help: \"The name in your Sentry URL: sentry.io/organizations/<slug>/.\" },\n { name: \"SENTRY_PROJECT_ID\", label: \"Sentry project slug\", secret: false, help: \"The project's slug from Project settings.\" },\n] as const;\n\ntype Result = { ok: true } | { ok: false; error: string };\n\nexport function SetupForm() {\n const [values, setValues] = useState<Record<string, string>>({});\n const [isSet, setIsSet] = useState<Record<string, boolean>>({});\n const [results, setResults] = useState<Record<string, Result>>({});\n const [message, setMessage] = useState<{ ok: boolean; text: string } | null>(null);\n const [busy, setBusy] = useState(false);\n const [saved, setSaved] = useState(false);\n const formRef = useRef<HTMLFormElement>(null);\n\n useEffect(() => {\n fetch(\"/api/setup\")\n .then((r) => r.json())\n .then((b) => {\n if (b.keys) setIsSet(b.keys);\n else if (b.error) setMessage({ ok: false, text: b.error });\n })\n .catch(() => {});\n }, []);\n\n async function save(e: React.FormEvent) {\n e.preventDefault();\n setBusy(true);\n setMessage(null);\n try {\n const res = await fetch(\"/api/setup\", {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(values),\n });\n const body = await res.json();\n const res2: Record<string, Result> = body.results ?? {};\n setResults(res2);\n const firstBad = FIELDS.find((f) => res2[f.name] && !res2[f.name].ok);\n if (firstBad) setTimeout(() => formRef.current?.querySelector<HTMLInputElement>(`#${firstBad.name}`)?.focus(), 0);\n if (body.saved) {\n setSaved(true);\n setValues({});\n setIsSet(Object.fromEntries(FIELDS.map((f) => [f.name, true])));\n setMessage({ ok: true, text: \"Saved. Your keys are valid and stored in .env.local. No restart needed.\" });\n } else {\n setMessage({ ok: false, text: body.error ?? \"Nothing was saved. Fix the fields marked below.\" });\n }\n } catch {\n setMessage({ ok: false, text: \"Could not reach the dashboard server.\" });\n } finally {\n setBusy(false);\n }\n }\n\n return (\n <Card className=\"border-[#2d3748] bg-[#1a202c] shadow-md max-w-2xl\">\n <CardHeader>\n <CardTitle className=\"text-[18px] font-bold text-white tracking-tight\">Connect New Relic and Sentry</CardTitle>\n <CardDescription className=\"text-sm text-gray-400\">\n Keys are checked once, saved to .env.local in this folder, and never shown again. The key that sends events\n (Ingest - License) is separate and is added later on the Connect page.\n </CardDescription>\n </CardHeader>\n <CardContent>\n <form ref={formRef} onSubmit={save} className=\"flex flex-col gap-5\">\n {FIELDS.map((f) => {\n const r = results[f.name];\n return (\n <div key={f.name} className=\"flex flex-col gap-1.5\">\n <label htmlFor={f.name} className=\"text-sm font-medium text-gray-300\">\n {f.label} {isSet[f.name] && <span className=\"ml-2 text-xs text-[#3ee0a1]\">✓ Set</span>}\n </label>\n <Input\n id={f.name}\n name={f.name}\n type={f.secret ? \"password\" : \"text\"}\n autoComplete=\"off\"\n spellCheck={false}\n placeholder={isSet[f.name] ? \"•••••••• (leave blank to keep, type to replace)\" : \"\"}\n value={values[f.name] ?? \"\"}\n onChange={(e) => setValues({ ...values, [f.name]: e.target.value })}\n aria-invalid={r && !r.ok ? true : undefined}\n aria-describedby={`${f.name}-help ${f.name}-result`}\n className=\"bg-[#0f1419] border-[#2d3748] text-gray-200 font-mono text-xs\"\n />\n <p id={`${f.name}-help`} className=\"text-xs text-gray-400\">{f.help}</p>\n <div id={`${f.name}-result`} aria-live=\"polite\">\n {r && !r.ok && <p className=\"text-xs text-[#f87171]\">✗ {r.error}</p>}\n {r?.ok && <p className=\"text-xs text-[#3ee0a1]\">✓ Checked</p>}\n </div>\n </div>\n );\n })}\n <div className=\"flex items-center gap-4\">\n <Button type=\"submit\" disabled={busy}>{busy ? \"Checking…\" : \"Check and save\"}</Button>\n <span aria-live=\"polite\" className={`text-sm ${message?.ok ? \"text-[#3ee0a1]\" : \"text-[#f87171]\"}`}>{message?.text}</span>\n {saved && <Link href=\"/connect\" className={buttonVariants({ variant: \"outline\" })}>Next: connect your app</Link>}\n </div>\n </form>\n </CardContent>\n </Card>\n );\n}\n","import * as React from \"react\"\nimport { cn } from \"cn\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"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\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"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)\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\n \"font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-(--card-spacing)\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n \"flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","// Client-safe access to the server-only async-storage singletons. On the\n// server these re-export the real storages; in the browser bundle this module\n// is aliased to `./server-async-storage.browser` (see\n// scripts/generate-browser-variant-aliases.mjs), which exports `undefined`\n// stubs so the AsyncLocalStorage modules are never bundled into the client.\n// Consumers must guard usage so the stubs are not dereferenced in the browser.\nexport { actionAsyncStorage } from '../../server/app-render/action-async-storage.external'\nexport { workAsyncStorage } from '../../server/app-render/work-async-storage.external'\nexport { workUnitAsyncStorage } from '../../server/app-render/work-unit-async-storage.external'\n"],"names":["FIELDS","name","label","secret","help","SetupForm","values","setValues","isSet","setIsSet","results","setResults","message","setMessage","busy","setBusy","saved","setSaved","formRef","fetch","then","r","json","b","keys","error","ok","text","catch","save","e","preventDefault","res","method","headers","body","JSON","stringify","res2","firstBad","find","f","setTimeout","current","querySelector","focus","Object","fromEntries","map","className","ref","onSubmit","htmlFor","id","type","autoComplete","spellCheck","placeholder","value","onChange","target","undefined","disabled","href","variant","Card","size","props","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","actionAsyncStorage","workAsyncStorage","workUnitAsyncStorage"],"mappings":"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","ignoreList":[2]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[56672,a=>{"use strict";var b=a.i(87924),c=a.i(76459),d=a.i(40031),e=a.i(13983),f=a.i(64831);let g={name:"chevron-right",size:24,node:[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]};g.node;let h=(0,f.default)(g);function i({className:a,...c}){return(0,b.jsx)("nav",{"aria-label":"breadcrumb","data-slot":"breadcrumb",className:(0,e.cn)(a),...c})}function j({className:a,...c}){return(0,b.jsx)("ol",{"data-slot":"breadcrumb-list",className:(0,e.cn)("flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground",a),...c})}function k({className:a,...c}){return(0,b.jsx)("li",{"data-slot":"breadcrumb-item",className:(0,e.cn)("inline-flex items-center gap-1",a),...c})}function l({className:a,render:b,...f}){return(0,d.useRender)({defaultTagName:"a",props:(0,c.mergeProps)({className:(0,e.cn)("transition-colors hover:text-foreground",a)},f),render:b,state:{slot:"breadcrumb-link"}})}function m({className:a,...c}){return(0,b.jsx)("span",{"data-slot":"breadcrumb-page",role:"link","aria-disabled":"true","aria-current":"page",className:(0,e.cn)("font-normal text-foreground",a),...c})}function n({children:a,className:c,...d}){return(0,b.jsx)("li",{"data-slot":"breadcrumb-separator",role:"presentation","aria-hidden":"true",className:(0,e.cn)("[&>svg]:size-3.5",c),...d,children:a??(0,b.jsx)(h,{})})}a.i(7396),a.s(["PerformanceBreadcrumb",0,function({pageName:a="Homepage"}){return(0,b.jsx)(i,{className:"mb-6",children:(0,b.jsxs)(j,{children:[(0,b.jsx)(k,{children:(0,b.jsx)(l,{href:"/performance",className:"text-gray-400 hover:text-white",children:"Performance"})}),(0,b.jsx)(n,{}),(0,b.jsx)(k,{children:(0,b.jsx)(m,{className:"text-white font-medium",children:a})})]})})}],56672)},45890,a=>{"use strict";var b=a.i(87924),c=a.i(50944),d=a.i(92994),e=a.i(50463),f=a.i(62191),g=a.i(56672),h=a.i(5800),i=a.i(75339);a.s(["PerformanceDetail",0,function({slug:a}){let{state:j,retry:k}=(0,f.useMetrics)();if("loading"===j.status)return(0,b.jsx)(e.Skeleton,{className:"h-64 w-full bg-[#2d3748]"});if("error"===j.status)return(0,b.jsx)(d.EmptyState,{title:"Could not load metrics",reason:j.message,onRetry:k});if(!j.configured)return(0,b.jsx)(d.EmptyState,{title:"Connect your data",reason:"Add your New Relic and Sentry keys to see real numbers.",href:"/setup",cta:"Set up keys"});if(0===j.pages.length)return(0,b.jsx)(d.EmptyState,{});let l=j.pages.find(b=>b.slug===a);return l||(0,c.notFound)(),(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(g.PerformanceBreadcrumb,{pageName:l.name}),(0,f.hasData)(l)?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(h.PerformanceKPIs,{page:l}),(0,b.jsx)(i.RelatedErrorsList,{errors:l.sentry.latestErrors})]}):(0,b.jsx)(d.EmptyState,{reason:`${l.name} (${l.url}): keys work, but no page events have arrived.`})]})}])},5800,a=>{"use strict";var b=a.i(87924),c=a.i(3130),d=a.i(38688),e=a.i(8311),f=a.i(92378);a.s(["PerformanceKPIs",0,function({page:a}){let{newRelic:g}=a,h=[{label:"Average Load Time",value:`${Math.round(g.loadTime)}ms`,icon:(0,b.jsx)(e.Clock,{className:"h-4 w-4 text-[#3ee0a1]"})},{label:"Error Rate",value:`${g.errorRate.toFixed(2)}%`,icon:(0,b.jsx)(d.Activity,{className:"h-4 w-4 text-[#ef4444]"})},{label:"Traffic Volume",value:a.visitors,icon:(0,b.jsx)(f.Zap,{className:"h-4 w-4 text-[#06b6d4]"})}];return(0,b.jsx)("div",{className:"grid gap-6 md:grid-cols-3 mb-8",children:h.map(a=>(0,b.jsx)(c.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,b.jsxs)(c.CardContent,{className:"p-6",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,b.jsx)("span",{className:"text-sm font-medium text-gray-400",children:a.label}),(0,b.jsx)("div",{className:"flex h-8 w-8 items-center justify-center rounded-lg bg-[#0f1419] border border-[#2d3748]",children:a.icon})]}),(0,b.jsx)("span",{className:"text-3xl font-bold text-white tracking-tight",children:a.value})]})},a.label))})}])},75339,a=>{"use strict";var b=a.i(87924),c=a.i(3130),d=a.i(64831);let e={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"]};e.node;let f=(0,d.default)(e);var g=a.i(8311);a.s(["RelatedErrorsList",0,function({errors:a}){return(0,b.jsxs)(c.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md w-full lg:w-[400px]",children:[(0,b.jsx)(c.CardHeader,{children:(0,b.jsxs)(c.CardTitle,{className:"text-[18px] font-bold text-white tracking-tight flex items-center gap-2",children:[(0,b.jsx)(f,{className:"h-5 w-5 text-[#ef4444]"}),"Related Errors"]})}),(0,b.jsx)(c.CardContent,{children:0===a.length?(0,b.jsx)("p",{className:"text-sm text-gray-400",children:"No errors reported for this page."}):(0,b.jsx)("div",{className:"flex flex-col gap-3",children:a.map(a=>(0,b.jsxs)("div",{className:"flex flex-col gap-2 rounded-lg border border-[#2d3748] bg-[#0f1419] p-4",children:[(0,b.jsx)("div",{className:"flex items-center justify-between",children:(0,b.jsxs)("span",{className:"text-xs font-mono text-gray-500",children:[a.count," events"]})}),(0,b.jsx)("p",{className:"text-sm font-medium text-gray-200 line-clamp-2",children:a.title}),(0,b.jsxs)("div",{className:"flex items-center gap-1 mt-1 text-xs text-gray-500",children:[(0,b.jsx)(g.Clock,{className:"h-3 w-3"}),(0,b.jsx)("span",{children:new Date(a.lastSeen).toLocaleString()})]})]},a.title))})})]})}],75339)},92994,a=>{"use strict";var b=a.i(87924),c=a.i(38246),d=a.i(3130),e=a.i(40695);a.s(["EmptyState",0,function({title:a="No data yet",reason:f="Keys work, but no page events have arrived.",href:g="/connect",cta:h="Send your first events",onRetry:i}){return(0,b.jsx)(d.Card,{className:"border-[#2d3748] bg-[#1a202c] shadow-md",children:(0,b.jsxs)(d.CardContent,{className:"flex flex-col items-center gap-3 p-10 text-center",children:[(0,b.jsx)("h3",{className:"text-lg font-semibold text-white",children:a}),(0,b.jsx)("p",{className:"max-w-md text-sm text-gray-400",children:f}),(0,b.jsxs)("div",{className:"flex gap-3",children:[(0,b.jsx)(c.default,{href:g,className:(0,e.buttonVariants)(),children:h}),i&&(0,b.jsx)(e.Button,{variant:"outline",onClick:i,children:"Retry"})]})]})})}])},3130,a=>{"use strict";var b=a.i(87924),c=a.i(13983);a.s(["Card",0,function({className:a,size:d="default",...e}){return(0,b.jsx)("div",{"data-slot":"card","data-size":d,className:(0,c.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",a),...e})},"CardContent",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-content",className:(0,c.cn)("px-(--card-spacing)",a),...d})},"CardDescription",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-description",className:(0,c.cn)("text-sm text-muted-foreground",a),...d})},"CardHeader",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-header",className:(0,c.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)",a),...d})},"CardTitle",0,function({className:a,...d}){return(0,b.jsx)("div",{"data-slot":"card-title",className:(0,c.cn)("font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm",a),...d})}])},62191,a=>{"use strict";var b=a.i(72131);a.s(["hasData",0,function(a){return a.newRelic.throughput>0||a.newRelic.loadTime>0||a.sentry.errorCount>0},"useMetrics",0,function(){let[a,c]=(0,b.useState)({status:"loading"}),[d,e]=(0,b.useState)(0);return(0,b.useEffect)(()=>{let a=!1;return fetch("/api/metrics").then(async b=>{let d=await b.json();if(!b.ok)throw Error(d.error??`HTTP ${b.status}`);a||c({status:"ready",configured:d.configured,pages:d.pages})}).catch(b=>{a||c({status:"error",message:b instanceof Error?b.message:"Request failed"})}),()=>{a=!0}},[d]),{state:a,retry:()=>{c({status:"loading"}),e(a=>a+1)}}}])},38688,a=>{"use strict";var b=a.i(64831);let c={name:"activity",size:24,node:[["path",{d:"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2",key:"169zse"}]]};c.node;let d=(0,b.default)(c);a.s(["Activity",0,d],38688)},8311,a=>{"use strict";var b=a.i(64831);let c={name:"clock",size:24,node:[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 6v6l4 2",key:"mmk7yg"}]]};c.node;let d=(0,b.default)(c);a.s(["Clock",0,d],8311)},7396,a=>{"use strict";var b=a.i(64831);let c={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"]};c.node;let d=(0,b.default)(c);a.s(["default",0,d])},92378,a=>{"use strict";var b=a.i(64831);let c={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"}]]};c.node;let d=(0,b.default)(c);a.s(["Zap",0,d],92378)},69789,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});var d={actionAsyncStorage:function(){return f.actionAsyncStorage},workAsyncStorage:function(){return g.workAsyncStorage},workUnitAsyncStorage:function(){return h.workUnitAsyncStorage}};for(var e in d)Object.defineProperty(c,e,{enumerable:!0,get:d[e]});let f=a.r(20635),g=a.r(56704),h=a.r(32319);("function"==typeof c.default||"object"==typeof c.default&&null!==c.default)&&void 0===c.default.__esModule&&(Object.defineProperty(c.default,"__esModule",{value:!0}),Object.assign(c.default,c),b.exports=c.default)}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=_1bbiu24._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../components/Analytics/PerformanceBreadcrumb.tsx","../../../../components/ui/breadcrumb.tsx","../../../../node_modules/lucide-react/src/icons/chevron-right.ts","../../../../components/Analytics/PerformanceDetail.tsx","../../../../components/Analytics/PerformanceKPIs.tsx","../../../../components/Analytics/RelatedErrorsList.tsx","../../../../node_modules/lucide-react/src/icons/circle-alert.ts","../../../../components/EmptyState.tsx","../../../../components/ui/card.tsx","../../../../lib/useMetrics.ts","../../../../node_modules/lucide-react/src/icons/activity.ts","../../../../node_modules/lucide-react/src/icons/clock.ts","../../../../node_modules/lucide-react/src/icons/ellipsis.ts","../../../../node_modules/lucide-react/src/icons/zap.ts","../../../../node_modules/next/src/client/components/server-async-storage.ts"],"sourcesContent":["\"use client\";\n\nimport React from \"react\";\nimport {\n Breadcrumb,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbList,\n BreadcrumbPage,\n BreadcrumbSeparator,\n} from \"@/components/ui/breadcrumb\";\n\nexport function PerformanceBreadcrumb({ pageName = \"Homepage\" }: { pageName?: string }) {\n return (\n <Breadcrumb className=\"mb-6\">\n <BreadcrumbList>\n <BreadcrumbItem>\n <BreadcrumbLink href=\"/performance\" className=\"text-gray-400 hover:text-white\">Performance</BreadcrumbLink>\n </BreadcrumbItem>\n <BreadcrumbSeparator />\n <BreadcrumbItem>\n <BreadcrumbPage className=\"text-white font-medium\">{pageName}</BreadcrumbPage>\n </BreadcrumbItem>\n </BreadcrumbList>\n </Breadcrumb>\n );\n}\n","import * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cn } from \"cn\"\nimport { ChevronRightIcon, MoreHorizontalIcon } from \"lucide-react\"\n\nfunction Breadcrumb({ className, ...props }: React.ComponentProps<\"nav\">) {\n return (\n <nav\n aria-label=\"breadcrumb\"\n data-slot=\"breadcrumb\"\n className={cn(className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbList({ className, ...props }: React.ComponentProps<\"ol\">) {\n return (\n <ol\n data-slot=\"breadcrumb-list\"\n className={cn(\n \"flex flex-wrap items-center gap-1.5 text-sm wrap-break-word text-muted-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-item\"\n className={cn(\"inline-flex items-center gap-1\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbLink({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"a\">) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\"transition-colors hover:text-foreground\", className),\n },\n props\n ),\n render,\n state: {\n slot: \"breadcrumb-link\",\n },\n })\n}\n\nfunction BreadcrumbPage({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-page\"\n role=\"link\"\n aria-disabled=\"true\"\n aria-current=\"page\"\n className={cn(\"font-normal text-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction BreadcrumbSeparator({\n children,\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"breadcrumb-separator\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\"[&>svg]:size-3.5\", className)}\n {...props}\n >\n {children ?? (\n <ChevronRightIcon />\n )}\n </li>\n )\n}\n\nfunction BreadcrumbEllipsis({\n className,\n ...props\n}: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"breadcrumb-ellipsis\"\n role=\"presentation\"\n aria-hidden=\"true\"\n className={cn(\n \"flex size-5 items-center justify-center [&>svg]:size-4\",\n className\n )}\n {...props}\n >\n <MoreHorizontalIcon\n />\n <span className=\"sr-only\">More</span>\n </span>\n )\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbPage,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'chevron-right',\n size: 24,\n node: [['path', { d: 'm9 18 6-6-6-6', key: 'mthhwq' }]],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name ChevronRight\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/chevron-right\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst ChevronRight = createLucideIcon(__iconData);\n\nexport default ChevronRight;\n","\"use client\";\n\nimport { notFound } from \"next/navigation\";\nimport { EmptyState } from \"@/components/EmptyState\";\nimport { Skeleton } from \"@/components/ui/skeleton\";\nimport { useMetrics, hasData } from \"@/lib/useMetrics\";\nimport { PerformanceBreadcrumb } from \"./PerformanceBreadcrumb\";\nimport { PerformanceKPIs } from \"./PerformanceKPIs\";\nimport { RelatedErrorsList } from \"./RelatedErrorsList\";\n\nexport function PerformanceDetail({ slug }: { slug: string }) {\n const { state, retry } = useMetrics();\n\n if (state.status === \"loading\") return <Skeleton className=\"h-64 w-full bg-[#2d3748]\" />;\n if (state.status === \"error\") {\n return <EmptyState title=\"Could not load metrics\" reason={state.message} onRetry={retry} />;\n }\n if (!state.configured) {\n return <EmptyState title=\"Connect your data\" reason=\"Add your New Relic and Sentry keys to see real numbers.\" href=\"/setup\" cta=\"Set up keys\" />;\n }\n if (state.pages.length === 0) return <EmptyState />;\n const page = state.pages.find((p) => p.slug === slug);\n if (!page) notFound();\n\n return (\n <>\n <PerformanceBreadcrumb pageName={page.name} />\n {hasData(page) ? (\n <>\n <PerformanceKPIs page={page} />\n {/* ponytail: trend charts + hourly table return with persisted history (Phase 3). */}\n <RelatedErrorsList errors={page.sentry.latestErrors} />\n </>\n ) : (\n <EmptyState reason={`${page.name} (${page.url}): keys work, but no page events have arrived.`} />\n )}\n </>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport { Activity, Clock, Zap } from \"lucide-react\";\nimport type { MetricsPage } from \"@/lib/metricsHistory\";\n\nexport function PerformanceKPIs({ page }: { page: MetricsPage }) {\n const { newRelic } = page;\n const kpis = [\n { label: \"Average Load Time\", value: `${Math.round(newRelic.loadTime)}ms`, icon: <Clock className=\"h-4 w-4 text-[#3ee0a1]\" /> },\n { label: \"Error Rate\", value: `${newRelic.errorRate.toFixed(2)}%`, icon: <Activity className=\"h-4 w-4 text-[#ef4444]\" /> },\n { label: \"Traffic Volume\", value: page.visitors, icon: <Zap className=\"h-4 w-4 text-[#06b6d4]\" /> },\n ];\n\n return (\n <div className=\"grid gap-6 md:grid-cols-3 mb-8\">\n {kpis.map((kpi) => (\n <Card key={kpi.label} className=\"border-[#2d3748] bg-[#1a202c] shadow-md\">\n <CardContent className=\"p-6\">\n <div className=\"flex items-center justify-between mb-4\">\n <span className=\"text-sm font-medium text-gray-400\">{kpi.label}</span>\n <div className=\"flex h-8 w-8 items-center justify-center rounded-lg bg-[#0f1419] border border-[#2d3748]\">\n {kpi.icon}\n </div>\n </div>\n <span className=\"text-3xl font-bold text-white tracking-tight\">{kpi.value}</span>\n </CardContent>\n </Card>\n ))}\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport { Card, CardHeader, CardTitle, CardContent } from \"@/components/ui/card\";\nimport { AlertCircle, Clock } from \"lucide-react\";\nimport type { MetricsPage } from \"@/lib/metricsHistory\";\n\nexport function RelatedErrorsList({ errors }: { errors: MetricsPage[\"sentry\"][\"latestErrors\"] }) {\n return (\n <Card className=\"border-[#2d3748] bg-[#1a202c] shadow-md w-full lg:w-[400px]\">\n <CardHeader>\n <CardTitle className=\"text-[18px] font-bold text-white tracking-tight flex items-center gap-2\">\n <AlertCircle className=\"h-5 w-5 text-[#ef4444]\" />\n Related Errors\n </CardTitle>\n </CardHeader>\n <CardContent>\n {errors.length === 0 ? (\n <p className=\"text-sm text-gray-400\">No errors reported for this page.</p>\n ) : (\n <div className=\"flex flex-col gap-3\">\n {errors.map((err) => (\n <div key={err.title} className=\"flex flex-col gap-2 rounded-lg border border-[#2d3748] bg-[#0f1419] p-4\">\n <div className=\"flex items-center justify-between\">\n <span className=\"text-xs font-mono text-gray-500\">{err.count} events</span>\n </div>\n <p className=\"text-sm font-medium text-gray-200 line-clamp-2\">{err.title}</p>\n <div className=\"flex items-center gap-1 mt-1 text-xs text-gray-500\">\n <Clock className=\"h-3 w-3\" />\n <span>{new Date(err.lastSeen).toLocaleString()}</span>\n </div>\n </div>\n ))}\n </div>\n )}\n </CardContent>\n </Card>\n );\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'circle-alert',\n size: 24,\n node: [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['line', { x1: '12', x2: '12', y1: '8', y2: '12', key: '1pkeuh' }],\n ['line', { x1: '12', x2: '12.01', y1: '16', y2: '16', key: '4dfq90' }],\n ],\n aliases: ['alert-circle'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name CircleAlert\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/circle-alert\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst CircleAlert = createLucideIcon(__iconData);\n\nexport default CircleAlert;\n","import Link from \"next/link\";\nimport { Card, CardContent } from \"@/components/ui/card\";\nimport { Button, buttonVariants } from \"@/components/ui/button\";\n\n/** Shared \"No data yet\" / error card for every /performance view. */\nexport function EmptyState({\n title = \"No data yet\",\n reason = \"Keys work, but no page events have arrived.\",\n href = \"/connect\",\n cta = \"Send your first events\",\n onRetry,\n}: {\n title?: string;\n reason?: string;\n href?: string;\n cta?: string;\n onRetry?: () => void;\n}) {\n return (\n <Card className=\"border-[#2d3748] bg-[#1a202c] shadow-md\">\n <CardContent className=\"flex flex-col items-center gap-3 p-10 text-center\">\n <h3 className=\"text-lg font-semibold text-white\">{title}</h3>\n <p className=\"max-w-md text-sm text-gray-400\">{reason}</p>\n <div className=\"flex gap-3\">\n <Link href={href} className={buttonVariants()}>\n {cta}\n </Link>\n {onRetry && (\n <Button variant=\"outline\" onClick={onRetry}>\n Retry\n </Button>\n )}\n </div>\n </CardContent>\n </Card>\n );\n}\n","import * as React from \"react\"\nimport { cn } from \"cn\"\n\nfunction Card({\n className,\n size = \"default\",\n ...props\n}: React.ComponentProps<\"div\"> & { size?: \"default\" | \"sm\" }) {\n return (\n <div\n data-slot=\"card\"\n data-size={size}\n className={cn(\n \"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\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-header\"\n className={cn(\n \"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)\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardTitle({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-title\"\n className={cn(\n \"font-heading text-base leading-snug font-medium group-data-[size=sm]/card:text-sm\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardDescription({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-description\"\n className={cn(\"text-sm text-muted-foreground\", className)}\n {...props}\n />\n )\n}\n\nfunction CardAction({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-action\"\n className={cn(\n \"col-start-2 row-span-2 row-start-1 self-start justify-self-end\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction CardContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-content\"\n className={cn(\"px-(--card-spacing)\", className)}\n {...props}\n />\n )\n}\n\nfunction CardFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"card-footer\"\n className={cn(\n \"flex items-center rounded-b-xl border-t bg-muted/50 p-(--card-spacing)\",\n className\n )}\n {...props}\n />\n )\n}\n\nexport {\n Card,\n CardHeader,\n CardFooter,\n CardTitle,\n CardAction,\n CardDescription,\n CardContent,\n}\n","\"use client\";\n\nimport { useEffect, useState } from \"react\";\nimport type { MetricsPage } from \"@/lib/metricsHistory\";\n\nexport type MetricsState =\n | { status: \"loading\" }\n | { status: \"error\"; message: string }\n | { status: \"ready\"; configured: boolean; pages: MetricsPage[] };\n\n/** A page that has never reported has no beacon hit: show \"No data yet\", never 0ms/Healthy. */\nexport function hasData(p: MetricsPage): boolean {\n return p.newRelic.throughput > 0 || p.newRelic.loadTime > 0 || p.sentry.errorCount > 0;\n}\n\nexport function useMetrics() {\n const [state, setState] = useState<MetricsState>({ status: \"loading\" });\n const [attempt, setAttempt] = useState(0);\n\n useEffect(() => {\n let cancelled = false;\n fetch(\"/api/metrics\")\n .then(async (res) => {\n const body = await res.json();\n if (!res.ok) throw new Error(body.error ?? `HTTP ${res.status}`);\n if (!cancelled) setState({ status: \"ready\", configured: body.configured, pages: body.pages });\n })\n .catch((e) => {\n if (!cancelled) setState({ status: \"error\", message: e instanceof Error ? e.message : \"Request failed\" });\n });\n return () => {\n cancelled = true;\n };\n }, [attempt]);\n\n const retry = () => {\n setState({ status: \"loading\" });\n setAttempt((n) => n + 1);\n };\n return { state, retry };\n}\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'activity',\n size: 24,\n node: [\n [\n 'path',\n {\n d: 'M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2',\n key: '169zse',\n },\n ],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Activity\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/activity\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Activity = createLucideIcon(__iconData);\n\nexport default Activity;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'clock',\n size: 24,\n node: [\n ['circle', { cx: '12', cy: '12', r: '10', key: '1mglay' }],\n ['path', { d: 'M12 6v6l4 2', key: 'mmk7yg' }],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Clock\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/clock\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Clock = createLucideIcon(__iconData);\n\nexport default Clock;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'ellipsis',\n size: 24,\n node: [\n ['circle', { cx: '12', cy: '12', r: '1', key: '41hilf' }],\n ['circle', { cx: '19', cy: '12', r: '1', key: '1wjl8i' }],\n ['circle', { cx: '5', cy: '12', r: '1', key: '1pcz8c' }],\n ],\n aliases: ['more-horizontal'],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Ellipsis\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/ellipsis\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Ellipsis = createLucideIcon(__iconData);\n\nexport default Ellipsis;\n","import createLucideIcon from '../createLucideIcon';\nimport type { LucideIconNode, LucideIconData } from '../types';\n\nexport const __iconData: LucideIconData = {\n name: 'zap',\n size: 24,\n node: [\n [\n 'path',\n {\n 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',\n key: '1v7up4',\n },\n ],\n ],\n};\n\n/**\n * @deprecated Access `__iconData` instead.\n */\nexport const __iconNode: LucideIconNode[] = __iconData.node;\n\n/**\n * @component @name Zap\n * @description Lucide SVG icon component, renders SVG Element with children.\n *\n * @preview  - https://lucide.dev/icons/zap\n * @see https://lucide.dev/guide/packages/lucide-react - Documentation\n *\n * @param {Object} props - Lucide icons props and any valid SVG attribute\n * @returns {JSX.Element} JSX Element\n *\n */\nconst Zap = createLucideIcon(__iconData);\n\nexport default Zap;\n","// Client-safe access to the server-only async-storage singletons. On the\n// server these re-export the real storages; in the browser bundle this module\n// is aliased to `./server-async-storage.browser` (see\n// scripts/generate-browser-variant-aliases.mjs), which exports `undefined`\n// stubs so the AsyncLocalStorage modules are never bundled into the client.\n// Consumers must guard usage so the stubs are not dereferenced in the browser.\nexport { actionAsyncStorage } from '../../server/app-render/action-async-storage.external'\nexport { workAsyncStorage } from '../../server/app-render/work-async-storage.external'\nexport { workUnitAsyncStorage } from '../../server/app-render/work-unit-async-storage.external'\n"],"names":["__iconData","node","PerformanceDetail","slug","state","retry","status","className","title","reason","message","onRetry","configured","href","cta","pages","length","page","find","p","pageName","name","errors","sentry","latestErrors","url","PerformanceKPIs","newRelic","kpis","label","value","Math","round","loadTime","icon","errorRate","toFixed","visitors","map","kpi","EmptyState","variant","onClick","Card","size","props","CardHeader","CardTitle","CardDescription","CardAction","CardContent","CardFooter","hasData","throughput","errorCount","useMetrics","setState","attempt","setAttempt","cancelled","fetch","then","res","body","json","ok","Error","error","catch","e","n","actionAsyncStorage","workAsyncStorage","workUnitAsyncStorage"],"mappings":"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","ignoreList":[2,6,10,11,13,14]}
|