@supatype/cli 0.1.1 → 0.1.2

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 (316) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +114 -90
  3. package/.turbo/turbo-typecheck.log +2 -2
  4. package/dist/binary-cache.d.ts +2 -0
  5. package/dist/binary-cache.d.ts.map +1 -1
  6. package/dist/binary-cache.js +36 -0
  7. package/dist/binary-cache.js.map +1 -1
  8. package/dist/binary-download-lock.d.ts +12 -0
  9. package/dist/binary-download-lock.d.ts.map +1 -0
  10. package/dist/binary-download-lock.js +106 -0
  11. package/dist/binary-download-lock.js.map +1 -0
  12. package/dist/cli-package-version.d.ts +3 -0
  13. package/dist/cli-package-version.d.ts.map +1 -0
  14. package/dist/cli-package-version.js +15 -0
  15. package/dist/cli-package-version.js.map +1 -0
  16. package/dist/cli.d.ts.map +1 -1
  17. package/dist/cli.js +5 -2
  18. package/dist/cli.js.map +1 -1
  19. package/dist/commands/add.js +25 -19
  20. package/dist/commands/add.js.map +1 -1
  21. package/dist/commands/admin.d.ts.map +1 -1
  22. package/dist/commands/admin.js +22 -6
  23. package/dist/commands/admin.js.map +1 -1
  24. package/dist/commands/cache.d.ts +1 -1
  25. package/dist/commands/cache.d.ts.map +1 -1
  26. package/dist/commands/cache.js +98 -5
  27. package/dist/commands/cache.js.map +1 -1
  28. package/dist/commands/dev.d.ts.map +1 -1
  29. package/dist/commands/dev.js +26 -22
  30. package/dist/commands/dev.js.map +1 -1
  31. package/dist/commands/init.d.ts +3 -4
  32. package/dist/commands/init.d.ts.map +1 -1
  33. package/dist/commands/init.js +238 -168
  34. package/dist/commands/init.js.map +1 -1
  35. package/dist/commands/link-helpers.d.ts.map +1 -1
  36. package/dist/commands/link-helpers.js +26 -25
  37. package/dist/commands/link-helpers.js.map +1 -1
  38. package/dist/compose-local-server-image.d.ts +13 -0
  39. package/dist/compose-local-server-image.d.ts.map +1 -0
  40. package/dist/compose-local-server-image.js +57 -0
  41. package/dist/compose-local-server-image.js.map +1 -0
  42. package/dist/compose-rename.d.ts.map +1 -1
  43. package/dist/compose-rename.js +5 -8
  44. package/dist/compose-rename.js.map +1 -1
  45. package/dist/dev-compose.d.ts.map +1 -1
  46. package/dist/dev-compose.js +111 -54
  47. package/dist/dev-compose.js.map +1 -1
  48. package/dist/dev-log-bus.d.ts +5 -0
  49. package/dist/dev-log-bus.d.ts.map +1 -1
  50. package/dist/dev-log-bus.js +14 -0
  51. package/dist/dev-log-bus.js.map +1 -1
  52. package/dist/dev-log-filter.d.ts +4 -0
  53. package/dist/dev-log-filter.d.ts.map +1 -1
  54. package/dist/dev-log-filter.js +52 -0
  55. package/dist/dev-log-filter.js.map +1 -1
  56. package/dist/dev-ports.d.ts.map +1 -1
  57. package/dist/dev-ports.js +19 -12
  58. package/dist/dev-ports.js.map +1 -1
  59. package/dist/dev-ready-panel.d.ts +19 -0
  60. package/dist/dev-ready-panel.d.ts.map +1 -0
  61. package/dist/dev-ready-panel.js +49 -0
  62. package/dist/dev-ready-panel.js.map +1 -0
  63. package/dist/dev-session-lock.d.ts.map +1 -1
  64. package/dist/dev-session-lock.js +5 -8
  65. package/dist/dev-session-lock.js.map +1 -1
  66. package/dist/dev-session.d.ts +18 -5
  67. package/dist/dev-session.d.ts.map +1 -1
  68. package/dist/dev-session.js +91 -18
  69. package/dist/dev-session.js.map +1 -1
  70. package/dist/dev-shutdown.d.ts +2 -0
  71. package/dist/dev-shutdown.d.ts.map +1 -1
  72. package/dist/dev-shutdown.js +29 -15
  73. package/dist/dev-shutdown.js.map +1 -1
  74. package/dist/dev-task-colors.d.ts +3 -1
  75. package/dist/dev-task-colors.d.ts.map +1 -1
  76. package/dist/dev-task-colors.js +23 -3
  77. package/dist/dev-task-colors.js.map +1 -1
  78. package/dist/docker-runtime.js +1 -1
  79. package/dist/docker-runtime.js.map +1 -1
  80. package/dist/engine-push-output.d.ts +1 -0
  81. package/dist/engine-push-output.d.ts.map +1 -1
  82. package/dist/engine-push-output.js +4 -1
  83. package/dist/engine-push-output.js.map +1 -1
  84. package/dist/ensure-binary.d.ts.map +1 -1
  85. package/dist/ensure-binary.js +14 -2
  86. package/dist/ensure-binary.js.map +1 -1
  87. package/dist/ensure-component-binaries.d.ts +17 -0
  88. package/dist/ensure-component-binaries.d.ts.map +1 -0
  89. package/dist/ensure-component-binaries.js +45 -0
  90. package/dist/ensure-component-binaries.js.map +1 -0
  91. package/dist/ensure-dev-api-config.d.ts +3 -0
  92. package/dist/ensure-dev-api-config.d.ts.map +1 -0
  93. package/dist/ensure-dev-api-config.js +17 -0
  94. package/dist/ensure-dev-api-config.js.map +1 -0
  95. package/dist/init-dependency-versions.d.ts +13 -0
  96. package/dist/init-dependency-versions.d.ts.map +1 -0
  97. package/dist/init-dependency-versions.js +53 -0
  98. package/dist/init-dependency-versions.js.map +1 -0
  99. package/dist/init-package-json.d.ts +21 -0
  100. package/dist/init-package-json.d.ts.map +1 -0
  101. package/dist/init-package-json.js +46 -0
  102. package/dist/init-package-json.js.map +1 -0
  103. package/dist/postgres-ctl.d.ts.map +1 -1
  104. package/dist/postgres-ctl.js +2 -1
  105. package/dist/postgres-ctl.js.map +1 -1
  106. package/dist/required-host-components.d.ts +11 -0
  107. package/dist/required-host-components.d.ts.map +1 -0
  108. package/dist/required-host-components.js +25 -0
  109. package/dist/required-host-components.js.map +1 -0
  110. package/dist/resolve-api-url.d.ts +6 -0
  111. package/dist/resolve-api-url.d.ts.map +1 -0
  112. package/dist/resolve-api-url.js +39 -0
  113. package/dist/resolve-api-url.js.map +1 -0
  114. package/dist/rest-cache-admin.d.ts +33 -0
  115. package/dist/rest-cache-admin.d.ts.map +1 -0
  116. package/dist/rest-cache-admin.js +96 -0
  117. package/dist/rest-cache-admin.js.map +1 -0
  118. package/dist/scripts/postinstall.d.ts +4 -6
  119. package/dist/scripts/postinstall.d.ts.map +1 -1
  120. package/dist/scripts/postinstall.js +8 -41
  121. package/dist/scripts/postinstall.js.map +1 -1
  122. package/dist/self-host-compose.d.ts.map +1 -1
  123. package/dist/self-host-compose.js +23 -13
  124. package/dist/self-host-compose.js.map +1 -1
  125. package/dist/studio-dev-server.d.ts +4 -2
  126. package/dist/studio-dev-server.d.ts.map +1 -1
  127. package/dist/studio-dev-server.js +3 -2
  128. package/dist/studio-dev-server.js.map +1 -1
  129. package/dist/ui/brand.d.ts +2 -5
  130. package/dist/ui/brand.d.ts.map +1 -1
  131. package/dist/ui/brand.js +2 -7
  132. package/dist/ui/brand.js.map +1 -1
  133. package/dist/ui/clack-api.d.ts +44 -0
  134. package/dist/ui/clack-api.d.ts.map +1 -0
  135. package/dist/ui/clack-api.js +76 -0
  136. package/dist/ui/clack-api.js.map +1 -0
  137. package/dist/ui/clack.d.ts +14 -0
  138. package/dist/ui/clack.d.ts.map +1 -0
  139. package/dist/ui/clack.js +147 -0
  140. package/dist/ui/clack.js.map +1 -0
  141. package/dist/ui/components/FlowSpinner.d.ts +5 -0
  142. package/dist/ui/components/FlowSpinner.d.ts.map +1 -0
  143. package/dist/ui/components/FlowSpinner.js +8 -0
  144. package/dist/ui/components/FlowSpinner.js.map +1 -0
  145. package/dist/ui/components/LogoWordmark.d.ts +9 -0
  146. package/dist/ui/components/LogoWordmark.d.ts.map +1 -0
  147. package/dist/ui/components/LogoWordmark.js +17 -0
  148. package/dist/ui/components/LogoWordmark.js.map +1 -0
  149. package/dist/ui/components/PromptPanel.d.ts +5 -0
  150. package/dist/ui/components/PromptPanel.d.ts.map +1 -0
  151. package/dist/ui/components/PromptPanel.js +7 -0
  152. package/dist/ui/components/PromptPanel.js.map +1 -0
  153. package/dist/ui/components/SelectField.d.ts +11 -0
  154. package/dist/ui/components/SelectField.d.ts.map +1 -0
  155. package/dist/ui/components/SelectField.js +19 -0
  156. package/dist/ui/components/SelectField.js.map +1 -0
  157. package/dist/ui/confirm.d.ts +2 -1
  158. package/dist/ui/confirm.d.ts.map +1 -1
  159. package/dist/ui/confirm.js +4 -4
  160. package/dist/ui/confirm.js.map +1 -1
  161. package/dist/ui/dev/DevDashboard.d.ts +8 -0
  162. package/dist/ui/dev/DevDashboard.d.ts.map +1 -0
  163. package/dist/ui/dev/DevDashboard.js +151 -0
  164. package/dist/ui/dev/DevDashboard.js.map +1 -0
  165. package/dist/ui/dev/DevReadyPanelView.d.ts +7 -0
  166. package/dist/ui/dev/DevReadyPanelView.d.ts.map +1 -0
  167. package/dist/ui/dev/DevReadyPanelView.js +29 -0
  168. package/dist/ui/dev/DevReadyPanelView.js.map +1 -0
  169. package/dist/ui/fatal.d.ts.map +1 -1
  170. package/dist/ui/fatal.js +5 -11
  171. package/dist/ui/fatal.js.map +1 -1
  172. package/dist/ui/flows/FlowApp.d.ts +8 -0
  173. package/dist/ui/flows/FlowApp.d.ts.map +1 -0
  174. package/dist/ui/flows/FlowApp.js +42 -0
  175. package/dist/ui/flows/FlowApp.js.map +1 -0
  176. package/dist/ui/flows/prompt-fields.d.ts +48 -0
  177. package/dist/ui/flows/prompt-fields.d.ts.map +1 -0
  178. package/dist/ui/flows/prompt-fields.js +88 -0
  179. package/dist/ui/flows/prompt-fields.js.map +1 -0
  180. package/dist/ui/flows/types.d.ts +41 -0
  181. package/dist/ui/flows/types.d.ts.map +1 -0
  182. package/dist/ui/flows/types.js +2 -0
  183. package/dist/ui/flows/types.js.map +1 -0
  184. package/dist/ui/index.d.ts +1 -1
  185. package/dist/ui/index.js +1 -1
  186. package/dist/ui/messages.d.ts +1 -0
  187. package/dist/ui/messages.d.ts.map +1 -1
  188. package/dist/ui/messages.js +48 -8
  189. package/dist/ui/messages.js.map +1 -1
  190. package/dist/ui/progress.d.ts +5 -1
  191. package/dist/ui/progress.d.ts.map +1 -1
  192. package/dist/ui/progress.js +12 -3
  193. package/dist/ui/progress.js.map +1 -1
  194. package/dist/ui/prompts.d.ts +7 -5
  195. package/dist/ui/prompts.d.ts.map +1 -1
  196. package/dist/ui/prompts.js +15 -8
  197. package/dist/ui/prompts.js.map +1 -1
  198. package/dist/ui/runtime/cancel.d.ts +4 -0
  199. package/dist/ui/runtime/cancel.d.ts.map +1 -0
  200. package/dist/ui/runtime/cancel.js +6 -0
  201. package/dist/ui/runtime/cancel.js.map +1 -0
  202. package/dist/ui/runtime/command-chrome.d.ts +17 -0
  203. package/dist/ui/runtime/command-chrome.d.ts.map +1 -0
  204. package/dist/ui/runtime/command-chrome.js +123 -0
  205. package/dist/ui/runtime/command-chrome.js.map +1 -0
  206. package/dist/ui/runtime/dev-prompt-queue.d.ts +30 -0
  207. package/dist/ui/runtime/dev-prompt-queue.d.ts.map +1 -0
  208. package/dist/ui/runtime/dev-prompt-queue.js +57 -0
  209. package/dist/ui/runtime/dev-prompt-queue.js.map +1 -0
  210. package/dist/ui/runtime/flow-session.d.ts +4 -0
  211. package/dist/ui/runtime/flow-session.d.ts.map +1 -0
  212. package/dist/ui/runtime/flow-session.js +8 -0
  213. package/dist/ui/runtime/flow-session.js.map +1 -0
  214. package/dist/ui/runtime/run-clack-flow.d.ts +5 -0
  215. package/dist/ui/runtime/run-clack-flow.d.ts.map +1 -0
  216. package/dist/ui/runtime/run-clack-flow.js +34 -0
  217. package/dist/ui/runtime/run-clack-flow.js.map +1 -0
  218. package/dist/ui/theme.d.ts +24 -0
  219. package/dist/ui/theme.d.ts.map +1 -0
  220. package/dist/ui/theme.js +34 -0
  221. package/dist/ui/theme.js.map +1 -0
  222. package/dist/valkey-sidecar.d.ts +17 -0
  223. package/dist/valkey-sidecar.d.ts.map +1 -0
  224. package/dist/valkey-sidecar.js +94 -0
  225. package/dist/valkey-sidecar.js.map +1 -0
  226. package/package.json +9 -3
  227. package/src/binary-cache.ts +61 -0
  228. package/src/binary-download-lock.ts +124 -0
  229. package/src/cli-package-version.ts +15 -0
  230. package/src/cli.ts +6 -2
  231. package/src/commands/add.ts +26 -19
  232. package/src/commands/admin.ts +24 -6
  233. package/src/commands/cache.ts +105 -5
  234. package/src/commands/dev.ts +26 -21
  235. package/src/commands/init.ts +124 -45
  236. package/src/commands/link-helpers.ts +30 -29
  237. package/src/compose-local-server-image.ts +68 -0
  238. package/src/compose-rename.ts +5 -8
  239. package/src/dev-compose.ts +136 -51
  240. package/src/dev-log-bus.ts +18 -0
  241. package/src/dev-log-filter.ts +42 -0
  242. package/src/dev-ports.ts +22 -11
  243. package/src/dev-ready-panel.ts +63 -0
  244. package/src/dev-session-lock.ts +5 -8
  245. package/src/dev-session.ts +98 -18
  246. package/src/dev-shutdown.ts +29 -17
  247. package/src/dev-task-colors.ts +22 -3
  248. package/src/docker-runtime.ts +1 -1
  249. package/src/engine-push-output.ts +5 -1
  250. package/src/ensure-binary.ts +21 -1
  251. package/src/ensure-component-binaries.ts +71 -0
  252. package/src/ensure-dev-api-config.ts +18 -0
  253. package/src/init-dependency-versions.ts +69 -0
  254. package/src/init-package-json.ts +63 -0
  255. package/src/postgres-ctl.ts +2 -1
  256. package/src/required-host-components.ts +37 -0
  257. package/src/resolve-api-url.ts +43 -0
  258. package/src/rest-cache-admin.ts +135 -0
  259. package/src/scripts/postinstall.ts +9 -46
  260. package/src/self-host-compose.ts +22 -12
  261. package/src/studio-dev-server.ts +5 -4
  262. package/src/ui/README.md +13 -9
  263. package/src/ui/brand.ts +2 -8
  264. package/src/ui/clack-api.ts +123 -0
  265. package/src/ui/clack.ts +153 -0
  266. package/src/ui/components/FlowSpinner.tsx +15 -0
  267. package/src/ui/components/LogoWordmark.tsx +36 -0
  268. package/src/ui/components/PromptPanel.tsx +17 -0
  269. package/src/ui/components/SelectField.tsx +58 -0
  270. package/src/ui/confirm.ts +5 -4
  271. package/src/ui/dev/DevDashboard.tsx +213 -0
  272. package/src/ui/dev/DevReadyPanelView.tsx +67 -0
  273. package/src/ui/fatal.ts +5 -10
  274. package/src/ui/flows/FlowApp.tsx +67 -0
  275. package/src/ui/flows/prompt-fields.tsx +192 -0
  276. package/src/ui/flows/types.ts +50 -0
  277. package/src/ui/index.ts +1 -1
  278. package/src/ui/messages.ts +50 -8
  279. package/src/ui/progress.ts +14 -3
  280. package/src/ui/prompts.ts +17 -9
  281. package/src/ui/runtime/cancel.ts +6 -0
  282. package/src/ui/runtime/command-chrome.ts +147 -0
  283. package/src/ui/runtime/dev-prompt-queue.ts +84 -0
  284. package/src/ui/runtime/flow-session.ts +11 -0
  285. package/src/ui/runtime/run-clack-flow.tsx +52 -0
  286. package/src/ui/theme.ts +41 -0
  287. package/src/valkey-sidecar.ts +126 -0
  288. package/tests/binary-cache-cloud-overrides.test.ts +2 -2
  289. package/tests/binary-download-lock.test.ts +41 -0
  290. package/tests/cli-help.test.ts +7 -4
  291. package/tests/cli-package-version.test.ts +15 -0
  292. package/tests/command-chrome-coverage.test.ts +149 -0
  293. package/tests/command-chrome-wrap.test.ts +51 -0
  294. package/tests/config.test.ts +8 -4
  295. package/tests/dev-ready-panel.test.ts +20 -0
  296. package/tests/dev-ui.test.ts +42 -2
  297. package/tests/docker-runtime.test.ts +9 -20
  298. package/tests/ensure-dev-api-config.test.ts +22 -0
  299. package/tests/init-dependency-versions.test.ts +62 -0
  300. package/tests/init-package-json.test.ts +18 -0
  301. package/tests/init.test.ts +30 -3
  302. package/tests/required-host-components.test.ts +51 -0
  303. package/tests/resolve-api-url.test.ts +23 -0
  304. package/tests/rest-cache-admin.test.ts +28 -0
  305. package/tests/runtime-contract.test.ts +12 -3
  306. package/tests/tsconfig.json +8 -2
  307. package/tests/ui-confirm.test.ts +13 -9
  308. package/tests/ui-messages.test.ts +4 -18
  309. package/tsconfig.json +1 -0
  310. package/tsconfig.tsbuildinfo +1 -1
  311. package/vitest.config.ts +3 -0
  312. package/dist/dev-tui.d.ts +0 -24
  313. package/dist/dev-tui.d.ts.map +0 -1
  314. package/dist/dev-tui.js +0 -188
  315. package/dist/dev-tui.js.map +0 -1
  316. package/src/dev-tui.ts +0 -232
@@ -1 +1 @@
1
- {"version":3,"file":"link-helpers.d.ts","sourceRoot":"","sources":["../../src/commands/link-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,YAAY,CAAA;AA6BnB,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgFnD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS1D;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6HhB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAOtD"}
1
+ {"version":3,"file":"link-helpers.d.ts","sourceRoot":"","sources":["../../src/commands/link-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAExC,OAAO,EAKL,KAAK,WAAW,EACjB,MAAM,YAAY,CAAA;AA6BnB,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAgFnD;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAS1D;AAED,wBAAsB,aAAa,CAAC,IAAI,EAAE;IACxC,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8HhB;AAED,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAOtD"}
@@ -5,7 +5,7 @@ import { targetFetch } from "../target-client.js";
5
5
  import { error, info, plain } from "../ui/messages.js";
6
6
  import { nextSteps } from "../ui/next-steps.js";
7
7
  import { isInteractive } from "../ui/interactive.js";
8
- import { ensureNotCancelled, printLogo, clack as p } from "../ui/prompts.js";
8
+ import { ensureNotCancelled, p, runClackFlow } from "../ui/prompts.js";
9
9
  function resolveLinkToken(opts) {
10
10
  return (opts.token ??
11
11
  opts.serviceRoleKey ??
@@ -112,30 +112,31 @@ export async function runLinkAction(opts) {
112
112
  let project = opts.project;
113
113
  let url = opts.url;
114
114
  if (isInteractive() && !project && !url) {
115
- printLogo();
116
- p.intro("Link this project");
117
- const targetKind = ensureNotCancelled(await p.select({
118
- message: "Link target",
119
- options: [
120
- { value: "cloud", label: "Supatype Cloud", hint: "managed project on supatype.com" },
121
- { value: "self-host", label: "Self-host", hint: "your Kong gateway URL" },
122
- ],
123
- }));
124
- if (targetKind === "cloud") {
125
- project = ensureNotCancelled(await p.text({
126
- message: "Cloud project slug",
127
- placeholder: projectRef,
128
- defaultValue: projectRef,
129
- })).trim();
130
- }
131
- else {
132
- url = ensureNotCancelled(await p.text({
133
- message: "Kong gateway URL",
134
- placeholder: "https://api.example.com",
135
- defaultValue: "http://localhost:18473",
136
- })).trim();
137
- }
138
- p.outro("Linking...");
115
+ await runClackFlow(async () => {
116
+ p.intro("Link this project");
117
+ const targetKind = ensureNotCancelled(await p.select({
118
+ message: "Link target",
119
+ options: [
120
+ { value: "cloud", label: "Supatype Cloud", hint: "managed project on supatype.com" },
121
+ { value: "self-host", label: "Self-host", hint: "your Kong gateway URL" },
122
+ ],
123
+ }));
124
+ if (targetKind === "cloud") {
125
+ project = ensureNotCancelled(await p.text({
126
+ message: "Cloud project slug",
127
+ placeholder: projectRef,
128
+ defaultValue: projectRef,
129
+ })).trim();
130
+ }
131
+ else {
132
+ url = ensureNotCancelled(await p.text({
133
+ message: "Kong gateway URL",
134
+ placeholder: "https://api.example.com",
135
+ defaultValue: "http://localhost:18473",
136
+ })).trim();
137
+ }
138
+ p.outro("Linking...");
139
+ });
139
140
  }
140
141
  const token = resolveLinkToken(opts);
141
142
  if (opts.fixGitignore) {
@@ -1 +1 @@
1
- {"version":3,"file":"link-helpers.js","sourceRoot":"","sources":["../../src/commands/link-helpers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AACzC,OAAO,EACL,eAAe,EACf,kBAAkB,EAClB,eAAe,EACf,eAAe,GAEhB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,uBAAuB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAClF,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,kBAAkB,EAAE,SAAS,EAAE,KAAK,IAAI,CAAC,EAAE,MAAM,kBAAkB,CAAA;AAE5E,SAAS,gBAAgB,CAAC,IAGzB;IACC,OAAO,CACL,IAAI,CAAC,KAAK;QACV,IAAI,CAAC,cAAc;QACnB,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAChC,CAAA;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,MAAc,EAAE,UAAkB,EAAE,KAAa;IAChF,MAAM,WAAW,CAAC,MAAM,EAAE,cAAc,EAAE;QACxC,MAAM,EAAE,KAAK;QACb,IAAI,EAAE,aAAa,UAAU,SAAS;QACtC,KAAK;KACN,CAAC,CAAA;AACJ,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAgB;IAC3C,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,uCAAuC,CAAC,CAAA;IAEzF,IAAI;SACD,OAAO,CAAC,MAAM,CAAC;SACf,WAAW,CAAC,0BAA0B,CAAC;SACvC,MAAM,CAAC,GAAG,EAAE;QACX,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACzB,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,gCAAgC,CAAC,CAAA;YACtC,OAAM;QACR,CAAC;QACD,KAAK,CAAC,cAAc,IAAI,CAAC,UAAU,KAAK,IAAI,CAAC,IAAI,GAAG,CAAC,CAAA;QACrD,KAAK,CAAC,YAAY,IAAI,CAAC,kBAAkB,IAAI,CAAC,CAAA;QAC9C,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YAC5D,MAAM,IAAI,GAAG,IAAI,KAAK,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;YAC3D,KAAK,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC,CAAA;QACnD,CAAC;QACD,KAAK,EAAE,CAAA;IACT,CAAC,CAAC,CAAA;IAEJ,IAAI;SACD,OAAO,CAAC,YAAY,CAAC;SACrB,WAAW,CAAC,6BAA6B,CAAC;SAC1C,MAAM,CAAC,CAAC,IAAY,EAAE,EAAE;QACvB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACzB,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,KAAK,CAAC,gBAAgB,IAAI,kBAAkB,CAAC,CAAA;YAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAA;QAC9B,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,+BAA+B,IAAI,IAAI,CAAC,CAAA;IAC/C,CAAC,CAAC,CAAA;IAEJ,IAAI;SACD,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,8CAA8C,CAAC;SAC3D,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;QAC7B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACzB,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACnC,KAAK,CAAC,0DAA0D,CAAC,CAAA;YACjE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,KAAK,CAAC,wCAAwC,CAAC,CAAA;YAC/C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,MAAM,QAAQ,GAAG,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;QAC5E,MAAM,WAAW,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE;YAC7C,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,aAAa,IAAI,CAAC,UAAU,eAAe;YACjD,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACxB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAA;QACF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,IAAI,CAAC,WAAW,EAChB,SAAS,EACT;YACE,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,aAAa,IAAI,CAAC,UAAU,eAAe;YACjD,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CACF,CAAA;QACD,MAAM,OAAO,GAAG,eAAe,CAAC;YAC9B,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;YACvE,QAAQ,EAAE,IAAI;YACd,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC3D,CAAC,CAAA;QACF,eAAe,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;QAC7B,IAAI,CAAC,gBAAgB,QAAQ,YAAY,CAAC,CAAA;IAC5C,CAAC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAClD,OAAO;SACJ,MAAM,CAAC,kBAAkB,EAAE,oBAAoB,CAAC;SAChD,MAAM,CAAC,aAAa,EAAE,6BAA6B,CAAC;SACpD,MAAM,CAAC,iBAAiB,EAAE,6BAA6B,EAAE,0BAA0B,CAAC;SACpF,MAAM,CAAC,iBAAiB,EAAE,wDAAwD,CAAC;SACnF,MAAM,CAAC,0BAA0B,EAAE,2CAA2C,CAAC;SAC/E,MAAM,CAAC,cAAc,EAAE,wCAAwC,EAAE,YAAY,CAAC;SAC9E,MAAM,CAAC,iBAAiB,EAAE,4CAA4C,CAAC,CAAA;AAC5E,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,IAQnC;IACC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IACzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;IAC9B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,EAAE,IAAI,IAAI,SAAS,CAAA;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,YAAY,CAAA;IACxC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;IAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAA;IAElB,IAAI,aAAa,EAAE,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QACxC,SAAS,EAAE,CAAA;QACX,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAA;QAC5B,MAAM,UAAU,GAAG,kBAAkB,CACnC,MAAM,CAAC,CAAC,MAAM,CAAwB;YACpC,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,IAAI,EAAE,iCAAiC,EAAE;gBACpF,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,EAAE,uBAAuB,EAAE;aAC1E;SACF,CAAC,CACH,CAAA;QACD,IAAI,UAAU,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO,GAAG,kBAAkB,CAC1B,MAAM,CAAC,CAAC,IAAI,CAAC;gBACX,OAAO,EAAE,oBAAoB;gBAC7B,WAAW,EAAE,UAAU;gBACvB,YAAY,EAAE,UAAU;aACzB,CAAC,CACH,CAAC,IAAI,EAAE,CAAA;QACV,CAAC;aAAM,CAAC;YACN,GAAG,GAAG,kBAAkB,CACtB,MAAM,CAAC,CAAC,IAAI,CAAC;gBACX,OAAO,EAAE,kBAAkB;gBAC3B,WAAW,EAAE,yBAAyB;gBACtC,YAAY,EAAE,wBAAwB;aACvC,CAAC,CACH,CAAC,IAAI,EAAE,CAAA;QACV,CAAC;QACD,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;IACvB,CAAC;IAED,MAAM,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IAEpC,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,uBAAuB,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;SAAM,CAAC;QACN,uBAAuB,CAAC,GAAG,CAAC,CAAA;IAC9B,CAAC;IAED,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IAErC,IAAI,GAAG,EAAE,CAAC;QACR,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,KAAK,CAAC,yDAAyD,CAAC,CAAA;YAChE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;QACrC,MAAM,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAA;QAClD,MAAM,IAAI,GAAG,kBAAkB,CAAC;YAC9B,UAAU;YACV,MAAM;YACN,KAAK;YACL,OAAO;YACP,QAAQ;SACT,CAAC,CAAA;QACF,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,oCAAoC,OAAO,QAAQ,MAAM,EAAE,CAAC,CAAA;QACjE,SAAS,CAAC,aAAa,EAAE;YACvB,sBAAsB,GAAG,OAAO;YAChC,iBAAiB;SAClB,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IAED,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,CAAC,qEAAqE,CAAC,CAAA;QAC5E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;IAElD,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,GAAG,GAAG,MAAM,WAAW,CAAkC,WAAW,EAAE,SAAS,EAAE;YACrF,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,aAAa,OAAO,EAAE;YAC5B,KAAK;SACN,CAAC,CAAA;QACF,IAAI,YAAY,GAA4C;YAC1D,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE;SAC5C,CAAA;QACD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,WAAW,EACX,SAAS,EACT;gBACE,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,aAAa,OAAO,eAAe;gBACzC,KAAK;gBACL,KAAK,EAAE,GAAG,CAAC,KAAK;aACjB,CACF,CAAA;YACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACtB,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;YACxE,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gDAAgD;QAClD,CAAC;QACD,MAAM,IAAI,GAAG,eAAe,CAAC;YAC3B,UAAU,EAAE,OAAO;YACnB,WAAW;YACX,KAAK;YACL,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,YAAY;YACZ,QAAQ;SACT,CAAC,CAAA;QACF,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC1B,IAAI,CAAC,4BAA4B,OAAO,EAAE,CAAC,CAAA;QAC3C,SAAS,CAAC,aAAa,EAAE;YACvB,gCAAgC;YAChC,iBAAiB;SAClB,CAAC,CAAA;QACF,OAAM;IACR,CAAC;IAED,KAAK,CAAC,uEAAuE,CAAC,CAAA;IAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,KAAK,CAAC,gCAAgC,CAAC,CAAA;QACvC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC"}
1
+ {"version":3,"file":"link-helpers.js","sourceRoot":"","sources":["../../src/commands/link-helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ import type { SupatypeProjectConfig } from "./project-config.js";
2
+ /** Docker tag for compose dev when `versions.server` is `local`. */
3
+ export declare const LOCAL_SERVER_DOCKER_IMAGE = "supatype/server:local-dev";
4
+ /** Find the server repo root (directory containing `Dockerfile`) from an overrides.server binary path. */
5
+ export declare function resolveServerSourceRoot(serverOverride: string, cwd: string): string | null;
6
+ /**
7
+ * When `versions.server` is `local`, build a Linux server image from the source tree
8
+ * next to `overrides.server` so compose dev matches the contributor's binary.
9
+ */
10
+ export declare function ensureLocalServerDockerImage(cwd: string, config: SupatypeProjectConfig, brand?: {
11
+ intro?: string;
12
+ }): Promise<string | undefined>;
13
+ //# sourceMappingURL=compose-local-server-image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-local-server-image.d.ts","sourceRoot":"","sources":["../src/compose-local-server-image.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAEhE,oEAAoE;AACpE,eAAO,MAAM,yBAAyB,8BAA8B,CAAA;AAEpE,0GAA0G;AAC1G,wBAAgB,uBAAuB,CAAC,cAAc,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAU1F;AAED;;;GAGG;AACH,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,qBAAqB,EAC7B,KAAK,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACzB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAmC7B"}
@@ -0,0 +1,57 @@
1
+ import { existsSync } from "node:fs";
2
+ import { dirname, isAbsolute, join, resolve } from "node:path";
3
+ import { spawnSync } from "node:child_process";
4
+ import { VERSION_PIN_LOCAL } from "./binary-cache.js";
5
+ import { appendStackOutput, getActiveDevSession } from "./dev-session.js";
6
+ import { requireDockerDaemon } from "./docker-runtime.js";
7
+ /** Docker tag for compose dev when `versions.server` is `local`. */
8
+ export const LOCAL_SERVER_DOCKER_IMAGE = "supatype/server:local-dev";
9
+ /** Find the server repo root (directory containing `Dockerfile`) from an overrides.server binary path. */
10
+ export function resolveServerSourceRoot(serverOverride, cwd) {
11
+ const binaryPath = isAbsolute(serverOverride) ? serverOverride : resolve(cwd, serverOverride);
12
+ let dir = dirname(binaryPath);
13
+ for (let depth = 0; depth < 5; depth++) {
14
+ if (existsSync(join(dir, "Dockerfile")))
15
+ return dir;
16
+ const parent = dirname(dir);
17
+ if (parent === dir)
18
+ break;
19
+ dir = parent;
20
+ }
21
+ return null;
22
+ }
23
+ /**
24
+ * When `versions.server` is `local`, build a Linux server image from the source tree
25
+ * next to `overrides.server` so compose dev matches the contributor's binary.
26
+ */
27
+ export async function ensureLocalServerDockerImage(cwd, config, brand) {
28
+ if (config.versions?.server !== VERSION_PIN_LOCAL)
29
+ return undefined;
30
+ const override = config.overrides?.server?.trim();
31
+ if (!override)
32
+ return undefined;
33
+ const root = resolveServerSourceRoot(override, cwd);
34
+ if (!root) {
35
+ console.warn(`[supatype] ⚠ versions.server is "local" but no Dockerfile found near ${override}. ` +
36
+ "Compose will use the default supatype/server:latest image.");
37
+ return undefined;
38
+ }
39
+ requireDockerDaemon(brand?.intro ? { brand: { intro: brand.intro } } : undefined);
40
+ const dockerfile = join(root, "Dockerfile");
41
+ console.log(`[supatype] Building local server Docker image from ${root}…`);
42
+ const result = spawnSync("docker", ["build", "--progress=plain", "-t", LOCAL_SERVER_DOCKER_IMAGE, "-f", dockerfile, root], { encoding: "utf8", stdio: "pipe" });
43
+ const tui = getActiveDevSession()?.isTui() ?? false;
44
+ if (!tui) {
45
+ appendStackOutput(result.stdout, "log");
46
+ appendStackOutput(result.stderr, result.status === 0 ? "log" : "error");
47
+ }
48
+ else if (result.status !== 0) {
49
+ appendStackOutput(result.stderr || result.stdout || "docker build failed", "error");
50
+ }
51
+ if (result.status !== 0) {
52
+ throw new Error(`docker build failed for local server (exit ${result.status ?? "unknown"})`);
53
+ }
54
+ console.log(`[supatype] Local server image ready: ${LOCAL_SERVER_DOCKER_IMAGE}`);
55
+ return LOCAL_SERVER_DOCKER_IMAGE;
56
+ }
57
+ //# sourceMappingURL=compose-local-server-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-local-server-image.js","sourceRoot":"","sources":["../src/compose-local-server-image.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"compose-rename.d.ts","sourceRoot":"","sources":["../src/compose-rename.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAwC,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAIxG;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,MAAM,EACX,kBAAkB,EAAE,MAAM,EAC1B,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAqCf"}
1
+ {"version":3,"file":"compose-rename.d.ts","sourceRoot":"","sources":["../src/compose-rename.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAwC,KAAK,oBAAoB,EAAE,MAAM,wBAAwB,CAAA;AAKxG;;;GAGG;AACH,wBAAsB,0BAA0B,CAC9C,GAAG,EAAE,MAAM,EACX,kBAAkB,EAAE,MAAM,EAC1B,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAkCf"}
@@ -3,12 +3,12 @@
3
3
  */
4
4
  import { existsSync, readFileSync } from "node:fs";
5
5
  import { join } from "node:path";
6
- import * as p from "@clack/prompts";
7
6
  import { loadLocalEnvironment } from "./link.js";
8
7
  import { composeStackHasContainers } from "./dev-session-lock.js";
9
8
  import { composeProjectName, runDockerCompose } from "./self-host-compose.js";
9
+ import { confirm as uiConfirm } from "./ui/confirm.js";
10
10
  import { isInteractive } from "./ui/interactive.js";
11
- import { warn } from "./ui/messages.js";
11
+ import { success, warn } from "./ui/messages.js";
12
12
  /**
13
13
  * When `project.name` changes, the compose project slug changes too (`supatype-{name}`).
14
14
  * Offer to stop containers from the previous slug so volumes/ports do not linger.
@@ -31,17 +31,14 @@ export async function handleComposeProjectRename(cwd, currentProjectName, paths)
31
31
  warn(`Stop it manually: docker compose -p ${previousCompose} down`);
32
32
  return;
33
33
  }
34
- const stopOld = await p.confirm({
35
- message: `${message}\n\nStop the old Docker stack now?`,
36
- initialValue: true,
37
- });
38
- if (p.isCancel(stopOld) || !stopOld) {
34
+ const stopOld = await uiConfirm(`${message}\n\nStop the old Docker stack now?`, { default: true });
35
+ if (!stopOld) {
39
36
  warn(`Leaving "${previousCompose}" running. Stop it with: docker compose -p ${previousCompose} down`);
40
37
  return;
41
38
  }
42
39
  const status = runDockerCompose(paths.composePath, ["down"], cwd, previousCompose, { quiet: true });
43
40
  if (status === 0) {
44
- p.log.success(`Stopped old stack "${previousCompose}".`);
41
+ success(`Stopped old stack "${previousCompose}".`);
45
42
  warnIfHardcodedComposeScripts(cwd, previousCompose);
46
43
  }
47
44
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"compose-rename.js","sourceRoot":"","sources":["../src/compose-rename.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,KAAK,CAAC,MAAM,gBAAgB,CAAA;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAA6B,MAAM,wBAAwB,CAAA;AACxG,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAEvC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAW,EACX,kBAA0B,EAC1B,KAA2B;IAE3B,MAAM,KAAK,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAA;IACvC,MAAM,WAAW,GAAG,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;IAC7C,IAAI,CAAC,WAAW,IAAI,WAAW,KAAK,kBAAkB;QAAE,OAAM;IAE9D,MAAM,eAAe,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAA;IACvD,MAAM,cAAc,GAAG,kBAAkB,CAAC,kBAAkB,CAAC,CAAA;IAC7D,IAAI,eAAe,KAAK,cAAc;QAAE,OAAM;IAC9C,IAAI,CAAC,yBAAyB,CAAC,eAAe,CAAC;QAAE,OAAM;IAEvD,MAAM,OAAO,GACX,yBAAyB,WAAW,SAAS,kBAAkB,MAAM;QACrE,iBAAiB,eAAe,yBAAyB,CAAA;IAE3D,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,CAAC,CAAA;QACb,IAAI,CAAC,uCAAuC,eAAe,OAAO,CAAC,CAAA;QACnE,OAAM;IACR,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC;QAC9B,OAAO,EAAE,GAAG,OAAO,oCAAoC;QACvD,YAAY,EAAE,IAAI;KACnB,CAAC,CAAA;IAEF,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QACpC,IAAI,CAAC,YAAY,eAAe,8CAA8C,eAAe,OAAO,CAAC,CAAA;QACrG,OAAM;IACR,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,eAAe,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACnG,IAAI,MAAM,KAAK,CAAC,EAAE,CAAC;QACjB,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,sBAAsB,eAAe,IAAI,CAAC,CAAA;QACxD,6BAA6B,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;IACrD,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,mBAAmB,eAAe,WAAW,MAAM,6BAA6B,eAAe,OAAO,CAAC,CAAA;IAC9G,CAAC;AACH,CAAC;AAED,SAAS,6BAA6B,CAAC,GAAW,EAAE,iBAAyB;IAC3E,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IACzC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAM;IAChC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAyC,CAAA;QAC7F,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC3D,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,iBAAiB,EAAE,CAAC,EAAE,CAAC;YAChD,IAAI,CACF,yDAAyD,iBAAiB,KAAK;gBAC7E,gEAAgE,CACnE,CAAA;QACH,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,8BAA8B;IAChC,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"compose-rename.js","sourceRoot":"","sources":["../src/compose-rename.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"dev-compose.d.ts","sourceRoot":"","sources":["../src/dev-compose.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EAML,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAA;AAgB5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAG7D,OAAO,EAA+B,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAsBjF,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAIrF;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAA;CACf;AAED,kEAAkE;AAClE,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAkBD;;;GAGG;AACH,wBAAsB,oCAAoC,CACxD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,qBAAqB,EAC7B,KAAK,CAAC,EAAE,kBAAkB,GACzB,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,qBAAqB,EAC7B,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAIT;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAmXD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CA6DtG;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ChG;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA0JtH"}
1
+ {"version":3,"file":"dev-compose.d.ts","sourceRoot":"","sources":["../src/dev-compose.ts"],"names":[],"mappings":"AAAA;;GAEG;AAQH,OAAO,EAML,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAA;AAiB5B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAI7D,OAAO,EAA+B,KAAK,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAuBjF,iFAAiF;AACjF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,IAAI,CAIrF;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,OAAO,CAAA;CACf;AAED,kEAAkE;AAClE,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAkBD;;;GAGG;AACH,wBAAsB,oCAAoC,CACxD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,qBAAqB,EAC7B,KAAK,CAAC,EAAE,kBAAkB,GACzB,OAAO,CAAC,IAAI,CAAC,CA8Bf;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,qBAAqB,EAC7B,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAIT;AAED;;;;GAIG;AACH,wBAAsB,4BAA4B,CAChD,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,qBAAqB,EAC7B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAQjB;AAkZD;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,UAAU,CAAC,CA6DtG;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ChG;AAED,wBAAsB,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4MtH"}
@@ -5,20 +5,22 @@ import { existsSync, mkdirSync, writeFileSync } from "node:fs";
5
5
  import { homedir } from "node:os";
6
6
  import { dirname, join, resolve } from "node:path";
7
7
  import { spawnSync } from "node:child_process";
8
- import { startProxyDevApp } from "./app/proxy-dev-app.js";
8
+ import { startProxyDevApp, resolveProxyDevScript } from "./app/proxy-dev-app.js";
9
9
  import { loadSchemaAst } from "./config.js";
10
10
  import { connectionString, projectRootFromConfig, resolveRuntimeProvider, schemaPathFromProject, } from "./project-config.js";
11
11
  import { signJwt } from "./jwt.js";
12
12
  import { ensureDevDbPort, ensureKongPort } from "./dev-ports.js";
13
13
  import { handleComposeProjectRename } from "./compose-rename.js";
14
14
  import { recoverStaleDevSession, writeDevSessionLock } from "./dev-session-lock.js";
15
- import { readEnvValue, upsertEnvFile } from "./env-file.js";
15
+ import { endDevSession, startDevSession } from "./dev-session.js";
16
+ import { ensureDevApiConfig } from "./ensure-dev-api-config.js";
16
17
  import { COMPOSE_PINNED_IMAGE_ENV_KEYS, composeDockerImageEnv, composeProjectName, exitComposeFailed, runDockerCompose, schemaEngineImageForPush, writeSelfHostCompose, } from "./self-host-compose.js";
17
18
  import { hasEngineOverride } from "./binary-cache.js";
18
- import { startStudioViteDevServer } from "./studio-dev-server.js";
19
+ import { STUDIO_DEV_PORT, startStudioViteDevServer } from "./studio-dev-server.js";
20
+ import { ensureLocalServerDockerImage } from "./compose-local-server-image.js";
19
21
  import { ensureEngine, engineRequest } from "./engine-client.js";
20
22
  import { writeSchemaSourcePushArtifacts } from "./schema-sources.js";
21
- import { endDevSession } from "./dev-session.js";
23
+ import { readEnvValue, upsertEnvFile } from "./env-file.js";
22
24
  import { writeLocalEnvironment } from "./link.js";
23
25
  import { registerDevShutdown } from "./dev-shutdown.js";
24
26
  import { filterComposeNoise, formatEnginePushMessage, parseEngineJsonOutput, parseEnginePushOutput, } from "./engine-push-output.js";
@@ -26,6 +28,7 @@ import { withAdminRoles } from "./studio-admin-roles.js";
26
28
  import { restoreSystemRelationTargets } from "./restore-system-relation-targets.js";
27
29
  import { provisionBucketsFromAst } from "./storage-provision.js";
28
30
  import { ensureFirstAdminUserForProject } from "./commands/admin.js";
31
+ import { publishDevReady } from "./dev-ready-panel.js";
29
32
  const LOCAL_JWT_SECRET = "super-secret-jwt-token-with-at-least-32-characters-long";
30
33
  /** Default host port for compose Postgres when `overrides.engine` is set (devLocal). */
31
34
  const COMPOSE_DEV_DB_PORT = 54329;
@@ -113,7 +116,7 @@ export async function resolveHostEngineDatabaseUrl(cwd, config, explicit) {
113
116
  async function resolveKongPort(cwd) {
114
117
  return ensureKongPort(cwd, { context: "dev" });
115
118
  }
116
- function upsertDevComposeEnv(cwd, config, anonKey, serviceRoleKey, kongPort, devDbPort) {
119
+ function upsertDevComposeEnv(cwd, config, anonKey, serviceRoleKey, kongPort, devDbPort, localServerImage) {
117
120
  const apiUrl = `http://localhost:${kongPort}`;
118
121
  const imagePins = composeDockerImageEnv(config);
119
122
  const updates = {
@@ -131,6 +134,7 @@ function upsertDevComposeEnv(cwd, config, anonKey, serviceRoleKey, kongPort, dev
131
134
  SITE_URL: apiUrl,
132
135
  GOTRUE_MAILER_AUTOCONFIRM: "true",
133
136
  ...imagePins,
137
+ ...(localServerImage !== undefined && { SUPATYPE_SERVER_IMAGE: localServerImage }),
134
138
  };
135
139
  if (devDbPort !== undefined) {
136
140
  updates.SUPATYPE_DEV_DB_PORT = String(devDbPort);
@@ -141,8 +145,8 @@ function upsertDevComposeEnv(cwd, config, anonKey, serviceRoleKey, kongPort, dev
141
145
  upsertEnvFile(cwd, updates, removeImageKeys);
142
146
  }
143
147
  /** Keep compose + Studio on the same freshly signed dev JWTs; sync optional image pins from config. */
144
- function ensureDevComposeEnv(cwd, config, anonKey, serviceRoleKey, kongPort, devDbPort) {
145
- upsertDevComposeEnv(cwd, config, anonKey, serviceRoleKey, kongPort, devDbPort);
148
+ function ensureDevComposeEnv(cwd, config, anonKey, serviceRoleKey, kongPort, devDbPort, localServerImage) {
149
+ upsertDevComposeEnv(cwd, config, anonKey, serviceRoleKey, kongPort, devDbPort, localServerImage);
146
150
  }
147
151
  async function waitComposeHealthy(paths, cwd, maxMs, composeProject) {
148
152
  const composeDir = dirname(paths.composePath);
@@ -174,6 +178,29 @@ async function waitKongReady(kongPort, maxSec) {
174
178
  }
175
179
  throw new Error(`Kong gateway at ${base} did not become ready within ${maxSec}s`);
176
180
  }
181
+ /** Kong may be up while server → storage is still starting (503 or upstream errors). */
182
+ async function waitStorageApiReady(kongPort, serviceRoleKey, maxSec) {
183
+ const url = `http://localhost:${kongPort}/storage/v1/bucket`;
184
+ const headers = { Authorization: `Bearer ${serviceRoleKey}` };
185
+ for (let i = 0; i < maxSec; i++) {
186
+ try {
187
+ const res = await fetch(url, { headers });
188
+ if (res.ok)
189
+ return;
190
+ const body = await res.text();
191
+ const kongUpstreamDown = body.includes("invalid response was received from the upstream server");
192
+ if (!kongUpstreamDown && res.status !== 503) {
193
+ // Non-transient storage response (e.g. 401) — stop waiting.
194
+ return;
195
+ }
196
+ }
197
+ catch {
198
+ /* retry */
199
+ }
200
+ await new Promise((r) => setTimeout(r, 1000));
201
+ }
202
+ console.warn(`[supatype] Storage API at ${url} did not become ready within ${maxSec}s — bucket provisioning may fail.`);
203
+ }
177
204
  async function provisionDockerStorageBuckets(ast, kongPort, serviceRoleKey) {
178
205
  await provisionBucketsFromAst(ast, `http://localhost:${kongPort}/storage/v1`, serviceRoleKey);
179
206
  }
@@ -482,6 +509,7 @@ export async function pushSchemaDocker(cwd, config) {
482
509
  exitComposeFailed(upGateway, "Could not start the Compose gateway stack.", pushBrand);
483
510
  }
484
511
  await waitKongReady(kongPort, 120);
512
+ await waitStorageApiReady(kongPort, serviceRoleKey, 90);
485
513
  await provisionDockerStorageBuckets(ast, kongPort, serviceRoleKey);
486
514
  await ensureFirstAdminUserForProject(cwd, config, {
487
515
  compose: { project, composePath: paths.composePath },
@@ -501,12 +529,44 @@ export async function runDevCompose(cwd, config, opts) {
501
529
  const jwtBase = { iss: "supatype", iat: now, exp: now + 315_360_000 };
502
530
  const anonKey = signJwt({ ...jwtBase, role: "anon" }, LOCAL_JWT_SECRET);
503
531
  const serviceRoleKey = signJwt({ ...jwtBase, role: "service_role" }, LOCAL_JWT_SECRET);
504
- ensureDevComposeEnv(cwd, config, anonKey, serviceRoleKey, kongPort, devDbPort);
532
+ const devBrand = { intro: "Local development" };
533
+ const localServerImage = await ensureLocalServerDockerImage(cwd, config, devBrand);
534
+ ensureDevComposeEnv(cwd, config, anonKey, serviceRoleKey, kongPort, devDbPort, localServerImage);
505
535
  console.log(`[supatype] provider: docker — starting self-host Compose stack (project ${project}, gateway :${kongPort})...`);
506
536
  const paths = writeSelfHostCompose(cwd, config, { devLocal: true });
537
+ if (ensureDevApiConfig(cwd)) {
538
+ console.log("[supatype] API config written to .supatype/api-config.json");
539
+ }
540
+ const shutdownState = {
541
+ studioProc: null,
542
+ appProc: null,
543
+ schemaWatcher: null,
544
+ debounceTimer: null,
545
+ };
546
+ registerDevShutdown(async () => {
547
+ shutdownState.schemaWatcher?.close();
548
+ shutdownState.schemaWatcher = null;
549
+ if (shutdownState.debounceTimer) {
550
+ clearTimeout(shutdownState.debounceTimer);
551
+ shutdownState.debounceTimer = null;
552
+ }
553
+ console.log("[supatype] Shutting down compose...");
554
+ await shutdownState.studioProc?.stop();
555
+ await shutdownState.appProc?.stop();
556
+ const downStatus = runDockerCompose(paths.composePath, ["down"], cwd, project, { quiet: true });
557
+ if (downStatus === 0) {
558
+ console.log("[supatype] Compose stack stopped.");
559
+ }
560
+ else {
561
+ console.warn(`[supatype] Compose down exited with status ${downStatus}.`);
562
+ }
563
+ }, {
564
+ cwd,
565
+ compose: { cwd, composePath: paths.composePath, composeProject: project },
566
+ });
507
567
  await recoverStaleDevSession(cwd);
508
568
  await handleComposeProjectRename(cwd, config.project.name, paths);
509
- const devBrand = { intro: "Local development" };
569
+ console.log("[supatype] Bringing up Docker Compose services...");
510
570
  const upStatus = runDockerCompose(paths.composePath, ["up", "-d"], cwd, project, {
511
571
  quiet: true,
512
572
  brand: devBrand,
@@ -522,8 +582,18 @@ export async function runDevCompose(cwd, config, opts) {
522
582
  await ensureFirstAdminUserForProject(cwd, config, {
523
583
  compose: { project, composePath: paths.composePath },
524
584
  });
585
+ if (localServerImage !== undefined) {
586
+ console.log("[supatype] Recreating server with local image...");
587
+ const recreateStatus = runDockerCompose(paths.composePath, ["up", "-d", "--force-recreate", "--no-deps", "server"], cwd, project, { quiet: true, brand: devBrand });
588
+ if (recreateStatus !== 0) {
589
+ endDevSession();
590
+ exitComposeFailed(recreateStatus, "Could not recreate the server container with the local image.", devBrand);
591
+ }
592
+ }
525
593
  console.log("[supatype] Waiting for API gateway...");
526
594
  await waitKongReady(kongPort, 120);
595
+ console.log("[supatype] Waiting for storage API...");
596
+ await waitStorageApiReady(kongPort, serviceRoleKey, 90);
527
597
  writeLocalEnvironment(cwd, {
528
598
  target: "local",
529
599
  apiUrl: `http://localhost:${kongPort}`,
@@ -543,6 +613,7 @@ export async function runDevCompose(cwd, config, opts) {
543
613
  await provisionDockerStorageBuckets(ast, kongPort, serviceRoleKey);
544
614
  const pidDir = join(homedir(), ".supatype", "projects", config.project.name, "pid");
545
615
  mkdirSync(pidDir, { recursive: true });
616
+ startDevSession();
546
617
  let studioProc = null;
547
618
  const studioOverride = config.overrides?.studio;
548
619
  if (studioOverride) {
@@ -552,64 +623,50 @@ export async function runDevCompose(cwd, config, opts) {
552
623
  pidDir,
553
624
  serviceRoleKey,
554
625
  proxyTarget: `http://localhost:${kongPort}`,
555
- viteSupatypeUrl: `http://localhost:${kongPort}`,
626
+ viteSupatypeUrl: `http://localhost:${STUDIO_DEV_PORT}`,
556
627
  basePath: "/studio/",
557
628
  });
558
629
  studioProc?.start();
630
+ shutdownState.studioProc = studioProc;
559
631
  if (studioProc) {
560
- console.log("[supatype] Studio Vite dev server (overrides.studio) — live reload at /studio/");
632
+ console.log(`[supatype] Studio (overrides.studio) — live reload proxied at http://localhost:${kongPort}/studio/`);
561
633
  }
562
634
  }
563
- console.log(`
564
- [supatype] Services running (Docker Compose · project ${project}):
565
- API (Kong) http://localhost:${kongPort}
566
- REST API http://localhost:${kongPort}/rest/v1/
567
- Auth http://localhost:${kongPort}/auth/v1/
568
- Storage http://localhost:${kongPort}/storage/v1/
569
- Realtime ws://localhost:${kongPort}/realtime/v1/
570
- Studio http://localhost:${kongPort}/studio/
571
-
572
- API keys (local dev only):
573
- anon key ${anonKey}
574
- service_role ${serviceRoleKey}
575
-
576
- Press Ctrl+C to stop.
577
- `);
578
- const appProc = startProxyDevApp(cwd, config, pidDir);
579
- let schemaWatcher = null;
580
- let debounceTimer = null;
581
- registerDevShutdown(async () => {
582
- schemaWatcher?.close();
583
- schemaWatcher = null;
584
- if (debounceTimer) {
585
- clearTimeout(debounceTimer);
586
- debounceTimer = null;
587
- }
588
- console.log("[supatype] Shutting down compose...");
589
- await studioProc?.stop();
590
- await appProc?.stop();
591
- const downStatus = runDockerCompose(paths.composePath, ["down"], cwd, project, { quiet: true });
592
- if (downStatus === 0) {
593
- console.log("[supatype] Compose stack stopped.");
594
- }
595
- else {
596
- console.warn(`[supatype] Compose down exited with status ${downStatus}.`);
597
- }
598
- }, {
599
- cwd,
600
- compose: { cwd, composePath: paths.composePath, composeProject: project },
635
+ const links = [
636
+ { label: "API", url: `http://localhost:${kongPort}` },
637
+ { label: "REST", url: `http://localhost:${kongPort}/rest/v1/` },
638
+ { label: "Auth", url: `http://localhost:${kongPort}/auth/v1/` },
639
+ { label: "Storage", url: `http://localhost:${kongPort}/storage/v1/` },
640
+ { label: "Realtime", url: `ws://localhost:${kongPort}/realtime/v1/` },
641
+ ];
642
+ if (resolveProxyDevScript(config) !== null) {
643
+ links.push({ label: "App", url: `http://localhost:${kongPort}/` });
644
+ }
645
+ links.push({ label: "Studio", url: `http://localhost:${kongPort}/studio/` });
646
+ const hints = [];
647
+ if (existsSync(join(cwd, "seed.ts"))) {
648
+ hints.push("Demo data: pnpm seed");
649
+ }
650
+ publishDevReady({
651
+ title: `Services running (Docker · ${project})`,
652
+ links,
653
+ anonKey,
654
+ serviceRoleKey,
655
+ ...(hints.length > 0 ? { hints } : {}),
601
656
  });
657
+ const appProc = startProxyDevApp(cwd, config, pidDir);
658
+ shutdownState.appProc = appProc;
602
659
  if (opts.watch) {
603
660
  const schemaDir = join(projectRootFromConfig(config, cwd), config.schema?.path ?? "schema/index.ts", "..");
604
661
  console.log(`[supatype] Watching ${schemaDir} for changes...`);
605
662
  const { watch } = await import("node:fs");
606
- schemaWatcher = watch(schemaDir, { recursive: true }, (_eventType, filename) => {
663
+ shutdownState.schemaWatcher = watch(schemaDir, { recursive: true }, (_eventType, filename) => {
607
664
  if (!filename?.endsWith(".ts"))
608
665
  return;
609
- if (debounceTimer)
610
- clearTimeout(debounceTimer);
611
- debounceTimer = setTimeout(() => {
612
- debounceTimer = null;
666
+ if (shutdownState.debounceTimer)
667
+ clearTimeout(shutdownState.debounceTimer);
668
+ shutdownState.debounceTimer = setTimeout(() => {
669
+ shutdownState.debounceTimer = null;
613
670
  console.log(`\n[supatype] Change detected in ${filename}, pushing schema...`);
614
671
  runComposeSchemaPushQueued(cwd, config, paths, schemaPath, project)
615
672
  .then(async () => {