dev3000 0.0.60 → 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 +3 -0
- package/dist/dev-environment.d.ts.map +1 -1
- package/dist/dev-environment.js +93 -34
- 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 +56 -15
- package/mcp-server/.next/build/chunks/[root-of-the-server]__974941ed._.js +2 -10
- package/mcp-server/.next/build/chunks/[root-of-the-server]__974941ed._.js.map +4 -4
- package/mcp-server/.next/build/chunks/[root-of-the-server]__c7ae8543._.js +2 -10
- package/mcp-server/.next/build/chunks/[root-of-the-server]__c7ae8543._.js.map +4 -4
- package/mcp-server/.next/build/chunks/node_modules__pnpm_806d01c0._.js +10 -35
- package/mcp-server/.next/build/chunks/node_modules__pnpm_806d01c0._.js.map +9 -9
- package/mcp-server/.next/build-manifest.json +9 -12
- 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 +106 -4
- package/mcp-server/.next/routes-manifest.json +82 -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 +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/tools/route/app-build-manifest.json +6 -9
- package/mcp-server/.next/server/app/api/tools/route/build-manifest.json +7 -10
- package/mcp-server/.next/server/app/api/tools/route.js +5 -4
- 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 +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 +10 -15
- package/mcp-server/.next/server/app/page/build-manifest.json +7 -10
- package/mcp-server/.next/server/app/page.js +9 -7
- 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 +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 +2 -2
- package/mcp-server/.next/server/app-paths-manifest.json +15 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__7f1ecf7b._.js.map +1 -1
- package/mcp-server/.next/server/chunks/[root-of-the-server]__82298dd3._.js.map +1 -1
- package/mcp-server/.next/server/chunks/_next-internal_server_app_api_tools_route_actions_4a0d5a18.js +1 -5
- package/mcp-server/.next/server/chunks/_next-internal_server_app_api_tools_route_actions_4a0d5a18.js.map +1 -6
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_client_components_builtin_forbidden_7b57efa5.js +1 -30
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_client_components_builtin_forbidden_7b57efa5.js.map +1 -6
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_client_components_builtin_global-error_118601bd.js +1 -22
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_client_components_builtin_global-error_118601bd.js.map +1 -8
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_client_components_builtin_unauthorized_6614f15c.js +1 -30
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_client_components_builtin_unauthorized_6614f15c.js.map +1 -6
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_client_components_f453b63e._.js +1 -148
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_client_components_f453b63e._.js.map +1 -8
- package/mcp-server/.next/server/chunks/ssr/_dc26a647._.js +1 -1
- package/mcp-server/.next/server/chunks/ssr/_dc26a647._.js.map +1 -1
- package/mcp-server/.next/server/chunks/ssr/_next-internal_server_app_page_actions_39d4fc33.js +1 -5
- package/mcp-server/.next/server/chunks/ssr/_next-internal_server_app_page_actions_39d4fc33.js.map +1 -6
- package/mcp-server/.next/server/middleware-build-manifest.js +7 -10
- 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/pages-manifest.json +4 -1
- 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 +5 -5
- package/mcp-server/.next/standalone/.next/build-manifest.json +2 -2
- package/mcp-server/.next/standalone/.next/prerender-manifest.json +16 -16
- 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 +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/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 +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 +2 -2
- 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 +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 +2 -2
- package/mcp-server/.next/standalone/.next/server/chunks/ssr/_dc26a647._.js +1 -1
- 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 +93 -91
- package/mcp-server/.next/static/chunks/{5dfb96bedc33a0a5.css → 6634762c4edabf25.css} +1 -1
- package/mcp-server/.next/static/chunks/aac71a4d8cd0d1d1.js +1 -0
- package/mcp-server/.next/trace +1 -3
- package/package.json +1 -1
- package/mcp-server/.next/server/chunks/0916f_next_c68840f1._.js +0 -14728
- package/mcp-server/.next/server/chunks/0916f_next_c68840f1._.js.map +0 -118
- package/mcp-server/.next/server/chunks/[root-of-the-server]__3dccd82a._.js +0 -248
- package/mcp-server/.next/server/chunks/[root-of-the-server]__3dccd82a._.js.map +0 -6
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_76a62e93._.js +0 -5831
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_76a62e93._.js.map +0 -89
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_d231ced7._.js +0 -15764
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_d231ced7._.js.map +0 -145
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_dbf009ef._.js +0 -9174
- package/mcp-server/.next/server/chunks/ssr/0916f_next_dist_dbf009ef._.js.map +0 -51
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__1aaf5479._.js +0 -38
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__1aaf5479._.js.map +0 -5
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__7f148858._.js +0 -62
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__7f148858._.js.map +0 -5
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__95719760._.js +0 -54
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__95719760._.js.map +0 -8
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__b1782a10._.js +0 -813
- package/mcp-server/.next/server/chunks/ssr/[root-of-the-server]__b1782a10._.js.map +0 -6
- package/mcp-server/.next/server/chunks/ssr/[turbopack]_browser_dev_hmr-client_hmr-client_ts_818f0fdf._.js +0 -467
- package/mcp-server/.next/server/chunks/ssr/[turbopack]_browser_dev_hmr-client_hmr-client_ts_818f0fdf._.js.map +0 -6
- package/mcp-server/.next/server/chunks/ssr/[turbopack]_browser_dev_hmr-client_hmr-client_ts_89c5f8e8._.js +0 -12
- package/mcp-server/.next/server/chunks/ssr/[turbopack]_browser_dev_hmr-client_hmr-client_ts_89c5f8e8._.js.map +0 -5
- package/mcp-server/.next/server/chunks/ssr/_9c0d7aa1._.js +0 -100
- package/mcp-server/.next/server/chunks/ssr/_9c0d7aa1._.js.map +0 -7
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_cc7262c5._.js +0 -13866
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_cc7262c5._.js.map +0 -152
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_da0d0a14._.js +0 -13866
- package/mcp-server/.next/server/chunks/ssr/node_modules__pnpm_da0d0a14._.js.map +0 -152
- package/mcp-server/.next/static/chunks/0916f_next_dist_2e70ccdb._.js +0 -4068
- package/mcp-server/.next/static/chunks/0916f_next_dist_2e70ccdb._.js.map +0 -64
- package/mcp-server/.next/static/chunks/0916f_next_dist_b3493ca8._.js +0 -2780
- package/mcp-server/.next/static/chunks/0916f_next_dist_b3493ca8._.js.map +0 -27
- package/mcp-server/.next/static/chunks/0916f_next_dist_build_polyfills_polyfill-nomodule.js +0 -1
- package/mcp-server/.next/static/chunks/0916f_next_dist_client_components_builtin_global-error_80971850.js +0 -7
- package/mcp-server/.next/static/chunks/0916f_next_dist_client_d3483330._.js +0 -10175
- package/mcp-server/.next/static/chunks/0916f_next_dist_client_d3483330._.js.map +0 -103
- package/mcp-server/.next/static/chunks/0916f_next_dist_compiled_8cc8c301._.js +0 -5009
- package/mcp-server/.next/static/chunks/0916f_next_dist_compiled_8cc8c301._.js.map +0 -21
- package/mcp-server/.next/static/chunks/0916f_next_dist_compiled_next-devtools_index_94228adb.js +0 -30477
- package/mcp-server/.next/static/chunks/0916f_next_dist_compiled_next-devtools_index_94228adb.js.map +0 -6
- package/mcp-server/.next/static/chunks/0916f_next_dist_compiled_react-dom_c74e1e00._.js +0 -14617
- package/mcp-server/.next/static/chunks/0916f_next_dist_compiled_react-dom_c74e1e00._.js.map +0 -9
- package/mcp-server/.next/static/chunks/1c2c4101e46d1c5e.js +0 -1
- package/mcp-server/.next/static/chunks/69652_@swc_helpers_cjs_77b72907._.js +0 -85
- package/mcp-server/.next/static/chunks/69652_@swc_helpers_cjs_77b72907._.js.map +0 -10
- package/mcp-server/.next/static/chunks/[turbopack]_browser_dev_hmr-client_hmr-client_ts_29af464a._.js +0 -7
- package/mcp-server/.next/static/chunks/[turbopack]_browser_dev_hmr-client_hmr-client_ts_c8c997ce._.js +0 -476
- package/mcp-server/.next/static/chunks/[turbopack]_browser_dev_hmr-client_hmr-client_ts_c8c997ce._.js.map +0 -6
- package/mcp-server/.next/static/chunks/[turbopack]_browser_dev_hmr-client_hmr-client_ts_d335a95d._.js +0 -13
- package/mcp-server/.next/static/chunks/[turbopack]_browser_dev_hmr-client_hmr-client_ts_d335a95d._.js.map +0 -5
- package/mcp-server/.next/static/chunks/_9429dbc3._.js +0 -2117
- package/mcp-server/.next/static/chunks/_9429dbc3._.js.map +0 -16
- package/mcp-server/.next/static/chunks/_a0ff3932._.js +0 -13
- package/mcp-server/.next/static/chunks/_efaa0516._.js.map +0 -10
- package/mcp-server/.next/static/chunks/app_244179ef._.css +0 -4548
- package/mcp-server/.next/static/chunks/app_244179ef._.css.map +0 -7
- package/mcp-server/.next/static/chunks/app_compiled_css_bad6b30c._.single.css +0 -2117
- package/mcp-server/.next/static/chunks/app_compiled_css_bad6b30c._.single.css.map +0 -6
- package/mcp-server/.next/static/chunks/app_globals_css_bad6b30c._.single.css +0 -2432
- package/mcp-server/.next/static/chunks/app_globals_css_bad6b30c._.single.css.map +0 -6
- package/mcp-server/.next/static/chunks/app_layout_tsx_80971850._.js +0 -7
- package/mcp-server/.next/static/chunks/app_page_tsx_6ea10ef3._.js +0 -7
- package/mcp-server/.next/static/chunks/turbopack-_efaa0516._.js +0 -1836
- package/mcp-server/.next/static/development/_ssgManifest.js +0 -1
- package/mcp-server/.next/static/vcdr8uFblpN3gCi_831po/_buildManifest.js +0 -11
- package/mcp-server/.next/static/vcdr8uFblpN3gCi_831po/_clientMiddlewareManifest.json +0 -1
- /package/mcp-server/.next/static/{development → fgx2Ltd5vbloYUQlVKX60}/_buildManifest.js +0 -0
- /package/mcp-server/.next/static/{development → fgx2Ltd5vbloYUQlVKX60}/_clientMiddlewareManifest.json +0 -0
- /package/mcp-server/.next/static/{vcdr8uFblpN3gCi_831po → fgx2Ltd5vbloYUQlVKX60}/_ssgManifest.js +0 -0
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": [],
|
|
4
|
-
"sections": [
|
|
5
|
-
{"offset": {"line": 28, "column": 0}, "map": {"version":3,"sources":["file:///Users/elsigh/src/vercel-labs/dev3000/mcp-server/app/page.tsx"],"sourcesContent":["\"use client\";\n\nimport Link from \"next/link\";\nimport { useEffect, useState } from \"react\";\n\ninterface MCPTool {\n name: string;\n description: string;\n category: string;\n parameters: Array<{\n name: string;\n type: string;\n optional?: boolean;\n description: string;\n }>;\n}\n\ninterface ToolsResponse {\n tools: MCPTool[];\n endpoint: string;\n totalTools: number;\n categories: string[];\n}\n\nexport default function HomePage() {\n const [tools, setTools] = useState<ToolsResponse | null>(null);\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n fetch(\"/api/tools\")\n .then((res) => res.json())\n .then((data) => {\n setTools(data);\n setLoading(false);\n })\n .catch(() => {\n setLoading(false);\n });\n }, []);\n\n return (\n <div className=\"min-h-screen bg-white\">\n {/* Header */}\n <header className=\"bg-gray-50 border-b border-gray-200\">\n <div className=\"max-w-7xl mx-auto px-6 py-8\">\n <div className=\"flex items-center justify-between\">\n <div>\n <div className=\"flex items-center gap-4 mb-3\">\n <div className=\"w-12 h-12 bg-black rounded flex items-center justify-center\">\n <span className=\"text-white font-mono font-bold\">d3k</span>\n </div>\n <div>\n <h1 className=\"text-3xl font-bold text-gray-900\">\n dev3000 MCP Server\n </h1>\n <div className=\"flex items-center gap-3 mt-2\">\n <span className=\"inline-flex items-center gap-2 text-sm text-green-600 font-medium\">\n <span className=\"w-2 h-2 bg-green-500 rounded-full\"></span>\n Server Running\n </span>\n <span className=\"text-gray-300\">•</span>\n <span className=\"text-sm text-gray-600\">Port 3684</span>\n </div>\n </div>\n </div>\n </div>\n <div className=\"flex items-center gap-4\">\n <Link\n href=\"/logs\"\n className=\"inline-flex items-center gap-2 px-5 py-3 bg-blue-600 text-white text-sm font-medium rounded hover:bg-blue-700 transition-colors\"\n >\n 📊 View Logs\n </Link>\n <a\n href=\"https://github.com/vercel-labs/dev3000#setup\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-2 px-5 py-3 border border-gray-300 text-gray-700 text-sm font-medium rounded hover:bg-gray-50 transition-colors\"\n >\n 📖 Setup Guide\n </a>\n </div>\n </div>\n </div>\n </header>\n\n <div className=\"flex max-w-7xl mx-auto\">\n {/* Main Content */}\n <main className=\"flex-1 px-6 py-8 min-w-0 lg:pr-80\">\n {/* Quick Start */}\n <section className=\"mb-16\">\n <div className=\"bg-blue-50 border border-blue-200 rounded p-8\">\n <h2 className=\"text-xl font-semibold text-blue-900 mb-4\">\n 🚀 Quick Start\n </h2>\n <div className=\"space-y-4\">\n <div>\n <span className=\"text-sm font-medium text-blue-800\">\n MCP Endpoint:\n </span>\n <code className=\"ml-3 px-4 py-2 bg-blue-100 text-blue-800 text-sm font-mono rounded\">\n {tools?.endpoint || \"http://localhost:3684/api/mcp/mcp\"}\n </code>\n </div>\n <div className=\"text-sm text-blue-700\">\n <p className=\"mb-3\">\n Connect your AI tools to this MCP server for real-time\n development debugging:\n </p>\n <div className=\"flex gap-6\">\n <a\n href=\"https://github.com/vercel-labs/dev3000#claude-desktop\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-blue-600 hover:text-blue-800 font-medium\"\n >\n Claude Desktop Setup →\n </a>\n <a\n href=\"https://github.com/vercel-labs/dev3000#cursor\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-blue-600 hover:text-blue-800 font-medium\"\n >\n Cursor Setup →\n </a>\n </div>\n </div>\n </div>\n </div>\n </section>\n\n {/* Tools Documentation */}\n <section>\n <div className=\"mb-12\">\n <div>\n <h2 className=\"text-3xl font-bold text-gray-900 mb-3\">\n Available Tools\n </h2>\n <p className=\"text-gray-600 text-lg\">\n {loading\n ? \"Loading MCP tools...\"\n : `${tools?.totalTools || 0} tools across ${\n tools?.categories.length || 0\n } categories for AI-powered development debugging`}\n </p>\n </div>\n </div>\n\n {loading ? (\n <div className=\"text-center py-16\">\n <div className=\"inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600\"></div>\n <p className=\"mt-6 text-gray-600\">\n Loading tool documentation...\n </p>\n </div>\n ) : tools ? (\n <div className=\"grid gap-6 lg:grid-cols-2\">\n {tools.tools.map((tool) => (\n <div\n key={tool.name}\n id={tool.name}\n className=\"border border-gray-200 rounded p-6 hover:border-gray-300 transition-colors\"\n >\n <div className=\"mb-4\">\n <h4 className=\"text-xl font-semibold text-gray-900 font-mono mb-3\">\n {tool.name}\n </h4>\n <p className=\"text-gray-600 leading-relaxed\">\n {tool.description\n .replace(/🚨|⏰|🔍|🪄|📊|🌐|⚙️/g, \"\")\n .trim()}\n </p>\n </div>\n {tool.parameters.length > 0 && (\n <div>\n <h5 className=\"text-sm font-semibold text-gray-800 mb-3\">\n Parameters:\n </h5>\n <div className=\"space-y-2\">\n {tool.parameters.map((param) => (\n <div key={param.name} className=\"text-sm\">\n <div className=\"flex items-start gap-2\">\n <span className=\"font-mono text-blue-600 font-medium\">\n {param.name}\n </span>\n <span className=\"text-gray-500 text-xs\">\n {param.optional ? \"(optional)\" : \"(required)\"}\n </span>\n <span className=\"text-gray-400 text-xs\">\n - {param.type}\n </span>\n </div>\n {param.description && (\n <div className=\"text-gray-600 ml-1 mt-1 text-sm\">\n {param.description}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n )}\n </div>\n ))}\n </div>\n ) : (\n <div className=\"text-center py-16\">\n <p className=\"text-red-600 mb-6\">\n Failed to load tool documentation\n </p>\n <button\n onClick={() => window.location.reload()}\n className=\"px-6 py-3 bg-blue-600 text-white text-sm rounded hover:bg-blue-700 transition-colors\"\n type=\"button\"\n >\n Retry\n </button>\n </div>\n )}\n </section>\n\n {/* Magic Workflow */}\n <section className=\"mt-20 bg-gradient-to-r from-purple-50 to-blue-50 border border-purple-200 rounded p-10\">\n <h2 className=\"text-2xl font-semibold text-gray-900 mb-6 flex items-center gap-3\">\n 🪄 The Magic Workflow\n </h2>\n <div className=\"grid md:grid-cols-3 gap-8\">\n <div className=\"text-center\">\n <div className=\"w-16 h-16 bg-blue-100 rounded-full flex items-center justify-center mx-auto mb-4\">\n <span className=\"text-blue-600 font-bold text-lg\">1</span>\n </div>\n <h3 className=\"font-semibold mb-3 text-lg\">AI Finds Issues</h3>\n <p className=\"text-gray-600 leading-relaxed\">\n Tools like debug_my_app and monitor_for_new_errors\n automatically detect problems\n </p>\n </div>\n <div className=\"text-center\">\n <div className=\"w-16 h-16 bg-purple-100 rounded-full flex items-center justify-center mx-auto mb-4\">\n <span className=\"text-purple-600 font-bold text-lg\">2</span>\n </div>\n <h3 className=\"font-semibold mb-3 text-lg\">AI Fixes Code</h3>\n <p className=\"text-gray-600 leading-relaxed\">\n AI analyzes errors and edits your code files to resolve issues\n </p>\n </div>\n <div className=\"text-center\">\n <div className=\"w-16 h-16 bg-green-100 rounded-full flex items-center justify-center mx-auto mb-4\">\n <span className=\"text-green-600 font-bold text-lg\">3</span>\n </div>\n <h3 className=\"font-semibold mb-3 text-lg\">\n AI Verifies Fixes\n </h3>\n <p className=\"text-gray-600 leading-relaxed\">\n execute_browser_action tests the fixes in real-time with\n screenshots\n </p>\n </div>\n </div>\n </section>\n </main>\n\n {/* Table of Contents - Sticky Sidebar (Right) */}\n <aside className=\"lg:block w-72 flex-shrink-0 fixed right-0 top-0 h-screen overflow-y-auto z-10\">\n <div className=\"p-6 bg-gray-50 border-l border-gray-200 h-full\">\n <h3 className=\"text-sm font-semibold text-gray-900 mb-4\">Tools</h3>\n {loading ? (\n <div className=\"text-sm text-gray-500\">Loading tools...</div>\n ) : tools ? (\n <nav className=\"space-y-1 text-sm\">\n {tools.tools.map((tool) => (\n <a\n key={tool.name}\n href={`#${tool.name}`}\n className=\"text-gray-600 hover:text-blue-600 transition-colors block py-2 px-3 rounded hover:bg-white\"\n >\n {tool.name}\n </a>\n ))}\n </nav>\n ) : (\n <div className=\"text-sm text-gray-500\">Failed to load tools</div>\n )}\n </div>\n </aside>\n </div>\n\n {/* Footer */}\n <footer className=\"border-t border-gray-200 mt-20\">\n <div className=\"max-w-7xl mx-auto px-6 py-8\">\n <div className=\"flex items-center justify-between text-sm text-gray-600\">\n <div>\n <span className=\"font-semibold\">dev3000 MCP Server</span> -\n AI-powered development monitoring\n </div>\n <div className=\"flex items-center gap-8\">\n <a\n href=\"https://github.com/vercel-labs/dev3000\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"hover:text-gray-900 transition-colors\"\n >\n GitHub\n </a>\n <a\n href=\"https://dev3000.ai\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"hover:text-gray-900 transition-colors\"\n >\n Homepage\n </a>\n <Link\n href=\"/logs\"\n className=\"hover:text-gray-900 transition-colors\"\n >\n Logs\n </Link>\n </div>\n </div>\n </div>\n </footer>\n </div>\n );\n}\n"],"names":[],"mappings":"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","debugId":null}}]
|
|
6
|
-
}
|
|
@@ -1,467 +0,0 @@
|
|
|
1
|
-
module.exports = [
|
|
2
|
-
"[turbopack]/browser/dev/hmr-client/hmr-client.ts [app-ssr] (ecmascript)", ((__turbopack_context__) => {
|
|
3
|
-
"use strict";
|
|
4
|
-
|
|
5
|
-
/// <reference path="../../../shared/runtime-types.d.ts" />
|
|
6
|
-
/// <reference path="../../runtime/base/dev-globals.d.ts" />
|
|
7
|
-
/// <reference path="../../runtime/base/dev-protocol.d.ts" />
|
|
8
|
-
/// <reference path="../../runtime/base/dev-extensions.ts" />
|
|
9
|
-
__turbopack_context__.s([
|
|
10
|
-
"connect",
|
|
11
|
-
()=>connect,
|
|
12
|
-
"setHooks",
|
|
13
|
-
()=>setHooks,
|
|
14
|
-
"subscribeToUpdate",
|
|
15
|
-
()=>subscribeToUpdate
|
|
16
|
-
]);
|
|
17
|
-
function connect({ addMessageListener, sendMessage, onUpdateError = console.error }) {
|
|
18
|
-
addMessageListener((msg)=>{
|
|
19
|
-
switch(msg.type){
|
|
20
|
-
case 'turbopack-connected':
|
|
21
|
-
handleSocketConnected(sendMessage);
|
|
22
|
-
break;
|
|
23
|
-
default:
|
|
24
|
-
try {
|
|
25
|
-
if (Array.isArray(msg.data)) {
|
|
26
|
-
for(let i = 0; i < msg.data.length; i++){
|
|
27
|
-
handleSocketMessage(msg.data[i]);
|
|
28
|
-
}
|
|
29
|
-
} else {
|
|
30
|
-
handleSocketMessage(msg.data);
|
|
31
|
-
}
|
|
32
|
-
applyAggregatedUpdates();
|
|
33
|
-
} catch (e) {
|
|
34
|
-
console.warn('[Fast Refresh] performing full reload\n\n' + "Fast Refresh will perform a full reload when you edit a file that's imported by modules outside of the React rendering tree.\n" + 'You might have a file which exports a React component but also exports a value that is imported by a non-React component file.\n' + 'Consider migrating the non-React component export to a separate file and importing it into both files.\n\n' + 'It is also possible the parent component of the component you edited is a class component, which disables Fast Refresh.\n' + 'Fast Refresh requires at least one parent function component in your React tree.');
|
|
35
|
-
onUpdateError(e);
|
|
36
|
-
location.reload();
|
|
37
|
-
}
|
|
38
|
-
break;
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
const queued = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS;
|
|
42
|
-
if (queued != null && !Array.isArray(queued)) {
|
|
43
|
-
throw new Error('A separate HMR handler was already registered');
|
|
44
|
-
}
|
|
45
|
-
globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = {
|
|
46
|
-
push: ([chunkPath, callback])=>{
|
|
47
|
-
subscribeToChunkUpdate(chunkPath, sendMessage, callback);
|
|
48
|
-
}
|
|
49
|
-
};
|
|
50
|
-
if (Array.isArray(queued)) {
|
|
51
|
-
for (const [chunkPath, callback] of queued){
|
|
52
|
-
subscribeToChunkUpdate(chunkPath, sendMessage, callback);
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
const updateCallbackSets = new Map();
|
|
57
|
-
function sendJSON(sendMessage, message) {
|
|
58
|
-
sendMessage(JSON.stringify(message));
|
|
59
|
-
}
|
|
60
|
-
function resourceKey(resource) {
|
|
61
|
-
return JSON.stringify({
|
|
62
|
-
path: resource.path,
|
|
63
|
-
headers: resource.headers || null
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
function subscribeToUpdates(sendMessage, resource) {
|
|
67
|
-
sendJSON(sendMessage, {
|
|
68
|
-
type: 'turbopack-subscribe',
|
|
69
|
-
...resource
|
|
70
|
-
});
|
|
71
|
-
return ()=>{
|
|
72
|
-
sendJSON(sendMessage, {
|
|
73
|
-
type: 'turbopack-unsubscribe',
|
|
74
|
-
...resource
|
|
75
|
-
});
|
|
76
|
-
};
|
|
77
|
-
}
|
|
78
|
-
function handleSocketConnected(sendMessage) {
|
|
79
|
-
for (const key of updateCallbackSets.keys()){
|
|
80
|
-
subscribeToUpdates(sendMessage, JSON.parse(key));
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
// we aggregate all pending updates until the issues are resolved
|
|
84
|
-
const chunkListsWithPendingUpdates = new Map();
|
|
85
|
-
function aggregateUpdates(msg) {
|
|
86
|
-
const key = resourceKey(msg.resource);
|
|
87
|
-
let aggregated = chunkListsWithPendingUpdates.get(key);
|
|
88
|
-
if (aggregated) {
|
|
89
|
-
aggregated.instruction = mergeChunkListUpdates(aggregated.instruction, msg.instruction);
|
|
90
|
-
} else {
|
|
91
|
-
chunkListsWithPendingUpdates.set(key, msg);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
function applyAggregatedUpdates() {
|
|
95
|
-
if (chunkListsWithPendingUpdates.size === 0) return;
|
|
96
|
-
hooks.beforeRefresh();
|
|
97
|
-
for (const msg of chunkListsWithPendingUpdates.values()){
|
|
98
|
-
triggerUpdate(msg);
|
|
99
|
-
}
|
|
100
|
-
chunkListsWithPendingUpdates.clear();
|
|
101
|
-
finalizeUpdate();
|
|
102
|
-
}
|
|
103
|
-
function mergeChunkListUpdates(updateA, updateB) {
|
|
104
|
-
let chunks;
|
|
105
|
-
if (updateA.chunks != null) {
|
|
106
|
-
if (updateB.chunks == null) {
|
|
107
|
-
chunks = updateA.chunks;
|
|
108
|
-
} else {
|
|
109
|
-
chunks = mergeChunkListChunks(updateA.chunks, updateB.chunks);
|
|
110
|
-
}
|
|
111
|
-
} else if (updateB.chunks != null) {
|
|
112
|
-
chunks = updateB.chunks;
|
|
113
|
-
}
|
|
114
|
-
let merged;
|
|
115
|
-
if (updateA.merged != null) {
|
|
116
|
-
if (updateB.merged == null) {
|
|
117
|
-
merged = updateA.merged;
|
|
118
|
-
} else {
|
|
119
|
-
// Since `merged` is an array of updates, we need to merge them all into
|
|
120
|
-
// one, consistent update.
|
|
121
|
-
// Since there can only be `EcmascriptMergeUpdates` in the array, there is
|
|
122
|
-
// no need to key on the `type` field.
|
|
123
|
-
let update = updateA.merged[0];
|
|
124
|
-
for(let i = 1; i < updateA.merged.length; i++){
|
|
125
|
-
update = mergeChunkListEcmascriptMergedUpdates(update, updateA.merged[i]);
|
|
126
|
-
}
|
|
127
|
-
for(let i = 0; i < updateB.merged.length; i++){
|
|
128
|
-
update = mergeChunkListEcmascriptMergedUpdates(update, updateB.merged[i]);
|
|
129
|
-
}
|
|
130
|
-
merged = [
|
|
131
|
-
update
|
|
132
|
-
];
|
|
133
|
-
}
|
|
134
|
-
} else if (updateB.merged != null) {
|
|
135
|
-
merged = updateB.merged;
|
|
136
|
-
}
|
|
137
|
-
return {
|
|
138
|
-
type: 'ChunkListUpdate',
|
|
139
|
-
chunks,
|
|
140
|
-
merged
|
|
141
|
-
};
|
|
142
|
-
}
|
|
143
|
-
function mergeChunkListChunks(chunksA, chunksB) {
|
|
144
|
-
const chunks = {};
|
|
145
|
-
for (const [chunkPath, chunkUpdateA] of Object.entries(chunksA)){
|
|
146
|
-
const chunkUpdateB = chunksB[chunkPath];
|
|
147
|
-
if (chunkUpdateB != null) {
|
|
148
|
-
const mergedUpdate = mergeChunkUpdates(chunkUpdateA, chunkUpdateB);
|
|
149
|
-
if (mergedUpdate != null) {
|
|
150
|
-
chunks[chunkPath] = mergedUpdate;
|
|
151
|
-
}
|
|
152
|
-
} else {
|
|
153
|
-
chunks[chunkPath] = chunkUpdateA;
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
for (const [chunkPath, chunkUpdateB] of Object.entries(chunksB)){
|
|
157
|
-
if (chunks[chunkPath] == null) {
|
|
158
|
-
chunks[chunkPath] = chunkUpdateB;
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
return chunks;
|
|
162
|
-
}
|
|
163
|
-
function mergeChunkUpdates(updateA, updateB) {
|
|
164
|
-
if (updateA.type === 'added' && updateB.type === 'deleted' || updateA.type === 'deleted' && updateB.type === 'added') {
|
|
165
|
-
return undefined;
|
|
166
|
-
}
|
|
167
|
-
if (updateA.type === 'partial') {
|
|
168
|
-
invariant(updateA.instruction, 'Partial updates are unsupported');
|
|
169
|
-
}
|
|
170
|
-
if (updateB.type === 'partial') {
|
|
171
|
-
invariant(updateB.instruction, 'Partial updates are unsupported');
|
|
172
|
-
}
|
|
173
|
-
return undefined;
|
|
174
|
-
}
|
|
175
|
-
function mergeChunkListEcmascriptMergedUpdates(mergedA, mergedB) {
|
|
176
|
-
const entries = mergeEcmascriptChunkEntries(mergedA.entries, mergedB.entries);
|
|
177
|
-
const chunks = mergeEcmascriptChunksUpdates(mergedA.chunks, mergedB.chunks);
|
|
178
|
-
return {
|
|
179
|
-
type: 'EcmascriptMergedUpdate',
|
|
180
|
-
entries,
|
|
181
|
-
chunks
|
|
182
|
-
};
|
|
183
|
-
}
|
|
184
|
-
function mergeEcmascriptChunkEntries(entriesA, entriesB) {
|
|
185
|
-
return {
|
|
186
|
-
...entriesA,
|
|
187
|
-
...entriesB
|
|
188
|
-
};
|
|
189
|
-
}
|
|
190
|
-
function mergeEcmascriptChunksUpdates(chunksA, chunksB) {
|
|
191
|
-
if (chunksA == null) {
|
|
192
|
-
return chunksB;
|
|
193
|
-
}
|
|
194
|
-
if (chunksB == null) {
|
|
195
|
-
return chunksA;
|
|
196
|
-
}
|
|
197
|
-
const chunks = {};
|
|
198
|
-
for (const [chunkPath, chunkUpdateA] of Object.entries(chunksA)){
|
|
199
|
-
const chunkUpdateB = chunksB[chunkPath];
|
|
200
|
-
if (chunkUpdateB != null) {
|
|
201
|
-
const mergedUpdate = mergeEcmascriptChunkUpdates(chunkUpdateA, chunkUpdateB);
|
|
202
|
-
if (mergedUpdate != null) {
|
|
203
|
-
chunks[chunkPath] = mergedUpdate;
|
|
204
|
-
}
|
|
205
|
-
} else {
|
|
206
|
-
chunks[chunkPath] = chunkUpdateA;
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
for (const [chunkPath, chunkUpdateB] of Object.entries(chunksB)){
|
|
210
|
-
if (chunks[chunkPath] == null) {
|
|
211
|
-
chunks[chunkPath] = chunkUpdateB;
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
if (Object.keys(chunks).length === 0) {
|
|
215
|
-
return undefined;
|
|
216
|
-
}
|
|
217
|
-
return chunks;
|
|
218
|
-
}
|
|
219
|
-
function mergeEcmascriptChunkUpdates(updateA, updateB) {
|
|
220
|
-
if (updateA.type === 'added' && updateB.type === 'deleted') {
|
|
221
|
-
// These two completely cancel each other out.
|
|
222
|
-
return undefined;
|
|
223
|
-
}
|
|
224
|
-
if (updateA.type === 'deleted' && updateB.type === 'added') {
|
|
225
|
-
const added = [];
|
|
226
|
-
const deleted = [];
|
|
227
|
-
const deletedModules = new Set(updateA.modules ?? []);
|
|
228
|
-
const addedModules = new Set(updateB.modules ?? []);
|
|
229
|
-
for (const moduleId of addedModules){
|
|
230
|
-
if (!deletedModules.has(moduleId)) {
|
|
231
|
-
added.push(moduleId);
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
for (const moduleId of deletedModules){
|
|
235
|
-
if (!addedModules.has(moduleId)) {
|
|
236
|
-
deleted.push(moduleId);
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
if (added.length === 0 && deleted.length === 0) {
|
|
240
|
-
return undefined;
|
|
241
|
-
}
|
|
242
|
-
return {
|
|
243
|
-
type: 'partial',
|
|
244
|
-
added,
|
|
245
|
-
deleted
|
|
246
|
-
};
|
|
247
|
-
}
|
|
248
|
-
if (updateA.type === 'partial' && updateB.type === 'partial') {
|
|
249
|
-
const added = new Set([
|
|
250
|
-
...updateA.added ?? [],
|
|
251
|
-
...updateB.added ?? []
|
|
252
|
-
]);
|
|
253
|
-
const deleted = new Set([
|
|
254
|
-
...updateA.deleted ?? [],
|
|
255
|
-
...updateB.deleted ?? []
|
|
256
|
-
]);
|
|
257
|
-
if (updateB.added != null) {
|
|
258
|
-
for (const moduleId of updateB.added){
|
|
259
|
-
deleted.delete(moduleId);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
if (updateB.deleted != null) {
|
|
263
|
-
for (const moduleId of updateB.deleted){
|
|
264
|
-
added.delete(moduleId);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
return {
|
|
268
|
-
type: 'partial',
|
|
269
|
-
added: [
|
|
270
|
-
...added
|
|
271
|
-
],
|
|
272
|
-
deleted: [
|
|
273
|
-
...deleted
|
|
274
|
-
]
|
|
275
|
-
};
|
|
276
|
-
}
|
|
277
|
-
if (updateA.type === 'added' && updateB.type === 'partial') {
|
|
278
|
-
const modules = new Set([
|
|
279
|
-
...updateA.modules ?? [],
|
|
280
|
-
...updateB.added ?? []
|
|
281
|
-
]);
|
|
282
|
-
for (const moduleId of updateB.deleted ?? []){
|
|
283
|
-
modules.delete(moduleId);
|
|
284
|
-
}
|
|
285
|
-
return {
|
|
286
|
-
type: 'added',
|
|
287
|
-
modules: [
|
|
288
|
-
...modules
|
|
289
|
-
]
|
|
290
|
-
};
|
|
291
|
-
}
|
|
292
|
-
if (updateA.type === 'partial' && updateB.type === 'deleted') {
|
|
293
|
-
// We could eagerly return `updateB` here, but this would potentially be
|
|
294
|
-
// incorrect if `updateA` has added modules.
|
|
295
|
-
const modules = new Set(updateB.modules ?? []);
|
|
296
|
-
if (updateA.added != null) {
|
|
297
|
-
for (const moduleId of updateA.added){
|
|
298
|
-
modules.delete(moduleId);
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
return {
|
|
302
|
-
type: 'deleted',
|
|
303
|
-
modules: [
|
|
304
|
-
...modules
|
|
305
|
-
]
|
|
306
|
-
};
|
|
307
|
-
}
|
|
308
|
-
// Any other update combination is invalid.
|
|
309
|
-
return undefined;
|
|
310
|
-
}
|
|
311
|
-
function invariant(_, message) {
|
|
312
|
-
throw new Error(`Invariant: ${message}`);
|
|
313
|
-
}
|
|
314
|
-
const CRITICAL = [
|
|
315
|
-
'bug',
|
|
316
|
-
'error',
|
|
317
|
-
'fatal'
|
|
318
|
-
];
|
|
319
|
-
function compareByList(list, a, b) {
|
|
320
|
-
const aI = list.indexOf(a) + 1 || list.length;
|
|
321
|
-
const bI = list.indexOf(b) + 1 || list.length;
|
|
322
|
-
return aI - bI;
|
|
323
|
-
}
|
|
324
|
-
const chunksWithIssues = new Map();
|
|
325
|
-
function emitIssues() {
|
|
326
|
-
const issues = [];
|
|
327
|
-
const deduplicationSet = new Set();
|
|
328
|
-
for (const [_, chunkIssues] of chunksWithIssues){
|
|
329
|
-
for (const chunkIssue of chunkIssues){
|
|
330
|
-
if (deduplicationSet.has(chunkIssue.formatted)) continue;
|
|
331
|
-
issues.push(chunkIssue);
|
|
332
|
-
deduplicationSet.add(chunkIssue.formatted);
|
|
333
|
-
}
|
|
334
|
-
}
|
|
335
|
-
sortIssues(issues);
|
|
336
|
-
hooks.issues(issues);
|
|
337
|
-
}
|
|
338
|
-
function handleIssues(msg) {
|
|
339
|
-
const key = resourceKey(msg.resource);
|
|
340
|
-
let hasCriticalIssues = false;
|
|
341
|
-
for (const issue of msg.issues){
|
|
342
|
-
if (CRITICAL.includes(issue.severity)) {
|
|
343
|
-
hasCriticalIssues = true;
|
|
344
|
-
}
|
|
345
|
-
}
|
|
346
|
-
if (msg.issues.length > 0) {
|
|
347
|
-
chunksWithIssues.set(key, msg.issues);
|
|
348
|
-
} else if (chunksWithIssues.has(key)) {
|
|
349
|
-
chunksWithIssues.delete(key);
|
|
350
|
-
}
|
|
351
|
-
emitIssues();
|
|
352
|
-
return hasCriticalIssues;
|
|
353
|
-
}
|
|
354
|
-
const SEVERITY_ORDER = [
|
|
355
|
-
'bug',
|
|
356
|
-
'fatal',
|
|
357
|
-
'error',
|
|
358
|
-
'warning',
|
|
359
|
-
'info',
|
|
360
|
-
'log'
|
|
361
|
-
];
|
|
362
|
-
const CATEGORY_ORDER = [
|
|
363
|
-
'parse',
|
|
364
|
-
'resolve',
|
|
365
|
-
'code generation',
|
|
366
|
-
'rendering',
|
|
367
|
-
'typescript',
|
|
368
|
-
'other'
|
|
369
|
-
];
|
|
370
|
-
function sortIssues(issues) {
|
|
371
|
-
issues.sort((a, b)=>{
|
|
372
|
-
const first = compareByList(SEVERITY_ORDER, a.severity, b.severity);
|
|
373
|
-
if (first !== 0) return first;
|
|
374
|
-
return compareByList(CATEGORY_ORDER, a.category, b.category);
|
|
375
|
-
});
|
|
376
|
-
}
|
|
377
|
-
const hooks = {
|
|
378
|
-
beforeRefresh: ()=>{},
|
|
379
|
-
refresh: ()=>{},
|
|
380
|
-
buildOk: ()=>{},
|
|
381
|
-
issues: (_issues)=>{}
|
|
382
|
-
};
|
|
383
|
-
function setHooks(newHooks) {
|
|
384
|
-
Object.assign(hooks, newHooks);
|
|
385
|
-
}
|
|
386
|
-
function handleSocketMessage(msg) {
|
|
387
|
-
sortIssues(msg.issues);
|
|
388
|
-
handleIssues(msg);
|
|
389
|
-
switch(msg.type){
|
|
390
|
-
case 'issues':
|
|
391
|
-
break;
|
|
392
|
-
case 'partial':
|
|
393
|
-
// aggregate updates
|
|
394
|
-
aggregateUpdates(msg);
|
|
395
|
-
break;
|
|
396
|
-
default:
|
|
397
|
-
// run single update
|
|
398
|
-
const runHooks = chunkListsWithPendingUpdates.size === 0;
|
|
399
|
-
if (runHooks) hooks.beforeRefresh();
|
|
400
|
-
triggerUpdate(msg);
|
|
401
|
-
if (runHooks) finalizeUpdate();
|
|
402
|
-
break;
|
|
403
|
-
}
|
|
404
|
-
}
|
|
405
|
-
function finalizeUpdate() {
|
|
406
|
-
hooks.refresh();
|
|
407
|
-
hooks.buildOk();
|
|
408
|
-
// This is used by the Next.js integration test suite to notify it when HMR
|
|
409
|
-
// updates have been completed.
|
|
410
|
-
// TODO: Only run this in test environments (gate by `process.env.__NEXT_TEST_MODE`)
|
|
411
|
-
if (globalThis.__NEXT_HMR_CB) {
|
|
412
|
-
globalThis.__NEXT_HMR_CB();
|
|
413
|
-
globalThis.__NEXT_HMR_CB = null;
|
|
414
|
-
}
|
|
415
|
-
}
|
|
416
|
-
function subscribeToChunkUpdate(chunkListPath, sendMessage, callback) {
|
|
417
|
-
return subscribeToUpdate({
|
|
418
|
-
path: chunkListPath
|
|
419
|
-
}, sendMessage, callback);
|
|
420
|
-
}
|
|
421
|
-
function subscribeToUpdate(resource, sendMessage, callback) {
|
|
422
|
-
const key = resourceKey(resource);
|
|
423
|
-
let callbackSet;
|
|
424
|
-
const existingCallbackSet = updateCallbackSets.get(key);
|
|
425
|
-
if (!existingCallbackSet) {
|
|
426
|
-
callbackSet = {
|
|
427
|
-
callbacks: new Set([
|
|
428
|
-
callback
|
|
429
|
-
]),
|
|
430
|
-
unsubscribe: subscribeToUpdates(sendMessage, resource)
|
|
431
|
-
};
|
|
432
|
-
updateCallbackSets.set(key, callbackSet);
|
|
433
|
-
} else {
|
|
434
|
-
existingCallbackSet.callbacks.add(callback);
|
|
435
|
-
callbackSet = existingCallbackSet;
|
|
436
|
-
}
|
|
437
|
-
return ()=>{
|
|
438
|
-
callbackSet.callbacks.delete(callback);
|
|
439
|
-
if (callbackSet.callbacks.size === 0) {
|
|
440
|
-
callbackSet.unsubscribe();
|
|
441
|
-
updateCallbackSets.delete(key);
|
|
442
|
-
}
|
|
443
|
-
};
|
|
444
|
-
}
|
|
445
|
-
function triggerUpdate(msg) {
|
|
446
|
-
const key = resourceKey(msg.resource);
|
|
447
|
-
const callbackSet = updateCallbackSets.get(key);
|
|
448
|
-
if (!callbackSet) {
|
|
449
|
-
return;
|
|
450
|
-
}
|
|
451
|
-
for (const callback of callbackSet.callbacks){
|
|
452
|
-
callback(msg);
|
|
453
|
-
}
|
|
454
|
-
if (msg.type === 'notFound') {
|
|
455
|
-
// This indicates that the resource which we subscribed to either does not exist or
|
|
456
|
-
// has been deleted. In either case, we should clear all update callbacks, so if a
|
|
457
|
-
// new subscription is created for the same resource, it will send a new "subscribe"
|
|
458
|
-
// message to the server.
|
|
459
|
-
// No need to send an "unsubscribe" message to the server, it will have already
|
|
460
|
-
// dropped the update stream before sending the "notFound" message.
|
|
461
|
-
updateCallbackSets.delete(key);
|
|
462
|
-
}
|
|
463
|
-
}
|
|
464
|
-
}),
|
|
465
|
-
];
|
|
466
|
-
|
|
467
|
-
//# sourceMappingURL=%5Bturbopack%5D_browser_dev_hmr-client_hmr-client_ts_818f0fdf._.js.map
|
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": [],
|
|
4
|
-
"sections": [
|
|
5
|
-
{"offset": {"line": 4, "column": 0}, "map": {"version":3,"sources":["turbopack:///[turbopack]/browser/dev/hmr-client/hmr-client.ts"],"sourcesContent":["/// <reference path=\"../../../shared/runtime-types.d.ts\" />\n/// <reference path=\"../../runtime/base/dev-globals.d.ts\" />\n/// <reference path=\"../../runtime/base/dev-protocol.d.ts\" />\n/// <reference path=\"../../runtime/base/dev-extensions.ts\" />\n\ntype SendMessage = (msg: any) => void\nexport type WebSocketMessage =\n | {\n type: 'turbopack-connected'\n }\n | {\n type: 'turbopack-message'\n data: Record<string, any>\n }\n\nexport type ClientOptions = {\n addMessageListener: (cb: (msg: WebSocketMessage) => void) => void\n sendMessage: SendMessage\n onUpdateError: (err: unknown) => void\n}\n\nexport function connect({\n addMessageListener,\n sendMessage,\n onUpdateError = console.error,\n}: ClientOptions) {\n addMessageListener((msg) => {\n switch (msg.type) {\n case 'turbopack-connected':\n handleSocketConnected(sendMessage)\n break\n default:\n try {\n if (Array.isArray(msg.data)) {\n for (let i = 0; i < msg.data.length; i++) {\n handleSocketMessage(msg.data[i] as ServerMessage)\n }\n } else {\n handleSocketMessage(msg.data as ServerMessage)\n }\n applyAggregatedUpdates()\n } catch (e: unknown) {\n console.warn(\n '[Fast Refresh] performing full reload\\n\\n' +\n \"Fast Refresh will perform a full reload when you edit a file that's imported by modules outside of the React rendering tree.\\n\" +\n 'You might have a file which exports a React component but also exports a value that is imported by a non-React component file.\\n' +\n 'Consider migrating the non-React component export to a separate file and importing it into both files.\\n\\n' +\n 'It is also possible the parent component of the component you edited is a class component, which disables Fast Refresh.\\n' +\n 'Fast Refresh requires at least one parent function component in your React tree.'\n )\n onUpdateError(e)\n location.reload()\n }\n break\n }\n })\n\n const queued = globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS\n if (queued != null && !Array.isArray(queued)) {\n throw new Error('A separate HMR handler was already registered')\n }\n globalThis.TURBOPACK_CHUNK_UPDATE_LISTENERS = {\n push: ([chunkPath, callback]: [ChunkListPath, UpdateCallback]) => {\n subscribeToChunkUpdate(chunkPath, sendMessage, callback)\n },\n }\n\n if (Array.isArray(queued)) {\n for (const [chunkPath, callback] of queued) {\n subscribeToChunkUpdate(chunkPath, sendMessage, callback)\n }\n }\n}\n\ntype UpdateCallbackSet = {\n callbacks: Set<UpdateCallback>\n unsubscribe: () => void\n}\n\nconst updateCallbackSets: Map<ResourceKey, UpdateCallbackSet> = new Map()\n\nfunction sendJSON(sendMessage: SendMessage, message: ClientMessage) {\n sendMessage(JSON.stringify(message))\n}\n\ntype ResourceKey = string\n\nfunction resourceKey(resource: ResourceIdentifier): ResourceKey {\n return JSON.stringify({\n path: resource.path,\n headers: resource.headers || null,\n })\n}\n\nfunction subscribeToUpdates(\n sendMessage: SendMessage,\n resource: ResourceIdentifier\n): () => void {\n sendJSON(sendMessage, {\n type: 'turbopack-subscribe',\n ...resource,\n })\n\n return () => {\n sendJSON(sendMessage, {\n type: 'turbopack-unsubscribe',\n ...resource,\n })\n }\n}\n\nfunction handleSocketConnected(sendMessage: SendMessage) {\n for (const key of updateCallbackSets.keys()) {\n subscribeToUpdates(sendMessage, JSON.parse(key))\n }\n}\n\n// we aggregate all pending updates until the issues are resolved\nconst chunkListsWithPendingUpdates: Map<ResourceKey, PartialServerMessage> =\n new Map()\n\nfunction aggregateUpdates(msg: PartialServerMessage) {\n const key = resourceKey(msg.resource)\n let aggregated = chunkListsWithPendingUpdates.get(key)\n\n if (aggregated) {\n aggregated.instruction = mergeChunkListUpdates(\n aggregated.instruction,\n msg.instruction\n )\n } else {\n chunkListsWithPendingUpdates.set(key, msg)\n }\n}\n\nfunction applyAggregatedUpdates() {\n if (chunkListsWithPendingUpdates.size === 0) return\n hooks.beforeRefresh()\n for (const msg of chunkListsWithPendingUpdates.values()) {\n triggerUpdate(msg)\n }\n chunkListsWithPendingUpdates.clear()\n finalizeUpdate()\n}\n\nfunction mergeChunkListUpdates(\n updateA: ChunkListUpdate,\n updateB: ChunkListUpdate\n): ChunkListUpdate {\n let chunks\n if (updateA.chunks != null) {\n if (updateB.chunks == null) {\n chunks = updateA.chunks\n } else {\n chunks = mergeChunkListChunks(updateA.chunks, updateB.chunks)\n }\n } else if (updateB.chunks != null) {\n chunks = updateB.chunks\n }\n\n let merged\n if (updateA.merged != null) {\n if (updateB.merged == null) {\n merged = updateA.merged\n } else {\n // Since `merged` is an array of updates, we need to merge them all into\n // one, consistent update.\n // Since there can only be `EcmascriptMergeUpdates` in the array, there is\n // no need to key on the `type` field.\n let update = updateA.merged[0]\n for (let i = 1; i < updateA.merged.length; i++) {\n update = mergeChunkListEcmascriptMergedUpdates(\n update,\n updateA.merged[i]\n )\n }\n\n for (let i = 0; i < updateB.merged.length; i++) {\n update = mergeChunkListEcmascriptMergedUpdates(\n update,\n updateB.merged[i]\n )\n }\n\n merged = [update]\n }\n } else if (updateB.merged != null) {\n merged = updateB.merged\n }\n\n return {\n type: 'ChunkListUpdate',\n chunks,\n merged,\n }\n}\n\nfunction mergeChunkListChunks(\n chunksA: Record<ChunkPath, ChunkUpdate>,\n chunksB: Record<ChunkPath, ChunkUpdate>\n): Record<ChunkPath, ChunkUpdate> {\n const chunks: Record<ChunkPath, ChunkUpdate> = {}\n\n for (const [chunkPath, chunkUpdateA] of Object.entries(chunksA) as Array<\n [ChunkPath, ChunkUpdate]\n >) {\n const chunkUpdateB = chunksB[chunkPath]\n if (chunkUpdateB != null) {\n const mergedUpdate = mergeChunkUpdates(chunkUpdateA, chunkUpdateB)\n if (mergedUpdate != null) {\n chunks[chunkPath] = mergedUpdate\n }\n } else {\n chunks[chunkPath] = chunkUpdateA\n }\n }\n\n for (const [chunkPath, chunkUpdateB] of Object.entries(chunksB) as Array<\n [ChunkPath, ChunkUpdate]\n >) {\n if (chunks[chunkPath] == null) {\n chunks[chunkPath] = chunkUpdateB\n }\n }\n\n return chunks\n}\n\nfunction mergeChunkUpdates(\n updateA: ChunkUpdate,\n updateB: ChunkUpdate\n): ChunkUpdate | undefined {\n if (\n (updateA.type === 'added' && updateB.type === 'deleted') ||\n (updateA.type === 'deleted' && updateB.type === 'added')\n ) {\n return undefined\n }\n\n if (updateA.type === 'partial') {\n invariant(updateA.instruction, 'Partial updates are unsupported')\n }\n\n if (updateB.type === 'partial') {\n invariant(updateB.instruction, 'Partial updates are unsupported')\n }\n\n return undefined\n}\n\nfunction mergeChunkListEcmascriptMergedUpdates(\n mergedA: EcmascriptMergedUpdate,\n mergedB: EcmascriptMergedUpdate\n): EcmascriptMergedUpdate {\n const entries = mergeEcmascriptChunkEntries(mergedA.entries, mergedB.entries)\n const chunks = mergeEcmascriptChunksUpdates(mergedA.chunks, mergedB.chunks)\n\n return {\n type: 'EcmascriptMergedUpdate',\n entries,\n chunks,\n }\n}\n\nfunction mergeEcmascriptChunkEntries(\n entriesA: Record<ModuleId, EcmascriptModuleEntry> | undefined,\n entriesB: Record<ModuleId, EcmascriptModuleEntry> | undefined\n): Record<ModuleId, EcmascriptModuleEntry> {\n return { ...entriesA, ...entriesB }\n}\n\nfunction mergeEcmascriptChunksUpdates(\n chunksA: Record<ChunkPath, EcmascriptMergedChunkUpdate> | undefined,\n chunksB: Record<ChunkPath, EcmascriptMergedChunkUpdate> | undefined\n): Record<ChunkPath, EcmascriptMergedChunkUpdate> | undefined {\n if (chunksA == null) {\n return chunksB\n }\n\n if (chunksB == null) {\n return chunksA\n }\n\n const chunks: Record<ChunkPath, EcmascriptMergedChunkUpdate> = {}\n\n for (const [chunkPath, chunkUpdateA] of Object.entries(chunksA) as Array<\n [ChunkPath, EcmascriptMergedChunkUpdate]\n >) {\n const chunkUpdateB = chunksB[chunkPath]\n if (chunkUpdateB != null) {\n const mergedUpdate = mergeEcmascriptChunkUpdates(\n chunkUpdateA,\n chunkUpdateB\n )\n if (mergedUpdate != null) {\n chunks[chunkPath] = mergedUpdate\n }\n } else {\n chunks[chunkPath] = chunkUpdateA\n }\n }\n\n for (const [chunkPath, chunkUpdateB] of Object.entries(chunksB) as Array<\n [ChunkPath, EcmascriptMergedChunkUpdate]\n >) {\n if (chunks[chunkPath] == null) {\n chunks[chunkPath] = chunkUpdateB\n }\n }\n\n if (Object.keys(chunks).length === 0) {\n return undefined\n }\n\n return chunks\n}\n\nfunction mergeEcmascriptChunkUpdates(\n updateA: EcmascriptMergedChunkUpdate,\n updateB: EcmascriptMergedChunkUpdate\n): EcmascriptMergedChunkUpdate | undefined {\n if (updateA.type === 'added' && updateB.type === 'deleted') {\n // These two completely cancel each other out.\n return undefined\n }\n\n if (updateA.type === 'deleted' && updateB.type === 'added') {\n const added = []\n const deleted = []\n const deletedModules = new Set(updateA.modules ?? [])\n const addedModules = new Set(updateB.modules ?? [])\n\n for (const moduleId of addedModules) {\n if (!deletedModules.has(moduleId)) {\n added.push(moduleId)\n }\n }\n\n for (const moduleId of deletedModules) {\n if (!addedModules.has(moduleId)) {\n deleted.push(moduleId)\n }\n }\n\n if (added.length === 0 && deleted.length === 0) {\n return undefined\n }\n\n return {\n type: 'partial',\n added,\n deleted,\n }\n }\n\n if (updateA.type === 'partial' && updateB.type === 'partial') {\n const added = new Set([...(updateA.added ?? []), ...(updateB.added ?? [])])\n const deleted = new Set([\n ...(updateA.deleted ?? []),\n ...(updateB.deleted ?? []),\n ])\n\n if (updateB.added != null) {\n for (const moduleId of updateB.added) {\n deleted.delete(moduleId)\n }\n }\n\n if (updateB.deleted != null) {\n for (const moduleId of updateB.deleted) {\n added.delete(moduleId)\n }\n }\n\n return {\n type: 'partial',\n added: [...added],\n deleted: [...deleted],\n }\n }\n\n if (updateA.type === 'added' && updateB.type === 'partial') {\n const modules = new Set([\n ...(updateA.modules ?? []),\n ...(updateB.added ?? []),\n ])\n\n for (const moduleId of updateB.deleted ?? []) {\n modules.delete(moduleId)\n }\n\n return {\n type: 'added',\n modules: [...modules],\n }\n }\n\n if (updateA.type === 'partial' && updateB.type === 'deleted') {\n // We could eagerly return `updateB` here, but this would potentially be\n // incorrect if `updateA` has added modules.\n\n const modules = new Set(updateB.modules ?? [])\n\n if (updateA.added != null) {\n for (const moduleId of updateA.added) {\n modules.delete(moduleId)\n }\n }\n\n return {\n type: 'deleted',\n modules: [...modules],\n }\n }\n\n // Any other update combination is invalid.\n\n return undefined\n}\n\nfunction invariant(_: never, message: string): never {\n throw new Error(`Invariant: ${message}`)\n}\n\nconst CRITICAL = ['bug', 'error', 'fatal']\n\nfunction compareByList(list: any[], a: any, b: any) {\n const aI = list.indexOf(a) + 1 || list.length\n const bI = list.indexOf(b) + 1 || list.length\n return aI - bI\n}\n\nconst chunksWithIssues: Map<ResourceKey, Issue[]> = new Map()\n\nfunction emitIssues() {\n const issues = []\n const deduplicationSet = new Set()\n\n for (const [_, chunkIssues] of chunksWithIssues) {\n for (const chunkIssue of chunkIssues) {\n if (deduplicationSet.has(chunkIssue.formatted)) continue\n\n issues.push(chunkIssue)\n deduplicationSet.add(chunkIssue.formatted)\n }\n }\n\n sortIssues(issues)\n\n hooks.issues(issues)\n}\n\nfunction handleIssues(msg: ServerMessage): boolean {\n const key = resourceKey(msg.resource)\n let hasCriticalIssues = false\n\n for (const issue of msg.issues) {\n if (CRITICAL.includes(issue.severity)) {\n hasCriticalIssues = true\n }\n }\n\n if (msg.issues.length > 0) {\n chunksWithIssues.set(key, msg.issues)\n } else if (chunksWithIssues.has(key)) {\n chunksWithIssues.delete(key)\n }\n\n emitIssues()\n\n return hasCriticalIssues\n}\n\nconst SEVERITY_ORDER = ['bug', 'fatal', 'error', 'warning', 'info', 'log']\nconst CATEGORY_ORDER = [\n 'parse',\n 'resolve',\n 'code generation',\n 'rendering',\n 'typescript',\n 'other',\n]\n\nfunction sortIssues(issues: Issue[]) {\n issues.sort((a, b) => {\n const first = compareByList(SEVERITY_ORDER, a.severity, b.severity)\n if (first !== 0) return first\n return compareByList(CATEGORY_ORDER, a.category, b.category)\n })\n}\n\nconst hooks = {\n beforeRefresh: () => {},\n refresh: () => {},\n buildOk: () => {},\n issues: (_issues: Issue[]) => {},\n}\n\nexport function setHooks(newHooks: typeof hooks) {\n Object.assign(hooks, newHooks)\n}\n\nfunction handleSocketMessage(msg: ServerMessage) {\n sortIssues(msg.issues)\n\n handleIssues(msg)\n\n switch (msg.type) {\n case 'issues':\n // issues are already handled\n break\n case 'partial':\n // aggregate updates\n aggregateUpdates(msg)\n break\n default:\n // run single update\n const runHooks = chunkListsWithPendingUpdates.size === 0\n if (runHooks) hooks.beforeRefresh()\n triggerUpdate(msg)\n if (runHooks) finalizeUpdate()\n break\n }\n}\n\nfunction finalizeUpdate() {\n hooks.refresh()\n hooks.buildOk()\n\n // This is used by the Next.js integration test suite to notify it when HMR\n // updates have been completed.\n // TODO: Only run this in test environments (gate by `process.env.__NEXT_TEST_MODE`)\n if (globalThis.__NEXT_HMR_CB) {\n globalThis.__NEXT_HMR_CB()\n globalThis.__NEXT_HMR_CB = null\n }\n}\n\nfunction subscribeToChunkUpdate(\n chunkListPath: ChunkListPath,\n sendMessage: SendMessage,\n callback: UpdateCallback\n): () => void {\n return subscribeToUpdate(\n {\n path: chunkListPath,\n },\n sendMessage,\n callback\n )\n}\n\nexport function subscribeToUpdate(\n resource: ResourceIdentifier,\n sendMessage: SendMessage,\n callback: UpdateCallback\n) {\n const key = resourceKey(resource)\n let callbackSet: UpdateCallbackSet\n const existingCallbackSet = updateCallbackSets.get(key)\n if (!existingCallbackSet) {\n callbackSet = {\n callbacks: new Set([callback]),\n unsubscribe: subscribeToUpdates(sendMessage, resource),\n }\n updateCallbackSets.set(key, callbackSet)\n } else {\n existingCallbackSet.callbacks.add(callback)\n callbackSet = existingCallbackSet\n }\n\n return () => {\n callbackSet.callbacks.delete(callback)\n\n if (callbackSet.callbacks.size === 0) {\n callbackSet.unsubscribe()\n updateCallbackSets.delete(key)\n }\n }\n}\n\nfunction triggerUpdate(msg: ServerMessage) {\n const key = resourceKey(msg.resource)\n const callbackSet = updateCallbackSets.get(key)\n if (!callbackSet) {\n return\n }\n\n for (const callback of callbackSet.callbacks) {\n callback(msg)\n }\n\n if (msg.type === 'notFound') {\n // This indicates that the resource which we subscribed to either does not exist or\n // has been deleted. In either case, we should clear all update callbacks, so if a\n // new subscription is created for the same resource, it will send a new \"subscribe\"\n // message to the server.\n // No need to send an \"unsubscribe\" message to the server, it will have already\n // dropped the update stream before sending the \"notFound\" message.\n updateCallbackSets.delete(key)\n }\n}\n"],"names":[],"mappings":"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","ignoreList":[0],"debugId":null}}]
|
|
6
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
module.exports = [
|
|
2
|
-
"[turbopack]/browser/dev/hmr-client/hmr-client.ts [app-ssr] (ecmascript, async loader)", ((__turbopack_context__) => {
|
|
3
|
-
|
|
4
|
-
__turbopack_context__.v((parentImport) => {
|
|
5
|
-
return Promise.all([
|
|
6
|
-
"server/chunks/ssr/[turbopack]_browser_dev_hmr-client_hmr-client_ts_818f0fdf._.js"
|
|
7
|
-
].map((chunk) => __turbopack_context__.l(chunk))).then(() => {
|
|
8
|
-
return parentImport("[turbopack]/browser/dev/hmr-client/hmr-client.ts [app-ssr] (ecmascript)");
|
|
9
|
-
});
|
|
10
|
-
});
|
|
11
|
-
}),
|
|
12
|
-
];
|