@celljs/cli 3.9.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 -76
  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 -76
  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 -76
  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 -76
  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 -77
  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 -76
  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 -76
  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 -76
  641. package/templates/microservice/examples/backend-app/README.md +0 -76
  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 -76
  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 -76
  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 -76
  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 -76
  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 -76
  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 -76
  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,48 @@
1
+ import { CellError, type ProjectModel, type Target } from '@celljs/kit';
2
+ /** A configuration file that sets the key, in merge order (the last one wins). */
3
+ export interface ConfigLayer {
4
+ /** Relative to the project root. */
5
+ file: string;
6
+ component: string;
7
+ /** `shared`: top level of the file; `frontend` / `backend`: the target's section. */
8
+ section: 'shared' | Target;
9
+ value: unknown;
10
+ }
11
+ /** The result of `cell config get`. */
12
+ export interface ConfigValue {
13
+ key: string;
14
+ target: Target;
15
+ value: unknown;
16
+ /** Files that set the key or a part of it, in merge order (the last wins): shared parts of all files, then the target sections. */
17
+ layers: ConfigLayer[];
18
+ /** `CELL_<TARGET>__*` variables that set the key or a part of it. */
19
+ env: {
20
+ variable: string;
21
+ path: string;
22
+ }[];
23
+ /** Backend values keep `${...}` expressions; the server evaluates them at startup. */
24
+ expressions: boolean;
25
+ }
26
+ /**
27
+ * Looks up one key of the merged application configuration of a target and says where it came
28
+ * from: which cell*.yml files set it (shared or target section) and which environment variables.
29
+ */
30
+ export declare class ConfigExplainer {
31
+ protected readonly model: ProjectModel;
32
+ protected readonly env: Record<string, string | undefined>;
33
+ constructor(model: ProjectModel, env: Record<string, string | undefined>);
34
+ /** `cell.server.port`, `items[0].name` and `items.0.name` all work. */
35
+ static parseKey(key: string): string[];
36
+ defaultTarget(): Target;
37
+ explain(key: string, target?: Target): ConfigValue;
38
+ /** Shared layers of every file first, then the target sections: how ConfigLoader.forTarget merges. */
39
+ protected layers(path: string[], target: Target): ConfigLayer[];
40
+ protected notFound(key: string, path: string[], config: Record<string, unknown>, target: Target): CellError;
41
+ static lookup(root: unknown, path: string[]): {
42
+ found: boolean;
43
+ value?: unknown;
44
+ };
45
+ /** One path is a prefix of the other: the variable sets the key, a part of it, or an object around it. */
46
+ protected static overlaps(a: string[], b: string[]): boolean;
47
+ }
48
+ //# sourceMappingURL=config-explainer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-explainer.d.ts","sourceRoot":"","sources":["../../src/config/config-explainer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAKxE,kFAAkF;AAClF,MAAM,WAAW,WAAW;IACxB,oCAAoC;IACpC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC3B,KAAK,EAAE,OAAO,CAAC;CAClB;AAED,uCAAuC;AACvC,MAAM,WAAW,WAAW;IACxB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,mIAAmI;IACnI,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,qEAAqE;IACrE,GAAG,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,sFAAsF;IACtF,WAAW,EAAE,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,qBAAa,eAAe;IAEpB,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,YAAY;IACtC,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAF9D,YACuB,KAAK,EAAE,YAAY,EACnB,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,EAC1D;IAEJ,uEAAuE;IACvE,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAarC;IAED,aAAa,IAAI,MAAM,CAEtB;IAED,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,GAAE,MAA6B,GAAG,WAAW,CA4BvE;IAED,sGAAsG;IACtG,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,EAAE,CAuB9D;IAED,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,EAAE,MAAM,GAAG,SAAS,CAuB1G;IAED,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,CAShF;IAED,0GAA0G;IAC1G,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,EAAE,GAAG,OAAO,CAG3D;CACJ"}
@@ -0,0 +1,130 @@
1
+ import { readFileSync } from 'node:fs';
2
+ import { relative } from 'node:path';
3
+ import { CellError } from '@celljs/kit';
4
+ import { EnvOverrides, TOOLING_KEYS } from '@celljs/vite';
5
+ import yaml from 'js-yaml';
6
+ import { TextUtil } from '../utils/text-util.js';
7
+ /**
8
+ * Looks up one key of the merged application configuration of a target and says where it came
9
+ * from: which cell*.yml files set it (shared or target section) and which environment variables.
10
+ */
11
+ export class ConfigExplainer {
12
+ model;
13
+ env;
14
+ constructor(model, env) {
15
+ this.model = model;
16
+ this.env = env;
17
+ }
18
+ /** `cell.server.port`, `items[0].name` and `items.0.name` all work. */
19
+ static parseKey(key) {
20
+ const parts = key
21
+ .replace(/\[(\d+)\]/g, '.$1')
22
+ .split('.')
23
+ .filter(part => part !== '');
24
+ if (parts.length === 0) {
25
+ throw new CellError({
26
+ code: 'CELL_ARGUMENT_INVALID',
27
+ message: `Invalid configuration key '${key}'.`,
28
+ hint: 'Pass a dotted key, e.g. cell.server.port.',
29
+ });
30
+ }
31
+ return parts;
32
+ }
33
+ defaultTarget() {
34
+ return this.model.backend ? 'backend' : 'frontend';
35
+ }
36
+ explain(key, target = this.defaultTarget()) {
37
+ const model = this.model[target];
38
+ if (!model) {
39
+ throw new CellError({
40
+ code: 'CELL_ARGUMENT_INVALID',
41
+ message: `The project has no ${target} target.`,
42
+ hint: `Its targets: ${this.model.targets.join(', ')}.`,
43
+ });
44
+ }
45
+ const path = ConfigExplainer.parseKey(key);
46
+ const config = structuredClone(model.config);
47
+ // The frontend model has its variables applied already; the server applies the backend ones at startup.
48
+ const report = target === 'backend' ? new EnvOverrides(this.model.root, this.env).apply('backend', config) : model.envOverrides;
49
+ const found = ConfigExplainer.lookup(config, path);
50
+ if (!found.found) {
51
+ throw this.notFound(key, path, config, target);
52
+ }
53
+ const env = report.applied
54
+ .filter(({ path: set }) => ConfigExplainer.overlaps(ConfigExplainer.parseKey(set), path))
55
+ .map(({ variable, path: set }) => ({ variable, path: set }));
56
+ return {
57
+ key: path.join('.'),
58
+ target,
59
+ value: found.value,
60
+ layers: this.layers(path, target),
61
+ env,
62
+ expressions: target === 'backend' && JSON.stringify(found.value ?? null).includes('${'),
63
+ };
64
+ }
65
+ /** Shared layers of every file first, then the target sections: how ConfigLoader.forTarget merges. */
66
+ layers(path, target) {
67
+ const shared = [];
68
+ const sections = [];
69
+ for (const component of this.model.components) {
70
+ for (const file of component.configFiles) {
71
+ const doc = (yaml.load(readFileSync(file, 'utf8')) ?? {});
72
+ const layer = (section, value) => ({
73
+ file: relative(this.model.root, file) || file,
74
+ component: component.name,
75
+ section,
76
+ value,
77
+ });
78
+ const inShared = TOOLING_KEYS.includes(path[0]) ? { found: false } : ConfigExplainer.lookup(doc, path);
79
+ if (inShared.found) {
80
+ shared.push(layer('shared', inShared.value));
81
+ }
82
+ const inSection = ConfigExplainer.lookup(doc[target], path);
83
+ if (inSection.found) {
84
+ sections.push(layer(target, inSection.value));
85
+ }
86
+ }
87
+ }
88
+ return [...shared, ...sections];
89
+ }
90
+ notFound(key, path, config, target) {
91
+ let parent = config;
92
+ let depth = 0;
93
+ for (; depth < path.length - 1; depth++) {
94
+ const next = ConfigExplainer.lookup(parent, [path[depth]]);
95
+ if (!next.found || typeof next.value !== 'object' || next.value === null) {
96
+ break;
97
+ }
98
+ parent = next.value;
99
+ }
100
+ const keys = typeof parent === 'object' && parent !== null ? Object.keys(parent) : [];
101
+ const missing = path[depth];
102
+ const suggestion = TextUtil.closest(missing, keys);
103
+ const where = depth === 0 ? 'the top level' : path.slice(0, depth).join('.');
104
+ return new CellError({
105
+ code: 'CELL_CONFIG_KEY_NOT_FOUND',
106
+ message: `No key '${key}' in the ${target} configuration: '${missing}' is not under ${where}.`,
107
+ hint: suggestion
108
+ ? `Did you mean '${[...path.slice(0, depth), suggestion].join('.')}'?`
109
+ : keys.length > 0
110
+ ? `Keys under ${where}: ${keys.slice(0, 20).join(', ')}${keys.length > 20 ? ', ...' : ''}.`
111
+ : 'Set it in cell.yml, or run cell info --json --app-config for the whole configuration.',
112
+ });
113
+ }
114
+ static lookup(root, path) {
115
+ let value = root;
116
+ for (const part of path) {
117
+ if (typeof value !== 'object' || value === null || !Object.hasOwn(value, part)) {
118
+ return { found: false };
119
+ }
120
+ value = value[part];
121
+ }
122
+ return { found: true, value };
123
+ }
124
+ /** One path is a prefix of the other: the variable sets the key, a part of it, or an object around it. */
125
+ static overlaps(a, b) {
126
+ const n = Math.min(a.length, b.length);
127
+ return a.slice(0, n).every((part, i) => part.toLowerCase() === b[i].toLowerCase());
128
+ }
129
+ }
130
+ //# sourceMappingURL=config-explainer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-explainer.js","sourceRoot":"","sources":["../../src/config/config-explainer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { CellError } from '@celljs/kit';
2
+ import type { CellConfig } from './types.js';
3
+ export interface LoadedConfigFile {
4
+ file: string;
5
+ config: CellConfig;
6
+ /** The config file and the local files it imports; a change to any of them means reloading. */
7
+ dependencies: string[];
8
+ }
9
+ /**
10
+ * Finds and loads cell.config.{ts,mts,cts,js,mjs,cjs} with Vite's config loader (TypeScript needs no
11
+ * pre-compilation; packages it imports are loaded by Node), then validates the default export.
12
+ */
13
+ export declare class ConfigFileLoader {
14
+ protected readonly root: string;
15
+ static readonly FILE_NAMES: string[];
16
+ constructor(root: string);
17
+ /** The project's config file, or undefined when it has none. Two of them is an error: only one is read. */
18
+ find(): string | undefined;
19
+ load(): Promise<LoadedConfigFile | undefined>;
20
+ protected loadError(file: string, cause: unknown): CellError;
21
+ }
22
+ //# sourceMappingURL=config-file-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-file-loader.d.ts","sourceRoot":"","sources":["../../src/config/config-file-loader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,UAAU,CAAC;IACnB,+FAA+F;IAC/F,YAAY,EAAE,MAAM,EAAE,CAAC;CAC1B;AAOD;;;GAGG;AACH,qBAAa,gBAAgB;IAGb,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM;IAF3C,MAAM,CAAC,QAAQ,CAAC,UAAU,WAAoH;IAE9I,YAA+B,IAAI,EAAE,MAAM,EAAI;IAE/C,2GAA2G;IAC3G,IAAI,IAAI,MAAM,GAAG,SAAS,CAWzB;IAEK,IAAI,IAAI,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAclD;IAED,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,SAAS,CAgB3D;CACJ"}
@@ -0,0 +1,63 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { join, resolve } from 'node:path';
3
+ import { stripVTControlCharacters } from 'node:util';
4
+ import { CellError } from '@celljs/kit';
5
+ import { ConfigValidator } from './config-validator.js';
6
+ /**
7
+ * Finds and loads cell.config.{ts,mts,cts,js,mjs,cjs} with Vite's config loader (TypeScript needs no
8
+ * pre-compilation; packages it imports are loaded by Node), then validates the default export.
9
+ */
10
+ export class ConfigFileLoader {
11
+ root;
12
+ static FILE_NAMES = ['cell.config.ts', 'cell.config.mts', 'cell.config.cts', 'cell.config.js', 'cell.config.mjs', 'cell.config.cjs'];
13
+ constructor(root) {
14
+ this.root = root;
15
+ }
16
+ /** The project's config file, or undefined when it has none. Two of them is an error: only one is read. */
17
+ find() {
18
+ const files = ConfigFileLoader.FILE_NAMES.map(name => join(this.root, name)).filter(existsSync);
19
+ if (files.length > 1) {
20
+ throw new CellError({
21
+ code: 'CELL_CONFIG_AMBIGUOUS',
22
+ message: `Found ${files.length} config files: ${files.map(f => f.slice(this.root.length + 1)).join(', ')}.`,
23
+ file: files[1],
24
+ hint: 'Keep one cell.config file and delete the others.',
25
+ });
26
+ }
27
+ return files[0];
28
+ }
29
+ async load() {
30
+ const file = this.find();
31
+ if (!file) {
32
+ return undefined;
33
+ }
34
+ const { loadConfigFromFile } = await import('vite');
35
+ let loaded;
36
+ try {
37
+ loaded = await loadConfigFromFile({ command: 'build', mode: 'production' }, file, this.root, 'silent');
38
+ }
39
+ catch (cause) {
40
+ throw this.loadError(file, cause);
41
+ }
42
+ const config = new ConfigValidator(file, readFileSync(file, 'utf8')).validate(loaded?.config);
43
+ return { file, config, dependencies: (loaded?.dependencies ?? [file]).map(dep => resolve(this.root, dep)) };
44
+ }
45
+ loadError(file, cause) {
46
+ const error = cause;
47
+ const first = error.errors?.[0] ?? error;
48
+ const message = stripVTControlCharacters(String(first?.message ?? cause))
49
+ .split('\n')
50
+ .map(line => line.trim())
51
+ .find(line => line && !/^Build failed/.test(line));
52
+ return new CellError({
53
+ code: 'CELL_CONFIG_LOAD',
54
+ message: `Cannot load ${file}: ${message}`,
55
+ file: first?.loc?.file ?? file,
56
+ line: first?.loc?.line,
57
+ column: first?.loc?.column,
58
+ hint: 'Fix the reported error in the config file, or install the packages it imports.',
59
+ cause,
60
+ });
61
+ }
62
+ }
63
+ //# sourceMappingURL=config-file-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-file-loader.js","sourceRoot":"","sources":["../../src/config/config-file-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ import { type HookableEventName, type Preset, type Target } from '@celljs/kit';
2
+ import type { CellBuilderOptions, ProjectLoaderOptions } from '@celljs/vite';
3
+ import type { UserConfig } from 'vite';
4
+ import { type LoadedConfigFile } from './config-file-loader.js';
5
+ import type { BuildOptions, CellConfig, CompileTarget } from './types.js';
6
+ export type CellCommand = 'dev' | 'build' | 'preview' | 'deploy' | 'info' | 'check' | 'config' | 'docs' | 'mcp' | 'test';
7
+ /** Command-line flags; each wins over the same setting in cell.config.ts. */
8
+ export interface ConfigFlags {
9
+ preset?: string;
10
+ /** `-m`, in order; appended after the mode of the command (`development` or `production`). */
11
+ mode?: string[];
12
+ format?: 'esm' | 'cjs';
13
+ single?: boolean;
14
+ compile?: boolean | CompileTarget;
15
+ sourcemap?: boolean;
16
+ outDir?: string;
17
+ }
18
+ /** A preset that recognises the CI platform it runs on, e.g. Vercel from `VERCEL=1`. */
19
+ export interface PresetDetector {
20
+ name: string;
21
+ detect(env: NodeJS.ProcessEnv): boolean;
22
+ }
23
+ export interface ConfigResolverOptions {
24
+ root?: string;
25
+ command: CellCommand;
26
+ flags?: ConfigFlags;
27
+ env?: NodeJS.ProcessEnv;
28
+ /** Tried in order when running in CI and no preset is chosen explicitly. */
29
+ detectors?: PresetDetector[];
30
+ }
31
+ /** Where a resolved value came from, reported by `cell info`. */
32
+ export type ValueSource = 'flag' | 'config' | 'env' | 'ci' | 'default';
33
+ export type ModuleSpec = {
34
+ kind: 'local';
35
+ path: string;
36
+ } | {
37
+ kind: 'package';
38
+ name: string;
39
+ } | {
40
+ kind: 'disabled';
41
+ name: string;
42
+ } | {
43
+ kind: 'filter';
44
+ name: string;
45
+ runtime: boolean;
46
+ toolchain: boolean;
47
+ };
48
+ export interface ResolvedBuildOptions {
49
+ /** Undefined until a preset chooses; `esm` when none does. */
50
+ format?: 'esm' | 'cjs';
51
+ single: boolean;
52
+ compile: false | CompileTarget;
53
+ external: string[];
54
+ sourcemap: boolean;
55
+ outDir: string;
56
+ }
57
+ /** The toolchain configuration of one command run: cell.config.ts, flags and environment combined. */
58
+ export interface ResolvedConfig {
59
+ root: string;
60
+ /** The cell.config file, if the project has one. */
61
+ file?: string;
62
+ /** Files whose change requires reloading the configuration. */
63
+ dependencies: string[];
64
+ command: CellCommand;
65
+ dev: boolean;
66
+ ci: boolean;
67
+ mode: string[];
68
+ preset: {
69
+ name: string;
70
+ source: ValueSource;
71
+ };
72
+ /** Explicit targets from cell.config.ts; undefined means "what the components declare". */
73
+ targets?: Target[];
74
+ build: ResolvedBuildOptions;
75
+ modules: ModuleSpec[];
76
+ vite: UserConfig;
77
+ hooks: Partial<Record<HookableEventName, string>>;
78
+ /** Options of toolchain modules, by key. */
79
+ options: Record<string, Record<string, unknown>>;
80
+ }
81
+ /**
82
+ * Resolves the toolchain configuration. Precedence: flags → cell.config.ts → environment → CI
83
+ * detection → defaults (docs/design/architecture.md §4, §7).
84
+ */
85
+ export declare class ConfigResolver {
86
+ protected readonly options: ConfigResolverOptions;
87
+ static readonly DEFAULT_PRESET = "node";
88
+ static readonly DEFAULT_OUT_DIR = ".cell/output";
89
+ static readonly MODE_NAME: RegExp;
90
+ static readonly LOCAL_MODULE_EXTENSIONS: string[];
91
+ protected readonly env: NodeJS.ProcessEnv;
92
+ protected readonly flags: ConfigFlags;
93
+ constructor(options: ConfigResolverOptions);
94
+ resolve(): Promise<ResolvedConfig>;
95
+ /** Options of {@link CellBuilder} for this configuration and the preset it chose. */
96
+ static toBuilderOptions(resolved: ResolvedConfig, preset?: Preset): CellBuilderOptions;
97
+ /** Options of {@link ProjectLoader}: what decides the component graph, without the build-only settings. */
98
+ static toProjectOptions(resolved: ResolvedConfig, preset?: Preset): ProjectLoaderOptions;
99
+ /** Server bundle format: the project's choice, else the preset's, else `esm`. */
100
+ static format(resolved: ResolvedConfig, preset?: Preset): 'esm' | 'cjs';
101
+ protected create(root: string, loaded?: LoadedConfigFile): ResolvedConfig;
102
+ protected findRoot(): string;
103
+ protected isCI(): boolean;
104
+ protected mode(dev: boolean): string[];
105
+ protected preset(configured?: string): ResolvedConfig['preset'];
106
+ protected build(build: BuildOptions, file?: string): ResolvedBuildOptions;
107
+ /** Normalises `modules`; a package may appear once, whatever the form of the entry. */
108
+ protected modules(entries: NonNullable<CellConfig['modules']>, file?: string): ModuleSpec[];
109
+ protected moduleSpec(entry: NonNullable<CellConfig['modules']>[number], file: string | undefined, source: string): ModuleSpec;
110
+ }
111
+ //# sourceMappingURL=config-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-resolver.d.ts","sourceRoot":"","sources":["../../src/config/config-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,215 @@
1
+ import { existsSync, readFileSync, realpathSync, statSync } from 'node:fs';
2
+ import { dirname, join, resolve } from 'node:path';
3
+ import { CellError } from '@celljs/kit';
4
+ import { TextUtil } from '../utils/text-util.js';
5
+ import { ConfigFileLoader } from './config-file-loader.js';
6
+ import { ConfigValidator } from './config-validator.js';
7
+ /**
8
+ * Resolves the toolchain configuration. Precedence: flags → cell.config.ts → environment → CI
9
+ * detection → defaults (docs/design/architecture.md §4, §7).
10
+ */
11
+ export class ConfigResolver {
12
+ options;
13
+ static DEFAULT_PRESET = 'node';
14
+ static DEFAULT_OUT_DIR = '.cell/output';
15
+ static MODE_NAME = /^[\w-]+$/;
16
+ static LOCAL_MODULE_EXTENSIONS = ['', '.ts', '.mts', '.js', '.mjs'];
17
+ env;
18
+ flags;
19
+ constructor(options) {
20
+ this.options = options;
21
+ this.env = options.env ?? process.env;
22
+ this.flags = options.flags ?? {};
23
+ }
24
+ async resolve() {
25
+ const root = this.findRoot();
26
+ return this.create(root, await new ConfigFileLoader(root).load());
27
+ }
28
+ /** Options of {@link CellBuilder} for this configuration and the preset it chose. */
29
+ static toBuilderOptions(resolved, preset) {
30
+ const { build } = resolved;
31
+ const format = ConfigResolver.format(resolved, preset);
32
+ if ((preset?.staticHosting || preset?.runtime === 'workerd') && (build.single || build.compile)) {
33
+ throw new CellError({
34
+ code: 'CELL_CONFIG_CONFLICT',
35
+ message: `The ${preset.name} preset deploys the frontend as static assets of the platform; ${build.compile ? '--compile' : '--single'} does not apply.`,
36
+ file: resolved.file,
37
+ hint: 'Remove --single / --compile and build.single / build.compile from cell.config.ts, or use the node preset.',
38
+ });
39
+ }
40
+ if (preset?.runtime === 'workerd' && format !== 'esm') {
41
+ throw new CellError({
42
+ code: 'CELL_CONFIG_CONFLICT',
43
+ message: `The ${preset.name} preset runs on Cloudflare Workers, which load ES modules only, but the format is ${format}.`,
44
+ file: resolved.file,
45
+ hint: 'Remove --format cjs and build.format from cell.config.ts.',
46
+ });
47
+ }
48
+ return {
49
+ ...ConfigResolver.toProjectOptions(resolved, preset),
50
+ preset: preset?.name,
51
+ runtime: preset?.runtime,
52
+ format,
53
+ outDir: build.outDir,
54
+ external: build.external,
55
+ sourcemap: build.sourcemap,
56
+ // An executable serves the frontend too: it is built from the single-file bundle.
57
+ single: build.single || build.compile !== false,
58
+ vite: resolved.vite,
59
+ };
60
+ }
61
+ /** Options of {@link ProjectLoader}: what decides the component graph, without the build-only settings. */
62
+ static toProjectOptions(resolved, preset) {
63
+ const names = (keep) => resolved.modules.filter(keep).map(spec => spec.name);
64
+ return {
65
+ root: resolved.root,
66
+ mode: resolved.mode,
67
+ targets: resolved.targets,
68
+ entryName: preset?.entry,
69
+ disabled: names(spec => spec.kind === 'disabled'),
70
+ runtimeDisabled: names(spec => spec.kind === 'filter' && !spec.runtime),
71
+ };
72
+ }
73
+ /** Server bundle format: the project's choice, else the preset's, else `esm`. */
74
+ static format(resolved, preset) {
75
+ return resolved.build.format ?? preset?.format ?? 'esm';
76
+ }
77
+ create(root, loaded) {
78
+ const config = loaded?.config ?? {};
79
+ const { preset, targets, modules, build, vite, hooks, ...options } = config;
80
+ const dev = this.options.command === 'dev';
81
+ return {
82
+ root,
83
+ file: loaded?.file,
84
+ dependencies: loaded?.dependencies ?? [],
85
+ command: this.options.command,
86
+ dev,
87
+ ci: this.isCI(),
88
+ mode: this.mode(dev),
89
+ preset: this.preset(preset),
90
+ targets,
91
+ build: this.build(build ?? {}, loaded?.file),
92
+ modules: this.modules(modules ?? [], loaded?.file),
93
+ vite: vite ?? {},
94
+ hooks: hooks ?? {},
95
+ options: options,
96
+ };
97
+ }
98
+ findRoot() {
99
+ const root = resolve(this.options.root ?? process.cwd());
100
+ if (!existsSync(join(root, 'package.json'))) {
101
+ throw new CellError({
102
+ code: 'CELL_PROJECT_NOT_FOUND',
103
+ message: `No package.json in ${root}.`,
104
+ file: join(root, 'package.json'),
105
+ hint: 'Run the command in the project root, or pass --root.',
106
+ });
107
+ }
108
+ return realpathSync(root);
109
+ }
110
+ isCI() {
111
+ const ci = this.env.CI;
112
+ return ci !== undefined && ci !== '' && ci !== '0' && ci !== 'false';
113
+ }
114
+ mode(dev) {
115
+ const flags = this.flags.mode ?? [];
116
+ const invalid = flags.find(mode => !ConfigResolver.MODE_NAME.test(mode));
117
+ if (invalid !== undefined) {
118
+ throw new CellError({
119
+ code: 'CELL_ARGUMENT_INVALID',
120
+ message: `Invalid mode '${invalid}'.`,
121
+ hint: 'A mode names the file cell.<mode>.yml: use letters, digits, - and _ only.',
122
+ });
123
+ }
124
+ const base = this.options.command === 'test' ? 'test' : dev ? 'development' : 'production';
125
+ return [...new Set([base, ...flags])];
126
+ }
127
+ preset(configured) {
128
+ if (this.flags.preset) {
129
+ return { name: this.flags.preset, source: 'flag' };
130
+ }
131
+ if (configured) {
132
+ return { name: configured, source: 'config' };
133
+ }
134
+ if (this.env.CELL_PRESET) {
135
+ return { name: this.env.CELL_PRESET, source: 'env' };
136
+ }
137
+ const detected = this.isCI() ? this.options.detectors?.find(detector => detector.detect(this.env)) : undefined;
138
+ return detected ? { name: detected.name, source: 'ci' } : { name: ConfigResolver.DEFAULT_PRESET, source: 'default' };
139
+ }
140
+ build(build, file) {
141
+ const compileOption = this.flags.compile ?? build.compile ?? false;
142
+ const compile = compileOption === true ? 'bun' : compileOption;
143
+ let format = this.flags.format ?? build.format;
144
+ if (compile === 'node') {
145
+ if (format === 'esm') {
146
+ throw new CellError({
147
+ code: 'CELL_CONFIG_CONFLICT',
148
+ message: 'A Node.js executable (compile: node) needs a CommonJS bundle, but the format is esm.',
149
+ file,
150
+ hint: "Remove the format setting (node executables use cjs), or compile with 'bun'.",
151
+ });
152
+ }
153
+ format = 'cjs';
154
+ }
155
+ return {
156
+ format,
157
+ single: this.flags.single ?? build.single ?? false,
158
+ compile,
159
+ external: build.external ?? [],
160
+ sourcemap: this.flags.sourcemap ?? build.sourcemap ?? false,
161
+ outDir: this.flags.outDir ?? build.outDir ?? ConfigResolver.DEFAULT_OUT_DIR,
162
+ };
163
+ }
164
+ /** Normalises `modules`; a package may appear once, whatever the form of the entry. */
165
+ modules(entries, file) {
166
+ const source = file ? readFileSync(file, 'utf8') : '';
167
+ const seen = new Map();
168
+ return entries.map(entry => {
169
+ const text = typeof entry === 'string' ? entry : entry.source;
170
+ const spec = this.moduleSpec(entry, file, source);
171
+ const identity = spec.kind === 'local' ? spec.path : spec.name;
172
+ if (seen.has(identity)) {
173
+ const position = TextUtil.find(source, text);
174
+ throw new CellError({
175
+ code: 'CELL_CONFIG_INVALID',
176
+ message: `modules lists ${identity} twice ('${seen.get(identity)}' and '${text}').`,
177
+ file,
178
+ line: position?.line,
179
+ column: position?.column,
180
+ hint: 'Keep one entry per package or path.',
181
+ });
182
+ }
183
+ seen.set(identity, text);
184
+ return spec;
185
+ });
186
+ }
187
+ moduleSpec(entry, file, source) {
188
+ if (typeof entry !== 'string') {
189
+ return { kind: 'filter', name: entry.source, runtime: entry.runtime ?? true, toolchain: entry.toolchain ?? true };
190
+ }
191
+ if (entry.startsWith('!')) {
192
+ return { kind: 'disabled', name: entry.slice(1) };
193
+ }
194
+ if (!ConfigValidator.isLocalPath(entry)) {
195
+ return { kind: 'package', name: entry };
196
+ }
197
+ const base = resolve(file ? dirname(file) : this.findRoot(), entry);
198
+ for (const suffix of ConfigResolver.LOCAL_MODULE_EXTENSIONS) {
199
+ const path = base + suffix;
200
+ if (existsSync(path) && (statSync(path).isFile() || existsSync(join(path, 'package.json')))) {
201
+ return { kind: 'local', path };
202
+ }
203
+ }
204
+ const position = TextUtil.find(source, entry);
205
+ throw new CellError({
206
+ code: 'CELL_LOCAL_MODULE_NOT_FOUND',
207
+ message: `Local module ${entry} not found (looked for ${base}{${ConfigResolver.LOCAL_MODULE_EXTENSIONS.filter(Boolean).join(',')}}).`,
208
+ file,
209
+ line: position?.line,
210
+ column: position?.column,
211
+ hint: 'Fix the path (relative to cell.config.ts); a directory needs a package.json.',
212
+ });
213
+ }
214
+ }
215
+ //# sourceMappingURL=config-resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-resolver.js","sourceRoot":"","sources":["../../src/config/config-resolver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=config-resolver.spec.d.ts.map