prime-dev-cli 1.0.10 → 1.0.11-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/cli.mjs +26 -5
- package/dist/server/.next/BUILD_ID +1 -1
- package/dist/server/.next/app-build-manifest.json +1 -1
- package/dist/server/.next/build-manifest.json +2 -2
- 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 +2 -2
- 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/server/app/_not-found.html +1 -1
- package/dist/server/.next/server/app/_not-found.rsc +1 -1
- package/dist/server/.next/server/app/api/check-workspace/route.js.nft.json +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-config/route.js.nft.json +1 -1
- package/dist/server/.next/server/app/api/open-project/route.js.nft.json +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.nft.json +1 -1
- package/dist/server/.next/server/app/configuration/page/app-build-manifest.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 +2 -2
- package/dist/server/.next/server/app/index.html +1 -1
- package/dist/server/.next/server/app/index.rsc +1 -1
- package/dist/server/.next/server/app/initialization.html +1 -1
- package/dist/server/.next/server/app/initialization.rsc +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__0111ac14._.js +3 -3
- package/dist/server/.next/server/chunks/[root-of-the-server]__0111ac14._.js.map +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__1efea51d._.js +2 -2
- package/dist/server/.next/server/chunks/[root-of-the-server]__1efea51d._.js.map +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__27f3b464._.js +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__27f3b464._.js.map +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__3da8edfd._.js +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__3da8edfd._.js.map +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__84542811._.js +2 -2
- package/dist/server/.next/server/chunks/[root-of-the-server]__84542811._.js.map +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__c513ec4a._.js +2 -2
- package/dist/server/.next/server/chunks/[root-of-the-server]__c513ec4a._.js.map +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__ec0f2f72._.js +1 -1
- package/dist/server/.next/server/chunks/[root-of-the-server]__ec0f2f72._.js.map +1 -1
- package/dist/server/.next/server/chunks/ssr/_2488faea._.js +1 -1
- package/dist/server/.next/server/chunks/ssr/_2488faea._.js.map +1 -1
- 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/server-reference-manifest.js +1 -1
- package/dist/server/.next/server/server-reference-manifest.json +1 -1
- package/dist/server/.next/static/chunks/{6c6c1dcf9e7e2204.js.map → 4791e420776e4b33.js.map} +1 -1
- package/dist/server/.next/static/chunks/{512b4b5323114f56.js → f99d8b48dbb26003.js} +2 -2
- package/dist/server/.next/trace +1 -1
- package/package.json +2 -2
- package/dist/server/.next/cache/eslint/.cache_13k185s +0 -1
- package/dist/server/.next/cache/webpack/client-production/0.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/1.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/10.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/11.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/12.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/13.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/14.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/15.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/16.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/17.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/18.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/2.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/3.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/4.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/5.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/6.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/7.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/8.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/9.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/index.pack +0 -0
- package/dist/server/.next/cache/webpack/client-production/index.pack.old +0 -0
- package/dist/server/.next/cache/webpack/edge-server-production/0.pack +0 -0
- package/dist/server/.next/cache/webpack/edge-server-production/index.pack +0 -0
- package/dist/server/.next/cache/webpack/edge-server-production/index.pack.old +0 -0
- package/dist/server/.next/cache/webpack/server-production/0.pack +0 -0
- package/dist/server/.next/cache/webpack/server-production/1.pack +0 -0
- package/dist/server/.next/cache/webpack/server-production/2.pack +0 -0
- package/dist/server/.next/cache/webpack/server-production/3.pack +0 -0
- package/dist/server/.next/cache/webpack/server-production/4.pack +0 -0
- package/dist/server/.next/cache/webpack/server-production/5.pack +0 -0
- package/dist/server/.next/cache/webpack/server-production/6.pack +0 -0
- package/dist/server/.next/cache/webpack/server-production/7.pack +0 -0
- package/dist/server/.next/cache/webpack/server-production/8.pack +0 -0
- package/dist/server/.next/cache/webpack/server-production/9.pack +0 -0
- package/dist/server/.next/cache/webpack/server-production/index.pack +0 -0
- package/dist/server/.next/cache/webpack/server-production/index.pack.old +0 -0
- package/dist/server/.next/react-loadable-manifest.json +0 -1
- package/dist/server/.next/server/chunks/131.js +0 -20
- package/dist/server/.next/server/chunks/135.js +0 -20
- package/dist/server/.next/server/chunks/426.js +0 -1
- package/dist/server/.next/server/chunks/542.js +0 -1
- package/dist/server/.next/server/chunks/821.js +0 -5
- package/dist/server/.next/server/chunks/901.js +0 -1
- package/dist/server/.next/server/chunks/967.js +0 -5
- package/dist/server/.next/server/chunks/972.js +0 -6
- package/dist/server/.next/server/middleware-react-loadable-manifest.js +0 -1
- package/dist/server/.next/server/webpack-runtime.js +0 -1
- package/dist/server/.next/static/0L93NbbowsMpjl-fJPWIj/_buildManifest.js +0 -1
- package/dist/server/.next/static/0YG3L7wZtbtQp2XameODj/_buildManifest.js +0 -1
- package/dist/server/.next/static/0YG3L7wZtbtQp2XameODj/_ssgManifest.js +0 -1
- package/dist/server/.next/static/4EggIRp7gmu3C68Fsraff/_buildManifest.js +0 -1
- package/dist/server/.next/static/4EggIRp7gmu3C68Fsraff/_ssgManifest.js +0 -1
- package/dist/server/.next/static/4F2ksJZLv3Xaz5X--KGOp/_buildManifest.js +0 -1
- package/dist/server/.next/static/4F2ksJZLv3Xaz5X--KGOp/_ssgManifest.js +0 -1
- package/dist/server/.next/static/AfTlXXTccBCUMhfVrzBuA/_ssgManifest.js +0 -1
- package/dist/server/.next/static/CcPdKvbUmZBYZz_Z0RQOI/_buildManifest.js +0 -1
- package/dist/server/.next/static/CcPdKvbUmZBYZz_Z0RQOI/_clientMiddlewareManifest.json +0 -1
- package/dist/server/.next/static/CcPdKvbUmZBYZz_Z0RQOI/_ssgManifest.js +0 -1
- package/dist/server/.next/static/G7Z-m_yayOJWJic2pMxim/_buildManifest.js +0 -1
- package/dist/server/.next/static/G7Z-m_yayOJWJic2pMxim/_clientMiddlewareManifest.json +0 -1
- package/dist/server/.next/static/G7Z-m_yayOJWJic2pMxim/_ssgManifest.js +0 -1
- package/dist/server/.next/static/Mmn2KHpe4Btd9UFvAkzbC/_buildManifest.js +0 -1
- package/dist/server/.next/static/Mmn2KHpe4Btd9UFvAkzbC/_ssgManifest.js +0 -1
- package/dist/server/.next/static/MwYZh9prxBMJtf26zAtTY/_buildManifest.js +0 -1
- package/dist/server/.next/static/MwYZh9prxBMJtf26zAtTY/_ssgManifest.js +0 -1
- package/dist/server/.next/static/OrhaeyZZfCZRWwhHqa6d_/_buildManifest.js +0 -1
- package/dist/server/.next/static/OrhaeyZZfCZRWwhHqa6d_/_ssgManifest.js +0 -1
- package/dist/server/.next/static/S8uHKVezmbN9FqrOMghlT/_buildManifest.js +0 -1
- package/dist/server/.next/static/S8uHKVezmbN9FqrOMghlT/_ssgManifest.js +0 -1
- package/dist/server/.next/static/Vj8TOfdXSkRSgi8JoSCLF/_buildManifest.js +0 -1
- package/dist/server/.next/static/Vj8TOfdXSkRSgi8JoSCLF/_ssgManifest.js +0 -1
- package/dist/server/.next/static/W9gpINx4oQDxDFLMkCJQL/_buildManifest.js +0 -1
- package/dist/server/.next/static/W9gpINx4oQDxDFLMkCJQL/_ssgManifest.js +0 -1
- package/dist/server/.next/static/Ws4syXZ5lu2blUfguY1K3/_buildManifest.js +0 -1
- package/dist/server/.next/static/Ws4syXZ5lu2blUfguY1K3/_ssgManifest.js +0 -1
- package/dist/server/.next/static/chunks/09f18d884b3a25a2.js.map +0 -1
- package/dist/server/.next/static/chunks/167-e44cb396108f68cd.js +0 -1
- package/dist/server/.next/static/chunks/180-8dacaec05f53f53f.js +0 -1
- package/dist/server/.next/static/chunks/180-aabf82e25d34cbe3.js +0 -1
- package/dist/server/.next/static/chunks/28309924e4c23ccc.js +0 -5
- package/dist/server/.next/static/chunks/2b6075b99689b028.css.map +0 -1
- package/dist/server/.next/static/chunks/355-0aabfb42ab072146.js +0 -1
- package/dist/server/.next/static/chunks/371387b426d53320.js +0 -3
- package/dist/server/.next/static/chunks/4695aadfc21f48b8.js +0 -5
- package/dist/server/.next/static/chunks/495-1a64c3075b5b8ac4.js +0 -1
- package/dist/server/.next/static/chunks/770-17268e5a9d004dae.js +0 -1
- package/dist/server/.next/static/chunks/847-ec9c92b94ad678e0.js +0 -1
- package/dist/server/.next/static/chunks/86b5e8830b67bd88.js.map +0 -1
- package/dist/server/.next/static/chunks/app/_not-found/page-95616ed7a70b84d7.js +0 -1
- package/dist/server/.next/static/chunks/app/_not-found/page-ba0969dacdea05f3.js +0 -1
- package/dist/server/.next/static/chunks/app/api/all-projects-envs/route-312524aaaaffe75e.js +0 -1
- package/dist/server/.next/static/chunks/app/api/all-projects-envs/route-4a1691275c5ae416.js +0 -1
- package/dist/server/.next/static/chunks/app/api/all-projects-envs/route-59998dcbe9d03177.js +0 -1
- package/dist/server/.next/static/chunks/app/api/all-projects-envs/route-70d14c8af28994db.js +0 -1
- package/dist/server/.next/static/chunks/app/api/all-projects-envs/route-cfa7e75a9cc44674.js +0 -1
- package/dist/server/.next/static/chunks/app/api/check-mock-intercept/route-207d5b6627adc282.js +0 -1
- package/dist/server/.next/static/chunks/app/api/check-mock-intercept/route-21db47c08229689f.js +0 -1
- package/dist/server/.next/static/chunks/app/api/check-mock-intercept/route-445157e82ef8e75b.js +0 -1
- package/dist/server/.next/static/chunks/app/api/check-mock-intercept/route-a14cdbb0879f7da6.js +0 -1
- package/dist/server/.next/static/chunks/app/api/check-mock-intercept/route-f2e048a9d229f7e7.js +0 -1
- package/dist/server/.next/static/chunks/app/api/check-workspace/route-29f5d718929ea780.js +0 -1
- package/dist/server/.next/static/chunks/app/api/check-workspace/route-3292111d9978949a.js +0 -1
- package/dist/server/.next/static/chunks/app/api/check-workspace/route-3569564cd2b09683.js +0 -1
- package/dist/server/.next/static/chunks/app/api/check-workspace/route-db1a504fc730c8dc.js +0 -1
- package/dist/server/.next/static/chunks/app/api/check-workspace/route-ea618578d55f6d3e.js +0 -1
- package/dist/server/.next/static/chunks/app/api/cleanup-mock/route-bbcac882e4f160cb.js +0 -1
- package/dist/server/.next/static/chunks/app/api/cleanup-project/route-16fdad40de98b440.js +0 -1
- package/dist/server/.next/static/chunks/app/api/cleanup-project/route-3bf856128b701bac.js +0 -1
- package/dist/server/.next/static/chunks/app/api/cleanup-project/route-a6c005b8a485a192.js +0 -1
- package/dist/server/.next/static/chunks/app/api/get-mock-data/route-0ff137f28b0bbfd4.js +0 -1
- package/dist/server/.next/static/chunks/app/api/get-mock-data/route-39e7fa4c6fa2da8f.js +0 -1
- package/dist/server/.next/static/chunks/app/api/get-mock-data/route-dc1cc7e42c23cc90.js +0 -1
- package/dist/server/.next/static/chunks/app/api/get-mock-data/route-e8c5eb5bfef356e4.js +0 -1
- package/dist/server/.next/static/chunks/app/api/get-mock-data/route-f674eb4d564fe302.js +0 -1
- package/dist/server/.next/static/chunks/app/api/initialize-workspace/route-202c20e85127f869.js +0 -1
- package/dist/server/.next/static/chunks/app/api/initialize-workspace/route-736e54e6ee59e3ce.js +0 -1
- package/dist/server/.next/static/chunks/app/api/initialize-workspace/route-7faec0a7a2e6383d.js +0 -1
- package/dist/server/.next/static/chunks/app/api/initialize-workspace/route-9cb53efb3778be70.js +0 -1
- package/dist/server/.next/static/chunks/app/api/initialize-workspace/route-a546e3abb74bc427.js +0 -1
- package/dist/server/.next/static/chunks/app/api/microapp-proxy-change-stream/route-219fff48736f39a4.js +0 -1
- package/dist/server/.next/static/chunks/app/api/microapp-proxy-change-stream/route-39d78899804e9b55.js +0 -1
- package/dist/server/.next/static/chunks/app/api/microapp-proxy-change-stream/route-81a2d573a6a5b3d9.js +0 -1
- package/dist/server/.next/static/chunks/app/api/microapp-proxy-change-stream/route-92fea0302ce9e17c.js +0 -1
- package/dist/server/.next/static/chunks/app/api/microapp-proxy-config/route-05c8c2aae5088b98.js +0 -1
- package/dist/server/.next/static/chunks/app/api/microapp-proxy-config/route-ad103dba19eb36c2.js +0 -1
- package/dist/server/.next/static/chunks/app/api/microapp-proxy-config/route-bda82800578d31a4.js +0 -1
- package/dist/server/.next/static/chunks/app/api/microapp-proxy-config/route-c98223a508d30485.js +0 -1
- package/dist/server/.next/static/chunks/app/api/microapp-proxy-config/route-e535c24ff110bccf.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-file/route-457801bb0f6a76f5.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-file/route-51694377ff9d7e5b.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-file/route-606d825407e0fd4c.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-file/route-a7322a0267bf30b2.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-file/route-d8676439ef29db7c.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-file-content/route-3b736acba2fc51fb.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-file-content/route-4abdd46a628dfa45.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-file-content/route-4bc78ec0cbed800a.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-file-content/route-508f2755a233b154.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-file-content/route-ed711cf05050ae4b.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-open-status/route-2397a28b4e49887e.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-open-status/route-7e4d9c8f09b286c3.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-open-status/route-81148f608ccbb94c.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-open-status/route-8c87291c773d3e77.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-open-status/route-a9410ab77572cb9e.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-setting/route-2f57558f61602b8d.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-setting/route-34a6b89ca2fa264f.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-setting/route-48cfb30a284d746d.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-setting/route-93afc6add1edf9f2.js +0 -1
- package/dist/server/.next/static/chunks/app/api/mock-setting/route-fc5ad9735304a090.js +0 -1
- package/dist/server/.next/static/chunks/app/api/open-all-mock/route-57687ce93101e033.js +0 -1
- package/dist/server/.next/static/chunks/app/api/open-project/route-0f748b5bb9f5f133.js +0 -1
- package/dist/server/.next/static/chunks/app/api/open-project/route-28f8ff642f5256ac.js +0 -1
- package/dist/server/.next/static/chunks/app/api/open-project/route-33e8ebae3ec34cf6.js +0 -1
- package/dist/server/.next/static/chunks/app/api/open-project/route-b6e6fca6c827640d.js +0 -1
- package/dist/server/.next/static/chunks/app/api/open-project/route-dbd2412a4a395d57.js +0 -1
- package/dist/server/.next/static/chunks/app/api/process/logs/route-2dda16be53467324.js +0 -1
- package/dist/server/.next/static/chunks/app/api/process/logs/route-3d9ee52d7c8aacef.js +0 -1
- package/dist/server/.next/static/chunks/app/api/process/logs/stream/route-e3aa80178b56d92e.js +0 -1
- package/dist/server/.next/static/chunks/app/api/process/logs/stream/route-e9633e0e72dfb31b.js +0 -1
- package/dist/server/.next/static/chunks/app/api/process/start/route-4fe85c59a6cf5d14.js +0 -1
- package/dist/server/.next/static/chunks/app/api/process/start/route-54c553f9e551d14b.js +0 -1
- package/dist/server/.next/static/chunks/app/api/process/status/route-06151b6ca21ffd52.js +0 -1
- package/dist/server/.next/static/chunks/app/api/process/status/route-9dadfb92dd227115.js +0 -1
- package/dist/server/.next/static/chunks/app/api/project-config/route-0317b7b8279f882c.js +0 -1
- package/dist/server/.next/static/chunks/app/api/project-config/route-0d5799a7d2a92f24.js +0 -1
- package/dist/server/.next/static/chunks/app/api/project-config/route-52a76cdb81639dcd.js +0 -1
- package/dist/server/.next/static/chunks/app/api/project-config/route-870fae74c20ad5cc.js +0 -1
- package/dist/server/.next/static/chunks/app/api/project-config/route-ebe1c2ee41dedc74.js +0 -1
- package/dist/server/.next/static/chunks/app/api/retry-project/route-1672c3841762e7a2.js +0 -1
- package/dist/server/.next/static/chunks/app/api/retry-project/route-57227158a21c503e.js +0 -1
- package/dist/server/.next/static/chunks/app/api/retry-project/route-887b04ae65e577ee.js +0 -1
- package/dist/server/.next/static/chunks/app/api/retry-project/route-c25d253b5eacedef.js +0 -1
- package/dist/server/.next/static/chunks/app/api/retry-project/route-ed8eb5f938cd3503.js +0 -1
- package/dist/server/.next/static/chunks/app/configuration/page-40c4eaee20608a71.js +0 -1
- package/dist/server/.next/static/chunks/app/configuration/page-68644ad1d0dbda4f.js +0 -1
- package/dist/server/.next/static/chunks/app/configuration/page-978351fa7fe07983.js +0 -1
- package/dist/server/.next/static/chunks/app/configuration/page-c873f4a20842fe9f.js +0 -1
- package/dist/server/.next/static/chunks/app/configuration/page-de2896125aeef266.js +0 -1
- package/dist/server/.next/static/chunks/app/initialization/page-2937c3ff149f25f9.js +0 -1
- package/dist/server/.next/static/chunks/app/initialization/page-9c8eb31c4b362777.js +0 -1
- package/dist/server/.next/static/chunks/app/initialization/page-d107335a70a6aa9a.js +0 -1
- package/dist/server/.next/static/chunks/app/layout-2c381be4c1bb73ed.js +0 -1
- package/dist/server/.next/static/chunks/app/layout-84c22b799284e008.js +0 -1
- package/dist/server/.next/static/chunks/app/layout-882f4e368aeaff73.js +0 -1
- package/dist/server/.next/static/chunks/app/page-46b160ccc2d2f6fd.js +0 -1
- package/dist/server/.next/static/chunks/app/page-7a16585bfada96fc.js +0 -1
- package/dist/server/.next/static/chunks/app/page-7ad3377c8cadf31e.js +0 -1
- package/dist/server/.next/static/chunks/app/page-912f1af8f4bd1f6c.js +0 -1
- package/dist/server/.next/static/chunks/app/page-9ce2b4651df441b0.js +0 -1
- package/dist/server/.next/static/chunks/app/page-9e7caf746eefeed4.js +0 -1
- package/dist/server/.next/static/chunks/b8f30182-57e8efeaf5f155f2.js +0 -1
- package/dist/server/.next/static/chunks/b8f30182-a6d2a523c696fa81.js +0 -1
- package/dist/server/.next/static/chunks/da35f4984aadc7ee.css +0 -3
- package/dist/server/.next/static/chunks/fc31ec097889736e.js +0 -61
- package/dist/server/.next/static/chunks/framework-4f3c796c070f0605.js +0 -1
- package/dist/server/.next/static/chunks/main-5057d359c86395ff.js +0 -1
- package/dist/server/.next/static/chunks/main-app-0672b5550b5e5a29.js +0 -1
- package/dist/server/.next/static/chunks/main-app-204ad1b9f48b1359.js +0 -1
- package/dist/server/.next/static/chunks/pages/_app-3679013cc4e97ce6.js +0 -1
- package/dist/server/.next/static/chunks/pages/_error-0822a2d0b86fca98.js +0 -1
- package/dist/server/.next/static/chunks/polyfills-42372ed130431b0a.js +0 -1
- package/dist/server/.next/static/chunks/webpack-c15acc5db8adea14.js +0 -1
- package/dist/server/.next/static/chunks/webpack-d5f30c51b0af95c2.js +0 -1
- package/dist/server/.next/static/chunks/webpack-e34e044e63e0dcd2.js +0 -1
- package/dist/server/.next/static/css/1c3633790ce12b77.css +0 -3
- package/dist/server/.next/static/css/6393282fdcf30b00.css +0 -3
- package/dist/server/.next/static/css/99c159237be93dc6.css +0 -1
- package/dist/server/.next/static/css/b10a602544a179de.css +0 -3
- package/dist/server/.next/static/css/deb8e469bf5e7676.css +0 -3
- package/dist/server/.next/static/ctEn8UHYZESgGhsRFLpGu/_buildManifest.js +0 -1
- package/dist/server/.next/static/ctEn8UHYZESgGhsRFLpGu/_ssgManifest.js +0 -1
- package/dist/server/.next/static/jdnaR1jA-uiriPQs5tK55/_buildManifest.js +0 -1
- package/dist/server/.next/static/jdnaR1jA-uiriPQs5tK55/_ssgManifest.js +0 -1
- package/dist/server/.next/static/media/569ce4b8f30dc480-s.p.woff2 +0 -0
- package/dist/server/.next/static/media/747892c23ea88013-s.woff2 +0 -0
- package/dist/server/.next/static/media/8d697b304b401681-s.woff2 +0 -0
- package/dist/server/.next/static/media/93f479601ee12b01-s.p.woff2 +0 -0
- package/dist/server/.next/static/media/9610d9e46709d722-s.woff2 +0 -0
- package/dist/server/.next/static/media/ba015fad6dcf6784-s.woff2 +0 -0
- package/dist/server/.next/static/qPRyAah5ijpk6JBI-hD27/_buildManifest.js +0 -1
- package/dist/server/.next/static/qPRyAah5ijpk6JBI-hD27/_clientMiddlewareManifest.json +0 -1
- package/dist/server/.next/static/qPRyAah5ijpk6JBI-hD27/_ssgManifest.js +0 -1
- package/dist/server/.next/static/stSAKws68akBgeDAAHOBI/_buildManifest.js +0 -1
- package/dist/server/.next/static/stSAKws68akBgeDAAHOBI/_ssgManifest.js +0 -1
- package/dist/server/.next/static/tATlS048MJsMzIVQDTgrk/_buildManifest.js +0 -1
- package/dist/server/.next/static/tATlS048MJsMzIVQDTgrk/_ssgManifest.js +0 -1
- package/dist/server/.next/types/app/api/all-projects-envs/route.ts +0 -347
- package/dist/server/.next/types/app/api/check-mock-intercept/route.ts +0 -347
- package/dist/server/.next/types/app/api/check-workspace/route.ts +0 -347
- package/dist/server/.next/types/app/api/cleanup-mock/route.ts +0 -347
- package/dist/server/.next/types/app/api/cleanup-project/route.ts +0 -347
- package/dist/server/.next/types/app/api/get-mock-data/route.ts +0 -347
- package/dist/server/.next/types/app/api/initialize-workspace/route.ts +0 -347
- package/dist/server/.next/types/app/api/microapp-proxy-change-stream/route.ts +0 -347
- package/dist/server/.next/types/app/api/microapp-proxy-config/route.ts +0 -347
- package/dist/server/.next/types/app/api/mock-file/route.ts +0 -347
- package/dist/server/.next/types/app/api/mock-file-content/route.ts +0 -347
- package/dist/server/.next/types/app/api/mock-open-status/route.ts +0 -347
- package/dist/server/.next/types/app/api/mock-setting/route.ts +0 -347
- package/dist/server/.next/types/app/api/open-all-mock/route.ts +0 -347
- package/dist/server/.next/types/app/api/open-project/route.ts +0 -347
- package/dist/server/.next/types/app/api/process/logs/route.ts +0 -347
- package/dist/server/.next/types/app/api/process/logs/stream/route.ts +0 -347
- package/dist/server/.next/types/app/api/process/start/route.ts +0 -347
- package/dist/server/.next/types/app/api/process/status/route.ts +0 -347
- package/dist/server/.next/types/app/api/project-config/route.ts +0 -347
- package/dist/server/.next/types/app/api/retry-project/route.ts +0 -347
- package/dist/server/.next/types/app/configuration/page.ts +0 -84
- package/dist/server/.next/types/app/initialization/page.ts +0 -84
- package/dist/server/.next/types/app/layout.ts +0 -84
- package/dist/server/.next/types/app/page.ts +0 -84
- package/dist/server/.next/types/cache-life.d.ts +0 -141
- package/dist/server/.next/types/package.json +0 -1
- /package/dist/server/.next/static/{AfTlXXTccBCUMhfVrzBuA → DiL7txnLfsR2XvLBEz06H}/_buildManifest.js +0 -0
- /package/dist/server/.next/static/{AfTlXXTccBCUMhfVrzBuA → DiL7txnLfsR2XvLBEz06H}/_clientMiddlewareManifest.json +0 -0
- /package/dist/server/.next/static/{0L93NbbowsMpjl-fJPWIj → DiL7txnLfsR2XvLBEz06H}/_ssgManifest.js +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[823],{2190:(e,t,s)=>{Promise.resolve().then(s.bind(s,9510))},6162:(e,t,s)=>{"use strict";s.d(t,{cn:()=>r});var a=s(4407),n=s(1467);function r(){for(var e=arguments.length,t=Array(e),s=0;s<e;s++)t[s]=arguments[s];return(0,n.QP)((0,a.$)(t))}},7541:(e,t,s)=>{"use strict";s.d(t,{$:()=>l});var a=s(5167);s(6343);var n=s(7775),r=s(2703),i=s(6162);let c=(0,r.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function l(e){let{className:t,variant:s,size:r,asChild:l=!1,...o}=e,d=l?n.DX:"button";return(0,a.jsx)(d,{"data-slot":"button",className:(0,i.cn)(c({variant:s,size:r,className:t})),...o})}},9510:(e,t,s)=>{"use strict";s.r(t),s.d(t,{default:()=>W});var a=s(5167),n=s(6343),r=s(1349),i=s(7541),c=s(508),l=s(6162);function o(e){let{className:t,...s}=e;return(0,a.jsx)(c.bL,{"data-slot":"tabs",className:(0,l.cn)("flex flex-col gap-2",t),...s})}function d(e){let{className:t,...s}=e;return(0,a.jsx)(c.B8,{"data-slot":"tabs-list",className:(0,l.cn)("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-[3px]",t),...s})}function m(e){let{className:t,...s}=e;return(0,a.jsx)(c.l9,{"data-slot":"tabs-trigger",className:(0,l.cn)("data-[state=active]:bg-background dark:data-[state=active]:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 text-foreground dark:text-muted-foreground inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center gap-1.5 rounded-md border border-transparent px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...s})}function x(e){let{className:t,...s}=e;return(0,a.jsx)(c.UC,{"data-slot":"tabs-content",className:(0,l.cn)("flex-1 outline-none",t),...s})}var u=s(8358),h=s(7151),p=s(5211),g=s(9926);function f(e){let{...t}=e;return(0,a.jsx)(u.bL,{"data-slot":"select",...t})}function j(e){let{...t}=e;return(0,a.jsx)(u.WT,{"data-slot":"select-value",...t})}function v(e){let{className:t,size:s="default",children:n,...r}=e;return(0,a.jsxs)(u.l9,{"data-slot":"select-trigger","data-size":s,className:(0,l.cn)("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 dark:hover:bg-input/50 flex w-fit items-center justify-between gap-2 rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",t),...r,children:[n,(0,a.jsx)(u.In,{asChild:!0,children:(0,a.jsx)(h.A,{className:"size-4 opacity-50"})})]})}function b(e){let{className:t,children:s,position:n="popper",...r}=e;return(0,a.jsx)(u.ZL,{children:(0,a.jsxs)(u.UC,{"data-slot":"select-content",className:(0,l.cn)("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-(--radix-select-content-available-height) min-w-[8rem] origin-(--radix-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border shadow-md","popper"===n&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",t),position:n,...r,children:[(0,a.jsx)(y,{}),(0,a.jsx)(u.LM,{className:(0,l.cn)("p-1","popper"===n&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),children:s}),(0,a.jsx)(k,{})]})})}function N(e){let{className:t,children:s,...n}=e;return(0,a.jsxs)(u.q7,{"data-slot":"select-item",className:(0,l.cn)("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2",t),...n,children:[(0,a.jsx)("span",{className:"absolute right-2 flex size-3.5 items-center justify-center",children:(0,a.jsx)(u.VF,{children:(0,a.jsx)(p.A,{className:"size-4"})})}),(0,a.jsx)(u.p4,{children:s})]})}function y(e){let{className:t,...s}=e;return(0,a.jsx)(u.PP,{"data-slot":"select-scroll-up-button",className:(0,l.cn)("flex cursor-default items-center justify-center py-1",t),...s,children:(0,a.jsx)(g.A,{className:"size-4"})})}function k(e){let{className:t,...s}=e;return(0,a.jsx)(u.wn,{"data-slot":"select-scroll-down-button",className:(0,l.cn)("flex cursor-default items-center justify-center py-1",t),...s,children:(0,a.jsx)(h.A,{className:"size-4"})})}function w(e){let{className:t,type:s,...n}=e;return(0,a.jsx)("input",{type:s,"data-slot":"input",className:(0,l.cn)("file:text-foreground placeholder:text-muted-foreground selection:bg-primary selection:text-primary-foreground dark:bg-input/30 border-input flex h-9 w-full min-w-0 rounded-md border bg-transparent px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm","focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]","aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",t),...n})}var C=s(7752);function P(e){let{className:t,...s}=e;return(0,a.jsx)(C.b,{"data-slot":"label",className:(0,l.cn)("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50",t),...s})}var S=s(7807);function E(e){let{className:t,...s}=e;return(0,a.jsx)(S.bL,{"data-slot":"switch",className:(0,l.cn)("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50",t),...s,children:(0,a.jsx)(S.zi,{"data-slot":"switch-thumb",className:(0,l.cn)("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")})})}function M(e){let{className:t,...s}=e;return(0,a.jsx)("div",{"data-slot":"table-container",className:"relative w-full overflow-x-auto",children:(0,a.jsx)("table",{"data-slot":"table",className:(0,l.cn)("w-full caption-bottom text-sm",t),...s})})}function O(e){let{className:t,...s}=e;return(0,a.jsx)("thead",{"data-slot":"table-header",className:(0,l.cn)("[&_tr]:border-b",t),...s})}function T(e){let{className:t,...s}=e;return(0,a.jsx)("tbody",{"data-slot":"table-body",className:(0,l.cn)("[&_tr:last-child]:border-0",t),...s})}function z(e){let{className:t,...s}=e;return(0,a.jsx)("tr",{"data-slot":"table-row",className:(0,l.cn)("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors",t),...s})}function L(e){let{className:t,...s}=e;return(0,a.jsx)("th",{"data-slot":"table-head",className:(0,l.cn)("text-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...s})}function _(e){let{className:t,...s}=e;return(0,a.jsx)("td",{"data-slot":"table-cell",className:(0,l.cn)("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]",t),...s})}var U=s(7890),I=s(4279);function $(e){let{...t}=e;return(0,a.jsx)(U.bL,{"data-slot":"dialog",...t})}function A(e){let{...t}=e;return(0,a.jsx)(U.ZL,{"data-slot":"dialog-portal",...t})}function F(e){let{className:t,...s}=e;return(0,a.jsx)(U.hJ,{"data-slot":"dialog-overlay",className:(0,l.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",t),...s})}function G(e){let{className:t,children:s,showCloseButton:n=!0,...r}=e;return(0,a.jsxs)(A,{"data-slot":"dialog-portal",children:[(0,a.jsx)(F,{}),(0,a.jsxs)(U.UC,{"data-slot":"dialog-content",className:(0,l.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200",t),...r,children:[s,n&&(0,a.jsxs)(U.bm,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,a.jsx)(I.A,{}),(0,a.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function J(e){let{className:t,...s}=e;return(0,a.jsx)("div",{"data-slot":"dialog-header",className:(0,l.cn)("flex flex-col gap-2 text-center sm:text-left",t),...s})}function R(e){let{className:t,...s}=e;return(0,a.jsx)("div",{"data-slot":"dialog-footer",className:(0,l.cn)("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end",t),...s})}function D(e){let{className:t,...s}=e;return(0,a.jsx)(U.hE,{"data-slot":"dialog-title",className:(0,l.cn)("text-lg leading-none font-semibold",t),...s})}function V(e){let{className:t,...s}=e;return(0,a.jsx)(U.VY,{"data-slot":"dialog-description",className:(0,l.cn)("text-muted-foreground text-sm",t),...s})}var H=s(4064);function q(e){let{className:t,currentProjectName:s,currentEnvName:r}=e,[c,l]=(0,n.useState)([]),[o,d]=(0,n.useState)(!0),[m,x]=(0,n.useState)(null),[u,h]=(0,n.useState)(new Set),[p,g]=(0,n.useState)(""),[f,j]=(0,n.useState)(!1),[v,b]=(0,n.useState)("");(0,n.useEffect)(()=>{if(c.length>0){let e=c.find(e=>e.projectName===s&&e.envName===r);if(e&&e.subApps.length>0){let t=new Set;e.subApps.forEach(e=>{c.forEach(s=>{s.envName===e&&t.add(y(s))})}),h(t)}}},[c,s,r]);let N=async()=>{d(!0),x(null);try{let e=await fetch("/api/all-projects-envs"),t=await e.json();t.success?l(t.data):x(t.error||"获取项目环境信息失败")}catch(e){console.error("获取项目环境信息失败:",e),x("获取项目环境信息失败: 网络错误")}finally{d(!1)}};(0,n.useEffect)(()=>{N()},[]);let y=e=>"".concat(e.projectName,"-").concat(e.envName),k=p.trim()?c.filter(e=>e.projectName.toLowerCase().includes(p.toLowerCase())||e.envName.toLowerCase().includes(p.toLowerCase())||e.host.toLowerCase().includes(p.toLowerCase())):c,C=(e,t)=>{let s=new Set(u);t?s.add(e):s.delete(e),h(s)},P=e=>{e?h(new Set(k.map(e=>y(e)))):h(new Set)},S=async()=>{j(!0),b("");try{let e=Array.from(u).map(e=>{let t=c.find(t=>y(t)===e);return t?t.envName:""}).filter(e=>""!==e),t=[...new Set(e)],a=await fetch("/api/microapp-proxy-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:s,envName:r,selectedItems:t})}),n=await a.json();n.success?(b(n.message||"保存成功"),await N()):b("保存失败: ".concat(n.error))}catch(e){console.error("保存MicroApp代理配置失败:",e),b("保存失败: 网络错误")}finally{j(!1),setTimeout(()=>{b("")},5e3)}},E=u.size,U=k.length>0&&k.every(e=>u.has(y(e))),I=k.some(e=>u.has(y(e)));return o?(0,a.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg ".concat(t),children:[(0,a.jsx)("h4",{className:"text-md font-medium mb-4",children:"MicroApp代理配置"}),(0,a.jsx)("div",{className:"text-center py-8",children:(0,a.jsx)("p",{className:"text-gray-500",children:"加载中..."})})]}):m?(0,a.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg ".concat(t),children:[(0,a.jsx)("h4",{className:"text-md font-medium mb-4",children:"MicroApp代理配置"}),(0,a.jsxs)("div",{className:"text-center py-8",children:[(0,a.jsx)("p",{className:"text-red-500",children:m}),(0,a.jsx)(i.$,{variant:"outline",size:"sm",onClick:N,className:"mt-2",children:"重试"})]})]}):(0,a.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg ".concat(t),children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("h4",{className:"text-md font-medium",children:"MicroApp代理配置"}),(0,a.jsxs)("p",{className:"text-xs text-gray-500 mt-1",children:["为 ",s," - ",r," 环境配置微应用代理"]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[v&&(0,a.jsx)("span",{className:"text-sm max-w-xs ".concat(v.includes("失败")?"text-red-600":v.includes("但有")?"text-yellow-600":"text-green-600"),title:v,children:v}),(0,a.jsx)(i.$,{variant:"outline",size:"sm",onClick:N,disabled:f,children:"刷新"}),(0,a.jsx)(i.$,{variant:"default",size:"sm",onClick:S,disabled:f||0===u.size,children:f?"保存中...":"保存配置"})]})]}),(0,a.jsxs)("div",{className:"space-y-3 mb-4",children:[(0,a.jsx)("div",{className:"flex items-center gap-2",children:(0,a.jsxs)("div",{className:"relative flex-1 max-w-md",children:[(0,a.jsx)(w,{placeholder:"搜索项目名称、环境名称或Host...",value:p,onChange:e=>g(e.target.value),className:"pr-8"}),p&&(0,a.jsx)(i.$,{variant:"ghost",size:"sm",onClick:()=>{g("")},className:"absolute right-1 top-1/2 transform -translate-y-1/2 h-6 w-6 p-0 hover:bg-gray-100",children:"\xd7"})]})}),(0,a.jsxs)("div",{className:"flex items-center justify-between text-sm text-gray-600",children:[(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[(0,a.jsxs)("span",{children:["显示 ",k.length," 个环境配置",p&&' (搜索: "'.concat(p,'")')]}),E>0&&(0,a.jsxs)("span",{className:"text-blue-600 font-medium",children:["已选择 ",E," 项"]})]}),E>0&&(0,a.jsx)(i.$,{variant:"outline",size:"sm",onClick:()=>{h(new Set)},children:"清空选择"})]})]}),k.length>0?(0,a.jsx)("div",{className:"border rounded-md",children:(0,a.jsxs)(M,{children:[(0,a.jsx)(O,{children:(0,a.jsxs)(z,{children:[(0,a.jsx)(L,{className:"w-12",children:(0,a.jsx)("input",{type:"checkbox",checked:U,onChange:e=>P(e.target.checked),ref:e=>{e&&(e.indeterminate=I&&!U)},className:"rounded border-gray-300"})}),(0,a.jsx)(L,{children:"环境名称"}),(0,a.jsx)(L,{children:"项目名称"}),(0,a.jsx)(L,{children:"Host地址"}),(0,a.jsx)(L,{children:"当前代理"})]})}),(0,a.jsx)(T,{children:k.map(e=>{let t=y(e),s=u.has(t);return(0,a.jsxs)(z,{children:[(0,a.jsx)(_,{children:(0,a.jsx)("input",{type:"checkbox",checked:s,onChange:e=>C(t,e.target.checked),className:"rounded border-gray-300"})}),(0,a.jsx)(_,{children:(0,a.jsx)("span",{className:"px-2 py-1 rounded text-xs font-medium bg-blue-100 text-blue-800",children:e.envName})}),(0,a.jsx)(_,{className:"font-medium",children:e.projectName}),(0,a.jsx)(_,{className:"font-mono text-sm",children:e.host}),(0,a.jsxs)(_,{className:"text-sm text-gray-600",children:[e.currentProxy,e.proxyEnv[e.currentProxy]&&(0,a.jsx)("div",{className:"text-xs text-gray-500",children:e.proxyEnv[e.currentProxy]})]})]},t)})})]})}):(0,a.jsx)("div",{className:"text-center py-8",children:(0,a.jsx)("p",{className:"text-gray-500",children:p?"没有找到匹配的环境配置":"暂无环境配置"})}),E>0&&(0,a.jsx)("div",{className:"mt-4 p-3 bg-blue-50 rounded-md",children:(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("span",{className:"text-sm text-blue-700",children:["已选择 ",E," 个环境配置将作为微应用代理"]}),(0,a.jsx)("span",{className:"text-xs text-blue-600",children:"点击上方“保存配置”按钮保存设置"})]})})]})}var B=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e}(B||{});function K(){let e=(0,r.useSearchParams)(),t=(0,r.useRouter)(),s=e.get("project"),[c,l]=(0,n.useState)(null),[u,h]=(0,n.useState)(!0),[p,g]=(0,n.useState)(null),[y,k]=(0,n.useState)({}),[C,S]=(0,n.useState)({mockingIntercept:!1,mockOpen:!1}),[U,I]=(0,n.useState)(!1),[A,F]=(0,n.useState)(null),[B,K]=(0,n.useState)(!1),[W,X]=(0,n.useState)(1),[Y]=(0,n.useState)(10),[Z,Q]=(0,n.useState)(""),[ee,et]=(0,n.useState)(null),[es,ea]=(0,n.useState)(!1),[en,er]=(0,n.useState)(!1),[ei,ec]=(0,n.useState)(!1),[el,eo]=(0,n.useState)(!0),[ed,em]=(0,n.useState)(null),[ex,eu]=(0,n.useState)([]),[eh,ep]=(0,n.useState)(!1),[eg,ef]=(0,n.useState)(!1),[ej,ev]=(0,n.useState)(!1),[eb,eN]=(0,n.useState)({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0}),[ey,ek]=(0,n.useState)(null),[ew,eC]=(0,n.useState)(!1),[eP,eS]=(0,n.useState)(""),eE=async()=>{ed&&await eO(ed)},eM=async e=>{es&&(e.metaKey||e.ctrlKey)&&"s"===e.key&&(e.preventDefault(),await eE())};(0,n.useEffect)(()=>{if(es)return document.addEventListener("keydown",eM),()=>{document.removeEventListener("keydown",eM)}},[es,ed]);let eO=async e=>{try{await new Promise(e=>setTimeout(e,200));let s=e.getModel();if(s){var t;await (null==(t=e.getAction("editor.action.formatDocument"))?void 0:t.run());let a=s.getValue();if(a&&!a.includes("\n")&&a.length>50){let t=a.replace(/\{\s*/g,"{\n ").replace(/\}\s*/g,"\n}").replace(/;\s*/g,";\n ").replace(/,\s*/g,",\n ").replace(/\n\s*\n/g,"\n").trim();t!==a&&(s.setValue(t),setTimeout(()=>{var t;null==(t=e.getAction("editor.action.formatDocument"))||t.run()},100))}}}catch(e){console.log("自动格式化失败:",e)}},eT=()=>{t.push("/initialization")},ez=async()=>{ep(!0);try{let e=await fetch("/api/check-workspace"),t=await e.json();if(t.success&&t.projects){let e=t.projects.map(e=>({name:e.name,status:e.status,message:e.message}));eu(e)}else console.error("获取项目列表失败:",t.error),eu([])}catch(e){console.error("获取项目列表失败:",e),eu([])}finally{ep(!1)}},eL=async()=>{if(s){I(!0);try{let e=await fetch("/api/open-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:s})}),t=await e.json();t.success||(console.error("打开项目失败:",t.error),alert("打开项目失败: ".concat(t.error)))}catch(e){console.error("打开项目失败:",e),alert("打开项目失败: 网络错误")}finally{I(!1)}}};(0,n.useEffect)(()=>{if(!s){g("项目名称缺失"),h(!1);return}(async()=>{try{let e=await fetch("/api/project-config?project=".concat(encodeURIComponent(s))),t=await e.json();if(t.success){l(t.data);let e={};Object.keys(t.data.envs).forEach(s=>{let a=t.data.envs[s],n="";n=a.proxyEnv[a.currentProxy]?a.proxyEnv[a.currentProxy]:a.currentProxy;let r="";r=a.proxyEnv[a.currentProxy]?a.currentProxy:"custom",e[s]={selectedProxy:n||"",selectedOption:r}}),k(e),S({mockingIntercept:t.data.mockingIntercept||!1,mockOpen:t.data.mockOpen||!1})}else g(t.error)}catch(e){g("获取项目配置失败"),console.error("获取项目配置失败:",e)}finally{h(!1)}})()},[s]),(0,n.useEffect)(()=>{if(c&&s){let e=Object.keys(c.envs),t=new URLSearchParams(window.location.search).get("tab"),s="";(s=Z&&("mock"===Z||e.includes(Z))?Z:t&&("mock"===t||e.includes(t))?t:e.length>0?e[0]:"mock")!==Z&&(Q(s),"mock"===s&&eF())}},[c,s]),(0,n.useEffect)(()=>{ez()},[]);let e_=(e,t)=>{if(!c)return;let s=c.envs[e],a="";if("custom"===t){var n,r;a=(null==(n=y[e])?void 0:n.selectedOption)==="custom"?(null==(r=y[e])?void 0:r.selectedProxy)||"":s.proxyEnv.custom||""}else a=s.proxyEnv[t]||"";k(s=>({...s,[e]:{...s[e],selectedProxy:a,selectedOption:t,saveMessage:""}}))},eU=(e,t)=>{k(s=>({...s,[e]:{...s[e],selectedProxy:t,saveMessage:""}}))},eI=async e=>{S(t=>({...t,mockingIntercept:e,saving:!0,saveMessage:""}));try{let t=await fetch("/api/project-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:s,projectConfig:{mockingIntercept:e,mockOpen:C.mockOpen}})}),a=await t.json();if(a.success)l(t=>t?{...t,mockingIntercept:e}:t),S(e=>({...e,saving:!1,saveMessage:"Mock拦截配置已保存"})),setTimeout(()=>{S(e=>({...e,saveMessage:""}))},2e3);else throw Error(a.error||"保存失败")}catch(t){console.error("保存Mock拦截配置失败:",t),S(s=>({...s,mockingIntercept:!e,saving:!1,saveMessage:"保存失败: ".concat(t instanceof Error?t.message:"未知错误")})),setTimeout(()=>{S(e=>({...e,saveMessage:""}))},3e3)}},e$=async e=>{S(t=>({...t,mockOpen:e,saving:!0,saveMessage:""}));try{let t=await fetch("/api/project-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:s,projectConfig:{mockingIntercept:C.mockingIntercept,mockOpen:e}})}),a=await t.json();if(a.success)l(t=>t?{...t,mockOpen:e}:t),S(e=>({...e,saving:!1,saveMessage:"Mock开启配置已保存"})),setTimeout(()=>{S(e=>({...e,saveMessage:""}))},2e3);else throw Error(a.error||"保存失败")}catch(t){console.error("保存Mock开启配置失败:",t),S(s=>({...s,mockOpen:!e,saving:!1,saveMessage:"保存失败: ".concat(t instanceof Error?t.message:"未知错误")})),setTimeout(()=>{S(e=>({...e,saveMessage:""}))},3e3)}},eA=async e=>{var t,a;if(!c||!s)return;let n=null==(a=y[e])||null==(t=a.selectedProxy)?void 0:t.trim();if(!n)return void k(t=>({...t,[e]:{...t[e],saveMessage:"请先选择或填写代理地址"}}));let r=c.envs[e],i=!Object.values(r.proxyEnv).includes(n);k(t=>({...t,[e]:{...t[e],saving:!0,saveMessage:""}}));try{let t={projectName:s,envName:e,newProxy:i?"custom":Object.keys(r.proxyEnv).find(e=>r.proxyEnv[e]===n)||""};i&&(t.customProxyUrl=n);let a=await fetch("/api/project-config",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(t)}),c=await a.json();c.success?(l(t=>{if(!t)return t;let s={...t.envs};return s[e]={...s[e],currentProxy:c.data.currentProxy},"custom"===c.data.currentProxy&&(s[e].proxyEnv={...s[e].proxyEnv,custom:n}),{...t,envs:s}}),k(t=>({...t,[e]:{...t[e],saving:!1,saveMessage:"保存成功"}}))):k(t=>({...t,[e]:{...t[e],saving:!1,saveMessage:"保存失败: ".concat(c.error)}}))}catch(t){console.error("保存配置失败:",t),k(t=>({...t,[e]:{...t[e],saving:!1,saveMessage:"保存失败: 网络错误"}}))}},eF=async()=>{if(s){K(!0);try{let e=await fetch("/api/mock-file?project=".concat(encodeURIComponent(s))),t=await e.json();t.success?F(t.data):console.error("获取Mock数据失败:",t.error)}catch(e){console.error("获取Mock数据失败:",e)}finally{K(!1)}}},eG=async(e,t,a)=>{if(s)try{let n=await fetch("/api/mock-setting",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:s,apiName:e,method:t,currentSite:a})}),r=await n.json();r.success?F(s=>s?{...s,mockFiles:s.mockFiles.map(s=>s.apiName===e?{...s,methods:s.methods.map(e=>e.method===t?{...e,setting:{...e.setting,currentSite:a}}:e)}:s)}:s):(console.error("更新场景失败:",r.error),alert("更新场景失败: ".concat(r.error)))}catch(e){console.error("更新场景失败:",e),alert("更新场景失败: 网络错误")}},eJ=async(e,t,a)=>{if(s){er(!0),eo(!0);try{let n=await fetch("/api/mock-file-content?project=".concat(encodeURIComponent(s),"&apiName=").concat(encodeURIComponent(e),"&method=").concat(encodeURIComponent(t),"&siteName=").concat(encodeURIComponent(a))),r=await n.json();r.success?(et({projectName:s,apiName:e,method:t,siteName:a,content:r.data.content}),ea(!0)):(console.error("获取文件内容失败:",r.error),alert("获取文件内容失败: ".concat(r.error)))}catch(e){console.error("获取文件内容失败:",e),alert("获取文件内容失败: 网络错误")}finally{er(!1)}}},eR=async()=>{if(ee){ec(!0);try{let e=await fetch("/api/mock-file-content",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify(ee)}),t=await e.json();t.success?(ea(!1),et(null)):(console.error("保存文件失败:",t.error),alert("保存文件失败: ".concat(t.error)))}catch(e){console.error("保存文件失败:",e),alert("保存文件失败: 网络错误")}finally{ec(!1)}}},eD=()=>{ea(!1),et(null),eo(!0)},eV=(e,t)=>{"siteName"===e&&eg||eN(s=>({...s,[e]:t}))},eH=(e,t)=>{let s=e.toUpperCase(),a=t.replace(/\//g,"_").replace(/^_/,"");switch(s){case"GET":return'module.exports = {\n "code": 200,\n "message": "获取'.concat(a,'成功",\n "data": {\n "id": 1,\n "name": "示例数据",\n "status": "active",\n "createTime": "2024-01-01 12:00:00"\n }\n}');case"POST":return'module.exports = {\n "code": 200,\n "message": "创建'.concat(a,'成功",\n "data": {\n "id": 1,\n "result": "success"\n }\n}');case"PUT":return'module.exports = {\n "code": 200,\n "message": "更新'.concat(a,'成功",\n "data": {\n "result": "success"\n }\n}');case"DELETE":return'module.exports = {\n "code": 200,\n "message": "删除'.concat(a,'成功",\n "data": {\n "result": "success"\n }\n}');default:return'module.exports = {\n "code": 200,\n "message": "操作成功",\n "data": {}\n}'}},eq=(e,t,s)=>{if(!A)return!1;let a=e.replace(/\//g,"_").replace(/^_/,""),n=A.mockFiles.find(e=>e.apiName===a);if(!n)return!1;let r=n.methods.find(e=>e.method.toLowerCase()===t.toLowerCase());return!!r&&!!r.files.find(e=>e.siteName===s)},eB=async()=>{if(!eb.apiPath.trim())return void alert("请输入接口地址");if(eq(eb.apiPath,eb.method,eb.siteName))return void alert("接口 ".concat(eb.apiPath," [").concat(eb.method.toUpperCase(),'] 的场景 "').concat(eb.siteName,'" 已存在,不能重复创建'));eC(!0);try{let e=eb.apiPath.replace(/\//g,"_").replace(/^_/,""),t=eH(eb.method,eb.apiPath),a=await fetch("/api/mock-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:s,apiName:e,method:eb.method.toLowerCase(),siteName:eb.siteName,content:t})}),n=await a.json();if(n.success)eb.mockOpen&&await eY(e,eb.method.toLowerCase(),eb.siteName,!0),eN({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0}),ef(!1),await eF(),alert("Mock文件创建成功");else throw Error(n.error||"创建失败")}catch(e){console.error("创建Mock文件失败:",e),alert("创建Mock文件失败: ".concat(e instanceof Error?e.message:"未知错误"))}finally{eC(!1)}},eK=(e,t,s)=>{console.log("新增场景点击:",{apiName:e,method:t,apiPath:s}),ek({apiName:e,method:t,apiPath:s});let a={apiPath:s,method:t.toUpperCase(),siteName:"",mockOpen:!0};console.log("设置表单数据:",a),eN(a),ev(!0)},eW=(e,t,s)=>{if(!A)return!1;let a=A.mockFiles.find(t=>t.apiName===e);if(!a)return!1;let n=a.methods.find(e=>e.method.toLowerCase()===t.toLowerCase());return!!n&&!!n.files.find(e=>e.siteName===s)},eX=async()=>{if(!ey||!eb.siteName.trim())return void alert("请输入场景名称");if(eW(ey.apiName,ey.method,eb.siteName))return void alert("接口 ".concat(ey.apiPath," [").concat(ey.method.toUpperCase(),'] 的场景 "').concat(eb.siteName,'" 已存在'));eC(!0);try{let e=eH(ey.method,ey.apiPath),t=await fetch("/api/mock-file",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:s,apiName:ey.apiName,method:ey.method.toLowerCase(),siteName:eb.siteName,content:e})}),a=await t.json();if(a.success)eb.mockOpen&&await eY(ey.apiName,ey.method,eb.siteName,!0),eN({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0}),ev(!1),ek(null),await eF(),alert("场景创建成功");else throw Error(a.error||"创建失败")}catch(e){console.error("创建场景失败:",e),alert("创建场景失败: ".concat(e instanceof Error?e.message:"未知错误"))}finally{eC(!1)}},eY=async(e,t,s,a)=>{if(c)try{let n=await fetch("/api/mock-open-status",{method:"PUT",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:c.projectName,apiName:e,method:t,siteName:s,isOpen:a})}),r=await n.json();r.success?await eF():console.error("更新Mock开启状态失败:",r.error)}catch(e){console.error("更新Mock开启状态失败:",e)}},eZ=e=>{eS(e),X(1)};if(u)return(0,a.jsx)("main",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:(0,a.jsx)("div",{className:"text-center py-8",children:(0,a.jsx)("p",{children:"加载中..."})})});if(p||!c)return(0,a.jsxs)("main",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:[(0,a.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,a.jsx)("h1",{className:"text-2xl font-bold",children:"项目配置"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[s&&(0,a.jsx)(i.$,{variant:"default",onClick:eL,disabled:U,children:U?"打开中...":"在 Cursor 中打开"}),(0,a.jsx)(i.$,{variant:"outline",onClick:eT,children:"返回初始化页面"})]})]}),(0,a.jsx)("div",{className:"text-center text-red-500 py-8",children:(0,a.jsx)("p",{children:p||"未找到项目配置"})})]});let eQ=Object.keys(c.envs);return(0,a.jsxs)("main",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:[(0,a.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,a.jsxs)("div",{className:"flex items-center gap-4",children:[(0,a.jsxs)("h1",{className:"text-2xl font-bold",children:[c.projectName," - 项目配置"]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(P,{className:"text-sm font-medium text-gray-600",children:"切换项目:"}),(0,a.jsxs)(f,{value:s||"",onValueChange:a=>{if(a===s)return;let n=e.get("tab"),r="/configuration?project=".concat(encodeURIComponent(a)).concat(n?"&tab=".concat(n):"");t.push(r)},disabled:eh,children:[(0,a.jsx)(v,{className:"w-40",children:(0,a.jsx)(j,{placeholder:eh?"加载中...":"选择项目"})}),(0,a.jsx)(b,{children:ex.map(e=>(0,a.jsx)(N,{value:e.name,children:(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)("span",{className:"w-2 h-2 rounded-full ".concat("existing"===e.status?"bg-green-500":"failed"===e.status?"bg-red-500":"bg-yellow-500")}),(0,a.jsx)("span",{children:e.name})]})},e.name))})]})]})]}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(i.$,{variant:"default",onClick:eL,disabled:U,children:U?"打开中...":"在 Cursor 中打开"}),(0,a.jsx)(i.$,{variant:"outline",onClick:eT,children:"返回初始化页面"})]})]}),eQ.length>0?(0,a.jsxs)(o,{value:Z||eQ[0],onValueChange:e=>{Q(e),"mock"===e&&eF()},className:"w-full",children:[(0,a.jsxs)(d,{className:"grid w-full",style:{gridTemplateColumns:"repeat(".concat(eQ.length+1,", 1fr)")},children:[eQ.map(e=>(0,a.jsx)(m,{value:e,className:"capitalize",children:e},e)),(0,a.jsx)(m,{value:"mock",className:"capitalize",children:"Mock配置"})]}),eQ.map(e=>{var t,s,n,r,l,o,d;let m=c.envs[e],u=Object.entries(m.proxyEnv),h=(null==(t=y[e])?void 0:t.selectedProxy)||"",p=(null==(s=y[e])?void 0:s.selectedOption)||"",g=m.currentProxy,k=m.proxyEnv[g]||g,C=m.proxyEnv[g]?g:"custom";return(0,a.jsx)(x,{value:e,className:"space-y-6",children:(0,a.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-2 gap-6",children:[(0,a.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg",children:[(0,a.jsxs)("h3",{className:"text-lg font-semibold mb-4",children:[e," 环境配置"]}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)(P,{className:"block text-sm font-medium mb-2",children:"接口代理环境切换"}),(0,a.jsxs)(f,{value:p,onValueChange:t=>e_(e,t),children:[(0,a.jsx)(v,{className:"w-full",children:(0,a.jsx)(j,{placeholder:"选择代理环境"})}),(0,a.jsx)(b,{children:u.map(e=>{let[t,s]=e;return(0,a.jsxs)(N,{value:t,children:[t,"(",s,")"]},t)})})]})]}),k&&(0,a.jsxs)("div",{className:"p-3 bg-blue-50 rounded-md",children:[(0,a.jsxs)("p",{className:"text-sm text-blue-700",children:["当前项目接口已代理至:",C," 环境"]}),(0,a.jsxs)("p",{className:"text-sm text-blue-600",children:["代理地址为:",k]})]}),"custom"===p&&(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(P,{className:"block text-sm font-medium",children:"自定义代理地址"}),(0,a.jsx)(w,{type:"url",placeholder:"请输入自定义代理地址 (如: http://localhost:52741)",value:h,onChange:t=>eU(e,t.target.value),className:"w-full"}),(0,a.jsx)("p",{className:"text-xs text-gray-500",children:"请输入完整的代理地址,包括协议 (http:// 或 https://)"})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)(i.$,{onClick:()=>eA(e),disabled:null==(n=y[e])?void 0:n.saving,className:"w-full sm:w-auto",children:(null==(r=y[e])?void 0:r.saving)?"保存中...":"保存配置"}),(null==(l=y[e])?void 0:l.saveMessage)&&(0,a.jsx)("span",{className:"text-sm ml-3 ".concat((null==(o=y[e])?void 0:o.saveMessage)==="保存成功"?"text-green-600":"text-red-600"),children:null==(d=y[e])?void 0:d.saveMessage})]})]})]}),(0,a.jsx)(q,{currentProjectName:c.projectName,currentEnvName:e})]})},e)}),(0,a.jsx)(x,{value:"mock",className:"space-y-6",children:(0,a.jsxs)("div",{className:"p-6 bg-gray-50 rounded-lg",children:[(0,a.jsx)("h3",{className:"text-lg font-semibold mb-4",children:"Mock配置"}),(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6 mb-6",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)(P,{className:"text-sm font-medium",children:"Mock拦截"}),(0,a.jsx)("p",{className:"text-xs text-gray-500",children:"启用或禁用Mock拦截功能"})]}),(0,a.jsx)(E,{checked:C.mockingIntercept,onCheckedChange:eI})]}),(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"space-y-1",children:[(0,a.jsx)(P,{className:"text-sm font-medium",children:"Mock开启"}),(0,a.jsx)("p",{className:"text-xs text-gray-500",children:"启用或禁用Mock功能"})]}),(0,a.jsx)(E,{checked:C.mockOpen,onCheckedChange:e$})]})]}),C.saveMessage&&(0,a.jsx)("div",{className:"mb-6",children:(0,a.jsx)("span",{className:"text-sm ".concat(C.saveMessage.includes("已保存")?"text-green-600":"text-red-600"),children:C.saveMessage})}),(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsx)("h4",{className:"text-md font-medium",children:"Mock接口列表"}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(i.$,{onClick:()=>ef(!0),variant:"default",size:"sm",children:"新建"}),(0,a.jsx)(i.$,{onClick:eF,disabled:B,variant:"outline",size:"sm",children:B?"加载中...":"刷新"})]})]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsxs)("div",{className:"relative flex-1 max-w-md",children:[(0,a.jsx)(w,{placeholder:"搜索接口地址...",value:eP,onChange:e=>eZ(e.target.value),className:"pr-8"}),eP&&(0,a.jsx)(i.$,{variant:"ghost",size:"sm",onClick:()=>{eS(""),X(1)},className:"absolute right-1 top-1/2 transform -translate-y-1/2 h-6 w-6 p-0 hover:bg-gray-100",children:"\xd7"})]}),eP&&(0,a.jsxs)("span",{className:"text-sm text-gray-500",children:['搜索关键词: "',eP,'"']})]}),B?(0,a.jsx)("div",{className:"text-center py-8",children:(0,a.jsx)("p",{className:"text-gray-500",children:"加载Mock数据中..."})}):A&&A.mockFiles.length>0?(()=>{let e=[];A.mockFiles.forEach(t=>{t.methods.forEach(s=>{var a,n;let r=t.apiName.replace(/_/g,"/"),i=s.files.map(e=>e.siteName),c=(null==(a=s.setting)?void 0:a.currentSite)||i[0]||"",l=(null==(n=s.setting)?void 0:n.open)||[],o=l.includes(c);e.push({apiPath:r,method:s.method.toUpperCase(),currentSite:c,availableSites:i,apiName:t.apiName,isOpen:o,openSites:l})})});let t=eP.trim()?e.filter(e=>e.apiPath.toLowerCase().includes(eP.toLowerCase())):e,s=t.length,n=Math.ceil(s/Y),r=(W-1)*Y,c=r+Y,l=t.slice(r,c);return(0,a.jsxs)("div",{className:"space-y-4",children:[(0,a.jsxs)(M,{children:[(0,a.jsx)(O,{children:(0,a.jsxs)(z,{children:[(0,a.jsx)(L,{children:"接口地址"}),(0,a.jsx)(L,{children:"请求方法"}),(0,a.jsx)(L,{children:"当前场景"}),(0,a.jsx)(L,{children:"开启mock"}),(0,a.jsx)(L,{children:"操作"})]})}),(0,a.jsx)(T,{children:l.map((e,t)=>(0,a.jsxs)(z,{children:[(0,a.jsx)(_,{className:"font-medium",children:e.apiPath}),(0,a.jsx)(_,{children:(0,a.jsx)("span",{className:"px-2 py-1 rounded text-xs font-medium ".concat("GET"===e.method?"bg-green-100 text-green-800":"POST"===e.method?"bg-blue-100 text-blue-800":"PUT"===e.method?"bg-yellow-100 text-yellow-800":"DELETE"===e.method?"bg-red-100 text-red-800":"bg-gray-100 text-gray-800"),children:e.method})}),(0,a.jsx)(_,{children:(0,a.jsxs)(f,{value:e.currentSite,onValueChange:t=>eG(e.apiName,e.method.toLowerCase(),t),children:[(0,a.jsx)(v,{className:"w-32",children:(0,a.jsx)(j,{})}),(0,a.jsx)(b,{children:e.availableSites.map(e=>(0,a.jsx)(N,{value:e,children:e},e))})]})}),(0,a.jsx)(_,{children:(0,a.jsx)(E,{checked:e.isOpen,onCheckedChange:t=>eY(e.apiName,e.method.toLowerCase(),e.currentSite,t)})}),(0,a.jsx)(_,{children:(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(i.$,{variant:"outline",size:"sm",onClick:()=>eJ(e.apiName,e.method.toLowerCase(),e.currentSite),disabled:en,children:en?"加载中...":"编辑"}),(0,a.jsx)(i.$,{variant:"outline",size:"sm",onClick:()=>eK(e.apiName,e.method.toLowerCase(),e.apiPath),disabled:ew,children:"新增场景"})]})})]},"".concat(e.apiName,"-").concat(e.method,"-").concat(t)))})]}),n>1&&(0,a.jsxs)("div",{className:"flex items-center justify-between",children:[(0,a.jsxs)("div",{className:"text-sm text-gray-500",children:["显示 ",r+1,"-",Math.min(c,s)," 条,共 ",s," 条"]}),(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(i.$,{variant:"outline",size:"sm",onClick:()=>X(e=>Math.max(1,e-1)),disabled:1===W,children:"上一页"}),(0,a.jsxs)("span",{className:"text-sm",children:[W," / ",n]}),(0,a.jsx)(i.$,{variant:"outline",size:"sm",onClick:()=>X(e=>Math.min(n,e+1)),disabled:W===n,children:"下一页"})]})]})]})})():(0,a.jsxs)("div",{className:"text-center py-8",children:[(0,a.jsx)("p",{className:"text-gray-500",children:"暂无Mock接口数据"}),(0,a.jsx)("p",{className:"text-xs text-gray-400 mt-1",children:"请先创建Mock文件"})]})]})]})})]}):(0,a.jsx)("div",{className:"text-center text-gray-500 py-8",children:(0,a.jsx)("p",{children:"该项目没有配置环境信息"})}),(0,a.jsx)($,{open:es||eg||ej,onOpenChange:e=>{e||(ea(!1),ef(!1),ev(!1),ek(null))},children:(0,a.jsxs)(G,{className:"w-screen h-screen max-w-none max-h-none m-0 rounded-none overflow-hidden flex flex-col",children:[(0,a.jsxs)(J,{className:"flex-shrink-0 border-b pb-4",children:[(0,a.jsx)(D,{children:eg?"新建Mock文件":ej?"新增场景":"编辑Mock文件"}),(0,a.jsx)(V,{children:eg?"创建一个新的Mock接口文件":ej&&ey?(0,a.jsxs)(a.Fragment,{children:["为接口 ",ey.apiPath," [",ey.method.toUpperCase(),"] 新增场景"]}):ee?(0,a.jsxs)(a.Fragment,{children:["编辑 ",ee.apiName.replace(/_/g,"/")," - ",ee.method.toUpperCase()," - ",ee.siteName,".js"]}):null})]}),(eg||ej)&&(0,a.jsxs)("div",{className:"flex-shrink-0 border-b pb-4",children:[(0,a.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(P,{htmlFor:"apiPath",className:"text-sm font-medium",children:"接口地址"}),ej?(0,a.jsx)("div",{className:"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600",children:eb.apiPath}):(0,a.jsx)(w,{id:"apiPath",placeholder:"/api/user/info",value:eb.apiPath,onChange:e=>eV("apiPath",e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(P,{htmlFor:"method",className:"text-sm font-medium",children:"请求方法"}),ej?(0,a.jsx)("div",{className:"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600",children:eb.method}):(0,a.jsxs)(f,{value:eb.method,onValueChange:e=>eV("method",e),children:[(0,a.jsx)(v,{children:(0,a.jsx)(j,{})}),(0,a.jsxs)(b,{children:[(0,a.jsx)(N,{value:"GET",children:"GET"}),(0,a.jsx)(N,{value:"POST",children:"POST"}),(0,a.jsx)(N,{value:"PUT",children:"PUT"}),(0,a.jsx)(N,{value:"DELETE",children:"DELETE"}),(0,a.jsx)(N,{value:"PATCH",children:"PATCH"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(P,{htmlFor:"siteName",className:"text-sm font-medium",children:"场景名称"}),eg?(0,a.jsx)("div",{className:"px-3 py-2 bg-gray-50 border border-gray-200 rounded-md text-sm text-gray-600",children:"默认场景"}):(0,a.jsx)(w,{id:"siteName",placeholder:"请输入场景名称",value:eb.siteName,onChange:e=>eV("siteName",e.target.value)})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)(P,{htmlFor:"mockOpen",className:"text-sm font-medium",children:"开启Mock"}),(0,a.jsxs)("div",{className:"flex items-center space-x-2",children:[(0,a.jsx)(E,{id:"mockOpen",checked:eb.mockOpen,onCheckedChange:e=>eV("mockOpen",e)}),(0,a.jsx)("span",{className:"text-sm text-gray-600",children:eb.mockOpen?"开启":"关闭"})]})]})]}),eg&&eb.apiPath.trim()&&eb.siteName.trim()&&eq(eb.apiPath,eb.method,eb.siteName)&&(0,a.jsx)("div",{className:"mt-4 p-3 bg-red-50 border border-red-200 rounded-md",children:(0,a.jsx)("div",{className:"flex items-center",children:(0,a.jsxs)("span",{className:"text-red-600 text-sm",children:["⚠️ 接口 ",eb.apiPath," [",eb.method.toUpperCase(),'] 的场景 "',eb.siteName,'" 已存在']})})}),ej&&ey&&eb.siteName.trim()&&eW(ey.apiName,ey.method,eb.siteName)&&(0,a.jsx)("div",{className:"mt-4 p-3 bg-red-50 border border-red-200 rounded-md",children:(0,a.jsx)("div",{className:"flex items-center",children:(0,a.jsxs)("span",{className:"text-red-600 text-sm",children:['⚠️ 场景 "',eb.siteName,'" 已存在']})})})]}),(0,a.jsx)("div",{className:"flex-1 flex flex-col space-y-4 py-4",children:(0,a.jsxs)("div",{className:"flex-1 flex flex-col",children:[(0,a.jsx)(P,{className:"text-sm font-medium mb-2",children:"文件内容"}),(0,a.jsxs)("div",{className:"flex-1 border rounded-md overflow-hidden relative",children:[el&&(0,a.jsx)("div",{className:"absolute inset-0 bg-gray-50 flex items-center justify-center z-10",children:(0,a.jsx)("p",{className:"text-gray-500",children:"编辑器加载中..."})}),(0,a.jsx)(H.Ay,{height:"100%",defaultLanguage:"javascript",value:eg||ej?eH(eb.method,eb.apiPath):(null==ee?void 0:ee.content)||"",onChange:e=>{eg||ej||et(t=>t?{...t,content:e||""}:null)},onMount:async e=>{console.log("编辑器挂载,模式:",{isCreateMode:eg,isAddSceneMode:ej,createFormData:eb}),em(e),eo(!1),setTimeout(()=>eO(e),500)},loading:(0,a.jsx)("div",{className:"flex items-center justify-center h-full",children:(0,a.jsx)("p",{className:"text-gray-500",children:"编辑器加载中..."})}),options:{minimap:{enabled:!1},fontSize:14,lineNumbers:"on",roundedSelection:!1,scrollBeyondLastLine:!1,automaticLayout:!0,tabSize:2,insertSpaces:!0,wordWrap:"on",theme:"vs-dark",bracketPairColorization:{enabled:!0},quickSuggestions:{other:!0,comments:!0,strings:!0},formatOnPaste:!0,formatOnType:!0,readOnly:eg&&!eb.apiPath.trim()||ej&&!eb.apiPath.trim()}},eg?"create":ej?"addscene":"edit")]})]})}),(0,a.jsxs)(R,{className:"flex justify-between flex-shrink-0 border-t pt-4",children:[(0,a.jsx)(i.$,{variant:"secondary",onClick:eE,disabled:!ed||el,children:"格式化代码"}),(0,a.jsxs)("div",{className:"flex gap-2",children:[(0,a.jsx)(i.$,{variant:"outline",onClick:()=>{eg?(ef(!1),eN({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0})):ej?(ev(!1),ek(null),eN({apiPath:"",method:"GET",siteName:"默认场景",mockOpen:!0})):eD()},children:"取消"}),eg?(0,a.jsx)(i.$,{onClick:eB,disabled:ew||!eb.apiPath.trim()||!eb.siteName.trim()||eq(eb.apiPath,eb.method,eb.siteName),children:ew?"创建中...":"创建"}):ej?(0,a.jsx)(i.$,{onClick:eX,disabled:ew||!eb.siteName.trim()||!!ey&&eW(ey.apiName,ey.method,eb.siteName),children:ew?"创建中...":"创建"}):(0,a.jsx)(i.$,{onClick:eR,disabled:ei,children:ei?"保存中...":"保存"})]})]})]})})]})}function W(){return(0,a.jsx)(n.Suspense,{fallback:(0,a.jsx)("div",{className:"min-h-screen bg-gray-50 flex items-center justify-center",children:(0,a.jsxs)("div",{className:"text-center space-y-4",children:[(0,a.jsx)("div",{className:"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto"}),(0,a.jsx)("p",{className:"text-gray-600",children:"正在加载配置页面..."})]})}),children:(0,a.jsx)(K,{})})}}},e=>{var t=t=>e(e.s=t);e.O(0,[167,847,619,180,358],()=>t(2190)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[261],{4453:e=>{!function(){"use strict";var r={114:function(e){function r(e){if("string"!=typeof e)throw TypeError("Path must be a string. Received "+JSON.stringify(e))}function s(e,r){for(var s,t="",a=0,n=-1,o=0,i=0;i<=e.length;++i){if(i<e.length)s=e.charCodeAt(i);else if(47===s)break;else s=47;if(47===s){if(n===i-1||1===o);else if(n!==i-1&&2===o){if(t.length<2||2!==a||46!==t.charCodeAt(t.length-1)||46!==t.charCodeAt(t.length-2)){if(t.length>2){var l=t.lastIndexOf("/");if(l!==t.length-1){-1===l?(t="",a=0):a=(t=t.slice(0,l)).length-1-t.lastIndexOf("/"),n=i,o=0;continue}}else if(2===t.length||1===t.length){t="",a=0,n=i,o=0;continue}}r&&(t.length>0?t+="/..":t="..",a=2)}else t.length>0?t+="/"+e.slice(n+1,i):t=e.slice(n+1,i),a=i-n-1;n=i,o=0}else 46===s&&-1!==o?++o:o=-1}return t}var t={resolve:function(){for(var e,t,a="",n=!1,o=arguments.length-1;o>=-1&&!n;o--)o>=0?t=arguments[o]:(void 0===e&&(e=""),t=e),r(t),0!==t.length&&(a=t+"/"+a,n=47===t.charCodeAt(0));if(a=s(a,!n),n)if(a.length>0)return"/"+a;else return"/";return a.length>0?a:"."},normalize:function(e){if(r(e),0===e.length)return".";var t=47===e.charCodeAt(0),a=47===e.charCodeAt(e.length-1);return(0!==(e=s(e,!t)).length||t||(e="."),e.length>0&&a&&(e+="/"),t)?"/"+e:e},isAbsolute:function(e){return r(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0==arguments.length)return".";for(var e,s=0;s<arguments.length;++s){var a=arguments[s];r(a),a.length>0&&(void 0===e?e=a:e+="/"+a)}return void 0===e?".":t.normalize(e)},relative:function(e,s){if(r(e),r(s),e===s||(e=t.resolve(e))===(s=t.resolve(s)))return"";for(var a=1;a<e.length&&47===e.charCodeAt(a);++a);for(var n=e.length,o=n-a,i=1;i<s.length&&47===s.charCodeAt(i);++i);for(var l=s.length-i,c=o<l?o:l,u=-1,g=0;g<=c;++g){if(g===c){if(l>c){if(47===s.charCodeAt(i+g))return s.slice(i+g+1);else if(0===g)return s.slice(i+g)}else o>c&&(47===e.charCodeAt(a+g)?u=g:0===g&&(u=0));break}var d=e.charCodeAt(a+g);if(d!==s.charCodeAt(i+g))break;47===d&&(u=g)}var p="";for(g=a+u+1;g<=n;++g)(g===n||47===e.charCodeAt(g))&&(0===p.length?p+="..":p+="/..");return p.length>0?p+s.slice(i+u):(i+=u,47===s.charCodeAt(i)&&++i,s.slice(i))},_makeLong:function(e){return e},dirname:function(e){if(r(e),0===e.length)return".";for(var s=e.charCodeAt(0),t=47===s,a=-1,n=!0,o=e.length-1;o>=1;--o)if(47===(s=e.charCodeAt(o))){if(!n){a=o;break}}else n=!1;return -1===a?t?"/":".":t&&1===a?"//":e.slice(0,a)},basename:function(e,s){if(void 0!==s&&"string"!=typeof s)throw TypeError('"ext" argument must be a string');r(e);var t,a=0,n=-1,o=!0;if(void 0!==s&&s.length>0&&s.length<=e.length){if(s.length===e.length&&s===e)return"";var i=s.length-1,l=-1;for(t=e.length-1;t>=0;--t){var c=e.charCodeAt(t);if(47===c){if(!o){a=t+1;break}}else -1===l&&(o=!1,l=t+1),i>=0&&(c===s.charCodeAt(i)?-1==--i&&(n=t):(i=-1,n=l))}return a===n?n=l:-1===n&&(n=e.length),e.slice(a,n)}for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!o){a=t+1;break}}else -1===n&&(o=!1,n=t+1);return -1===n?"":e.slice(a,n)},extname:function(e){r(e);for(var s=-1,t=0,a=-1,n=!0,o=0,i=e.length-1;i>=0;--i){var l=e.charCodeAt(i);if(47===l){if(!n){t=i+1;break}continue}-1===a&&(n=!1,a=i+1),46===l?-1===s?s=i:1!==o&&(o=1):-1!==s&&(o=-1)}return -1===s||-1===a||0===o||1===o&&s===a-1&&s===t+1?"":e.slice(s,a)},format:function(e){var r,s;if(null===e||"object"!=typeof e)throw TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return r=e.dir||e.root,s=e.base||(e.name||"")+(e.ext||""),r?r===e.root?r+s:r+"/"+s:s},parse:function(e){r(e);var s,t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var a=e.charCodeAt(0),n=47===a;n?(t.root="/",s=1):s=0;for(var o=-1,i=0,l=-1,c=!0,u=e.length-1,g=0;u>=s;--u){if(47===(a=e.charCodeAt(u))){if(!c){i=u+1;break}continue}-1===l&&(c=!1,l=u+1),46===a?-1===o?o=u:1!==g&&(g=1):-1!==o&&(g=-1)}return -1===o||-1===l||0===g||1===g&&o===l-1&&o===i+1?-1!==l&&(0===i&&n?t.base=t.name=e.slice(1,l):t.base=t.name=e.slice(i,l)):(0===i&&n?(t.name=e.slice(1,o),t.base=e.slice(1,l)):(t.name=e.slice(i,o),t.base=e.slice(i,l)),t.ext=e.slice(o,l)),i>0?t.dir=e.slice(0,i-1):n&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};t.posix=t,e.exports=t}},s={};function t(e){var a=s[e];if(void 0!==a)return a.exports;var n=s[e]={exports:{}},o=!0;try{r[e](n,n.exports,t),o=!1}finally{o&&delete s[e]}return n.exports}t.ab="//",e.exports=t(114)}()},4694:e=>{!function(){"undefined"!=typeof __nccwpck_require__&&(__nccwpck_require__.ab="//");var r={};r.endianness=function(){return"LE"},r.hostname=function(){return"undefined"!=typeof location?location.hostname:""},r.loadavg=function(){return[]},r.uptime=function(){return 0},r.freemem=function(){return Number.MAX_VALUE},r.totalmem=function(){return Number.MAX_VALUE},r.cpus=function(){return[]},r.type=function(){return"Browser"},r.release=function(){return"undefined"!=typeof navigator?navigator.appVersion:""},r.networkInterfaces=r.getNetworkInterfaces=function(){return{}},r.arch=function(){return"javascript"},r.platform=function(){return"browser"},r.tmpdir=r.tmpDir=function(){return"/tmp"},r.EOL="\n",r.homedir=function(){return"/"},e.exports=r}()},6162:(e,r,s)=>{"use strict";s.d(r,{cn:()=>n});var t=s(4407),a=s(1467);function n(){for(var e=arguments.length,r=Array(e),s=0;s<e;s++)r[s]=arguments[s];return(0,a.QP)((0,t.$)(r))}},7472:(e,r,s)=>{"use strict";s.d(r,{default:()=>u});var t=s(5167),a=s(6343),n=s(1349),o=s(7541),i=s(4694),l=s(4453);(0,l.join)((0,i.homedir)(),"Documents","prime-workspace"),(0,l.join)((0,i.homedir)(),".prime-projects.json");var c=function(e){return e.PENDING="pending",e.EXISTING="existing",e.CLONING="cloning",e.SUCCESS="success",e.FAILED="failed",e.RETRYING="retrying",e}({});let u=()=>{let e=(0,n.useRouter)(),[r,s]=(0,a.useState)({isInitializing:!1,isCompleted:!1,isLoading:!0,hasCompleted:!1,globalProgress:0,globalMessage:"正在检查工作空间状态...",projects:{}});(0,a.useEffect)(()=>{i()},[]);let i=async()=>{try{s(e=>({...e,isLoading:!0,globalMessage:"正在检查工作空间状态..."}));let e=await fetch("/api/check-workspace"),r=await e.json();if(r.success){let e={};r.projects.forEach(r=>{e[r.name]={name:r.name,status:r.status,progress:100*(r.status===c.EXISTING),message:r.message,canRetry:!1}}),s(s=>({...s,isLoading:!1,projects:e,globalMessage:r.message||"检查完成"}))}else s(e=>({...e,isLoading:!1,globalMessage:r.error||"检查工作空间状态失败"}))}catch(e){s(e=>({...e,isLoading:!1,globalMessage:"无法连接到服务器,请刷新页面重试"})),console.error("检查工作空间状态失败:",e)}},l=e=>{switch(e.type){case"initialization":case"workspace_created":case"projects_loaded":if(s(r=>({...r,globalProgress:e.progress||0,globalMessage:e.message||""})),e.projects&&Array.isArray(e.projects)){let r={};e.projects.forEach(e=>{r[e]={name:e,status:c.PENDING,progress:0,message:"等待开始...",canRetry:!1}}),s(e=>({...e,projects:r}))}break;case"project_existing":if(e.projectName){let r=e.projectName;s(s=>{var t,a;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,globalMessage:null!=(a=e.message)?a:"",projects:{...s.projects,[r]:{...s.projects[r],status:c.EXISTING,message:"项目已存在",progress:100,canRetry:!1}}}})}break;case"project_start":if(e.projectName){let r=e.projectName;s(s=>{var t,a;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,globalMessage:null!=(a=e.message)?a:"",projects:{...s.projects,[r]:{...s.projects[r],status:c.CLONING,message:"开始克隆...",progress:0}}}})}break;case"project_progress":if(e.projectName){let r=e.projectName;s(s=>{var t,a,n;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,projects:{...s.projects,[r]:{...s.projects[r],message:null!=(a=e.message)?a:"",progress:Math.min(null!=(n=e.progress)?n:0,100)}}}})}break;case"project_success":if(e.projectName){let r=e.projectName;s(s=>{var t;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,projects:{...s.projects,[r]:{...s.projects[r],status:c.SUCCESS,message:"克隆成功",progress:100,canRetry:!1}}}})}break;case"project_failed":if(e.projectName){let r=e.projectName;s(s=>{var t;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,projects:{...s.projects,[r]:{...s.projects[r],status:c.FAILED,message:"克隆失败",error:e.error,canRetry:!0}}}})}break;case"completion":s(r=>{var s;return{...r,isInitializing:!1,isCompleted:!0,hasCompleted:!0,globalProgress:100,globalMessage:null!=(s=e.message)?s:"初始化完成",completionSummary:e.result?{success:e.result.success,totalProjects:e.result.totalProjects,successCount:e.result.successCount,failedCount:e.result.failedCount,duration:e.result.duration}:void 0}});break;case"error":s(r=>{var s,t;return{...r,isInitializing:!1,hasCompleted:!0,globalMessage:null!=(s=e.message)?s:"发生错误",globalProgress:null!=(t=e.progress)?t:r.globalProgress}})}},u=async e=>{s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isOpening:!0}}}));try{let r=await fetch("/api/open-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:e})}),t=await r.json();s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isOpening:!1}}})),t.success||console.error("打开项目失败:",t.error)}catch(r){s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isOpening:!1}}})),console.error("打开项目失败:",r)}},g=async e=>{s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],status:c.RETRYING,message:"正在重试...",progress:0,canRetry:!1}}}));try{let r=await fetch("/api/retry-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:e})}),t=await r.json();s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],status:t.success?c.SUCCESS:c.FAILED,message:t.message,error:t.error,progress:t.success?100:r.projects[e].progress,canRetry:!t.success}}}))}catch(r){s(s=>({...s,projects:{...s.projects,[e]:{...s.projects[e],status:c.FAILED,message:"重试失败",error:r instanceof Error?r.message:String(r),canRetry:!0}}}))}},d=e=>{switch(e){case c.EXISTING:case c.SUCCESS:return"text-green-600 bg-green-50 border-green-200";case c.FAILED:return"text-red-600 bg-red-50 border-red-200";case c.CLONING:case c.RETRYING:return"text-blue-600 bg-blue-50 border-blue-200";case c.PENDING:default:return"text-gray-600 bg-gray-50 border-gray-200"}},p=e=>{switch(e){case c.PENDING:return"待克隆";case c.EXISTING:return"已存在";case c.CLONING:return"克隆中";case c.SUCCESS:return"成功";case c.FAILED:return"失败";case c.RETRYING:return"重试中";default:return"未知"}},m=()=>{let e=Object.values(r.projects);return e.length>0&&e.every(e=>e.status===c.EXISTING)},h=r=>{e.push("/configuration?project=".concat(encodeURIComponent(r)))};return(0,t.jsxs)("div",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,t.jsx)("h1",{className:"text-2xl font-bold",children:"项目初始化"}),r.isLoading?(0,t.jsx)(o.$,{disabled:!0,children:"检查中..."}):(0,t.jsx)(o.$,{onClick:()=>{s(e=>({...e,isInitializing:!0,isCompleted:!1,hasCompleted:!1,globalProgress:0,globalMessage:"正在连接服务器...",projects:{},completionSummary:void 0}));let e=new EventSource("/api/initialize-workspace");e.onmessage=e=>{try{let r=JSON.parse(e.data);l(r)}catch(e){console.error("解析 SSE 消息失败:",e)}},e.onerror=()=>{s(e=>e.hasCompleted?e:{...e,isInitializing:!1,globalMessage:"连接服务器失败,请重试"}),e.close()},e.addEventListener("error",()=>{e.close()})},disabled:r.isInitializing,children:r.isInitializing?"初始化中...":"创建项目空间"})]}),(r.isInitializing||r.isCompleted)&&!m()&&(0,t.jsxs)("div",{className:"mb-6 p-4 bg-gray-50 rounded-lg",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:r.globalMessage}),(0,t.jsxs)("span",{className:"text-sm text-gray-600",children:[r.globalProgress,"%"]})]}),(0,t.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,t.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:"".concat(r.globalProgress,"%")}})})]}),r.completionSummary&&!m()&&(0,t.jsxs)("div",{className:"mb-6 p-4 rounded-lg border ".concat(r.completionSummary.success?"bg-green-50 border-green-200":"bg-yellow-50 border-yellow-200"),children:[(0,t.jsx)("h3",{className:"font-semibold mb-2",children:"初始化完成"}),(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[(0,t.jsxs)("div",{children:["总项目数: ",r.completionSummary.totalProjects]}),(0,t.jsxs)("div",{className:"text-green-600",children:["成功: ",r.completionSummary.successCount]}),(0,t.jsxs)("div",{className:"text-red-600",children:["失败: ",r.completionSummary.failedCount]}),(0,t.jsxs)("div",{children:["耗时: ",Math.round(r.completionSummary.duration/1e3),"s"]})]})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",children:Object.keys(r.projects).length>0?Object.values(r.projects).map(e=>(0,t.jsxs)("div",{className:"border rounded-lg p-4 ".concat(d(e.status)),children:[(0,t.jsxs)("div",{className:"flex justify-between items-start mb-2",children:[(0,t.jsx)("h2",{className:"font-semibold cursor-pointer hover:text-blue-600 transition-colors",onClick:()=>h(e.name),title:"点击进入项目配置",children:e.name}),(0,t.jsx)("span",{className:"text-xs px-2 py-1 rounded-full bg-white",children:p(e.status)})]}),(0,t.jsx)("p",{className:"text-sm mb-2",children:e.message}),e.status===c.CLONING||e.status===c.RETRYING?(0,t.jsxs)("div",{className:"mb-2",children:[(0,t.jsx)("div",{className:"w-full bg-white rounded-full h-1",children:(0,t.jsx)("div",{className:"bg-current h-1 rounded-full transition-all duration-300",style:{width:"".concat(e.progress,"%")}})}),(0,t.jsxs)("span",{className:"text-xs",children:[e.progress,"%"]})]}):null,e.error&&(0,t.jsx)("p",{className:"text-xs text-red-600 mb-2",children:e.error}),(0,t.jsxs)("div",{className:"space-y-2",children:[e.canRetry&&(0,t.jsx)(o.$,{size:"sm",variant:"outline",onClick:()=>g(e.name),className:"w-full",children:"重试"}),(e.status===c.EXISTING||e.status===c.SUCCESS)&&(0,t.jsx)(o.$,{size:"sm",variant:"default",onClick:()=>u(e.name),disabled:e.isOpening,className:"w-full",children:e.isOpening?"打开中...":"在 Cursor 中打开"})]})]},e.name)):(0,t.jsx)("div",{className:"col-span-full text-center text-gray-500 py-8",children:r.isLoading?"正在检查项目状态...":r.isInitializing?"正在加载项目...":'点击"创建项目空间"开始初始化'})})]})}},7541:(e,r,s)=>{"use strict";s.d(r,{$:()=>l});var t=s(5167);s(6343);var a=s(7775),n=s(2703),o=s(6162);let i=(0,n.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function l(e){let{className:r,variant:s,size:n,asChild:l=!1,...c}=e,u=l?a.DX:"button";return(0,t.jsx)(u,{"data-slot":"button",className:(0,o.cn)(i({variant:s,size:n,className:r})),...c})}},7570:(e,r,s)=>{Promise.resolve().then(s.bind(s,7472))}},e=>{var r=r=>e(e.s=r);e.O(0,[167,619,180,358],()=>r(7570)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[261],{4453:e=>{!function(){"use strict";var r={114:function(e){function r(e){if("string"!=typeof e)throw TypeError("Path must be a string. Received "+JSON.stringify(e))}function s(e,r){for(var s,t="",a=0,n=-1,o=0,i=0;i<=e.length;++i){if(i<e.length)s=e.charCodeAt(i);else if(47===s)break;else s=47;if(47===s){if(n===i-1||1===o);else if(n!==i-1&&2===o){if(t.length<2||2!==a||46!==t.charCodeAt(t.length-1)||46!==t.charCodeAt(t.length-2)){if(t.length>2){var l=t.lastIndexOf("/");if(l!==t.length-1){-1===l?(t="",a=0):a=(t=t.slice(0,l)).length-1-t.lastIndexOf("/"),n=i,o=0;continue}}else if(2===t.length||1===t.length){t="",a=0,n=i,o=0;continue}}r&&(t.length>0?t+="/..":t="..",a=2)}else t.length>0?t+="/"+e.slice(n+1,i):t=e.slice(n+1,i),a=i-n-1;n=i,o=0}else 46===s&&-1!==o?++o:o=-1}return t}var t={resolve:function(){for(var e,t,a="",n=!1,o=arguments.length-1;o>=-1&&!n;o--)o>=0?t=arguments[o]:(void 0===e&&(e=""),t=e),r(t),0!==t.length&&(a=t+"/"+a,n=47===t.charCodeAt(0));if(a=s(a,!n),n)if(a.length>0)return"/"+a;else return"/";return a.length>0?a:"."},normalize:function(e){if(r(e),0===e.length)return".";var t=47===e.charCodeAt(0),a=47===e.charCodeAt(e.length-1);return(0!==(e=s(e,!t)).length||t||(e="."),e.length>0&&a&&(e+="/"),t)?"/"+e:e},isAbsolute:function(e){return r(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0==arguments.length)return".";for(var e,s=0;s<arguments.length;++s){var a=arguments[s];r(a),a.length>0&&(void 0===e?e=a:e+="/"+a)}return void 0===e?".":t.normalize(e)},relative:function(e,s){if(r(e),r(s),e===s||(e=t.resolve(e))===(s=t.resolve(s)))return"";for(var a=1;a<e.length&&47===e.charCodeAt(a);++a);for(var n=e.length,o=n-a,i=1;i<s.length&&47===s.charCodeAt(i);++i);for(var l=s.length-i,c=o<l?o:l,g=-1,u=0;u<=c;++u){if(u===c){if(l>c){if(47===s.charCodeAt(i+u))return s.slice(i+u+1);else if(0===u)return s.slice(i+u)}else o>c&&(47===e.charCodeAt(a+u)?g=u:0===u&&(g=0));break}var d=e.charCodeAt(a+u);if(d!==s.charCodeAt(i+u))break;47===d&&(g=u)}var p="";for(u=a+g+1;u<=n;++u)(u===n||47===e.charCodeAt(u))&&(0===p.length?p+="..":p+="/..");return p.length>0?p+s.slice(i+g):(i+=g,47===s.charCodeAt(i)&&++i,s.slice(i))},_makeLong:function(e){return e},dirname:function(e){if(r(e),0===e.length)return".";for(var s=e.charCodeAt(0),t=47===s,a=-1,n=!0,o=e.length-1;o>=1;--o)if(47===(s=e.charCodeAt(o))){if(!n){a=o;break}}else n=!1;return -1===a?t?"/":".":t&&1===a?"//":e.slice(0,a)},basename:function(e,s){if(void 0!==s&&"string"!=typeof s)throw TypeError('"ext" argument must be a string');r(e);var t,a=0,n=-1,o=!0;if(void 0!==s&&s.length>0&&s.length<=e.length){if(s.length===e.length&&s===e)return"";var i=s.length-1,l=-1;for(t=e.length-1;t>=0;--t){var c=e.charCodeAt(t);if(47===c){if(!o){a=t+1;break}}else -1===l&&(o=!1,l=t+1),i>=0&&(c===s.charCodeAt(i)?-1==--i&&(n=t):(i=-1,n=l))}return a===n?n=l:-1===n&&(n=e.length),e.slice(a,n)}for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!o){a=t+1;break}}else -1===n&&(o=!1,n=t+1);return -1===n?"":e.slice(a,n)},extname:function(e){r(e);for(var s=-1,t=0,a=-1,n=!0,o=0,i=e.length-1;i>=0;--i){var l=e.charCodeAt(i);if(47===l){if(!n){t=i+1;break}continue}-1===a&&(n=!1,a=i+1),46===l?-1===s?s=i:1!==o&&(o=1):-1!==s&&(o=-1)}return -1===s||-1===a||0===o||1===o&&s===a-1&&s===t+1?"":e.slice(s,a)},format:function(e){var r,s;if(null===e||"object"!=typeof e)throw TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return r=e.dir||e.root,s=e.base||(e.name||"")+(e.ext||""),r?r===e.root?r+s:r+"/"+s:s},parse:function(e){r(e);var s,t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var a=e.charCodeAt(0),n=47===a;n?(t.root="/",s=1):s=0;for(var o=-1,i=0,l=-1,c=!0,g=e.length-1,u=0;g>=s;--g){if(47===(a=e.charCodeAt(g))){if(!c){i=g+1;break}continue}-1===l&&(c=!1,l=g+1),46===a?-1===o?o=g:1!==u&&(u=1):-1!==o&&(u=-1)}return -1===o||-1===l||0===u||1===u&&o===l-1&&o===i+1?-1!==l&&(0===i&&n?t.base=t.name=e.slice(1,l):t.base=t.name=e.slice(i,l)):(0===i&&n?(t.name=e.slice(1,o),t.base=e.slice(1,l)):(t.name=e.slice(i,o),t.base=e.slice(i,l)),t.ext=e.slice(o,l)),i>0?t.dir=e.slice(0,i-1):n&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};t.posix=t,e.exports=t}},s={};function t(e){var a=s[e];if(void 0!==a)return a.exports;var n=s[e]={exports:{}},o=!0;try{r[e](n,n.exports,t),o=!1}finally{o&&delete s[e]}return n.exports}t.ab="//",e.exports=t(114)}()},4694:e=>{!function(){"undefined"!=typeof __nccwpck_require__&&(__nccwpck_require__.ab="//");var r={};r.endianness=function(){return"LE"},r.hostname=function(){return"undefined"!=typeof location?location.hostname:""},r.loadavg=function(){return[]},r.uptime=function(){return 0},r.freemem=function(){return Number.MAX_VALUE},r.totalmem=function(){return Number.MAX_VALUE},r.cpus=function(){return[]},r.type=function(){return"Browser"},r.release=function(){return"undefined"!=typeof navigator?navigator.appVersion:""},r.networkInterfaces=r.getNetworkInterfaces=function(){return{}},r.arch=function(){return"javascript"},r.platform=function(){return"browser"},r.tmpdir=r.tmpDir=function(){return"/tmp"},r.EOL="\n",r.homedir=function(){return"/"},e.exports=r}()},6162:(e,r,s)=>{"use strict";s.d(r,{cn:()=>n});var t=s(4407),a=s(1467);function n(){for(var e=arguments.length,r=Array(e),s=0;s<e;s++)r[s]=arguments[s];return(0,a.QP)((0,t.$)(r))}},7472:(e,r,s)=>{"use strict";s.d(r,{default:()=>g});var t=s(5167),a=s(6343),n=s(1349),o=s(7541),i=s(4694),l=s(4453);(0,l.join)((0,i.homedir)(),"Documents","prime-workspace"),(0,i.cpus)().length,(0,l.join)((0,i.homedir)(),".prime-projects.json");var c=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}({});let g=()=>{let e=(0,n.useRouter)(),[r,s]=(0,a.useState)({isInitializing:!1,isCompleted:!1,isLoading:!0,hasCompleted:!1,globalProgress:0,globalMessage:"正在检查工作空间状态...",projects:{}}),[i,l]=(0,a.useState)({});(0,a.useEffect)(()=>{g()},[]);let g=async()=>{try{s(e=>({...e,isLoading:!0,globalMessage:"正在检查工作空间状态..."}));let e=await fetch("/api/check-workspace"),r=await e.json();if(r.success){let e={};r.projects.forEach(r=>{e[r.name]={name:r.name,status:r.status,progress:100*(r.status===c.EXISTING),message:r.message,canRetry:!1,needsCleanup:r.needsCleanup||!1}}),s(s=>({...s,isLoading:!1,projects:e,globalMessage:r.message||"检查完成"}))}else s(e=>({...e,isLoading:!1,globalMessage:r.error||"检查工作空间状态失败"}))}catch(e){s(e=>({...e,isLoading:!1,globalMessage:"无法连接到服务器,请刷新页面重试"})),console.error("检查工作空间状态失败:",e)}},u=e=>{switch(e.type){case"initialization":case"workspace_created":case"projects_loaded":if(s(r=>({...r,globalProgress:e.progress||0,globalMessage:e.message||""})),e.projects&&Array.isArray(e.projects)){let r={};e.projects.forEach(e=>{r[e]={name:e,status:c.PENDING,progress:0,message:"等待开始...",canRetry:!1}}),s(e=>({...e,projects:r}))}break;case"project_existing":if(e.projectName){let r=e.projectName;s(s=>{var t,a;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,globalMessage:null!=(a=e.message)?a:"",projects:{...s.projects,[r]:{...s.projects[r],status:c.EXISTING,message:"项目已存在",progress:100,canRetry:!1}}}})}break;case"project_start":if(e.projectName){let r=e.projectName;s(s=>{var t,a;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,globalMessage:null!=(a=e.message)?a:"",projects:{...s.projects,[r]:{...s.projects[r],status:c.CLONING,message:"开始克隆...",progress:0}}}})}break;case"project_progress":if(e.projectName){let r=e.projectName;s(s=>{var t,a,n;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,projects:{...s.projects,[r]:{...s.projects[r],message:null!=(a=e.message)?a:"",progress:Math.min(null!=(n=e.progress)?n:0,100)}}}})}break;case"project_success":if(e.projectName){let r=e.projectName;s(s=>{var t;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,projects:{...s.projects,[r]:{...s.projects[r],status:c.SUCCESS,message:"克隆成功",progress:100,canRetry:!1}}}})}break;case"project_failed":if(e.projectName){let r=e.projectName;s(s=>{var t;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,projects:{...s.projects,[r]:{...s.projects[r],status:c.FAILED,message:"克隆失败",error:e.error,canRetry:!0}}}})}break;case"command_log":if(e.projectName&&e.logType&&void 0!==e.content&&e.timestamp){let r=e.projectName,t=e.logType,a=e.content,n=e.timestamp;s(e=>{var s;return{...e,projects:{...e.projects,[r]:{...e.projects[r],logs:[...(null==(s=e.projects[r])?void 0:s.logs)||[],{type:t,content:a,timestamp:n}].slice(-1e3)}}}})}break;case"completion":s(r=>{var s;return{...r,isInitializing:!1,isCompleted:!0,hasCompleted:!0,globalProgress:100,globalMessage:null!=(s=e.message)?s:"初始化完成",completionSummary:e.result?{success:e.result.success,totalProjects:e.result.totalProjects,successCount:e.result.successCount,failedCount:e.result.failedCount,duration:e.result.duration}:void 0}});break;case"error":s(r=>{var s,t;return{...r,isInitializing:!1,hasCompleted:!0,globalMessage:null!=(s=e.message)?s:"发生错误",globalProgress:null!=(t=e.progress)?t:r.globalProgress}})}},d=async e=>{s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isOpening:!0}}}));try{let r=await fetch("/api/open-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:e})}),t=await r.json();s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isOpening:!1}}})),t.success||console.error("打开项目失败:",t.error)}catch(r){s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isOpening:!1}}})),console.error("打开项目失败:",r)}},p=async e=>{s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isCleaningUp:!0}}}));try{let r=await fetch("/api/cleanup-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:e})}),t=await r.json();t.success?s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],status:c.PENDING,message:"已清理,待克隆",isCleaningUp:!1,needsCleanup:!1}}})):s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isCleaningUp:!1,error:t.error}}}))}catch(r){s(s=>({...s,projects:{...s.projects,[e]:{...s.projects[e],isCleaningUp:!1,error:r instanceof Error?r.message:String(r)}}}))}},m=async e=>{s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],status:c.RETRYING,message:"正在重试...",progress:0,canRetry:!1}}}));try{let r=await fetch("/api/retry-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:e})}),t=await r.json();s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],status:t.success?c.SUCCESS:c.FAILED,message:t.message,error:t.error,progress:t.success?100:r.projects[e].progress,canRetry:!t.success}}}))}catch(r){s(s=>({...s,projects:{...s.projects,[e]:{...s.projects[e],status:c.FAILED,message:"重试失败",error:r instanceof Error?r.message:String(r),canRetry:!0}}}))}},h=e=>{switch(e){case c.EXISTING:case c.SUCCESS:return"text-green-600 bg-green-50 border-green-200";case c.FAILED:return"text-red-600 bg-red-50 border-red-200";case c.INCOMPLETE:return"text-orange-600 bg-orange-50 border-orange-200";case c.CLONING:case c.RETRYING:return"text-blue-600 bg-blue-50 border-blue-200";case c.PENDING:default:return"text-gray-600 bg-gray-50 border-gray-200"}},f=e=>{switch(e){case c.PENDING:return"待克隆";case c.EXISTING:return"已存在";case c.CLONING:return"克隆中";case c.SUCCESS:return"成功";case c.FAILED:return"失败";case c.INCOMPLETE:return"不完整";case c.RETRYING:return"重试中";default:return"未知"}},b=()=>{let e=Object.values(r.projects);return e.length>0&&e.every(e=>e.status===c.EXISTING)},j=r=>{e.push("/configuration?project=".concat(encodeURIComponent(r)))};return(0,t.jsxs)("div",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,t.jsx)("h1",{className:"text-2xl font-bold",children:"项目初始化"}),r.isLoading?(0,t.jsx)(o.$,{disabled:!0,children:"检查中..."}):(0,t.jsx)(o.$,{onClick:()=>{s(e=>({...e,isInitializing:!0,isCompleted:!1,hasCompleted:!1,globalProgress:0,globalMessage:"正在连接服务器...",projects:{},completionSummary:void 0}));let e=new EventSource("/api/initialize-workspace");e.onmessage=e=>{try{let r=JSON.parse(e.data);u(r)}catch(e){console.error("解析 SSE 消息失败:",e)}},e.onerror=()=>{s(e=>e.hasCompleted?e:{...e,isInitializing:!1,globalMessage:"连接服务器失败,请重试"}),e.close()},e.addEventListener("error",()=>{e.close()})},disabled:r.isInitializing,children:r.isInitializing?"初始化中...":"创建项目空间"})]}),(r.isInitializing||r.isCompleted)&&!b()&&(0,t.jsxs)("div",{className:"mb-6 p-4 bg-gray-50 rounded-lg",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:r.globalMessage}),(0,t.jsxs)("span",{className:"text-sm text-gray-600",children:[r.globalProgress,"%"]})]}),(0,t.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,t.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:"".concat(r.globalProgress,"%")}})})]}),r.completionSummary&&!b()&&(0,t.jsxs)("div",{className:"mb-6 p-4 rounded-lg border ".concat(r.completionSummary.success?"bg-green-50 border-green-200":"bg-yellow-50 border-yellow-200"),children:[(0,t.jsx)("h3",{className:"font-semibold mb-2",children:"初始化完成"}),(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[(0,t.jsxs)("div",{children:["总项目数: ",r.completionSummary.totalProjects]}),(0,t.jsxs)("div",{className:"text-green-600",children:["成功: ",r.completionSummary.successCount]}),(0,t.jsxs)("div",{className:"text-red-600",children:["失败: ",r.completionSummary.failedCount]}),(0,t.jsxs)("div",{children:["耗时: ",Math.round(r.completionSummary.duration/1e3),"s"]})]})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",children:Object.keys(r.projects).length>0?Object.values(r.projects).map(e=>(0,t.jsxs)("div",{className:"border rounded-lg p-4 ".concat(h(e.status)),children:[(0,t.jsxs)("div",{className:"flex justify-between items-start mb-2",children:[(0,t.jsx)("h2",{className:"font-semibold cursor-pointer hover:text-blue-600 transition-colors",onClick:()=>j(e.name),title:"点击进入项目配置",children:e.name}),(0,t.jsx)("span",{className:"text-xs px-2 py-1 rounded-full bg-white",children:f(e.status)})]}),(0,t.jsx)("p",{className:"text-sm mb-2",children:e.message}),e.status===c.CLONING||e.status===c.RETRYING?(0,t.jsxs)("div",{className:"mb-2",children:[(0,t.jsx)("div",{className:"w-full bg-white rounded-full h-1",children:(0,t.jsx)("div",{className:"bg-current h-1 rounded-full transition-all duration-300",style:{width:"".concat(e.progress,"%")}})}),(0,t.jsxs)("span",{className:"text-xs",children:[e.progress,"%"]})]}):null,e.error&&(0,t.jsx)("p",{className:"text-xs text-red-600 mb-2",children:e.error}),(0,t.jsxs)("div",{className:"space-y-2",children:[e.canRetry&&(0,t.jsx)(o.$,{size:"sm",variant:"outline",onClick:()=>m(e.name),className:"w-full",children:"重试"}),e.needsCleanup&&e.status===c.INCOMPLETE&&(0,t.jsx)(o.$,{size:"sm",variant:"destructive",onClick:()=>p(e.name),disabled:e.isCleaningUp,className:"w-full",children:e.isCleaningUp?"清理中...":"清理项目"}),(e.status===c.EXISTING||e.status===c.SUCCESS)&&(0,t.jsx)(o.$,{size:"sm",variant:"default",onClick:()=>d(e.name),disabled:e.isOpening,className:"w-full",children:e.isOpening?"打开中...":"在 Cursor 中打开"}),e.logs&&e.logs.length>0&&(0,t.jsx)(o.$,{size:"sm",variant:"outline",onClick:()=>l(r=>({...r,[e.name]:!r[e.name]})),className:"w-full",children:i[e.name]?"隐藏日志":"查看日志 (".concat(e.logs.length,")")})]}),i[e.name]&&e.logs&&e.logs.length>0&&(0,t.jsx)("div",{className:"mt-3 border-t pt-3",children:(0,t.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:e.logs.map((e,r)=>(0,t.jsxs)("div",{className:"mb-1 ".concat("stderr"===e.type?"text-red-400":"progress"===e.type?"text-yellow-400":"text-green-400"),children:[(0,t.jsx)("span",{className:"text-gray-500 mr-2",children:new Date(e.timestamp).toLocaleTimeString()}),(0,t.jsxs)("span",{className:"text-blue-400 mr-2",children:["[",e.type,"]"]}),(0,t.jsx)("span",{className:"whitespace-pre-wrap",children:e.content})]},r))})})]},e.name)):(0,t.jsx)("div",{className:"col-span-full text-center text-gray-500 py-8",children:r.isLoading?"正在检查项目状态...":r.isInitializing?"正在加载项目...":'点击"创建项目空间"开始初始化'})})]})}},7541:(e,r,s)=>{"use strict";s.d(r,{$:()=>l});var t=s(5167);s(6343);var a=s(7775),n=s(2703),o=s(6162);let i=(0,n.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function l(e){let{className:r,variant:s,size:n,asChild:l=!1,...c}=e,g=l?a.DX:"button";return(0,t.jsx)(g,{"data-slot":"button",className:(0,o.cn)(i({variant:s,size:n,className:r})),...c})}},7570:(e,r,s)=>{Promise.resolve().then(s.bind(s,7472))}},e=>{var r=r=>e(e.s=r);e.O(0,[167,619,180,358],()=>r(7570)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[261],{625:(e,r,s)=>{Promise.resolve().then(s.bind(s,7472))},4453:e=>{!function(){"use strict";var r={114:function(e){function r(e){if("string"!=typeof e)throw TypeError("Path must be a string. Received "+JSON.stringify(e))}function s(e,r){for(var s,t="",a=0,n=-1,o=0,i=0;i<=e.length;++i){if(i<e.length)s=e.charCodeAt(i);else if(47===s)break;else s=47;if(47===s){if(n===i-1||1===o);else if(n!==i-1&&2===o){if(t.length<2||2!==a||46!==t.charCodeAt(t.length-1)||46!==t.charCodeAt(t.length-2)){if(t.length>2){var l=t.lastIndexOf("/");if(l!==t.length-1){-1===l?(t="",a=0):a=(t=t.slice(0,l)).length-1-t.lastIndexOf("/"),n=i,o=0;continue}}else if(2===t.length||1===t.length){t="",a=0,n=i,o=0;continue}}r&&(t.length>0?t+="/..":t="..",a=2)}else t.length>0?t+="/"+e.slice(n+1,i):t=e.slice(n+1,i),a=i-n-1;n=i,o=0}else 46===s&&-1!==o?++o:o=-1}return t}var t={resolve:function(){for(var e,t,a="",n=!1,o=arguments.length-1;o>=-1&&!n;o--)o>=0?t=arguments[o]:(void 0===e&&(e=""),t=e),r(t),0!==t.length&&(a=t+"/"+a,n=47===t.charCodeAt(0));if(a=s(a,!n),n)if(a.length>0)return"/"+a;else return"/";return a.length>0?a:"."},normalize:function(e){if(r(e),0===e.length)return".";var t=47===e.charCodeAt(0),a=47===e.charCodeAt(e.length-1);return(0!==(e=s(e,!t)).length||t||(e="."),e.length>0&&a&&(e+="/"),t)?"/"+e:e},isAbsolute:function(e){return r(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0==arguments.length)return".";for(var e,s=0;s<arguments.length;++s){var a=arguments[s];r(a),a.length>0&&(void 0===e?e=a:e+="/"+a)}return void 0===e?".":t.normalize(e)},relative:function(e,s){if(r(e),r(s),e===s||(e=t.resolve(e))===(s=t.resolve(s)))return"";for(var a=1;a<e.length&&47===e.charCodeAt(a);++a);for(var n=e.length,o=n-a,i=1;i<s.length&&47===s.charCodeAt(i);++i);for(var l=s.length-i,c=o<l?o:l,g=-1,u=0;u<=c;++u){if(u===c){if(l>c){if(47===s.charCodeAt(i+u))return s.slice(i+u+1);else if(0===u)return s.slice(i+u)}else o>c&&(47===e.charCodeAt(a+u)?g=u:0===u&&(g=0));break}var d=e.charCodeAt(a+u);if(d!==s.charCodeAt(i+u))break;47===d&&(g=u)}var p="";for(u=a+g+1;u<=n;++u)(u===n||47===e.charCodeAt(u))&&(0===p.length?p+="..":p+="/..");return p.length>0?p+s.slice(i+g):(i+=g,47===s.charCodeAt(i)&&++i,s.slice(i))},_makeLong:function(e){return e},dirname:function(e){if(r(e),0===e.length)return".";for(var s=e.charCodeAt(0),t=47===s,a=-1,n=!0,o=e.length-1;o>=1;--o)if(47===(s=e.charCodeAt(o))){if(!n){a=o;break}}else n=!1;return -1===a?t?"/":".":t&&1===a?"//":e.slice(0,a)},basename:function(e,s){if(void 0!==s&&"string"!=typeof s)throw TypeError('"ext" argument must be a string');r(e);var t,a=0,n=-1,o=!0;if(void 0!==s&&s.length>0&&s.length<=e.length){if(s.length===e.length&&s===e)return"";var i=s.length-1,l=-1;for(t=e.length-1;t>=0;--t){var c=e.charCodeAt(t);if(47===c){if(!o){a=t+1;break}}else -1===l&&(o=!1,l=t+1),i>=0&&(c===s.charCodeAt(i)?-1==--i&&(n=t):(i=-1,n=l))}return a===n?n=l:-1===n&&(n=e.length),e.slice(a,n)}for(t=e.length-1;t>=0;--t)if(47===e.charCodeAt(t)){if(!o){a=t+1;break}}else -1===n&&(o=!1,n=t+1);return -1===n?"":e.slice(a,n)},extname:function(e){r(e);for(var s=-1,t=0,a=-1,n=!0,o=0,i=e.length-1;i>=0;--i){var l=e.charCodeAt(i);if(47===l){if(!n){t=i+1;break}continue}-1===a&&(n=!1,a=i+1),46===l?-1===s?s=i:1!==o&&(o=1):-1!==s&&(o=-1)}return -1===s||-1===a||0===o||1===o&&s===a-1&&s===t+1?"":e.slice(s,a)},format:function(e){var r,s;if(null===e||"object"!=typeof e)throw TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return r=e.dir||e.root,s=e.base||(e.name||"")+(e.ext||""),r?r===e.root?r+s:r+"/"+s:s},parse:function(e){r(e);var s,t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var a=e.charCodeAt(0),n=47===a;n?(t.root="/",s=1):s=0;for(var o=-1,i=0,l=-1,c=!0,g=e.length-1,u=0;g>=s;--g){if(47===(a=e.charCodeAt(g))){if(!c){i=g+1;break}continue}-1===l&&(c=!1,l=g+1),46===a?-1===o?o=g:1!==u&&(u=1):-1!==o&&(u=-1)}return -1===o||-1===l||0===u||1===u&&o===l-1&&o===i+1?-1!==l&&(0===i&&n?t.base=t.name=e.slice(1,l):t.base=t.name=e.slice(i,l)):(0===i&&n?(t.name=e.slice(1,o),t.base=e.slice(1,l)):(t.name=e.slice(i,o),t.base=e.slice(i,l)),t.ext=e.slice(o,l)),i>0?t.dir=e.slice(0,i-1):n&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};t.posix=t,e.exports=t}},s={};function t(e){var a=s[e];if(void 0!==a)return a.exports;var n=s[e]={exports:{}},o=!0;try{r[e](n,n.exports,t),o=!1}finally{o&&delete s[e]}return n.exports}t.ab="//",e.exports=t(114)}()},4694:e=>{!function(){"undefined"!=typeof __nccwpck_require__&&(__nccwpck_require__.ab="//");var r={};r.endianness=function(){return"LE"},r.hostname=function(){return"undefined"!=typeof location?location.hostname:""},r.loadavg=function(){return[]},r.uptime=function(){return 0},r.freemem=function(){return Number.MAX_VALUE},r.totalmem=function(){return Number.MAX_VALUE},r.cpus=function(){return[]},r.type=function(){return"Browser"},r.release=function(){return"undefined"!=typeof navigator?navigator.appVersion:""},r.networkInterfaces=r.getNetworkInterfaces=function(){return{}},r.arch=function(){return"javascript"},r.platform=function(){return"browser"},r.tmpdir=r.tmpDir=function(){return"/tmp"},r.EOL="\n",r.homedir=function(){return"/"},e.exports=r}()},6162:(e,r,s)=>{"use strict";s.d(r,{cn:()=>n});var t=s(4407),a=s(1467);function n(){for(var e=arguments.length,r=Array(e),s=0;s<e;s++)r[s]=arguments[s];return(0,a.QP)((0,t.$)(r))}},7472:(e,r,s)=>{"use strict";s.d(r,{default:()=>g});var t=s(5167),a=s(6343),n=s(1349),o=s(7541),i=s(4694),l=s(4453);(0,l.join)((0,i.homedir)(),"Documents","prime-workspace"),(0,i.cpus)().length,(0,l.join)((0,i.homedir)(),".prime-projects.json");var c=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}({});let g=()=>{let e=(0,n.useRouter)(),[r,s]=(0,a.useState)({isInitializing:!1,isCompleted:!1,isLoading:!0,hasCompleted:!1,globalProgress:0,globalMessage:"正在检查工作空间状态...",projects:{}}),[i,l]=(0,a.useState)({});(0,a.useEffect)(()=>{g()},[]);let g=async()=>{try{s(e=>({...e,isLoading:!0,globalMessage:"正在检查工作空间状态..."}));let e=await fetch("/api/check-workspace"),r=await e.json();if(r.success){let e={};r.projects.forEach(r=>{e[r.name]={name:r.name,status:r.status,progress:100*(r.status===c.EXISTING),message:r.message,canRetry:!1,needsCleanup:r.needsCleanup||!1}}),s(s=>({...s,isLoading:!1,projects:e,globalMessage:r.message||"检查完成"}))}else s(e=>({...e,isLoading:!1,globalMessage:r.error||"检查工作空间状态失败"}))}catch(e){s(e=>({...e,isLoading:!1,globalMessage:"无法连接到服务器,请刷新页面重试"})),console.error("检查工作空间状态失败:",e)}},u=e=>{switch(e.type){case"initialization":case"workspace_created":case"projects_loaded":if(s(r=>({...r,globalProgress:e.progress||0,globalMessage:e.message||""})),e.projects&&Array.isArray(e.projects)){let r={};e.projects.forEach(e=>{r[e]={name:e,status:c.PENDING,progress:0,message:"等待开始...",canRetry:!1}}),s(e=>({...e,projects:r}))}break;case"project_existing":if(e.projectName){let r=e.projectName;s(s=>{var t,a;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,globalMessage:null!=(a=e.message)?a:"",projects:{...s.projects,[r]:{...s.projects[r],status:c.EXISTING,message:"项目已存在",progress:100,canRetry:!1}}}})}break;case"project_start":if(e.projectName){let r=e.projectName;s(s=>{var t,a;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,globalMessage:null!=(a=e.message)?a:"",projects:{...s.projects,[r]:{...s.projects[r],status:c.CLONING,message:"开始克隆...",progress:0}}}})}break;case"project_progress":if(e.projectName){let r=e.projectName;s(s=>{var t,a,n;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,projects:{...s.projects,[r]:{...s.projects[r],message:null!=(a=e.message)?a:"",progress:Math.min(null!=(n=e.progress)?n:0,100)}}}})}break;case"project_success":if(e.projectName){let r=e.projectName;s(s=>{var t;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,projects:{...s.projects,[r]:{...s.projects[r],status:c.SUCCESS,message:"克隆成功",progress:100,canRetry:!1}}}})}break;case"project_failed":if(e.projectName){let r=e.projectName;s(s=>{var t;return{...s,globalProgress:null!=(t=e.progress)?t:s.globalProgress,projects:{...s.projects,[r]:{...s.projects[r],status:c.FAILED,message:"克隆失败",error:e.error,canRetry:!0}}}})}break;case"command_log":if(e.projectName&&e.logType&&void 0!==e.content&&e.timestamp){let r=e.projectName,t=e.logType,a=e.content,n=e.timestamp;s(e=>{var s;return{...e,projects:{...e.projects,[r]:{...e.projects[r],logs:[...(null==(s=e.projects[r])?void 0:s.logs)||[],{type:t,content:a,timestamp:n}].slice(-1e3)}}}})}break;case"completion":s(r=>{var s;return{...r,isInitializing:!1,isCompleted:!0,hasCompleted:!0,globalProgress:100,globalMessage:null!=(s=e.message)?s:"初始化完成",completionSummary:e.result?{success:e.result.success,totalProjects:e.result.totalProjects,successCount:e.result.successCount,failedCount:e.result.failedCount,duration:e.result.duration}:void 0}});break;case"error":s(r=>{var s,t;return{...r,isInitializing:!1,hasCompleted:!0,globalMessage:null!=(s=e.message)?s:"发生错误",globalProgress:null!=(t=e.progress)?t:r.globalProgress}})}},d=async e=>{s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isOpening:!0}}}));try{let r=await fetch("/api/open-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:e})}),t=await r.json();s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isOpening:!1}}})),t.success||console.error("打开项目失败:",t.error)}catch(r){s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isOpening:!1}}})),console.error("打开项目失败:",r)}},p=async e=>{s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isCleaningUp:!0}}}));try{let r=await fetch("/api/cleanup-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:e})}),t=await r.json();t.success?s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],status:c.PENDING,message:"已清理,待克隆",isCleaningUp:!1,needsCleanup:!1}}})):s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],isCleaningUp:!1,error:t.error}}}))}catch(r){s(s=>({...s,projects:{...s.projects,[e]:{...s.projects[e],isCleaningUp:!1,error:r instanceof Error?r.message:String(r)}}}))}},m=async e=>{s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],status:c.RETRYING,message:"正在重试...",progress:0,canRetry:!1}}}));try{let r=await fetch("/api/retry-project",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({projectName:e})}),t=await r.json();s(r=>({...r,projects:{...r.projects,[e]:{...r.projects[e],status:t.success?c.SUCCESS:c.FAILED,message:t.message,error:t.error,progress:t.success?100:r.projects[e].progress,canRetry:!t.success}}}))}catch(r){s(s=>({...s,projects:{...s.projects,[e]:{...s.projects[e],status:c.FAILED,message:"重试失败",error:r instanceof Error?r.message:String(r),canRetry:!0}}}))}},h=e=>{switch(e){case c.EXISTING:case c.SUCCESS:return"text-green-600 bg-green-50 border-green-200";case c.FAILED:return"text-red-600 bg-red-50 border-red-200";case c.INCOMPLETE:return"text-orange-600 bg-orange-50 border-orange-200";case c.CLONING:case c.RETRYING:return"text-blue-600 bg-blue-50 border-blue-200";case c.PENDING:default:return"text-gray-600 bg-gray-50 border-gray-200"}},f=e=>{switch(e){case c.PENDING:return"待克隆";case c.EXISTING:return"已存在";case c.CLONING:return"克隆中";case c.SUCCESS:return"成功";case c.FAILED:return"失败";case c.INCOMPLETE:return"不完整";case c.RETRYING:return"重试中";default:return"未知"}},b=()=>{let e=Object.values(r.projects);return e.length>0&&e.every(e=>e.status===c.EXISTING)},j=r=>{e.push("/configuration?project=".concat(encodeURIComponent(r)))};return(0,t.jsxs)("div",{className:"container mx-auto p-4 sm:p-6 md:p-8",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-6",children:[(0,t.jsx)("h1",{className:"text-2xl font-bold",children:"项目初始化"}),r.isLoading?(0,t.jsx)(o.$,{disabled:!0,children:"检查中..."}):(0,t.jsx)(o.$,{onClick:()=>{s(e=>({...e,isInitializing:!0,isCompleted:!1,hasCompleted:!1,globalProgress:0,globalMessage:"正在连接服务器...",projects:{},completionSummary:void 0}));let e=new EventSource("/api/initialize-workspace");e.onmessage=e=>{try{let r=JSON.parse(e.data);u(r)}catch(e){console.error("解析 SSE 消息失败:",e)}},e.onerror=()=>{s(e=>e.hasCompleted?e:{...e,isInitializing:!1,globalMessage:"连接服务器失败,请重试"}),e.close()},e.addEventListener("error",()=>{e.close()})},disabled:r.isInitializing,children:r.isInitializing?"初始化中...":"创建项目空间"})]}),(r.isInitializing||r.isCompleted)&&!b()&&(0,t.jsxs)("div",{className:"mb-6 p-4 bg-gray-50 rounded-lg",children:[(0,t.jsxs)("div",{className:"flex justify-between items-center mb-2",children:[(0,t.jsx)("span",{className:"text-sm font-medium",children:r.globalMessage}),(0,t.jsxs)("span",{className:"text-sm text-gray-600",children:[r.globalProgress,"%"]})]}),(0,t.jsx)("div",{className:"w-full bg-gray-200 rounded-full h-2",children:(0,t.jsx)("div",{className:"bg-blue-600 h-2 rounded-full transition-all duration-300",style:{width:"".concat(r.globalProgress,"%")}})})]}),r.completionSummary&&!b()&&(0,t.jsxs)("div",{className:"mb-6 p-4 rounded-lg border ".concat(r.completionSummary.success?"bg-green-50 border-green-200":"bg-yellow-50 border-yellow-200"),children:[(0,t.jsx)("h3",{className:"font-semibold mb-2",children:"初始化完成"}),(0,t.jsxs)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-4 text-sm",children:[(0,t.jsxs)("div",{children:["总项目数: ",r.completionSummary.totalProjects]}),(0,t.jsxs)("div",{className:"text-green-600",children:["成功: ",r.completionSummary.successCount]}),(0,t.jsxs)("div",{className:"text-red-600",children:["失败: ",r.completionSummary.failedCount]}),(0,t.jsxs)("div",{children:["耗时: ",Math.round(r.completionSummary.duration/1e3),"s"]})]})]}),(0,t.jsx)("div",{className:"grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-4",children:Object.keys(r.projects).length>0?Object.values(r.projects).map(e=>(0,t.jsxs)("div",{className:"border rounded-lg p-4 ".concat(h(e.status)),children:[(0,t.jsxs)("div",{className:"flex justify-between items-start mb-2",children:[(0,t.jsx)("h2",{className:"font-semibold cursor-pointer hover:text-blue-600 transition-colors",onClick:()=>j(e.name),title:"点击进入项目配置",children:e.name}),(0,t.jsx)("span",{className:"text-xs px-2 py-1 rounded-full bg-white",children:f(e.status)})]}),(0,t.jsx)("p",{className:"text-sm mb-2",children:e.message}),e.status===c.CLONING||e.status===c.RETRYING?(0,t.jsxs)("div",{className:"mb-2",children:[(0,t.jsx)("div",{className:"w-full bg-white rounded-full h-1",children:(0,t.jsx)("div",{className:"bg-current h-1 rounded-full transition-all duration-300",style:{width:"".concat(e.progress,"%")}})}),(0,t.jsxs)("span",{className:"text-xs",children:[e.progress,"%"]})]}):null,e.error&&(0,t.jsx)("p",{className:"text-xs text-red-600 mb-2",children:e.error}),(0,t.jsxs)("div",{className:"space-y-2",children:[e.canRetry&&(0,t.jsx)(o.$,{size:"sm",variant:"outline",onClick:()=>m(e.name),className:"w-full",children:"重试"}),e.needsCleanup&&e.status===c.INCOMPLETE&&(0,t.jsx)(o.$,{size:"sm",variant:"destructive",onClick:()=>p(e.name),disabled:e.isCleaningUp,className:"w-full",children:e.isCleaningUp?"清理中...":"清理项目"}),(e.status===c.EXISTING||e.status===c.SUCCESS)&&(0,t.jsx)(o.$,{size:"sm",variant:"default",onClick:()=>d(e.name),disabled:e.isOpening,className:"w-full",children:e.isOpening?"打开中...":"在 Cursor 中打开"}),e.logs&&e.logs.length>0&&(0,t.jsx)(o.$,{size:"sm",variant:"outline",onClick:()=>l(r=>({...r,[e.name]:!r[e.name]})),className:"w-full",children:i[e.name]?"隐藏日志":"查看日志 (".concat(e.logs.length,")")})]}),i[e.name]&&e.logs&&e.logs.length>0&&(0,t.jsx)("div",{className:"mt-3 border-t pt-3",children:(0,t.jsx)("div",{className:"bg-black text-white rounded text-xs font-mono p-2 max-h-48 overflow-y-auto",children:e.logs.map((e,r)=>(0,t.jsxs)("div",{className:"mb-1 ".concat("stderr"===e.type?"text-red-400":"progress"===e.type?"text-yellow-400":"text-green-400"),children:[(0,t.jsx)("span",{className:"text-gray-500 mr-2",children:new Date(e.timestamp).toLocaleTimeString()}),(0,t.jsxs)("span",{className:"text-blue-400 mr-2",children:["[",e.type,"]"]}),(0,t.jsx)("span",{className:"whitespace-pre-wrap",children:e.content})]},r))})})]},e.name)):(0,t.jsx)("div",{className:"col-span-full text-center text-gray-500 py-8",children:r.isLoading?"正在检查项目状态...":r.isInitializing?"正在加载项目...":'点击"创建项目空间"开始初始化'})})]})}},7541:(e,r,s)=>{"use strict";s.d(r,{$:()=>l});var t=s(5167);s(6343);var a=s(7775),n=s(2703),o=s(6162);let i=(0,n.F)("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive",{variants:{variant:{default:"bg-primary text-primary-foreground shadow-xs hover:bg-primary/90",destructive:"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60",outline:"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50",secondary:"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2 has-[>svg]:px-3",sm:"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5",lg:"h-10 rounded-md px-6 has-[>svg]:px-4",icon:"size-9"}},defaultVariants:{variant:"default",size:"default"}});function l(e){let{className:r,variant:s,size:n,asChild:l=!1,...c}=e,g=l?a.DX:"button";return(0,t.jsx)(g,{"data-slot":"button",className:(0,o.cn)(i({variant:s,size:n,className:r})),...c})}}},e=>{var r=r=>e(e.s=r);e.O(0,[167,619,180,358],()=>r(625)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{141:()=>{},6521:e=>{e.exports={style:{fontFamily:"'Geist', 'Geist Fallback'",fontStyle:"normal"},className:"__className_5cfdac",variable:"__variable_5cfdac"}},8165:(e,a,s)=>{Promise.resolve().then(s.t.bind(s,6521,23)),Promise.resolve().then(s.t.bind(s,8947,23)),Promise.resolve().then(s.t.bind(s,141,23))},8947:e=>{e.exports={style:{fontFamily:"'Geist Mono', 'Geist Mono Fallback'",fontStyle:"normal"},className:"__className_9a8899",variable:"__variable_9a8899"}}},e=>{var a=a=>e(e.s=a);e.O(0,[316,619,180,358],()=>a(8165)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{141:()=>{},2904:(e,a,s)=>{Promise.resolve().then(s.t.bind(s,6521,23)),Promise.resolve().then(s.t.bind(s,8947,23)),Promise.resolve().then(s.t.bind(s,141,23))},6521:e=>{e.exports={style:{fontFamily:"'Geist', 'Geist Fallback'",fontStyle:"normal"},className:"__className_5cfdac",variable:"__variable_5cfdac"}},8947:e=>{e.exports={style:{fontFamily:"'Geist Mono', 'Geist Mono Fallback'",fontStyle:"normal"},className:"__className_9a8899",variable:"__variable_9a8899"}}},e=>{var a=a=>e(e.s=a);e.O(0,[316,619,180,358],()=>a(2904)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{141:()=>{},3732:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,141,23))}},e=>{var s=s=>e(e.s=s);e.O(0,[796,619,180,358],()=>s(3732)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[23,73,123,139,172,263,289,403,404,522,540,552,568,710,752,814,863,934,974,979,986,998],{9685:()=>{}},_=>{var e=e=>_(_.s=e);_.O(0,[619,180,358],()=>e(9685)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[23,123,139,403,404,522,552,568,710,752,863,934,974,979,986],{9685:()=>{}},_=>{var e=e=>_(_.s=e);_.O(0,[619,180,358],()=>e(9685)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[23,123,139,403,404,522,552,568,710,752,863,974,979,986],{9685:()=>{}},_=>{var e=e=>_(_.s=e);_.O(0,[619,180,358],()=>e(9685)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{5087:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,5593,23))}},e=>{var s=s=>e(e.s=s);e.O(0,[355,619,180,358],()=>s(5087)),_N_E=e.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[23,123,139,403,404,522,552,568,710,752,814,863,934,974,979,986],{9685:()=>{}},_=>{var e=e=>_(_.s=e);_.O(0,[619,180,358],()=>e(9685)),_N_E=_.O()}]);
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[23,73,123,139,172,403,404,522,540,552,568,710,752,814,863,934,974,979,986,998],{9685:()=>{}},_=>{var e=e=>_(_.s=e);_.O(0,[619,180,358],()=>e(9685)),_N_E=_.O()}]);
|