@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,274 @@
1
+ import { CellError, defineDeployer } from '@celljs/kit';
2
+ import { CloudApi, CloudApiError, CloudCredentials, CloudNames, DEFAULT_IO } from '../../deploy/cloud-api.js';
3
+ import { CodePackage } from '../../deploy/code-package.js';
4
+ import { RequestSigner } from '../../deploy/request-signer.js';
5
+ import { LambdaPreset } from './lambda-preset.js';
6
+ /** The Lambda REST API and the IAM query API, signed with SigV4. */
7
+ export class AwsClient {
8
+ region;
9
+ credentials;
10
+ io;
11
+ constructor(region, credentials, io = DEFAULT_IO) {
12
+ this.region = region;
13
+ this.credentials = credentials;
14
+ this.io = io;
15
+ }
16
+ async lambda(method, path, body) {
17
+ const host = `lambda.${this.region}.amazonaws.com`;
18
+ const text = body === undefined ? '' : JSON.stringify(body);
19
+ const headers = RequestSigner.sigv4({ method, host, path, service: 'lambda', region: this.region, body: text, headers: text ? { 'content-type': 'application/json' } : {} }, this.credentials, this.io.now());
20
+ const response = await CloudApi.send(this.io, `https://${host}${path}`, { method, headers, body: text || undefined }, 'AWS Lambda');
21
+ const raw = await response.text();
22
+ const json = raw ? JSON.parse(raw) : {};
23
+ if (!response.ok) {
24
+ const type = (response.headers.get('x-amzn-errortype') ?? json.Type ?? json.__type ?? String(response.status)).split(':')[0];
25
+ throw new CloudApiError(response.status, type, json.message ?? json.Message ?? raw, response.headers.get('x-amzn-requestid') ?? undefined);
26
+ }
27
+ return json;
28
+ }
29
+ /** An IAM query API action; returns the XML response. IAM is global, signed in us-east-1. */
30
+ async iam(params) {
31
+ const host = 'iam.amazonaws.com';
32
+ const body = new URLSearchParams({ ...params, Version: '2010-05-08' }).toString();
33
+ const headers = RequestSigner.sigv4({
34
+ method: 'POST',
35
+ host,
36
+ path: '/',
37
+ service: 'iam',
38
+ region: 'us-east-1',
39
+ body,
40
+ headers: { 'content-type': 'application/x-www-form-urlencoded; charset=utf-8' },
41
+ }, this.credentials, this.io.now());
42
+ const response = await CloudApi.send(this.io, `https://${host}/`, { method: 'POST', headers, body }, 'AWS IAM');
43
+ const xml = await response.text();
44
+ if (!response.ok) {
45
+ throw new CloudApiError(response.status, AwsClient.tag(xml, 'Code') ?? String(response.status), AwsClient.tag(xml, 'Message') ?? xml, AwsClient.tag(xml, 'RequestId'));
46
+ }
47
+ return xml;
48
+ }
49
+ static tag(xml, name) {
50
+ return new RegExp(`<${name}>([^<]*)</${name}>`).exec(xml)?.[1];
51
+ }
52
+ }
53
+ /**
54
+ * Deploys the output of the lambda preset: the output directory as the code of a Node.js function,
55
+ * a function URL without authentication and the permissions it needs, and, when `lambda.role` is
56
+ * not set, the execution role `cell-lambda-execution` (logs only). Credentials: AWS_ACCESS_KEY_ID /
57
+ * AWS_SECRET_ACCESS_KEY (/ AWS_SESSION_TOKEN), or a profile of ~/.aws/credentials.
58
+ */
59
+ export class LambdaDeployment {
60
+ context;
61
+ io;
62
+ /** A zip uploaded in the request (base64 in JSON). */
63
+ static MAX_PACKAGE = 50 * 1024 * 1024;
64
+ static ROLE = 'cell-lambda-execution';
65
+ static CREDENTIALS = 'AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY';
66
+ static ASSUME_ROLE = JSON.stringify({
67
+ Version: '2012-10-17',
68
+ Statement: [{ Effect: 'Allow', Principal: { Service: 'lambda.amazonaws.com' }, Action: 'sts:AssumeRole' }],
69
+ });
70
+ static BASIC_EXECUTION = 'arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole';
71
+ name;
72
+ region;
73
+ credentials;
74
+ constructor(context, io = DEFAULT_IO) {
75
+ this.context = context;
76
+ this.io = io;
77
+ const { options, env, root } = context;
78
+ this.name = CloudNames.functionName(root, options.name, 64);
79
+ this.region = options.region ?? env.AWS_REGION ?? env.AWS_DEFAULT_REGION ?? 'us-east-1';
80
+ this.credentials = CloudCredentials.aws(env);
81
+ }
82
+ get configuration() {
83
+ const { options } = this.context;
84
+ return {
85
+ Runtime: options.runtime ?? LambdaPreset.RUNTIMES[0],
86
+ Handler: LambdaPreset.HANDLER,
87
+ MemorySize: options.memory ?? 1024,
88
+ Timeout: options.timeout ?? 30,
89
+ Environment: { Variables: { NODE_ENV: 'production', ...(options.env ?? {}) } },
90
+ };
91
+ }
92
+ async plan() {
93
+ this.checkOutput();
94
+ const code = CodePackage.of(this.context.outDir);
95
+ let fn;
96
+ let url;
97
+ if (this.credentials) {
98
+ const client = new AwsClient(this.region, this.credentials, this.io);
99
+ fn = Boolean(await this.optional(() => client.lambda('GET', `/2015-03-31/functions/${this.name}`), 'GetFunction'));
100
+ url = fn && Boolean(await this.optional(() => client.lambda('GET', `/2021-10-31/functions/${this.name}/url`), 'GetFunctionUrlConfig'));
101
+ }
102
+ else {
103
+ this.context.warn(`No AWS credentials (${LambdaDeployment.CREDENTIALS}, or ~/.aws/credentials): the plan does not say whether the function exists.`);
104
+ }
105
+ const action = (found) => (found === undefined ? 'deploy' : found ? 'update' : 'create');
106
+ const { Environment: _env, ...settings } = this.configuration;
107
+ return {
108
+ deployer: 'lambda',
109
+ resources: [
110
+ ...(this.context.options.role
111
+ ? []
112
+ : [
113
+ {
114
+ type: 'iam-role',
115
+ name: LambdaDeployment.ROLE,
116
+ action: 'deploy',
117
+ details: { policy: 'AWSLambdaBasicExecutionRole' },
118
+ },
119
+ ]),
120
+ { type: 'function', name: this.name, action: action(fn), details: { region: this.region, ...settings, package: code.describe() } },
121
+ ...(url ? [] : [{ type: 'function-url', name: this.name, action: action(url), details: { authType: 'NONE' } }]),
122
+ ],
123
+ details: { region: this.region, credentials: this.credentials ? 'AWS' : 'missing' },
124
+ };
125
+ }
126
+ async apply() {
127
+ this.checkOutput();
128
+ if (!this.credentials) {
129
+ throw CloudCredentials.missing('AWS', LambdaDeployment.CREDENTIALS, ', or a profile in ~/.aws/credentials (AWS_PROFILE)');
130
+ }
131
+ const client = new AwsClient(this.region, this.credentials, this.io);
132
+ const code = CodePackage.of(this.context.outDir);
133
+ code.checkSize(LambdaDeployment.MAX_PACKAGE, 'Lambda', 'Keep large packages out of the server bundle and the output directory.');
134
+ const path = `/2015-03-31/functions/${this.name}`;
135
+ if (await this.optional(() => client.lambda('GET', path), 'GetFunction')) {
136
+ this.context.info(`Updating function ${this.name} in ${this.region} (${code.describe()})…`);
137
+ await this.waitReady(client);
138
+ await this.step('UpdateFunctionCode', () => client.lambda('PUT', `${path}/code`, { ZipFile: code.base64 }));
139
+ await this.waitReady(client);
140
+ await this.step('UpdateFunctionConfiguration', () => client.lambda('PUT', `${path}/configuration`, this.configuration));
141
+ }
142
+ else {
143
+ const role = this.context.options.role ?? (await this.executionRole(client));
144
+ this.context.info(`Creating function ${this.name} in ${this.region} (${code.describe()})…`);
145
+ await this.createFunction(client, {
146
+ FunctionName: this.name,
147
+ Role: role,
148
+ Code: { ZipFile: code.base64 },
149
+ ...this.configuration,
150
+ ...this.architecture,
151
+ });
152
+ }
153
+ await this.waitReady(client);
154
+ let url = (await this.optional(() => client.lambda('GET', `/2021-10-31/functions/${this.name}/url`), 'GetFunctionUrlConfig'))?.FunctionUrl;
155
+ if (!url) {
156
+ this.context.info('Creating the function URL…');
157
+ url = (await this.step('CreateFunctionUrlConfig', () => client.lambda('POST', `/2021-10-31/functions/${this.name}/url`, { AuthType: 'NONE' })))
158
+ .FunctionUrl;
159
+ // Public function URLs need both permissions (since October 2025).
160
+ await this.permission(client, {
161
+ StatementId: 'cell-function-url',
162
+ Action: 'lambda:InvokeFunctionUrl',
163
+ Principal: '*',
164
+ FunctionUrlAuthType: 'NONE',
165
+ });
166
+ await this.permission(client, {
167
+ StatementId: 'cell-function-url-invoke',
168
+ Action: 'lambda:InvokeFunction',
169
+ Principal: '*',
170
+ InvokedViaFunctionUrl: true,
171
+ });
172
+ }
173
+ return { url, details: { region: this.region, function: this.name } };
174
+ }
175
+ get architecture() {
176
+ const architecture = this.context.options.architecture;
177
+ return architecture ? { Architectures: [architecture] } : {};
178
+ }
179
+ /** The role Lambda runs the function with: `cell-lambda-execution`, created with the basic execution policy if missing. */
180
+ async executionRole(client) {
181
+ try {
182
+ return AwsClient.tag(await client.iam({ Action: 'GetRole', RoleName: LambdaDeployment.ROLE }), 'Arn');
183
+ }
184
+ catch (error) {
185
+ if (!(error instanceof CloudApiError) || error.code !== 'NoSuchEntity') {
186
+ throw error instanceof CloudApiError
187
+ ? CloudApi.failure('IAM', 'GetRole', error, 'Allow the credentials iam:GetRole, iam:CreateRole and iam:AttachRolePolicy, or set lambda.role in cell.config.ts to an existing role ARN.')
188
+ : error;
189
+ }
190
+ }
191
+ this.context.info(`Creating IAM role ${LambdaDeployment.ROLE}…`);
192
+ const arn = await this.step('CreateRole', async () => AwsClient.tag(await client.iam({
193
+ Action: 'CreateRole',
194
+ RoleName: LambdaDeployment.ROLE,
195
+ AssumeRolePolicyDocument: LambdaDeployment.ASSUME_ROLE,
196
+ Description: 'Created by Cell for Lambda functions',
197
+ }), 'Arn'));
198
+ await this.step('AttachRolePolicy', () => client.iam({ Action: 'AttachRolePolicy', RoleName: LambdaDeployment.ROLE, PolicyArn: LambdaDeployment.BASIC_EXECUTION }));
199
+ return arn;
200
+ }
201
+ /** A new role takes a few seconds before Lambda may assume it. */
202
+ async createFunction(client, body) {
203
+ for (let attempt = 1;; attempt++) {
204
+ try {
205
+ await client.lambda('POST', '/2015-03-31/functions', body);
206
+ return;
207
+ }
208
+ catch (error) {
209
+ const roleNotReady = error instanceof CloudApiError && error.code === 'InvalidParameterValueException' && /role/i.test(error.message);
210
+ if (!roleNotReady || attempt >= 10) {
211
+ throw error instanceof CloudApiError ? CloudApi.failure('Lambda', 'CreateFunction', error) : error;
212
+ }
213
+ await this.io.sleep(3000);
214
+ }
215
+ }
216
+ }
217
+ async permission(client, statement) {
218
+ try {
219
+ await client.lambda('POST', `/2015-03-31/functions/${this.name}/policy`, statement);
220
+ }
221
+ catch (error) {
222
+ if (!(error instanceof CloudApiError && error.code === 'ResourceConflictException')) {
223
+ throw error instanceof CloudApiError ? CloudApi.failure('Lambda', 'AddPermission', error) : error;
224
+ }
225
+ }
226
+ }
227
+ async waitReady(client) {
228
+ const config = await CloudApi.poll(this.io, () => this.step('GetFunctionConfiguration', () => client.lambda('GET', `/2015-03-31/functions/${this.name}/configuration`)), c => c.State !== 'Pending' && c.LastUpdateStatus !== 'InProgress', `function ${this.name} to become active`);
229
+ if (config.State === 'Failed' || config.LastUpdateStatus === 'Failed') {
230
+ throw new CellError({
231
+ code: 'CELL_DEPLOY_FAILED',
232
+ message: `Function ${this.name} failed: ${config.StateReason ?? config.LastUpdateStatusReason ?? 'no reason given'}`,
233
+ hint: 'Look at the function in the Lambda console; fix the reported problem and deploy again.',
234
+ });
235
+ }
236
+ }
237
+ async optional(call, step) {
238
+ try {
239
+ return await call();
240
+ }
241
+ catch (error) {
242
+ if (error instanceof CloudApiError && error.status === 404) {
243
+ return undefined;
244
+ }
245
+ throw error instanceof CloudApiError ? CloudApi.failure('Lambda', step, error) : error;
246
+ }
247
+ }
248
+ checkOutput() {
249
+ if (this.context.manifest.preset !== 'lambda') {
250
+ throw new CellError({
251
+ code: 'CELL_DEPLOY_OUTPUT_MISMATCH',
252
+ message: `${this.context.outDir} has no output of the lambda preset (built with: ${this.context.manifest.preset ?? 'no preset'}).`,
253
+ hint: 'Run cell deploy --preset lambda without --skip-build, or cell build --preset lambda first.',
254
+ });
255
+ }
256
+ }
257
+ async step(name, call) {
258
+ try {
259
+ return await call();
260
+ }
261
+ catch (error) {
262
+ throw error instanceof CloudApiError
263
+ ? CloudApi.failure(name === 'CreateRole' || name === 'AttachRolePolicy' ? 'IAM' : 'Lambda', name, error)
264
+ : error;
265
+ }
266
+ }
267
+ }
268
+ export const lambdaDeployer = defineDeployer({
269
+ name: 'lambda',
270
+ description: 'AWS Lambda with a function URL through the AWS API (AWS_ACCESS_KEY_ID / ~/.aws/credentials)',
271
+ plan: context => new LambdaDeployment(context).plan(),
272
+ apply: context => new LambdaDeployment(context).apply(),
273
+ });
274
+ //# sourceMappingURL=lambda-deployer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda-deployer.js","sourceRoot":"","sources":["../../../src/preset/lambda/lambda-deployer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { type PresetOutputContext } from '@celljs/kit';
2
+ /**
3
+ * AWS Lambda (Node.js runtime) behind a function URL: `server/lambda.mjs` starts the Cell server
4
+ * during the init phase and turns each HTTP event into a request to it.
5
+ */
6
+ export declare namespace LambdaPreset {
7
+ const HANDLER_FILE = "server/lambda.mjs";
8
+ const HANDLER = "server/lambda.handler";
9
+ const RUNTIMES: readonly ['nodejs22.x', 'nodejs20.x'];
10
+ const OPTIONS: import("@celljs/kit").StandardSchema<unknown>;
11
+ function output(context: PresetOutputContext): void;
12
+ }
13
+ export declare const lambdaPreset: import("@celljs/kit").Preset;
14
+ //# sourceMappingURL=lambda-preset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda-preset.d.ts","sourceRoot":"","sources":["../../../src/preset/lambda/lambda-preset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIrE;;;GAGG;AACH,yBAAiB,YAAY,CAAC;IACnB,MAAM,YAAY,sBAAsB,CAAC;IACzC,MAAM,OAAO,0BAA0B,CAAC;IACxC,MAAM,QAAQ,YAAI,YAAY,EAAE,YAAY,CAAU,CAAC;IAEvD,MAAM,OAAO,+CASlB,CAAC;IAEH,SAAgB,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CASzD;CACJ;AAED,eAAO,MAAM,YAAY,8BAQvB,CAAC"}
@@ -0,0 +1,44 @@
1
+ import { definePreset } from '@celljs/kit';
2
+ import { PresetOptionsSchema } from '../../deploy/cloud-api.js';
3
+ import { ServerlessScripts } from '../serverless-scripts.js';
4
+ /**
5
+ * AWS Lambda (Node.js runtime) behind a function URL: `server/lambda.mjs` starts the Cell server
6
+ * during the init phase and turns each HTTP event into a request to it.
7
+ */
8
+ export var LambdaPreset;
9
+ (function (LambdaPreset) {
10
+ LambdaPreset.HANDLER_FILE = 'server/lambda.mjs';
11
+ LambdaPreset.HANDLER = 'server/lambda.handler';
12
+ LambdaPreset.RUNTIMES = ['nodejs22.x', 'nodejs20.x'];
13
+ LambdaPreset.OPTIONS = PresetOptionsSchema.of({
14
+ name: 'string',
15
+ region: 'string',
16
+ runtime: LambdaPreset.RUNTIMES,
17
+ architecture: ['x86_64', 'arm64'],
18
+ memory: 'number',
19
+ timeout: 'number',
20
+ role: 'string',
21
+ env: 'env',
22
+ });
23
+ function output(context) {
24
+ if (!context.manifest.server) {
25
+ context.warn('The lambda preset deploys a server, but the project builds no backend.');
26
+ return;
27
+ }
28
+ if (context.manifest.server !== 'server/index.mjs') {
29
+ context.warn(`The lambda handler imports server/index.mjs, but the server bundle is ${context.manifest.server}.`);
30
+ }
31
+ context.write(LambdaPreset.HANDLER_FILE, ServerlessScripts.LAMBDA_HANDLER);
32
+ }
33
+ LambdaPreset.output = output;
34
+ })(LambdaPreset || (LambdaPreset = {}));
35
+ export const lambdaPreset = definePreset({
36
+ name: 'lambda',
37
+ description: 'AWS Lambda with a function URL',
38
+ entry: 'http',
39
+ format: 'esm',
40
+ options: LambdaPreset.OPTIONS,
41
+ output: context => LambdaPreset.output(context),
42
+ deployer: 'lambda',
43
+ });
44
+ //# sourceMappingURL=lambda-preset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lambda-preset.js","sourceRoot":"","sources":["../../../src/preset/lambda/lambda-preset.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAA4B,MAAM,aAAa,CAAC;AACrE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAE7D;;;GAGG;AACH,MAAM,KAAW,YAAY,CA0B5B;AA1BD,WAAiB,YAAY;IACZ,yBAAY,GAAG,mBAAmB,CAAC;IACnC,oBAAO,GAAG,uBAAuB,CAAC;IAClC,qBAAQ,GAAG,CAAC,YAAY,EAAE,YAAY,CAAU,CAAC;IAEjD,oBAAO,GAAG,mBAAmB,CAAC,EAAE,CAAC;QAC1C,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,qBAAQ;QACjB,YAAY,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC;QACjC,MAAM,EAAE,QAAQ;QAChB,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE,QAAQ;QACd,GAAG,EAAE,KAAK;KACb,CAAC,CAAC;IAEH,SAAgB,MAAM,CAAC,OAA4B;QAC/C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YAC3B,OAAO,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;YACvF,OAAO;QACX,CAAC;QACD,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,KAAK,kBAAkB,EAAE,CAAC;YACjD,OAAO,CAAC,IAAI,CAAC,yEAAyE,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QACtH,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,yBAAY,EAAE,iBAAiB,CAAC,cAAc,CAAC,CAAC;IAClE,CAAC;IATe,aAAA,MAAM,SASrB,CAAA;AACL,CAAC,EA1BgB,YAAY,KAAZ,YAAY,QA0B5B;AAED,MAAM,CAAC,MAAM,YAAY,GAAG,YAAY,CAAC;IACrC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,gCAAgC;IAC7C,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,KAAK;IACb,OAAO,EAAE,YAAY,CAAC,OAAO;IAC7B,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC;IAC/C,QAAQ,EAAE,QAAQ;CACrB,CAAC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { type OutputManifest, type Preset, type ProjectModel } from '@celljs/kit';
2
+ export interface PresetOutputOptions {
3
+ root: string;
4
+ /** Absolute output directory. */
5
+ outDir: string;
6
+ project: ProjectModel;
7
+ env: NodeJS.ProcessEnv;
8
+ /** The preset's field of cell.config.ts. */
9
+ options?: Record<string, unknown>;
10
+ warn(message: string): void;
11
+ }
12
+ /** Reads and writes `manifest.json` of an output, and lets the preset add its files around the bundles. */
13
+ export declare namespace PresetOutput {
14
+ const MANIFEST = "manifest.json";
15
+ function read(outDir: string): OutputManifest;
16
+ /** Runs `preset.output` on a fresh build; files it writes are listed in `manifest.files`. */
17
+ function write(preset: Preset, options: PresetOutputOptions): Promise<OutputManifest>;
18
+ }
19
+ //# sourceMappingURL=preset-output.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset-output.d.ts","sourceRoot":"","sources":["../../src/preset/preset-output.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,KAAK,cAAc,EAAE,KAAK,MAAM,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAE7F,MAAM,WAAW,mBAAmB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,YAAY,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,4CAA4C;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,2GAA2G;AAC3G,yBAAiB,YAAY,CAAC;IACnB,MAAM,QAAQ,kBAAkB,CAAC;IAExC,SAAgB,IAAI,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CAMnD;IAED,6FAA6F;IAC7F,SAAsB,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyBjG;CACJ"}
@@ -0,0 +1,45 @@
1
+ import { chmodSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
2
+ import { dirname, join } from 'node:path';
3
+ import { CellError } from '@celljs/kit';
4
+ /** Reads and writes `manifest.json` of an output, and lets the preset add its files around the bundles. */
5
+ export var PresetOutput;
6
+ (function (PresetOutput) {
7
+ PresetOutput.MANIFEST = 'manifest.json';
8
+ function read(outDir) {
9
+ const file = join(outDir, PresetOutput.MANIFEST);
10
+ if (!existsSync(file)) {
11
+ throw new CellError({ code: 'CELL_OUTPUT_NOT_FOUND', message: `No build output in ${outDir}.`, file, hint: 'Run `cell build` first.' });
12
+ }
13
+ return JSON.parse(readFileSync(file, 'utf8'));
14
+ }
15
+ PresetOutput.read = read;
16
+ /** Runs `preset.output` on a fresh build; files it writes are listed in `manifest.files`. */
17
+ async function write(preset, options) {
18
+ const manifest = read(options.outDir);
19
+ if (!preset.output) {
20
+ return manifest;
21
+ }
22
+ const files = new Set(manifest.files ?? []);
23
+ await preset.output({
24
+ ...options,
25
+ options: options.options ?? {},
26
+ manifest,
27
+ write: (path, content, mode) => {
28
+ const file = join(options.outDir, path);
29
+ mkdirSync(dirname(file), { recursive: true });
30
+ writeFileSync(file, content);
31
+ if (mode !== undefined) {
32
+ chmodSync(file, mode);
33
+ }
34
+ files.add(path.replace(/\\/g, '/'));
35
+ },
36
+ });
37
+ if (files.size > 0) {
38
+ manifest.files = [...files].sort();
39
+ }
40
+ writeFileSync(join(options.outDir, PresetOutput.MANIFEST), `${JSON.stringify(manifest, null, 2)}\n`);
41
+ return manifest;
42
+ }
43
+ PresetOutput.write = write;
44
+ })(PresetOutput || (PresetOutput = {}));
45
+ //# sourceMappingURL=preset-output.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset-output.js","sourceRoot":"","sources":["../../src/preset/preset-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAuD,MAAM,aAAa,CAAC;AAa7F,2GAA2G;AAC3G,MAAM,KAAW,YAAY,CAsC5B;AAtCD,WAAiB,YAAY;IACZ,qBAAQ,GAAG,eAAe,CAAC;IAExC,SAAgB,IAAI,CAAC,MAAc;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,qBAAQ,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,SAAS,CAAC,EAAE,IAAI,EAAE,uBAAuB,EAAE,OAAO,EAAE,sBAAsB,MAAM,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;QAC5I,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAmB,CAAC;IACpE,CAAC;IANe,aAAA,IAAI,OAMnB,CAAA;IAED,6FAA6F;IACtF,KAAK,UAAU,KAAK,CAAC,MAAc,EAAE,OAA4B;QACpE,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACjB,OAAO,QAAQ,CAAC;QACpB,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,MAAM,CAAC,MAAM,CAAC;YAChB,GAAG,OAAO;YACV,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;YAC9B,QAAQ;YACR,KAAK,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE;gBAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;gBACxC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC9C,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAC7B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;oBACrB,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAC1B,CAAC;gBACD,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;YACxC,CAAC;SACJ,CAAC,CAAC;QACH,IAAI,KAAK,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;YACjB,QAAQ,CAAC,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;QACvC,CAAC;QACD,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,qBAAQ,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QACxF,OAAO,QAAQ,CAAC;IACpB,CAAC;IAzBqB,aAAA,KAAK,QAyB1B,CAAA;AACL,CAAC,EAtCgB,YAAY,KAAZ,YAAY,QAsC5B"}
@@ -0,0 +1,16 @@
1
+ import { CellError, type Preset } from '@celljs/kit';
2
+ import type { PresetDetector } from '../config/config-resolver.js';
3
+ /** Presets by name. Built-in ones are registered first; toolchain modules may add more. */
4
+ export declare class PresetRegistry {
5
+ protected readonly presets: Map<string, Preset>;
6
+ register(preset: Preset): this;
7
+ get names(): string[];
8
+ /** Every registered preset, as registered (without its `extends` chain). */
9
+ get all(): Preset[];
10
+ /** Presets that recognise a CI platform, for {@link ConfigResolver}. */
11
+ get detectors(): PresetDetector[];
12
+ /** The preset with the fields of its `extends` chain filled in. */
13
+ resolve(name: string, file?: string): Preset;
14
+ protected notFound(name: string, file?: string): CellError;
15
+ }
16
+ //# sourceMappingURL=preset-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset-registry.d.ts","sourceRoot":"","sources":["../../src/preset/preset-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAGnE,2FAA2F;AAC3F,qBAAa,cAAc;IACvB,SAAS,CAAC,QAAQ,CAAC,OAAO,sBAA6B;IAEvD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAU7B;IAED,IAAI,KAAK,IAAI,MAAM,EAAE,CAEpB;IAED,4EAA4E;IAC5E,IAAI,GAAG,IAAI,MAAM,EAAE,CAElB;IAED,wEAAwE;IACxE,IAAI,SAAS,IAAI,cAAc,EAAE,CAEhC;IAED,mEAAmE;IACnE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAkB3C;IAED,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAQzD;CACJ"}
@@ -0,0 +1,58 @@
1
+ import { CellError } from '@celljs/kit';
2
+ import { TextUtil } from '../utils/text-util.js';
3
+ /** Presets by name. Built-in ones are registered first; toolchain modules may add more. */
4
+ export class PresetRegistry {
5
+ presets = new Map();
6
+ register(preset) {
7
+ if (this.presets.has(preset.name)) {
8
+ throw new CellError({
9
+ code: 'CELL_PRESET_DUPLICATE',
10
+ message: `Preset '${preset.name}' is registered twice.`,
11
+ hint: 'Give the preset another name, or extend the existing one with `extends`.',
12
+ });
13
+ }
14
+ this.presets.set(preset.name, preset);
15
+ return this;
16
+ }
17
+ get names() {
18
+ return [...this.presets.keys()];
19
+ }
20
+ /** Every registered preset, as registered (without its `extends` chain). */
21
+ get all() {
22
+ return [...this.presets.values()];
23
+ }
24
+ /** Presets that recognise a CI platform, for {@link ConfigResolver}. */
25
+ get detectors() {
26
+ return [...this.presets.values()].flatMap(({ name, detect }) => (detect ? [{ name, detect }] : []));
27
+ }
28
+ /** The preset with the fields of its `extends` chain filled in. */
29
+ resolve(name, file) {
30
+ const chain = [];
31
+ for (let current = name; current !== undefined; current = chain[chain.length - 1].extends) {
32
+ const preset = this.presets.get(current);
33
+ if (!preset) {
34
+ throw this.notFound(current, file);
35
+ }
36
+ if (chain.includes(preset)) {
37
+ throw new CellError({
38
+ code: 'CELL_PRESET_CYCLE',
39
+ message: `Preset '${name}' extends itself: ${[...chain.map(p => p.name), current].join(' → ')}.`,
40
+ hint: 'Remove the cycle from the `extends` fields.',
41
+ });
42
+ }
43
+ chain.push(preset);
44
+ }
45
+ const { detect: _detect, extends: _extends, ...merged } = Object.assign({}, ...chain.reverse());
46
+ return { ...merged, name };
47
+ }
48
+ notFound(name, file) {
49
+ const suggestion = TextUtil.closest(name, this.names);
50
+ return new CellError({
51
+ code: 'CELL_PRESET_NOT_FOUND',
52
+ message: `Unknown preset '${name}'. Available: ${this.names.join(', ')}.`,
53
+ file,
54
+ hint: suggestion ? `Did you mean '${suggestion}'?` : 'Use one of the available presets, or add the module that provides it.',
55
+ });
56
+ }
57
+ }
58
+ //# sourceMappingURL=preset-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset-registry.js","sourceRoot":"","sources":["../../src/preset/preset-registry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=preset-registry.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset-registry.spec.d.ts","sourceRoot":"","sources":["../../src/preset/preset-registry.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,28 @@
1
+ import { describe, expect, it } from 'bun:test';
2
+ import { PresetRegistry } from './preset-registry.js';
3
+ describe('PresetRegistry', () => {
4
+ const registry = () => new PresetRegistry()
5
+ .register({ name: 'node', entry: 'http', format: 'esm', description: 'Node.js' })
6
+ .register({ name: 'fc', extends: 'node', format: 'cjs', detect: env => env.FC_FUNC_CODE_PATH !== undefined })
7
+ .register({ name: 'fc-event', extends: 'fc', entry: 'event' });
8
+ it('fills in fields along the extends chain', () => {
9
+ expect(registry().resolve('fc-event')).toEqual({ name: 'fc-event', entry: 'event', format: 'cjs', description: 'Node.js' });
10
+ expect(registry().resolve('node')).toEqual({ name: 'node', entry: 'http', format: 'esm', description: 'Node.js' });
11
+ });
12
+ it('lists the presets that detect a CI platform', () => {
13
+ const [fc] = registry().detectors;
14
+ expect(fc.name).toBe('fc');
15
+ expect(fc.detect({ FC_FUNC_CODE_PATH: '/code' })).toBe(true);
16
+ expect(registry().detectors).toHaveLength(1);
17
+ });
18
+ it('reports unknown presets with a suggestion and the config file', () => {
19
+ expect(() => registry().resolve('nod', '/app/cell.config.ts')).toThrow(expect.objectContaining({ code: 'CELL_PRESET_NOT_FOUND', hint: "Did you mean 'node'?", file: '/app/cell.config.ts' }));
20
+ expect(() => new PresetRegistry().register({ name: 'a', extends: 'missing' }).resolve('a')).toThrow(expect.objectContaining({ code: 'CELL_PRESET_NOT_FOUND' }));
21
+ });
22
+ it('rejects duplicates and cycles', () => {
23
+ expect(() => registry().register({ name: 'node' })).toThrow(expect.objectContaining({ code: 'CELL_PRESET_DUPLICATE' }));
24
+ const cyclic = new PresetRegistry().register({ name: 'a', extends: 'b' }).register({ name: 'b', extends: 'a' });
25
+ expect(() => cyclic.resolve('a')).toThrow(expect.objectContaining({ code: 'CELL_PRESET_CYCLE' }));
26
+ });
27
+ });
28
+ //# sourceMappingURL=preset-registry.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset-registry.spec.js","sourceRoot":"","sources":["../../src/preset/preset-registry.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import { type DeployContext, type Deployment, type DeployPlan } from '@celljs/kit';
2
+ import { CloudCredentials, type CloudIo } from '../../deploy/cloud-api.js';
3
+ import { ScfPreset } from './scf-preset.js';
4
+ type Credentials = NonNullable<ReturnType<typeof CloudCredentials.tencent>>;
5
+ /** Tencent Cloud API 3.0 calls of SCF (version 2018-04-16). */
6
+ export declare class ScfClient {
7
+ readonly region: string;
8
+ protected readonly credentials: Credentials;
9
+ protected readonly io: CloudIo;
10
+ static readonly HOST = "scf.tencentcloudapi.com";
11
+ static readonly VERSION = "2018-04-16";
12
+ constructor(region: string, credentials: Credentials, io?: CloudIo);
13
+ call<T = Record<string, any>>(action: string, params: Record<string, unknown>): Promise<T>;
14
+ getFunction(name: string, namespace: string): Promise<Record<string, any> | undefined>;
15
+ }
16
+ /**
17
+ * Deploys the output of the scf preset with the SCF API: a web function (Type HTTP) with the output
18
+ * directory as code, and a public function URL without authentication. Credentials:
19
+ * TENCENTCLOUD_SECRET_ID / TENCENTCLOUD_SECRET_KEY (/ TENCENTCLOUD_SESSION_TOKEN).
20
+ */
21
+ export declare class ScfDeployment {
22
+ protected readonly context: DeployContext;
23
+ protected readonly io: CloudIo;
24
+ /** ZipFile of the API: base64 of at most 20 MB. */
25
+ static readonly MAX_PACKAGE: number;
26
+ static readonly CREDENTIALS = "TENCENTCLOUD_SECRET_ID and TENCENTCLOUD_SECRET_KEY";
27
+ static readonly TRIGGER = "cell-url";
28
+ readonly name: string;
29
+ readonly region: string;
30
+ readonly namespace: string;
31
+ protected readonly credentials?: Credentials;
32
+ constructor(context: DeployContext, io?: CloudIo);
33
+ get runtime(): ScfPreset.Runtime;
34
+ get settings(): {
35
+ MemorySize: number;
36
+ Timeout: number;
37
+ Environment: {
38
+ Variables: {
39
+ Key: string;
40
+ Value: string;
41
+ }[];
42
+ };
43
+ };
44
+ plan(): Promise<DeployPlan>;
45
+ apply(): Promise<Deployment>;
46
+ /** The public URL of the function URL trigger: '' when there is one without a URL yet, undefined when there is none. */
47
+ protected urlTrigger(client: ScfClient): Promise<string | undefined>;
48
+ protected waitActive(client: ScfClient): Promise<void>;
49
+ protected checkOutput(): void;
50
+ protected step<T>(name: string, call: () => Promise<T>): Promise<T>;
51
+ }
52
+ export declare const scfDeployer: import("@celljs/kit").Deployer;
53
+ export {};
54
+ //# sourceMappingURL=scf-deployer.d.ts.map