prime-dev-cli 1.0.12 → 1.0.14
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/dist/server/.next/BUILD_ID +1 -1
- package/dist/server/.next/app-build-manifest.json +5 -5
- package/dist/server/.next/app-path-routes-manifest.json +1 -0
- package/dist/server/.next/build-manifest.json +6 -6
- package/dist/server/.next/cache/.rscinfo +1 -1
- package/dist/server/.next/cache/.tsbuildinfo +1 -1
- package/dist/server/.next/cache/eslint/.cache_1qa5vxt +1 -1
- package/dist/server/.next/fallback-build-manifest.json +6 -6
- package/dist/server/.next/next-minimal-server.js.nft.json +1 -1
- package/dist/server/.next/next-server.js.nft.json +1 -1
- package/dist/server/.next/prerender-manifest.json +9 -9
- package/dist/server/.next/required-server-files.json +1 -1
- package/dist/server/.next/server/app/_not-found/page/app-build-manifest.json +1 -1
- package/dist/server/.next/server/app/_not-found/page.js +1 -1
- package/dist/server/.next/server/app/_not-found/page.js.nft.json +1 -1
- package/dist/server/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/server/.next/server/app/_not-found.html +1 -1
- package/dist/server/.next/server/app/_not-found.rsc +2 -2
- package/dist/server/.next/server/app/api/all-projects-envs/route.js +1 -1
- package/dist/server/.next/server/app/api/all-projects-envs/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/check-mock-intercept/route.js +1 -1
- package/dist/server/.next/server/app/api/check-mock-intercept/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/check-workspace/route.js +1 -1
- package/dist/server/.next/server/app/api/check-workspace/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/cleanup-mock/route.js +1 -1
- package/dist/server/.next/server/app/api/cleanup-mock/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/delete-mock-api/route.js +1 -1
- package/dist/server/.next/server/app/api/delete-mock-api/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/get-mock-data/route.js +1 -1
- package/dist/server/.next/server/app/api/get-mock-data/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/initialize-workspace/route.js +1 -1
- package/dist/server/.next/server/app/api/initialize-workspace/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/microapp-proxy-change-stream/route.js +1 -1
- package/dist/server/.next/server/app/api/microapp-proxy-change-stream/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/microapp-proxy-config/route.js +1 -1
- package/dist/server/.next/server/app/api/microapp-proxy-config/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/mock-file/route.js +1 -1
- package/dist/server/.next/server/app/api/mock-file/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/mock-file-content/route.js +1 -1
- package/dist/server/.next/server/app/api/mock-file-content/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/mock-open-status/route.js +1 -1
- package/dist/server/.next/server/app/api/mock-open-status/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/mock-setting/route.js +1 -1
- package/dist/server/.next/server/app/api/mock-setting/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/open-all-mock/route.js +1 -1
- package/dist/server/.next/server/app/api/open-all-mock/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/process/start/route.js +1 -1
- package/dist/server/.next/server/app/api/process/start/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/process/status/route.js +1 -1
- package/dist/server/.next/server/app/api/process/status/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/project-config/route.js +1 -1
- package/dist/server/.next/server/app/api/project-config/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/retry-project/route.js +1 -1
- package/dist/server/.next/server/app/api/retry-project/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/workspace/create/route/app-build-manifest.json +11 -0
- package/dist/server/.next/server/app/api/workspace/create/route/app-paths-manifest.json +3 -0
- package/dist/server/.next/server/app/api/workspace/create/route/build-manifest.json +17 -0
- package/dist/server/.next/server/app/api/workspace/create/route/next-font-manifest.json +6 -0
- package/dist/server/.next/server/app/api/workspace/create/route/react-loadable-manifest.json +1 -0
- package/dist/server/.next/server/app/api/workspace/create/route/server-reference-manifest.json +4 -0
- package/dist/server/.next/server/app/api/workspace/create/route.js +7 -0
- package/dist/server/.next/server/app/api/workspace/create/route.js.map +5 -0
- package/dist/server/.next/server/app/api/workspace/create/route.js.nft.json +1 -0
- package/dist/server/.next/server/app/api/workspace/create/route_client-reference-manifest.js +2 -0
- package/dist/server/.next/server/app/configuration/page/app-build-manifest.json +2 -2
- package/dist/server/.next/server/app/configuration/page.js +1 -1
- package/dist/server/.next/server/app/configuration/page.js.nft.json +1 -1
- package/dist/server/.next/server/app/configuration/page_client-reference-manifest.js +1 -1
- package/dist/server/.next/server/app/configuration.html +1 -1
- package/dist/server/.next/server/app/configuration.rsc +3 -3
- package/dist/server/.next/server/app/index.html +1 -1
- package/dist/server/.next/server/app/index.rsc +2 -2
- package/dist/server/.next/server/app/initialization/page/app-build-manifest.json +1 -1
- package/dist/server/.next/server/app/initialization/page.js +1 -1
- package/dist/server/.next/server/app/initialization/page.js.nft.json +1 -1
- package/dist/server/.next/server/app/initialization/page_client-reference-manifest.js +1 -1
- package/dist/server/.next/server/app/initialization.html +1 -1
- package/dist/server/.next/server/app/initialization.rsc +2 -2
- package/dist/server/.next/server/app/page/app-build-manifest.json +1 -1
- package/dist/server/.next/server/app/page.js +1 -1
- package/dist/server/.next/server/app/page.js.nft.json +1 -1
- package/dist/server/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/server/.next/server/app-paths-manifest.json +1 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__be3de126._.js → [root-of-the-server]__07bd4a2b._.js} +2 -2
- package/dist/server/.next/server/chunks/[root-of-the-server]__07bd4a2b._.js.map +1 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__0aaf11fd._.js +8 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__0aaf11fd._.js.map +1 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__a6211ee0._.js → [root-of-the-server]__442ae257._.js} +2 -2
- package/dist/server/.next/server/chunks/[root-of-the-server]__442ae257._.js.map +1 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__4498bb74._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__4498bb74._.js.map +1 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__6cc174c2._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__6cc174c2._.js.map +1 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__6f17de68._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__6f17de68._.js.map +1 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__933f7077._.js → [root-of-the-server]__6f66caff._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__933f7077._.js.map → [root-of-the-server]__6f66caff._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__e301c560._.js → [root-of-the-server]__70a56518._.js} +2 -2
- package/dist/server/.next/server/chunks/[root-of-the-server]__70a56518._.js.map +1 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__7c3ad3a9._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__7c3ad3a9._.js.map +1 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__5cddc64c._.js → [root-of-the-server]__9370ea2b._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__5cddc64c._.js.map → [root-of-the-server]__9370ea2b._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__802aba2d._.js → [root-of-the-server]__9f32f8a7._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__802aba2d._.js.map → [root-of-the-server]__9f32f8a7._.js.map} +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__aba5bddd._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__aba5bddd._.js.map +1 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__b310ec65._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__b310ec65._.js.map +1 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__837d58ae._.js → [root-of-the-server]__c15317cb._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__837d58ae._.js.map → [root-of-the-server]__c15317cb._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__ef09a48e._.js → [root-of-the-server]__c8cd1231._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__ef09a48e._.js.map → [root-of-the-server]__c8cd1231._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__582946e6._.js → [root-of-the-server]__e54d7eff._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__582946e6._.js.map → [root-of-the-server]__e54d7eff._.js.map} +1 -1
- package/dist/server/.next/server/chunks/{[root-of-the-server]__09914a79._.js → [root-of-the-server]__e68f3764._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__09914a79._.js.map → [root-of-the-server]__e68f3764._.js.map} +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__f76d331f._.js +3 -0
- package/dist/server/.next/server/chunks/[root-of-the-server]__f76d331f._.js.map +1 -0
- package/dist/server/.next/server/chunks/{[root-of-the-server]__52d487d8._.js → [root-of-the-server]__fefd40ba._.js} +2 -2
- package/dist/server/.next/server/chunks/{[root-of-the-server]__52d487d8._.js.map → [root-of-the-server]__fefd40ba._.js.map} +1 -1
- package/dist/server/.next/server/chunks/ssr/[root-of-the-server]__e3a2aebd._.js +3 -0
- package/dist/server/.next/server/chunks/ssr/{_bb352729._.js → _5d353cf8._.js} +3 -3
- package/dist/server/.next/server/chunks/ssr/_5d353cf8._.js.map +1 -0
- package/dist/server/.next/server/middleware-build-manifest.js +4 -4
- package/dist/server/.next/server/pages/404.html +1 -1
- package/dist/server/.next/server/pages/500.html +1 -1
- package/dist/server/.next/server/pages/_app/build-manifest.json +2 -2
- package/dist/server/.next/server/pages/_error/build-manifest.json +2 -2
- package/dist/server/.next/server/server-reference-manifest.js +1 -1
- package/dist/server/.next/server/server-reference-manifest.json +1 -1
- package/dist/server/.next/static/chunks/{2befba13bed43c5f.js → 0089092a8fff7e00.js} +2 -2
- package/dist/server/.next/static/chunks/{d74cc70dd8ef74c9.js → 0d1500d118ef892c.js} +2 -2
- package/dist/server/.next/static/chunks/1ad898191df92f90.css +3 -0
- package/dist/server/.next/static/chunks/2c0e57fbc9520adc.js +61 -0
- package/dist/server/.next/static/chunks/765c1fd313250591.js.map +1 -0
- package/dist/server/.next/static/chunks/b0840b8d648f6401.css.map +1 -0
- package/dist/server/.next/static/chunks/{4cbec079b6e3e189.js → bf41727b544d17b4.js} +2 -2
- package/dist/server/.next/static/chunks/{a898634af0862944.js.map → fc5c3c838ec48e75.js.map} +1 -1
- package/dist/server/.next/static/chunks/pages/_app.js +2 -2
- package/dist/server/.next/static/chunks/pages/_error.js +2 -2
- package/dist/server/.next/trace +1 -1
- package/package.json +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__07de450e._.js +0 -3
- package/dist/server/.next/server/chunks/[root-of-the-server]__07de450e._.js.map +0 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__09808308._.js +0 -3
- package/dist/server/.next/server/chunks/[root-of-the-server]__09808308._.js.map +0 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__42bc7b42._.js +0 -8
- package/dist/server/.next/server/chunks/[root-of-the-server]__42bc7b42._.js.map +0 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__4dc677cb._.js +0 -3
- package/dist/server/.next/server/chunks/[root-of-the-server]__4dc677cb._.js.map +0 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__a6211ee0._.js.map +0 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__aca25fcf._.js +0 -3
- package/dist/server/.next/server/chunks/[root-of-the-server]__aca25fcf._.js.map +0 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__be3de126._.js.map +0 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__da89e112._.js +0 -3
- package/dist/server/.next/server/chunks/[root-of-the-server]__da89e112._.js.map +0 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__e07d75ff._.js +0 -3
- package/dist/server/.next/server/chunks/[root-of-the-server]__e07d75ff._.js.map +0 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__e301c560._.js.map +0 -1
- package/dist/server/.next/server/chunks/ssr/[root-of-the-server]__6d393273._.js +0 -3
- package/dist/server/.next/server/chunks/ssr/_bb352729._.js.map +0 -1
- package/dist/server/.next/static/chunks/344b0062191ace22.css.map +0 -1
- package/dist/server/.next/static/chunks/6c91d5f280e79a14.css +0 -3
- package/dist/server/.next/static/chunks/700389bfed628512.js +0 -61
- package/dist/server/.next/static/chunks/8d4c1c4e33fc41f3.js.map +0 -1
- /package/dist/server/.next/server/chunks/ssr/{[root-of-the-server]__6d393273._.js.map → [root-of-the-server]__e3a2aebd._.js.map} +0 -0
- /package/dist/server/.next/static/{7OebYsNYEi58ku74bswdb → e1tjd_meooMxESv5gSLAU}/_buildManifest.js +0 -0
- /package/dist/server/.next/static/{7OebYsNYEi58ku74bswdb → e1tjd_meooMxESv5gSLAU}/_clientMiddlewareManifest.json +0 -0
- /package/dist/server/.next/static/{7OebYsNYEi58ku74bswdb → e1tjd_meooMxESv5gSLAU}/_ssgManifest.js +0 -0
package/dist/server/.next/trace
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"name":"generate-buildid","duration":140,"timestamp":1398025372869,"id":4,"parentId":1,"tags":{},"startTime":1758693048051,"traceId":"bd888005bc51052f"},{"name":"load-custom-routes","duration":1683,"timestamp":1398025373059,"id":5,"parentId":1,"tags":{},"startTime":1758693048051,"traceId":"bd888005bc51052f"},{"name":"create-dist-dir","duration":288,"timestamp":1398025423425,"id":6,"parentId":1,"tags":{},"startTime":1758693048101,"traceId":"bd888005bc51052f"},{"name":"create-pages-mapping","duration":138,"timestamp":1398025732247,"id":7,"parentId":1,"tags":{},"startTime":1758693048410,"traceId":"bd888005bc51052f"},{"name":"collect-app-paths","duration":3537,"timestamp":1398025732411,"id":8,"parentId":1,"tags":{},"startTime":1758693048410,"traceId":"bd888005bc51052f"},{"name":"create-app-mapping","duration":2737,"timestamp":1398025735982,"id":9,"parentId":1,"tags":{},"startTime":1758693048414,"traceId":"bd888005bc51052f"},{"name":"public-dir-conflict-check","duration":546,"timestamp":1398025739073,"id":10,"parentId":1,"tags":{},"startTime":1758693048417,"traceId":"bd888005bc51052f"},{"name":"generate-routes-manifest","duration":2110,"timestamp":1398025739857,"id":11,"parentId":1,"tags":{},"startTime":1758693048418,"traceId":"bd888005bc51052f"},{"name":"verify-and-lint","duration":3284610,"timestamp":1398031388455,"id":15,"parentId":1,"tags":{},"startTime":1758693054066,"traceId":"bd888005bc51052f"},{"name":"verify-typescript-setup","duration":3504158,"timestamp":1398031385204,"id":14,"parentId":1,"tags":{},"startTime":1758693054063,"traceId":"bd888005bc51052f"},{"name":"check-static-error-page","duration":2636,"timestamp":1398034900536,"id":18,"parentId":17,"tags":{},"startTime":1758693057578,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":2945,"timestamp":1398034915883,"id":19,"parentId":17,"tags":{"page":"/_app"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":2399,"timestamp":1398034916442,"id":21,"parentId":17,"tags":{"page":"/_document"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":2525,"timestamp":1398034916378,"id":20,"parentId":17,"tags":{"page":"/_error"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1329996,"timestamp":1398034920768,"id":55,"parentId":28,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1335089,"timestamp":1398034916674,"id":28,"parentId":17,"tags":{"page":"/api/current-branch"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1336032,"timestamp":1398034920791,"id":56,"parentId":29,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1340206,"timestamp":1398034916688,"id":29,"parentId":17,"tags":{"page":"/api/delete-mock-api"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1345632,"timestamp":1398034920823,"id":57,"parentId":30,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1349798,"timestamp":1398034916698,"id":30,"parentId":17,"tags":{"page":"/api/get-mock-data"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1353536,"timestamp":1398034920859,"id":58,"parentId":31,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1357747,"timestamp":1398034916707,"id":31,"parentId":17,"tags":{"page":"/api/initialize-workspace"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1361529,"timestamp":1398034921014,"id":60,"parentId":33,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1365861,"timestamp":1398034916793,"id":33,"parentId":17,"tags":{"page":"/api/microapp-proxy-config"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1365284,"timestamp":1398034920651,"id":54,"parentId":27,"tags":{},"startTime":1758693057598,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1369318,"timestamp":1398034916659,"id":27,"parentId":17,"tags":{"page":"/api/cleanup-project"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1365100,"timestamp":1398034921039,"id":61,"parentId":34,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1369350,"timestamp":1398034916807,"id":34,"parentId":17,"tags":{"page":"/api/mock-file-content"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1368271,"timestamp":1398034921082,"id":63,"parentId":36,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1372535,"timestamp":1398034916886,"id":36,"parentId":17,"tags":{"page":"/api/mock-open-status"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1371962,"timestamp":1398034921093,"id":64,"parentId":37,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1376177,"timestamp":1398034916905,"id":37,"parentId":17,"tags":{"page":"/api/mock-setting"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1379922,"timestamp":1398034921109,"id":65,"parentId":38,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1384149,"timestamp":1398034916914,"id":38,"parentId":17,"tags":{"page":"/api/open-all-mock"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1385782,"timestamp":1398034921120,"id":66,"parentId":39,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1390043,"timestamp":1398034916923,"id":39,"parentId":17,"tags":{"page":"/api/open-project"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1390290,"timestamp":1398034921130,"id":67,"parentId":40,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1394533,"timestamp":1398034916932,"id":40,"parentId":17,"tags":{"page":"/api/process/logs"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1391423,"timestamp":1398034921067,"id":62,"parentId":35,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1395701,"timestamp":1398034916817,"id":35,"parentId":17,"tags":{"page":"/api/mock-file"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1397140,"timestamp":1398034921147,"id":68,"parentId":41,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1401394,"timestamp":1398034916939,"id":41,"parentId":17,"tags":{"page":"/api/process/logs/stream"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1397960,"timestamp":1398034921168,"id":69,"parentId":42,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1402201,"timestamp":1398034916946,"id":42,"parentId":17,"tags":{"page":"/api/process/start"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1398592,"timestamp":1398034920608,"id":53,"parentId":26,"tags":{},"startTime":1758693057598,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1402564,"timestamp":1398034916649,"id":26,"parentId":17,"tags":{"page":"/api/cleanup-mock"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1404284,"timestamp":1398034921275,"id":70,"parentId":43,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1408635,"timestamp":1398034916955,"id":43,"parentId":17,"tags":{"page":"/api/process/status"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1405297,"timestamp":1398034921320,"id":72,"parentId":45,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1409681,"timestamp":1398034916970,"id":45,"parentId":17,"tags":{"page":"/api/retry-project"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1407871,"timestamp":1398034920553,"id":52,"parentId":25,"tags":{},"startTime":1758693057598,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1411828,"timestamp":1398034916633,"id":25,"parentId":17,"tags":{"page":"/api/check-workspace"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1407504,"timestamp":1398034921309,"id":71,"parentId":44,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1411952,"timestamp":1398034916962,"id":44,"parentId":17,"tags":{"page":"/api/project-config"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1411062,"timestamp":1398034920507,"id":51,"parentId":24,"tags":{},"startTime":1758693057598,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1414982,"timestamp":1398034916616,"id":24,"parentId":17,"tags":{"page":"/api/check-mock-intercept"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1422177,"timestamp":1398034921331,"id":73,"parentId":49,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1426527,"timestamp":1398034917019,"id":49,"parentId":17,"tags":{"page":"/favicon.ico"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1424900,"timestamp":1398034920355,"id":50,"parentId":23,"tags":{},"startTime":1758693057598,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1429067,"timestamp":1398034916595,"id":23,"parentId":17,"tags":{"page":"/api/all-projects-envs"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1428816,"timestamp":1398034924176,"id":76,"parentId":47,"tags":{},"startTime":1758693057602,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1436042,"timestamp":1398034916993,"id":47,"parentId":17,"tags":{"page":"/initialization"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1433182,"timestamp":1398034921722,"id":74,"parentId":22,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1438465,"timestamp":1398034916456,"id":22,"parentId":17,"tags":{"page":"/_not-found"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1435339,"timestamp":1398034924169,"id":75,"parentId":48,"tags":{},"startTime":1758693057602,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1442526,"timestamp":1398034917007,"id":48,"parentId":17,"tags":{"page":"/"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1436307,"timestamp":1398034924186,"id":77,"parentId":46,"tags":{},"startTime":1758693057602,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1443524,"timestamp":1398034916977,"id":46,"parentId":17,"tags":{"page":"/configuration"},"startTime":1758693057595,"traceId":"bd888005bc51052f"},{"name":"is-page-static","duration":1443104,"timestamp":1398034920975,"id":59,"parentId":32,"tags":{},"startTime":1758693057599,"traceId":"bd888005bc51052f"},{"name":"check-page","duration":1447382,"timestamp":1398034916717,"id":32,"parentId":17,"tags":{"page":"/api/microapp-proxy-change-stream"},"startTime":1758693057594,"traceId":"bd888005bc51052f"},{"name":"static-check","duration":1464093,"timestamp":1398034900124,"id":17,"parentId":1,"tags":{},"startTime":1758693057578,"traceId":"bd888005bc51052f"},{"name":"generate-required-server-files","duration":460,"timestamp":1398036364741,"id":79,"parentId":1,"tags":{},"startTime":1758693059043,"traceId":"bd888005bc51052f"},{"name":"write-routes-manifest","duration":979,"timestamp":1398036376273,"id":81,"parentId":1,"tags":{},"startTime":1758693059054,"traceId":"bd888005bc51052f"},{"name":"load-dotenv","duration":35,"timestamp":1398036392666,"id":84,"parentId":83,"tags":{},"startTime":1758693059070,"traceId":"bd888005bc51052f"},{"name":"run-export-path-map","duration":265,"timestamp":1398036543624,"id":85,"parentId":83,"tags":{},"startTime":1758693059221,"traceId":"bd888005bc51052f"},{"name":"next-export","duration":1718579,"timestamp":1398036392045,"id":83,"parentId":1,"tags":{},"startTime":1758693059070,"traceId":"bd888005bc51052f"},{"name":"move-exported-app-not-found-","duration":5639,"timestamp":1398038112091,"id":86,"parentId":82,"tags":{},"startTime":1758693060790,"traceId":"bd888005bc51052f"},{"name":"move-exported-page","duration":14484,"timestamp":1398038117864,"id":87,"parentId":82,"tags":{},"startTime":1758693060796,"traceId":"bd888005bc51052f"},{"name":"static-generation","duration":1986292,"timestamp":1398036386068,"id":82,"parentId":1,"tags":{},"startTime":1758693059064,"traceId":"bd888005bc51052f"},{"name":"write-routes-manifest","duration":52536,"timestamp":1398038372385,"id":88,"parentId":1,"tags":{},"startTime":1758693061050,"traceId":"bd888005bc51052f"},{"name":"node-file-trace-build","duration":8131861,"timestamp":1398036370487,"id":80,"parentId":1,"tags":{"isTurbotrace":"false"},"startTime":1758693059048,"traceId":"bd888005bc51052f"},{"name":"apply-include-excludes","duration":317,"timestamp":1398044502376,"id":89,"parentId":1,"tags":{},"startTime":1758693067180,"traceId":"bd888005bc51052f"},{"name":"print-tree-view","duration":2414,"timestamp":1398044503167,"id":90,"parentId":1,"tags":{},"startTime":1758693067181,"traceId":"bd888005bc51052f"},{"name":"telemetry-flush","duration":25,"timestamp":1398044505591,"id":91,"parentId":1,"tags":{},"startTime":1758693067183,"traceId":"bd888005bc51052f"},{"name":"next-build","duration":19267205,"timestamp":1398025238416,"id":1,"tags":{"buildMode":"default","isTurboBuild":"true","version":"15.3.4","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1758693047916,"traceId":"bd888005bc51052f"}]
|
|
1
|
+
[{"name":"generate-buildid","duration":140,"timestamp":275247639046,"id":4,"parentId":1,"tags":{},"startTime":1762408282358,"traceId":"cbf742c0d8dfb185"},{"name":"load-custom-routes","duration":1077,"timestamp":275247639234,"id":5,"parentId":1,"tags":{},"startTime":1762408282358,"traceId":"cbf742c0d8dfb185"},{"name":"create-dist-dir","duration":161,"timestamp":275247674270,"id":6,"parentId":1,"tags":{},"startTime":1762408282393,"traceId":"cbf742c0d8dfb185"},{"name":"create-pages-mapping","duration":110,"timestamp":275247675653,"id":7,"parentId":1,"tags":{},"startTime":1762408282394,"traceId":"cbf742c0d8dfb185"},{"name":"collect-app-paths","duration":1961,"timestamp":275247675781,"id":8,"parentId":1,"tags":{},"startTime":1762408282394,"traceId":"cbf742c0d8dfb185"},{"name":"create-app-mapping","duration":30417,"timestamp":275247677762,"id":9,"parentId":1,"tags":{},"startTime":1762408282396,"traceId":"cbf742c0d8dfb185"},{"name":"public-dir-conflict-check","duration":303,"timestamp":275247708547,"id":10,"parentId":1,"tags":{},"startTime":1762408282427,"traceId":"cbf742c0d8dfb185"},{"name":"generate-routes-manifest","duration":1222,"timestamp":275247708966,"id":11,"parentId":1,"tags":{},"startTime":1762408282428,"traceId":"cbf742c0d8dfb185"},{"name":"verify-and-lint","duration":1981920,"timestamp":275250591516,"id":15,"parentId":1,"tags":{},"startTime":1762408285310,"traceId":"cbf742c0d8dfb185"},{"name":"verify-typescript-setup","duration":2371168,"timestamp":275250586128,"id":14,"parentId":1,"tags":{},"startTime":1762408285305,"traceId":"cbf742c0d8dfb185"},{"name":"check-static-error-page","duration":1939,"timestamp":275252965902,"id":18,"parentId":17,"tags":{},"startTime":1762408287685,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":2163,"timestamp":275252979170,"id":19,"parentId":17,"tags":{"page":"/_app"},"startTime":1762408287698,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":1675,"timestamp":275252979669,"id":21,"parentId":17,"tags":{"page":"/_document"},"startTime":1762408287698,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":1762,"timestamp":275252979613,"id":20,"parentId":17,"tags":{"page":"/_error"},"startTime":1762408287698,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":314362,"timestamp":275252982986,"id":54,"parentId":27,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":317532,"timestamp":275252979873,"id":27,"parentId":17,"tags":{"page":"/api/cleanup-project"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":327484,"timestamp":275252982748,"id":51,"parentId":23,"tags":{},"startTime":1762408287701,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":330514,"timestamp":275252979746,"id":23,"parentId":17,"tags":{"page":"/api/all-projects-envs"},"startTime":1762408287698,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":329289,"timestamp":275252982938,"id":53,"parentId":26,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":332382,"timestamp":275252979863,"id":26,"parentId":17,"tags":{"page":"/api/cleanup-mock"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":334654,"timestamp":275252983241,"id":59,"parentId":31,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":338018,"timestamp":275252979913,"id":31,"parentId":17,"tags":{"page":"/api/initialize-workspace"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":336069,"timestamp":275252983184,"id":57,"parentId":30,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":339395,"timestamp":275252979906,"id":30,"parentId":17,"tags":{"page":"/api/get-mock-data"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":338985,"timestamp":275252983351,"id":60,"parentId":32,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":342439,"timestamp":275252979921,"id":32,"parentId":17,"tags":{"page":"/api/microapp-proxy-change-stream"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":339073,"timestamp":275252983400,"id":62,"parentId":37,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":342400,"timestamp":275252980082,"id":37,"parentId":17,"tags":{"page":"/api/mock-setting"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":340369,"timestamp":275252982893,"id":52,"parentId":24,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":343519,"timestamp":275252979762,"id":24,"parentId":17,"tags":{"page":"/api/check-mock-intercept"},"startTime":1762408287698,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":341193,"timestamp":275252983434,"id":64,"parentId":39,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":344555,"timestamp":275252980098,"id":39,"parentId":17,"tags":{"page":"/api/open-project"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":343086,"timestamp":275252983456,"id":66,"parentId":36,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":346498,"timestamp":275252980063,"id":36,"parentId":17,"tags":{"page":"/api/mock-open-status"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":343209,"timestamp":275252983383,"id":61,"parentId":33,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":346670,"timestamp":275252979929,"id":33,"parentId":17,"tags":{"page":"/api/microapp-proxy-config"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":344667,"timestamp":275252983465,"id":67,"parentId":40,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":348273,"timestamp":275252980104,"id":40,"parentId":17,"tags":{"page":"/api/process/logs"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":345134,"timestamp":275252983445,"id":65,"parentId":38,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":348504,"timestamp":275252980090,"id":38,"parentId":17,"tags":{"page":"/api/open-all-mock"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":346837,"timestamp":275252983495,"id":69,"parentId":42,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":350239,"timestamp":275252980117,"id":42,"parentId":17,"tags":{"page":"/api/process/start"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":347254,"timestamp":275252983154,"id":56,"parentId":28,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":350533,"timestamp":275252979886,"id":28,"parentId":17,"tags":{"page":"/api/current-branch"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":348235,"timestamp":275252983032,"id":55,"parentId":25,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":351461,"timestamp":275252979849,"id":25,"parentId":17,"tags":{"page":"/api/check-workspace"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":348570,"timestamp":275252983626,"id":71,"parentId":44,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":352092,"timestamp":275252980129,"id":44,"parentId":17,"tags":{"page":"/api/project-config"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":350814,"timestamp":275252983655,"id":74,"parentId":34,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":354548,"timestamp":275252979943,"id":34,"parentId":17,"tags":{"page":"/api/mock-file-content"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":350932,"timestamp":275252983647,"id":73,"parentId":46,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":354446,"timestamp":275252980142,"id":46,"parentId":17,"tags":{"page":"/api/workspace/create"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":352191,"timestamp":275252983601,"id":70,"parentId":43,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":355678,"timestamp":275252980122,"id":43,"parentId":17,"tags":{"page":"/api/process/status"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":355249,"timestamp":275252983475,"id":68,"parentId":41,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":358636,"timestamp":275252980110,"id":41,"parentId":17,"tags":{"page":"/api/process/logs/stream"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":357309,"timestamp":275252983638,"id":72,"parentId":45,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":360830,"timestamp":275252980137,"id":45,"parentId":17,"tags":{"page":"/api/retry-project"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":360759,"timestamp":275252983421,"id":63,"parentId":35,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":364251,"timestamp":275252979951,"id":35,"parentId":17,"tags":{"page":"/api/mock-file"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":365565,"timestamp":275252983813,"id":76,"parentId":50,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":369217,"timestamp":275252980186,"id":50,"parentId":17,"tags":{"page":"/favicon.ico"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":365632,"timestamp":275252983803,"id":75,"parentId":22,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":369760,"timestamp":275252979681,"id":22,"parentId":17,"tags":{"page":"/_not-found"},"startTime":1762408287698,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":368802,"timestamp":275252986490,"id":78,"parentId":48,"tags":{},"startTime":1762408287705,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":375139,"timestamp":275252980167,"id":48,"parentId":17,"tags":{"page":"/initialization"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":369435,"timestamp":275252986494,"id":79,"parentId":47,"tags":{},"startTime":1762408287705,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":375787,"timestamp":275252980149,"id":47,"parentId":17,"tags":{"page":"/configuration"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":370078,"timestamp":275252986478,"id":77,"parentId":49,"tags":{},"startTime":1762408287705,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":376397,"timestamp":275252980177,"id":49,"parentId":17,"tags":{"page":"/"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"is-page-static","duration":373723,"timestamp":275252983205,"id":58,"parentId":29,"tags":{},"startTime":1762408287702,"traceId":"cbf742c0d8dfb185"},{"name":"check-page","duration":377041,"timestamp":275252979898,"id":29,"parentId":17,"tags":{"page":"/api/delete-mock-api"},"startTime":1762408287699,"traceId":"cbf742c0d8dfb185"},{"name":"static-check","duration":391372,"timestamp":275252965605,"id":17,"parentId":1,"tags":{},"startTime":1762408287684,"traceId":"cbf742c0d8dfb185"},{"name":"generate-required-server-files","duration":234,"timestamp":275253357188,"id":81,"parentId":1,"tags":{},"startTime":1762408288076,"traceId":"cbf742c0d8dfb185"},{"name":"write-routes-manifest","duration":1025,"timestamp":275253363380,"id":83,"parentId":1,"tags":{},"startTime":1762408288082,"traceId":"cbf742c0d8dfb185"},{"name":"load-dotenv","duration":11,"timestamp":275253376582,"id":86,"parentId":85,"tags":{},"startTime":1762408288095,"traceId":"cbf742c0d8dfb185"},{"name":"run-export-path-map","duration":246,"timestamp":275253485142,"id":87,"parentId":85,"tags":{},"startTime":1762408288204,"traceId":"cbf742c0d8dfb185"},{"name":"next-export","duration":507211,"timestamp":275253376102,"id":85,"parentId":1,"tags":{},"startTime":1762408288095,"traceId":"cbf742c0d8dfb185"},{"name":"move-exported-app-not-found-","duration":4102,"timestamp":275253884569,"id":88,"parentId":84,"tags":{},"startTime":1762408288603,"traceId":"cbf742c0d8dfb185"},{"name":"move-exported-page","duration":8672,"timestamp":275253888776,"id":89,"parentId":84,"tags":{},"startTime":1762408288607,"traceId":"cbf742c0d8dfb185"},{"name":"static-generation","duration":565664,"timestamp":275253372454,"id":84,"parentId":1,"tags":{},"startTime":1762408288091,"traceId":"cbf742c0d8dfb185"},{"name":"write-routes-manifest","duration":6379,"timestamp":275253938135,"id":90,"parentId":1,"tags":{},"startTime":1762408288657,"traceId":"cbf742c0d8dfb185"},{"name":"node-file-trace-build","duration":4106586,"timestamp":275253359346,"id":82,"parentId":1,"tags":{"isTurbotrace":"false"},"startTime":1762408288078,"traceId":"cbf742c0d8dfb185"},{"name":"apply-include-excludes","duration":234,"timestamp":275257465951,"id":91,"parentId":1,"tags":{},"startTime":1762408292185,"traceId":"cbf742c0d8dfb185"},{"name":"print-tree-view","duration":2349,"timestamp":275257466582,"id":92,"parentId":1,"tags":{},"startTime":1762408292185,"traceId":"cbf742c0d8dfb185"},{"name":"telemetry-flush","duration":25,"timestamp":275257468941,"id":93,"parentId":1,"tags":{},"startTime":1762408292188,"traceId":"cbf742c0d8dfb185"},{"name":"next-build","duration":9971801,"timestamp":275247497168,"id":1,"tags":{"buildMode":"default","isTurboBuild":"true","version":"15.3.4","has-custom-webpack-config":"false","use-build-worker":"true"},"startTime":1762408282216,"traceId":"cbf742c0d8dfb185"}]
|
package/package.json
CHANGED
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports={83886:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("fs",()=>require("fs"))},45935:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},35692:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({ProjectStatus:()=>a,getProjectsConfig:()=>o,saveProjectsConfig:()=>i});var s=e.i(9892),n=e.i(88941);async function o(){try{await (0,s.access)(n.PROJECT_CONFIG_PATH,s.constants.F_OK)}catch{return await i({}),{}}try{let e=await (0,s.readFile)(n.PROJECT_CONFIG_PATH,"utf-8");if(!e)return{};return JSON.parse(e)}catch(e){throw console.error("读取或解析项目配置文件失败:",e),Error("无法加载项目配置")}}async function i(e){let t=n.PROJECT_CONFIG_PATH+".tmp";try{await (0,s.writeFile)(t,JSON.stringify(e,null,2),"utf-8"),await (0,s.rename)(t,n.PROJECT_CONFIG_PATH)}catch(e){throw console.error("保存项目配置文件失败:",e),Error("无法保存项目配置")}}var a=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e}({})},29549:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},83943:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},86103:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},30331:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("path",()=>require("path"))},23430:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},13442:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("os",()=>require("os"))},52670:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js"))},88941:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({PROJECT_CONFIG_PATH:()=>r,ProjectStatus:()=>o,WORKSPACE_CONFIG:()=>t});var s=e.i(13442),n=e.i(30331);let t={WORKSPACE_ROOT:(0,n.join)((0,s.homedir)(),"Documents","prime-workspace"),GIT_TIMEOUT:3e5,MAX_CONCURRENT_CLONES:Math.max(2,Math.min((0,s.cpus)().length,8)),MAX_RETRY_ATTEMPTS:3},r=(0,n.join)((0,s.homedir)(),".prime-projects.json");var o=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e.INCOMPLETE="incomplete",e}({})}},9892:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("fs/promises",()=>require("fs/promises"))},15650:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("module",()=>require("module"))},48647:function(e){var{g:t,__dirname:r,m:s,e:n}=e},68385:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({PUT:()=>c});var s=e.i(15494),n=e.i(83886),o=e.i(30331),i=e.i(35692),a=e.i(88941);let t=(0,e.i(15650).createRequire)({get url(){return`file://${e.P("packages/server/src/app/api/mock-setting/route.ts")}`}}.url);async function c(e){try{let{projectName:r,apiName:c,method:u,currentSite:p}=await e.json();if(!r||!c||!u||!p)return s.NextResponse.json({success:!1,error:"缺少必要参数:projectName, apiName, method, currentSite"},{status:400});if(!(await (0,i.getProjectsConfig)())[r])return s.NextResponse.json({success:!1,error:`项目 ${r} 不存在`},{status:404});let g=(0,o.join)(a.WORKSPACE_CONFIG.WORKSPACE_ROOT,r),l=(0,o.join)(g,".mock",c,u.toLowerCase(),"setting.cjs");try{await n.promises.access(l)}catch{return s.NextResponse.json({success:!1,error:"setting.cjs文件不存在"},{status:404})}let m={};try{let e=(0,o.resolve)(l);delete t.cache[e],m=t(e)}catch(e){console.warn(`解析setting.cjs失败: ${l}`,e)}m.currentSite=p;let x=`module.exports = ${JSON.stringify(m,null,2).replace(/"([^"]+)":/g,"$1:")};`;return await n.promises.writeFile(l,x,"utf-8"),s.NextResponse.json({success:!0,message:"Mock设置更新成功",data:{projectName:r,apiName:c,method:u.toLowerCase(),currentSite:p,filePath:(0,o.join)(".mock",c,u.toLowerCase(),"setting.cjs"),updatedAt:new Date().toISOString()}})}catch(t){let e=t instanceof Error?t.message:"更新Mock设置失败";return console.error("更新Mock设置失败:",t),s.NextResponse.json({success:!1,error:e},{status:500})}}}},68510:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({patchFetch:()=>a,routeModule:()=>t,serverHooks:()=>u,workAsyncStorage:()=>r,workUnitAsyncStorage:()=>c});var s=e.i(45746),n=e.i(93828),o=e.i(18250),i=e.i(68385);let t=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/mock-setting/route",pathname:"/api/mock-setting",filename:"route",bundlePath:""},resolvedPagePath:"[project]/packages/server/src/app/api/mock-setting/route.ts",nextConfigOutput:"",userland:i}),{workAsyncStorage:r,workUnitAsyncStorage:c,serverHooks:u}=t;function a(){return(0,o.patchFetch)({workAsyncStorage:r,workUnitAsyncStorage:c})}}}};
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__07de450e._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["turbopack:///[project]/packages/server/src/lib/workspace-config.ts","turbopack:///[project]/packages/server/src/lib/workspace-types.ts","turbopack:///[project]/packages/server/src/app/api/mock-setting/route.ts","turbopack:///[project]/node_modules/.pnpm/next@15.3.4_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/next/dist/src/build/templates/app-route.ts"],"sourcesContent":["import { readFile, writeFile, access, constants, rename } from 'fs/promises';\nimport type { ProjectsConfig } from './workspace-types';\nimport { PROJECT_CONFIG_PATH } from './workspace-types';\n\n/**\n * 读取并解析项目配置文件\n * @returns {Promise<ProjectsConfig>} 项目配置对象\n */\nexport async function getProjectsConfig(): Promise<ProjectsConfig> {\n try {\n await access(PROJECT_CONFIG_PATH, constants.F_OK);\n } catch {\n // 文件不存在,创建并写入空对象\n await saveProjectsConfig({});\n return {};\n }\n\n try {\n const configContent = await readFile(PROJECT_CONFIG_PATH, 'utf-8');\n // 如果文件为空,返回空对象\n if (!configContent) {\n return {};\n }\n return JSON.parse(configContent);\n } catch (error) {\n console.error('读取或解析项目配置文件失败:', error);\n // 在出错时返回空对象或抛出错误,这里选择抛出以通知调用者\n throw new Error('无法加载项目配置');\n }\n}\n\n/**\n * 将项目配置写入文件(原子操作)\n * @param {ProjectsConfig} config - 要保存的配置对象\n */\nexport async function saveProjectsConfig(config: ProjectsConfig): Promise<void> {\n const tempConfigPath = PROJECT_CONFIG_PATH + '.tmp';\n try {\n await writeFile(tempConfigPath, JSON.stringify(config, null, 2), 'utf-8');\n await rename(tempConfigPath, PROJECT_CONFIG_PATH);\n } catch (error) {\n console.error('保存项目配置文件失败:', error);\n throw new Error('无法保存项目配置');\n }\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n}","import { homedir, cpus } from 'os';\nimport { join } from 'path';\n\n/**\n * 工作空间配置常量\n */\nexport const WORKSPACE_CONFIG = {\n // 工作空间根目录路径\n WORKSPACE_ROOT: join(homedir(), 'Documents', 'prime-workspace'),\n\n // Git 操作超时时间 (毫秒)\n GIT_TIMEOUT: 300000, // 5分钟\n\n // 最大并发克隆数量(基于CPU核心数,最小2个,最大8个)\n MAX_CONCURRENT_CLONES: Math.max(2, Math.min(cpus().length, 8)),\n\n // 重试次数限制\n MAX_RETRY_ATTEMPTS: 3,\n} as const;\n\nexport const PROJECT_CONFIG_PATH = join(homedir(), '.prime-projects.json');\n\nexport interface ProjectConfig {\n repo: string;\n mockingIntercept?: boolean;\n mockOpen?: boolean;\n envs: {\n [envName: string]: {\n host: string;\n currentProxy: string;\n proxyEnv: {\n [key: string]: string;\n };\n envFileName: string;\n proxyKey: string;\n subApps?: string[];\n };\n };\n}\n\nexport interface ProjectsConfig {\n [projectName: string]: ProjectConfig;\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n INCOMPLETE = 'incomplete', // 不完整的项目,需要清理\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n onLog?: (projectName: string, logType: 'stdout' | 'stderr' | 'progress', content: string) => void;\n} ","import { NextRequest, NextResponse } from 'next/server';\nimport { promises as fs } from 'fs';\nimport { join, resolve } from 'path';\nimport { getProjectsConfig } from '@/lib/workspace-config';\nimport { WORKSPACE_CONFIG } from '@/lib/workspace-types';\nimport { createRequire } from \"module\";\nconst require = createRequire(import.meta.url);\n\nexport async function PUT(request: NextRequest) {\n try {\n // 解析请求体\n const { projectName, apiName, method, currentSite } = await request.json();\n\n // 参数验证\n if (!projectName || !apiName || !method || !currentSite) {\n return NextResponse.json(\n {\n success: false,\n error: '缺少必要参数:projectName, apiName, method, currentSite',\n },\n { status: 400 },\n );\n }\n\n // 验证项目是否存在\n const projectsConfig = await getProjectsConfig();\n if (!projectsConfig[projectName]) {\n return NextResponse.json(\n { success: false, error: `项目 ${projectName} 不存在` },\n { status: 404 },\n );\n }\n\n // 构建setting.cjs文件路径\n const projectPath = join(WORKSPACE_CONFIG.WORKSPACE_ROOT, projectName);\n const settingFilePath = join(projectPath, '.mock', apiName, method.toLowerCase(), 'setting.cjs');\n\n // 检查setting.cjs文件是否存在\n try {\n await fs.access(settingFilePath);\n } catch {\n return NextResponse.json(\n { success: false, error: 'setting.cjs文件不存在' },\n { status: 404 },\n );\n }\n\n // 使用require直接导入setting.cjs\n let currentConfig: { currentSite?: string; [key: string]: unknown } = {};\n \n try {\n const resolvedPath = resolve(settingFilePath);\n delete require.cache[resolvedPath];\n currentConfig = require(resolvedPath);\n } catch (parseError) {\n console.warn(`解析setting.cjs失败: ${settingFilePath}`, parseError);\n }\n\n // 更新currentSite\n currentConfig.currentSite = currentSite;\n\n // 生成新的文件内容\n const newContent = `module.exports = ${JSON.stringify(currentConfig, null, 2).replace(/\"([^\"]+)\":/g, '$1:')};`;\n\n // 写入文件\n await fs.writeFile(settingFilePath, newContent, 'utf-8');\n\n return NextResponse.json({\n success: true,\n message: 'Mock设置更新成功',\n data: {\n projectName,\n apiName,\n method: method.toLowerCase(),\n currentSite,\n filePath: join('.mock', apiName, method.toLowerCase(), 'setting.cjs'),\n updatedAt: new Date().toISOString(),\n },\n });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : '更新Mock设置失败';\n console.error('更新Mock设置失败:', error);\n return NextResponse.json(\n { success: false, error: errorMessage },\n { status: 500 },\n );\n }\n} ","import {\n AppRouteRouteModule,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\n\nimport * as userland from 'VAR_USERLAND'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n userland,\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n"],"names":["AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","userland","routeModule","definition","kind","APP_ROUTE","page","pathname","filename","bundlePath","resolvedPagePath","nextConfigOutput","workAsyncStorage","workUnitAsyncStorage","serverHooks"],"mappings":"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","ignoreList":[3]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports={45935:function(e){var{g:r,__dirname:t,m:n,e:s}=e;n.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},35692:e=>{"use strict";var{g:r,__dirname:t}=e;e.s({ProjectStatus:()=>a,getProjectsConfig:()=>o,saveProjectsConfig:()=>i});var n=e.i(9892),s=e.i(88941);async function o(){try{await (0,n.access)(s.PROJECT_CONFIG_PATH,n.constants.F_OK)}catch{return await i({}),{}}try{let e=await (0,n.readFile)(s.PROJECT_CONFIG_PATH,"utf-8");if(!e)return{};return JSON.parse(e)}catch(e){throw console.error("读取或解析项目配置文件失败:",e),Error("无法加载项目配置")}}async function i(e){let r=s.PROJECT_CONFIG_PATH+".tmp";try{await (0,n.writeFile)(r,JSON.stringify(e,null,2),"utf-8"),await (0,n.rename)(r,s.PROJECT_CONFIG_PATH)}catch(e){throw console.error("保存项目配置文件失败:",e),Error("无法保存项目配置")}}var a=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e}({})},29549:function(e){var{g:r,__dirname:t,m:n,e:s}=e;n.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},83943:function(e){var{g:r,__dirname:t,m:n,e:s}=e;n.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},86103:function(e){var{g:r,__dirname:t,m:n,e:s}=e;n.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},30331:function(e){var{g:r,__dirname:t,m:n,e:s}=e;n.exports=e.x("path",()=>require("path"))},23430:function(e){var{g:r,__dirname:t,m:n,e:s}=e;n.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},13442:function(e){var{g:r,__dirname:t,m:n,e:s}=e;n.exports=e.x("os",()=>require("os"))},52670:function(e){var{g:r,__dirname:t,m:n,e:s}=e;n.exports=e.x("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js"))},88941:e=>{"use strict";var{g:r,__dirname:t}=e;{e.s({PROJECT_CONFIG_PATH:()=>t,ProjectStatus:()=>o,WORKSPACE_CONFIG:()=>r});var n=e.i(13442),s=e.i(30331);let r={WORKSPACE_ROOT:(0,s.join)((0,n.homedir)(),"Documents","prime-workspace"),GIT_TIMEOUT:3e5,MAX_CONCURRENT_CLONES:Math.max(2,Math.min((0,n.cpus)().length,8)),MAX_RETRY_ATTEMPTS:3},t=(0,s.join)((0,n.homedir)(),".prime-projects.json");var o=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e.INCOMPLETE="incomplete",e}({})}},9892:function(e){var{g:r,__dirname:t,m:n,e:s}=e;n.exports=e.x("fs/promises",()=>require("fs/promises"))},76687:function(e){var{g:r,__dirname:t,m:n,e:s}=e},84038:e=>{"use strict";var{g:r,__dirname:t}=e;e.s({GET:()=>o});var n=e.i(15494),s=e.i(35692);async function o(e){try{let{searchParams:r}=new URL(e.url),t=r.get("project");if(!t)return n.NextResponse.json({success:!1,error:"项目名称参数缺失"},{status:400});let o=await (0,s.getProjectsConfig)();if(!o[t])return n.NextResponse.json({success:!1,error:`项目 ${t} 不存在`},{status:404});let i=o[t];return n.NextResponse.json({success:!0,data:{mockingIntercept:i.mockingIntercept||!1,mockOpen:i.mockOpen||!1}})}catch(r){let e=r instanceof Error?r.message:"获取Mock拦截状态失败";return console.error("获取Mock拦截状态失败:",r),n.NextResponse.json({success:!1,error:e},{status:500})}}},30449:e=>{"use strict";var{g:r,__dirname:t}=e;{e.s({patchFetch:()=>a,routeModule:()=>r,serverHooks:()=>p,workAsyncStorage:()=>t,workUnitAsyncStorage:()=>c});var n=e.i(45746),s=e.i(93828),o=e.i(18250),i=e.i(84038);let r=new n.AppRouteRouteModule({definition:{kind:s.RouteKind.APP_ROUTE,page:"/api/check-mock-intercept/route",pathname:"/api/check-mock-intercept",filename:"route",bundlePath:""},resolvedPagePath:"[project]/packages/server/src/app/api/check-mock-intercept/route.ts",nextConfigOutput:"",userland:i}),{workAsyncStorage:t,workUnitAsyncStorage:c,serverHooks:p}=r;function a(){return(0,o.patchFetch)({workAsyncStorage:t,workUnitAsyncStorage:c})}}}};
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__09808308._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["turbopack:///[project]/packages/server/src/lib/workspace-config.ts","turbopack:///[project]/packages/server/src/lib/workspace-types.ts","turbopack:///[project]/packages/server/src/app/api/check-mock-intercept/route.ts","turbopack:///[project]/node_modules/.pnpm/next@15.3.4_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/next/dist/src/build/templates/app-route.ts"],"sourcesContent":["import { readFile, writeFile, access, constants, rename } from 'fs/promises';\nimport type { ProjectsConfig } from './workspace-types';\nimport { PROJECT_CONFIG_PATH } from './workspace-types';\n\n/**\n * 读取并解析项目配置文件\n * @returns {Promise<ProjectsConfig>} 项目配置对象\n */\nexport async function getProjectsConfig(): Promise<ProjectsConfig> {\n try {\n await access(PROJECT_CONFIG_PATH, constants.F_OK);\n } catch {\n // 文件不存在,创建并写入空对象\n await saveProjectsConfig({});\n return {};\n }\n\n try {\n const configContent = await readFile(PROJECT_CONFIG_PATH, 'utf-8');\n // 如果文件为空,返回空对象\n if (!configContent) {\n return {};\n }\n return JSON.parse(configContent);\n } catch (error) {\n console.error('读取或解析项目配置文件失败:', error);\n // 在出错时返回空对象或抛出错误,这里选择抛出以通知调用者\n throw new Error('无法加载项目配置');\n }\n}\n\n/**\n * 将项目配置写入文件(原子操作)\n * @param {ProjectsConfig} config - 要保存的配置对象\n */\nexport async function saveProjectsConfig(config: ProjectsConfig): Promise<void> {\n const tempConfigPath = PROJECT_CONFIG_PATH + '.tmp';\n try {\n await writeFile(tempConfigPath, JSON.stringify(config, null, 2), 'utf-8');\n await rename(tempConfigPath, PROJECT_CONFIG_PATH);\n } catch (error) {\n console.error('保存项目配置文件失败:', error);\n throw new Error('无法保存项目配置');\n }\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n}","import { homedir, cpus } from 'os';\nimport { join } from 'path';\n\n/**\n * 工作空间配置常量\n */\nexport const WORKSPACE_CONFIG = {\n // 工作空间根目录路径\n WORKSPACE_ROOT: join(homedir(), 'Documents', 'prime-workspace'),\n\n // Git 操作超时时间 (毫秒)\n GIT_TIMEOUT: 300000, // 5分钟\n\n // 最大并发克隆数量(基于CPU核心数,最小2个,最大8个)\n MAX_CONCURRENT_CLONES: Math.max(2, Math.min(cpus().length, 8)),\n\n // 重试次数限制\n MAX_RETRY_ATTEMPTS: 3,\n} as const;\n\nexport const PROJECT_CONFIG_PATH = join(homedir(), '.prime-projects.json');\n\nexport interface ProjectConfig {\n repo: string;\n mockingIntercept?: boolean;\n mockOpen?: boolean;\n envs: {\n [envName: string]: {\n host: string;\n currentProxy: string;\n proxyEnv: {\n [key: string]: string;\n };\n envFileName: string;\n proxyKey: string;\n subApps?: string[];\n };\n };\n}\n\nexport interface ProjectsConfig {\n [projectName: string]: ProjectConfig;\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n INCOMPLETE = 'incomplete', // 不完整的项目,需要清理\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n onLog?: (projectName: string, logType: 'stdout' | 'stderr' | 'progress', content: string) => void;\n} ","import { NextRequest, NextResponse } from 'next/server';\nimport { getProjectsConfig } from '@/lib/workspace-config';\n\nexport async function GET(request: NextRequest) {\n try {\n const { searchParams } = new URL(request.url);\n const projectName = searchParams.get('project');\n\n if (!projectName) {\n return NextResponse.json(\n { success: false, error: '项目名称参数缺失' },\n { status: 400 },\n );\n }\n\n // 读取项目配置文件\n const projectsConfig = await getProjectsConfig();\n\n // 检查项目是否存在\n if (!projectsConfig[projectName]) {\n return NextResponse.json(\n { success: false, error: `项目 ${projectName} 不存在` },\n { status: 404 },\n );\n }\n\n const projectConfig = projectsConfig[projectName];\n\n return NextResponse.json({\n success: true,\n data: {\n mockingIntercept: projectConfig.mockingIntercept || false,\n mockOpen: projectConfig.mockOpen || false,\n },\n });\n } catch (error) {\n const errorMessage =\n error instanceof Error ? error.message : '获取Mock拦截状态失败';\n console.error('获取Mock拦截状态失败:', error);\n return NextResponse.json(\n { success: false, error: errorMessage },\n { status: 500 },\n );\n }\n} ","import {\n AppRouteRouteModule,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\n\nimport * as userland from 'VAR_USERLAND'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n userland,\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n"],"names":["AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","userland","routeModule","definition","kind","APP_ROUTE","page","pathname","filename","bundlePath","resolvedPagePath","nextConfigOutput","workAsyncStorage","workUnitAsyncStorage","serverHooks"],"mappings":"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","ignoreList":[3]}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
module.exports={83886:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("fs",()=>require("fs"))},45935:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},35692:e=>{"use strict";var{g:r,__dirname:t}=e;e.s({ProjectStatus:()=>i,getProjectsConfig:()=>o,saveProjectsConfig:()=>a});var s=e.i(9892),n=e.i(88941);async function o(){try{await (0,s.access)(n.PROJECT_CONFIG_PATH,s.constants.F_OK)}catch{return await a({}),{}}try{let e=await (0,s.readFile)(n.PROJECT_CONFIG_PATH,"utf-8");if(!e)return{};return JSON.parse(e)}catch(e){throw console.error("读取或解析项目配置文件失败:",e),Error("无法加载项目配置")}}async function a(e){let r=n.PROJECT_CONFIG_PATH+".tmp";try{await (0,s.writeFile)(r,JSON.stringify(e,null,2),"utf-8"),await (0,s.rename)(r,n.PROJECT_CONFIG_PATH)}catch(e){throw console.error("保存项目配置文件失败:",e),Error("无法保存项目配置")}}var i=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e}({})},29549:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},83943:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},86103:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},30331:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("path",()=>require("path"))},23430:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},13442:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("os",()=>require("os"))},52670:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js"))},88941:e=>{"use strict";var{g:r,__dirname:t}=e;{e.s({PROJECT_CONFIG_PATH:()=>t,ProjectStatus:()=>o,WORKSPACE_CONFIG:()=>r});var s=e.i(13442),n=e.i(30331);let r={WORKSPACE_ROOT:(0,n.join)((0,s.homedir)(),"Documents","prime-workspace"),GIT_TIMEOUT:3e5,MAX_CONCURRENT_CLONES:Math.max(2,Math.min((0,s.cpus)().length,8)),MAX_RETRY_ATTEMPTS:3},t=(0,n.join)((0,s.homedir)(),".prime-projects.json");var o=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e.INCOMPLETE="incomplete",e}({})}},9892:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("fs/promises",()=>require("fs/promises"))},15650:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("module",()=>require("module"))},80298:function(e){var{g:r,__dirname:t,m:s,e:n}=e},17717:e=>{"use strict";var{g:r,__dirname:t}=e;{e.s({POST:()=>c});var s=e.i(15494),n=e.i(83886),o=e.i(30331),a=e.i(35692),i=e.i(88941);let r=(0,e.i(15650).createRequire)({get url(){return`file://${e.P("packages/server/src/app/api/cleanup-mock/route.ts")}`}}.url);async function c(e){try{let{projectName:t}=await e.json();if(!t)return s.NextResponse.json({success:!1,error:"项目名称参数缺失"},{status:400});if(!(await (0,a.getProjectsConfig)())[t])return s.NextResponse.json({success:!1,error:`项目 ${t} 不存在`},{status:404});let c=(0,o.join)(i.WORKSPACE_CONFIG.WORKSPACE_ROOT,t),u=(0,o.join)(c,".mock");try{await n.promises.access(u)}catch{return s.NextResponse.json({success:!0,message:"Mock目录不存在,无需清理",data:{projectName:t,timestamp:new Date().toISOString()}})}let p=async e=>{for(let t of(await n.promises.readdir(e,{withFileTypes:!0}))){let s=(0,o.join)(e,t.name);if(t.isDirectory())await p(s);else if("setting.cjs"===t.name)try{let e=(0,o.resolve)(s);delete r.cache[e];let t=r(e),a=`module.exports = {
|
|
2
|
-
// 当前场景名称
|
|
3
|
-
currentSite: '${t.currentSite||""}',
|
|
4
|
-
// 开启Mock的场景列表(已清空)
|
|
5
|
-
open: []
|
|
6
|
-
};`;await n.promises.writeFile(s,a,"utf-8")}catch(e){console.warn(`解析setting.cjs失败: ${s}`,e)}}};return await p(u),s.NextResponse.json({success:!0,message:"所有Mock场景已清空",data:{projectName:t,timestamp:new Date().toISOString()}})}catch(r){let e=r instanceof Error?r.message:"清空Mock场景失败";return console.error("清空Mock场景失败:",r),s.NextResponse.json({success:!1,error:e},{status:500})}}}},30706:e=>{"use strict";var{g:r,__dirname:t}=e;{e.s({patchFetch:()=>i,routeModule:()=>r,serverHooks:()=>u,workAsyncStorage:()=>t,workUnitAsyncStorage:()=>c});var s=e.i(45746),n=e.i(93828),o=e.i(18250),a=e.i(17717);let r=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/cleanup-mock/route",pathname:"/api/cleanup-mock",filename:"route",bundlePath:""},resolvedPagePath:"[project]/packages/server/src/app/api/cleanup-mock/route.ts",nextConfigOutput:"",userland:a}),{workAsyncStorage:t,workUnitAsyncStorage:c,serverHooks:u}=r;function i(){return(0,o.patchFetch)({workAsyncStorage:t,workUnitAsyncStorage:c})}}}};
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__42bc7b42._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["turbopack:///[project]/packages/server/src/lib/workspace-config.ts","turbopack:///[project]/packages/server/src/lib/workspace-types.ts","turbopack:///[project]/packages/server/src/app/api/cleanup-mock/route.ts","turbopack:///[project]/node_modules/.pnpm/next@15.3.4_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/next/dist/src/build/templates/app-route.ts"],"sourcesContent":["import { readFile, writeFile, access, constants, rename } from 'fs/promises';\nimport type { ProjectsConfig } from './workspace-types';\nimport { PROJECT_CONFIG_PATH } from './workspace-types';\n\n/**\n * 读取并解析项目配置文件\n * @returns {Promise<ProjectsConfig>} 项目配置对象\n */\nexport async function getProjectsConfig(): Promise<ProjectsConfig> {\n try {\n await access(PROJECT_CONFIG_PATH, constants.F_OK);\n } catch {\n // 文件不存在,创建并写入空对象\n await saveProjectsConfig({});\n return {};\n }\n\n try {\n const configContent = await readFile(PROJECT_CONFIG_PATH, 'utf-8');\n // 如果文件为空,返回空对象\n if (!configContent) {\n return {};\n }\n return JSON.parse(configContent);\n } catch (error) {\n console.error('读取或解析项目配置文件失败:', error);\n // 在出错时返回空对象或抛出错误,这里选择抛出以通知调用者\n throw new Error('无法加载项目配置');\n }\n}\n\n/**\n * 将项目配置写入文件(原子操作)\n * @param {ProjectsConfig} config - 要保存的配置对象\n */\nexport async function saveProjectsConfig(config: ProjectsConfig): Promise<void> {\n const tempConfigPath = PROJECT_CONFIG_PATH + '.tmp';\n try {\n await writeFile(tempConfigPath, JSON.stringify(config, null, 2), 'utf-8');\n await rename(tempConfigPath, PROJECT_CONFIG_PATH);\n } catch (error) {\n console.error('保存项目配置文件失败:', error);\n throw new Error('无法保存项目配置');\n }\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n}","import { homedir, cpus } from 'os';\nimport { join } from 'path';\n\n/**\n * 工作空间配置常量\n */\nexport const WORKSPACE_CONFIG = {\n // 工作空间根目录路径\n WORKSPACE_ROOT: join(homedir(), 'Documents', 'prime-workspace'),\n\n // Git 操作超时时间 (毫秒)\n GIT_TIMEOUT: 300000, // 5分钟\n\n // 最大并发克隆数量(基于CPU核心数,最小2个,最大8个)\n MAX_CONCURRENT_CLONES: Math.max(2, Math.min(cpus().length, 8)),\n\n // 重试次数限制\n MAX_RETRY_ATTEMPTS: 3,\n} as const;\n\nexport const PROJECT_CONFIG_PATH = join(homedir(), '.prime-projects.json');\n\nexport interface ProjectConfig {\n repo: string;\n mockingIntercept?: boolean;\n mockOpen?: boolean;\n envs: {\n [envName: string]: {\n host: string;\n currentProxy: string;\n proxyEnv: {\n [key: string]: string;\n };\n envFileName: string;\n proxyKey: string;\n subApps?: string[];\n };\n };\n}\n\nexport interface ProjectsConfig {\n [projectName: string]: ProjectConfig;\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n INCOMPLETE = 'incomplete', // 不完整的项目,需要清理\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n onLog?: (projectName: string, logType: 'stdout' | 'stderr' | 'progress', content: string) => void;\n} ","import { NextRequest, NextResponse } from 'next/server';\nimport { promises as fs } from 'fs';\nimport { join, resolve } from 'path';\nimport { getProjectsConfig } from '@/lib/workspace-config';\nimport { WORKSPACE_CONFIG } from '@/lib/workspace-types';\nimport { createRequire } from \"module\";\nconst require = createRequire(import.meta.url);\n\nexport async function POST(request: NextRequest) {\n try {\n // 解析请求体\n const { projectName } = await request.json();\n\n if (!projectName) {\n return NextResponse.json(\n { success: false, error: '项目名称参数缺失' },\n { status: 400 },\n );\n }\n\n // 验证项目是否存在\n const projectsConfig = await getProjectsConfig();\n if (!projectsConfig[projectName]) {\n return NextResponse.json(\n { success: false, error: `项目 ${projectName} 不存在` },\n { status: 404 },\n );\n }\n\n // 构建 .mock 目录路径\n const projectPath = join(WORKSPACE_CONFIG.WORKSPACE_ROOT, projectName);\n const mockPath = join(projectPath, '.mock');\n\n // 检查 .mock 目录是否存在\n try {\n await fs.access(mockPath);\n } catch {\n return NextResponse.json({\n success: true,\n message: 'Mock目录不存在,无需清理',\n data: {\n projectName,\n timestamp: new Date().toISOString(),\n },\n });\n }\n\n // 递归处理所有目录\n const processDirectory = async (dirPath: string) => {\n const entries = await fs.readdir(dirPath, { withFileTypes: true });\n\n for (const entry of entries) {\n const fullPath = join(dirPath, entry.name);\n\n if (entry.isDirectory()) {\n // 递归处理子目录\n await processDirectory(fullPath);\n } else if (entry.name === 'setting.cjs') {\n // 使用require直接导入setting.cjs\n try {\n const resolvedPath = resolve(fullPath);\n delete require.cache[resolvedPath];\n const currentConfig = require(resolvedPath);\n \n // 保持当前场景名称,但清空 open 数组\n const newContent = `module.exports = {\n // 当前场景名称\n currentSite: '${currentConfig.currentSite || ''}',\n // 开启Mock的场景列表(已清空)\n open: []\n};`;\n \n // 写入更新后的内容\n await fs.writeFile(fullPath, newContent, 'utf-8');\n } catch (parseError) {\n console.warn(`解析setting.cjs失败: ${fullPath}`, parseError);\n }\n }\n }\n };\n\n // 开始处理\n await processDirectory(mockPath);\n\n return NextResponse.json({\n success: true,\n message: '所有Mock场景已清空',\n data: {\n projectName,\n timestamp: new Date().toISOString(),\n },\n });\n\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : '清空Mock场景失败';\n console.error('清空Mock场景失败:', error);\n return NextResponse.json(\n { success: false, error: errorMessage },\n { status: 500 },\n );\n }\n}","import {\n AppRouteRouteModule,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\n\nimport * as userland from 'VAR_USERLAND'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n userland,\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n"],"names":["AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","userland","routeModule","definition","kind","APP_ROUTE","page","pathname","filename","bundlePath","resolvedPagePath","nextConfigOutput","workAsyncStorage","workUnitAsyncStorage","serverHooks"],"mappings":"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","ignoreList":[3]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports={45935:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},35692:e=>{"use strict";var{g:r,__dirname:t}=e;e.s({ProjectStatus:()=>i,getProjectsConfig:()=>o,saveProjectsConfig:()=>a});var s=e.i(9892),n=e.i(88941);async function o(){try{await (0,s.access)(n.PROJECT_CONFIG_PATH,s.constants.F_OK)}catch{return await a({}),{}}try{let e=await (0,s.readFile)(n.PROJECT_CONFIG_PATH,"utf-8");if(!e)return{};return JSON.parse(e)}catch(e){throw console.error("读取或解析项目配置文件失败:",e),Error("无法加载项目配置")}}async function a(e){let r=n.PROJECT_CONFIG_PATH+".tmp";try{await (0,s.writeFile)(r,JSON.stringify(e,null,2),"utf-8"),await (0,s.rename)(r,n.PROJECT_CONFIG_PATH)}catch(e){throw console.error("保存项目配置文件失败:",e),Error("无法保存项目配置")}}var i=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e}({})},29549:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},83943:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},86103:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},30331:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("path",()=>require("path"))},23430:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},13442:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("os",()=>require("os"))},52670:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js"))},88941:e=>{"use strict";var{g:r,__dirname:t}=e;{e.s({PROJECT_CONFIG_PATH:()=>t,ProjectStatus:()=>o,WORKSPACE_CONFIG:()=>r});var s=e.i(13442),n=e.i(30331);let r={WORKSPACE_ROOT:(0,n.join)((0,s.homedir)(),"Documents","prime-workspace"),GIT_TIMEOUT:3e5,MAX_CONCURRENT_CLONES:Math.max(2,Math.min((0,s.cpus)().length,8)),MAX_RETRY_ATTEMPTS:3},t=(0,n.join)((0,s.homedir)(),".prime-projects.json");var o=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e.INCOMPLETE="incomplete",e}({})}},9892:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("fs/promises",()=>require("fs/promises"))},85748:function(e){var{g:r,__dirname:t,m:s,e:n}=e},46299:e=>{"use strict";var{g:r,__dirname:t}=e;e.s({GET:()=>a,OPTIONS:()=>o});var s=e.i(15494),n=e.i(35692);async function o(){return new s.NextResponse(null,{status:200,headers:{"Access-Control-Allow-Origin":"*","Access-Control-Allow-Methods":"GET, POST, PUT, DELETE, OPTIONS","Access-Control-Allow-Headers":"Content-Type, Authorization, X-Requested-With","Access-Control-Max-Age":"86400"}})}async function a(){try{let e=await (0,n.getProjectsConfig)(),r=Object.entries(e).flatMap(([e,r])=>Object.entries(r.envs).map(([t,s])=>({projectName:e,envName:t,host:s.host,repo:r.repo,currentProxy:s.currentProxy,proxyEnv:s.proxyEnv,subApps:s.subApps||[]}))),t=s.NextResponse.json({success:!0,data:r,message:`成功获取 ${r.length} 个环境配置`});return t.headers.set("Access-Control-Allow-Origin","*"),t.headers.set("Access-Control-Allow-Methods","GET, POST, PUT, DELETE, OPTIONS"),t.headers.set("Access-Control-Allow-Headers","Content-Type, Authorization, X-Requested-With"),t}catch(t){let e=t instanceof Error?t.message:"获取项目环境配置失败";console.error("获取所有项目环境配置失败:",t);let r=s.NextResponse.json({success:!1,error:e},{status:500});return r.headers.set("Access-Control-Allow-Origin","*"),r.headers.set("Access-Control-Allow-Methods","GET, POST, PUT, DELETE, OPTIONS"),r.headers.set("Access-Control-Allow-Headers","Content-Type, Authorization, X-Requested-With"),r}}},22785:e=>{"use strict";var{g:r,__dirname:t}=e;{e.s({patchFetch:()=>i,routeModule:()=>r,serverHooks:()=>p,workAsyncStorage:()=>t,workUnitAsyncStorage:()=>c});var s=e.i(45746),n=e.i(93828),o=e.i(18250),a=e.i(46299);let r=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/all-projects-envs/route",pathname:"/api/all-projects-envs",filename:"route",bundlePath:""},resolvedPagePath:"[project]/packages/server/src/app/api/all-projects-envs/route.ts",nextConfigOutput:"",userland:a}),{workAsyncStorage:t,workUnitAsyncStorage:c,serverHooks:p}=r;function i(){return(0,o.patchFetch)({workAsyncStorage:t,workUnitAsyncStorage:c})}}}};
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__4dc677cb._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["turbopack:///[project]/packages/server/src/lib/workspace-config.ts","turbopack:///[project]/packages/server/src/lib/workspace-types.ts","turbopack:///[project]/packages/server/src/app/api/all-projects-envs/route.ts","turbopack:///[project]/node_modules/.pnpm/next@15.3.4_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/next/dist/src/build/templates/app-route.ts"],"sourcesContent":["import { readFile, writeFile, access, constants, rename } from 'fs/promises';\nimport type { ProjectsConfig } from './workspace-types';\nimport { PROJECT_CONFIG_PATH } from './workspace-types';\n\n/**\n * 读取并解析项目配置文件\n * @returns {Promise<ProjectsConfig>} 项目配置对象\n */\nexport async function getProjectsConfig(): Promise<ProjectsConfig> {\n try {\n await access(PROJECT_CONFIG_PATH, constants.F_OK);\n } catch {\n // 文件不存在,创建并写入空对象\n await saveProjectsConfig({});\n return {};\n }\n\n try {\n const configContent = await readFile(PROJECT_CONFIG_PATH, 'utf-8');\n // 如果文件为空,返回空对象\n if (!configContent) {\n return {};\n }\n return JSON.parse(configContent);\n } catch (error) {\n console.error('读取或解析项目配置文件失败:', error);\n // 在出错时返回空对象或抛出错误,这里选择抛出以通知调用者\n throw new Error('无法加载项目配置');\n }\n}\n\n/**\n * 将项目配置写入文件(原子操作)\n * @param {ProjectsConfig} config - 要保存的配置对象\n */\nexport async function saveProjectsConfig(config: ProjectsConfig): Promise<void> {\n const tempConfigPath = PROJECT_CONFIG_PATH + '.tmp';\n try {\n await writeFile(tempConfigPath, JSON.stringify(config, null, 2), 'utf-8');\n await rename(tempConfigPath, PROJECT_CONFIG_PATH);\n } catch (error) {\n console.error('保存项目配置文件失败:', error);\n throw new Error('无法保存项目配置');\n }\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n}","import { homedir, cpus } from 'os';\nimport { join } from 'path';\n\n/**\n * 工作空间配置常量\n */\nexport const WORKSPACE_CONFIG = {\n // 工作空间根目录路径\n WORKSPACE_ROOT: join(homedir(), 'Documents', 'prime-workspace'),\n\n // Git 操作超时时间 (毫秒)\n GIT_TIMEOUT: 300000, // 5分钟\n\n // 最大并发克隆数量(基于CPU核心数,最小2个,最大8个)\n MAX_CONCURRENT_CLONES: Math.max(2, Math.min(cpus().length, 8)),\n\n // 重试次数限制\n MAX_RETRY_ATTEMPTS: 3,\n} as const;\n\nexport const PROJECT_CONFIG_PATH = join(homedir(), '.prime-projects.json');\n\nexport interface ProjectConfig {\n repo: string;\n mockingIntercept?: boolean;\n mockOpen?: boolean;\n envs: {\n [envName: string]: {\n host: string;\n currentProxy: string;\n proxyEnv: {\n [key: string]: string;\n };\n envFileName: string;\n proxyKey: string;\n subApps?: string[];\n };\n };\n}\n\nexport interface ProjectsConfig {\n [projectName: string]: ProjectConfig;\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n INCOMPLETE = 'incomplete', // 不完整的项目,需要清理\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n onLog?: (projectName: string, logType: 'stdout' | 'stderr' | 'progress', content: string) => void;\n} ","import { NextResponse } from 'next/server';\nimport { getProjectsConfig } from '@/lib/workspace-config';\n\n// 处理预检请求\nexport async function OPTIONS() {\n return new NextResponse(null, {\n status: 200,\n headers: {\n 'Access-Control-Allow-Origin': '*',\n 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',\n 'Access-Control-Allow-Headers': 'Content-Type, Authorization, X-Requested-With',\n 'Access-Control-Max-Age': '86400',\n },\n });\n}\n\nexport async function GET() {\n try {\n // 读取项目配置文件\n const projectsConfig = await getProjectsConfig();\n \n // 转换数据结构,提取所有项目的环境信息\n const allProjectsEnvs = Object.entries(projectsConfig).flatMap(([projectName, projectConfig]) => {\n return Object.entries(projectConfig.envs).map(([envName, envConfig]) => ({\n projectName,\n envName,\n host: envConfig.host,\n repo: projectConfig.repo,\n currentProxy: envConfig.currentProxy,\n proxyEnv: envConfig.proxyEnv,\n subApps: envConfig.subApps || [],\n }));\n });\n\n const response = NextResponse.json({\n success: true,\n data: allProjectsEnvs,\n message: `成功获取 ${allProjectsEnvs.length} 个环境配置`,\n });\n\n // 添加CORS headers\n response.headers.set('Access-Control-Allow-Origin', '*');\n response.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');\n response.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With');\n\n return response;\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : '获取项目环境配置失败';\n console.error('获取所有项目环境配置失败:', error);\n const errorResponse = NextResponse.json(\n { success: false, error: errorMessage },\n { status: 500 },\n );\n\n // 为错误响应也添加CORS headers\n errorResponse.headers.set('Access-Control-Allow-Origin', '*');\n errorResponse.headers.set('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');\n errorResponse.headers.set('Access-Control-Allow-Headers', 'Content-Type, Authorization, X-Requested-With');\n\n return errorResponse;\n }\n} ","import {\n AppRouteRouteModule,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\n\nimport * as userland from 'VAR_USERLAND'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n userland,\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n"],"names":["AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","userland","routeModule","definition","kind","APP_ROUTE","page","pathname","filename","bundlePath","resolvedPagePath","nextConfigOutput","workAsyncStorage","workUnitAsyncStorage","serverHooks"],"mappings":"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","ignoreList":[3]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["turbopack:///[project]/packages/server/src/lib/workspace-config.ts","turbopack:///[project]/packages/server/src/lib/workspace-types.ts","turbopack:///[project]/packages/server/src/app/api/mock-open-status/route.ts","turbopack:///[project]/node_modules/.pnpm/next@15.3.4_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/next/dist/src/build/templates/app-route.ts"],"sourcesContent":["import { readFile, writeFile, access, constants, rename } from 'fs/promises';\nimport type { ProjectsConfig } from './workspace-types';\nimport { PROJECT_CONFIG_PATH } from './workspace-types';\n\n/**\n * 读取并解析项目配置文件\n * @returns {Promise<ProjectsConfig>} 项目配置对象\n */\nexport async function getProjectsConfig(): Promise<ProjectsConfig> {\n try {\n await access(PROJECT_CONFIG_PATH, constants.F_OK);\n } catch {\n // 文件不存在,创建并写入空对象\n await saveProjectsConfig({});\n return {};\n }\n\n try {\n const configContent = await readFile(PROJECT_CONFIG_PATH, 'utf-8');\n // 如果文件为空,返回空对象\n if (!configContent) {\n return {};\n }\n return JSON.parse(configContent);\n } catch (error) {\n console.error('读取或解析项目配置文件失败:', error);\n // 在出错时返回空对象或抛出错误,这里选择抛出以通知调用者\n throw new Error('无法加载项目配置');\n }\n}\n\n/**\n * 将项目配置写入文件(原子操作)\n * @param {ProjectsConfig} config - 要保存的配置对象\n */\nexport async function saveProjectsConfig(config: ProjectsConfig): Promise<void> {\n const tempConfigPath = PROJECT_CONFIG_PATH + '.tmp';\n try {\n await writeFile(tempConfigPath, JSON.stringify(config, null, 2), 'utf-8');\n await rename(tempConfigPath, PROJECT_CONFIG_PATH);\n } catch (error) {\n console.error('保存项目配置文件失败:', error);\n throw new Error('无法保存项目配置');\n }\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n}","import { homedir, cpus } from 'os';\nimport { join } from 'path';\n\n/**\n * 工作空间配置常量\n */\nexport const WORKSPACE_CONFIG = {\n // 工作空间根目录路径\n WORKSPACE_ROOT: join(homedir(), 'Documents', 'prime-workspace'),\n\n // Git 操作超时时间 (毫秒)\n GIT_TIMEOUT: 300000, // 5分钟\n\n // 最大并发克隆数量(基于CPU核心数,最小2个,最大8个)\n MAX_CONCURRENT_CLONES: Math.max(2, Math.min(cpus().length, 8)),\n\n // 重试次数限制\n MAX_RETRY_ATTEMPTS: 3,\n} as const;\n\nexport const PROJECT_CONFIG_PATH = join(homedir(), '.prime-projects.json');\n\nexport interface ProjectConfig {\n repo: string;\n mockingIntercept?: boolean;\n mockOpen?: boolean;\n envs: {\n [envName: string]: {\n host: string;\n currentProxy: string;\n proxyEnv: {\n [key: string]: string;\n };\n envFileName: string;\n proxyKey: string;\n subApps?: string[];\n };\n };\n}\n\nexport interface ProjectsConfig {\n [projectName: string]: ProjectConfig;\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n INCOMPLETE = 'incomplete', // 不完整的项目,需要清理\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n onLog?: (projectName: string, logType: 'stdout' | 'stderr' | 'progress', content: string) => void;\n} ","import { NextRequest, NextResponse } from 'next/server';\nimport { promises as fs } from 'fs';\nimport { join, resolve } from 'path';\nimport { getProjectsConfig } from '@/lib/workspace-config';\nimport { WORKSPACE_CONFIG } from '@/lib/workspace-types';\nimport { createRequire } from \"module\";\nconst require = createRequire(import.meta.url);\n\nexport async function PUT(request: NextRequest) {\n try {\n // 解析请求体\n const { projectName, apiName, method, siteName, isOpen } = await request.json();\n\n // 参数验证\n if (!projectName || !apiName || !method || !siteName || typeof isOpen !== 'boolean') {\n return NextResponse.json(\n {\n success: false,\n error: '缺少必要参数:projectName, apiName, method, siteName, isOpen',\n },\n { status: 400 },\n );\n }\n\n // 验证项目是否存在\n const projectsConfig = await getProjectsConfig();\n if (!projectsConfig[projectName]) {\n return NextResponse.json(\n { success: false, error: `项目 ${projectName} 不存在` },\n { status: 404 },\n );\n }\n\n // 构建setting.cjs文件路径\n const projectPath = join(WORKSPACE_CONFIG.WORKSPACE_ROOT, projectName);\n const settingFilePath = join(projectPath, '.mock', apiName, method.toLowerCase(), 'setting.cjs');\n\n // 检查setting.cjs文件是否存在\n try {\n await fs.access(settingFilePath);\n } catch {\n return NextResponse.json(\n { success: false, error: 'setting.cjs文件不存在' },\n { status: 404 },\n );\n }\n\n // 使用require直接导入setting.cjs\n let currentConfig: { \n currentSite?: string; \n open?: string[];\n [key: string]: unknown \n } = {};\n \n try {\n const resolvedPath = resolve(settingFilePath);\n delete require.cache[resolvedPath];\n \n currentConfig = require(resolvedPath);\n } catch (parseError) {\n console.warn(`解析setting.cjs失败: ${settingFilePath}`, parseError);\n }\n\n // 确保open数组存在\n if (!Array.isArray(currentConfig.open)) {\n currentConfig.open = [];\n }\n\n // 更新open数组\n const openArray = currentConfig.open;\n const siteIndex = openArray.indexOf(siteName);\n \n if (isOpen) {\n // 开启Mock:如果场景不在数组中,则添加\n if (siteIndex === -1) {\n openArray.push(siteName);\n }\n } else {\n // 关闭Mock:如果场景在数组中,则移除\n if (siteIndex !== -1) {\n openArray.splice(siteIndex, 1);\n }\n }\n\n // 生成新的文件内容\n const newContent = `module.exports = {\n // 当前场景名称\n currentSite: '${currentConfig.currentSite || siteName}',\n // 开启Mock的场景列表\n open: ${JSON.stringify(openArray)}\n};`;\n\n // 写入文件\n await fs.writeFile(settingFilePath, newContent, 'utf-8');\n\n return NextResponse.json({\n success: true,\n message: 'Mock开启状态更新成功',\n data: {\n projectName,\n apiName,\n method: method.toLowerCase(),\n siteName,\n isOpen,\n openSites: openArray,\n filePath: join('.mock', apiName, method.toLowerCase(), 'setting.cjs'),\n updatedAt: new Date().toISOString(),\n },\n });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : '更新Mock开启状态失败';\n console.error('更新Mock开启状态失败:', error);\n return NextResponse.json(\n { success: false, error: errorMessage },\n { status: 500 },\n );\n }\n} ","import {\n AppRouteRouteModule,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\n\nimport * as userland from 'VAR_USERLAND'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n userland,\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n"],"names":["AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","userland","routeModule","definition","kind","APP_ROUTE","page","pathname","filename","bundlePath","resolvedPagePath","nextConfigOutput","workAsyncStorage","workUnitAsyncStorage","serverHooks"],"mappings":"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","ignoreList":[3]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports={83886:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("fs",()=>require("fs"))},45935:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},35692:e=>{"use strict";var{g:r,__dirname:t}=e;e.s({ProjectStatus:()=>a,getProjectsConfig:()=>o,saveProjectsConfig:()=>i});var s=e.i(9892),n=e.i(88941);async function o(){try{await (0,s.access)(n.PROJECT_CONFIG_PATH,s.constants.F_OK)}catch{return await i({}),{}}try{let e=await (0,s.readFile)(n.PROJECT_CONFIG_PATH,"utf-8");if(!e)return{};return JSON.parse(e)}catch(e){throw console.error("读取或解析项目配置文件失败:",e),Error("无法加载项目配置")}}async function i(e){let r=n.PROJECT_CONFIG_PATH+".tmp";try{await (0,s.writeFile)(r,JSON.stringify(e,null,2),"utf-8"),await (0,s.rename)(r,n.PROJECT_CONFIG_PATH)}catch(e){throw console.error("保存项目配置文件失败:",e),Error("无法保存项目配置")}}var a=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e}({})},29549:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},83943:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},86103:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},30331:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("path",()=>require("path"))},23430:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},13442:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("os",()=>require("os"))},52670:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js"))},88941:e=>{"use strict";var{g:r,__dirname:t}=e;{e.s({PROJECT_CONFIG_PATH:()=>t,ProjectStatus:()=>o,WORKSPACE_CONFIG:()=>r});var s=e.i(13442),n=e.i(30331);let r={WORKSPACE_ROOT:(0,n.join)((0,s.homedir)(),"Documents","prime-workspace"),GIT_TIMEOUT:3e5,MAX_CONCURRENT_CLONES:Math.max(2,Math.min((0,s.cpus)().length,8)),MAX_RETRY_ATTEMPTS:3},t=(0,n.join)((0,s.homedir)(),".prime-projects.json");var o=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e.INCOMPLETE="incomplete",e}({})}},9892:function(e){var{g:r,__dirname:t,m:s,e:n}=e;s.exports=e.x("fs/promises",()=>require("fs/promises"))},15564:function(e){var{g:r,__dirname:t,m:s,e:n}=e},35139:e=>{"use strict";var{g:r,__dirname:t}=e;e.s({DELETE:()=>c});var s=e.i(15494),n=e.i(83886),o=e.i(30331),i=e.i(35692),a=e.i(88941);async function c(e){try{let{searchParams:r}=new URL(e.url),t=r.get("project"),c=r.get("apiName");if(!t||!c)return s.NextResponse.json({success:!1,error:"缺少必要参数:project, apiName"},{status:400});if(!(await (0,i.getProjectsConfig)())[t])return s.NextResponse.json({success:!1,error:`项目 ${t} 不存在`},{status:404});let p=(0,o.join)(a.WORKSPACE_CONFIG.WORKSPACE_ROOT,t),u=(0,o.join)(p,".mock",c);try{await n.promises.access(u)}catch{return s.NextResponse.json({success:!1,error:"Mock接口目录不存在"},{status:404})}await n.promises.rmdir(u,{recursive:!0});let d=(0,o.join)(p,".mock");try{let e=await n.promises.readdir(d);0===e.length&&await n.promises.rmdir(d)}catch{}return s.NextResponse.json({success:!0,message:"Mock接口删除成功",data:{projectName:t,apiName:c,deletedPath:(0,o.join)(".mock",c)}})}catch(r){let e=r instanceof Error?r.message:"删除Mock接口失败";return console.error("删除Mock接口失败:",r),s.NextResponse.json({success:!1,error:e},{status:500})}}},19444:e=>{"use strict";var{g:r,__dirname:t}=e;{e.s({patchFetch:()=>a,routeModule:()=>r,serverHooks:()=>p,workAsyncStorage:()=>t,workUnitAsyncStorage:()=>c});var s=e.i(45746),n=e.i(93828),o=e.i(18250),i=e.i(35139);let r=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/delete-mock-api/route",pathname:"/api/delete-mock-api",filename:"route",bundlePath:""},resolvedPagePath:"[project]/packages/server/src/app/api/delete-mock-api/route.ts",nextConfigOutput:"",userland:i}),{workAsyncStorage:t,workUnitAsyncStorage:c,serverHooks:p}=r;function a(){return(0,o.patchFetch)({workAsyncStorage:t,workUnitAsyncStorage:c})}}}};
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__aca25fcf._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["turbopack:///[project]/packages/server/src/lib/workspace-config.ts","turbopack:///[project]/packages/server/src/lib/workspace-types.ts","turbopack:///[project]/packages/server/src/app/api/delete-mock-api/route.ts","turbopack:///[project]/node_modules/.pnpm/next@15.3.4_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/next/dist/src/build/templates/app-route.ts"],"sourcesContent":["import { readFile, writeFile, access, constants, rename } from 'fs/promises';\nimport type { ProjectsConfig } from './workspace-types';\nimport { PROJECT_CONFIG_PATH } from './workspace-types';\n\n/**\n * 读取并解析项目配置文件\n * @returns {Promise<ProjectsConfig>} 项目配置对象\n */\nexport async function getProjectsConfig(): Promise<ProjectsConfig> {\n try {\n await access(PROJECT_CONFIG_PATH, constants.F_OK);\n } catch {\n // 文件不存在,创建并写入空对象\n await saveProjectsConfig({});\n return {};\n }\n\n try {\n const configContent = await readFile(PROJECT_CONFIG_PATH, 'utf-8');\n // 如果文件为空,返回空对象\n if (!configContent) {\n return {};\n }\n return JSON.parse(configContent);\n } catch (error) {\n console.error('读取或解析项目配置文件失败:', error);\n // 在出错时返回空对象或抛出错误,这里选择抛出以通知调用者\n throw new Error('无法加载项目配置');\n }\n}\n\n/**\n * 将项目配置写入文件(原子操作)\n * @param {ProjectsConfig} config - 要保存的配置对象\n */\nexport async function saveProjectsConfig(config: ProjectsConfig): Promise<void> {\n const tempConfigPath = PROJECT_CONFIG_PATH + '.tmp';\n try {\n await writeFile(tempConfigPath, JSON.stringify(config, null, 2), 'utf-8');\n await rename(tempConfigPath, PROJECT_CONFIG_PATH);\n } catch (error) {\n console.error('保存项目配置文件失败:', error);\n throw new Error('无法保存项目配置');\n }\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n}","import { homedir, cpus } from 'os';\nimport { join } from 'path';\n\n/**\n * 工作空间配置常量\n */\nexport const WORKSPACE_CONFIG = {\n // 工作空间根目录路径\n WORKSPACE_ROOT: join(homedir(), 'Documents', 'prime-workspace'),\n\n // Git 操作超时时间 (毫秒)\n GIT_TIMEOUT: 300000, // 5分钟\n\n // 最大并发克隆数量(基于CPU核心数,最小2个,最大8个)\n MAX_CONCURRENT_CLONES: Math.max(2, Math.min(cpus().length, 8)),\n\n // 重试次数限制\n MAX_RETRY_ATTEMPTS: 3,\n} as const;\n\nexport const PROJECT_CONFIG_PATH = join(homedir(), '.prime-projects.json');\n\nexport interface ProjectConfig {\n repo: string;\n mockingIntercept?: boolean;\n mockOpen?: boolean;\n envs: {\n [envName: string]: {\n host: string;\n currentProxy: string;\n proxyEnv: {\n [key: string]: string;\n };\n envFileName: string;\n proxyKey: string;\n subApps?: string[];\n };\n };\n}\n\nexport interface ProjectsConfig {\n [projectName: string]: ProjectConfig;\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n INCOMPLETE = 'incomplete', // 不完整的项目,需要清理\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n onLog?: (projectName: string, logType: 'stdout' | 'stderr' | 'progress', content: string) => void;\n} ","import { NextRequest, NextResponse } from 'next/server';\nimport { promises as fs } from 'fs';\nimport { join } from 'path';\nimport { getProjectsConfig } from '@/lib/workspace-config';\nimport { WORKSPACE_CONFIG } from '@/lib/workspace-types';\n\nexport async function DELETE(request: NextRequest) {\n try {\n const { searchParams } = new URL(request.url);\n const projectName = searchParams.get('project');\n const apiName = searchParams.get('apiName');\n\n if (!projectName || !apiName) {\n return NextResponse.json(\n { success: false, error: '缺少必要参数:project, apiName' },\n { status: 400 },\n );\n }\n\n // 验证项目是否存在\n const projectsConfig = await getProjectsConfig();\n if (!projectsConfig[projectName]) {\n return NextResponse.json(\n { success: false, error: `项目 ${projectName} 不存在` },\n { status: 404 },\n );\n }\n\n // 构建API目录路径\n const projectPath = join(WORKSPACE_CONFIG.WORKSPACE_ROOT, projectName);\n const apiPath = join(projectPath, '.mock', apiName);\n\n // 检查API目录是否存在\n try {\n await fs.access(apiPath);\n } catch {\n return NextResponse.json(\n { success: false, error: 'Mock接口目录不存在' },\n { status: 404 },\n );\n }\n\n // 递归删除整个API目录\n await fs.rmdir(apiPath, { recursive: true });\n\n // 检查.mock目录是否为空,如果为空则删除.mock目录\n const mockPath = join(projectPath, '.mock');\n try {\n const mockFiles = await fs.readdir(mockPath);\n if (mockFiles.length === 0) {\n await fs.rmdir(mockPath);\n }\n } catch {\n // 忽略目录删除错误\n }\n\n return NextResponse.json({\n success: true,\n message: 'Mock接口删除成功',\n data: {\n projectName,\n apiName,\n deletedPath: join('.mock', apiName),\n },\n });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : '删除Mock接口失败';\n console.error('删除Mock接口失败:', error);\n return NextResponse.json(\n { success: false, error: errorMessage },\n { status: 500 },\n );\n }\n}\n","import {\n AppRouteRouteModule,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\n\nimport * as userland from 'VAR_USERLAND'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n userland,\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n"],"names":["AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","userland","routeModule","definition","kind","APP_ROUTE","page","pathname","filename","bundlePath","resolvedPagePath","nextConfigOutput","workAsyncStorage","workUnitAsyncStorage","serverHooks"],"mappings":"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","ignoreList":[3]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["turbopack:///[project]/packages/server/src/lib/workspace-config.ts","turbopack:///[project]/packages/server/src/lib/workspace-types.ts","turbopack:///[project]/packages/server/src/app/api/mock-file-content/route.ts","turbopack:///[project]/node_modules/.pnpm/next@15.3.4_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/next/dist/src/build/templates/app-route.ts"],"sourcesContent":["import { readFile, writeFile, access, constants, rename } from 'fs/promises';\nimport type { ProjectsConfig } from './workspace-types';\nimport { PROJECT_CONFIG_PATH } from './workspace-types';\n\n/**\n * 读取并解析项目配置文件\n * @returns {Promise<ProjectsConfig>} 项目配置对象\n */\nexport async function getProjectsConfig(): Promise<ProjectsConfig> {\n try {\n await access(PROJECT_CONFIG_PATH, constants.F_OK);\n } catch {\n // 文件不存在,创建并写入空对象\n await saveProjectsConfig({});\n return {};\n }\n\n try {\n const configContent = await readFile(PROJECT_CONFIG_PATH, 'utf-8');\n // 如果文件为空,返回空对象\n if (!configContent) {\n return {};\n }\n return JSON.parse(configContent);\n } catch (error) {\n console.error('读取或解析项目配置文件失败:', error);\n // 在出错时返回空对象或抛出错误,这里选择抛出以通知调用者\n throw new Error('无法加载项目配置');\n }\n}\n\n/**\n * 将项目配置写入文件(原子操作)\n * @param {ProjectsConfig} config - 要保存的配置对象\n */\nexport async function saveProjectsConfig(config: ProjectsConfig): Promise<void> {\n const tempConfigPath = PROJECT_CONFIG_PATH + '.tmp';\n try {\n await writeFile(tempConfigPath, JSON.stringify(config, null, 2), 'utf-8');\n await rename(tempConfigPath, PROJECT_CONFIG_PATH);\n } catch (error) {\n console.error('保存项目配置文件失败:', error);\n throw new Error('无法保存项目配置');\n }\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n}","import { homedir, cpus } from 'os';\nimport { join } from 'path';\n\n/**\n * 工作空间配置常量\n */\nexport const WORKSPACE_CONFIG = {\n // 工作空间根目录路径\n WORKSPACE_ROOT: join(homedir(), 'Documents', 'prime-workspace'),\n\n // Git 操作超时时间 (毫秒)\n GIT_TIMEOUT: 300000, // 5分钟\n\n // 最大并发克隆数量(基于CPU核心数,最小2个,最大8个)\n MAX_CONCURRENT_CLONES: Math.max(2, Math.min(cpus().length, 8)),\n\n // 重试次数限制\n MAX_RETRY_ATTEMPTS: 3,\n} as const;\n\nexport const PROJECT_CONFIG_PATH = join(homedir(), '.prime-projects.json');\n\nexport interface ProjectConfig {\n repo: string;\n mockingIntercept?: boolean;\n mockOpen?: boolean;\n envs: {\n [envName: string]: {\n host: string;\n currentProxy: string;\n proxyEnv: {\n [key: string]: string;\n };\n envFileName: string;\n proxyKey: string;\n subApps?: string[];\n };\n };\n}\n\nexport interface ProjectsConfig {\n [projectName: string]: ProjectConfig;\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n INCOMPLETE = 'incomplete', // 不完整的项目,需要清理\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n onLog?: (projectName: string, logType: 'stdout' | 'stderr' | 'progress', content: string) => void;\n} ","import { NextRequest, NextResponse } from 'next/server';\nimport { promises as fs } from 'fs';\nimport { join } from 'path';\nimport { getProjectsConfig } from '@/lib/workspace-config';\nimport { WORKSPACE_CONFIG } from '@/lib/workspace-types';\n\nexport async function GET(request: NextRequest) {\n try {\n const { searchParams } = new URL(request.url);\n const projectName = searchParams.get('project');\n const apiName = searchParams.get('apiName');\n const method = searchParams.get('method');\n const siteName = searchParams.get('siteName');\n\n if (!projectName || !apiName || !method || !siteName) {\n return NextResponse.json(\n { success: false, error: '缺少必要参数:project, apiName, method, siteName' },\n { status: 400 },\n );\n }\n\n // 验证项目是否存在\n const projectsConfig = await getProjectsConfig();\n if (!projectsConfig[projectName]) {\n return NextResponse.json(\n { success: false, error: `项目 ${projectName} 不存在` },\n { status: 404 },\n );\n }\n\n // 构建文件路径\n const projectPath = join(WORKSPACE_CONFIG.WORKSPACE_ROOT, projectName);\n const filePath = join(projectPath, '.mock', apiName, method.toLowerCase(), `${siteName}.cjs`);\n\n // 检查文件是否存在\n try {\n await fs.access(filePath);\n } catch {\n return NextResponse.json(\n { success: false, error: 'Mock文件不存在' },\n { status: 404 },\n );\n }\n\n // 读取文件内容\n const content = await fs.readFile(filePath, 'utf-8');\n\n return NextResponse.json({\n success: true,\n data: {\n projectName,\n apiName,\n method: method.toLowerCase(),\n siteName,\n content,\n filePath: join('.mock', apiName, method.toLowerCase(), `${siteName}.cjs`),\n },\n message: '获取Mock文件内容成功',\n });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : '获取Mock文件内容失败';\n console.error('获取Mock文件内容失败:', error);\n return NextResponse.json(\n { success: false, error: errorMessage },\n { status: 500 },\n );\n }\n}\n\nexport async function PUT(request: NextRequest) {\n try {\n // 解析请求体\n const { projectName, apiName, method, siteName, content } = await request.json();\n\n // 参数验证\n if (!projectName || !apiName || !method || !siteName || content === undefined) {\n return NextResponse.json(\n {\n success: false,\n error: '缺少必要参数:projectName, apiName, method, siteName, content',\n },\n { status: 400 },\n );\n }\n\n // 验证项目是否存在\n const projectsConfig = await getProjectsConfig();\n if (!projectsConfig[projectName]) {\n return NextResponse.json(\n { success: false, error: `项目 ${projectName} 不存在` },\n { status: 404 },\n );\n }\n\n // 构建文件路径\n const projectPath = join(WORKSPACE_CONFIG.WORKSPACE_ROOT, projectName);\n const filePath = join(projectPath, '.mock', apiName, method.toLowerCase(), `${siteName}.cjs`);\n\n // 检查文件是否存在\n try {\n await fs.access(filePath);\n } catch {\n return NextResponse.json(\n { success: false, error: 'Mock文件不存在' },\n { status: 404 },\n );\n }\n\n // 写入文件内容\n await fs.writeFile(filePath, content, 'utf-8');\n\n return NextResponse.json({\n success: true,\n message: 'Mock文件内容更新成功',\n data: {\n projectName,\n apiName,\n method: method.toLowerCase(),\n siteName,\n filePath: join('.mock', apiName, method.toLowerCase(), `${siteName}.cjs`),\n updatedAt: new Date().toISOString(),\n },\n });\n } catch (error) {\n const errorMessage = error instanceof Error ? error.message : '更新Mock文件内容失败';\n console.error('更新Mock文件内容失败:', error);\n return NextResponse.json(\n { success: false, error: errorMessage },\n { status: 500 },\n );\n }\n} ","import {\n AppRouteRouteModule,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\n\nimport * as userland from 'VAR_USERLAND'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n userland,\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n"],"names":["AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","userland","routeModule","definition","kind","APP_ROUTE","page","pathname","filename","bundlePath","resolvedPagePath","nextConfigOutput","workAsyncStorage","workUnitAsyncStorage","serverHooks"],"mappings":"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","ignoreList":[3]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports={45935:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},35692:e=>{"use strict";var{g:t,__dirname:r}=e;e.s({ProjectStatus:()=>o,getProjectsConfig:()=>i,saveProjectsConfig:()=>a});var s=e.i(9892),n=e.i(88941);async function i(){try{await (0,s.access)(n.PROJECT_CONFIG_PATH,s.constants.F_OK)}catch{return await a({}),{}}try{let e=await (0,s.readFile)(n.PROJECT_CONFIG_PATH,"utf-8");if(!e)return{};return JSON.parse(e)}catch(e){throw console.error("读取或解析项目配置文件失败:",e),Error("无法加载项目配置")}}async function a(e){let t=n.PROJECT_CONFIG_PATH+".tmp";try{await (0,s.writeFile)(t,JSON.stringify(e,null,2),"utf-8"),await (0,s.rename)(t,n.PROJECT_CONFIG_PATH)}catch(e){throw console.error("保存项目配置文件失败:",e),Error("无法保存项目配置")}}var o=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e}({})},29549:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},83943:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},86103:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},30331:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("path",()=>require("path"))},23430:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},13442:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("os",()=>require("os"))},52670:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js"))},88941:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({PROJECT_CONFIG_PATH:()=>r,ProjectStatus:()=>i,WORKSPACE_CONFIG:()=>t});var s=e.i(13442),n=e.i(30331);let t={WORKSPACE_ROOT:(0,n.join)((0,s.homedir)(),"Documents","prime-workspace"),GIT_TIMEOUT:3e5,MAX_CONCURRENT_CLONES:Math.max(2,Math.min((0,s.cpus)().length,8)),MAX_RETRY_ATTEMPTS:3},r=(0,n.join)((0,s.homedir)(),".prime-projects.json");var i=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e.INCOMPLETE="incomplete",e}({})}},9892:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("fs/promises",()=>require("fs/promises"))},87485:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("child_process",()=>require("child_process"))},4713:function(e){var{g:t,__dirname:r,m:s,e:n}=e;s.exports=e.x("util",()=>require("util"))},56305:function(e){var{g:t,__dirname:r,m:s,e:n}=e},1411:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({GET:()=>x});var s=e.i(15494),n=e.i(30331),i=e.i(9892),a=e.i(13442),o=e.i(87485),c=e.i(4713),p=e.i(35692);let t=(0,c.promisify)(o.exec);function u(){return n.default.join(a.default.homedir(),".prime-processes.json")}async function l(e){try{return process.kill(e,0),!0}catch{return!1}}async function d(e){try{let r=parseInt(e);if(isNaN(r))return!1;try{let{stdout:r}=await t(`lsof -i :${e} -t`);return r.trim().length>0}catch{return!1}}catch{return!1}}async function x(e){try{let{searchParams:t}=new URL(e.url),r=t.get("projectName"),n=t.get("envName");if(r&&n){let e=`${r}-${n}`;try{let t=await i.default.readFile(u(),"utf-8"),r=JSON.parse(t).find(t=>t.key===e);if(r){let e=await l(r.pid),t=!!r.port&&await d(r.port);return s.NextResponse.json({success:!0,data:{running:e,pid:r.pid,startTime:r.startTime,port:r.port,portInUse:t}})}}catch{}try{let e=(await (0,p.getProjectsConfig)())[r];if(e&&e.envs&&e.envs[n]){let t=e.envs[n].host?.split(":").pop();if(t){let e=await d(t);return s.NextResponse.json({success:!0,data:{running:e,portInUse:e,port:t}})}}}catch{}return s.NextResponse.json({success:!0,data:{running:!1}})}let a=[];try{let e=await i.default.readFile(u(),"utf-8");for(let t of JSON.parse(e)){let e=await l(t.pid),r=!!t.port&&await d(t.port);a.push({key:t.key,projectName:t.projectName,envName:t.envName,running:e,pid:t.pid,startTime:t.startTime,port:t.port,portInUse:r})}}catch{}return s.NextResponse.json({success:!0,data:a})}catch(e){return console.error("获取进程状态失败:",e),s.NextResponse.json({success:!1,error:e instanceof Error?e.message:"获取进程状态失败"},{status:500})}}}},81656:e=>{"use strict";var{g:t,__dirname:r}=e;{e.s({patchFetch:()=>o,routeModule:()=>t,serverHooks:()=>p,workAsyncStorage:()=>r,workUnitAsyncStorage:()=>c});var s=e.i(45746),n=e.i(93828),i=e.i(18250),a=e.i(1411);let t=new s.AppRouteRouteModule({definition:{kind:n.RouteKind.APP_ROUTE,page:"/api/process/status/route",pathname:"/api/process/status",filename:"route",bundlePath:""},resolvedPagePath:"[project]/packages/server/src/app/api/process/status/route.ts",nextConfigOutput:"",userland:a}),{workAsyncStorage:r,workUnitAsyncStorage:c,serverHooks:p}=t;function o(){return(0,i.patchFetch)({workAsyncStorage:r,workUnitAsyncStorage:c})}}}};
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__da89e112._.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["turbopack:///[project]/packages/server/src/lib/workspace-config.ts","turbopack:///[project]/packages/server/src/lib/workspace-types.ts","turbopack:///[project]/packages/server/src/app/api/process/status/route.ts","turbopack:///[project]/node_modules/.pnpm/next@15.3.4_react-dom@19.1.0_react@19.1.0__react@19.1.0/node_modules/next/dist/src/build/templates/app-route.ts"],"sourcesContent":["import { readFile, writeFile, access, constants, rename } from 'fs/promises';\nimport type { ProjectsConfig } from './workspace-types';\nimport { PROJECT_CONFIG_PATH } from './workspace-types';\n\n/**\n * 读取并解析项目配置文件\n * @returns {Promise<ProjectsConfig>} 项目配置对象\n */\nexport async function getProjectsConfig(): Promise<ProjectsConfig> {\n try {\n await access(PROJECT_CONFIG_PATH, constants.F_OK);\n } catch {\n // 文件不存在,创建并写入空对象\n await saveProjectsConfig({});\n return {};\n }\n\n try {\n const configContent = await readFile(PROJECT_CONFIG_PATH, 'utf-8');\n // 如果文件为空,返回空对象\n if (!configContent) {\n return {};\n }\n return JSON.parse(configContent);\n } catch (error) {\n console.error('读取或解析项目配置文件失败:', error);\n // 在出错时返回空对象或抛出错误,这里选择抛出以通知调用者\n throw new Error('无法加载项目配置');\n }\n}\n\n/**\n * 将项目配置写入文件(原子操作)\n * @param {ProjectsConfig} config - 要保存的配置对象\n */\nexport async function saveProjectsConfig(config: ProjectsConfig): Promise<void> {\n const tempConfigPath = PROJECT_CONFIG_PATH + '.tmp';\n try {\n await writeFile(tempConfigPath, JSON.stringify(config, null, 2), 'utf-8');\n await rename(tempConfigPath, PROJECT_CONFIG_PATH);\n } catch (error) {\n console.error('保存项目配置文件失败:', error);\n throw new Error('无法保存项目配置');\n }\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n}","import { homedir, cpus } from 'os';\nimport { join } from 'path';\n\n/**\n * 工作空间配置常量\n */\nexport const WORKSPACE_CONFIG = {\n // 工作空间根目录路径\n WORKSPACE_ROOT: join(homedir(), 'Documents', 'prime-workspace'),\n\n // Git 操作超时时间 (毫秒)\n GIT_TIMEOUT: 300000, // 5分钟\n\n // 最大并发克隆数量(基于CPU核心数,最小2个,最大8个)\n MAX_CONCURRENT_CLONES: Math.max(2, Math.min(cpus().length, 8)),\n\n // 重试次数限制\n MAX_RETRY_ATTEMPTS: 3,\n} as const;\n\nexport const PROJECT_CONFIG_PATH = join(homedir(), '.prime-projects.json');\n\nexport interface ProjectConfig {\n repo: string;\n mockingIntercept?: boolean;\n mockOpen?: boolean;\n envs: {\n [envName: string]: {\n host: string;\n currentProxy: string;\n proxyEnv: {\n [key: string]: string;\n };\n envFileName: string;\n proxyKey: string;\n subApps?: string[];\n };\n };\n}\n\nexport interface ProjectsConfig {\n [projectName: string]: ProjectConfig;\n}\n\n/**\n * 项目状态枚举\n */\nexport enum ProjectStatus {\n PENDING = 'pending',\n EXISTING = 'existing',\n CLONING = 'cloning',\n SUCCESS = 'success',\n FAILED = 'failed',\n RETRYING = 'retrying',\n INCOMPLETE = 'incomplete', // 不完整的项目,需要清理\n}\n\n/**\n * 项目进度信息接口\n */\nexport interface ProjectProgress {\n projectName: string;\n status: ProjectStatus;\n progress: number; // 0-100\n message: string;\n error?: string;\n startTime?: number;\n endTime?: number;\n}\n\n/**\n * 初始化结果接口\n */\nexport interface InitializationResult {\n success: boolean;\n totalProjects: number;\n successCount: number;\n failedCount: number;\n failedProjects: string[];\n workspacePath: string;\n duration: number;\n}\n\n/**\n * Git 操作配置接口\n */\nexport interface GitOperationConfig {\n repoUrl: string;\n targetDir: string;\n timeout: number;\n onProgress?: (progress: number, message: string) => void;\n onError?: (error: string) => void;\n onLog?: (projectName: string, logType: 'stdout' | 'stderr' | 'progress', content: string) => void;\n} ","import { NextRequest, NextResponse } from 'next/server';\nimport path from 'path';\nimport fs from 'fs/promises';\nimport os from 'os';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\nimport { getProjectsConfig } from '@/lib/workspace-config';\n\nconst execAsync = promisify(exec);\n\n// 获取进程存储文件路径\nfunction getProcessStorePath() {\n return path.join(os.homedir(), '.prime-processes.json');\n}\n\n// 检查进程是否仍在运行\nasync function isProcessRunning(pid: number): Promise<boolean> {\n try {\n // 在Unix系统上,使用kill -0来检查进程是否存在\n if (process.platform !== 'win32') {\n process.kill(pid, 0);\n return true;\n } else {\n // 在Windows上使用tasklist命令\n const { stdout } = await execAsync(`tasklist /FI \"PID eq ${pid}\"`);\n return stdout.includes(pid.toString());\n }\n } catch {\n return false;\n }\n}\n\n// 检查端口是否被占用\nasync function isPortInUse(port: string): Promise<boolean> {\n try {\n const portNum = parseInt(port);\n if (isNaN(portNum)) return false;\n\n if (process.platform !== 'win32') {\n // Unix系统使用lsof\n try {\n const { stdout } = await execAsync(`lsof -i :${port} -t`);\n return stdout.trim().length > 0;\n } catch {\n return false;\n }\n } else {\n // Windows系统使用netstat\n const { stdout } = await execAsync(`netstat -ano | findstr :${port}`);\n return stdout.includes(`:${port}`);\n }\n } catch {\n return false;\n }\n}\n\nexport async function GET(request: NextRequest) {\n try {\n const { searchParams } = new URL(request.url);\n const projectName = searchParams.get('projectName');\n const envName = searchParams.get('envName');\n\n // 如果提供了项目名和环境名,返回特定进程状态\n if (projectName && envName) {\n const processKey = `${projectName}-${envName}`;\n \n // 尝试从存储的进程信息中读取\n try {\n const processInfoContent = await fs.readFile(getProcessStorePath(), 'utf-8');\n const processInfoList = JSON.parse(processInfoContent);\n const processInfo = processInfoList.find((p: { key: string; pid: number; port: string; startTime: string }) => p.key === processKey);\n\n if (processInfo) {\n // 检查进程是否仍在运行\n const isRunning = await isProcessRunning(processInfo.pid);\n const portInUse = processInfo.port ? await isPortInUse(processInfo.port) : false;\n\n return NextResponse.json({\n success: true,\n data: {\n running: isRunning,\n pid: processInfo.pid,\n startTime: processInfo.startTime,\n port: processInfo.port,\n portInUse\n }\n });\n }\n } catch {\n // 文件不存在或读取失败\n }\n\n // 如果没有找到进程信息,检查端口是否被占用\n // 读取项目配置获取端口信息\n try {\n const config = await getProjectsConfig();\n const project = config[projectName];\n if (project && project.envs && project.envs[envName]) {\n const port = project.envs[envName].host?.split(':').pop();\n if (port) {\n const portInUse = await isPortInUse(port);\n return NextResponse.json({\n success: true,\n data: {\n running: portInUse,\n portInUse,\n port\n }\n });\n }\n }\n } catch {\n // 配置文件读取失败\n }\n\n return NextResponse.json({\n success: true,\n data: {\n running: false\n }\n });\n }\n\n // 如果没有提供参数,返回所有进程状态\n const allProcesses: {\n key: string;\n projectName: string;\n envName: string;\n running: boolean;\n pid: number;\n startTime: string;\n port: string;\n portInUse: boolean;\n }[] = [];\n \n try {\n const processInfoContent = await fs.readFile(getProcessStorePath(), 'utf-8');\n const processInfoList = JSON.parse(processInfoContent);\n\n for (const processInfo of processInfoList) {\n const isRunning = await isProcessRunning(processInfo.pid);\n const portInUse = processInfo.port ? await isPortInUse(processInfo.port) : false;\n \n allProcesses.push({\n key: processInfo.key,\n projectName: processInfo.projectName,\n envName: processInfo.envName,\n running: isRunning,\n pid: processInfo.pid,\n startTime: processInfo.startTime,\n port: processInfo.port,\n portInUse\n });\n }\n } catch {\n // 文件不存在或读取失败,返回空数组\n }\n\n return NextResponse.json({\n success: true,\n data: allProcesses\n });\n } catch (error) {\n console.error('获取进程状态失败:', error);\n return NextResponse.json({\n success: false,\n error: error instanceof Error ? error.message : '获取进程状态失败'\n }, { status: 500 });\n }\n}","import {\n AppRouteRouteModule,\n type AppRouteRouteModuleOptions,\n} from '../../server/route-modules/app-route/module.compiled'\nimport { RouteKind } from '../../server/route-kind'\nimport { patchFetch as _patchFetch } from '../../server/lib/patch-fetch'\n\nimport * as userland from 'VAR_USERLAND'\n\n// These are injected by the loader afterwards. This is injected as a variable\n// instead of a replacement because this could also be `undefined` instead of\n// an empty string.\ndeclare const nextConfigOutput: AppRouteRouteModuleOptions['nextConfigOutput']\n\n// We inject the nextConfigOutput here so that we can use them in the route\n// module.\n// INJECT:nextConfigOutput\n\nconst routeModule = new AppRouteRouteModule({\n definition: {\n kind: RouteKind.APP_ROUTE,\n page: 'VAR_DEFINITION_PAGE',\n pathname: 'VAR_DEFINITION_PATHNAME',\n filename: 'VAR_DEFINITION_FILENAME',\n bundlePath: 'VAR_DEFINITION_BUNDLE_PATH',\n },\n resolvedPagePath: 'VAR_RESOLVED_PAGE_PATH',\n nextConfigOutput,\n userland,\n})\n\n// Pull out the exports that we need to expose from the module. This should\n// be eliminated when we've moved the other routes to the new format. These\n// are used to hook into the route.\nconst { workAsyncStorage, workUnitAsyncStorage, serverHooks } = routeModule\n\nfunction patchFetch() {\n return _patchFetch({\n workAsyncStorage,\n workUnitAsyncStorage,\n })\n}\n\nexport {\n routeModule,\n workAsyncStorage,\n workUnitAsyncStorage,\n serverHooks,\n patchFetch,\n}\n"],"names":["AppRouteRouteModule","RouteKind","patchFetch","_patchFetch","userland","routeModule","definition","kind","APP_ROUTE","page","pathname","filename","bundlePath","resolvedPagePath","nextConfigOutput","workAsyncStorage","workUnitAsyncStorage","serverHooks"],"mappings":"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","ignoreList":[3]}
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
module.exports={83886:function(e){var{g:r,__dirname:t,m:s,e:o}=e;s.exports=e.x("fs",()=>require("fs"))},45935:function(e){var{g:r,__dirname:t,m:s,e:o}=e;s.exports=e.x("next/dist/server/app-render/after-task-async-storage.external.js",()=>require("next/dist/server/app-render/after-task-async-storage.external.js"))},35692:e=>{"use strict";var{g:r,__dirname:t}=e;e.s({ProjectStatus:()=>c,getProjectsConfig:()=>n,saveProjectsConfig:()=>a});var s=e.i(9892),o=e.i(88941);async function n(){try{await (0,s.access)(o.PROJECT_CONFIG_PATH,s.constants.F_OK)}catch{return await a({}),{}}try{let e=await (0,s.readFile)(o.PROJECT_CONFIG_PATH,"utf-8");if(!e)return{};return JSON.parse(e)}catch(e){throw console.error("读取或解析项目配置文件失败:",e),Error("无法加载项目配置")}}async function a(e){let r=o.PROJECT_CONFIG_PATH+".tmp";try{await (0,s.writeFile)(r,JSON.stringify(e,null,2),"utf-8"),await (0,s.rename)(r,o.PROJECT_CONFIG_PATH)}catch(e){throw console.error("保存项目配置文件失败:",e),Error("无法保存项目配置")}}var c=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e}({})},29549:function(e){var{g:r,__dirname:t,m:s,e:o}=e;s.exports=e.x("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-page-turbo.runtime.prod.js"))},83943:function(e){var{g:r,__dirname:t,m:s,e:o}=e;s.exports=e.x("next/dist/server/app-render/work-unit-async-storage.external.js",()=>require("next/dist/server/app-render/work-unit-async-storage.external.js"))},86103:function(e){var{g:r,__dirname:t,m:s,e:o}=e;s.exports=e.x("next/dist/server/app-render/work-async-storage.external.js",()=>require("next/dist/server/app-render/work-async-storage.external.js"))},30331:function(e){var{g:r,__dirname:t,m:s,e:o}=e;s.exports=e.x("path",()=>require("path"))},23430:function(e){var{g:r,__dirname:t,m:s,e:o}=e;s.exports=e.x("next/dist/compiled/@opentelemetry/api",()=>require("next/dist/compiled/@opentelemetry/api"))},13442:function(e){var{g:r,__dirname:t,m:s,e:o}=e;s.exports=e.x("os",()=>require("os"))},52670:function(e){var{g:r,__dirname:t,m:s,e:o}=e;s.exports=e.x("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js",()=>require("next/dist/compiled/next-server/app-route-turbo.runtime.prod.js"))},88941:e=>{"use strict";var{g:r,__dirname:t}=e;{e.s({PROJECT_CONFIG_PATH:()=>t,ProjectStatus:()=>n,WORKSPACE_CONFIG:()=>r});var s=e.i(13442),o=e.i(30331);let r={WORKSPACE_ROOT:(0,o.join)((0,s.homedir)(),"Documents","prime-workspace"),GIT_TIMEOUT:3e5,MAX_CONCURRENT_CLONES:Math.max(2,Math.min((0,s.cpus)().length,8)),MAX_RETRY_ATTEMPTS:3},t=(0,o.join)((0,s.homedir)(),".prime-projects.json");var n=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e.INCOMPLETE="incomplete",e}({})}},9892:function(e){var{g:r,__dirname:t,m:s,e:o}=e;s.exports=e.x("fs/promises",()=>require("fs/promises"))},15650:function(e){var{g:r,__dirname:t,m:s,e:o}=e;s.exports=e.x("module",()=>require("module"))},25378:function(e){var{g:r,__dirname:t,m:s,e:o}=e},66778:e=>{"use strict";var{g:r,__dirname:t}=e;{e.s({GET:()=>i});var s=e.i(15494),o=e.i(83886),n=e.i(30331),a=e.i(35692),c=e.i(88941);let r=(0,e.i(15650).createRequire)({get url(){return`file://${e.P("packages/server/src/app/api/get-mock-data/route.ts")}`}}.url);async function i(e){try{let t,i,{searchParams:u}=new URL(e.url),p=u.get("project"),l=u.get("url"),x=u.get("method");if(!p||!l||!x)return s.NextResponse.json({success:!1,error:"缺少必要参数:project, url, method"},{status:400});let g=await (0,a.getProjectsConfig)();if(!g[p])return s.NextResponse.json({success:!1,error:`项目 ${p} 不存在`},{status:404});if(!g[p].mockOpen)return s.NextResponse.json({success:!1,error:"Mock功能未开启"},{status:400});let d=l.split("?")[0].replace(/^\//,"").replace(/\//g,"_")||"root",m=(0,n.join)(c.WORKSPACE_CONFIG.WORKSPACE_ROOT,p),j=(0,n.join)(m,".mock"),f=(0,n.join)(j,d),v=(0,n.join)(f,x.toLowerCase()),N=(0,n.join)(v,"setting.cjs");try{await o.promises.access(N)}catch{return s.NextResponse.json({success:!1,error:`Mock配置文件不存在: ${d}/${x.toLowerCase()}/setting.cjs`},{status:404})}let R=[];try{let e=r((0,n.resolve)(N));if(delete r.cache[(0,n.resolve)(N)],e)try{t=e.currentSite,R=Array.isArray(e.open)?e.open:[]}catch(e){console.warn(`解析setting.cjs失败: ${N}`,e)}}catch(e){return console.error(`读取setting.cjs失败: ${N}`,e),s.NextResponse.json({success:!1,error:"读取Mock配置失败"},{status:500})}if(!t)return s.NextResponse.json({success:!1,error:"未找到当前选中的Mock场景"},{status:404});if(!R.includes(t))return s.NextResponse.json({success:!1,error:`当前场景 "${t}" 未开启Mock功能`},{status:400});let C=(0,n.join)(v,`${t}.cjs`);try{await o.promises.access(C)}catch{return s.NextResponse.json({success:!1,error:`Mock场景文件不存在: ${d}/${x.toLowerCase()}/${t}.cjs`},{status:404})}try{let e=r((0,n.resolve)(C));if(delete r.cache[(0,n.resolve)(C)],!e)return s.NextResponse.json({success:!1,error:"Mock文件格式不正确"},{status:500});try{i=e}catch(e){return console.warn(`解析Mock文件失败: ${C}`,e),s.NextResponse.json({success:!1,error:"解析Mock数据失败"},{status:500})}}catch(e){return console.error(`读取Mock文件失败: ${C}`,e),s.NextResponse.json({success:!1,error:"读取Mock数据失败"},{status:500})}return s.NextResponse.json({success:!0,data:{projectName:p,apiName:d,method:x.toLowerCase(),currentSite:t,mockData:i,filePath:(0,n.join)(".mock",d,x.toLowerCase(),`${t}.cjs`)},message:"Mock数据获取成功"})}catch(r){let e=r instanceof Error?r.message:"获取Mock数据失败";return console.error("获取Mock数据失败:",r),s.NextResponse.json({success:!1,error:e},{status:500})}}}},41360:e=>{"use strict";var{g:r,__dirname:t}=e;{e.s({patchFetch:()=>c,routeModule:()=>r,serverHooks:()=>u,workAsyncStorage:()=>t,workUnitAsyncStorage:()=>i});var s=e.i(45746),o=e.i(93828),n=e.i(18250),a=e.i(66778);let r=new s.AppRouteRouteModule({definition:{kind:o.RouteKind.APP_ROUTE,page:"/api/get-mock-data/route",pathname:"/api/get-mock-data",filename:"route",bundlePath:""},resolvedPagePath:"[project]/packages/server/src/app/api/get-mock-data/route.ts",nextConfigOutput:"",userland:a}),{workAsyncStorage:t,workUnitAsyncStorage:i,serverHooks:u}=r;function c(){return(0,n.patchFetch)({workAsyncStorage:t,workUnitAsyncStorage:i})}}}};
|
|
2
|
-
|
|
3
|
-
//# sourceMappingURL=%5Broot-of-the-server%5D__e07d75ff._.js.map
|