@supatype/cli 0.1.0-alpha.9 → 0.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (407) hide show
  1. package/.turbo/turbo-build.log +2 -2
  2. package/.turbo/turbo-test.log +285 -69
  3. package/.turbo/turbo-typecheck.log +1 -1
  4. package/assets/supatype-logo-wordmark.ascii.txt +6 -0
  5. package/bin/dev-entry.ts +2 -1
  6. package/dist/app/framework.js +1 -3
  7. package/dist/app/framework.js.map +1 -1
  8. package/dist/app/proxy-dev-app.d.ts +14 -0
  9. package/dist/app/proxy-dev-app.d.ts.map +1 -1
  10. package/dist/app/proxy-dev-app.js +110 -6
  11. package/dist/app/proxy-dev-app.js.map +1 -1
  12. package/dist/app-config.d.ts +10 -0
  13. package/dist/app-config.d.ts.map +1 -1
  14. package/dist/app-config.js +72 -0
  15. package/dist/app-config.js.map +1 -1
  16. package/dist/assets/supatype-logo-wordmark.ascii.txt +6 -0
  17. package/dist/binary-cache.d.ts +19 -7
  18. package/dist/binary-cache.d.ts.map +1 -1
  19. package/dist/binary-cache.js +92 -46
  20. package/dist/binary-cache.js.map +1 -1
  21. package/dist/cli.d.ts +1 -1
  22. package/dist/cli.d.ts.map +1 -1
  23. package/dist/cli.js +17 -2
  24. package/dist/cli.js.map +1 -1
  25. package/dist/commands/add.d.ts +3 -0
  26. package/dist/commands/add.d.ts.map +1 -0
  27. package/dist/commands/add.js +86 -0
  28. package/dist/commands/add.js.map +1 -0
  29. package/dist/commands/admin.d.ts +28 -1
  30. package/dist/commands/admin.d.ts.map +1 -1
  31. package/dist/commands/admin.js +297 -149
  32. package/dist/commands/admin.js.map +1 -1
  33. package/dist/commands/adopt.d.ts +3 -0
  34. package/dist/commands/adopt.d.ts.map +1 -0
  35. package/dist/commands/adopt.js +55 -0
  36. package/dist/commands/adopt.js.map +1 -0
  37. package/dist/commands/app.d.ts.map +1 -1
  38. package/dist/commands/app.js +20 -17
  39. package/dist/commands/app.js.map +1 -1
  40. package/dist/commands/cache.d.ts.map +1 -1
  41. package/dist/commands/cache.js +11 -10
  42. package/dist/commands/cache.js.map +1 -1
  43. package/dist/commands/cloud.d.ts +4 -9
  44. package/dist/commands/cloud.d.ts.map +1 -1
  45. package/dist/commands/cloud.js +75 -125
  46. package/dist/commands/cloud.js.map +1 -1
  47. package/dist/commands/db.d.ts.map +1 -1
  48. package/dist/commands/db.js +37 -58
  49. package/dist/commands/db.js.map +1 -1
  50. package/dist/commands/deploy.d.ts.map +1 -1
  51. package/dist/commands/deploy.js +140 -96
  52. package/dist/commands/deploy.js.map +1 -1
  53. package/dist/commands/dev.d.ts.map +1 -1
  54. package/dist/commands/dev.js +74 -39
  55. package/dist/commands/dev.js.map +1 -1
  56. package/dist/commands/diff.d.ts.map +1 -1
  57. package/dist/commands/diff.js +39 -39
  58. package/dist/commands/diff.js.map +1 -1
  59. package/dist/commands/doctor.d.ts +3 -0
  60. package/dist/commands/doctor.d.ts.map +1 -0
  61. package/dist/commands/doctor.js +78 -0
  62. package/dist/commands/doctor.js.map +1 -0
  63. package/dist/commands/engine.d.ts.map +1 -1
  64. package/dist/commands/engine.js +5 -4
  65. package/dist/commands/engine.js.map +1 -1
  66. package/dist/commands/functions.d.ts.map +1 -1
  67. package/dist/commands/functions.js +172 -119
  68. package/dist/commands/functions.js.map +1 -1
  69. package/dist/commands/generate.d.ts.map +1 -1
  70. package/dist/commands/generate.js +5 -4
  71. package/dist/commands/generate.js.map +1 -1
  72. package/dist/commands/init.d.ts +35 -1
  73. package/dist/commands/init.d.ts.map +1 -1
  74. package/dist/commands/init.js +883 -107
  75. package/dist/commands/init.js.map +1 -1
  76. package/dist/commands/introspect.d.ts +3 -0
  77. package/dist/commands/introspect.d.ts.map +1 -0
  78. package/dist/commands/introspect.js +35 -0
  79. package/dist/commands/introspect.js.map +1 -0
  80. package/dist/commands/keys.d.ts +15 -1
  81. package/dist/commands/keys.d.ts.map +1 -1
  82. package/dist/commands/keys.js +46 -10
  83. package/dist/commands/keys.js.map +1 -1
  84. package/dist/commands/link-helpers.d.ts +15 -0
  85. package/dist/commands/link-helpers.d.ts.map +1 -0
  86. package/dist/commands/link-helpers.js +225 -0
  87. package/dist/commands/link-helpers.js.map +1 -0
  88. package/dist/commands/logs.d.ts.map +1 -1
  89. package/dist/commands/logs.js +5 -4
  90. package/dist/commands/logs.js.map +1 -1
  91. package/dist/commands/migrate-from-v1.d.ts.map +1 -1
  92. package/dist/commands/migrate-from-v1.js +3 -2
  93. package/dist/commands/migrate-from-v1.js.map +1 -1
  94. package/dist/commands/migrate.d.ts.map +1 -1
  95. package/dist/commands/migrate.js +119 -26
  96. package/dist/commands/migrate.js.map +1 -1
  97. package/dist/commands/pg.d.ts.map +1 -1
  98. package/dist/commands/pg.js +11 -12
  99. package/dist/commands/pg.js.map +1 -1
  100. package/dist/commands/plugins.d.ts.map +1 -1
  101. package/dist/commands/plugins.js +55 -46
  102. package/dist/commands/plugins.js.map +1 -1
  103. package/dist/commands/pull.d.ts.map +1 -1
  104. package/dist/commands/pull.js +33 -5
  105. package/dist/commands/pull.js.map +1 -1
  106. package/dist/commands/push.d.ts.map +1 -1
  107. package/dist/commands/push.js +111 -138
  108. package/dist/commands/push.js.map +1 -1
  109. package/dist/commands/seed.d.ts.map +1 -1
  110. package/dist/commands/seed.js +4 -3
  111. package/dist/commands/seed.js.map +1 -1
  112. package/dist/commands/self-host.d.ts +2 -2
  113. package/dist/commands/self-host.d.ts.map +1 -1
  114. package/dist/commands/self-host.js +65 -50
  115. package/dist/commands/self-host.js.map +1 -1
  116. package/dist/commands/self-update.d.ts.map +1 -1
  117. package/dist/commands/self-update.js +3 -2
  118. package/dist/commands/self-update.js.map +1 -1
  119. package/dist/commands/status.d.ts +1 -1
  120. package/dist/commands/status.d.ts.map +1 -1
  121. package/dist/commands/status.js +95 -29
  122. package/dist/commands/status.js.map +1 -1
  123. package/dist/commands/types.d.ts.map +1 -1
  124. package/dist/commands/types.js +3 -2
  125. package/dist/commands/types.js.map +1 -1
  126. package/dist/commands/update.d.ts.map +1 -1
  127. package/dist/commands/update.js +54 -21
  128. package/dist/commands/update.js.map +1 -1
  129. package/dist/compose-rename.d.ts +10 -0
  130. package/dist/compose-rename.d.ts.map +1 -0
  131. package/dist/compose-rename.js +67 -0
  132. package/dist/compose-rename.js.map +1 -0
  133. package/dist/config.d.ts +2 -1
  134. package/dist/config.d.ts.map +1 -1
  135. package/dist/config.js.map +1 -1
  136. package/dist/dev-compose.d.ts +26 -0
  137. package/dist/dev-compose.d.ts.map +1 -1
  138. package/dist/dev-compose.js +357 -79
  139. package/dist/dev-compose.js.map +1 -1
  140. package/dist/dev-log-bus.d.ts +30 -0
  141. package/dist/dev-log-bus.d.ts.map +1 -0
  142. package/dist/dev-log-bus.js +87 -0
  143. package/dist/dev-log-bus.js.map +1 -0
  144. package/dist/dev-log-filter.d.ts +10 -0
  145. package/dist/dev-log-filter.d.ts.map +1 -0
  146. package/dist/dev-log-filter.js +36 -0
  147. package/dist/dev-log-filter.js.map +1 -0
  148. package/dist/dev-logo.d.ts +12 -0
  149. package/dist/dev-logo.d.ts.map +1 -0
  150. package/dist/dev-logo.js +56 -0
  151. package/dist/dev-logo.js.map +1 -0
  152. package/dist/dev-ports.d.ts +27 -0
  153. package/dist/dev-ports.d.ts.map +1 -0
  154. package/dist/dev-ports.js +171 -0
  155. package/dist/dev-ports.js.map +1 -0
  156. package/dist/dev-session-lock.d.ts +25 -0
  157. package/dist/dev-session-lock.d.ts.map +1 -0
  158. package/dist/dev-session-lock.js +81 -0
  159. package/dist/dev-session-lock.js.map +1 -0
  160. package/dist/dev-session.d.ts +26 -0
  161. package/dist/dev-session.d.ts.map +1 -0
  162. package/dist/dev-session.js +106 -0
  163. package/dist/dev-session.js.map +1 -0
  164. package/dist/dev-shutdown.d.ts +25 -0
  165. package/dist/dev-shutdown.d.ts.map +1 -0
  166. package/dist/dev-shutdown.js +114 -0
  167. package/dist/dev-shutdown.js.map +1 -0
  168. package/dist/dev-task-colors.d.ts +13 -0
  169. package/dist/dev-task-colors.d.ts.map +1 -0
  170. package/dist/dev-task-colors.js +43 -0
  171. package/dist/dev-task-colors.js.map +1 -0
  172. package/dist/dev-tui.d.ts +24 -0
  173. package/dist/dev-tui.d.ts.map +1 -0
  174. package/dist/dev-tui.js +188 -0
  175. package/dist/dev-tui.js.map +1 -0
  176. package/dist/diff-output.d.ts +5 -1
  177. package/dist/diff-output.d.ts.map +1 -1
  178. package/dist/diff-output.js +69 -0
  179. package/dist/diff-output.js.map +1 -1
  180. package/dist/docker-runtime.d.ts +30 -0
  181. package/dist/docker-runtime.d.ts.map +1 -0
  182. package/dist/docker-runtime.js +118 -0
  183. package/dist/docker-runtime.js.map +1 -0
  184. package/dist/engine-client.d.ts +10 -1
  185. package/dist/engine-client.d.ts.map +1 -1
  186. package/dist/engine-client.js +76 -17
  187. package/dist/engine-client.js.map +1 -1
  188. package/dist/engine-push-output.d.ts +17 -0
  189. package/dist/engine-push-output.d.ts.map +1 -0
  190. package/dist/engine-push-output.js +64 -0
  191. package/dist/engine-push-output.js.map +1 -0
  192. package/dist/ensure-binary.js +2 -2
  193. package/dist/ensure-binary.js.map +1 -1
  194. package/dist/env-file.d.ts +5 -0
  195. package/dist/env-file.d.ts.map +1 -0
  196. package/dist/env-file.js +33 -0
  197. package/dist/env-file.js.map +1 -0
  198. package/dist/gitignore.d.ts +8 -0
  199. package/dist/gitignore.d.ts.map +1 -0
  200. package/dist/gitignore.js +41 -0
  201. package/dist/gitignore.js.map +1 -0
  202. package/dist/kong-config.d.ts +9 -0
  203. package/dist/kong-config.d.ts.map +1 -1
  204. package/dist/kong-config.js +18 -1
  205. package/dist/kong-config.js.map +1 -1
  206. package/dist/link.d.ts +66 -0
  207. package/dist/link.d.ts.map +1 -0
  208. package/dist/link.js +160 -0
  209. package/dist/link.js.map +1 -0
  210. package/dist/process-manager.d.ts +8 -0
  211. package/dist/process-manager.d.ts.map +1 -1
  212. package/dist/process-manager.js +53 -9
  213. package/dist/process-manager.js.map +1 -1
  214. package/dist/project-config.d.ts +30 -3
  215. package/dist/project-config.d.ts.map +1 -1
  216. package/dist/project-config.js +37 -4
  217. package/dist/project-config.js.map +1 -1
  218. package/dist/prompts.d.ts +3 -0
  219. package/dist/prompts.d.ts.map +1 -0
  220. package/dist/prompts.js +3 -0
  221. package/dist/prompts.js.map +1 -0
  222. package/dist/pull-utils.d.ts +50 -14
  223. package/dist/pull-utils.d.ts.map +1 -1
  224. package/dist/pull-utils.js +152 -12
  225. package/dist/pull-utils.js.map +1 -1
  226. package/dist/resolve-target.d.ts +86 -0
  227. package/dist/resolve-target.d.ts.map +1 -0
  228. package/dist/resolve-target.js +291 -0
  229. package/dist/resolve-target.js.map +1 -0
  230. package/dist/restore-system-relation-targets.d.ts +3 -0
  231. package/dist/restore-system-relation-targets.d.ts.map +1 -0
  232. package/dist/restore-system-relation-targets.js +45 -0
  233. package/dist/restore-system-relation-targets.js.map +1 -0
  234. package/dist/runtime-routes.d.ts.map +1 -1
  235. package/dist/runtime-routes.js +7 -0
  236. package/dist/runtime-routes.js.map +1 -1
  237. package/dist/schema-ast-v2.d.ts +1 -1
  238. package/dist/schema-ast-v2.d.ts.map +1 -1
  239. package/dist/schema-ast-v2.js +2 -2
  240. package/dist/schema-ast-v2.js.map +1 -1
  241. package/dist/schema-sources.d.ts +40 -0
  242. package/dist/schema-sources.d.ts.map +1 -0
  243. package/dist/schema-sources.js +183 -0
  244. package/dist/schema-sources.js.map +1 -0
  245. package/dist/scripts/postinstall.js +5 -1
  246. package/dist/scripts/postinstall.js.map +1 -1
  247. package/dist/self-host-compose.d.ts +37 -1
  248. package/dist/self-host-compose.d.ts.map +1 -1
  249. package/dist/self-host-compose.js +234 -43
  250. package/dist/self-host-compose.js.map +1 -1
  251. package/dist/storage-provision.d.ts +4 -0
  252. package/dist/storage-provision.d.ts.map +1 -1
  253. package/dist/storage-provision.js +24 -2
  254. package/dist/storage-provision.js.map +1 -1
  255. package/dist/supatype-eval-1781522769253.d.mts +2 -0
  256. package/dist/supatype-eval-1781522769253.d.mts.map +1 -0
  257. package/dist/supatype-eval-1781522769253.mjs +3 -0
  258. package/dist/supatype-eval-1781522769253.mjs.map +1 -0
  259. package/dist/systemd.js +2 -2
  260. package/dist/systemd.js.map +1 -1
  261. package/dist/target-client.d.ts +10 -0
  262. package/dist/target-client.d.ts.map +1 -0
  263. package/dist/target-client.js +22 -0
  264. package/dist/target-client.js.map +1 -0
  265. package/dist/type-extractor.d.ts +11 -0
  266. package/dist/type-extractor.d.ts.map +1 -1
  267. package/dist/type-extractor.js +95 -8
  268. package/dist/type-extractor.js.map +1 -1
  269. package/dist/ui/brand.d.ts +9 -0
  270. package/dist/ui/brand.d.ts.map +1 -0
  271. package/dist/ui/brand.js +11 -0
  272. package/dist/ui/brand.js.map +1 -0
  273. package/dist/ui/confirm.d.ts +12 -0
  274. package/dist/ui/confirm.d.ts.map +1 -0
  275. package/dist/ui/confirm.js +28 -0
  276. package/dist/ui/confirm.js.map +1 -0
  277. package/dist/ui/fatal.d.ts +10 -0
  278. package/dist/ui/fatal.d.ts.map +1 -0
  279. package/dist/ui/fatal.js +34 -0
  280. package/dist/ui/fatal.js.map +1 -0
  281. package/dist/ui/index.d.ts +9 -0
  282. package/dist/ui/index.d.ts.map +1 -0
  283. package/dist/ui/index.js +9 -0
  284. package/dist/ui/index.js.map +1 -0
  285. package/dist/ui/interactive.d.ts +3 -0
  286. package/dist/ui/interactive.d.ts.map +1 -0
  287. package/dist/ui/interactive.js +5 -0
  288. package/dist/ui/interactive.js.map +1 -0
  289. package/dist/ui/messages.d.ts +10 -0
  290. package/dist/ui/messages.d.ts.map +1 -0
  291. package/dist/ui/messages.js +35 -0
  292. package/dist/ui/messages.js.map +1 -0
  293. package/dist/ui/next-steps.d.ts +3 -0
  294. package/dist/ui/next-steps.d.ts.map +1 -0
  295. package/dist/ui/next-steps.js +10 -0
  296. package/dist/ui/next-steps.js.map +1 -0
  297. package/dist/ui/progress.d.ts +5 -0
  298. package/dist/ui/progress.d.ts.map +1 -0
  299. package/dist/ui/progress.js +24 -0
  300. package/dist/ui/progress.js.map +1 -0
  301. package/dist/ui/prompts.d.ts +14 -0
  302. package/dist/ui/prompts.d.ts.map +1 -0
  303. package/dist/ui/prompts.js +34 -0
  304. package/dist/ui/prompts.js.map +1 -0
  305. package/package.json +5 -2
  306. package/src/app/framework.ts +1 -3
  307. package/src/app/proxy-dev-app.ts +114 -6
  308. package/src/app-config.ts +80 -0
  309. package/src/binary-cache.ts +102 -52
  310. package/src/cli.ts +16 -2
  311. package/src/commands/add.ts +97 -0
  312. package/src/commands/admin.ts +381 -190
  313. package/src/commands/adopt.ts +82 -0
  314. package/src/commands/app.ts +20 -17
  315. package/src/commands/cache.ts +11 -10
  316. package/src/commands/cloud.ts +91 -142
  317. package/src/commands/db.ts +40 -63
  318. package/src/commands/deploy.ts +186 -126
  319. package/src/commands/dev.ts +98 -55
  320. package/src/commands/diff.ts +52 -43
  321. package/src/commands/doctor.ts +103 -0
  322. package/src/commands/engine.ts +5 -4
  323. package/src/commands/functions.ts +187 -123
  324. package/src/commands/generate.ts +5 -4
  325. package/src/commands/init.ts +1087 -104
  326. package/src/commands/introspect.ts +48 -0
  327. package/src/commands/keys.ts +56 -14
  328. package/src/commands/link-helpers.ts +273 -0
  329. package/src/commands/logs.ts +5 -4
  330. package/src/commands/migrate-from-v1.ts +3 -2
  331. package/src/commands/migrate.ts +167 -27
  332. package/src/commands/pg.ts +13 -18
  333. package/src/commands/plugins.ts +55 -46
  334. package/src/commands/pull.ts +38 -9
  335. package/src/commands/push.ts +148 -175
  336. package/src/commands/seed.ts +5 -4
  337. package/src/commands/self-host.ts +85 -54
  338. package/src/commands/self-update.ts +3 -2
  339. package/src/commands/status.ts +102 -33
  340. package/src/commands/types.ts +3 -2
  341. package/src/commands/update.ts +59 -23
  342. package/src/compose-rename.ts +76 -0
  343. package/src/config.ts +2 -1
  344. package/src/dev-compose.ts +462 -76
  345. package/src/dev-log-bus.ts +101 -0
  346. package/src/dev-log-filter.ts +32 -0
  347. package/src/dev-logo.ts +61 -0
  348. package/src/dev-ports.ts +212 -0
  349. package/src/dev-session-lock.ts +101 -0
  350. package/src/dev-session.ts +130 -0
  351. package/src/dev-shutdown.ts +147 -0
  352. package/src/dev-task-colors.ts +47 -0
  353. package/src/dev-tui.ts +232 -0
  354. package/src/diff-output.ts +79 -1
  355. package/src/docker-runtime.ts +151 -0
  356. package/src/engine-client.ts +81 -17
  357. package/src/engine-push-output.ts +75 -0
  358. package/src/ensure-binary.ts +2 -2
  359. package/src/env-file.ts +37 -0
  360. package/src/gitignore.ts +48 -0
  361. package/src/kong-config.ts +24 -1
  362. package/src/link.ts +243 -0
  363. package/src/process-manager.ts +66 -10
  364. package/src/project-config.ts +62 -7
  365. package/src/prompts.ts +2 -0
  366. package/src/pull-utils.ts +217 -23
  367. package/src/resolve-target.ts +419 -0
  368. package/src/restore-system-relation-targets.ts +45 -0
  369. package/src/runtime-routes.ts +7 -0
  370. package/src/schema-ast-v2.ts +2 -1
  371. package/src/schema-sources.ts +248 -0
  372. package/src/scripts/postinstall.ts +7 -1
  373. package/src/self-host-compose.ts +262 -46
  374. package/src/storage-provision.ts +33 -1
  375. package/src/supatype-eval-1781522769253.mts +1 -0
  376. package/src/systemd.ts +2 -2
  377. package/src/target-client.ts +40 -0
  378. package/src/type-extractor.ts +124 -11
  379. package/src/ui/README.md +17 -0
  380. package/src/ui/brand.ts +12 -0
  381. package/src/ui/confirm.ts +38 -0
  382. package/src/ui/fatal.ts +43 -0
  383. package/src/ui/index.ts +8 -0
  384. package/src/ui/interactive.ts +4 -0
  385. package/src/ui/messages.ts +43 -0
  386. package/src/ui/next-steps.ts +10 -0
  387. package/src/ui/progress.ts +28 -0
  388. package/src/ui/prompts.ts +40 -0
  389. package/tests/admin-ensure.test.ts +59 -0
  390. package/tests/cli-help.test.ts +27 -2
  391. package/tests/config.test.ts +29 -2
  392. package/tests/dev-ports.test.ts +41 -0
  393. package/tests/dev-session-lock.test.ts +54 -0
  394. package/tests/dev-ui.test.ts +162 -0
  395. package/tests/docker-runtime.test.ts +236 -0
  396. package/tests/engine-push-output.test.ts +67 -0
  397. package/tests/init.test.ts +197 -18
  398. package/tests/link.test.ts +148 -0
  399. package/tests/minisign.test.ts +102 -0
  400. package/tests/proxy-dev-app.test.ts +45 -1
  401. package/tests/pull-utils.test.ts +5 -4
  402. package/tests/runtime-contract.test.ts +186 -2
  403. package/tests/schema-sources.test.ts +119 -0
  404. package/tests/storage-provision.test.ts +100 -0
  405. package/tests/ui-confirm.test.ts +41 -0
  406. package/tests/ui-messages.test.ts +66 -0
  407. package/tsconfig.tsbuildinfo +1 -1
@@ -1,13 +1,22 @@
1
1
  // ─── Admin panel CLI commands (Gap Appendices task 48) ──────────────────────
2
2
  //
3
3
  // `npx supatype admin create-user` — create an admin user in the project's
4
- // {ref}_auth.users table. Used for initial setup and ongoing admin management.
5
- import { createInterface } from "node:readline";
6
- import { randomBytes, scrypt } from "node:crypto";
7
- import { promisify } from "node:util";
4
+ // auth.users table. First admin is ensured on `supatype dev` or `supatype push`.
5
+ import { spawnSync } from "node:child_process";
6
+ import { existsSync } from "node:fs";
7
+ import { dirname, join, resolve } from "node:path";
8
+ import bcrypt from "bcryptjs";
8
9
  import { loadConfig } from "../config.js";
9
- import { connectionString } from "../project-config.js";
10
- const scryptAsync = promisify(scrypt);
10
+ import { connectionString, resolveRuntimeProvider, } from "../project-config.js";
11
+ import { readEnvValue, upsertEnvFile } from "../env-file.js";
12
+ import { hasEngineOverride } from "../binary-cache.js";
13
+ import { confirm as uiConfirm } from "../ui/confirm.js";
14
+ import { error, info, plain } from "../ui/messages.js";
15
+ import { promptText } from "../ui/prompts.js";
16
+ import { isInteractive } from "../ui/interactive.js";
17
+ export const ADMIN_EMAIL_ENV = "SUPATYPE_ADMIN_EMAIL";
18
+ export const ADMIN_PASSWORD_ENV = "SUPATYPE_ADMIN_PASSWORD";
19
+ const BCRYPT_ROUNDS = 10;
11
20
  export function registerAdmin(program) {
12
21
  const adminCmd = program
13
22
  .command("admin")
@@ -23,75 +32,28 @@ export function registerAdmin(program) {
23
32
  const cwd = process.cwd();
24
33
  const config = loadConfig(cwd);
25
34
  const connection = opts.connection ?? connectionString(config);
26
- const email = opts.email ?? (await prompt("Admin email: "));
35
+ const email = opts.email ?? (await promptText("Admin email"));
27
36
  if (!email || !email.includes("@")) {
28
- console.error("A valid email address is required.");
37
+ error("A valid email address is required.");
29
38
  process.exit(1);
30
39
  }
31
- const password = opts.password ?? (await prompt("Admin password (min 8 chars): "));
40
+ const password = opts.password ?? (await promptText("Admin password (min 8 chars)"));
32
41
  if (!password || password.length < 8) {
33
- console.error("Password must be at least 8 characters.");
42
+ error("Password must be at least 8 characters.");
34
43
  process.exit(1);
35
44
  }
36
45
  const role = opts.role;
37
- console.log(`\nCreating admin user: ${email} (role: ${role})...`);
38
- // We use pg directly to insert into the auth.users table
46
+ info(`Creating admin user: ${email} (role: ${role})...`);
39
47
  const pg = await importPg();
40
48
  const pool = new pg.Pool({ connectionString: connection, max: 2 });
41
49
  try {
42
- // Ensure the auth schema and users table exist
43
- await pool.query(`
44
- CREATE SCHEMA IF NOT EXISTS auth;
45
-
46
- CREATE TABLE IF NOT EXISTS auth.users (
47
- id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
48
- instance_id UUID,
49
- aud TEXT DEFAULT 'authenticated',
50
- role TEXT DEFAULT 'authenticated',
51
- email TEXT UNIQUE,
52
- encrypted_password TEXT,
53
- email_confirmed_at TIMESTAMPTZ DEFAULT now(),
54
- raw_app_meta_data JSONB DEFAULT '{}',
55
- raw_user_meta_data JSONB DEFAULT '{}',
56
- created_at TIMESTAMPTZ DEFAULT now(),
57
- updated_at TIMESTAMPTZ DEFAULT now(),
58
- confirmation_token TEXT DEFAULT '',
59
- recovery_token TEXT DEFAULT '',
60
- email_change_token_new TEXT DEFAULT '',
61
- email_change TEXT DEFAULT ''
62
- );
63
- `);
64
- // Check if user already exists
65
- const existing = await pool.query(`SELECT id FROM auth.users WHERE email = $1`, [email.toLowerCase()]);
66
- if (existing.rows.length > 0) {
67
- console.error(`\nUser with email "${email}" already exists.`);
68
- console.log(`To update their role, use: supatype admin set-role --email ${email} --role ${role}`);
69
- process.exit(1);
70
- }
71
- // Hash the password (bcrypt-style for GoTrue compatibility)
72
- const passwordHash = await hashPassword(password);
73
- // Insert the admin user with the admin role in app_metadata
74
- const appMetadata = JSON.stringify({ role, provider: "email", providers: ["email"] });
75
- const userMetadata = JSON.stringify({});
76
- const result = await pool.query(`INSERT INTO auth.users (
77
- email, encrypted_password, role, aud,
78
- raw_app_meta_data, raw_user_meta_data,
79
- email_confirmed_at, created_at, updated_at
80
- ) VALUES (
81
- $1, $2, 'authenticated', 'authenticated',
82
- $3::jsonb, $4::jsonb,
83
- now(), now(), now()
84
- ) RETURNING id, email`, [email.toLowerCase(), passwordHash, appMetadata, userMetadata]);
85
- const user = result.rows[0];
86
- console.log(`\nAdmin user created successfully.`);
87
- console.log(` ID: ${user.id}`);
88
- console.log(` Email: ${user.email}`);
89
- console.log(` Role: ${role}`);
90
- console.log(`\nThis user can now log in to the admin panel at /admin\n`);
50
+ await ensureAuthUsersTable(pool);
51
+ await createAdminUser(pool, email, password, role);
52
+ info("This user can now log in to the admin panel at /admin");
91
53
  }
92
54
  catch (err) {
93
55
  const message = err instanceof Error ? err.message : "Unknown error";
94
- console.error(`\nFailed to create admin user: ${message}`);
56
+ error(`Failed to create admin user: ${message}`);
95
57
  process.exit(1);
96
58
  }
97
59
  finally {
@@ -117,18 +79,18 @@ export function registerAdmin(program) {
117
79
  WHERE email = $2
118
80
  RETURNING id, email, raw_app_meta_data`, [JSON.stringify({ role: opts.role }), opts.email.toLowerCase()]);
119
81
  if (result.rows.length === 0) {
120
- console.error(`\nNo user found with email "${opts.email}".`);
82
+ error(`No user found with email "${opts.email}".`);
121
83
  process.exit(1);
122
84
  }
123
85
  const user = result.rows[0];
124
- console.log(`\nRole updated successfully.`);
125
- console.log(` ID: ${user.id}`);
126
- console.log(` Email: ${user.email}`);
127
- console.log(` Role: ${opts.role}\n`);
86
+ info("Role updated successfully.");
87
+ plain(` ID: ${user.id}`);
88
+ plain(` Email: ${user.email}`);
89
+ plain(` Role: ${opts.role}`);
128
90
  }
129
91
  catch (err) {
130
92
  const message = err instanceof Error ? err.message : "Unknown error";
131
- console.error(`\nFailed to update role: ${message}`);
93
+ error(`Failed to update role: ${message}`);
132
94
  process.exit(1);
133
95
  }
134
96
  finally {
@@ -152,22 +114,22 @@ export function registerAdmin(program) {
152
114
  AND raw_app_meta_data->>'role' != 'authenticated'
153
115
  ORDER BY created_at ASC`);
154
116
  if (result.rows.length === 0) {
155
- console.log("\nNo admin users found.");
156
- console.log("Create one with: supatype admin create-user --email admin@example.com --role admin\n");
117
+ info("No admin users found.");
118
+ info("Create one with: supatype admin create-user --email admin@example.com --role admin");
157
119
  return;
158
120
  }
159
- console.log("\n ID Email Role Created");
160
- console.log(" " + "-".repeat(100));
121
+ plain("\n ID Email Role Created");
122
+ plain(" " + "-".repeat(100));
161
123
  for (const row of result.rows) {
162
124
  const r = row;
163
125
  const date = new Date(r.created_at).toISOString().slice(0, 10);
164
- console.log(` ${r.id} ${r.email.padEnd(30)} ${r.role.padEnd(12)} ${date}`);
126
+ plain(` ${r.id} ${r.email.padEnd(30)} ${r.role.padEnd(12)} ${date}`);
165
127
  }
166
- console.log();
128
+ plain();
167
129
  }
168
130
  catch (err) {
169
131
  const message = err instanceof Error ? err.message : "Unknown error";
170
- console.error(`\nFailed to list admin users: ${message}`);
132
+ error(`Failed to list admin users: ${message}`);
171
133
  process.exit(1);
172
134
  }
173
135
  finally {
@@ -175,97 +137,283 @@ export function registerAdmin(program) {
175
137
  }
176
138
  });
177
139
  }
178
- // ─── First admin user prompt (task 48) ──────────────────────────────────────
179
- // Called by `supatype push` on initial setup if no admin users exist.
180
- export async function promptFirstAdminUser(connection) {
140
+ /** @deprecated Use ensureFirstAdminUser */
141
+ export const promptFirstAdminUser = ensureFirstAdminUser;
142
+ /**
143
+ * Ensure a first admin user exists (idempotent). Called from `dev` and `push`
144
+ * when auth.users is ready and no admin users exist yet.
145
+ */
146
+ export async function ensureFirstAdminUser(connection, options = {}) {
181
147
  const pg = await importPg();
182
148
  const pool = new pg.Pool({ connectionString: connection, max: 2 });
183
149
  try {
184
- // Check if auth.users table exists
185
- const tableExists = await pool.query(`SELECT EXISTS (
186
- SELECT FROM information_schema.tables
187
- WHERE table_schema = 'auth' AND table_name = 'users'
188
- ) as exists`);
189
- if (!tableExists.rows[0]?.exists)
190
- return;
191
- // Check if any admin users exist
192
- const adminCount = await pool.query(`SELECT COUNT(*) as count FROM auth.users
193
- WHERE raw_app_meta_data->>'role' IS NOT NULL
194
- AND raw_app_meta_data->>'role' != 'authenticated'`);
195
- const count = parseInt(adminCount.rows[0].count, 10);
196
- if (count > 0)
197
- return;
198
- // No admin users — prompt to create one
199
- console.log("\n No admin users found for the admin panel.");
200
- const createAdmin = await confirm(" Create an admin user now? [y/N] ");
201
- if (!createAdmin) {
202
- console.log(" Skipped. You can create one later with: supatype admin create-user\n");
203
- return;
204
- }
205
- const email = await prompt(" Admin email: ");
206
- if (!email || !email.includes("@")) {
207
- console.log(" Invalid email. Skipping admin user creation.\n");
208
- return;
209
- }
210
- const password = await prompt(" Admin password (min 8 chars): ");
211
- if (!password || password.length < 8) {
212
- console.log(" Password too short. Skipping admin user creation.\n");
213
- return;
214
- }
215
- const passwordHash = await hashPassword(password);
216
- const appMetadata = JSON.stringify({
217
- role: "admin",
218
- provider: "email",
219
- providers: ["email"],
220
- });
221
- await pool.query(`INSERT INTO auth.users (
222
- email, encrypted_password, role, aud,
223
- raw_app_meta_data, raw_user_meta_data,
224
- email_confirmed_at, created_at, updated_at
225
- ) VALUES (
226
- $1, $2, 'authenticated', 'authenticated',
227
- $3::jsonb, '{}'::jsonb,
228
- now(), now(), now()
229
- )`, [email.toLowerCase(), passwordHash, appMetadata]);
230
- console.log(`\n Admin user "${email}" created (role: admin).`);
231
- console.log(` Log in at /admin after starting the dev server.\n`);
150
+ await ensureFirstAdminWithQuery((sql, params) => pool.query(sql, params), options);
232
151
  }
233
152
  catch {
234
- // Non-fatal — if auth schema doesn't exist yet, skip silently
153
+ // Non-fatal — skip when DB is unreachable or auth schema is not ready
235
154
  }
236
155
  finally {
237
156
  await pool.end();
238
157
  }
239
158
  }
240
- // ─── Helpers ────────────────────────────────────────────────────────────────────
241
- async function importPg() {
242
- try {
243
- return await import("pg");
159
+ /**
160
+ * Resolve DB access for the current project (host URL or compose exec when DB
161
+ * is not published to the host).
162
+ */
163
+ export async function ensureFirstAdminUserForProject(cwd, config, options = {}) {
164
+ const root = resolve(cwd);
165
+ const merged = { cwd: root, ...options };
166
+ if (resolveRuntimeProvider(config) === "docker" &&
167
+ merged.compose &&
168
+ !hasEngineOverride(config)) {
169
+ try {
170
+ await ensureFirstAdminWithQuery((sql, params) => composeExecQuery(root, merged.compose, sql, params), merged);
171
+ }
172
+ catch {
173
+ // Non-fatal
174
+ }
175
+ return;
244
176
  }
245
- catch {
246
- console.error("pg package is required for admin commands. Install it with: pnpm add pg");
247
- process.exit(1);
177
+ const connection = merged.compose && hasEngineOverride(config)
178
+ ? hostComposeDbUrlFromEnv(root)
179
+ : options.connection ?? readEnvValue(root, "DATABASE_URL", connectionString(config));
180
+ await ensureFirstAdminUser(connection, merged);
181
+ }
182
+ async function ensureFirstAdminWithQuery(query, options) {
183
+ const cwd = options.cwd ? resolve(options.cwd) : process.cwd();
184
+ if (!(await authUsersTableExists(query)))
185
+ return;
186
+ if (await hasAdminUsers(query))
187
+ return;
188
+ const credentials = await resolveAdminCredentials(options, cwd);
189
+ if (!credentials) {
190
+ if (!isInteractive()) {
191
+ info("No admin users found. Set SUPATYPE_ADMIN_EMAIL / SUPATYPE_ADMIN_PASSWORD in .env, " +
192
+ "or run: supatype admin create-user");
193
+ }
194
+ return;
195
+ }
196
+ const role = options.role ?? "admin";
197
+ await createAdminUser(query, credentials.email, credentials.password, role, { quiet: true });
198
+ clearAdminSeedPassword(cwd);
199
+ info(`Admin user "${credentials.email}" created (role: ${role}).`);
200
+ info("Log in at /admin after starting the dev server.");
201
+ }
202
+ async function resolveAdminCredentials(options, cwd) {
203
+ const envEmail = options.email ?? readEnvValue(cwd, ADMIN_EMAIL_ENV, "").trim();
204
+ const envPassword = options.password ?? readEnvValue(cwd, ADMIN_PASSWORD_ENV, "").trim();
205
+ if (envEmail && envPassword) {
206
+ if (!envEmail.includes("@")) {
207
+ info("Invalid admin email in .env. Skipping admin user creation.");
208
+ return null;
209
+ }
210
+ if (envPassword.length < 8) {
211
+ info("Admin password in .env is too short (min 8 chars). Skipping.");
212
+ return null;
213
+ }
214
+ return { email: envEmail, password: envPassword };
215
+ }
216
+ if (!isInteractive())
217
+ return null;
218
+ info("No admin users found for the admin panel.");
219
+ const createAdmin = await uiConfirm("Create an admin user now?");
220
+ if (!createAdmin) {
221
+ info("Skipped. You can create one later with: supatype admin create-user");
222
+ return null;
223
+ }
224
+ const email = await promptText("Admin email");
225
+ if (!email || !email.includes("@")) {
226
+ info("Invalid email. Skipping admin user creation.");
227
+ return null;
228
+ }
229
+ const password = await promptText("Admin password (min 8 chars)");
230
+ if (!password || password.length < 8) {
231
+ info("Password too short. Skipping admin user creation.");
232
+ return null;
248
233
  }
234
+ return { email, password };
249
235
  }
250
- async function hashPassword(password) {
251
- const salt = randomBytes(16).toString("hex");
252
- const derived = (await scryptAsync(password, salt, 64));
253
- return `${salt}:${derived.toString("hex")}`;
236
+ export function clearAdminSeedPassword(cwd) {
237
+ upsertEnvFile(cwd, {}, [ADMIN_PASSWORD_ENV]);
254
238
  }
255
- function prompt(question) {
256
- const rl = createInterface({
257
- input: process.stdin,
258
- output: process.stdout,
239
+ export async function hashPasswordForAuth(password) {
240
+ return bcrypt.hash(password, BCRYPT_ROUNDS);
241
+ }
242
+ async function createAdminUser(db, email, password, role, opts = {}) {
243
+ const query = typeof db.query === "function"
244
+ ? (sql, params) => db.query(sql, params)
245
+ : db;
246
+ const normalized = email.toLowerCase();
247
+ const existing = await query(`SELECT id FROM auth.users WHERE email = $1`, [
248
+ normalized,
249
+ ]);
250
+ if (existing.rows.length > 0) {
251
+ throw new Error(`User with email "${email}" already exists.`);
252
+ }
253
+ const passwordHash = await hashPasswordForAuth(password);
254
+ const appMetadata = JSON.stringify({
255
+ role,
256
+ provider: "email",
257
+ providers: ["email"],
259
258
  });
260
- return new Promise((resolve) => {
261
- rl.question(question, (answer) => {
262
- rl.close();
263
- resolve(answer.trim());
259
+ const userMetadata = JSON.stringify({});
260
+ const result = await query(`INSERT INTO auth.users (
261
+ email, encrypted_password, role, aud,
262
+ raw_app_meta_data, raw_user_meta_data,
263
+ email_confirmed_at, created_at, updated_at
264
+ ) VALUES (
265
+ $1, $2, 'authenticated', 'authenticated',
266
+ $3::jsonb, $4::jsonb,
267
+ now(), now(), now()
268
+ ) RETURNING id, email`, [normalized, passwordHash, appMetadata, userMetadata]);
269
+ const user = result.rows[0];
270
+ if (!opts.quiet) {
271
+ info("Admin user created successfully.");
272
+ plain(` ID: ${user.id}`);
273
+ plain(` Email: ${user.email}`);
274
+ plain(` Role: ${role}`);
275
+ }
276
+ return user;
277
+ }
278
+ async function ensureAuthUsersTable(pool) {
279
+ await pool.query(`
280
+ CREATE SCHEMA IF NOT EXISTS auth;
281
+
282
+ CREATE TABLE IF NOT EXISTS auth.users (
283
+ id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
284
+ instance_id UUID,
285
+ aud TEXT DEFAULT 'authenticated',
286
+ role TEXT DEFAULT 'authenticated',
287
+ email TEXT UNIQUE,
288
+ encrypted_password TEXT,
289
+ email_confirmed_at TIMESTAMPTZ DEFAULT now(),
290
+ raw_app_meta_data JSONB DEFAULT '{}',
291
+ raw_user_meta_data JSONB DEFAULT '{}',
292
+ created_at TIMESTAMPTZ DEFAULT now(),
293
+ updated_at TIMESTAMPTZ DEFAULT now(),
294
+ confirmation_token TEXT DEFAULT '',
295
+ recovery_token TEXT DEFAULT '',
296
+ email_change_token_new TEXT DEFAULT '',
297
+ email_change TEXT DEFAULT ''
298
+ );
299
+ `);
300
+ }
301
+ async function authUsersTableExists(query) {
302
+ const result = await query(`SELECT EXISTS (
303
+ SELECT FROM information_schema.tables
304
+ WHERE table_schema = 'auth' AND table_name = 'users'
305
+ ) as exists`);
306
+ return Boolean(result.rows[0]?.exists);
307
+ }
308
+ async function hasAdminUsers(query) {
309
+ const adminCount = await query(`SELECT COUNT(*)::int as count FROM auth.users
310
+ WHERE raw_app_meta_data->>'role' IS NOT NULL
311
+ AND raw_app_meta_data->>'role' != 'authenticated'`);
312
+ const count = adminCount.rows[0]?.count ?? 0;
313
+ return count > 0;
314
+ }
315
+ function composeExecQuery(cwd, compose, sql, params = []) {
316
+ const db = readEnvValue(cwd, "POSTGRES_DB", "supatype");
317
+ const user = readEnvValue(cwd, "POSTGRES_USER", "supatype_admin");
318
+ const envFile = join(cwd, ".env");
319
+ const composeDir = dirname(compose.composePath);
320
+ const args = [
321
+ "compose",
322
+ "-p",
323
+ compose.project,
324
+ "--project-directory",
325
+ cwd,
326
+ "-f",
327
+ compose.composePath,
328
+ ];
329
+ if (existsSync(envFile))
330
+ args.push("--env-file", envFile);
331
+ if (params.length === 0) {
332
+ args.push("exec", "-T", "db", "psql", "-U", user, "-d", db, "-tAc", sql);
333
+ const result = spawnSync("docker", args, { cwd: composeDir, encoding: "utf8" });
334
+ if (result.status !== 0) {
335
+ throw new Error((result.stderr ?? result.stdout ?? "compose psql failed").trim());
336
+ }
337
+ const text = (result.stdout ?? "").trim();
338
+ if (sql.trim().toUpperCase().startsWith("SELECT")) {
339
+ return Promise.resolve({
340
+ rows: parsePsqlScalarRows(sql, text),
341
+ rowCount: 1,
342
+ command: "SELECT",
343
+ oid: 0,
344
+ fields: [],
345
+ });
346
+ }
347
+ return Promise.resolve({
348
+ rows: [],
349
+ rowCount: 0,
350
+ command: "INSERT",
351
+ oid: 0,
352
+ fields: [],
264
353
  });
354
+ }
355
+ args.push("exec", "-T", "db", "psql", "-U", user, "-d", db, "-v", "ON_ERROR_STOP=1", "-c", interpolateSql(sql, params));
356
+ const result = spawnSync("docker", args, { cwd: composeDir, encoding: "utf8" });
357
+ if (result.status !== 0) {
358
+ throw new Error((result.stderr ?? result.stdout ?? "compose psql failed").trim());
359
+ }
360
+ const stdout = (result.stdout ?? "").trim();
361
+ const idMatch = stdout.match(/([0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})\s+\|\s+(.+)/i);
362
+ if (idMatch) {
363
+ return Promise.resolve({
364
+ rows: [{ id: idMatch[1], email: idMatch[2]?.trim() }],
365
+ rowCount: 1,
366
+ command: "INSERT",
367
+ oid: 0,
368
+ fields: [],
369
+ });
370
+ }
371
+ return Promise.resolve({
372
+ rows: [],
373
+ rowCount: 0,
374
+ command: "INSERT",
375
+ oid: 0,
376
+ fields: [],
265
377
  });
266
378
  }
267
- async function confirm(question) {
268
- const answer = await prompt(question);
269
- return answer.toLowerCase() === "y";
379
+ function parsePsqlScalarRows(sql, text) {
380
+ const upper = sql.toUpperCase();
381
+ if (upper.includes(" AS EXISTS")) {
382
+ return [{ exists: text === "t" }];
383
+ }
384
+ if (upper.includes(" AS COUNT")) {
385
+ return [{ count: Number.parseInt(text, 10) || 0 }];
386
+ }
387
+ if (text === "")
388
+ return [];
389
+ return [{ value: text }];
390
+ }
391
+ function interpolateSql(sql, params) {
392
+ return sql.replace(/\$(\d+)/g, (_match, index) => {
393
+ const value = params[Number(index) - 1];
394
+ if (value === null || value === undefined)
395
+ return "NULL";
396
+ if (typeof value === "number" || typeof value === "bigint")
397
+ return String(value);
398
+ if (typeof value === "boolean")
399
+ return value ? "TRUE" : "FALSE";
400
+ return `'${String(value).replace(/'/g, "''")}'`;
401
+ });
402
+ }
403
+ function hostComposeDbUrlFromEnv(cwd) {
404
+ const port = readEnvValue(cwd, "SUPATYPE_DEV_DB_PORT", "54329");
405
+ const user = readEnvValue(cwd, "POSTGRES_USER", "supatype_admin");
406
+ const pass = readEnvValue(cwd, "POSTGRES_PASSWORD", "postgres");
407
+ const db = readEnvValue(cwd, "POSTGRES_DB", "supatype");
408
+ return `postgresql://${user}:${pass}@127.0.0.1:${port}/${db}?sslmode=disable`;
409
+ }
410
+ async function importPg() {
411
+ try {
412
+ return await import("pg");
413
+ }
414
+ catch {
415
+ error("pg package is required for admin commands. Install it with: pnpm add pg");
416
+ process.exit(1);
417
+ }
270
418
  }
271
419
  //# sourceMappingURL=admin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/commands/admin.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"admin.js","sourceRoot":"","sources":["../../src/commands/admin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerAdopt(program: Command): void;
3
+ //# sourceMappingURL=adopt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adopt.d.ts","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAmBxC,wBAAgB,aAAa,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8DpD"}
@@ -0,0 +1,55 @@
1
+ import { loadConfig, loadSchemaAst } from "../config.js";
2
+ import { schemaPathFromProject } from "../project-config.js";
3
+ import { loadProjectLink } from "../link.js";
4
+ import { resolveTarget, targetSchemaAdopt, schemaPgSchema } from "../resolve-target.js";
5
+ import { confirm } from "../ui/confirm.js";
6
+ import { info, plain } from "../ui/messages.js";
7
+ import { withSpinner } from "../ui/progress.js";
8
+ export function registerAdopt(program) {
9
+ program
10
+ .command("adopt")
11
+ .description("Stamp Supatype-managed comments on DB objects matching the schema (adoption ceremony)")
12
+ .option("--connection <url>", "Database connection URL (overrides config)")
13
+ .option("--env <name>", "Target environment when linked")
14
+ .option("--direct", "Use local engine subprocess")
15
+ .option("--yes", "Apply stamps without interactive confirmation")
16
+ .option("--no-cache", "Force full database introspection")
17
+ .action(async (opts) => {
18
+ const cwd = process.cwd();
19
+ const config = loadConfig(cwd);
20
+ const pgSchema = schemaPgSchema(cwd);
21
+ const ast = await withSpinner("Loading schema", async () => loadSchemaAst(schemaPathFromProject(config, cwd), cwd));
22
+ const linked = loadProjectLink(cwd);
23
+ const target = linked && !opts.direct && !opts.connection
24
+ ? resolveTarget(cwd, { env: opts.env })
25
+ : resolveTarget(cwd, { env: opts.env, direct: true, connection: opts.connection });
26
+ const preview = (await targetSchemaAdopt(target, ast, {
27
+ schema: pgSchema,
28
+ noCache: opts.noCache ?? false,
29
+ yes: false,
30
+ }));
31
+ const statements = preview.stampStatements ?? [];
32
+ if (statements.length === 0) {
33
+ info("Nothing to stamp — matching objects are already managed or absent.");
34
+ return;
35
+ }
36
+ plain(`\nWill stamp ${statements.length} object(s):\n`);
37
+ for (const sql of statements) {
38
+ plain(` ${sql}`);
39
+ }
40
+ if (!opts.yes) {
41
+ const ok = await confirm("Apply adoption stamps?", { default: false });
42
+ if (!ok) {
43
+ plain("Adoption cancelled.");
44
+ return;
45
+ }
46
+ }
47
+ const result = (await targetSchemaAdopt(target, ast, {
48
+ schema: pgSchema,
49
+ noCache: opts.noCache ?? false,
50
+ yes: true,
51
+ }));
52
+ info(`Adopted: ${result.stamped ?? 0} object(s) stamped (${result.name ?? "ok"}).`);
53
+ });
54
+ }
55
+ //# sourceMappingURL=adopt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adopt.js","sourceRoot":"","sources":["../../src/commands/adopt.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMxC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuClD"}
1
+ {"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../src/commands/app.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAQxC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuClD"}