dev3000 0.0.59 ā 0.0.62
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/README.md +4 -0
- package/dist/cdp-monitor.d.ts +2 -1
- package/dist/cdp-monitor.d.ts.map +1 -1
- package/dist/cdp-monitor.js +34 -17
- package/dist/cdp-monitor.js.map +1 -1
- package/dist/cli.js +105 -13
- package/dist/cli.js.map +1 -1
- package/dist/dev-environment.d.ts +8 -0
- package/dist/dev-environment.d.ts.map +1 -1
- package/dist/dev-environment.js +183 -42
- package/dist/dev-environment.js.map +1 -1
- package/dist/services/parsers/error-detectors/base.d.ts +24 -0
- package/dist/services/parsers/error-detectors/base.d.ts.map +1 -0
- package/dist/services/parsers/error-detectors/base.js +44 -0
- package/dist/services/parsers/error-detectors/base.js.map +1 -0
- package/dist/services/parsers/error-detectors/index.d.ts +6 -0
- package/dist/services/parsers/error-detectors/index.d.ts.map +1 -0
- package/dist/services/parsers/error-detectors/index.js +6 -0
- package/dist/services/parsers/error-detectors/index.js.map +1 -0
- package/dist/services/parsers/error-detectors/nextjs.d.ts +9 -0
- package/dist/services/parsers/error-detectors/nextjs.d.ts.map +1 -0
- package/dist/services/parsers/error-detectors/nextjs.js +52 -0
- package/dist/services/parsers/error-detectors/nextjs.js.map +1 -0
- package/dist/services/parsers/index.d.ts +8 -0
- package/dist/services/parsers/index.d.ts.map +1 -0
- package/dist/services/parsers/index.js +10 -0
- package/dist/services/parsers/index.js.map +1 -0
- package/dist/services/parsers/log-parsers/base.d.ts +26 -0
- package/dist/services/parsers/log-parsers/base.d.ts.map +1 -0
- package/dist/services/parsers/log-parsers/base.js +6 -0
- package/dist/services/parsers/log-parsers/base.js.map +1 -0
- package/dist/services/parsers/log-parsers/index.d.ts +6 -0
- package/dist/services/parsers/log-parsers/index.d.ts.map +1 -0
- package/dist/services/parsers/log-parsers/index.js +5 -0
- package/dist/services/parsers/log-parsers/index.js.map +1 -0
- package/dist/services/parsers/log-parsers/standard.d.ts +9 -0
- package/dist/services/parsers/log-parsers/standard.d.ts.map +1 -0
- package/dist/services/parsers/log-parsers/standard.js +17 -0
- package/dist/services/parsers/log-parsers/standard.js.map +1 -0
- package/dist/services/parsers/output-processor.d.ts +39 -0
- package/dist/services/parsers/output-processor.d.ts.map +1 -0
- package/dist/services/parsers/output-processor.js +54 -0
- package/dist/services/parsers/output-processor.js.map +1 -0
- package/mcp-server/.next/BUILD_ID +1 -1
- package/mcp-server/.next/app-build-manifest.json +27 -22
- package/mcp-server/.next/app-path-routes-manifest.json +1 -0
- package/mcp-server/.next/build-manifest.json +6 -5
- package/mcp-server/.next/cache/.previewinfo +1 -1
- package/mcp-server/.next/cache/.rscinfo +1 -1
- package/mcp-server/.next/cache/.tsbuildinfo +1 -1
- package/mcp-server/.next/fallback-build-manifest.json +2 -2
- package/mcp-server/.next/prerender-manifest.json +10 -10
- package/mcp-server/.next/server/app/_global-error/page/app-build-manifest.json +4 -3
- package/mcp-server/.next/server/app/_global-error/page/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/_global-error.html +2 -2
- package/mcp-server/.next/server/app/_global-error.rsc +1 -1
- package/mcp-server/.next/server/app/_not-found/page/app-build-manifest.json +5 -4
- package/mcp-server/.next/server/app/_not-found/page/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/_not-found.html +1 -1
- package/mcp-server/.next/server/app/_not-found.rsc +2 -2
- package/mcp-server/.next/server/app/api/config/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/config/route/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/health/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/health/route/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/logs/append/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/logs/append/route/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/logs/append/route.js +1 -1
- package/mcp-server/.next/server/app/api/logs/append/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/head/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/logs/head/route/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/logs/list/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/logs/list/route/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/logs/list/route.js +1 -1
- package/mcp-server/.next/server/app/api/logs/list/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/logs/rotate/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/logs/rotate/route/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/logs/stream/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/logs/stream/route/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/logs/tail/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/logs/tail/route/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/mcp/[transport]/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/mcp/[transport]/route/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/mcp/[transport]/route.js +1 -1
- package/mcp-server/.next/server/app/api/mcp/[transport]/route.js.nft.json +1 -1
- package/mcp-server/.next/server/app/api/replay/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/replay/route/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/api/tools/route/app-build-manifest.json +12 -0
- package/mcp-server/.next/server/app/api/tools/route/app-paths-manifest.json +3 -0
- package/mcp-server/.next/server/app/api/tools/route/build-manifest.json +18 -0
- package/mcp-server/.next/server/app/api/tools/route/server-reference-manifest.json +4 -0
- package/mcp-server/.next/server/app/api/tools/route.js +7 -0
- package/mcp-server/.next/server/app/api/tools/route.js.map +5 -0
- package/mcp-server/.next/server/app/api/tools/route.js.nft.json +1 -0
- package/mcp-server/.next/server/app/api/tools/route_client-reference-manifest.js +2 -0
- package/mcp-server/.next/server/app/index.html +1 -1
- package/mcp-server/.next/server/app/index.rsc +3 -3
- package/mcp-server/.next/server/app/logs/page/app-build-manifest.json +6 -5
- package/mcp-server/.next/server/app/logs/page/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/logs/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/page/app-build-manifest.json +6 -5
- package/mcp-server/.next/server/app/page/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/replay/page/app-build-manifest.json +6 -5
- package/mcp-server/.next/server/app/replay/page/build-manifest.json +4 -3
- package/mcp-server/.next/server/app/replay/page.js.nft.json +1 -1
- package/mcp-server/.next/server/app/replay/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/server/app/replay.html +1 -1
- package/mcp-server/.next/server/app/replay.rsc +3 -3
- package/mcp-server/.next/server/app-paths-manifest.json +1 -0
- package/mcp-server/.next/server/chunks/{[root-of-the-server]__1d2effbb._.js ā [root-of-the-server]__25014d3e._.js} +2 -2
- package/mcp-server/.next/server/chunks/[root-of-the-server]__3dc88807._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__7f1ecf7b._.js +3 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__7f1ecf7b._.js.map +1 -0
- package/mcp-server/.next/server/chunks/[root-of-the-server]__82298dd3._.js +7 -7
- package/mcp-server/.next/server/chunks/[root-of-the-server]__82298dd3._.js.map +1 -1
- package/mcp-server/.next/{standalone/.next/server/chunks/[root-of-the-server]__a9062def._.js ā server/chunks/[root-of-the-server]__901c3acf._.js} +2 -2
- package/mcp-server/.next/server/chunks/_next-internal_server_app_api_tools_route_actions_4a0d5a18.js +3 -0
- package/mcp-server/.next/server/chunks/_next-internal_server_app_api_tools_route_actions_4a0d5a18.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/0916f_next_d5a56baf._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/0916f_next_d5a56baf._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_102cca64._.js +6 -0
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_102cca64._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_58af49d5._.js +6 -0
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_58af49d5._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/{0916f_next_dist_b838d7f3._.js ā 0916f_next_dist_esm_87a80014._.js} +2 -2
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_esm_87a80014._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__2cdf0446._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__2cdf0446._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__44804f8a._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__44804f8a._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__67415ea0._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__67415ea0._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__da15f006._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__da15f006._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/_69f197ad._.js +5 -0
- package/mcp-server/.next/server/chunks/ssr/_69f197ad._.js.map +1 -0
- package/mcp-server/.next/server/chunks/ssr/_dc26a647._.js +3 -0
- package/mcp-server/.next/server/chunks/ssr/_dc26a647._.js.map +1 -0
- package/mcp-server/.next/server/middleware-build-manifest.js +4 -3
- package/mcp-server/.next/server/pages/404.html +1 -1
- package/mcp-server/.next/server/pages/500.html +2 -2
- package/mcp-server/.next/server/server-reference-manifest.js +1 -1
- package/mcp-server/.next/server/server-reference-manifest.json +1 -1
- package/mcp-server/.next/standalone/.next/BUILD_ID +1 -1
- package/mcp-server/.next/standalone/.next/app-build-manifest.json +27 -22
- package/mcp-server/.next/standalone/.next/app-path-routes-manifest.json +1 -0
- package/mcp-server/.next/standalone/.next/build-manifest.json +6 -5
- package/mcp-server/.next/standalone/.next/prerender-manifest.json +10 -10
- package/mcp-server/.next/standalone/.next/server/app/_global-error/page/app-build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/_global-error/page/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/_global-error/page.js.nft.json +1 -1
- package/mcp-server/.next/standalone/.next/server/app/_global-error/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/standalone/.next/server/app/_global-error.html +2 -2
- package/mcp-server/.next/standalone/.next/server/app/_global-error.rsc +1 -1
- package/mcp-server/.next/standalone/.next/server/app/_not-found/page/app-build-manifest.json +5 -4
- package/mcp-server/.next/standalone/.next/server/app/_not-found/page/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/mcp-server/.next/standalone/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/standalone/.next/server/app/_not-found.html +1 -1
- package/mcp-server/.next/standalone/.next/server/app/_not-found.rsc +2 -2
- package/mcp-server/.next/standalone/.next/server/app/api/config/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/config/route/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/health/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/health/route/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/logs/append/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/logs/append/route/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/logs/append/route.js +1 -1
- package/mcp-server/.next/standalone/.next/server/app/api/logs/append/route.js.nft.json +1 -1
- package/mcp-server/.next/standalone/.next/server/app/api/logs/head/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/logs/head/route/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/logs/list/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/logs/list/route/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/logs/list/route.js +1 -1
- package/mcp-server/.next/standalone/.next/server/app/api/logs/list/route.js.nft.json +1 -1
- package/mcp-server/.next/standalone/.next/server/app/api/logs/rotate/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/logs/rotate/route/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/logs/stream/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/logs/stream/route/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/logs/tail/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/logs/tail/route/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/mcp/[transport]/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/mcp/[transport]/route/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/mcp/[transport]/route.js +1 -1
- package/mcp-server/.next/standalone/.next/server/app/api/mcp/[transport]/route.js.nft.json +1 -1
- package/mcp-server/.next/standalone/.next/server/app/api/replay/route/app-build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/replay/route/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/api/tools/route/app-build-manifest.json +12 -0
- package/mcp-server/.next/standalone/.next/server/app/api/tools/route/app-paths-manifest.json +3 -0
- package/mcp-server/.next/standalone/.next/server/app/api/tools/route/build-manifest.json +18 -0
- package/mcp-server/.next/standalone/.next/server/app/api/tools/route/server-reference-manifest.json +4 -0
- package/mcp-server/.next/standalone/.next/server/app/api/tools/route.js +7 -0
- package/mcp-server/.next/standalone/.next/server/app/api/tools/route.js.map +5 -0
- package/mcp-server/.next/standalone/.next/server/app/api/tools/route.js.nft.json +1 -0
- package/mcp-server/.next/standalone/.next/server/app/api/tools/route_client-reference-manifest.js +2 -0
- package/mcp-server/.next/standalone/.next/server/app/index.html +1 -1
- package/mcp-server/.next/standalone/.next/server/app/index.rsc +3 -3
- package/mcp-server/.next/standalone/.next/server/app/logs/page/app-build-manifest.json +6 -5
- package/mcp-server/.next/standalone/.next/server/app/logs/page/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/logs/page.js.nft.json +1 -1
- package/mcp-server/.next/standalone/.next/server/app/logs/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/standalone/.next/server/app/page/app-build-manifest.json +6 -5
- package/mcp-server/.next/standalone/.next/server/app/page/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/page.js.nft.json +1 -1
- package/mcp-server/.next/standalone/.next/server/app/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/standalone/.next/server/app/replay/page/app-build-manifest.json +6 -5
- package/mcp-server/.next/standalone/.next/server/app/replay/page/build-manifest.json +4 -3
- package/mcp-server/.next/standalone/.next/server/app/replay/page.js.nft.json +1 -1
- package/mcp-server/.next/standalone/.next/server/app/replay/page_client-reference-manifest.js +1 -1
- package/mcp-server/.next/standalone/.next/server/app/replay.html +1 -1
- package/mcp-server/.next/standalone/.next/server/app/replay.rsc +3 -3
- package/mcp-server/.next/standalone/.next/server/app-paths-manifest.json +1 -0
- package/mcp-server/.next/standalone/.next/server/chunks/{[root-of-the-server]__1d2effbb._.js ā [root-of-the-server]__25014d3e._.js} +2 -2
- package/mcp-server/.next/standalone/.next/server/chunks/[root-of-the-server]__3dc88807._.js +3 -0
- package/mcp-server/.next/standalone/.next/server/chunks/[root-of-the-server]__7f1ecf7b._.js +3 -0
- package/mcp-server/.next/standalone/.next/server/chunks/[root-of-the-server]__82298dd3._.js +7 -7
- package/mcp-server/.next/{server/chunks/[root-of-the-server]__a9062def._.js ā standalone/.next/server/chunks/[root-of-the-server]__901c3acf._.js} +2 -2
- package/mcp-server/.next/standalone/.next/server/chunks/_next-internal_server_app_api_tools_route_actions_4a0d5a18.js +3 -0
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/0916f_next_d5a56baf._.js +3 -0
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/0916f_next_dist_102cca64._.js +6 -0
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/0916f_next_dist_58af49d5._.js +6 -0
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/{0916f_next_dist_b838d7f3._.js ā 0916f_next_dist_esm_87a80014._.js} +2 -2
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__2cdf0446._.js +3 -0
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__44804f8a._.js +3 -0
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__67415ea0._.js +3 -0
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__da15f006._.js +3 -0
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/_69f197ad._.js +5 -0
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/_dc26a647._.js +3 -0
- package/mcp-server/.next/standalone/.next/server/middleware-build-manifest.js +4 -3
- package/mcp-server/.next/standalone/.next/server/pages/404.html +1 -1
- package/mcp-server/.next/standalone/.next/server/pages/500.html +2 -2
- package/mcp-server/.next/standalone/.next/server/server-reference-manifest.js +1 -1
- package/mcp-server/.next/standalone/.next/server/server-reference-manifest.json +1 -1
- package/mcp-server/.next/standalone/app/api/mcp/[transport]/route.ts +508 -20
- package/mcp-server/.next/static/chunks/5dd333b6181425ad.js +1 -0
- package/mcp-server/.next/static/chunks/{dbf09e13116b591b.css ā 6634762c4edabf25.css} +1 -1
- package/mcp-server/.next/static/chunks/8960f12966b75725.js +5 -0
- package/mcp-server/.next/static/chunks/8a5ef92054eb3f68.js +1 -0
- package/mcp-server/.next/static/chunks/a04299218648d5c9.js +5 -0
- package/mcp-server/.next/static/chunks/aac71a4d8cd0d1d1.js +1 -0
- package/mcp-server/.next/static/chunks/{5c0c8ae693afcfee.js ā ab8ede9578945642.js} +1 -1
- package/mcp-server/.next/static/chunks/{416a6ad96e2949dc.js ā c964cee505b7b510.js} +1 -1
- package/mcp-server/.next/static/chunks/{941b6c341513efe6.js ā f7331e11d1cb0264.js} +1 -1
- package/mcp-server/.next/static/chunks/f83a9d423c663174.js +1 -0
- package/mcp-server/.next/static/chunks/turbopack-0005c9ba09919d66.js +3 -0
- package/mcp-server/.next/static/chunks/{turbopack-4c431b48e3258ab3.js ā turbopack-1bf2fb01bf8c3dc0.js} +1 -1
- package/mcp-server/.next/static/chunks/{turbopack-28043e8ec5b32cbc.js ā turbopack-a9958f358b128d0b.js} +1 -1
- package/mcp-server/.next/trace +1 -1
- package/mcp-server/.next/types/routes.d.ts +2 -1
- package/mcp-server/.next/types/validator.ts +9 -0
- package/mcp-server/app/api/mcp/[transport]/route.ts +508 -20
- package/mcp-server/app/api/tools/route.ts +194 -0
- package/mcp-server/app/page.tsx +245 -92
- package/package.json +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__c51abf31._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_b838d7f3._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__524f1e5c._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__524f1e5c._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__5c573556._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__5c573556._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__9197e6d6._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__9197e6d6._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__b732be1d._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__b732be1d._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/_7c04f51e._.js +0 -8
- package/mcp-server/.next/server/chunks/ssr/_7c04f51e._.js.map +0 -1
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_8bde5c6b._.js +0 -3
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_8bde5c6b._.js.map +0 -1
- package/mcp-server/.next/standalone/.next/server/chunks/[root-of-the-server]__c51abf31._.js +0 -3
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__524f1e5c._.js +0 -3
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__5c573556._.js +0 -3
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__9197e6d6._.js +0 -3
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/[root-of-the-server]__b732be1d._.js +0 -3
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/_7c04f51e._.js +0 -8
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/node_modules__pnpm_8bde5c6b._.js +0 -3
- package/mcp-server/.next/static/chunks/0840a1d3b8d17eda.js +0 -5
- package/mcp-server/.next/static/chunks/3df53cad6e742c25.js +0 -1
- package/mcp-server/.next/static/chunks/830751c84b44689a.js +0 -1
- package/mcp-server/.next/static/chunks/accd4b2d97799296.js +0 -5
- package/mcp-server/.next/static/chunks/b2fe525ea0f48ed5.js +0 -1
- package/mcp-server/.next/static/chunks/turbopack-66b02875bc8e5dbd.js +0 -3
- /package/mcp-server/.next/server/chunks/{[root-of-the-server]__1d2effbb._.js.map ā [root-of-the-server]__25014d3e._.js.map} +0 -0
- /package/mcp-server/.next/server/chunks/{[root-of-the-server]__c51abf31._.js.map ā [root-of-the-server]__3dc88807._.js.map} +0 -0
- /package/mcp-server/.next/server/chunks/{[root-of-the-server]__a9062def._.js.map ā [root-of-the-server]__901c3acf._.js.map} +0 -0
- /package/mcp-server/.next/static/{HNx7zx4NtWY3EQ9D5yHAA ā fgx2Ltd5vbloYUQlVKX60}/_buildManifest.js +0 -0
- /package/mcp-server/.next/static/{HNx7zx4NtWY3EQ9D5yHAA ā fgx2Ltd5vbloYUQlVKX60}/_clientMiddlewareManifest.json +0 -0
- /package/mcp-server/.next/static/{HNx7zx4NtWY3EQ9D5yHAA ā fgx2Ltd5vbloYUQlVKX60}/_ssgManifest.js +0 -0
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},12988,(a,b,c)=>{"use strict";b.exports=a.r(18622)},66755,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored["react-ssr"].ReactJsxRuntime},56541,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored["react-ssr"].React},54770,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored["react-ssr"].ReactDOM},38344,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored.contexts.AppRouterContext},8054,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored.contexts.HooksClientContext},35446,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored.contexts.ServerInsertedHtml}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__524f1e5c._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/module.compiled.js","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-dom.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts"],"sourcesContent":["if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-page/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.prod.js')\n }\n }\n }\n}\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactJsxRuntime\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.React\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactDOM\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n"],"names":["process","env","NEXT_RUNTIME","module","exports","require","__NEXT_EXPERIMENTAL_REACT","NODE_ENV","TURBOPACK","vendored","ReactJsxRuntime","React","ReactDOM","AppRouterContext","HooksClientContext","ServerInsertedHtml"],"mappings":"6tBA0BQG,EAAOC,OAAO,CAAGC,EAAQ,CAAA,CAAA,IAAA,iCC1BjCF,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRI,QAAQ,CAAC,YAAY,CAAEC,eAAe,+BCFxCP,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRI,QAAQ,CAAC,YAAY,CAAEE,KAAK,+BCF9BR,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRI,QAAQ,CAAC,YAAY,CAAEG,QAAQ,+BCFjCT,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRI,QAAQ,CAAC,QAAW,CAACI,gBAAgB,8BCFvCV,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRI,QAAQ,CAAC,QAAW,CAACK,kBAAkB,+BCFzCX,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRI,QAAQ,CAAC,QAAW,CAACM,kBAAkB","ignoreList":[0,1,2,3,4,5,6]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},12988,(a,b,c)=>{"use strict";b.exports=a.r(18622)},66755,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored["react-ssr"].ReactJsxRuntime},56541,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored["react-ssr"].React},54770,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored["react-ssr"].ReactDOM},90780,a=>{"use strict";var b=a.i(66755),c=a.i(10711),d=a.i(56541);function e(){let[a,e]=(0,d.useState)(null),[f,g]=(0,d.useState)(!1),[h,i]=(0,d.useState)(null),[j,k]=(0,d.useState)(1),[l,m]=(0,d.useState)(!1),[n,o]=(0,d.useState)(0),p=(0,d.useCallback)(async()=>{g(!0);try{let a=new URLSearchParams({action:"parse"});h&&(a.set("startTime",h.start),a.set("endTime",h.end));let b=await fetch(`/api/replay?${a}`),c=await b.json();b.ok?e(c):console.error("Failed to load replay data:",c.error)}catch(a){console.error("Error loading replay data:",a)}g(!1)},[h]);(0,d.useEffect)(()=>{p()},[p]);let q=a?[...a.interactions.map(a=>({...a,eventType:"interaction"})),...a.navigations.map(a=>({...a,eventType:"navigation"}))].sort((a,b)=>new Date(a.timestamp).getTime()-new Date(b.timestamp).getTime()):[],r=a=>new Date(a).toLocaleTimeString(),s=async()=>{if(a){m(!0),o(0);for(let a=0;a<q.length&&l;a++){o(a);let b=q[a],c=q[a+1];if(c){let a=new Date(b.timestamp).getTime(),d=(new Date(c.timestamp).getTime()-a)/j;await new Promise(a=>setTimeout(a,Math.min(d,5e3)))}}m(!1)}};return f?(0,b.jsx)("div",{className:"min-h-screen bg-gray-50 flex items-center justify-center",children:(0,b.jsxs)("div",{className:"text-center",children:[(0,b.jsx)("div",{className:"inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"}),(0,b.jsx)("div",{className:"text-gray-500 text-sm mt-4",children:"Loading replay data..."})]})}):(0,b.jsxs)("div",{className:"min-h-screen bg-gray-50",children:[(0,b.jsx)("div",{className:"bg-white shadow-sm border-b",children:(0,b.jsx)("div",{className:"max-w-7xl mx-auto px-4 py-3",children:(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsx)("h1",{className:"text-2xl font-bold text-gray-900",children:"Session Replay"}),a&&(0,b.jsxs)("div",{className:"flex items-center gap-4 text-sm text-gray-600",children:[(0,b.jsxs)("span",{children:[a.interactions.length," interactions"]}),(0,b.jsxs)("span",{children:[a.navigations.length," navigations"]}),(0,b.jsxs)("span",{children:[a.screenshots.length," screenshots"]}),(0,b.jsxs)("span",{children:[(a=>{let b=Math.floor(a/1e3),c=Math.floor(b/60);return`${c}m ${b%60}s`})(a.duration)," duration"]})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)("select",{value:j,onChange:a=>k(Number(a.target.value)),className:"px-3 py-1 border border-gray-300 rounded text-sm",children:[(0,b.jsx)("option",{value:.5,children:"0.5x"}),(0,b.jsx)("option",{value:1,children:"1x"}),(0,b.jsx)("option",{value:2,children:"2x"}),(0,b.jsx)("option",{value:4,children:"4x"}),(0,b.jsx)("option",{value:8,children:"8x"})]}),l?(0,b.jsx)("button",{type:"button",onClick:()=>{m(!1)},className:"px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700",children:"ā¹ Stop"}):(0,b.jsx)("button",{type:"button",onClick:s,disabled:!a||0===q.length,className:"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed",children:"ā¶ Play"})]})]})})}),(0,b.jsx)("div",{className:"max-w-7xl mx-auto px-4 py-6",children:a?(0,b.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-sm border",children:[(0,b.jsx)("div",{className:"px-4 py-3 border-b",children:(0,b.jsx)("h2",{className:"font-semibold text-gray-900",children:"Event Timeline"})}),(0,b.jsx)("div",{className:"max-h-96 overflow-y-auto",children:q.map((a,c)=>(0,b.jsxs)("div",{className:`px-4 py-2 border-b last:border-b-0 ${c===n?"bg-blue-50 border-blue-200":""}`,children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-xs font-mono text-gray-500",children:r(a.timestamp)}),(0,b.jsx)("span",{className:`px-2 py-1 rounded text-xs font-medium ${"navigation"===a.eventType?"bg-purple-100 text-purple-800":"CLICK"===a.type?"bg-green-100 text-green-800":"SCROLL"===a.type?"bg-yellow-100 text-yellow-800":"bg-gray-100 text-gray-800"}`,children:"navigation"===a.eventType?"NAV":a.type})]}),l&&c===n&&(0,b.jsx)("div",{className:"w-2 h-2 bg-blue-500 rounded-full animate-pulse"})]}),(0,b.jsx)("div",{className:"mt-1 text-sm text-gray-700",children:"navigation"===a.eventType?(0,b.jsxs)("span",{children:["ā ",a.url]}):"CLICK"===a.type||"TAP"===a.type?(0,b.jsxs)("span",{children:["(",a.x,", ",a.y,") on ",a.target]}):"SCROLL"===a.type?(0,b.jsxs)("span",{children:[a.direction," ",a.distance,"px to (",a.x,", ",a.y,")"]}):"KEY"===a.type?(0,b.jsxs)("span",{children:['"',a.key,'" in ',a.target]}):(0,b.jsx)("span",{children:JSON.stringify(a)})})]},`${a.timestamp}-${c}`))})]}),(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-sm border",children:[(0,b.jsx)("div",{className:"px-4 py-3 border-b",children:(0,b.jsx)("h2",{className:"font-semibold text-gray-900",children:"Screenshots"})}),(0,b.jsx)("div",{className:"max-h-96 overflow-y-auto",children:a.screenshots.map((a,d)=>(0,b.jsxs)("div",{className:"px-4 py-2 border-b last:border-b-0",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,b.jsx)("span",{className:"text-xs font-mono text-gray-500",children:r(a.timestamp)}),(0,b.jsx)("span",{className:"text-xs text-gray-600",children:a.event})]}),(0,b.jsx)(c.default,{src:a.url,alt:`Screenshot: ${a.event}`,width:400,height:200,className:"w-full rounded border",style:{maxHeight:"200px",objectFit:"contain"}})]},`${a.timestamp}-${a.event}-${d}`))})]})]}):(0,b.jsxs)("div",{className:"text-center py-12",children:[(0,b.jsx)("div",{className:"text-gray-400 text-lg",children:"No replay data available"}),(0,b.jsx)("div",{className:"text-gray-500 text-sm mt-2",children:"Start using your app to generate interaction data"})]})})]})}a.s(["default",()=>e])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__5c573556._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/module.compiled.js","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-dom.ts","turbopack:///[project]/app/replay/ReplayClient.tsx"],"sourcesContent":["if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-page/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.prod.js')\n }\n }\n }\n}\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactJsxRuntime\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.React\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactDOM\n","\"use client\"\n\nimport Image from \"next/image\"\nimport { useCallback, useEffect, useState } from \"react\"\n\ninterface InteractionEvent {\n timestamp: string\n type: \"CLICK\" | \"TAP\" | \"SCROLL\" | \"KEY\"\n x?: number\n y?: number\n target?: string\n direction?: string\n distance?: number\n key?: string\n}\n\ninterface NavigationEvent {\n timestamp: string\n url: string\n}\n\ninterface ScreenshotEvent {\n timestamp: string\n url: string\n event: string\n}\n\ninterface ReplayData {\n interactions: InteractionEvent[]\n navigations: NavigationEvent[]\n screenshots: ScreenshotEvent[]\n startTime: string\n endTime: string\n duration: number\n}\n\nexport default function ReplayClient() {\n const [replayData, setReplayData] = useState<ReplayData | null>(null)\n const [loading, setLoading] = useState(false)\n const [selectedTimeRange, _setSelectedTimeRange] = useState<{\n start: string\n end: string\n } | null>(null)\n const [playbackSpeed, setPlaybackSpeed] = useState(1)\n const [isPlaying, setIsPlaying] = useState(false)\n const [currentEventIndex, setCurrentEventIndex] = useState(0)\n\n const loadReplayData = useCallback(async () => {\n setLoading(true)\n try {\n const params = new URLSearchParams({ action: \"parse\" })\n if (selectedTimeRange) {\n params.set(\"startTime\", selectedTimeRange.start)\n params.set(\"endTime\", selectedTimeRange.end)\n }\n\n const response = await fetch(`/api/replay?${params}`)\n const data = await response.json()\n\n if (response.ok) {\n setReplayData(data)\n } else {\n console.error(\"Failed to load replay data:\", data.error)\n }\n } catch (error) {\n console.error(\"Error loading replay data:\", error)\n }\n setLoading(false)\n }, [selectedTimeRange])\n\n useEffect(() => {\n loadReplayData()\n }, [loadReplayData])\n\n const allEvents = replayData\n ? [\n ...replayData.interactions.map((i) => ({ ...i, eventType: \"interaction\" as const })),\n ...replayData.navigations.map((n) => ({ ...n, eventType: \"navigation\" as const }))\n ].sort((a, b) => new Date(a.timestamp).getTime() - new Date(b.timestamp).getTime())\n : []\n\n const formatTimestamp = (timestamp: string) => {\n return new Date(timestamp).toLocaleTimeString()\n }\n\n const formatDuration = (ms: number) => {\n const seconds = Math.floor(ms / 1000)\n const minutes = Math.floor(seconds / 60)\n return `${minutes}m ${seconds % 60}s`\n }\n\n const startReplay = async () => {\n if (!replayData) return\n\n setIsPlaying(true)\n setCurrentEventIndex(0)\n\n // This is a simplified preview - in a full implementation,\n // this would actually control a browser session\n for (let i = 0; i < allEvents.length; i++) {\n if (!isPlaying) break\n\n setCurrentEventIndex(i)\n\n const event = allEvents[i]\n const nextEvent = allEvents[i + 1]\n\n if (nextEvent) {\n const currentTime = new Date(event.timestamp).getTime()\n const nextTime = new Date(nextEvent.timestamp).getTime()\n const delay = (nextTime - currentTime) / playbackSpeed\n\n await new Promise((resolve) => setTimeout(resolve, Math.min(delay, 5000))) // Cap at 5s\n }\n }\n\n setIsPlaying(false)\n }\n\n const stopReplay = () => {\n setIsPlaying(false)\n }\n\n if (loading) {\n return (\n <div className=\"min-h-screen bg-gray-50 flex items-center justify-center\">\n <div className=\"text-center\">\n <div className=\"inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600\"></div>\n <div className=\"text-gray-500 text-sm mt-4\">Loading replay data...</div>\n </div>\n </div>\n )\n }\n\n return (\n <div className=\"min-h-screen bg-gray-50\">\n <div className=\"bg-white shadow-sm border-b\">\n <div className=\"max-w-7xl mx-auto px-4 py-3\">\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-4\">\n <h1 className=\"text-2xl font-bold text-gray-900\">Session Replay</h1>\n {replayData && (\n <div className=\"flex items-center gap-4 text-sm text-gray-600\">\n <span>{replayData.interactions.length} interactions</span>\n <span>{replayData.navigations.length} navigations</span>\n <span>{replayData.screenshots.length} screenshots</span>\n <span>{formatDuration(replayData.duration)} duration</span>\n </div>\n )}\n </div>\n\n <div className=\"flex items-center gap-2\">\n <select\n value={playbackSpeed}\n onChange={(e) => setPlaybackSpeed(Number(e.target.value))}\n className=\"px-3 py-1 border border-gray-300 rounded text-sm\"\n >\n <option value={0.5}>0.5x</option>\n <option value={1}>1x</option>\n <option value={2}>2x</option>\n <option value={4}>4x</option>\n <option value={8}>8x</option>\n </select>\n\n {!isPlaying ? (\n <button\n type=\"button\"\n onClick={startReplay}\n disabled={!replayData || allEvents.length === 0}\n className=\"px-4 py-2 bg-blue-600 text-white rounded hover:bg-blue-700 disabled:opacity-50 disabled:cursor-not-allowed\"\n >\n ā¶ Play\n </button>\n ) : (\n <button\n type=\"button\"\n onClick={stopReplay}\n className=\"px-4 py-2 bg-red-600 text-white rounded hover:bg-red-700\"\n >\n ā¹ Stop\n </button>\n )}\n </div>\n </div>\n </div>\n </div>\n\n <div className=\"max-w-7xl mx-auto px-4 py-6\">\n {!replayData ? (\n <div className=\"text-center py-12\">\n <div className=\"text-gray-400 text-lg\">No replay data available</div>\n <div className=\"text-gray-500 text-sm mt-2\">Start using your app to generate interaction data</div>\n </div>\n ) : (\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n {/* Timeline */}\n <div className=\"bg-white rounded-lg shadow-sm border\">\n <div className=\"px-4 py-3 border-b\">\n <h2 className=\"font-semibold text-gray-900\">Event Timeline</h2>\n </div>\n <div className=\"max-h-96 overflow-y-auto\">\n {allEvents.map((event, index) => (\n <div\n key={`${event.timestamp}-${index}`}\n className={`px-4 py-2 border-b last:border-b-0 ${\n index === currentEventIndex ? \"bg-blue-50 border-blue-200\" : \"\"\n }`}\n >\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-2\">\n <span className=\"text-xs font-mono text-gray-500\">{formatTimestamp(event.timestamp)}</span>\n <span\n className={`px-2 py-1 rounded text-xs font-medium ${\n event.eventType === \"navigation\"\n ? \"bg-purple-100 text-purple-800\"\n : event.type === \"CLICK\"\n ? \"bg-green-100 text-green-800\"\n : event.type === \"SCROLL\"\n ? \"bg-yellow-100 text-yellow-800\"\n : \"bg-gray-100 text-gray-800\"\n }`}\n >\n {event.eventType === \"navigation\" ? \"NAV\" : event.type}\n </span>\n </div>\n {isPlaying && index === currentEventIndex && (\n <div className=\"w-2 h-2 bg-blue-500 rounded-full animate-pulse\"></div>\n )}\n </div>\n <div className=\"mt-1 text-sm text-gray-700\">\n {event.eventType === \"navigation\" ? (\n <span>ā {event.url}</span>\n ) : event.type === \"CLICK\" || event.type === \"TAP\" ? (\n <span>\n ({event.x}, {event.y}) on {event.target}\n </span>\n ) : event.type === \"SCROLL\" ? (\n <span>\n {event.direction} {event.distance}px to ({event.x}, {event.y})\n </span>\n ) : event.type === \"KEY\" ? (\n <span>\n \"{event.key}\" in {event.target}\n </span>\n ) : (\n <span>{JSON.stringify(event)}</span>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n\n {/* Screenshots */}\n <div className=\"bg-white rounded-lg shadow-sm border\">\n <div className=\"px-4 py-3 border-b\">\n <h2 className=\"font-semibold text-gray-900\">Screenshots</h2>\n </div>\n <div className=\"max-h-96 overflow-y-auto\">\n {replayData.screenshots.map((screenshot, index) => (\n <div\n key={`${screenshot.timestamp}-${screenshot.event}-${index}`}\n className=\"px-4 py-2 border-b last:border-b-0\"\n >\n <div className=\"flex items-center justify-between mb-2\">\n <span className=\"text-xs font-mono text-gray-500\">{formatTimestamp(screenshot.timestamp)}</span>\n <span className=\"text-xs text-gray-600\">{screenshot.event}</span>\n </div>\n <Image\n src={screenshot.url}\n alt={`Screenshot: ${screenshot.event}`}\n width={400}\n height={200}\n className=\"w-full rounded border\"\n style={{ maxHeight: \"200px\", objectFit: \"contain\" }}\n />\n </div>\n ))}\n </div>\n </div>\n </div>\n )}\n </div>\n </div>\n )\n}\n"],"names":["process","env","NEXT_RUNTIME","module","exports","require","__NEXT_EXPERIMENTAL_REACT","NODE_ENV","TURBOPACK","vendored","ReactJsxRuntime","React","ReactDOM"],"mappings":"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","ignoreList":[0,1,2,3]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},56704,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},32319,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},20635,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/action-async-storage.external.js",()=>require("next/dist/server/app-render/action-async-storage.external.js"))},24725,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},43285,(a,b,c)=>{b.exports=a.x("next/dist/server/app-render/dynamic-access-async-storage.external.js",()=>require("next/dist/server/app-render/dynamic-access-async-storage.external.js"))},12988,(a,b,c)=>{"use strict";b.exports=a.r(18622)},66755,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored["react-ssr"].ReactJsxRuntime},56541,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored["react-ssr"].React},54770,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored["react-ssr"].ReactDOM},38344,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored.contexts.AppRouterContext},8054,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored.contexts.HooksClientContext},35446,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored.contexts.ServerInsertedHtml},62889,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"HandleISRError",{enumerable:!0,get:function(){return e}});let d=a.r(56704).workAsyncStorage;function e(a){let{error:b}=a;if(d){let a=d.getStore();if((null==a?void 0:a.isRevalidate)||(null==a?void 0:a.isStaticGeneration))throw b&&console.error(b),b}return null}("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)},1516,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"default",{enumerable:!0,get:function(){return g}});let d=a.r(66755),e=a.r(62889),f={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},text:{fontSize:"14px",fontWeight:400,lineHeight:"28px",margin:"0 8px"}},g=function(a){let{error:b}=a,c=null==b?void 0:b.digest;return(0,d.jsxs)("html",{id:"__next_error__",children:[(0,d.jsx)("head",{}),(0,d.jsxs)("body",{children:[(0,d.jsx)(e.HandleISRError,{error:b}),(0,d.jsx)("div",{style:f.error,children:(0,d.jsxs)("div",{children:[(0,d.jsxs)("h2",{style:f.text,children:["Application error: a ",c?"server":"client","-side exception has occurred while loading ",window.location.hostname," (see the"," ",c?"server logs":"browser console"," for more information)."]}),c?(0,d.jsx)("p",{style:f.text,children:"Digest: "+c}):null]})})]})]})};("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=%5Broot-of-the-server%5D__9197e6d6._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/module.compiled.js","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-dom.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/contexts/app-router-context.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/contexts/hooks-client-context.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/contexts/server-inserted-html.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/client/components/handle-isr-error.tsx","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/client/components/builtin/global-error.tsx"],"sourcesContent":["if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-page/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.prod.js')\n }\n }\n }\n}\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactJsxRuntime\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.React\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactDOM\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].AppRouterContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].HooksClientContext\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['contexts'].ServerInsertedHtml\n","const workAsyncStorage =\n typeof window === 'undefined'\n ? (\n require('../../server/app-render/work-async-storage.external') as typeof import('../../server/app-render/work-async-storage.external')\n ).workAsyncStorage\n : undefined\n\n// if we are revalidating we want to re-throw the error so the\n// function crashes so we can maintain our previous cache\n// instead of caching the error page\nexport function HandleISRError({ error }: { error: any }) {\n if (workAsyncStorage) {\n const store = workAsyncStorage.getStore()\n if (store?.isRevalidate || store?.isStaticGeneration) {\n if (error) {\n console.error(error)\n }\n throw error\n }\n }\n\n return null\n}\n","'use client'\n\nimport { HandleISRError } from '../handle-isr-error'\n\nconst styles = {\n error: {\n // https://github.com/sindresorhus/modern-normalize/blob/main/modern-normalize.css#L38-L52\n fontFamily:\n 'system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"',\n height: '100vh',\n textAlign: 'center',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n },\n text: {\n fontSize: '14px',\n fontWeight: 400,\n lineHeight: '28px',\n margin: '0 8px',\n },\n} as const\n\nexport type GlobalErrorComponent = React.ComponentType<{\n error: any\n}>\nfunction DefaultGlobalError({ error }: { error: any }) {\n const digest: string | undefined = error?.digest\n return (\n <html id=\"__next_error__\">\n <head></head>\n <body>\n <HandleISRError error={error} />\n <div style={styles.error}>\n <div>\n <h2 style={styles.text}>\n Application error: a {digest ? 'server' : 'client'}-side exception\n has occurred while loading {window.location.hostname} (see the{' '}\n {digest ? 'server logs' : 'browser console'} for more\n information).\n </h2>\n {digest ? <p style={styles.text}>{`Digest: ${digest}`}</p> : null}\n </div>\n </div>\n </body>\n </html>\n )\n}\n\n// Exported so that the import signature in the loaders can be identical to user\n// supplied custom global error signatures.\nexport default DefaultGlobalError\n"],"names":["process","env","NEXT_RUNTIME","module","exports","require","__NEXT_EXPERIMENTAL_REACT","NODE_ENV","TURBOPACK","vendored","ReactJsxRuntime","React","ReactDOM","AppRouterContext","HooksClientContext","ServerInsertedHtml","HandleISRError","workAsyncStorage","window","undefined","error","store","getStore","isRevalidate","isStaticGeneration","console","styles","fontFamily","height","textAlign","display","flexDirection","alignItems","justifyContent","text","fontSize","fontWeight","lineHeight","margin","DefaultGlobalError","digest","html","id","head","body","div","style","h2","location","hostname","p"],"mappings":"2kCA0BQG,EAAOC,OAAO,CAAGC,EAAQ,CAAA,CAAA,IAAA,gCC1BjCF,GAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRI,QAAQ,CAAC,YAAY,CAAEC,eAAe,+BCFxCP,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRI,QAAQ,CAAC,YAAY,CAAEE,KAAK,+BCF9BR,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRI,QAAQ,CAAC,YAAY,CAAEG,QAAQ,+BCFjCT,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRI,QAAQ,CAAC,QAAW,CAACI,gBAAgB,8BCFvCV,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRI,QAAQ,CAAC,QAAW,CAACK,kBAAkB,+BCFzCX,EAAOC,OAAO,CACZC,EAAQ,CAAA,CAAA,IAAA,GACRI,QAAQ,CAAC,QAAW,CAACM,kBAAkB,wGCQzBC,iBAAAA,qCAAAA,KAVhB,IAAMC,EAGEZ,EAAQ,CAAA,CAAA,IAAA,GACRY,MAHN,OAAOC,GAGe,CAMjB,EALDC,KAJc,EASJH,EAAe,CAAyB,EAAzB,GAAA,OAAEI,CAAK,CAAkB,CAAzB,EAC7B,GAAIH,EAAkB,CACpB,IAAMI,EAAQJ,EAAiBK,QAAQ,GACvC,GAAID,CAAAA,QAAAA,KAAAA,EAAAA,EAAOE,YAAAA,AAAY,IAAIF,CAAJ,KAAIA,EAAAA,KAAAA,EAAAA,EAAOG,kBAAAA,AAAkB,EAIlD,CAJoD,KAChDJ,GACFK,IADS,IACDL,KAAK,CAACA,GAEVA,CAEV,CAEA,OAAO,IACT,8TC8BA,OADA,AADA,GAEA,qCAAA,GAD2C,uBAjDZ,CAAA,CAAA,IAAA,GAEzBM,EAAS,CACbN,EA6C8E,IA7CvE,CAELO,WACE,8FACFC,OAAQ,QACRC,UAAW,SACXC,QAAS,OACTC,cAAe,SACfC,WAAY,SACZC,eAAgB,QAClB,EACAC,KAAM,CACJC,SAAU,OACVC,WAAY,IACZC,WAAY,OACZC,OAAQ,OACV,CACF,EA8BA,EAzBA,SAASC,AAAmB,AAyBbA,CAzBsC,EAAzB,GAAA,CAAEnB,OAAK,CAAkB,CAAzB,EACpBoB,EAA6BpB,MAAAA,EAAAA,KAAAA,EAAAA,EAAOoB,MAAM,CAChD,MACE,CADF,AACE,EAAA,EAAA,IAAA,EAACC,CADH,MACGA,CAAKC,GAAG,2BACP,CAAA,EAAA,EAAA,GAAA,EAACC,OAAAA,CAAAA,GACD,CAAA,EAAA,EAAA,IAAA,EAACC,OAAAA,WACC,CAAA,EAAA,EAAA,GAAA,EAAC5B,EAAAA,cAAc,CAAA,CAACI,MAAOA,IACvB,CAAA,EAAA,EAAA,GAAA,EAACyB,MAAAA,CAAIC,MAAOpB,EAAON,KAAK,UACtB,CAAA,EAAA,EAAA,IAAA,EAACyB,CAAD,KAACA,WACC,CAAA,EAAA,EAAA,IAAA,EAACE,KAAAA,CAAGD,MAAOpB,EAAOQ,IAAI,WAAE,wBACAM,EAAS,SAAW,SAAS,8CACvBtB,OAAO8B,QAAQ,CAACC,QAAQ,CAAC,YAAU,IAC9DT,EAAS,cAAgB,kBAAkB,6BAG7CA,EAAS,CAAA,EAAA,EAAA,EAATA,CAAS,EAACU,IAAAA,CAAEJ,GAAZN,GAAmBd,EAAOQ,IAAI,UAAI,WAAUM,IAAgB,eAMzE","ignoreList":[0,1,2,3,4,5,6,7,8]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports=[18622,(a,b,c)=>{b.exports=a.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},12988,(a,b,c)=>{"use strict";b.exports=a.r(18622)},66755,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored["react-ssr"].ReactJsxRuntime},56541,(a,b,c)=>{"use strict";b.exports=a.r(12988).vendored["react-ssr"].React},60350,a=>{"use strict";var b=a.i(66755),c=a.i(56541);function d(){let[a,d]=(0,c.useState)(null),[e,f]=(0,c.useState)(!0);return(0,c.useEffect)(()=>{fetch("/api/health").then(a=>a.json()).then(a=>{d(a),f(!1)}).catch(()=>{f(!1)})},[]),(0,b.jsxs)("div",{className:"min-h-screen bg-gray-50 flex items-center justify-center p-4",children:[(0,b.jsx)("a",{href:"https://github.com/vercel-labs/dev3000",target:"_blank",rel:"noopener noreferrer",className:"fixed top-4 right-4 text-gray-600 hover:text-gray-900 transition-colors",title:"View on GitHub",children:(0,b.jsx)("svg",{className:"w-6 h-6",fill:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{d:"M12 0C5.374 0 0 5.373 0 12 0 17.302 3.438 21.8 8.207 23.387c.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z"})})}),(0,b.jsxs)("div",{className:"bg-white rounded-lg shadow-lg p-8 max-w-2xl w-full",children:[(0,b.jsxs)("div",{className:"text-center mb-8",children:[(0,b.jsx)("h1",{className:"text-3xl font-bold text-gray-900 mb-2",children:"šÆ dev3000"}),(0,b.jsx)("p",{className:"text-gray-600",children:"AI-powered development monitoring"})]}),(0,b.jsxs)("div",{className:"mb-8 p-4 bg-gray-50 rounded-lg",children:[(0,b.jsxs)("h2",{className:"text-lg font-semibold mb-3 flex items-center",children:[e?"ā³":a?.status==="healthy"?"ā
":"ā",(0,b.jsx)("span",{className:"ml-2",children:"Server Status"})]}),e?(0,b.jsx)("p",{className:"text-gray-600",children:"Checking health..."}):a?(0,b.jsxs)("div",{className:"space-y-2 text-sm",children:[(0,b.jsxs)("p",{children:[(0,b.jsx)("span",{className:"font-medium",children:"Status:"})," ",a.status]}),(0,b.jsxs)("p",{children:[(0,b.jsx)("span",{className:"font-medium",children:"Version:"})," ",a.version]}),(0,b.jsxs)("p",{children:[(0,b.jsx)("span",{className:"font-medium",children:"Log File:"})," ",a.logFile.exists?"ā
":"ā"," ",a.logFile.path]})]}):(0,b.jsx)("p",{className:"text-red-600",children:"Failed to get health status"})]}),(0,b.jsx)("div",{className:"space-y-4 mb-8",children:(0,b.jsx)("a",{href:"/logs",className:"block w-full bg-blue-500 text-white text-center py-3 px-4 rounded hover:bg-blue-600 transition-colors",children:"š View Development Logs"})}),(0,b.jsxs)("div",{className:"border-t pt-6",children:[(0,b.jsxs)("h2",{className:"text-lg font-semibold mb-4 flex items-center",children:["š¤ ",(0,b.jsx)("span",{className:"ml-2",children:"MCP Integration"})]}),(0,b.jsxs)("div",{className:"bg-blue-50 p-4 rounded-lg mb-4",children:[(0,b.jsxs)("p",{className:"text-sm text-blue-800 mb-2",children:[(0,b.jsx)("span",{className:"font-medium",children:"Endpoint:"}),(0,b.jsxs)("code",{className:"bg-blue-100 px-2 py-1 rounded text-xs ml-2",children:["http://localhost:","3684","/api/mcp/mcp"]})]}),(0,b.jsx)("p",{className:"text-xs text-blue-600",children:"Use HTTP transport (not stdio) when configuring MCP clients"})]}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)("h3",{className:"font-medium text-gray-900",children:"Configure AI Tools:"}),(0,b.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[(0,b.jsxs)("a",{href:"https://github.com/vercel-labs/dev3000#claude-desktop",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-between p-3 border rounded hover:bg-gray-50 transition-colors text-sm",children:[(0,b.jsx)("span",{children:"Claude Desktop"}),(0,b.jsx)("span",{className:"text-gray-400",children:"ā"})]}),(0,b.jsxs)("a",{href:"https://github.com/vercel-labs/dev3000#mcp-clients",target:"_blank",rel:"noopener noreferrer",className:"flex items-center justify-between p-3 border rounded hover:bg-gray-50 transition-colors text-sm",children:[(0,b.jsx)("span",{children:"Other MCP Clients"}),(0,b.jsx)("span",{className:"text-gray-400",children:"ā"})]})]})]})]}),(0,b.jsxs)("div",{className:"mt-8 text-sm text-gray-600 text-center border-t pt-6",children:[(0,b.jsx)("p",{children:"Real-time development monitoring with visual context"}),(0,b.jsx)("p",{className:"mt-1",children:"Server logs + Browser events + Screenshots + AI debugging"})]})]})]})}a.s(["default",()=>d])}];
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__b732be1d._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/module.compiled.js","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react-jsx-runtime.ts","turbopack:///[project]/node_modules/.pnpm/next@15.5.1-canary.30_babel-plugin-react-compiler@19.1.0-rc.3_react-dom@19.2.0-canary-d_5eea965284f26eb4e30482e6426df099/node_modules/next/src/server/route-modules/app-page/vendored/ssr/react.ts","turbopack:///[project]/app/page.tsx"],"sourcesContent":["if (process.env.NEXT_RUNTIME === 'edge') {\n module.exports = require('next/dist/server/route-modules/app-page/module.js')\n} else {\n if (process.env.__NEXT_EXPERIMENTAL_REACT) {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo-experimental.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page-experimental.runtime.prod.js')\n }\n }\n } else {\n if (process.env.NODE_ENV === 'development') {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.dev.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.dev.js')\n }\n } else {\n if (process.env.TURBOPACK) {\n module.exports = require('next/dist/compiled/next-server/app-page-turbo.runtime.prod.js')\n } else {\n module.exports = require('next/dist/compiled/next-server/app-page.runtime.prod.js')\n }\n }\n }\n}\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.ReactJsxRuntime\n","module.exports = (\n require('../../module.compiled') as typeof import('../../module.compiled')\n).vendored['react-ssr']!.React\n","\"use client\"\n\nimport { useEffect, useState } from \"react\"\n\ninterface HealthStatus {\n status: string\n timestamp: string\n mcpEndpoint: string\n logFile: {\n path: string\n exists: boolean\n }\n version: string\n}\n\nexport default function HomePage() {\n const [health, setHealth] = useState<HealthStatus | null>(null)\n const [loading, setLoading] = useState(true)\n\n useEffect(() => {\n fetch(\"/api/health\")\n .then((res) => res.json())\n .then((data) => {\n setHealth(data)\n setLoading(false)\n })\n .catch(() => {\n setLoading(false)\n })\n }, [])\n\n return (\n <div className=\"min-h-screen bg-gray-50 flex items-center justify-center p-4\">\n <a\n href=\"https://github.com/vercel-labs/dev3000\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"fixed top-4 right-4 text-gray-600 hover:text-gray-900 transition-colors\"\n title=\"View on GitHub\"\n >\n <svg className=\"w-6 h-6\" fill=\"currentColor\" viewBox=\"0 0 24 24\">\n <path d=\"M12 0C5.374 0 0 5.373 0 12 0 17.302 3.438 21.8 8.207 23.387c.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23A11.509 11.509 0 0112 5.803c1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576C20.566 21.797 24 17.3 24 12c0-6.627-5.373-12-12-12z\" />\n </svg>\n </a>\n\n <div className=\"bg-white rounded-lg shadow-lg p-8 max-w-2xl w-full\">\n <div className=\"text-center mb-8\">\n <h1 className=\"text-3xl font-bold text-gray-900 mb-2\">šÆ dev3000</h1>\n <p className=\"text-gray-600\">AI-powered development monitoring</p>\n </div>\n\n {/* Health Status */}\n <div className=\"mb-8 p-4 bg-gray-50 rounded-lg\">\n <h2 className=\"text-lg font-semibold mb-3 flex items-center\">\n {loading ? \"ā³\" : health?.status === \"healthy\" ? \"ā
\" : \"ā\"}\n <span className=\"ml-2\">Server Status</span>\n </h2>\n {loading ? (\n <p className=\"text-gray-600\">Checking health...</p>\n ) : health ? (\n <div className=\"space-y-2 text-sm\">\n <p>\n <span className=\"font-medium\">Status:</span> {health.status}\n </p>\n <p>\n <span className=\"font-medium\">Version:</span> {health.version}\n </p>\n <p>\n <span className=\"font-medium\">Log File:</span> {health.logFile.exists ? \"ā
\" : \"ā\"}{\" \"}\n {health.logFile.path}\n </p>\n </div>\n ) : (\n <p className=\"text-red-600\">Failed to get health status</p>\n )}\n </div>\n\n {/* Navigation */}\n <div className=\"space-y-4 mb-8\">\n <a\n href=\"/logs\"\n className=\"block w-full bg-blue-500 text-white text-center py-3 px-4 rounded hover:bg-blue-600 transition-colors\"\n >\n š View Development Logs\n </a>\n </div>\n\n {/* MCP Configuration */}\n <div className=\"border-t pt-6\">\n <h2 className=\"text-lg font-semibold mb-4 flex items-center\">\n š¤ <span className=\"ml-2\">MCP Integration</span>\n </h2>\n\n <div className=\"bg-blue-50 p-4 rounded-lg mb-4\">\n <p className=\"text-sm text-blue-800 mb-2\">\n <span className=\"font-medium\">Endpoint:</span>\n <code className=\"bg-blue-100 px-2 py-1 rounded text-xs ml-2\">\n http://localhost:{typeof window !== \"undefined\" ? window.location.port : \"3684\"}/api/mcp/mcp\n </code>\n </p>\n <p className=\"text-xs text-blue-600\">Use HTTP transport (not stdio) when configuring MCP clients</p>\n </div>\n\n <div className=\"space-y-3\">\n <h3 className=\"font-medium text-gray-900\">Configure AI Tools:</h3>\n <div className=\"grid grid-cols-1 md:grid-cols-2 gap-3\">\n <a\n href=\"https://github.com/vercel-labs/dev3000#claude-desktop\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center justify-between p-3 border rounded hover:bg-gray-50 transition-colors text-sm\"\n >\n <span>Claude Desktop</span>\n <span className=\"text-gray-400\">ā</span>\n </a>\n <a\n href=\"https://github.com/vercel-labs/dev3000#mcp-clients\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex items-center justify-between p-3 border rounded hover:bg-gray-50 transition-colors text-sm\"\n >\n <span>Other MCP Clients</span>\n <span className=\"text-gray-400\">ā</span>\n </a>\n </div>\n </div>\n </div>\n\n <div className=\"mt-8 text-sm text-gray-600 text-center border-t pt-6\">\n <p>Real-time development monitoring with visual context</p>\n <p className=\"mt-1\">Server logs + Browser events + Screenshots + AI debugging</p>\n </div>\n </div>\n </div>\n )\n}\n"],"names":["process","env","NEXT_RUNTIME","module","exports","require","__NEXT_EXPERIMENTAL_REACT","NODE_ENV","TURBOPACK","vendored","ReactJsxRuntime","React"],"mappings":"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","ignoreList":[0,1,2]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
module.exports=[44675,(a,b,c)=>{"use strict";function d(a){return Array.isArray(a)?a[1]:a}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"getSegmentValue",{enumerable:!0,get:function(){return d}}),("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)},13195,(a,b,c)=>{"use strict";function d(a){return"("===a[0]&&a.endsWith(")")}function e(a){return a.startsWith("@")&&"@children"!==a}function f(a,b){if(a.includes(g)){let a=JSON.stringify(b);return"{}"!==a?g+"?"+a:g}return a}Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{DEFAULT_SEGMENT_KEY:function(){return h},PAGE_SEGMENT_KEY:function(){return g},addSearchParamsIfPageSegment:function(){return f},isGroupSegment:function(){return d},isParallelRouteSegment:function(){return e}});let g="__PAGE__",h="__DEFAULT__"},57792,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"RedirectStatusCode",{enumerable:!0,get:function(){return d}});var d=function(a){return a[a.SeeOther=303]="SeeOther",a[a.TemporaryRedirect=307]="TemporaryRedirect",a[a.PermanentRedirect=308]="PermanentRedirect",a}({});("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)},47611,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{REDIRECT_ERROR_CODE:function(){return e},RedirectType:function(){return f},isRedirectError:function(){return g}});let d=a.r(57792),e="NEXT_REDIRECT";var f=function(a){return a.push="push",a.replace="replace",a}({});function g(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let b=a.digest.split(";"),[c,f]=b,g=b.slice(2,-2).join(";"),h=Number(b.at(-2));return c===e&&("replace"===f||"push"===f)&&"string"==typeof g&&!isNaN(h)&&h in d.RedirectStatusCode}("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)},44262,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{getRedirectError:function(){return g},getRedirectStatusCodeFromError:function(){return l},getRedirectTypeFromError:function(){return k},getURLFromRedirectError:function(){return j},permanentRedirect:function(){return i},redirect:function(){return h}});let d=a.r(57792),e=a.r(47611),f=a.r(20635).actionAsyncStorage;function g(a,b,c){void 0===c&&(c=d.RedirectStatusCode.TemporaryRedirect);let f=Object.defineProperty(Error(e.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return f.digest=e.REDIRECT_ERROR_CODE+";"+b+";"+a+";"+c+";",f}function h(a,b){var c;throw null!=b||(b=(null==f||null==(c=f.getStore())?void 0:c.isAction)?e.RedirectType.push:e.RedirectType.replace),g(a,b,d.RedirectStatusCode.TemporaryRedirect)}function i(a,b){throw void 0===b&&(b=e.RedirectType.replace),g(a,b,d.RedirectStatusCode.PermanentRedirect)}function j(a){return(0,e.isRedirectError)(a)?a.digest.split(";").slice(2,-2).join(";"):null}function k(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return a.digest.split(";",2)[1]}function l(a){if(!(0,e.isRedirectError)(a))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(a.digest.split(";").at(-2))}("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)},84072,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{HTTPAccessErrorStatus:function(){return d},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return f},getAccessFallbackErrorTypeByStatus:function(){return i},getAccessFallbackHTTPStatus:function(){return h},isHTTPAccessFallbackError:function(){return g}});let d={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},e=new Set(Object.values(d)),f="NEXT_HTTP_ERROR_FALLBACK";function g(a){if("object"!=typeof a||null===a||!("digest"in a)||"string"!=typeof a.digest)return!1;let[b,c]=a.digest.split(";");return b===f&&e.has(Number(c))}function h(a){return Number(a.digest.split(";")[1])}function i(a){switch(a){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("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)},97299,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"notFound",{enumerable:!0,get:function(){return e}});let d=""+a.r(84072).HTTP_ERROR_FALLBACK_ERROR_CODE+";404";function e(){let a=Object.defineProperty(Error(d),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw a.digest=d,a}("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)},47592,(a,b,c)=>{"use strict";function d(){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})}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"forbidden",{enumerable:!0,get:function(){return d}}),a.r(84072).HTTP_ERROR_FALLBACK_ERROR_CODE,("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)},65429,(a,b,c)=>{"use strict";function d(){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})}Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unauthorized",{enumerable:!0,get:function(){return d}}),a.r(84072).HTTP_ERROR_FALLBACK_ERROR_CODE,("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)},47697,(a,b,c)=>{"use strict";function d(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===e}Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{isHangingPromiseRejectionError:function(){return d},makeDevtoolsIOAwarePromise:function(){return j},makeHangingPromise:function(){return h}});let e="HANGING_PROMISE_REJECTION";class f extends Error{constructor(a,b){super(`During prerendering, ${b} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${b} to a different context by using \`setTimeout\`, \`after\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route "${a}".`),this.route=a,this.expression=b,this.digest=e}}let g=new WeakMap;function h(a,b,c){if(a.aborted)return Promise.reject(new f(b,c));{let d=new Promise((d,e)=>{let h=e.bind(null,new f(b,c)),i=g.get(a);if(i)i.push(h);else{let b=[h];g.set(a,b),a.addEventListener("abort",()=>{for(let a=0;a<b.length;a++)b[a]()},{once:!0})}});return d.catch(i),d}}function i(){}function j(a){return new Promise(b=>{setTimeout(()=>{b(a)},0)})}},19922,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isPostpone",{enumerable:!0,get:function(){return e}});let d=Symbol.for("react.postpone");function e(a){return"object"==typeof a&&null!==a&&a.$$typeof===d}},12486,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{BailoutToCSRError:function(){return e},isBailoutToCSRError:function(){return f}});let d="BAILOUT_TO_CLIENT_SIDE_RENDERING";class e extends Error{constructor(a){super("Bail out to client-side rendering: "+a),this.reason=a,this.digest=d}}function f(a){return"object"==typeof a&&null!==a&&"digest"in a&&a.digest===d}},59173,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"isNextRouterError",{enumerable:!0,get:function(){return f}});let d=a.r(84072),e=a.r(47611);function f(a){return(0,e.isRedirectError)(a)||(0,d.isHTTPAccessFallbackError)(a)}("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)},52118,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{DynamicServerError:function(){return e},isDynamicServerError:function(){return f}});let d="DYNAMIC_SERVER_USAGE";class e extends Error{constructor(a){super("Dynamic server usage: "+a),this.description=a,this.digest=d}}function f(a){return"object"==typeof a&&null!==a&&"digest"in a&&"string"==typeof a.digest&&a.digest===d}("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)},67491,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{StaticGenBailoutError:function(){return e},isStaticGenBailoutError:function(){return f}});let d="NEXT_STATIC_GEN_BAILOUT";class e extends Error{constructor(...a){super(...a),this.code=d}}function f(a){return"object"==typeof a&&null!==a&&"code"in a&&a.code===d}("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)},15875,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{METADATA_BOUNDARY_NAME:function(){return d},OUTLET_BOUNDARY_NAME:function(){return f},ROOT_LAYOUT_BOUNDARY_NAME:function(){return g},VIEWPORT_BOUNDARY_NAME:function(){return e}});let d="__next_metadata_boundary__",e="__next_viewport_boundary__",f="__next_outlet_boundary__",g="__next_root_layout_boundary__"},562,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{atLeastOneTask:function(){return f},scheduleImmediate:function(){return e},scheduleOnNextTick:function(){return d},waitAtLeastOneReactRenderTask:function(){return g}});let d=a=>{Promise.resolve().then(()=>{process.nextTick(a)})},e=a=>{setImmediate(a)};function f(){return new Promise(a=>e(a))}function g(){return new Promise(a=>setImmediate(a))}},53636,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"InvariantError",{enumerable:!0,get:function(){return d}});class d extends Error{constructor(a,b){super("Invariant: "+(a.endsWith(".")?a:a+".")+" This is a bug in Next.js.",b),this.name="InvariantError"}}},37574,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{Postpone:function(){return z},PreludeState:function(){return V},abortAndThrowOnSynchronousRequestDataAccess:function(){return x},abortOnSynchronousPlatformIOAccess:function(){return v},accessedDynamicData:function(){return H},annotateDynamicAccess:function(){return M},consumeDynamicAccess:function(){return I},createDynamicTrackingState:function(){return o},createDynamicValidationState:function(){return p},createHangingInputAbortSignal:function(){return L},createRenderInBrowserAbortSignal:function(){return K},delayUntilRuntimeStage:function(){return Y},formatDynamicAPIAccesses:function(){return J},getFirstDynamicReason:function(){return q},isDynamicPostpone:function(){return C},isPrerenderInterruptedError:function(){return G},logDisallowedDynamicError:function(){return W},markCurrentScopeAsDynamic:function(){return r},postponeWithTracking:function(){return A},throwIfDisallowedDynamic:function(){return X},throwToInterruptStaticGeneration:function(){return s},trackAllowedDynamicAccess:function(){return U},trackDynamicDataInDynamicRender:function(){return t},trackSynchronousPlatformIOAccessInDev:function(){return w},trackSynchronousRequestDataAccessInDev:function(){return y},useDynamicRouteParams:function(){return N},useDynamicSearchParams:function(){return O}});let d=function(a){return a&&a.__esModule?a:{default:a}}(a.r(56541)),e=a.r(52118),f=a.r(67491),g=a.r(32319),h=a.r(56704),i=a.r(47697),j=a.r(15875),k=a.r(562),l=a.r(12486),m=a.r(53636),n="function"==typeof d.default.unstable_postpone;function o(a){return{isDebugDynamicAccesses:a,dynamicAccesses:[],syncDynamicErrorWithStack:null}}function p(){return{hasSuspenseAboveBody:!1,hasDynamicMetadata:!1,hasDynamicViewport:!1,hasAllowedDynamic:!1,dynamicErrors:[]}}function q(a){var b;return null==(b=a.dynamicAccesses[0])?void 0:b.expression}function r(a,b,c){if(b)switch(b.type){case"cache":case"unstable-cache":case"private-cache":return}if(!a.forceDynamic&&!a.forceStatic){if(a.dynamicShouldError)throw Object.defineProperty(new f.StaticGenBailoutError(`Route ${a.route} with \`dynamic = "error"\` couldn't be rendered statically because it used \`${c}\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`),"__NEXT_ERROR_CODE",{value:"E553",enumerable:!1,configurable:!0});if(b)switch(b.type){case"prerender-ppr":return A(a.route,c,b.dynamicTracking);case"prerender-legacy":b.revalidate=0;let d=Object.defineProperty(new e.DynamicServerError(`Route ${a.route} couldn't be rendered statically because it used ${c}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E550",enumerable:!1,configurable:!0});throw a.dynamicUsageDescription=c,a.dynamicUsageStack=d.stack,d}}}function s(a,b,c){let d=Object.defineProperty(new e.DynamicServerError(`Route ${b.route} couldn't be rendered statically because it used \`${a}\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`),"__NEXT_ERROR_CODE",{value:"E558",enumerable:!1,configurable:!0});throw c.revalidate=0,b.dynamicUsageDescription=a,b.dynamicUsageStack=d.stack,d}function t(a){switch(a.type){case"cache":case"unstable-cache":case"private-cache":return}}function u(a,b,c){let d=F(`Route ${a} needs to bail out of prerendering at this point because it used ${b}.`);c.controller.abort(d);let e=c.dynamicTracking;e&&e.dynamicAccesses.push({stack:e.isDebugDynamicAccesses?Error().stack:void 0,expression:b})}function v(a,b,c,d){let e=d.dynamicTracking;u(a,b,d),e&&null===e.syncDynamicErrorWithStack&&(e.syncDynamicErrorWithStack=c)}function w(a){a.prerenderPhase=!1}function x(a,b,c,d){if(!1===d.controller.signal.aborted){u(a,b,d);let e=d.dynamicTracking;e&&null===e.syncDynamicErrorWithStack&&(e.syncDynamicErrorWithStack=c)}throw F(`Route ${a} needs to bail out of prerendering at this point because it used ${b}.`)}let y=w;function z({reason:a,route:b}){let c=g.workUnitAsyncStorage.getStore();A(b,a,c&&"prerender-ppr"===c.type?c.dynamicTracking:null)}function A(a,b,c){(function(){if(!n)throw Object.defineProperty(Error("Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E224",enumerable:!1,configurable:!0})})(),c&&c.dynamicAccesses.push({stack:c.isDebugDynamicAccesses?Error().stack:void 0,expression:b}),d.default.unstable_postpone(B(a,b))}function B(a,b){return`Route ${a} needs to bail out of prerendering at this point because it used ${b}. React throws this special object to indicate where. It should not be caught by your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`}function C(a){return"object"==typeof a&&null!==a&&"string"==typeof a.message&&D(a.message)}function D(a){return a.includes("needs to bail out of prerendering at this point because it used")&&a.includes("Learn more: https://nextjs.org/docs/messages/ppr-caught-error")}if(!1===D(B("%%%","^^^")))throw Object.defineProperty(Error("Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js"),"__NEXT_ERROR_CODE",{value:"E296",enumerable:!1,configurable:!0});let E="NEXT_PRERENDER_INTERRUPTED";function F(a){let b=Object.defineProperty(Error(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return b.digest=E,b}function G(a){return"object"==typeof a&&null!==a&&a.digest===E&&"name"in a&&"message"in a&&a instanceof Error}function H(a){return a.length>0}function I(a,b){return a.dynamicAccesses.push(...b.dynamicAccesses),a.dynamicAccesses}function J(a){return a.filter(a=>"string"==typeof a.stack&&a.stack.length>0).map(({expression:a,stack:b})=>(b=b.split("\n").slice(4).filter(a=>!(a.includes("node_modules/next/")||a.includes(" (<anonymous>)")||a.includes(" (node:"))).join("\n"),`Dynamic API Usage Debug - ${a}:
|
|
2
|
-
${b}`))}function K(){let a=new AbortController;return a.abort(Object.defineProperty(new l.BailoutToCSRError("Render in Browser"),"__NEXT_ERROR_CODE",{value:"E721",enumerable:!1,configurable:!0})),a.signal}function L(a){switch(a.type){case"prerender":case"prerender-runtime":let b=new AbortController;if(a.cacheSignal)a.cacheSignal.inputReady().then(()=>{b.abort()});else{let c=(0,g.getRuntimeStagePromise)(a);c?c.then(()=>(0,k.scheduleOnNextTick)(()=>b.abort())):(0,k.scheduleOnNextTick)(()=>b.abort())}return b.signal;case"prerender-client":case"prerender-ppr":case"prerender-legacy":case"request":case"cache":case"private-cache":case"unstable-cache":return}}function M(a,b){let c=b.dynamicTracking;c&&c.dynamicAccesses.push({stack:c.isDebugDynamicAccesses?Error().stack:void 0,expression:a})}function N(a){let b=h.workAsyncStorage.getStore(),c=g.workUnitAsyncStorage.getStore();if(b&&c)switch(c.type){case"prerender-client":case"prerender":{let e=c.fallbackRouteParams;e&&e.size>0&&d.default.use((0,i.makeHangingPromise)(c.renderSignal,b.route,a));break}case"prerender-ppr":{let d=c.fallbackRouteParams;if(d&&d.size>0)return A(b.route,a,c.dynamicTracking);break}case"prerender-runtime":throw Object.defineProperty(new m.InvariantError(`\`${a}\` was called during a runtime prerender. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E771",enumerable:!1,configurable:!0});case"cache":case"private-cache":throw Object.defineProperty(new m.InvariantError(`\`${a}\` was called inside a cache scope. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0})}}function O(a){let b=h.workAsyncStorage.getStore(),c=g.workUnitAsyncStorage.getStore();if(b)switch(!c&&(0,g.throwForMissingRequestStore)(a),c.type){case"prerender-client":d.default.use((0,i.makeHangingPromise)(c.renderSignal,b.route,a));break;case"prerender-legacy":case"prerender-ppr":if(b.forceStatic)return;throw Object.defineProperty(new l.BailoutToCSRError(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});case"prerender":case"prerender-runtime":throw Object.defineProperty(new m.InvariantError(`\`${a}\` was called from a Server Component. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E795",enumerable:!1,configurable:!0});case"cache":case"unstable-cache":case"private-cache":throw Object.defineProperty(new m.InvariantError(`\`${a}\` was called inside a cache scope. Next.js should be preventing ${a} from being included in server components statically, but did not in this case.`),"__NEXT_ERROR_CODE",{value:"E745",enumerable:!1,configurable:!0});case"request":return}}let P=/\n\s+at Suspense \(<anonymous>\)/,Q=RegExp(`\\n\\s+at Suspense \\(<anonymous>\\)(?:(?!\\n\\s+at (?:body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6) \\(<anonymous>\\))[\\s\\S])*?\\n\\s+at ${j.ROOT_LAYOUT_BOUNDARY_NAME} \\([^\\n]*\\)`),R=RegExp(`\\n\\s+at ${j.METADATA_BOUNDARY_NAME}[\\n\\s]`),S=RegExp(`\\n\\s+at ${j.VIEWPORT_BOUNDARY_NAME}[\\n\\s]`),T=RegExp(`\\n\\s+at ${j.OUTLET_BOUNDARY_NAME}[\\n\\s]`);function U(a,b,c,d){if(!T.test(b)){if(R.test(b)){c.hasDynamicMetadata=!0;return}if(S.test(b)){c.hasDynamicViewport=!0;return}if(Q.test(b)){c.hasAllowedDynamic=!0,c.hasSuspenseAboveBody=!0;return}else if(P.test(b)){c.hasAllowedDynamic=!0;return}else{if(d.syncDynamicErrorWithStack)return void c.dynamicErrors.push(d.syncDynamicErrorWithStack);let e=function(a,b){let c=Object.defineProperty(Error(a),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return c.stack=c.name+": "+a+b,c}(`Route "${a.route}": A component accessed data, headers, params, searchParams, or a short-lived cache without a Suspense boundary nor a "use cache" above it. See more info: https://nextjs.org/docs/messages/next-prerender-missing-suspense`,b);return void c.dynamicErrors.push(e)}}}var V=function(a){return a[a.Full=0]="Full",a[a.Empty=1]="Empty",a[a.Errored=2]="Errored",a}({});function W(a,b){console.error(b),a.dev||(a.hasReadableErrorStacks?console.error(`To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \`next dev\`, then open "${a.route}" in your browser to investigate the error.`):console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following:
|
|
3
|
-
- Start the app in development mode by running \`next dev\`, then open "${a.route}" in your browser to investigate the error.
|
|
4
|
-
- Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.`))}function X(a,b,c,d){if(d.syncDynamicErrorWithStack)throw W(a,d.syncDynamicErrorWithStack),new f.StaticGenBailoutError;if(0!==b){if(c.hasSuspenseAboveBody)return;let d=c.dynamicErrors;if(d.length>0){for(let b=0;b<d.length;b++)W(a,d[b]);throw new f.StaticGenBailoutError}if(c.hasDynamicViewport)throw console.error(`Route "${a.route}" has a \`generateViewport\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`),new f.StaticGenBailoutError;if(1===b)throw console.error(`Route "${a.route}" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`),new f.StaticGenBailoutError}else if(!1===c.hasAllowedDynamic&&c.hasDynamicMetadata)throw console.error(`Route "${a.route}" has a \`generateMetadata\` that depends on Request data (\`cookies()\`, etc...) or uncached external data (\`fetch(...)\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`),new f.StaticGenBailoutError}function Y(a,b){return a.runtimeStagePromise?a.runtimeStagePromise.then(()=>b):b}},7054,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unstable_rethrow",{enumerable:!0,get:function(){return function a(b){if((0,g.isNextRouterError)(b)||(0,f.isBailoutToCSRError)(b)||(0,i.isDynamicServerError)(b)||(0,h.isDynamicPostpone)(b)||(0,e.isPostpone)(b)||(0,d.isHangingPromiseRejectionError)(b)||(0,h.isPrerenderInterruptedError)(b))throw b;b instanceof Error&&"cause"in b&&a(b.cause)}}});let d=a.r(47697),e=a.r(19922),f=a.r(12486),g=a.r(59173),h=a.r(37574),i=a.r(52118);("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)},28359,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),Object.defineProperty(c,"unstable_rethrow",{enumerable:!0,get:function(){return d}});let d=a.r(7054).unstable_rethrow;("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)},90110,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{ReadonlyURLSearchParams:function(){return k},RedirectType:function(){return e.RedirectType},forbidden:function(){return g.forbidden},notFound:function(){return f.notFound},permanentRedirect:function(){return d.permanentRedirect},redirect:function(){return d.redirect},unauthorized:function(){return h.unauthorized},unstable_isUnrecognizedActionError:function(){return l},unstable_rethrow:function(){return i.unstable_rethrow}});let d=a.r(44262),e=a.r(47611),f=a.r(97299),g=a.r(47592),h=a.r(65429),i=a.r(28359);class j extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class k extends URLSearchParams{append(){throw new j}delete(){throw new j}set(){throw new j}sort(){throw new j}}function l(){throw Object.defineProperty(Error("`unstable_isUnrecognizedActionError` can only be used on the client."),"__NEXT_ERROR_CODE",{value:"E776",enumerable:!1,configurable:!0})}("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)},65390,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{UnrecognizedActionError:function(){return d},unstable_isUnrecognizedActionError:function(){return e}});class d extends Error{constructor(...a){super(...a),this.name="UnrecognizedActionError"}}function e(a){return!!(a&&"object"==typeof a&&a instanceof d)}("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)},56532,(a,b,c)=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0}),!function(a,b){for(var c in b)Object.defineProperty(a,c,{enumerable:!0,get:b[c]})}(c,{ReadonlyURLSearchParams:function(){return i.ReadonlyURLSearchParams},RedirectType:function(){return i.RedirectType},ServerInsertedHTMLContext:function(){return j.ServerInsertedHTMLContext},forbidden:function(){return i.forbidden},notFound:function(){return i.notFound},permanentRedirect:function(){return i.permanentRedirect},redirect:function(){return i.redirect},unauthorized:function(){return i.unauthorized},unstable_isUnrecognizedActionError:function(){return k.unstable_isUnrecognizedActionError},unstable_rethrow:function(){return i.unstable_rethrow},useParams:function(){return q},usePathname:function(){return o},useRouter:function(){return p},useSearchParams:function(){return n},useSelectedLayoutSegment:function(){return s},useSelectedLayoutSegments:function(){return r},useServerInsertedHTML:function(){return j.useServerInsertedHTML}});let d=a.r(56541),e=a.r(38344),f=a.r(8054),g=a.r(44675),h=a.r(13195),i=a.r(90110),j=a.r(35446),k=a.r(65390),l=a.r(37574).useDynamicRouteParams,m=a.r(37574).useDynamicSearchParams;function n(){null==m||m("useSearchParams()");let a=(0,d.useContext)(f.SearchParamsContext);return(0,d.useMemo)(()=>a?new i.ReadonlyURLSearchParams(a):null,[a])}function o(){return null==l||l("usePathname()"),(0,d.useContext)(f.PathnameContext)}function p(){let a=(0,d.useContext)(e.AppRouterContext);if(null===a)throw Object.defineProperty(Error("invariant expected app router to be mounted"),"__NEXT_ERROR_CODE",{value:"E238",enumerable:!1,configurable:!0});return a}function q(){return null==l||l("useParams()"),(0,d.useContext)(f.PathParamsContext)}function r(a){void 0===a&&(a="children"),null==l||l("useSelectedLayoutSegments()");let b=(0,d.useContext)(e.LayoutRouterContext);return b?function a(b,c,d,e){let f;if(void 0===d&&(d=!0),void 0===e&&(e=[]),d)f=b[1][c];else{var i;let a=b[1];f=null!=(i=a.children)?i:Object.values(a)[0]}if(!f)return e;let j=f[0],k=(0,g.getSegmentValue)(j);return!k||k.startsWith(h.PAGE_SEGMENT_KEY)?e:(e.push(k),a(f,c,!1,e))}(b.parentTree,a):null}function s(a){void 0===a&&(a="children"),null==l||l("useSelectedLayoutSegment()");let b=r(a);if(!b||0===b.length)return null;let c="children"===a?b[0]:b[b.length-1];return c===h.DEFAULT_SEGMENT_KEY?null:c}("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)},93372,(a,b,c)=>{b.exports=a.r(56532)},2573,a=>{"use strict";var b=a.i(66755),c=a.i(10711),d=a.i(93372),e=a.i(56541);function f(a){let b=/\[(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}\.\d{3}Z)\] \[([^\]]+)\] /,c=[],d=a.split("\n"),e=null;for(let a of d){if(!a.trim())continue;let d=a.match(b);if(d){let b,f;e&&c.push(e);let[g,h,i]=d,j=a.substring(g.length),k=/^TAB-\d+\.\d+$/.test(i),l=i,m=j;if(k){b=i;let a=j.match(/^\[([^\]]+)\] /);if(a&&(l=a[1],(m=j.substring(a[0].length)).includes("User-Agent:"))){let a=m.match(/User-Agent: ([^,\n]+)/);a&&(f=a[1])}}let n=m.match(/\[SCREENSHOT\] ([^\s[]+)/)?.[1],o=function(a){let b=a.match(/^\[CONSOLE LOG\] (.+)$/);if(!b)return a;let c=b[1];if(!c.includes("%c"))return a;let d=c;return d=(d=(d=d.replace(/%c/g,"")).replace(/\s+color:\s*[^{}\n]*?(?=\s*[{[]|$)/g,"")).replace(/\s+/g," ").trim(),`[CONSOLE LOG] ${d}`}(m);if((o=o.replace(/ \[PLAYWRIGHT\]$/,"").replace(/ \[CHROME_EXTENSION\]$/,"")).includes("[Network.webSocketFrameSent]")||o.includes("[Network.webSocketFrameReceived]")||o.includes("[Network.webSocketFrame")||o.includes("webSocketDebuggerUrl")&&o.includes("localhost")||o.includes("[NETWORK")&&o.includes("__PAGE__")&&o.includes("refresh")){e=null;continue}e={timestamp:h,source:l,message:o,screenshot:n,original:a,tabIdentifier:b,userAgent:f}}else e&&(e.message+=`
|
|
5
|
-
${a}`,e.original+=`
|
|
6
|
-
${a}`)}return e&&c.push(e),c}function g({url:a,maxLength:c=60}){let[d,f]=(0,e.useState)(!1);if(a.length<=c)return(0,b.jsx)("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-300 underline",children:a});let g=`${a.substring(0,c)}...`;return(0,b.jsx)("span",{className:"inline-block",children:d?(0,b.jsxs)("span",{children:[(0,b.jsx)("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-300 underline",children:a}),(0,b.jsx)("button",{type:"button",onClick:()=>f(!1),className:"ml-2 text-xs text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 px-1 py-0.5 rounded hover:bg-gray-100 dark:hover:bg-gray-700",children:"[collapse]"})]}):(0,b.jsxs)("span",{children:[(0,b.jsx)("a",{href:a,target:"_blank",rel:"noopener noreferrer",className:"text-blue-600 dark:text-blue-400 hover:text-blue-800 dark:hover:text-blue-300 underline",children:g}),(0,b.jsx)("button",{type:"button",onClick:()=>f(!0),className:"ml-1 text-xs text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 px-1 py-0.5 rounded hover:bg-gray-100 dark:hover:bg-gray-700",children:"[expand]"})]})})}function h({content:a}){let[c,d]=(0,e.useState)(!1);try{let e=JSON.parse(a);if(e&&"object"==typeof e&&"object"===e.type&&e.properties){let a=e.properties,f=e.description||"Object",g=e.overflow;return(0,b.jsxs)("div",{className:"inline-block",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>d(!c),className:"inline-flex items-center gap-1 text-blue-600 hover:text-blue-800 font-mono text-sm",children:[(0,b.jsx)("svg",{className:`w-3 h-3 transition-transform ${c?"rotate-90":""}`,fill:"currentColor",viewBox:"0 0 20 20",children:(0,b.jsx)("path",{fillRule:"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 111.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",clipRule:"evenodd"})}),(0,b.jsx)("span",{className:"text-purple-600",children:f}),!c&&(0,b.jsxs)("span",{className:"text-gray-500",children:[g?"...":""," ","{",a.slice(0,3).map((a,c)=>(0,b.jsxs)("span",{children:[c>0&&", ",(0,b.jsx)("span",{className:"text-red-600",children:a.name}),":",(0,b.jsx)("span",{className:"text-blue-600",children:"string"===a.type?`"${a.value}"`:"number"===a.type?a.value:"object"===a.type?"array"===a.subtype?a.value:"{...}":a.value})]},`${a.name}-${c}`)),a.length>3&&", ...","}"]})]}),c&&(0,b.jsx)("div",{className:"mt-1 ml-4 border-l-2 border-gray-200 pl-3",children:(0,b.jsx)("div",{className:"font-mono text-sm",children:(0,b.jsxs)("div",{className:"text-gray-600",children:[f," ","{",(0,b.jsxs)("div",{className:"ml-4",children:[a.map((c,d)=>(0,b.jsxs)("div",{className:"py-0.5",children:[(0,b.jsx)("span",{className:"text-red-600",children:c.name}),(0,b.jsx)("span",{className:"text-gray-500",children:": "}),(0,b.jsx)("span",{className:"string"===c.type?"text-green-600":"number"===c.type?"text-blue-600":"object"===c.type?"text-purple-600":"text-orange-600",children:"string"===c.type?`"${String(c.value)}"`:"number"===c.type?String(c.value):"object"===c.type?"array"===c.subtype?String(c.value):"{...}":String(c.value)}),d<a.length-1&&(0,b.jsx)("span",{className:"text-gray-500",children:","})]},`${c.name}-${d}`)),g&&(0,b.jsx)("div",{className:"text-gray-500 italic",children:"... and more properties"})]}),(0,b.jsx)("div",{className:"text-gray-600",children:"}"})]})})})]})}return(0,b.jsxs)("div",{className:"inline-block",children:[(0,b.jsxs)("button",{type:"button",onClick:()=>d(!c),className:"inline-flex items-center gap-1 text-blue-600 hover:text-blue-800 font-mono text-sm",children:[(0,b.jsx)("svg",{className:`w-3 h-3 transition-transform ${c?"rotate-90":""}`,fill:"currentColor",viewBox:"0 0 20 20",children:(0,b.jsx)("path",{fillRule:"evenodd",d:"M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 111.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z",clipRule:"evenodd"})}),(0,b.jsx)("span",{className:"text-purple-600",children:"Object"}),!c&&(0,b.jsxs)("span",{className:"text-gray-500",children:["{","...","}"]})]}),c&&(0,b.jsx)("div",{className:"mt-1 ml-4 border-l-2 border-gray-200 pl-3",children:(0,b.jsx)("pre",{className:"font-mono text-sm text-gray-700 whitespace-pre-wrap",children:JSON.stringify(e,null,2)})})]})}catch(c){return(0,b.jsx)("span",{children:a})}}function i({entry:a}){var d;let e=(d=a.message).includes("[INTERACTION]")?{type:"INTERACTION",color:"bg-purple-50 dark:bg-purple-900/20 border-purple-200 dark:border-purple-800",tag:"bg-purple-100 dark:bg-purple-800 text-purple-800 dark:text-purple-200"}:d.includes("[CONSOLE ERROR]")?{type:"ERROR",color:"bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-800",tag:"bg-red-100 dark:bg-red-800 text-red-800 dark:text-red-200"}:d.includes("[CONSOLE WARN]")?{type:"WARNING",color:"bg-yellow-50 dark:bg-yellow-900/20 border-yellow-200 dark:border-yellow-800",tag:"bg-yellow-100 dark:bg-yellow-800 text-yellow-800 dark:text-yellow-200"}:d.includes("[SCREENSHOT]")?{type:"SCREENSHOT",color:"bg-blue-50 dark:bg-blue-900/20 border-blue-200 dark:border-blue-800",tag:"bg-blue-100 dark:bg-blue-800 text-blue-800 dark:text-blue-200"}:d.includes("[NAVIGATION]")?{type:"NAVIGATION",color:"bg-indigo-50 dark:bg-indigo-900/20 border-indigo-200 dark:border-indigo-800",tag:"bg-indigo-100 dark:bg-indigo-800 text-indigo-800 dark:text-indigo-200"}:d.includes("[NETWORK ERROR]")?{type:"NETWORK",color:"bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-800",tag:"bg-red-100 dark:bg-red-800 text-red-800 dark:text-red-200"}:d.includes("[NETWORK REQUEST]")?{type:"NETWORK",color:"bg-gray-50 dark:bg-gray-800/50 border-gray-200 dark:border-gray-700",tag:"bg-gray-100 dark:bg-gray-700 text-gray-700 dark:text-gray-300"}:d.includes("[PAGE ERROR]")?{type:"ERROR",color:"bg-red-50 dark:bg-red-900/20 border-red-200 dark:border-red-800",tag:"bg-red-100 dark:bg-red-800 text-red-800 dark:text-red-200"}:{type:"DEFAULT",color:"border-gray-200 dark:border-gray-700",tag:"bg-gray-100 dark:bg-gray-700 text-gray-700 dark:text-gray-300"};return(0,b.jsxs)("div",{className:`border-l-4 ${e.color} pl-4 py-2`,children:[(0,b.jsxs)("div",{className:"grid grid-cols-[auto_auto_1fr] gap-3 items-start",children:[(0,b.jsx)("div",{className:"text-xs text-gray-500 dark:text-gray-400 font-mono whitespace-nowrap pt-1",children:new Date(a.timestamp).toLocaleTimeString()}),(0,b.jsx)("div",{className:`px-2 py-1 rounded text-xs font-medium whitespace-nowrap ${"SERVER"===a.source?"bg-blue-100 dark:bg-blue-800 text-blue-800 dark:text-blue-200":"bg-green-100 dark:bg-green-800 text-green-800 dark:text-green-200"}`,children:a.source}),(0,b.jsx)("div",{className:"font-mono text-sm min-w-0 text-gray-900 dark:text-gray-100",children:(0,b.jsxs)("div",{className:"flex flex-wrap items-start gap-2",children:[(0,b.jsx)("div",{className:"flex-1 min-w-0",children:(a=>{let c,d=/\[([A-Z\s]+)\]/g,f=/\{[^{}]*(?:\{[^{}]*\}[^{}]*)*\}/g,i=/(https?:\/\/[^\s]+)/g,j=[],k=0;for(c=d.exec(a);null!==c;)c.index>k&&j.push(a.slice(k,c.index)),j.push((0,b.jsx)("span",{className:`inline-block px-1.5 py-0.5 rounded text-xs font-medium ${e.tag} mr-1`,children:c[1]},c.index)),k=c.index+c[0].length,c=d.exec(a);return j.push(...((a,c)=>{let d=[...a.matchAll(f)],e=[...a.matchAll(i)],j=[...d.map(a=>({...a,type:"json"})),...e.map(a=>({...a,type:"url"}))];if(j.sort((a,b)=>(a.index??0)-(b.index??0)),0===j.length)return[a];let k=[],l=0;return j.forEach((d,e)=>{(d.index??0)>l&&k.push(a.slice(l,d.index??0)),"json"===d.type?k.push((0,b.jsx)(h,{content:d[0]},`${c}-json-${d.index}-${d[0].slice(0,20)}`)):"url"===d.type&&k.push((0,b.jsx)(g,{url:d[0]},`${c}-url-${d.index}-${d[0]}`)),l=(d.index??0)+d[0].length}),l<a.length&&k.push(a.slice(l)),k})(a.slice(k),"main")),j.length>0?j:a})(a.message)}),(0,b.jsxs)("div",{className:"flex items-center gap-1 flex-shrink-0",children:[a.tabIdentifier&&(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-gray-100 dark:bg-gray-700 text-gray-700 dark:text-gray-300",children:a.tabIdentifier}),a.userAgent&&(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-green-100 dark:bg-green-800 text-green-700 dark:text-green-200",children:a.userAgent.includes("Chrome")?"Chrome":a.userAgent.includes("Firefox")?"Firefox":a.userAgent.includes("Safari")?"Safari":a.userAgent.includes("Edge")?"Edge":"Browser"}),"BROWSER"===a.source&&(()=>{let c=a.message.includes("[PLAYWRIGHT]"),d=a.message.includes("[CHROME_EXTENSION]")||a.tabIdentifier;return c?(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-purple-100 dark:bg-purple-800 text-purple-700 dark:text-purple-200",children:"š Playwright"}):d?(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-blue-100 dark:bg-blue-800 text-blue-700 dark:text-blue-200",children:"š§© Extension"}):null})(),"SERVER"===a.source&&(()=>{let c=a.message.toLowerCase();if(c.includes("ready on http://localhost")||c.includes("ready in ")||c.includes("next.js")||c.includes("compiled client and server"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-black text-white",children:"ā² Next.js"});if(c.includes("nuxt")||c.includes("nitro")&&c.includes("http://localhost")||c.includes("universal mode")||c.includes("spa mode"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-green-500 text-white",children:"š Nuxt"});if(c.includes("vue-cli-service")||c.includes("vue")&&(c.includes("dev server")||c.includes("local:"))||c.includes("@vue/cli-service"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-green-600 text-white",children:"š¢ Vue"});if(c.includes("local:")&&c.includes("vite")||c.includes("dev server running")||c.includes("vite v"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-blue-500 text-white",children:"ā” Vite"});if(c.includes("rails server")||c.includes("puma starting")||c.includes("use ctrl-c to stop")||c.includes("listening on tcp://")&&c.includes("3000"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-red-600 text-white",children:"š Rails"});else if(c.includes("laravel development server")||c.includes("artisan serve")||c.includes("laravel")&&c.includes("127.0.0.1:8000"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-red-500 text-white",children:"š
» Laravel"});else if(c.includes("express server")||c.includes("server listening on")||c.includes("app listening on port")||c.includes("node server"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-green-700 text-white",children:"š© Express"});else if(c.includes("django")||c.includes("development server")&&c.includes("127.0.0.1:8000")||c.includes("runserver"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-green-800 text-white",children:"š Django"});else if(c.includes("flask")||c.includes("running on http://127.0.0.1:5000")||c.includes("debug mode: on"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-blue-800 text-white",children:"š¶ļø Flask"});else if(c.includes("sveltekit")||c.includes("svelte")&&c.includes("dev")||c.includes("@sveltejs"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-orange-500 text-white",children:"š„ Svelte"});else if(c.includes("remix")||c.includes("@remix-run"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-blue-400 text-white",children:"šæ Remix"});else if(c.includes("astro")||c.includes("@astrojs"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-purple-600 text-white",children:"š Astro"});else if(c.includes("spring boot")||c.includes("tomcat started on port")||c.includes("started application")&&c.includes("seconds"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-green-500 text-white",children:"š Spring"});else if(c.includes("webpack compiled")||c.includes("compiled successfully")||c.includes("webpack-dev-server"))return(0,b.jsx)("span",{className:"inline-flex items-center px-1.5 py-0.5 rounded text-xs font-medium bg-blue-600 text-white",children:"āļø React"});return null})()]})]})})]}),a.screenshot&&(0,b.jsx)("div",{className:"mt-2",children:(0,b.jsx)(c.default,{src:`/screenshots/${a.screenshot}`,alt:"Screenshot",width:0,height:0,sizes:"100vw",className:"w-full h-auto max-w-2xl border rounded shadow-sm",style:{maxHeight:"600px",objectFit:"contain"},unoptimized:!0})})]})}function j({version:a,initialData:c}){let g=(0,d.useRouter)(),h=(0,d.useSearchParams)(),[j,k]=function(){let[a,b]=(0,e.useState)(()=>!1);return(0,e.useEffect)(()=>{localStorage.setItem("dev3000-dark-mode",JSON.stringify(a)),a?document.documentElement.classList.add("dark"):document.documentElement.classList.remove("dark")},[a]),(0,e.useEffect)(()=>{let a=window.matchMedia("(prefers-color-scheme: dark)"),c=a=>{null===localStorage.getItem("dev3000-dark-mode")&&b(a.matches)};return a.addEventListener("change",c),()=>a.removeEventListener("change",c)},[]),[a,b]}(),[l,m]=(0,e.useState)(c?.logs||[]),[n,o]=(0,e.useState)(c?.mode||"tail");(0,e.useEffect)(()=>{let a=h.get("mode");a&&a!==n&&o(a)},[h,n]);let[p,q]=(0,e.useState)(!0),[r,s]=(0,e.useState)(!c),[t,u]=(0,e.useState)(c?.logs.length||0),[v,w]=(0,e.useState)(null),[x,y]=(0,e.useState)(c?.logFiles||[]),[z,A]=(0,e.useState)(c?.currentLogFile||""),[B,C]=(0,e.useState)(""),[D,E]=(0,e.useState)(!1),[F,G]=(0,e.useState)(!1),[H,I]=(0,e.useState)(!1),[J,K]=(0,e.useState)(!1),[L,M]=(0,e.useState)([]),[N,O]=(0,e.useState)(!1),[P,Q]=(0,e.useState)({browser:!0,server:!0,interaction:!0,screenshot:!0}),[R,S]=(0,e.useState)({}),[T,U]=(0,e.useState)([]),V=(0,e.useRef)(null),W=(0,e.useRef)(null),X=(0,e.useRef)(null),Y=(0,e.useRef)(null),Z=(0,e.useRef)(null),$=(0,e.useRef)(!1),_=(0,e.useCallback)(async()=>{try{let a=await fetch("/api/logs/list");if(a.ok){let b=await a.json();y(b.files),A(b.currentFile),C(b.projectName)}}catch(a){console.error("Error loading available logs:",a)}},[]),aa=(0,e.useCallback)(async()=>{if("tail"===n)try{let a=h.get("file"),b="",c=!0;if(a&&x.length>0){let d=x.find(b=>b.name===a);b=d?.path||z,c=d?.isCurrent!==!1}else b=z,c=!0;if(!c)return;let d=b?`/api/logs/tail?lines=50&logPath=${encodeURIComponent(b)}`:"/api/logs/tail?lines=50",e=await fetch(d);if(!e.ok)throw Error(`HTTP ${e.status}: ${e.statusText}`);let g=await e.json();if(!g.logs)return void console.warn("No logs data in response");let i=f(g.logs);if(i.length>t)if(p)w(new Date),T.length>0?(m([...l,...T,...i.slice(t)]),U([])):m(i),u(i.length),$.current||setTimeout(()=>{V.current?.scrollIntoView({behavior:"smooth"})},50);else{let a=i.slice(t);a.length>0&&(U(b=>[...b,...a]),u(i.length))}}catch(a){console.error("Error polling logs:",a)}},[n,p,h,x,z,t,T,l]);(0,e.useEffect)(()=>{if("tail"===n)return X.current=setInterval(aa,3e3),()=>{X.current&&clearInterval(X.current)};X.current&&clearInterval(X.current)},[n,aa]);let ab=(0,e.useCallback)(async()=>{s(!0),await _();try{let a=h.get("file"),b="";if(a&&x.length>0){let c=x.find(b=>b.name===a);b=c?.path||z}else b=z;let c=b?`/api/logs/${n}?lines=1000&logPath=${encodeURIComponent(b)}`:`/api/logs/${n}?lines=1000`,d=await fetch(c);if(!d.ok)throw Error(`HTTP ${d.status}: ${d.statusText}`);let e=await d.json();if(!e.logs){console.warn("No logs data in response"),m([]),s(!1);return}let g=f(e.logs);if(m(g),u(g.length),w(new Date),s(!1),"tail"===n&&!$.current){q(!0);let a=()=>{V.current?V.current.scrollIntoView({behavior:"auto"}):W.current&&(W.current.scrollTop=W.current.scrollHeight)};setTimeout(a,0),setTimeout(a,100)}}catch(a){console.error("Error loading logs:",a),m([])}},[_,h,x,z,n]);(0,e.useEffect)(()=>{h.get("mode");let a=c?.logs&&c?.logs.length>0;if(a||l.length)if(a&&0===l.length){if(m(c.logs),s(!1),"tail"===n&&!$.current){q(!0);let a=()=>{V.current?V.current.scrollIntoView({behavior:"auto"}):W.current&&(W.current.scrollTop=W.current.scrollHeight)};setTimeout(a,0),setTimeout(a,100),setTimeout(a,300)}}else"tail"===n&&p&&(s(!1),X.current=setInterval(()=>{aa()},3e3));else ab()},[n,c?.logs,p,ab,l.length,aa,h.get]),(0,e.useEffect)(()=>{l.length>0&&"tail"===n&&p&&!$.current&&setTimeout(()=>{V.current?V.current.scrollIntoView({behavior:"auto"}):W.current&&(W.current.scrollTop=W.current.scrollHeight)},0)},[l.length,n,p]),(0,e.useEffect)(()=>()=>{X.current&&clearInterval(X.current)},[]),(0,e.useEffect)(()=>{let a=a=>{Y.current&&!Y.current.contains(a.target)&&E(!1),Z.current&&!Z.current.contains(a.target)&&I(!1)};if(D||H)return document.addEventListener("mousedown",a),()=>document.removeEventListener("mousedown",a)},[D,H]);let ac=async()=>{if(z&&!N&&window.confirm("Clear logs and start fresh?\n\nThis will:\n⢠Archive the current log file\n⢠Start a new empty log file\n⢠Clear the current view\n\nThe archived logs will still be available in the dropdown.")){O(!0);try{let a=await fetch("/api/logs/rotate",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({currentLogPath:z})});if(a.ok)m([]),u(0),w(null),await _(),await ab();else{let b=await a.json();console.error("Failed to rotate log:",b),alert(`Failed to rotate log: ${b.error}`)}}catch(a){console.error("Error rotating log:",a),alert("Error rotating log")}finally{O(!1)}}},ad=(0,e.useMemo)(()=>{let a=new Set;return l.forEach(b=>{"BROWSER"===b.source&&b.userAgent&&a.add(b.userAgent)}),Array.from(a).sort()},[l]);(0,e.useEffect)(()=>{ad.length>0&&S(a=>{let b={...a};return ad.forEach(a=>{a in b||(b[a]=!0)}),b})},[ad]);let ae=(0,e.useMemo)(()=>l.filter(a=>{let b=a.message.includes("[INTERACTION]"),c=a.message.includes("[SCREENSHOT]");if(b)return P.interaction;if(c)return P.screenshot;if("SERVER"===a.source)return P.server;if("BROWSER"===a.source){if(!P.browser)return!1;if(ad.length>0&&a.userAgent)return!1!==R[a.userAgent]}return!0}),[l,P,R,ad]);return(0,b.jsxs)("div",{className:"h-screen bg-gray-50 dark:bg-gray-900 flex flex-col transition-colors",children:[(0,b.jsx)("div",{className:"bg-white dark:bg-gray-800 shadow-sm border-b border-gray-200 dark:border-gray-700 flex-none z-10",children:(0,b.jsx)("div",{className:"max-w-7xl mx-auto px-4 py-3",children:(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2 sm:gap-4",children:[(0,b.jsxs)("div",{className:"flex items-center gap-1",children:[(0,b.jsx)("h1",{className:"text-xl sm:text-2xl font-bold text-gray-900 dark:text-white whitespace-nowrap",children:"dev3000"}),(0,b.jsxs)("span",{className:"text-xs text-gray-400 dark:text-gray-500 whitespace-nowrap",children:["(v",a,")"]})]}),x.length>1?(0,b.jsxs)("div",{className:"relative",ref:Y,children:[(0,b.jsxs)("button",{type:"button",onClick:()=>E(!D),className:"flex items-center gap-2 px-3 py-1 text-sm text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white hover:bg-gray-50 dark:hover:bg-gray-700 rounded-md transition-colors",children:[(0,b.jsx)("span",{className:"font-mono text-xs whitespace-nowrap",children:r&&!z?(0,b.jsx)("div",{className:"h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse",style:{width:"220px"}}):z?x.find(a=>a.path===z)?.isCurrent?"d3k.log":z.split("/").pop():"d3k.log"}),(0,b.jsx)("svg",{className:`w-4 h-4 transition-transform ${D?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),D&&x.length>1&&(0,b.jsx)("div",{className:"absolute top-full left-0 mt-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-600 rounded-md shadow-lg z-20 min-w-80",children:(0,b.jsxs)("div",{className:"py-1 max-h-60 overflow-y-auto",children:[(0,b.jsxs)("div",{className:"px-3 py-2 text-xs font-medium text-gray-500 dark:text-gray-400 border-b border-gray-200 dark:border-gray-600",children:[B," logs (",x.length,")"]}),x.map(a=>(0,b.jsxs)("button",{type:"button",onClick:()=>{E(!1),g.push(`/logs?file=${encodeURIComponent(a.name)}&mode=${n}`)},className:`w-full text-left px-3 py-2 text-sm hover:bg-gray-50 flex items-center justify-between ${a.isCurrent?"bg-blue-50 text-blue-900":"text-gray-700"}`,children:[(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("span",{className:"font-mono text-xs",children:a.name}),(0,b.jsxs)("span",{className:"text-xs text-gray-500",children:[new Date(a.mtime).toLocaleString()," ⢠",Math.round(a.size/1024),"KB"]})]}),a.isCurrent&&(0,b.jsx)("span",{className:"text-xs text-blue-600 font-medium",children:"current"})]},a.path))]})})]}):(0,b.jsx)("div",{className:"flex items-center gap-2",children:(0,b.jsx)("span",{className:"font-mono text-xs text-gray-600 px-3 py-1 whitespace-nowrap",children:r&&!z?(0,b.jsx)("div",{className:"h-4 bg-gray-200 rounded animate-pulse",style:{width:"220px"}}):z?x.find(a=>a.path===z)?.isCurrent?"d3k.log":z.split("/").pop():"d3k.log"})}),l.length>0&&(0,b.jsxs)("span",{className:"text-sm text-gray-500 hidden sm:inline",children:[l.length," entries"]}),T.length>0&&!p&&(0,b.jsxs)("span",{className:"text-xs bg-blue-100 dark:bg-blue-900 text-blue-800 dark:text-blue-200 px-2 py-1 rounded-full",children:["+",T.length," buffered"]}),z&&!r&&(0,b.jsx)("button",{type:"button",onClick:ac,disabled:N,className:"px-2 py-1 text-xs bg-orange-100 text-orange-700 hover:bg-orange-200 rounded transition-colors disabled:opacity-50 disabled:cursor-not-allowed",title:"Clear logs (rotate current log to archive and start fresh)",children:N?"...":"Clear"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[!1,(0,b.jsxs)("div",{className:"relative",ref:Z,children:[(0,b.jsxs)("button",{type:"button",onClick:()=>I(!H),className:"flex items-center gap-1 px-3 py-1 rounded text-sm font-medium transition-colors whitespace-nowrap bg-gray-100 text-gray-700 hover:bg-gray-200",children:[(0,b.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M3 4a1 1 0 011-1h16a1 1 0 011 1v2.586a1 1 0 01-.293.707l-6.414 6.414a1 1 0 00-.293.707V17l-4 4v-6.586a1 1 0 00-.293-.707L3.293 7.293A1 1 0 013 6.586V4z"})}),"Filter"]}),H&&(0,b.jsx)("div",{className:"absolute top-full right-0 mt-1 bg-white dark:bg-gray-800 border border-gray-200 dark:border-gray-700 rounded-md shadow-lg z-20 min-w-48",children:(0,b.jsxs)("div",{className:"py-2",children:[(0,b.jsx)("div",{className:"px-3 py-2 text-xs font-medium text-gray-500 dark:text-gray-400 border-b border-gray-200 dark:border-gray-700",children:"Log Types"}),(0,b.jsxs)("label",{className:"flex items-center justify-between px-3 py-2 text-sm hover:bg-gray-50 dark:hover:bg-gray-700 cursor-pointer",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{type:"checkbox",checked:P.server,onChange:a=>Q(b=>({...b,server:a.target.checked})),className:"rounded border-gray-300 text-blue-600 focus:ring-blue-500"}),(0,b.jsx)("span",{className:"text-gray-900 dark:text-gray-100",children:"Server"})]}),(0,b.jsx)("span",{className:"text-xs text-gray-400",children:l.filter(a=>"SERVER"===a.source).length})]}),(0,b.jsxs)("label",{className:"flex items-center justify-between px-3 py-2 text-sm hover:bg-gray-50 dark:hover:bg-gray-700 cursor-pointer",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{type:"checkbox",checked:P.browser,onChange:a=>Q(b=>({...b,browser:a.target.checked})),className:"rounded border-gray-300 text-blue-600 focus:ring-blue-500"}),(0,b.jsx)("span",{className:"text-gray-900 dark:text-gray-100",children:"Browser"})]}),(0,b.jsx)("span",{className:"text-xs text-gray-400",children:l.filter(a=>"BROWSER"===a.source).length})]}),ad.length>1&&P.browser&&(0,b.jsx)("div",{className:"ml-6 border-l border-gray-200 dark:border-gray-600 pl-2",children:ad.map(a=>{let c=a.includes("Chrome")?"Chrome":a.includes("Firefox")?"Firefox":a.includes("Safari")?"Safari":a.includes("Edge")?"Edge":"Browser";return(0,b.jsxs)("label",{className:"flex items-center justify-between px-2 py-1 text-xs hover:bg-gray-50 dark:hover:bg-gray-700 cursor-pointer",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{type:"checkbox",checked:!1!==R[a],onChange:b=>S(c=>({...c,[a]:b.target.checked})),className:"rounded border-gray-300 text-blue-600 focus:ring-blue-500 w-3 h-3"}),(0,b.jsx)("span",{className:"text-gray-700 dark:text-gray-300",children:c})]}),(0,b.jsx)("span",{className:"text-xs text-gray-400",children:l.filter(b=>"BROWSER"===b.source&&b.userAgent===a).length})]},a)})}),(0,b.jsxs)("label",{className:"flex items-center justify-between px-3 py-2 text-sm hover:bg-gray-50 dark:hover:bg-gray-700 cursor-pointer",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{type:"checkbox",checked:P.interaction,onChange:a=>Q(b=>({...b,interaction:a.target.checked})),className:"rounded border-gray-300 text-blue-600 focus:ring-blue-500"}),(0,b.jsx)("span",{className:"text-gray-900 dark:text-gray-100",children:"Interaction"})]}),(0,b.jsx)("span",{className:"text-xs text-gray-400",children:l.filter(a=>a.message.includes("[INTERACTION]")).length})]}),(0,b.jsxs)("label",{className:"flex items-center justify-between px-3 py-2 text-sm hover:bg-gray-50 dark:hover:bg-gray-700 cursor-pointer",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("input",{type:"checkbox",checked:P.screenshot,onChange:a=>Q(b=>({...b,screenshot:a.target.checked})),className:"rounded border-gray-300 text-blue-600 focus:ring-blue-500"}),(0,b.jsx)("span",{className:"text-gray-900 dark:text-gray-100",children:"Screenshot"})]}),(0,b.jsx)("span",{className:"text-xs text-gray-400",children:l.filter(a=>a.message.includes("[SCREENSHOT]")).length})]})]})})]}),(0,b.jsxs)("div",{className:"flex items-center bg-gray-100 rounded-md p-1",children:[(0,b.jsx)("button",{type:"button",onClick:()=>{let a=h.get("file");a?g.push(`/logs?file=${encodeURIComponent(a)}&mode=head`):g.push("/logs?mode=head")},className:`px-2 sm:px-3 py-1 rounded text-xs sm:text-sm font-medium transition-colors whitespace-nowrap ${"head"===n?"bg-white text-gray-900 shadow-sm":"text-gray-600 hover:text-gray-900"}`,children:"Head"}),(0,b.jsx)("button",{type:"button",onClick:()=>{let a=h.get("file");a?g.push(`/logs?file=${encodeURIComponent(a)}&mode=tail`):g.push("/logs?mode=tail")},className:`px-2 sm:px-3 py-1 rounded text-xs sm:text-sm font-medium transition-colors whitespace-nowrap ${"tail"===n?"bg-white text-gray-900 shadow-sm":"text-gray-600 hover:text-gray-900"}`,children:"Tail"})]}),(0,b.jsx)("button",{type:"button",onClick:()=>k(!j),className:"p-2 rounded-md text-gray-600 dark:text-gray-300 hover:text-gray-900 dark:hover:text-white hover:bg-gray-100 dark:hover:bg-gray-700 transition-colors ml-2",title:j?"Switch to light mode":"Switch to dark mode",children:j?(0,b.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"})}):(0,b.jsx)("svg",{className:"w-4 h-4",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:(0,b.jsx)("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"})})})]})]})})}),(0,b.jsx)("div",{className:"flex-1 overflow-hidden",children:(0,b.jsx)("div",{ref:W,className:"max-w-7xl mx-auto px-4 py-6 h-full overflow-y-auto",onScroll:()=>{if(W.current){let{scrollTop:a,scrollHeight:b,clientHeight:c}=W.current,d=a+c>=b-10;p&&!d&&($.current=!0),q(d)}},children:r?(0,b.jsxs)("div",{className:"text-center py-12",children:[(0,b.jsx)("div",{className:"inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600"}),(0,b.jsx)("div",{className:"text-gray-500 text-sm mt-4",children:"Loading logs..."})]}):0===l.length?(0,b.jsxs)("div",{className:"text-center py-12",children:[(0,b.jsx)("div",{className:"text-gray-400 dark:text-gray-500 text-lg",children:"š No logs yet"}),(0,b.jsx)("div",{className:"text-gray-500 dark:text-gray-400 text-sm mt-2",children:"Logs will appear here as your development server runs"})]}):0===ae.length?(0,b.jsxs)("div",{className:"text-center py-12",children:[(0,b.jsx)("div",{className:"text-gray-400 dark:text-gray-500 text-lg",children:"š No logs match current filters"}),(0,b.jsx)("div",{className:"text-gray-500 dark:text-gray-400 text-sm mt-2",children:"Try adjusting your filter settings to see more logs"})]}):(0,b.jsxs)("div",{className:"space-y-1 pb-4",children:[ae.map((a,c)=>(0,b.jsx)(i,{entry:a},`${a.timestamp}-${c}`)),(0,b.jsx)("div",{ref:V})]})})}),(0,b.jsx)("div",{className:"border-t border-gray-200 dark:border-gray-700 bg-gray-50 dark:bg-gray-800 flex-none",children:(0,b.jsxs)("div",{className:"max-w-7xl mx-auto px-4 py-3 flex items-center justify-between",children:[(0,b.jsxs)("div",{className:"flex items-center gap-3",children:[v&&(0,b.jsxs)("span",{className:"text-xs text-gray-400 dark:text-gray-500 font-mono",children:["Last updated ",v.toLocaleTimeString()]}),z&&(0,b.jsx)("a",{href:`file://${z}`,target:"_blank",rel:"noopener noreferrer",className:"text-xs text-blue-600 hover:text-blue-800 flex items-center gap-1",children:"Raw Log ā"})]}),(0,b.jsxs)("div",{className:"relative",children:[(0,b.jsxs)("div",{className:`flex items-center gap-1 text-green-600 ${"tail"===n&&p?"visible":"invisible"}`,children:[(0,b.jsx)("div",{className:"w-2 h-2 bg-green-500 rounded-full animate-pulse"}),(0,b.jsx)("span",{className:"text-xs",children:"Live"})]}),(0,b.jsx)("button",{type:"button",onClick:()=>{$.current=!1,T.length>0&&(m(a=>[...a,...T]),U([]),w(new Date)),V.current?.scrollIntoView({behavior:"smooth"})},className:`absolute top-0 right-0 flex items-center gap-1 px-2 py-0.5 bg-blue-600 text-white rounded text-xs hover:bg-blue-700 whitespace-nowrap ${"tail"===n&&!p?"visible":"invisible"}`,children:"ā Live"})]})]})})]})}a.s(["default",()=>j],2573)}];
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=_7c04f51e._.js.map
|