@celljs/cli 3.8.0 → 4.0.0

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.
Files changed (758) hide show
  1. package/README.md +442 -1
  2. package/agent/guide.md +39 -0
  3. package/bin/cell.js +2 -0
  4. package/lib/agent/agent-guide.d.ts +39 -0
  5. package/lib/agent/agent-guide.d.ts.map +1 -0
  6. package/lib/agent/agent-guide.js +67 -0
  7. package/lib/agent/agent-guide.js.map +1 -0
  8. package/lib/build/executable-compiler.d.ts +44 -0
  9. package/lib/build/executable-compiler.d.ts.map +1 -0
  10. package/lib/build/executable-compiler.js +145 -0
  11. package/lib/build/executable-compiler.js.map +1 -0
  12. package/lib/build/executable-compiler.spec.d.ts +2 -0
  13. package/lib/build/executable-compiler.spec.d.ts.map +1 -0
  14. package/lib/build/executable-compiler.spec.js +71 -0
  15. package/lib/build/executable-compiler.spec.js.map +1 -0
  16. package/lib/build/single-compile.spec.d.ts +2 -0
  17. package/lib/build/single-compile.spec.d.ts.map +1 -0
  18. package/lib/build/single-compile.spec.js +135 -0
  19. package/lib/build/single-compile.spec.js.map +1 -0
  20. package/lib/check/project-checker.d.ts +85 -0
  21. package/lib/check/project-checker.d.ts.map +1 -0
  22. package/lib/check/project-checker.js +332 -0
  23. package/lib/check/project-checker.js.map +1 -0
  24. package/lib/check/project-checker.spec.d.ts +2 -0
  25. package/lib/check/project-checker.spec.d.ts.map +1 -0
  26. package/lib/check/project-checker.spec.js +147 -0
  27. package/lib/check/project-checker.spec.js.map +1 -0
  28. package/lib/cli/agent-command.d.ts +15 -0
  29. package/lib/cli/agent-command.d.ts.map +1 -0
  30. package/lib/cli/agent-command.js +42 -0
  31. package/lib/cli/agent-command.js.map +1 -0
  32. package/lib/cli/build-command.d.ts +84 -0
  33. package/lib/cli/build-command.d.ts.map +1 -0
  34. package/lib/cli/build-command.js +170 -0
  35. package/lib/cli/build-command.js.map +1 -0
  36. package/lib/cli/cell-cli.d.ts +35 -0
  37. package/lib/cli/cell-cli.d.ts.map +1 -0
  38. package/lib/cli/cell-cli.js +159 -0
  39. package/lib/cli/cell-cli.js.map +1 -0
  40. package/lib/cli/cell-cli.spec.d.ts +2 -0
  41. package/lib/cli/cell-cli.spec.d.ts.map +1 -0
  42. package/lib/cli/cell-cli.spec.js +195 -0
  43. package/lib/cli/cell-cli.spec.js.map +1 -0
  44. package/lib/cli/check-command.d.ts +31 -0
  45. package/lib/cli/check-command.d.ts.map +1 -0
  46. package/lib/cli/check-command.js +67 -0
  47. package/lib/cli/check-command.js.map +1 -0
  48. package/lib/cli/command.d.ts +24 -0
  49. package/lib/cli/command.d.ts.map +1 -0
  50. package/lib/cli/command.js +10 -0
  51. package/lib/cli/command.js.map +1 -0
  52. package/lib/cli/config-command.d.ts +29 -0
  53. package/lib/cli/config-command.d.ts.map +1 -0
  54. package/lib/cli/config-command.js +71 -0
  55. package/lib/cli/config-command.js.map +1 -0
  56. package/lib/cli/config-command.spec.d.ts +2 -0
  57. package/lib/cli/config-command.spec.d.ts.map +1 -0
  58. package/lib/cli/config-command.spec.js +79 -0
  59. package/lib/cli/config-command.spec.js.map +1 -0
  60. package/lib/cli/deploy-command.d.ts +41 -0
  61. package/lib/cli/deploy-command.d.ts.map +1 -0
  62. package/lib/cli/deploy-command.js +114 -0
  63. package/lib/cli/deploy-command.js.map +1 -0
  64. package/lib/cli/dev-command.d.ts +47 -0
  65. package/lib/cli/dev-command.d.ts.map +1 -0
  66. package/lib/cli/dev-command.js +219 -0
  67. package/lib/cli/dev-command.js.map +1 -0
  68. package/lib/cli/dev-command.spec.d.ts +2 -0
  69. package/lib/cli/dev-command.spec.d.ts.map +1 -0
  70. package/lib/cli/dev-command.spec.js +149 -0
  71. package/lib/cli/dev-command.spec.js.map +1 -0
  72. package/lib/cli/docs-command.d.ts +19 -0
  73. package/lib/cli/docs-command.d.ts.map +1 -0
  74. package/lib/cli/docs-command.js +47 -0
  75. package/lib/cli/docs-command.js.map +1 -0
  76. package/lib/cli/info-command.d.ts +44 -0
  77. package/lib/cli/info-command.d.ts.map +1 -0
  78. package/lib/cli/info-command.js +39 -0
  79. package/lib/cli/info-command.js.map +1 -0
  80. package/lib/cli/info-command.spec.d.ts +2 -0
  81. package/lib/cli/info-command.spec.d.ts.map +1 -0
  82. package/lib/cli/info-command.spec.js +236 -0
  83. package/lib/cli/info-command.spec.js.map +1 -0
  84. package/lib/cli/init-command.d.ts +20 -0
  85. package/lib/cli/init-command.d.ts.map +1 -0
  86. package/lib/cli/init-command.js +43 -0
  87. package/lib/cli/init-command.js.map +1 -0
  88. package/lib/cli/main.d.ts +2 -0
  89. package/lib/cli/main.d.ts.map +1 -0
  90. package/lib/cli/main.js +3 -0
  91. package/lib/cli/main.js.map +1 -0
  92. package/lib/cli/mcp-command.d.ts +34 -0
  93. package/lib/cli/mcp-command.d.ts.map +1 -0
  94. package/lib/cli/mcp-command.js +85 -0
  95. package/lib/cli/mcp-command.js.map +1 -0
  96. package/lib/cli/mcp-command.spec.d.ts +2 -0
  97. package/lib/cli/mcp-command.spec.d.ts.map +1 -0
  98. package/lib/cli/mcp-command.spec.js +132 -0
  99. package/lib/cli/mcp-command.spec.js.map +1 -0
  100. package/lib/cli/preview-command.d.ts +24 -0
  101. package/lib/cli/preview-command.d.ts.map +1 -0
  102. package/lib/cli/preview-command.js +91 -0
  103. package/lib/cli/preview-command.js.map +1 -0
  104. package/lib/cli/reporter.d.ts +26 -0
  105. package/lib/cli/reporter.d.ts.map +1 -0
  106. package/lib/cli/reporter.js +58 -0
  107. package/lib/cli/reporter.js.map +1 -0
  108. package/lib/config/config-build.spec.d.ts +2 -0
  109. package/lib/config/config-build.spec.d.ts.map +1 -0
  110. package/lib/config/config-build.spec.js +111 -0
  111. package/lib/config/config-build.spec.js.map +1 -0
  112. package/lib/config/config-explainer.d.ts +48 -0
  113. package/lib/config/config-explainer.d.ts.map +1 -0
  114. package/lib/config/config-explainer.js +130 -0
  115. package/lib/config/config-explainer.js.map +1 -0
  116. package/lib/config/config-file-loader.d.ts +22 -0
  117. package/lib/config/config-file-loader.d.ts.map +1 -0
  118. package/lib/config/config-file-loader.js +63 -0
  119. package/lib/config/config-file-loader.js.map +1 -0
  120. package/lib/config/config-resolver.d.ts +111 -0
  121. package/lib/config/config-resolver.d.ts.map +1 -0
  122. package/lib/config/config-resolver.js +215 -0
  123. package/lib/config/config-resolver.js.map +1 -0
  124. package/lib/config/config-resolver.spec.d.ts +2 -0
  125. package/lib/config/config-resolver.spec.d.ts.map +1 -0
  126. package/lib/config/config-resolver.spec.js +159 -0
  127. package/lib/config/config-resolver.spec.js.map +1 -0
  128. package/lib/config/config-validator.d.ts +35 -0
  129. package/lib/config/config-validator.d.ts.map +1 -0
  130. package/lib/config/config-validator.js +160 -0
  131. package/lib/config/config-validator.js.map +1 -0
  132. package/lib/config/config-validator.spec.d.ts +2 -0
  133. package/lib/config/config-validator.spec.d.ts.map +1 -0
  134. package/lib/config/config-validator.spec.js +77 -0
  135. package/lib/config/config-validator.spec.js.map +1 -0
  136. package/lib/config/define-config.d.ts +4 -0
  137. package/lib/config/define-config.d.ts.map +1 -0
  138. package/lib/config/define-config.js +5 -0
  139. package/lib/config/define-config.js.map +1 -0
  140. package/lib/config/types.d.ts +53 -0
  141. package/lib/config/types.d.ts.map +1 -0
  142. package/lib/config/types.js +2 -0
  143. package/lib/config/types.js.map +1 -0
  144. package/lib/deploy/cloud-api.d.ts +58 -0
  145. package/lib/deploy/cloud-api.d.ts.map +1 -0
  146. package/lib/deploy/cloud-api.js +189 -0
  147. package/lib/deploy/cloud-api.js.map +1 -0
  148. package/lib/deploy/code-package.d.ts +15 -0
  149. package/lib/deploy/code-package.d.ts.map +1 -0
  150. package/lib/deploy/code-package.js +40 -0
  151. package/lib/deploy/code-package.js.map +1 -0
  152. package/lib/deploy/deploy-utils.spec.d.ts +2 -0
  153. package/lib/deploy/deploy-utils.spec.d.ts.map +1 -0
  154. package/lib/deploy/deploy-utils.spec.js +56 -0
  155. package/lib/deploy/deploy-utils.spec.js.map +1 -0
  156. package/lib/deploy/deployer-registry.d.ts +11 -0
  157. package/lib/deploy/deployer-registry.d.ts.map +1 -0
  158. package/lib/deploy/deployer-registry.js +40 -0
  159. package/lib/deploy/deployer-registry.js.map +1 -0
  160. package/lib/deploy/request-signer.d.ts +51 -0
  161. package/lib/deploy/request-signer.d.ts.map +1 -0
  162. package/lib/deploy/request-signer.js +109 -0
  163. package/lib/deploy/request-signer.js.map +1 -0
  164. package/lib/deploy/zip-writer.d.ts +32 -0
  165. package/lib/deploy/zip-writer.d.ts.map +1 -0
  166. package/lib/deploy/zip-writer.js +114 -0
  167. package/lib/deploy/zip-writer.js.map +1 -0
  168. package/lib/docs/docs-index.d.ts +54 -0
  169. package/lib/docs/docs-index.d.ts.map +1 -0
  170. package/lib/docs/docs-index.js +140 -0
  171. package/lib/docs/docs-index.js.map +1 -0
  172. package/lib/docs/docs-index.spec.d.ts +2 -0
  173. package/lib/docs/docs-index.spec.d.ts.map +1 -0
  174. package/lib/docs/docs-index.spec.js +52 -0
  175. package/lib/docs/docs-index.spec.js.map +1 -0
  176. package/lib/events/event-bus.d.ts +30 -0
  177. package/lib/events/event-bus.d.ts.map +1 -0
  178. package/lib/events/event-bus.js +81 -0
  179. package/lib/events/event-bus.js.map +1 -0
  180. package/lib/events/event-bus.spec.d.ts +2 -0
  181. package/lib/events/event-bus.spec.d.ts.map +1 -0
  182. package/lib/events/event-bus.spec.js +69 -0
  183. package/lib/events/event-bus.spec.js.map +1 -0
  184. package/lib/events/hook-runner.d.ts +27 -0
  185. package/lib/events/hook-runner.d.ts.map +1 -0
  186. package/lib/events/hook-runner.js +65 -0
  187. package/lib/events/hook-runner.js.map +1 -0
  188. package/lib/events/hook-runner.spec.d.ts +2 -0
  189. package/lib/events/hook-runner.spec.d.ts.map +1 -0
  190. package/lib/events/hook-runner.spec.js +36 -0
  191. package/lib/events/hook-runner.spec.js.map +1 -0
  192. package/lib/index.d.ts +57 -1
  193. package/lib/index.d.ts.map +1 -1
  194. package/lib/index.js +57 -2
  195. package/lib/index.js.map +1 -1
  196. package/lib/info/project-inspector.d.ts +143 -0
  197. package/lib/info/project-inspector.d.ts.map +1 -0
  198. package/lib/info/project-inspector.js +244 -0
  199. package/lib/info/project-inspector.js.map +1 -0
  200. package/lib/init/project-initializer.d.ts +44 -0
  201. package/lib/init/project-initializer.d.ts.map +1 -0
  202. package/lib/init/project-initializer.js +90 -0
  203. package/lib/init/project-initializer.js.map +1 -0
  204. package/lib/init/project-initializer.spec.d.ts +2 -0
  205. package/lib/init/project-initializer.spec.d.ts.map +1 -0
  206. package/lib/init/project-initializer.spec.js +88 -0
  207. package/lib/init/project-initializer.spec.js.map +1 -0
  208. package/lib/mcp/dev-activity.d.ts +34 -0
  209. package/lib/mcp/dev-activity.d.ts.map +1 -0
  210. package/lib/mcp/dev-activity.js +46 -0
  211. package/lib/mcp/dev-activity.js.map +1 -0
  212. package/lib/mcp/dev-mcp-endpoint.d.ts +62 -0
  213. package/lib/mcp/dev-mcp-endpoint.d.ts.map +1 -0
  214. package/lib/mcp/dev-mcp-endpoint.js +280 -0
  215. package/lib/mcp/dev-mcp-endpoint.js.map +1 -0
  216. package/lib/mcp/dev-mcp-endpoint.spec.d.ts +2 -0
  217. package/lib/mcp/dev-mcp-endpoint.spec.d.ts.map +1 -0
  218. package/lib/mcp/dev-mcp-endpoint.spec.js +143 -0
  219. package/lib/mcp/dev-mcp-endpoint.spec.js.map +1 -0
  220. package/lib/mcp/mcp-server.d.ts +64 -0
  221. package/lib/mcp/mcp-server.d.ts.map +1 -0
  222. package/lib/mcp/mcp-server.js +201 -0
  223. package/lib/mcp/mcp-server.js.map +1 -0
  224. package/lib/mcp/mcp-server.spec.d.ts +2 -0
  225. package/lib/mcp/mcp-server.spec.d.ts.map +1 -0
  226. package/lib/mcp/mcp-server.spec.js +136 -0
  227. package/lib/mcp/mcp-server.spec.js.map +1 -0
  228. package/lib/mcp/project-mcp-tools.d.ts +35 -0
  229. package/lib/mcp/project-mcp-tools.d.ts.map +1 -0
  230. package/lib/mcp/project-mcp-tools.js +199 -0
  231. package/lib/mcp/project-mcp-tools.js.map +1 -0
  232. package/lib/modules/module-host.d.ts +118 -0
  233. package/lib/modules/module-host.d.ts.map +1 -0
  234. package/lib/modules/module-host.js +405 -0
  235. package/lib/modules/module-host.js.map +1 -0
  236. package/lib/modules/module-host.spec.d.ts +2 -0
  237. package/lib/modules/module-host.spec.d.ts.map +1 -0
  238. package/lib/modules/module-host.spec.js +220 -0
  239. package/lib/modules/module-host.spec.js.map +1 -0
  240. package/lib/preset/builtin-presets.d.ts +9 -0
  241. package/lib/preset/builtin-presets.d.ts.map +1 -0
  242. package/lib/preset/builtin-presets.js +24 -0
  243. package/lib/preset/builtin-presets.js.map +1 -0
  244. package/lib/preset/cloudflare/cloudflare-deployer.d.ts +26 -0
  245. package/lib/preset/cloudflare/cloudflare-deployer.d.ts.map +1 -0
  246. package/lib/preset/cloudflare/cloudflare-deployer.js +116 -0
  247. package/lib/preset/cloudflare/cloudflare-deployer.js.map +1 -0
  248. package/lib/preset/cloudflare/cloudflare-preset.d.ts +16 -0
  249. package/lib/preset/cloudflare/cloudflare-preset.d.ts.map +1 -0
  250. package/lib/preset/cloudflare/cloudflare-preset.js +97 -0
  251. package/lib/preset/cloudflare/cloudflare-preset.js.map +1 -0
  252. package/lib/preset/cloudflare/cloudflare.spec.d.ts +2 -0
  253. package/lib/preset/cloudflare/cloudflare.spec.d.ts.map +1 -0
  254. package/lib/preset/cloudflare/cloudflare.spec.js +212 -0
  255. package/lib/preset/cloudflare/cloudflare.spec.js.map +1 -0
  256. package/lib/preset/cloudflare/wrangler-config.d.ts +50 -0
  257. package/lib/preset/cloudflare/wrangler-config.d.ts.map +1 -0
  258. package/lib/preset/cloudflare/wrangler-config.js +160 -0
  259. package/lib/preset/cloudflare/wrangler-config.js.map +1 -0
  260. package/lib/preset/cloudflare/wrangler-config.spec.d.ts +2 -0
  261. package/lib/preset/cloudflare/wrangler-config.spec.d.ts.map +1 -0
  262. package/lib/preset/cloudflare/wrangler-config.spec.js +112 -0
  263. package/lib/preset/cloudflare/wrangler-config.spec.js.map +1 -0
  264. package/lib/preset/cloudflare/wrangler.d.ts +38 -0
  265. package/lib/preset/cloudflare/wrangler.d.ts.map +1 -0
  266. package/lib/preset/cloudflare/wrangler.js +90 -0
  267. package/lib/preset/cloudflare/wrangler.js.map +1 -0
  268. package/lib/preset/cloudflare/wrangler.spec.d.ts +2 -0
  269. package/lib/preset/cloudflare/wrangler.spec.d.ts.map +1 -0
  270. package/lib/preset/cloudflare/wrangler.spec.js +64 -0
  271. package/lib/preset/cloudflare/wrangler.spec.js.map +1 -0
  272. package/lib/preset/fc/fc-deployer.d.ts +50 -0
  273. package/lib/preset/fc/fc-deployer.d.ts.map +1 -0
  274. package/lib/preset/fc/fc-deployer.js +209 -0
  275. package/lib/preset/fc/fc-deployer.js.map +1 -0
  276. package/lib/preset/fc/fc-preset.d.ts +20 -0
  277. package/lib/preset/fc/fc-preset.d.ts.map +1 -0
  278. package/lib/preset/fc/fc-preset.js +46 -0
  279. package/lib/preset/fc/fc-preset.js.map +1 -0
  280. package/lib/preset/lambda/lambda-deployer.d.ts +50 -0
  281. package/lib/preset/lambda/lambda-deployer.d.ts.map +1 -0
  282. package/lib/preset/lambda/lambda-deployer.js +274 -0
  283. package/lib/preset/lambda/lambda-deployer.js.map +1 -0
  284. package/lib/preset/lambda/lambda-preset.d.ts +14 -0
  285. package/lib/preset/lambda/lambda-preset.d.ts.map +1 -0
  286. package/lib/preset/lambda/lambda-preset.js +44 -0
  287. package/lib/preset/lambda/lambda-preset.js.map +1 -0
  288. package/lib/preset/preset-output.d.ts +19 -0
  289. package/lib/preset/preset-output.d.ts.map +1 -0
  290. package/lib/preset/preset-output.js +45 -0
  291. package/lib/preset/preset-output.js.map +1 -0
  292. package/lib/preset/preset-registry.d.ts +16 -0
  293. package/lib/preset/preset-registry.d.ts.map +1 -0
  294. package/lib/preset/preset-registry.js +58 -0
  295. package/lib/preset/preset-registry.js.map +1 -0
  296. package/lib/preset/preset-registry.spec.d.ts +2 -0
  297. package/lib/preset/preset-registry.spec.d.ts.map +1 -0
  298. package/lib/preset/preset-registry.spec.js +28 -0
  299. package/lib/preset/preset-registry.spec.js.map +1 -0
  300. package/lib/preset/scf/scf-deployer.d.ts +54 -0
  301. package/lib/preset/scf/scf-deployer.d.ts.map +1 -0
  302. package/lib/preset/scf/scf-deployer.js +202 -0
  303. package/lib/preset/scf/scf-deployer.js.map +1 -0
  304. package/lib/preset/scf/scf-preset.d.ts +19 -0
  305. package/lib/preset/scf/scf-preset.d.ts.map +1 -0
  306. package/lib/preset/scf/scf-preset.js +43 -0
  307. package/lib/preset/scf/scf-preset.js.map +1 -0
  308. package/lib/preset/serverless-deployers.spec.d.ts +2 -0
  309. package/lib/preset/serverless-deployers.spec.d.ts.map +1 -0
  310. package/lib/preset/serverless-deployers.spec.js +307 -0
  311. package/lib/preset/serverless-deployers.spec.js.map +1 -0
  312. package/lib/preset/serverless-presets.spec.d.ts +2 -0
  313. package/lib/preset/serverless-presets.spec.d.ts.map +1 -0
  314. package/lib/preset/serverless-presets.spec.js +280 -0
  315. package/lib/preset/serverless-presets.spec.js.map +1 -0
  316. package/lib/preset/serverless-scripts.d.ts +29 -0
  317. package/lib/preset/serverless-scripts.d.ts.map +1 -0
  318. package/lib/preset/serverless-scripts.js +120 -0
  319. package/lib/preset/serverless-scripts.js.map +1 -0
  320. package/lib/preset/vercel/vercel-deployer.d.ts +38 -0
  321. package/lib/preset/vercel/vercel-deployer.d.ts.map +1 -0
  322. package/lib/preset/vercel/vercel-deployer.js +160 -0
  323. package/lib/preset/vercel/vercel-deployer.js.map +1 -0
  324. package/lib/preset/vercel/vercel-preset.d.ts +19 -0
  325. package/lib/preset/vercel/vercel-preset.d.ts.map +1 -0
  326. package/lib/preset/vercel/vercel-preset.js +102 -0
  327. package/lib/preset/vercel/vercel-preset.js.map +1 -0
  328. package/lib/test/fixture-project.d.ts +17 -0
  329. package/lib/test/fixture-project.d.ts.map +1 -0
  330. package/lib/test/fixture-project.js +43 -0
  331. package/lib/test/fixture-project.js.map +1 -0
  332. package/lib/testing/create-test-app.d.ts +27 -0
  333. package/lib/testing/create-test-app.d.ts.map +1 -0
  334. package/lib/testing/create-test-app.js +54 -0
  335. package/lib/testing/create-test-app.js.map +1 -0
  336. package/lib/testing/create-test-app.spec.d.ts +2 -0
  337. package/lib/testing/create-test-app.spec.d.ts.map +1 -0
  338. package/lib/testing/create-test-app.spec.js +66 -0
  339. package/lib/testing/create-test-app.spec.js.map +1 -0
  340. package/lib/toolchain/toolchain.d.ts +49 -0
  341. package/lib/toolchain/toolchain.d.ts.map +1 -0
  342. package/lib/toolchain/toolchain.js +100 -0
  343. package/lib/toolchain/toolchain.js.map +1 -0
  344. package/lib/utils/json-util.d.ts +11 -0
  345. package/lib/utils/json-util.d.ts.map +1 -0
  346. package/lib/utils/json-util.js +73 -0
  347. package/lib/utils/json-util.js.map +1 -0
  348. package/lib/utils/json-util.spec.d.ts +2 -0
  349. package/lib/utils/json-util.spec.d.ts.map +1 -0
  350. package/lib/utils/json-util.spec.js +18 -0
  351. package/lib/utils/json-util.spec.js.map +1 -0
  352. package/lib/utils/text-util.d.ts +19 -0
  353. package/lib/utils/text-util.d.ts.map +1 -0
  354. package/lib/utils/text-util.js +66 -0
  355. package/lib/utils/text-util.js.map +1 -0
  356. package/lib/utils/text-util.spec.d.ts +2 -0
  357. package/lib/utils/text-util.spec.d.ts.map +1 -0
  358. package/lib/utils/text-util.spec.js +22 -0
  359. package/lib/utils/text-util.spec.js.map +1 -0
  360. package/package.json +28 -30
  361. package/src/agent/agent-guide.ts +90 -0
  362. package/src/build/executable-compiler.ts +179 -0
  363. package/src/check/project-checker.ts +365 -0
  364. package/src/cli/agent-command.ts +46 -0
  365. package/src/cli/build-command.ts +189 -0
  366. package/src/cli/cell-cli.ts +174 -0
  367. package/src/cli/check-command.ts +74 -0
  368. package/src/cli/command.ts +29 -0
  369. package/src/cli/config-command.ts +73 -0
  370. package/src/cli/deploy-command.ts +122 -0
  371. package/src/cli/dev-command.ts +232 -0
  372. package/src/cli/docs-command.ts +53 -0
  373. package/src/cli/info-command.ts +40 -0
  374. package/src/cli/init-command.ts +53 -0
  375. package/src/cli/main.ts +3 -0
  376. package/src/cli/mcp-command.ts +98 -0
  377. package/src/cli/preview-command.ts +98 -0
  378. package/src/cli/reporter.ts +67 -0
  379. package/src/config/config-explainer.ts +158 -0
  380. package/src/config/config-file-loader.ts +76 -0
  381. package/src/config/config-resolver.ts +300 -0
  382. package/src/config/config-validator.ts +208 -0
  383. package/src/config/define-config.ts +6 -0
  384. package/src/config/types.ts +57 -0
  385. package/src/deploy/cloud-api.ts +194 -0
  386. package/src/deploy/code-package.ts +44 -0
  387. package/src/deploy/deployer-registry.ts +44 -0
  388. package/src/deploy/request-signer.ts +155 -0
  389. package/src/deploy/zip-writer.ts +132 -0
  390. package/src/docs/docs-index.ts +174 -0
  391. package/src/events/event-bus.ts +94 -0
  392. package/src/events/hook-runner.ts +78 -0
  393. package/src/index.ts +57 -0
  394. package/src/info/project-inspector.ts +352 -0
  395. package/src/init/project-initializer.ts +111 -0
  396. package/src/mcp/dev-activity.ts +71 -0
  397. package/src/mcp/dev-mcp-endpoint.ts +323 -0
  398. package/src/mcp/mcp-server.ts +251 -0
  399. package/src/mcp/project-mcp-tools.ts +216 -0
  400. package/src/modules/module-host.ts +489 -0
  401. package/src/preset/builtin-presets.ts +26 -0
  402. package/src/preset/cloudflare/cloudflare-deployer.ts +126 -0
  403. package/src/preset/cloudflare/cloudflare-preset.ts +97 -0
  404. package/src/preset/cloudflare/wrangler-config.ts +173 -0
  405. package/src/preset/cloudflare/wrangler.ts +113 -0
  406. package/src/preset/fc/fc-deployer.ts +237 -0
  407. package/src/preset/fc/fc-preset.ts +51 -0
  408. package/src/preset/lambda/lambda-deployer.ts +317 -0
  409. package/src/preset/lambda/lambda-preset.ts +45 -0
  410. package/src/preset/preset-output.ts +55 -0
  411. package/src/preset/preset-registry.ts +65 -0
  412. package/src/preset/scf/scf-deployer.ts +232 -0
  413. package/src/preset/scf/scf-preset.ts +45 -0
  414. package/src/preset/serverless-scripts.ts +132 -0
  415. package/src/preset/vercel/vercel-deployer.ts +168 -0
  416. package/src/preset/vercel/vercel-preset.ts +111 -0
  417. package/src/test/fixture-project.ts +50 -0
  418. package/src/testing/create-test-app.ts +73 -0
  419. package/src/toolchain/toolchain.ts +121 -0
  420. package/src/utils/json-util.ts +67 -0
  421. package/src/utils/text-util.ts +68 -0
  422. package/templates/backend/README.md +13 -0
  423. package/templates/backend/_gitignore +5 -0
  424. package/templates/backend/cell.yml +3 -0
  425. package/templates/backend/package.json +23 -0
  426. package/templates/{file-service/src → backend/src/node}/home-controller.ts +5 -2
  427. package/templates/{file-service/src → backend/src/node}/module.ts +0 -1
  428. package/templates/backend/template.json +3 -0
  429. package/templates/backend/test/app.spec.ts +19 -0
  430. package/templates/backend/tsconfig.json +25 -0
  431. package/templates/fullstack/README.md +13 -0
  432. package/templates/fullstack/_gitignore +5 -0
  433. package/templates/fullstack/cell.yml +6 -0
  434. package/templates/fullstack/package.json +27 -0
  435. package/templates/fullstack/src/browser/home.view.tsx +19 -0
  436. package/templates/{cell-component/src → fullstack/src/browser}/module.ts +1 -1
  437. package/templates/fullstack/src/common/greeting-protocol.ts +5 -0
  438. package/templates/fullstack/src/node/greeting-server.ts +13 -0
  439. package/templates/{admin-app/src/browser → fullstack/src/node}/module.ts +2 -1
  440. package/templates/fullstack/template.json +3 -0
  441. package/templates/fullstack/test/app.spec.ts +18 -0
  442. package/templates/fullstack/tsconfig.json +27 -0
  443. package/bin/cell +0 -2
  444. package/lib/build/build-manager.d.ts +0 -9
  445. package/lib/build/build-manager.d.ts.map +0 -1
  446. package/lib/build/build-manager.js +0 -41
  447. package/lib/build/build-manager.js.map +0 -1
  448. package/lib/build/build.d.ts +0 -6
  449. package/lib/build/build.d.ts.map +0 -1
  450. package/lib/build/build.js +0 -16
  451. package/lib/build/build.js.map +0 -1
  452. package/lib/cell-main.d.ts +0 -2
  453. package/lib/cell-main.d.ts.map +0 -1
  454. package/lib/cell-main.js +0 -110
  455. package/lib/cell-main.js.map +0 -1
  456. package/lib/cell.d.ts +0 -2
  457. package/lib/cell.d.ts.map +0 -1
  458. package/lib/cell.js +0 -194
  459. package/lib/cell.js.map +0 -1
  460. package/lib/config/config.d.ts +0 -12
  461. package/lib/config/config.d.ts.map +0 -1
  462. package/lib/config/config.js +0 -48
  463. package/lib/config/config.js.map +0 -1
  464. package/lib/deploy/deploy.d.ts +0 -7
  465. package/lib/deploy/deploy.d.ts.map +0 -1
  466. package/lib/deploy/deploy.js +0 -30
  467. package/lib/deploy/deploy.js.map +0 -1
  468. package/lib/info/info.d.ts +0 -6
  469. package/lib/info/info.d.ts.map +0 -1
  470. package/lib/info/info.js +0 -21
  471. package/lib/info/info.js.map +0 -1
  472. package/lib/init/init-manager.d.ts +0 -33
  473. package/lib/init/init-manager.d.ts.map +0 -1
  474. package/lib/init/init-manager.js +0 -141
  475. package/lib/init/init-manager.js.map +0 -1
  476. package/lib/init/init.d.ts +0 -4
  477. package/lib/init/init.d.ts.map +0 -1
  478. package/lib/init/init.js +0 -17
  479. package/lib/init/init.js.map +0 -1
  480. package/lib/init/templates.d.ts +0 -2
  481. package/lib/init/templates.d.ts.map +0 -1
  482. package/lib/init/templates.js +0 -23
  483. package/lib/init/templates.js.map +0 -1
  484. package/lib/package.spec.d.ts +0 -2
  485. package/lib/package.spec.d.ts.map +0 -1
  486. package/lib/package.spec.js +0 -7
  487. package/lib/package.spec.js.map +0 -1
  488. package/lib/props/props.d.ts +0 -9
  489. package/lib/props/props.d.ts.map +0 -1
  490. package/lib/props/props.js +0 -49
  491. package/lib/props/props.js.map +0 -1
  492. package/lib/serve/serve-manager.d.ts +0 -8
  493. package/lib/serve/serve-manager.d.ts.map +0 -1
  494. package/lib/serve/serve-manager.js +0 -44
  495. package/lib/serve/serve-manager.js.map +0 -1
  496. package/lib/serve/serve.d.ts +0 -8
  497. package/lib/serve/serve.d.ts.map +0 -1
  498. package/lib/serve/serve.js +0 -25
  499. package/lib/serve/serve.js.map +0 -1
  500. package/lib/update/update.d.ts +0 -9
  501. package/lib/update/update.d.ts.map +0 -1
  502. package/lib/update/update.js +0 -56
  503. package/lib/update/update.js.map +0 -1
  504. package/lib/utils/banner-util.d.ts +0 -6
  505. package/lib/utils/banner-util.d.ts.map +0 -1
  506. package/lib/utils/banner-util.js +0 -44
  507. package/lib/utils/banner-util.js.map +0 -1
  508. package/lib/utils/index.d.ts +0 -2
  509. package/lib/utils/index.d.ts.map +0 -1
  510. package/lib/utils/index.js +0 -18
  511. package/lib/utils/index.js.map +0 -1
  512. package/src/build/build-manager.ts +0 -50
  513. package/src/build/build.ts +0 -17
  514. package/src/cell-main.ts +0 -125
  515. package/src/cell.ts +0 -215
  516. package/src/config/config.ts +0 -56
  517. package/src/deploy/deploy.ts +0 -31
  518. package/src/info/info.ts +0 -23
  519. package/src/init/init-manager.ts +0 -163
  520. package/src/init/init.ts +0 -15
  521. package/src/init/templates.ts +0 -19
  522. package/src/package.spec.ts +0 -5
  523. package/src/props/props.ts +0 -48
  524. package/src/serve/serve-manager.ts +0 -51
  525. package/src/serve/serve.ts +0 -29
  526. package/src/update/update.ts +0 -61
  527. package/src/utils/banner-util.ts +0 -41
  528. package/src/utils/index.ts +0 -1
  529. package/templates/accounts/README.md +0 -92
  530. package/templates/accounts/cell-database.yml +0 -17
  531. package/templates/accounts/cell-locale.yml +0 -17
  532. package/templates/accounts/cell-oauth2.0.yml +0 -8
  533. package/templates/accounts/cell-theme.yml +0 -9
  534. package/templates/accounts/cell.yml +0 -10
  535. package/templates/accounts/favicon.ico +0 -0
  536. package/templates/accounts/package.json +0 -48
  537. package/templates/accounts/src/browser/home.view.tsx +0 -86
  538. package/templates/accounts/src/browser/index.ts +0 -3
  539. package/templates/accounts/src/browser/login.view.tsx +0 -78
  540. package/templates/accounts/src/browser/module.ts +0 -3
  541. package/templates/accounts/src/common/entity-protocol.ts +0 -7
  542. package/templates/accounts/src/common/index.ts +0 -1
  543. package/templates/accounts/src/node/authentication/authentication-success-handler.ts +0 -69
  544. package/templates/accounts/src/node/authentication/index.ts +0 -1
  545. package/templates/accounts/src/node/entity/base-entity.ts +0 -13
  546. package/templates/accounts/src/node/entity/connection.ts +0 -52
  547. package/templates/accounts/src/node/entity/index.ts +0 -1
  548. package/templates/accounts/src/node/entity/user.ts +0 -73
  549. package/templates/accounts/src/node/error/error.ts +0 -14
  550. package/templates/accounts/src/node/error/index.ts +0 -1
  551. package/templates/accounts/src/node/index.ts +0 -2
  552. package/templates/accounts/src/node/module.ts +0 -9
  553. package/templates/accounts/src/node/user/index.ts +0 -4
  554. package/templates/accounts/src/node/user/user-protocol.ts +0 -19
  555. package/templates/accounts/src/node/user/user-repository.ts +0 -72
  556. package/templates/accounts/src/node/user/user-service.ts +0 -36
  557. package/templates/accounts/tsconfig.json +0 -32
  558. package/templates/admin-app/.github/workflows/deploy.yml +0 -25
  559. package/templates/admin-app/.vscode/launch.json +0 -23
  560. package/templates/admin-app/README.md +0 -92
  561. package/templates/admin-app/cell-database.yml +0 -7
  562. package/templates/admin-app/cell.yml +0 -93
  563. package/templates/admin-app/package.json +0 -37
  564. package/templates/admin-app/src/browser/user.view.tsx +0 -40
  565. package/templates/admin-app/src/common/index.ts +0 -1
  566. package/templates/admin-app/src/common/user-protocol.ts +0 -23
  567. package/templates/admin-app/src/node/entity/index.ts +0 -1
  568. package/templates/admin-app/src/node/entity/user.ts +0 -15
  569. package/templates/admin-app/src/node/module.ts +0 -8
  570. package/templates/admin-app/src/node/user-service.ts +0 -41
  571. package/templates/admin-app/tsconfig.json +0 -32
  572. package/templates/backend-app/.github/workflows/deploy.yml +0 -25
  573. package/templates/backend-app/.vscode/launch.json +0 -23
  574. package/templates/backend-app/README.md +0 -92
  575. package/templates/backend-app/cell.yml +0 -0
  576. package/templates/backend-app/package.json +0 -33
  577. package/templates/backend-app/src/home-controller.ts +0 -11
  578. package/templates/backend-app/src/module.ts +0 -4
  579. package/templates/backend-app/src/user-controller.ts +0 -48
  580. package/templates/backend-app/test/home-controller.spec.ts +0 -19
  581. package/templates/backend-app/tsconfig.json +0 -32
  582. package/templates/cell-component/README.md +0 -27
  583. package/templates/cell-component/cell.yml +0 -0
  584. package/templates/cell-component/package.json +0 -29
  585. package/templates/cell-component/src/echo-service.ts +0 -16
  586. package/templates/cell-component/src/index.ts +0 -1
  587. package/templates/cell-component/src/package.spec.ts +0 -5
  588. package/templates/cell-component/tsconfig.json +0 -37
  589. package/templates/database-app/.github/workflows/deploy.yml +0 -25
  590. package/templates/database-app/.vscode/launch.json +0 -23
  591. package/templates/database-app/README.md +0 -92
  592. package/templates/database-app/cell.yml +0 -17
  593. package/templates/database-app/package.json +0 -31
  594. package/templates/database-app/src/entity/index.ts +0 -1
  595. package/templates/database-app/src/entity/user.ts +0 -13
  596. package/templates/database-app/src/home-controller.ts +0 -11
  597. package/templates/database-app/src/module.ts +0 -8
  598. package/templates/database-app/src/user-controller.ts +0 -43
  599. package/templates/database-app/tsconfig.json +0 -32
  600. package/templates/docker-app/.github/workflows/deploy.yml +0 -25
  601. package/templates/docker-app/.vscode/launch.json +0 -23
  602. package/templates/docker-app/Dockerfile +0 -27
  603. package/templates/docker-app/README.md +0 -93
  604. package/templates/docker-app/cell.yml +0 -0
  605. package/templates/docker-app/package.json +0 -31
  606. package/templates/docker-app/src/browser/assets/logo.png +0 -0
  607. package/templates/docker-app/src/browser/css-shims.d.ts +0 -30
  608. package/templates/docker-app/src/browser/hello.view.tsx +0 -31
  609. package/templates/docker-app/src/browser/module.ts +0 -3
  610. package/templates/docker-app/src/browser/style/hello.module.scss +0 -4
  611. package/templates/docker-app/src/common/welcome-protocol.ts +0 -5
  612. package/templates/docker-app/src/node/module.ts +0 -3
  613. package/templates/docker-app/src/node/welcome-server.ts +0 -9
  614. package/templates/docker-app/tsconfig.json +0 -33
  615. package/templates/file-service/.github/workflows/deploy.yml +0 -25
  616. package/templates/file-service/.vscode/launch.json +0 -23
  617. package/templates/file-service/README.md +0 -92
  618. package/templates/file-service/cell.yml +0 -12
  619. package/templates/file-service/package.json +0 -34
  620. package/templates/file-service/src/file-controller.ts +0 -47
  621. package/templates/file-service/tsconfig.json +0 -32
  622. package/templates/jwt-app/.github/workflows/deploy.yml +0 -25
  623. package/templates/jwt-app/.vscode/launch.json +0 -23
  624. package/templates/jwt-app/README.md +0 -92
  625. package/templates/jwt-app/cell.yml +0 -4
  626. package/templates/jwt-app/package.json +0 -36
  627. package/templates/jwt-app/src/context.ts +0 -16
  628. package/templates/jwt-app/src/error-handler.ts +0 -30
  629. package/templates/jwt-app/src/error.ts +0 -4
  630. package/templates/jwt-app/src/home-controller.ts +0 -23
  631. package/templates/jwt-app/src/index.ts +0 -5
  632. package/templates/jwt-app/src/jwt-middleware.ts +0 -36
  633. package/templates/jwt-app/src/module.ts +0 -3
  634. package/templates/jwt-app/test/home-controller.spec.ts +0 -19
  635. package/templates/jwt-app/tsconfig.json +0 -32
  636. package/templates/koa-app/app.js +0 -8
  637. package/templates/koa-app/package.json +0 -9
  638. package/templates/microservice/.github/workflows/deploy.yml +0 -28
  639. package/templates/microservice/.vscode/launch.json +0 -24
  640. package/templates/microservice/README.md +0 -92
  641. package/templates/microservice/examples/backend-app/README.md +0 -92
  642. package/templates/microservice/examples/backend-app/cell-remote.yml +0 -4
  643. package/templates/microservice/examples/backend-app/cell.yml +0 -3
  644. package/templates/microservice/examples/backend-app/package.json +0 -32
  645. package/templates/microservice/examples/backend-app/src/api-controller.ts +0 -31
  646. package/templates/microservice/examples/backend-app/src/module.ts +0 -3
  647. package/templates/microservice/examples/backend-app/tsconfig.json +0 -32
  648. package/templates/microservice/package.json +0 -20
  649. package/templates/microservice/packages/api/README.md +0 -92
  650. package/templates/microservice/packages/api/cell.yml +0 -0
  651. package/templates/microservice/packages/api/package.json +0 -25
  652. package/templates/microservice/packages/api/src/common/api-protocol.ts +0 -10
  653. package/templates/microservice/packages/api/src/common/index.ts +0 -1
  654. package/templates/microservice/packages/api/tsconfig.json +0 -30
  655. package/templates/microservice/packages/serviceA/.vscode/launch.json +0 -23
  656. package/templates/microservice/packages/serviceA/README.md +0 -92
  657. package/templates/microservice/packages/serviceA/cell.yml +0 -6
  658. package/templates/microservice/packages/serviceA/package.json +0 -29
  659. package/templates/microservice/packages/serviceA/src/node/module.ts +0 -3
  660. package/templates/microservice/packages/serviceA/src/node/service-a.ts +0 -9
  661. package/templates/microservice/packages/serviceA/tsconfig.json +0 -30
  662. package/templates/microservice/packages/serviceB/README.md +0 -92
  663. package/templates/microservice/packages/serviceB/cell.yml +0 -5
  664. package/templates/microservice/packages/serviceB/package.json +0 -29
  665. package/templates/microservice/packages/serviceB/src/node/module.ts +0 -3
  666. package/templates/microservice/packages/serviceB/src/node/service-b.ts +0 -9
  667. package/templates/microservice/packages/serviceB/tsconfig.json +0 -30
  668. package/templates/microservice/tsconfig.json +0 -32
  669. package/templates/mycli/.vscode/launch.json +0 -33
  670. package/templates/mycli/bin/mycli +0 -2
  671. package/templates/mycli/bin/mycli-deploy +0 -2
  672. package/templates/mycli/bin/mycli-init +0 -2
  673. package/templates/mycli/package.json +0 -33
  674. package/templates/mycli/src/bootstrap.ts +0 -7
  675. package/templates/mycli/src/constants.ts +0 -1
  676. package/templates/mycli/src/deploy/deploy-manager.ts +0 -12
  677. package/templates/mycli/src/deploy/deploy.ts +0 -16
  678. package/templates/mycli/src/deploy/index.ts +0 -1
  679. package/templates/mycli/src/index.ts +0 -2
  680. package/templates/mycli/src/init/index.ts +0 -1
  681. package/templates/mycli/src/init/init-manager.ts +0 -85
  682. package/templates/mycli/src/init/init.ts +0 -25
  683. package/templates/mycli/src/init/templates.ts +0 -3
  684. package/templates/mycli/src/module.ts +0 -3
  685. package/templates/mycli/src/mycli.ts +0 -13
  686. package/templates/mycli/templates/application-template/README.md +0 -0
  687. package/templates/mycli/tsconfig.json +0 -32
  688. package/templates/nest-app/.eslintrc.js +0 -25
  689. package/templates/nest-app/.prettierrc +0 -4
  690. package/templates/nest-app/README.md +0 -73
  691. package/templates/nest-app/nest-cli.json +0 -8
  692. package/templates/nest-app/package.json +0 -69
  693. package/templates/nest-app/src/app.controller.spec.ts +0 -22
  694. package/templates/nest-app/src/app.controller.ts +0 -12
  695. package/templates/nest-app/src/app.module.ts +0 -10
  696. package/templates/nest-app/src/app.service.ts +0 -8
  697. package/templates/nest-app/src/main.ts +0 -8
  698. package/templates/nest-app/test/app.e2e-spec.ts +0 -24
  699. package/templates/nest-app/test/jest-e2e.json +0 -9
  700. package/templates/nest-app/tsconfig.build.json +0 -12
  701. package/templates/nest-app/tsconfig.json +0 -25
  702. package/templates/nextjs-app/.eslintrc.json +0 -3
  703. package/templates/nextjs-app/README.md +0 -34
  704. package/templates/nextjs-app/next.config.js +0 -6
  705. package/templates/nextjs-app/package.json +0 -20
  706. package/templates/nextjs-app/pages/_app.js +0 -7
  707. package/templates/nextjs-app/pages/api/hello.js +0 -5
  708. package/templates/nextjs-app/pages/index.js +0 -69
  709. package/templates/nextjs-app/public/favicon.ico +0 -0
  710. package/templates/nextjs-app/public/vercel.svg +0 -4
  711. package/templates/nextjs-app/styles/Home.module.css +0 -116
  712. package/templates/nextjs-app/styles/globals.css +0 -16
  713. package/templates/sample-app/.github/workflows/deploy.yml +0 -25
  714. package/templates/sample-app/.vscode/launch.json +0 -23
  715. package/templates/sample-app/README.md +0 -92
  716. package/templates/sample-app/cell.yml +0 -0
  717. package/templates/sample-app/package.json +0 -31
  718. package/templates/sample-app/src/browser/assets/logo.png +0 -0
  719. package/templates/sample-app/src/browser/css-shims.d.ts +0 -30
  720. package/templates/sample-app/src/browser/hello.view.tsx +0 -31
  721. package/templates/sample-app/src/browser/module.ts +0 -3
  722. package/templates/sample-app/src/browser/style/hello.module.scss +0 -4
  723. package/templates/sample-app/src/common/welcome-protocol.ts +0 -5
  724. package/templates/sample-app/src/node/module.ts +0 -3
  725. package/templates/sample-app/src/node/welcome-server.ts +0 -9
  726. package/templates/sample-app/tsconfig.json +0 -32
  727. package/templates/schedule/.github/workflows/deploy.yml +0 -25
  728. package/templates/schedule/.vscode/launch.json +0 -23
  729. package/templates/schedule/README.md +0 -92
  730. package/templates/schedule/cell.yml +0 -1
  731. package/templates/schedule/package.json +0 -29
  732. package/templates/schedule/src/module.ts +0 -3
  733. package/templates/schedule/src/scheduler.ts +0 -10
  734. package/templates/schedule/tsconfig.json +0 -32
  735. package/templates/standalone-app/package.json +0 -17
  736. package/templates/standalone-app/src/app.service.ts +0 -10
  737. package/templates/standalone-app/src/main.ts +0 -14
  738. package/templates/standalone-app/src/module.ts +0 -3
  739. package/templates/standalone-app/tsconfig.json +0 -30
  740. package/templates/vue-app/.github/workflows/deploy.yml +0 -25
  741. package/templates/vue-app/.vscode/launch.json +0 -23
  742. package/templates/vue-app/README.md +0 -92
  743. package/templates/vue-app/cell.yml +0 -0
  744. package/templates/vue-app/package.json +0 -32
  745. package/templates/vue-app/src/browser/App.vue +0 -32
  746. package/templates/vue-app/src/browser/app.ts +0 -7
  747. package/templates/vue-app/src/browser/components/HelloWorld.vue +0 -42
  748. package/templates/vue-app/src/browser/declare.d.ts +0 -7
  749. package/templates/vue-app/src/browser/images/logo.png +0 -0
  750. package/templates/vue-app/src/browser/module.ts +0 -3
  751. package/templates/vue-app/src/browser/router.ts +0 -13
  752. package/templates/vue-app/src/browser/shims-vue.d.ts +0 -5
  753. package/templates/vue-app/src/browser/views/About.vue +0 -5
  754. package/templates/vue-app/src/browser/views/Root.vue +0 -37
  755. package/templates/vue-app/src/common/welcome-protocol.ts +0 -5
  756. package/templates/vue-app/src/node/module.ts +0 -3
  757. package/templates/vue-app/src/node/welcome-server.ts +0 -9
  758. package/templates/vue-app/tsconfig.json +0 -32
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverless-deployers.spec.js","sourceRoot":"","sources":["../../src/preset/serverless-deployers.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=serverless-presets.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverless-presets.spec.d.ts","sourceRoot":"","sources":["../../src/preset/serverless-presets.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,280 @@
1
+ import { afterAll, describe, expect, it } from 'bun:test';
2
+ import { execFileSync, spawn, spawnSync } from 'node:child_process';
3
+ import { existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync, statSync, writeFileSync } from 'node:fs';
4
+ import { createServer } from 'node:net';
5
+ import { tmpdir } from 'node:os';
6
+ import { join } from 'node:path';
7
+ import { CellCli } from '../cli/cell-cli.js';
8
+ import { CodePackage } from '../deploy/code-package.js';
9
+ import { FixtureProject } from '../test/fixture-project.js';
10
+ const DEPENDENCIES = {
11
+ '@celljs/core': '*',
12
+ '@celljs/http': '*',
13
+ '@celljs/web': '*',
14
+ '@celljs/mvc': '*',
15
+ '@celljs/express-adapter': '*',
16
+ '@celljs/serve-static': '*',
17
+ };
18
+ /** The environment of the tests, without cloud credentials of the machine. */
19
+ const ENV = Object.fromEntries(Object.entries(process.env).filter(([k]) => !/^(ALIBABA_CLOUD|TENCENTCLOUD|AWS|VERCEL)/.test(k)));
20
+ async function cell(args, env = ENV) {
21
+ let stdout = '';
22
+ let stderr = '';
23
+ const code = await new CellCli({ stdout: { write: s => (stdout += s) }, stderr: { write: s => (stderr += s) }, env }).run(args);
24
+ let json;
25
+ try {
26
+ json = JSON.parse(stdout);
27
+ }
28
+ catch {
29
+ json = undefined;
30
+ }
31
+ return { code, stdout, stderr, json };
32
+ }
33
+ function freePort() {
34
+ return new Promise(resolve => {
35
+ const server = createServer().listen(0, '127.0.0.1', () => {
36
+ const { port } = server.address();
37
+ server.close(() => resolve(port));
38
+ });
39
+ });
40
+ }
41
+ /** The code package as the platform unpacks it: the zip of the output, extracted in an empty directory. */
42
+ function unpack(outDir) {
43
+ const dir = mkdtempSync(join(tmpdir(), 'cell-package-'));
44
+ writeFileSync(join(dir, 'code.zip'), CodePackage.of(outDir).zip);
45
+ execFileSync('unzip', ['-q', 'code.zip', '-d', 'code'], { cwd: dir });
46
+ return join(dir, 'code');
47
+ }
48
+ async function waitFor(url) {
49
+ for (let i = 0; i < 150; i++) {
50
+ if (await fetch(url).then(() => true, () => false)) {
51
+ return;
52
+ }
53
+ await new Promise(r => setTimeout(r, 100));
54
+ }
55
+ throw new Error(`${url} did not answer`);
56
+ }
57
+ /** Runs a script in a child Node.js process (the handlers set globals and chdir) and returns its JSON output. */
58
+ function runScript(code, cwd) {
59
+ const file = join(cwd, 'run-handler.mjs');
60
+ writeFileSync(file, code);
61
+ const result = spawnSync('node', [file], { cwd, encoding: 'utf8', env: { PATH: process.env.PATH } });
62
+ const line = result.stdout.trim().split('\n').pop() ?? '';
63
+ try {
64
+ return JSON.parse(line);
65
+ }
66
+ catch {
67
+ throw new Error(`${result.stdout}\n${result.stderr}`);
68
+ }
69
+ }
70
+ describe('the fc, scf, lambda and vercel presets', () => {
71
+ const fixture = new FixtureProject('cli-serverless')
72
+ .file('package.json', { name: 'serverless-app', dependencies: DEPENDENCIES })
73
+ .file('cell.config.ts', "export default { targets: ['frontend', 'backend'], fc: { region: 'cn-shanghai' }, vercel: { environment: 'preview' } };\n")
74
+ .file('cell.yml', "frontend:\n cell:\n name: Serverless App\nbackend:\n cell:\n greeting: hello from the function\n serve-static:\n apiPath: '/api/**'\n")
75
+ .file('src/browser/module.ts', "console.log('frontend');\nexport default {};\n")
76
+ .file('src/node/module.ts', [
77
+ "import { autoBind, Value } from '@celljs/core';",
78
+ "import { Body, Controller, Get, Post, Text } from '@celljs/mvc/lib/node';",
79
+ "import { Context } from '@celljs/web/lib/node';",
80
+ "@Controller('api')",
81
+ 'export class ApiController {',
82
+ " @Value('cell.greeting') protected readonly greeting: string;",
83
+ " @Get('hello') @Text()",
84
+ ' hello(): string { return this.greeting; }',
85
+ " @Post('echo')",
86
+ ' echo(@Body() body: unknown): unknown { return { body }; }',
87
+ " @Get('cookie') @Text()",
88
+ " cookie(): string { Context.getResponse().setHeader('Set-Cookie', ['a=1; Path=/', 'b=2; Path=/']); return 'ok'; }",
89
+ '}',
90
+ 'export default autoBind();',
91
+ ].join('\n'));
92
+ const children = [];
93
+ afterAll(() => {
94
+ for (const child of children) {
95
+ child.kill('SIGKILL');
96
+ }
97
+ fixture.dispose();
98
+ });
99
+ async function serve(script, env, port) {
100
+ const child = spawn('bash', [script], { cwd: '/', env: { PATH: process.env.PATH, ...env }, stdio: 'ignore' });
101
+ children.push(child);
102
+ const url = `http://127.0.0.1:${port}`;
103
+ await waitFor(url);
104
+ return url;
105
+ }
106
+ async function checkWebServer(url) {
107
+ expect(await (await fetch(`${url}/api/hello`)).text()).toBe('hello from the function');
108
+ expect(await (await fetch(`${url}/api/echo`, { method: 'POST', headers: { 'content-type': 'application/json' }, body: '{"n":1}' })).json()).toEqual({
109
+ body: { n: 1 },
110
+ });
111
+ expect(await (await fetch(url)).text()).toContain('<title>Serverless App</title>');
112
+ }
113
+ it('fc: an executable bootstrap that starts the server on FC_SERVER_PORT, from the unpacked package', async () => {
114
+ const { json } = await cell(['build', '--preset', 'fc', '--json', '--root', fixture.root]);
115
+ expect(json).toMatchObject({ ok: true, preset: 'fc', outDir: '.cell/output' });
116
+ const out = fixture.path('.cell/output');
117
+ expect(statSync(join(out, 'bootstrap')).mode & 0o111).toBeTruthy();
118
+ expect(readFileSync(join(out, 'bootstrap'), 'utf8')).toContain('NODE=/var/fc/lang/nodejs20/bin/node');
119
+ expect(JSON.parse(readFileSync(join(out, 'manifest.json'), 'utf8')).files).toEqual(['bootstrap']);
120
+ const port = await freePort();
121
+ await checkWebServer(await serve(join(unpack(out), 'bootstrap'), { FC_SERVER_PORT: String(port) }, port));
122
+ }, 120000);
123
+ it('scf: scf_bootstrap with the Node.js 18 of the runtime, on port 9000; files of the previous preset are gone', async () => {
124
+ const { json } = await cell(['build', '--preset', 'scf', '--json', '--root', fixture.root]);
125
+ expect(json).toMatchObject({ ok: true, preset: 'scf' });
126
+ const out = fixture.path('.cell/output');
127
+ expect(existsSync(join(out, 'bootstrap'))).toBe(false);
128
+ const script = readFileSync(join(out, 'scf_bootstrap'), 'utf8');
129
+ expect(script).toContain('NODE=/var/lang/node18/bin/node');
130
+ expect(script).toContain('export CELL_BACKEND__SERVER__PORT="9000"');
131
+ // Locally on a free port instead of 9000.
132
+ const code = unpack(out);
133
+ const port = await freePort();
134
+ writeFileSync(join(code, 'scf_bootstrap'), script.replace('"9000"', `"${port}"`));
135
+ await checkWebServer(await serve(join(code, 'scf_bootstrap'), {}, port));
136
+ }, 120000);
137
+ it('lambda: a handler that answers function URL events, with base64 bodies and cookies', async () => {
138
+ const { json } = await cell(['build', '--preset', 'lambda', '--json', '--root', fixture.root]);
139
+ expect(json).toMatchObject({ ok: true, preset: 'lambda' });
140
+ const code = unpack(fixture.path('.cell/output'));
141
+ const result = runScript([
142
+ "const { handler } = await import('./server/lambda.mjs');",
143
+ "const event = (method, rawPath, extra = {}) => ({ version: '2.0', rawPath, rawQueryString: '', headers: { host: 'x.lambda-url.on.aws' }, requestContext: { http: { method, path: rawPath } }, isBase64Encoded: false, ...extra });",
144
+ "const decode = r => ({ status: r.statusCode, type: r.headers['content-type'], body: Buffer.from(r.body, 'base64').toString(), cookies: r.cookies });",
145
+ 'const out = {',
146
+ " hello: decode(await handler(event('GET', '/api/hello'))),",
147
+ " echo: decode(await handler(event('POST', '/api/echo', { headers: { 'content-type': 'application/json' }, body: Buffer.from('{\"n\":2}').toString('base64'), isBase64Encoded: true }))),",
148
+ " cookie: decode(await handler(event('GET', '/api/cookie'))),",
149
+ " page: decode(await handler(event('GET', '/'))),",
150
+ '};',
151
+ "console.log(JSON.stringify({ ...out, page: out.page.body.includes('<title>Serverless App</title>') }));",
152
+ 'process.exit(0);',
153
+ ].join('\n'), code);
154
+ expect(result.hello).toMatchObject({ status: 200, body: 'hello from the function' });
155
+ expect(JSON.parse(result.echo.body)).toEqual({ body: { n: 2 } });
156
+ expect(result.cookie.cookies).toEqual(['a=1; Path=/', 'b=2; Path=/']);
157
+ expect(result.page).toBe(true);
158
+ }, 120000);
159
+ it('vercel: static files and one function in .vercel/output, the function answering the API and the single-page fallback', async () => {
160
+ // What a \`vercel build\` leaves there must not end up in the deployment.
161
+ mkdirSync(fixture.path('.vercel/output/static'), { recursive: true });
162
+ writeFileSync(fixture.path('.vercel/output/static/stale.html'), 'stale');
163
+ writeFileSync(fixture.path('.vercel/output/builds.json'), '{"target":"preview"}');
164
+ const { json } = await cell(['build', '--preset', 'vercel', '--json', '--root', fixture.root]);
165
+ expect(existsSync(fixture.path('.vercel/output/static/stale.html'))).toBe(false);
166
+ expect(existsSync(fixture.path('.vercel/output/builds.json'))).toBe(false);
167
+ expect(json).toMatchObject({ ok: true, preset: 'vercel', outDir: '.vercel/output' });
168
+ const out = fixture.path('.vercel/output');
169
+ expect(JSON.parse(readFileSync(join(out, 'config.json'), 'utf8')).routes.slice(1)).toEqual([
170
+ { handle: 'filesystem' },
171
+ { src: '^/(.*)$', dest: '/index' },
172
+ ]);
173
+ expect(existsSync(join(out, 'static/index.html'))).toBe(true);
174
+ expect(JSON.parse(readFileSync(join(out, 'functions/index.func/.vc-config.json'), 'utf8'))).toMatchObject({
175
+ runtime: 'nodejs22.x',
176
+ handler: 'vercel.mjs',
177
+ launcherType: 'Nodejs',
178
+ });
179
+ expect(JSON.parse(readFileSync(join(out, 'manifest.json'), 'utf8'))).toMatchObject({
180
+ server: 'functions/index.func/server/index.mjs',
181
+ public: 'static',
182
+ });
183
+ const fn = mkdtempSync(join(tmpdir(), 'cell-vercel-fn-'));
184
+ execFileSync('cp', ['-R', `${join(out, 'functions/index.func')}/.`, fn]);
185
+ const result = runScript([
186
+ "import { createServer } from 'node:http';",
187
+ "const { default: handler } = await import('./vercel.mjs');",
188
+ "const server = createServer(handler).listen(0, '127.0.0.1');",
189
+ "await new Promise(r => server.on('listening', r));",
190
+ 'const url = `http://127.0.0.1:${server.address().port}`;',
191
+ "const hello = await (await fetch(url + '/api/hello')).text();",
192
+ "const spa = (await (await fetch(url + '/orders/7', { headers: { accept: 'text/html' } })).text()).includes('<title>Serverless App</title>');",
193
+ 'console.log(JSON.stringify({ hello, spa }));',
194
+ 'process.exit(0);',
195
+ ].join('\n'), fn);
196
+ expect(result).toEqual({ hello: 'hello from the function', spa: true });
197
+ expect((await cell(['build', '--preset', 'vercel', '--single', '--json', '--root', fixture.root])).json.error.code).toBe('CELL_CONFIG_CONFLICT');
198
+ }, 120000);
199
+ it('plans each deployment without credentials, and validates preset options', async () => {
200
+ for (const [preset, types] of [
201
+ ['fc', ['function', 'http-trigger']],
202
+ ['scf', ['web-function', 'function-url']],
203
+ ['lambda', ['iam-role', 'function', 'function-url']],
204
+ ['vercel', ['deployment']],
205
+ ]) {
206
+ const { code, json } = await cell(['deploy', '--preset', preset, '--dry-run', '--json', '--root', fixture.root]);
207
+ expect({ preset, code }).toEqual({ preset, code: 0 });
208
+ expect(json.plan.resources.map((r) => r.type)).toEqual(types);
209
+ }
210
+ const fc = await cell(['deploy', '--preset', 'fc', '--dry-run', '--json', '--root', fixture.root]);
211
+ expect(fc.json.plan.resources[0]).toMatchObject({ name: 'serverless-app', action: 'deploy', details: { region: 'cn-shanghai' } });
212
+ expect(fc.json.warnings[0]).toContain('No Alibaba Cloud credentials');
213
+ const vercel = await cell(['deploy', '--preset', 'vercel', '--dry-run', '--json', '--root', fixture.root]);
214
+ expect(vercel.json.plan.resources[0].details).toMatchObject({ environment: 'preview', function: 'index (nodejs22.x)' });
215
+ const apply = await cell(['deploy', '--preset', 'scf', '--skip-build', '--json', '--root', fixture.root]);
216
+ expect(apply.json?.error.code ?? apply.stderr).toBe('CELL_DEPLOY_OUTPUT_MISMATCH');
217
+ const noCredentials = await cell(['deploy', '--preset', 'scf', '--json', '--root', fixture.root]);
218
+ expect(noCredentials.json.error.code).toBe('CELL_DEPLOY_CREDENTIALS_MISSING');
219
+ }, 240000);
220
+ it('rejects unknown preset options', async () => {
221
+ const bad = new FixtureProject('cli-serverless-options')
222
+ .file('package.json', { name: 'bad-options', dependencies: DEPENDENCIES })
223
+ .file('cell.config.ts', "export default { fc: { regin: 'cn-shanghai' } };\n")
224
+ .file('src/node/module.ts', 'export default {};\n');
225
+ try {
226
+ const { json } = await cell(['info', '--json', '--root', bad.root]);
227
+ expect(json.error).toMatchObject({
228
+ code: 'CELL_CONFIG_INVALID',
229
+ message: 'fc.regin: unknown option; the options are name, region, node, memory, cpu, timeout, concurrency, env',
230
+ });
231
+ }
232
+ finally {
233
+ bad.dispose();
234
+ }
235
+ });
236
+ });
237
+ describe('the vercel deployer', () => {
238
+ const fixture = new FixtureProject('cli-vercel-deploy')
239
+ .file('package.json', {
240
+ name: 'vercel-app',
241
+ dependencies: { '@celljs/core': '*', '@celljs/http': '*', '@celljs/web': '*', '@celljs/mvc': '*', '@celljs/express-adapter': '*' },
242
+ })
243
+ .file('src/node/module.ts', 'export default {};\n')
244
+ .file('node_modules/vercel/package.json', { name: 'vercel', version: '65.0.0', bin: { vercel: 'vc.js' } })
245
+ .file('node_modules/vercel/vc.js', [
246
+ "const { appendFileSync } = require('node:fs');",
247
+ "appendFileSync(process.env.FAKE_VERCEL_LOG, JSON.stringify(process.argv.slice(2)) + '\\n');",
248
+ "if (process.env.FAKE_VERCEL_FAIL) { console.error('Error: ' + process.env.FAKE_VERCEL_FAIL); process.exit(1); }",
249
+ "console.log('Production: https://vercel-app-abc.vercel.app [3s]');",
250
+ ].join('\n'));
251
+ const log = join(fixture.root, 'vercel.log');
252
+ afterAll(() => fixture.dispose());
253
+ it('runs vercel deploy --prebuilt with the project, production and the token, and returns the URL', async () => {
254
+ const { code, json } = await cell(['deploy', '--preset', 'vercel', '--json', '--root', fixture.root], {
255
+ ...ENV,
256
+ FAKE_VERCEL_LOG: log,
257
+ VERCEL_TOKEN: 'tok',
258
+ });
259
+ expect(code).toBe(0);
260
+ expect(json.deployment).toMatchObject({ url: 'https://vercel-app-abc.vercel.app', details: { project: 'vercel-app', environment: 'production' } });
261
+ const args = JSON.parse(readFileSync(log, 'utf8').trim().split('\n').pop());
262
+ expect(args).toEqual(['deploy', '--prebuilt', '--yes', '--project', 'vercel-app', '--create-if-missing', '--prod', '--token', 'tok']);
263
+ }, 120000);
264
+ it('explains missing credentials', async () => {
265
+ const { json } = await cell(['deploy', '--preset', 'vercel', '--skip-build', '--json', '--root', fixture.root], {
266
+ ...ENV,
267
+ FAKE_VERCEL_LOG: log,
268
+ FAKE_VERCEL_FAIL: 'No existing credentials found. Please run `vercel login` or pass "--token"',
269
+ });
270
+ expect(json.error).toMatchObject({ code: 'CELL_DEPLOY_UNAUTHORIZED' });
271
+ expect(json.error.hint).toContain('VERCEL_TOKEN');
272
+ }, 60000);
273
+ it('needs the output in .vercel/output', async () => {
274
+ mkdirSync(fixture.path('elsewhere'), { recursive: true });
275
+ const { json } = await cell(['deploy', '--preset', 'vercel', '--out-dir', 'elsewhere', '--dry-run', '--json', '--root', fixture.root], ENV);
276
+ expect(json.error.code).toBe('CELL_DEPLOY_OUTPUT_MISMATCH');
277
+ rmSync(fixture.path('elsewhere'), { recursive: true, force: true });
278
+ }, 120000);
279
+ });
280
+ //# sourceMappingURL=serverless-presets.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverless-presets.spec.js","sourceRoot":"","sources":["../../src/preset/serverless-presets.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ /** What the generated scripts of the serverless presets need. */
2
+ export interface BootstrapOptions {
3
+ preset: string;
4
+ /** Node.js of the platform's image; `node` from PATH is used when it is not there (local runs). */
5
+ node: string;
6
+ /** Port the platform sends requests to; `portVariable` overrides it when the platform sets one. */
7
+ port: number;
8
+ portVariable?: string;
9
+ /** Server bundle, relative to the output directory. */
10
+ server: string;
11
+ }
12
+ /**
13
+ * Start scripts and handlers around the server bundle for function platforms. Each runs the Cell
14
+ * server unchanged: FC and SCF start it as a web server on their port; Lambda and Vercel hand it
15
+ * requests in process through the application host (`Symbol.for('@celljs/core/application-host')`).
16
+ */
17
+ export declare namespace ServerlessScripts {
18
+ /** A bash start script for FC custom runtimes and SCF web functions, run from the code directory. */
19
+ function bootstrap({ preset, node, port, portVariable, server }: BootstrapOptions): string;
20
+ /**
21
+ * `server/lambda.mjs`: the Lambda handler. The application serves HTTP on a loopback port during
22
+ * the init phase; each function URL / API Gateway HTTP API (payload 2.0) event becomes a request
23
+ * to it, and the response comes back base64-encoded.
24
+ */
25
+ const LAMBDA_HANDLER: string;
26
+ /** `functions/index.func/vercel.mjs`: a Vercel Node.js function that hands each request to the application. */
27
+ const VERCEL_FUNCTION: string;
28
+ }
29
+ //# sourceMappingURL=serverless-scripts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverless-scripts.d.ts","sourceRoot":"","sources":["../../src/preset/serverless-scripts.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,MAAM,WAAW,gBAAgB;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,mGAAmG;IACnG,IAAI,EAAE,MAAM,CAAC;IACb,mGAAmG;IACnG,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uDAAuD;IACvD,MAAM,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,yBAAiB,iBAAiB,CAAC;IAI/B,qGAAqG;IACrG,SAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,EAAE,gBAAgB,GAAG,MAAM,CAehG;IAED;;;;OAIG;IACI,MAAM,cAAc,QA+Df,CAAC;IAEb,+GAA+G;IACxG,MAAM,eAAe,QAoBhB,CAAC;CAChB"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Start scripts and handlers around the server bundle for function platforms. Each runs the Cell
3
+ * server unchanged: FC and SCF start it as a web server on their port; Lambda and Vercel hand it
4
+ * requests in process through the application host (`Symbol.for('@celljs/core/application-host')`).
5
+ */
6
+ export var ServerlessScripts;
7
+ (function (ServerlessScripts) {
8
+ const HOST_KEY = "Symbol.for('@celljs/core/application-host')";
9
+ const NO_HTTP = 'The application has no HTTP entry: add @celljs/express-adapter to the dependencies.';
10
+ /** A bash start script for FC custom runtimes and SCF web functions, run from the code directory. */
11
+ function bootstrap({ preset, node, port, portVariable, server }) {
12
+ const portValue = portVariable ? `\${${portVariable}:-${port}}` : String(port);
13
+ return [
14
+ '#!/bin/bash',
15
+ `# Generated by the Cell ${preset} preset. Do not edit.`,
16
+ 'cd "$(dirname "$0")" || exit 1',
17
+ `NODE=${node}`,
18
+ '[ -x "$NODE" ] || NODE=node',
19
+ 'export NODE_ENV="${NODE_ENV:-production}"',
20
+ // The platform forwards requests to this port on all interfaces.
21
+ 'export CELL_BACKEND__SERVER__HOST=0.0.0.0',
22
+ `export CELL_BACKEND__SERVER__PORT="${portValue}"`,
23
+ `exec "$NODE" ${server}`,
24
+ '',
25
+ ].join('\n');
26
+ }
27
+ ServerlessScripts.bootstrap = bootstrap;
28
+ /**
29
+ * `server/lambda.mjs`: the Lambda handler. The application serves HTTP on a loopback port during
30
+ * the init phase; each function URL / API Gateway HTTP API (payload 2.0) event becomes a request
31
+ * to it, and the response comes back base64-encoded.
32
+ */
33
+ ServerlessScripts.LAMBDA_HANDLER = [
34
+ '// Generated by the Cell lambda preset. Do not edit.',
35
+ "import { createServer, request } from 'node:http';",
36
+ "import { fileURLToPath } from 'node:url';",
37
+ '',
38
+ "process.env.NODE_ENV ??= 'production';",
39
+ '// The package root: public/ (the frontend) is there.',
40
+ "process.chdir(fileURLToPath(new URL('..', import.meta.url)));",
41
+ 'const server = createServer();',
42
+ 'const application = new Promise((resolve, reject) => {',
43
+ ` globalThis[${HOST_KEY}] = {`,
44
+ ' server,',
45
+ ' started: app => {',
46
+ ' if (!app.handler) {',
47
+ ` reject(new Error('${NO_HTTP}'));`,
48
+ ' return;',
49
+ ' }',
50
+ " server.on('request', app.handler);",
51
+ ' resolve();',
52
+ ' },',
53
+ ' failed: reject,',
54
+ ' };',
55
+ '});',
56
+ "await import('./index.mjs');",
57
+ 'await application;',
58
+ "await new Promise(resolve => server.listen(0, '127.0.0.1', resolve));",
59
+ 'const { port } = server.address();',
60
+ '',
61
+ 'export async function handler(event) {',
62
+ " const method = event.requestContext?.http?.method ?? event.httpMethod ?? 'GET';",
63
+ " const path = event.rawPath ?? event.path ?? '/';",
64
+ " const query = event.rawQueryString ?? '';",
65
+ ' const headers = { ...event.headers };',
66
+ ' if (event.cookies?.length) {',
67
+ " headers.cookie = event.cookies.join('; ');",
68
+ ' }',
69
+ " delete headers['transfer-encoding'];",
70
+ " const body = event.body == null ? undefined : Buffer.from(event.body, event.isBase64Encoded ? 'base64' : 'utf8');",
71
+ ' if (body) {',
72
+ " headers['content-length'] = String(body.length);",
73
+ ' }',
74
+ ' const { res, data } = await new Promise((resolve, reject) => {',
75
+ " const req = request({ host: '127.0.0.1', port, method, path: query ? `${path}?${query}` : path, headers }, res => {",
76
+ ' const chunks = [];',
77
+ " res.on('data', chunk => chunks.push(chunk));",
78
+ " res.on('end', () => resolve({ res, data: Buffer.concat(chunks) }));",
79
+ " res.on('error', reject);",
80
+ ' });',
81
+ " req.on('error', reject);",
82
+ ' req.end(body);',
83
+ ' });',
84
+ ' const responseHeaders = {};',
85
+ ' let cookies = [];',
86
+ ' for (const [name, value] of Object.entries(res.headers)) {',
87
+ " if (name === 'set-cookie') {",
88
+ ' cookies = value;',
89
+ ' } else {',
90
+ " responseHeaders[name] = Array.isArray(value) ? value.join(', ') : value;",
91
+ ' }',
92
+ ' }',
93
+ " return { statusCode: res.statusCode, headers: responseHeaders, cookies, body: data.toString('base64'), isBase64Encoded: true };",
94
+ '}',
95
+ '',
96
+ ].join('\n');
97
+ /** `functions/index.func/vercel.mjs`: a Vercel Node.js function that hands each request to the application. */
98
+ ServerlessScripts.VERCEL_FUNCTION = [
99
+ '// Generated by the Cell vercel preset. Do not edit.',
100
+ "import { fileURLToPath } from 'node:url';",
101
+ '',
102
+ "process.env.NODE_ENV ??= 'production';",
103
+ '// The function directory: public/index.html (the single-page fallback) is there.',
104
+ "process.chdir(fileURLToPath(new URL('.', import.meta.url)));",
105
+ 'const application = new Promise((resolve, reject) => {',
106
+ ` globalThis[${HOST_KEY}] = {`,
107
+ ` started: app => (app.handler ? resolve(app.handler) : reject(new Error('${NO_HTTP}'))),`,
108
+ ' failed: reject,',
109
+ ' };',
110
+ '});',
111
+ "await import('./server/index.mjs');",
112
+ 'const handler = await application;',
113
+ '',
114
+ 'export default function cell(req, res) {',
115
+ ' handler(req, res);',
116
+ '}',
117
+ '',
118
+ ].join('\n');
119
+ })(ServerlessScripts || (ServerlessScripts = {}));
120
+ //# sourceMappingURL=serverless-scripts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"serverless-scripts.js","sourceRoot":"","sources":["../../src/preset/serverless-scripts.ts"],"names":[],"mappings":"AAYA;;;;GAIG;AACH,MAAM,KAAW,iBAAiB,CAkHjC;AAlHD,WAAiB,iBAAiB;IAC9B,MAAM,QAAQ,GAAG,6CAA6C,CAAC;IAC/D,MAAM,OAAO,GAAG,qFAAqF,CAAC;IAEtG,qGAAqG;IACrG,SAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAoB;QACpF,MAAM,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,MAAM,YAAY,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/E,OAAO;YACH,aAAa;YACb,2BAA2B,MAAM,uBAAuB;YACxD,gCAAgC;YAChC,QAAQ,IAAI,EAAE;YACd,6BAA6B;YAC7B,2CAA2C;YAC3C,iEAAiE;YACjE,2CAA2C;YAC3C,sCAAsC,SAAS,GAAG;YAClD,gBAAgB,MAAM,EAAE;YACxB,EAAE;SACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,CAAC;IAfe,kBAAA,SAAS,YAexB,CAAA;IAED;;;;OAIG;IACU,gCAAc,GAAG;QAC1B,sDAAsD;QACtD,oDAAoD;QACpD,2CAA2C;QAC3C,EAAE;QACF,wCAAwC;QACxC,uDAAuD;QACvD,+DAA+D;QAC/D,gCAAgC;QAChC,wDAAwD;QACxD,kBAAkB,QAAQ,OAAO;QACjC,iBAAiB;QACjB,2BAA2B;QAC3B,iCAAiC;QACjC,qCAAqC,OAAO,MAAM;QAClD,yBAAyB;QACzB,eAAe;QACf,gDAAgD;QAChD,wBAAwB;QACxB,YAAY;QACZ,yBAAyB;QACzB,QAAQ;QACR,KAAK;QACL,8BAA8B;QAC9B,oBAAoB;QACpB,uEAAuE;QACvE,oCAAoC;QACpC,EAAE;QACF,wCAAwC;QACxC,qFAAqF;QACrF,sDAAsD;QACtD,+CAA+C;QAC/C,2CAA2C;QAC3C,kCAAkC;QAClC,oDAAoD;QACpD,OAAO;QACP,0CAA0C;QAC1C,uHAAuH;QACvH,iBAAiB;QACjB,0DAA0D;QAC1D,OAAO;QACP,oEAAoE;QACpE,6HAA6H;QAC7H,gCAAgC;QAChC,0DAA0D;QAC1D,iFAAiF;QACjF,sCAAsC;QACtC,aAAa;QACb,kCAAkC;QAClC,wBAAwB;QACxB,SAAS;QACT,iCAAiC;QACjC,uBAAuB;QACvB,gEAAgE;QAChE,sCAAsC;QACtC,8BAA8B;QAC9B,kBAAkB;QAClB,sFAAsF;QACtF,WAAW;QACX,OAAO;QACP,qIAAqI;QACrI,GAAG;QACH,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,+GAA+G;IAClG,iCAAe,GAAG;QAC3B,sDAAsD;QACtD,2CAA2C;QAC3C,EAAE;QACF,wCAAwC;QACxC,mFAAmF;QACnF,8DAA8D;QAC9D,wDAAwD;QACxD,kBAAkB,QAAQ,OAAO;QACjC,mFAAmF,OAAO,OAAO;QACjG,yBAAyB;QACzB,QAAQ;QACR,KAAK;QACL,qCAAqC;QACrC,oCAAoC;QACpC,EAAE;QACF,0CAA0C;QAC1C,wBAAwB;QACxB,GAAG;QACH,EAAE;KACL,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACjB,CAAC,EAlHgB,iBAAiB,KAAjB,iBAAiB,QAkHjC"}
@@ -0,0 +1,38 @@
1
+ import { type DeployContext, type Deployment, type DeployPlan } from '@celljs/kit';
2
+ /**
3
+ * Runs the Vercel CLI, which uploads prebuilt outputs and owns the credentials (`VERCEL_TOKEN` or
4
+ * `vercel login`). Like Wrangler it is not a dependency: the project's is used, else npx installs
5
+ * {@link VercelCli.PACKAGE} on first use.
6
+ */
7
+ export declare class VercelCli {
8
+ protected readonly root: string;
9
+ protected readonly env: NodeJS.ProcessEnv;
10
+ static readonly PACKAGE = "vercel@65";
11
+ constructor(root: string, env: NodeJS.ProcessEnv);
12
+ command(args: string[]): {
13
+ command: string;
14
+ args: string[];
15
+ source: 'project' | 'npx';
16
+ };
17
+ run(args: string[], relay: (chunk: string, stream: 'stdout' | 'stderr') => void): Promise<{
18
+ code: number;
19
+ output: string;
20
+ source: 'project' | 'npx';
21
+ }>;
22
+ static isAuthError(output: string): boolean;
23
+ /** The last line Vercel printed with `Error`, else its last line. */
24
+ static errorOf(output: string): string;
25
+ }
26
+ /** Deploys `.vercel/output` with `vercel deploy --prebuilt`: no build runs on Vercel. */
27
+ export declare class VercelDeployment {
28
+ protected readonly context: DeployContext;
29
+ readonly project: string;
30
+ protected readonly cli: VercelCli;
31
+ constructor(context: DeployContext);
32
+ get production(): boolean;
33
+ plan(): Promise<DeployPlan>;
34
+ apply(): Promise<Deployment>;
35
+ protected checkOutput(): void;
36
+ }
37
+ export declare const vercelDeployer: import("@celljs/kit").Deployer;
38
+ //# sourceMappingURL=vercel-deployer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vercel-deployer.d.ts","sourceRoot":"","sources":["../../../src/preset/vercel/vercel-deployer.ts"],"names":[],"mappings":"AAIA,OAAO,EAAa,KAAK,aAAa,EAAE,KAAK,UAAU,EAAE,KAAK,UAAU,EAAkB,MAAM,aAAa,CAAC;AAI9G;;;;GAIG;AACH,qBAAa,SAAS;IAId,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAC/B,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,UAAU;IAJ7C,MAAM,CAAC,QAAQ,CAAC,OAAO,eAAe;IAEtC,YACuB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,MAAM,CAAC,UAAU,EACzC;IAEJ,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAAA;KAAE,CAkBtF;IAED,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,SAAS,GAAG,KAAK,CAAA;KAAE,CAAC,CAerJ;IAED,MAAM,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAE1C;IAED,qEAAqE;IACrE,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAMrC;CACJ;AAED,yFAAyF;AACzF,qBAAa,gBAAgB;IAIb,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,aAAa;IAHrD,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,SAAS,CAAC;IAElC,YAA+B,OAAO,EAAE,aAAa,EAGpD;IAED,IAAI,UAAU,IAAI,OAAO,CAExB;IAEK,IAAI,IAAI,OAAO,CAAC,UAAU,CAAC,CA0BhC;IAEK,KAAK,IAAI,OAAO,CAAC,UAAU,CAAC,CA2BjC;IAED,SAAS,CAAC,WAAW,IAAI,IAAI,CAgB5B;CACJ;AAED,eAAO,MAAM,cAAc,gCAKzB,CAAC"}