@supatype/cli 0.1.7 → 0.1.10

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 (414) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +125 -122
  3. package/.turbo/turbo-typecheck.log +1 -1
  4. package/LICENSE +202 -0
  5. package/deno.d.ts +1 -1
  6. package/dist/app/framework.js +1 -1
  7. package/dist/app/framework.js.map +1 -1
  8. package/dist/augmentation-generator.d.ts +1 -1
  9. package/dist/augmentation-generator.js +3 -3
  10. package/dist/augmentation-generator.js.map +1 -1
  11. package/dist/binary-cache.d.ts +30 -8
  12. package/dist/binary-cache.d.ts.map +1 -1
  13. package/dist/binary-cache.js +47 -35
  14. package/dist/binary-cache.js.map +1 -1
  15. package/dist/cache-pins.d.ts +1 -1
  16. package/dist/cache-pins.js +2 -2
  17. package/dist/cache-pins.js.map +1 -1
  18. package/dist/cli-artifacts.d.ts +32 -0
  19. package/dist/cli-artifacts.d.ts.map +1 -0
  20. package/dist/cli-artifacts.js +49 -0
  21. package/dist/cli-artifacts.js.map +1 -0
  22. package/dist/cli-install-method.d.ts +17 -1
  23. package/dist/cli-install-method.d.ts.map +1 -1
  24. package/dist/cli-install-method.js +32 -4
  25. package/dist/cli-install-method.js.map +1 -1
  26. package/dist/cli-package-version.d.ts +1 -1
  27. package/dist/cli-package-version.d.ts.map +1 -1
  28. package/dist/cli-package-version.js +6 -1
  29. package/dist/cli-package-version.js.map +1 -1
  30. package/dist/cli-standalone.d.ts +13 -4
  31. package/dist/cli-standalone.d.ts.map +1 -1
  32. package/dist/cli-standalone.js +86 -31
  33. package/dist/cli-standalone.js.map +1 -1
  34. package/dist/cli-version-embedded.d.ts +10 -0
  35. package/dist/cli-version-embedded.d.ts.map +1 -0
  36. package/dist/cli-version-embedded.js +13 -0
  37. package/dist/cli-version-embedded.js.map +1 -0
  38. package/dist/cli.js +1 -1
  39. package/dist/cli.js.map +1 -1
  40. package/dist/commands/add.js +4 -3
  41. package/dist/commands/add.js.map +1 -1
  42. package/dist/commands/admin.js +6 -6
  43. package/dist/commands/admin.js.map +1 -1
  44. package/dist/commands/adopt.js +1 -1
  45. package/dist/commands/adopt.js.map +1 -1
  46. package/dist/commands/app.js +2 -2
  47. package/dist/commands/app.js.map +1 -1
  48. package/dist/commands/cache.d.ts +1 -1
  49. package/dist/commands/cache.js +3 -3
  50. package/dist/commands/cache.js.map +1 -1
  51. package/dist/commands/db.d.ts +3 -3
  52. package/dist/commands/db.d.ts.map +1 -1
  53. package/dist/commands/db.js +12 -11
  54. package/dist/commands/db.js.map +1 -1
  55. package/dist/commands/deploy.d.ts +9 -9
  56. package/dist/commands/deploy.js +12 -12
  57. package/dist/commands/deploy.js.map +1 -1
  58. package/dist/commands/dev.d.ts +3 -3
  59. package/dist/commands/dev.js +17 -17
  60. package/dist/commands/dev.js.map +1 -1
  61. package/dist/commands/doctor.d.ts +1 -1
  62. package/dist/commands/doctor.js +3 -3
  63. package/dist/commands/doctor.js.map +1 -1
  64. package/dist/commands/engine.d.ts +1 -1
  65. package/dist/commands/engine.js +1 -1
  66. package/dist/commands/functions.d.ts.map +1 -1
  67. package/dist/commands/functions.js +8 -7
  68. package/dist/commands/functions.js.map +1 -1
  69. package/dist/commands/hooks.d.ts +2 -2
  70. package/dist/commands/hooks.js +4 -4
  71. package/dist/commands/hooks.js.map +1 -1
  72. package/dist/commands/init.js +28 -28
  73. package/dist/commands/init.js.map +1 -1
  74. package/dist/commands/internal.d.ts.map +1 -1
  75. package/dist/commands/internal.js +37 -0
  76. package/dist/commands/internal.js.map +1 -1
  77. package/dist/commands/login.d.ts +1 -1
  78. package/dist/commands/login.js +1 -1
  79. package/dist/commands/login.js.map +1 -1
  80. package/dist/commands/logs.d.ts +1 -1
  81. package/dist/commands/migrate.js +5 -5
  82. package/dist/commands/migrate.js.map +1 -1
  83. package/dist/commands/pg.d.ts +1 -1
  84. package/dist/commands/pg.js +1 -1
  85. package/dist/commands/plugins.js +1 -1
  86. package/dist/commands/plugins.js.map +1 -1
  87. package/dist/commands/pull.js +2 -2
  88. package/dist/commands/pull.js.map +1 -1
  89. package/dist/commands/push.js +3 -3
  90. package/dist/commands/push.js.map +1 -1
  91. package/dist/commands/self-host.d.ts +1 -1
  92. package/dist/commands/self-host.js +1 -1
  93. package/dist/commands/self-update.d.ts +2 -8
  94. package/dist/commands/self-update.d.ts.map +1 -1
  95. package/dist/commands/self-update.js +20 -12
  96. package/dist/commands/self-update.js.map +1 -1
  97. package/dist/commands/status.d.ts +1 -1
  98. package/dist/commands/update.d.ts +1 -1
  99. package/dist/commands/update.js +1 -1
  100. package/dist/config.d.ts +23 -1
  101. package/dist/config.d.ts.map +1 -1
  102. package/dist/config.js +37 -18
  103. package/dist/config.js.map +1 -1
  104. package/dist/db-preflight.d.ts +4 -4
  105. package/dist/db-preflight.js +14 -14
  106. package/dist/db-preflight.js.map +1 -1
  107. package/dist/dev-compose.d.ts +3 -3
  108. package/dist/dev-compose.js +27 -27
  109. package/dist/dev-compose.js.map +1 -1
  110. package/dist/dev-log-filter.d.ts +1 -1
  111. package/dist/dev-log-filter.d.ts.map +1 -1
  112. package/dist/dev-log-filter.js +1 -1
  113. package/dist/dev-log-filter.js.map +1 -1
  114. package/dist/dev-ports.d.ts +2 -2
  115. package/dist/dev-ports.d.ts.map +1 -1
  116. package/dist/dev-ports.js +2 -2
  117. package/dist/dev-ports.js.map +1 -1
  118. package/dist/dev-session.d.ts +5 -5
  119. package/dist/dev-session.d.ts.map +1 -1
  120. package/dist/dev-session.js +6 -6
  121. package/dist/dev-session.js.map +1 -1
  122. package/dist/dev-shutdown.d.ts +5 -5
  123. package/dist/dev-shutdown.d.ts.map +1 -1
  124. package/dist/dev-shutdown.js +7 -7
  125. package/dist/dev-shutdown.js.map +1 -1
  126. package/dist/dev-task-colors.d.ts +1 -1
  127. package/dist/dev-task-colors.d.ts.map +1 -1
  128. package/dist/dev-task-colors.js +1 -1
  129. package/dist/dev-task-colors.js.map +1 -1
  130. package/dist/docker-postgres.d.ts +5 -5
  131. package/dist/docker-postgres.d.ts.map +1 -1
  132. package/dist/docker-postgres.js +5 -5
  133. package/dist/docker-postgres.js.map +1 -1
  134. package/dist/docker-runtime.d.ts +2 -2
  135. package/dist/docker-runtime.d.ts.map +1 -1
  136. package/dist/docker-runtime.js +5 -5
  137. package/dist/docker-runtime.js.map +1 -1
  138. package/dist/engine-client.d.ts +1 -1
  139. package/dist/engine-client.js +3 -3
  140. package/dist/engine-client.js.map +1 -1
  141. package/dist/engine-push-output.js +1 -1
  142. package/dist/engine-push-output.js.map +1 -1
  143. package/dist/ensure-binary.d.ts.map +1 -1
  144. package/dist/ensure-binary.js +17 -0
  145. package/dist/ensure-binary.js.map +1 -1
  146. package/dist/ensure-component-binaries.js +1 -1
  147. package/dist/ensure-component-binaries.js.map +1 -1
  148. package/dist/env-file.d.ts +2 -2
  149. package/dist/env-file.d.ts.map +1 -1
  150. package/dist/env-file.js +1 -1
  151. package/dist/env-file.js.map +1 -1
  152. package/dist/field-masking-tier.d.ts +5 -5
  153. package/dist/field-masking-tier.d.ts.map +1 -1
  154. package/dist/field-masking-tier.js +6 -6
  155. package/dist/field-masking-tier.js.map +1 -1
  156. package/dist/functions-deno-types.d.ts +1 -1
  157. package/dist/functions-deno-types.d.ts.map +1 -1
  158. package/dist/functions-deno-types.js +3 -3
  159. package/dist/functions-deno-types.js.map +1 -1
  160. package/dist/functions-router-gen.js +1 -1
  161. package/dist/gitignore.d.ts +2 -2
  162. package/dist/gitignore.d.ts.map +1 -1
  163. package/dist/gitignore.js +3 -3
  164. package/dist/gitignore.js.map +1 -1
  165. package/dist/hook-upload.d.ts +1 -1
  166. package/dist/hook-upload.js +3 -3
  167. package/dist/hooks-generator.d.ts +1 -1
  168. package/dist/hooks-generator.js +9 -9
  169. package/dist/index.d.ts +1 -1
  170. package/dist/index.js +1 -1
  171. package/dist/init-project-detect.d.ts +1 -1
  172. package/dist/init-project-detect.d.ts.map +1 -1
  173. package/dist/init-project-detect.js +1 -1
  174. package/dist/init-project-detect.js.map +1 -1
  175. package/dist/link.d.ts +1 -1
  176. package/dist/link.d.ts.map +1 -1
  177. package/dist/local-secrets.d.ts +5 -5
  178. package/dist/local-secrets.js +5 -5
  179. package/dist/main.d.ts +2 -0
  180. package/dist/main.d.ts.map +1 -0
  181. package/dist/main.js +20 -0
  182. package/dist/main.js.map +1 -0
  183. package/dist/model-hooks.d.ts +3 -3
  184. package/dist/model-hooks.js +4 -4
  185. package/dist/pgbouncer-userlist.d.ts +1 -1
  186. package/dist/pgbouncer-userlist.d.ts.map +1 -1
  187. package/dist/pgbouncer-userlist.js +2 -2
  188. package/dist/pgbouncer-userlist.js.map +1 -1
  189. package/dist/postgres-ctl.d.ts +1 -1
  190. package/dist/postgres-ctl.js +4 -4
  191. package/dist/postgres-ctl.js.map +1 -1
  192. package/dist/process-manager.d.ts +2 -2
  193. package/dist/process-manager.d.ts.map +1 -1
  194. package/dist/process-manager.js +4 -4
  195. package/dist/process-manager.js.map +1 -1
  196. package/dist/project-config.d.ts +12 -12
  197. package/dist/project-config.d.ts.map +1 -1
  198. package/dist/project-config.js +9 -9
  199. package/dist/project-config.js.map +1 -1
  200. package/dist/pull-utils.d.ts +2 -2
  201. package/dist/pull-utils.d.ts.map +1 -1
  202. package/dist/pull-utils.js +4 -4
  203. package/dist/pull-utils.js.map +1 -1
  204. package/dist/realtime-launch.js +1 -1
  205. package/dist/realtime-launch.js.map +1 -1
  206. package/dist/release-pins.d.ts +1 -1
  207. package/dist/release-pins.js +2 -2
  208. package/dist/release-pins.js.map +1 -1
  209. package/dist/resolve-api-url.d.ts.map +1 -1
  210. package/dist/resolve-api-url.js +4 -3
  211. package/dist/resolve-api-url.js.map +1 -1
  212. package/dist/resolve-target.d.ts +1 -1
  213. package/dist/resolve-target.d.ts.map +1 -1
  214. package/dist/rest-cache-admin.js +2 -2
  215. package/dist/rest-cache-admin.js.map +1 -1
  216. package/dist/runtime-routes.d.ts +1 -1
  217. package/dist/runtime-routes.js +1 -1
  218. package/dist/schema-ast-v2.d.ts +3 -3
  219. package/dist/schema-ast-v2.d.ts.map +1 -1
  220. package/dist/schema-ast-v2.js +2 -2
  221. package/dist/schema-ast-v2.js.map +1 -1
  222. package/dist/schema-push-lock.js +3 -3
  223. package/dist/schema-push-lock.js.map +1 -1
  224. package/dist/scripts/postinstall.d.ts +1 -1
  225. package/dist/scripts/postinstall.js +1 -1
  226. package/dist/self-host-compose.d.ts +5 -5
  227. package/dist/self-host-compose.d.ts.map +1 -1
  228. package/dist/self-host-compose.js +24 -24
  229. package/dist/self-host-compose.js.map +1 -1
  230. package/dist/service-role-check.js +3 -3
  231. package/dist/service-role-check.js.map +1 -1
  232. package/dist/storage-provision.d.ts +1 -1
  233. package/dist/storage-provision.js +3 -3
  234. package/dist/storage-provision.js.map +1 -1
  235. package/dist/studio-dev-server.d.ts +1 -1
  236. package/dist/studio-dev-server.d.ts.map +1 -1
  237. package/dist/systemd.d.ts +1 -1
  238. package/dist/systemd.js +1 -1
  239. package/dist/target-client.js +1 -1
  240. package/dist/target-client.js.map +1 -1
  241. package/dist/tsx-runner.d.ts +12 -0
  242. package/dist/tsx-runner.d.ts.map +1 -1
  243. package/dist/tsx-runner.js +36 -2
  244. package/dist/tsx-runner.js.map +1 -1
  245. package/dist/type-extractor.js +27 -27
  246. package/dist/type-extractor.js.map +1 -1
  247. package/dist/type-resolver.js +1 -1
  248. package/dist/type-resolver.js.map +1 -1
  249. package/dist/ui/brand.d.ts +1 -1
  250. package/dist/ui/brand.js +1 -1
  251. package/dist/ui/components/LogoWordmark.d.ts +1 -1
  252. package/dist/ui/components/LogoWordmark.d.ts.map +1 -1
  253. package/dist/ui/components/LogoWordmark.js +1 -1
  254. package/dist/ui/components/LogoWordmark.js.map +1 -1
  255. package/dist/ui/components/SelectField.js +1 -1
  256. package/dist/ui/components/SelectField.js.map +1 -1
  257. package/dist/ui/confirm.d.ts +1 -1
  258. package/dist/ui/confirm.js +1 -1
  259. package/dist/ui/fatal.d.ts +1 -1
  260. package/dist/ui/fatal.d.ts.map +1 -1
  261. package/dist/ui/fatal.js +1 -1
  262. package/dist/ui/fatal.js.map +1 -1
  263. package/dist/ui/flows/prompt-fields.js +1 -1
  264. package/dist/ui/flows/prompt-fields.js.map +1 -1
  265. package/dist/ui/interactive.d.ts +1 -1
  266. package/dist/ui/interactive.d.ts.map +1 -1
  267. package/dist/ui/interactive.js +1 -1
  268. package/dist/ui/interactive.js.map +1 -1
  269. package/dist/ui/progress.d.ts +1 -1
  270. package/dist/ui/progress.js +1 -1
  271. package/dist/ui/runtime/command-chrome.js +1 -1
  272. package/dist/ui/runtime/command-chrome.js.map +1 -1
  273. package/dist/ui/runtime/run-clack-flow.js +1 -1
  274. package/dist/ui/runtime/run-clack-flow.js.map +1 -1
  275. package/dist/ui/runtime/stdin-after-ink.js +1 -1
  276. package/dist/ui/runtime/stdin-after-ink.js.map +1 -1
  277. package/dist/ui/theme.d.ts +1 -1
  278. package/dist/ui/theme.js +1 -1
  279. package/dist/valkey-sidecar.d.ts +1 -1
  280. package/dist/valkey-sidecar.d.ts.map +1 -1
  281. package/dist/valkey-sidecar.js +2 -2
  282. package/dist/valkey-sidecar.js.map +1 -1
  283. package/package.json +3 -2
  284. package/scripts/build-release-artifacts.sh +112 -0
  285. package/scripts/generate-homebrew-formula.mjs +47 -45
  286. package/scripts/mirror-deno-release.sh +1 -1
  287. package/src/TYPE-RESOLUTION.md +31 -31
  288. package/src/app/framework.ts +1 -1
  289. package/src/augmentation-generator.ts +3 -3
  290. package/src/binary-cache.ts +51 -36
  291. package/src/cache-pins.ts +2 -2
  292. package/src/cli-artifacts.ts +65 -0
  293. package/src/cli-install-method.ts +35 -4
  294. package/src/cli-package-version.ts +5 -1
  295. package/src/cli-standalone.ts +116 -34
  296. package/src/cli-version-embedded.ts +12 -0
  297. package/src/cli.ts +1 -1
  298. package/src/commands/add.ts +4 -3
  299. package/src/commands/admin.ts +6 -6
  300. package/src/commands/adopt.ts +1 -1
  301. package/src/commands/app.ts +2 -2
  302. package/src/commands/cache.ts +3 -3
  303. package/src/commands/db.ts +12 -11
  304. package/src/commands/deploy.ts +12 -12
  305. package/src/commands/dev.ts +19 -19
  306. package/src/commands/doctor.ts +3 -3
  307. package/src/commands/engine.ts +1 -1
  308. package/src/commands/functions.ts +8 -7
  309. package/src/commands/hooks.ts +6 -6
  310. package/src/commands/init.ts +28 -28
  311. package/src/commands/internal.ts +37 -0
  312. package/src/commands/login.ts +2 -2
  313. package/src/commands/logs.ts +1 -1
  314. package/src/commands/migrate.ts +5 -5
  315. package/src/commands/pg.ts +1 -1
  316. package/src/commands/plugins.ts +1 -1
  317. package/src/commands/pull.ts +2 -2
  318. package/src/commands/push.ts +3 -3
  319. package/src/commands/self-host.ts +1 -1
  320. package/src/commands/self-update.ts +23 -73
  321. package/src/commands/status.ts +1 -1
  322. package/src/commands/update.ts +1 -1
  323. package/src/config.ts +39 -18
  324. package/src/db-preflight.ts +15 -15
  325. package/src/dev-compose.ts +27 -27
  326. package/src/dev-log-filter.ts +1 -1
  327. package/src/dev-ports.ts +3 -3
  328. package/src/dev-session.ts +6 -6
  329. package/src/dev-shutdown.ts +8 -8
  330. package/src/dev-task-colors.ts +1 -1
  331. package/src/docker-postgres.ts +6 -6
  332. package/src/docker-runtime.ts +5 -5
  333. package/src/engine-client.ts +3 -3
  334. package/src/engine-push-output.ts +1 -1
  335. package/src/ensure-binary.ts +20 -0
  336. package/src/ensure-component-binaries.ts +1 -1
  337. package/src/env-file.ts +2 -2
  338. package/src/field-masking-tier.ts +6 -6
  339. package/src/functions-deno-types.ts +3 -3
  340. package/src/functions-router-gen.ts +1 -1
  341. package/src/gitignore.ts +3 -3
  342. package/src/hook-upload.ts +3 -3
  343. package/src/hooks-generator.ts +9 -9
  344. package/src/index.ts +1 -1
  345. package/src/init-project-detect.ts +1 -1
  346. package/src/link.ts +1 -1
  347. package/src/local-secrets.ts +5 -5
  348. package/src/main.ts +20 -0
  349. package/src/model-hooks.ts +4 -4
  350. package/src/pgbouncer-userlist.ts +2 -2
  351. package/src/postgres-ctl.ts +4 -4
  352. package/src/process-manager.ts +4 -4
  353. package/src/project-config.ts +16 -16
  354. package/src/pull-utils.ts +4 -4
  355. package/src/realtime-launch.ts +1 -1
  356. package/src/release-pins.ts +2 -2
  357. package/src/resolve-api-url.ts +4 -3
  358. package/src/resolve-target.ts +1 -1
  359. package/src/rest-cache-admin.ts +2 -2
  360. package/src/runtime-routes.ts +2 -2
  361. package/src/schema-ast-v2.ts +4 -4
  362. package/src/schema-push-lock.ts +3 -3
  363. package/src/scripts/postinstall.ts +1 -1
  364. package/src/self-host-compose.ts +25 -25
  365. package/src/service-role-check.ts +3 -3
  366. package/src/storage-provision.ts +3 -3
  367. package/src/studio-dev-server.ts +1 -1
  368. package/src/systemd.ts +1 -1
  369. package/src/target-client.ts +1 -1
  370. package/src/tsx-runner.ts +41 -2
  371. package/src/type-extractor.ts +27 -27
  372. package/src/type-resolver.ts +1 -1
  373. package/src/ui/README.md +1 -1
  374. package/src/ui/brand.ts +1 -1
  375. package/src/ui/components/LogoWordmark.tsx +1 -1
  376. package/src/ui/components/SelectField.tsx +1 -1
  377. package/src/ui/confirm.ts +1 -1
  378. package/src/ui/fatal.ts +1 -1
  379. package/src/ui/flows/prompt-fields.tsx +1 -1
  380. package/src/ui/interactive.ts +1 -1
  381. package/src/ui/progress.ts +1 -1
  382. package/src/ui/runtime/command-chrome.ts +1 -1
  383. package/src/ui/runtime/run-clack-flow.tsx +1 -1
  384. package/src/ui/runtime/stdin-after-ink.ts +1 -1
  385. package/src/ui/theme.ts +1 -1
  386. package/src/valkey-sidecar.ts +2 -2
  387. package/tests/access-composition.test.ts +6 -6
  388. package/tests/admin-studio-membership.test.ts +1 -1
  389. package/tests/api-schemas.test.ts +1 -1
  390. package/tests/archive-name-alias.test.ts +1 -1
  391. package/tests/cli-help.test.ts +8 -2
  392. package/tests/config-load-failure.test.ts +44 -0
  393. package/tests/db-preflight.test.ts +1 -1
  394. package/tests/doctor-render.test.ts +3 -3
  395. package/tests/doctor-service-role.test.ts +2 -2
  396. package/tests/engine-push-output.test.ts +1 -1
  397. package/tests/env-file.test.ts +3 -3
  398. package/tests/external-database-compose.test.ts +5 -5
  399. package/tests/external-database-config.test.ts +2 -2
  400. package/tests/field-masking-tier.test.ts +1 -1
  401. package/tests/homebrew-formula.test.ts +68 -26
  402. package/tests/hook-upload.test.ts +1 -1
  403. package/tests/hooks-generator.test.ts +1 -1
  404. package/tests/init.test.ts +2 -2
  405. package/tests/keys.test.ts +8 -2
  406. package/tests/local-secrets.test.ts +3 -3
  407. package/tests/model-hooks.test.ts +6 -6
  408. package/tests/runtime-contract.test.ts +2 -2
  409. package/tests/service-role-check.test.ts +3 -3
  410. package/tests/storage-provision.test.ts +1 -1
  411. package/tests/type-extractor.test.ts +2 -2
  412. package/tsconfig.tsbuildinfo +1 -1
  413. package/vitest.config.ts +7 -1
  414. package/scripts/build-release-bundle.mjs +0 -27
package/src/main.ts ADDED
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Entry point for the standalone binary.
3
+ *
4
+ * `bin/supatype.js` stays the npm entry: it loads the CLI with a dynamic import, which Bun
5
+ * cannot follow when compiling. Given `import("../dist/cli.js")` it emits a binary that
6
+ * bundles one module and then fails at runtime with
7
+ * `Cannot find module '../dist/cli.js' from '/$bunfs/root/supatype'`. The import below is
8
+ * static, so the whole graph is embedded.
9
+ */
10
+ import { run } from "./cli.js"
11
+ import { reportCliFatal } from "./ui/fatal.js"
12
+
13
+ // reportCliFatal rather than console.error: it is what run() already uses for a failed
14
+ // command, and it prints a stack under SUPATYPE_DEBUG=1. Open-coding the message here would
15
+ // make a crash report from a curl | bash user less useful than one from an npm user. This
16
+ // only fires for a throw during command registration, since run() catches everything after.
17
+ run().catch((err: unknown) => {
18
+ reportCliFatal(err)
19
+ process.exit(1)
20
+ })
@@ -2,7 +2,7 @@
2
2
  * Validate the lifecycle hooks a schema declares against the functions that exist.
3
3
  *
4
4
  * A hook names a function directory. If the name is wrong, the honest failure is at push time with
5
- * the path we searched not at runtime, where the symptom is a hook that never fires and a write
5
+ * the path we searched, not at runtime, where the symptom is a hook that never fires and a write
6
6
  * that quietly succeeds unvalidated. That silence is the whole reason this check exists.
7
7
  *
8
8
  * Kept out of the extractor on purpose: resolving the functions directory needs the project config,
@@ -119,7 +119,7 @@ export interface ManifestHookEntry {
119
119
  }
120
120
 
121
121
  /**
122
- * The hook map for `.supatype/manifest.json`, keyed by **table name** because that is what the
122
+ * The hook map for `.supatype/manifest.json`, keyed by **table name**, because that is what the
123
123
  * server matches a request path against, not the model name.
124
124
  *
125
125
  * Defaults are resolved here rather than in the server: one place decides that a `before*` hook
@@ -172,7 +172,7 @@ export const DEFAULT_HOOK_TIMEOUT_MS = 2000
172
172
  *
173
173
  * **Only updates a manifest that is already there.** Creating one from scratch here would be a
174
174
  * hazard: `functions_enabled` is a plain bool on the server's side, so a manifest carrying only
175
- * hooks would read as functions *disabled* the exact defect this repo fixed a commit ago, arriving
175
+ * hooks would read as functions *disabled*, the exact defect this repo fixed a commit ago, arriving
176
176
  * by a different door. The compose path owns creation; this owns one key.
177
177
  *
178
178
  * Returns true when the file was rewritten.
@@ -216,7 +216,7 @@ export interface HooksReport {
216
216
  /**
217
217
  * What `supatype doctor` needs to answer "will my hooks actually run?".
218
218
  *
219
- * Local facts only the schema, the functions on disk, and the manifest the server reads. No probe
219
+ * Local facts only: the schema, the functions on disk, and the manifest the server reads. No probe
220
220
  * of a running worker, so the answer is the same whether or not the stack is up, and a report that
221
221
  * needs a stack is a report nobody runs before deploying.
222
222
  *
@@ -1,13 +1,13 @@
1
1
  import { createHash } from "node:crypto"
2
2
 
3
- /** PgBouncer md5 auth: "md5" + md5(password + username) same as supatype-cloud / self-host. */
3
+ /** PgBouncer md5 auth: "md5" + md5(password + username), same as supatype-cloud / self-host. */
4
4
  export function pgbouncerMd5Hash(password: string, username: string): string {
5
5
  return "md5" + createHash("md5").update(password + username).digest("hex")
6
6
  }
7
7
 
8
8
  /** Two roles used by local compose: superuser pools (GoTrue, engine) and PostgREST. */
9
9
  export function pgbouncerUserlistContent(pgPassword: string): string {
10
- return `# PgBouncer md5 userlist matches supatype-cloud transaction pool (auth_type = md5).
10
+ return `# PgBouncer md5 userlist, matches supatype-cloud transaction pool (auth_type = md5).
11
11
  # Regenerated by supatype dev --local / init from POSTGRES_PASSWORD.
12
12
  "supatype_admin" "${pgbouncerMd5Hash(pgPassword, "supatype_admin")}"
13
13
  "authenticator" "${pgbouncerMd5Hash(pgPassword, "authenticator")}"
@@ -1,5 +1,5 @@
1
1
  /**
2
- * postgres-ctl wrappers around pg_ctl, initdb, and pg_isready for managing
2
+ * postgres-ctl: wrappers around pg_ctl, initdb, and pg_isready for managing
3
3
  * a native Postgres installation.
4
4
  */
5
5
 
@@ -95,7 +95,7 @@ export function start(opts: PgOptions): void {
95
95
  const bin = pgBin(opts.pgBinDir, "pg_ctl")
96
96
  const logPath = opts.logPath ?? join(opts.dataDir, "postgres.log")
97
97
 
98
- // `supatype_mask` is a planner hook, so it has to be preloaded `CREATE EXTENSION` alone does
98
+ // `supatype_mask` is a planner hook, so it has to be preloaded, `CREATE EXTENSION` alone does
99
99
  // nothing without it. Only when the archive actually carries the library: an install downloaded
100
100
  // before it was bundled would fail to start with "could not access file".
101
101
  //
@@ -131,7 +131,7 @@ export function stop(opts: PgOptions): void {
131
131
  encoding: "utf8",
132
132
  env: pgSpawnEnv(opts.pgBinDir),
133
133
  })
134
- // Ignore exit code Postgres may already be stopped.
134
+ // Ignore exit code: Postgres may already be stopped.
135
135
  void result
136
136
  }
137
137
 
@@ -175,7 +175,7 @@ export async function isPortInUse(port: number): Promise<boolean> {
175
175
  return new Promise((resolve) => {
176
176
  const server = createServer()
177
177
  server.once("error", (err: NodeJS.ErrnoException) => {
178
- // EADDRINUSE something is listening. EACCES Windows excluded/reserved port range.
178
+ // EADDRINUSE: something is listening. EACCES, Windows excluded/reserved port range.
179
179
  resolve(err.code === "EADDRINUSE" || err.code === "EACCES")
180
180
  })
181
181
  server.once("listening", () => {
@@ -1,5 +1,5 @@
1
1
  /**
2
- * ProcessManager spawn a child process, write its PID, stream logs with a
2
+ * ProcessManager: spawn a child process, write its PID, stream logs with a
3
3
  * colored prefix, and restart on crash with exponential backoff.
4
4
  */
5
5
 
@@ -73,7 +73,7 @@ export class ProcessManager {
73
73
  this.backoffMs = this.opts.initialBackoffMs
74
74
  }
75
75
 
76
- /** Start the process. Returns immediately the process runs in the background. */
76
+ /** Start the process. Returns immediately, the process runs in the background. */
77
77
  start(): void {
78
78
  this.stopped = false
79
79
  this.spawn()
@@ -201,7 +201,7 @@ export class ProcessManager {
201
201
  mkdirSync(this.opts.pidDir, { recursive: true })
202
202
  writeFileSync(join(this.opts.pidDir, `${this.opts.label}.pid`), String(pid))
203
203
  } catch {
204
- // Non-fatal PID tracking is best-effort.
204
+ // Non-fatal: PID tracking is best-effort.
205
205
  }
206
206
  }
207
207
 
@@ -209,7 +209,7 @@ export class ProcessManager {
209
209
  try {
210
210
  await unlink(join(this.opts.pidDir, `${this.opts.label}.pid`))
211
211
  } catch {
212
- // Ignore file may already be gone.
212
+ // Ignore: file may already be gone.
213
213
  }
214
214
  }
215
215
  }
@@ -21,7 +21,7 @@ export interface SupatypeProjectConfig {
21
21
  root?: string
22
22
  }
23
23
  project: {
24
- /** Project name used for per-project state dirs and logging. */
24
+ /** Project name: used for per-project state dirs and logging. */
25
25
  name: string
26
26
  /** Cloud project reference (set by `supatype link`). */
27
27
  ref?: string
@@ -32,7 +32,7 @@ export interface SupatypeProjectConfig {
32
32
  * "native" = supatype manages a native Postgres binary (downloaded from CDN).
33
33
  * "docker" = supatype runs supatype/postgres via Docker (includes all extensions).
34
34
  *
35
- * Omitted when `external` is set there is no backend for Supatype to choose.
35
+ * Omitted when `external` is set, there is no backend for Supatype to choose.
36
36
  */
37
37
  provider?: "native" | "docker"
38
38
  /**
@@ -50,7 +50,7 @@ export interface SupatypeProjectConfig {
50
50
  * Postgres URL for every service in the stack.
51
51
  *
52
52
  * The role in it owns the schema and runs migrations. PostgREST connects as `authenticator`
53
- * separately see `supatype db check`, which reports what this database is missing.
53
+ * separately: see `supatype db check`, which reports what this database is missing.
54
54
  */
55
55
  url: string
56
56
  /**
@@ -215,12 +215,12 @@ export interface SupatypeProjectConfig {
215
215
  /**
216
216
  * Schemas the REST API exposes, in order (`PGRST_DB_SCHEMA`).
217
217
  *
218
- * Defaults to `pg_schema` plus the ones the stack needs for itself `supatype` for Studio's
219
- * views, `graphql_public`, `auth` so setting `pg_schema` alone does the sensible thing.
218
+ * Defaults to `pg_schema` plus the ones the stack needs for itself, `supatype` for Studio's
219
+ * views, `graphql_public`, `auth`: so setting `pg_schema` alone does the sensible thing.
220
220
  *
221
221
  * It used to be a hardcoded literal, which meant choosing a non-`public` `pg_schema` gave you
222
222
  * a correct push and an API that answered `PGRST106` for everything: the engine had moved and
223
- * PostgREST had not been told. State this explicitly when you need a different set an extra
223
+ * PostgREST had not been told. State this explicitly when you need a different set, an extra
224
224
  * schema of your own, or to stop exposing one.
225
225
  */
226
226
  api_schemas?: readonly string[]
@@ -238,7 +238,7 @@ export interface SupatypeProjectConfig {
238
238
  *
239
239
  * **Model hooks are not listed here and do not need to be.** A hook is procedural: only the API
240
240
  * server calls it, around a write the caller was already permitted to make, and the gateway
241
- * refuses its route from outside so there is no attacker to withhold it from, and the trust is
241
+ * refuses its route from outside, so there is no attacker to withhold it from, and the trust is
242
242
  * the same a trigger already has.
243
243
  */
244
244
  serviceRole?: readonly string[]
@@ -430,7 +430,7 @@ function validateExternalDatabase(cfg: Record<string, unknown>, filename: string
430
430
  const url = (external as Record<string, unknown>)["url"]
431
431
  if (typeof url !== "string" || url.trim().length === 0) {
432
432
  throw new Error(
433
- `${filename}: database.external.url is required the Postgres URL every service connects to.\n` +
433
+ `${filename}: database.external.url is required, the Postgres URL every service connects to.\n` +
434
434
  "Reading it from the environment keeps the password out of version control:\n" +
435
435
  " database: { external: { url: process.env.DATABASE_URL! } }\n" +
436
436
  "The project's .env is loaded before the config module, so DATABASE_URL there is enough.",
@@ -450,7 +450,7 @@ function validateExternalDatabase(cfg: Record<string, unknown>, filename: string
450
450
  if (database["provider"] !== undefined) {
451
451
  throw new Error(
452
452
  `${filename}: database.provider ("${String(database["provider"])}") and database.external ` +
453
- "cannot both be set provider chooses a Postgres for Supatype to run, external says one " +
453
+ "cannot both be set, provider chooses a Postgres for Supatype to run, external says one " +
454
454
  "already exists.\n" +
455
455
  "Remove database.provider. The runtime stack is still chosen by the top-level `provider`.",
456
456
  )
@@ -459,7 +459,7 @@ function validateExternalDatabase(cfg: Record<string, unknown>, filename: string
459
459
  const server = cfg["server"] as Record<string, unknown> | undefined
460
460
  if (server?.["mode"] === "managed") {
461
461
  throw new Error(
462
- `${filename}: database.external is not supported with server.mode "managed" on the cloud ` +
462
+ `${filename}: database.external is not supported with server.mode "managed", on the cloud ` +
463
463
  "path the database is part of what is being provided.\n" +
464
464
  "Use an external database with a self-hosted stack (server.mode \"dev\" or \"standalone\").",
465
465
  )
@@ -469,7 +469,7 @@ function validateExternalDatabase(cfg: Record<string, unknown>, filename: string
469
469
  if (typeof connection === "string" && connection.trim() !== url.trim()) {
470
470
  throw new Error(
471
471
  `${filename}: connection and database.external.url are both set and disagree.\n` +
472
- "database.external.url is what the whole stack uses, CLI commands included remove " +
472
+ "database.external.url is what the whole stack uses, CLI commands included, remove " +
473
473
  "`connection`.",
474
474
  )
475
475
  }
@@ -496,11 +496,11 @@ export function functionsPathCandidatesFromProject(cfg: SupatypeProjectConfig, c
496
496
  }
497
497
 
498
498
  /**
499
- * Directory holding **model hooks** procedural handlers the API calls around a write.
499
+ * Directory holding **model hooks**, procedural handlers the API calls around a write.
500
500
  *
501
501
  * Separate from `functions/` because the two have different trust models: a function is a public
502
502
  * endpoint anyone with the anon key may invoke, while a hook is only ever called by the server. One
503
- * worker serves both, and the gateway refuses the hook namespace from outside so keeping them in
503
+ * worker serves both, and the gateway refuses the hook namespace from outside, so keeping them in
504
504
  * separate directories is what makes that boundary structural rather than a list to maintain.
505
505
  */
506
506
  export function hooksPathFromProject(cfg: SupatypeProjectConfig, cwd: string): string {
@@ -565,7 +565,7 @@ export function resolveRuntimeProvider(cfg: SupatypeProjectConfig): "native" | "
565
565
  *
566
566
  * Resolved here rather than in the compose template so there is one definition of the format.
567
567
  *
568
- * This does **not** check that the names exist it cannot, since it has only the config. An earlier
568
+ * This does **not** check that the names exist, it cannot, since it has only the config. An earlier
569
569
  * version of this comment claimed a typo was "visible in one place rather than silently granting
570
570
  * nothing", which was false: nothing read the list except the two callers that turn it into an env var.
571
571
  * `checkServiceRoleRoutes` in `service-role-check.ts` is what actually resolves the names, and `push`
@@ -614,7 +614,7 @@ export function externalDatabaseUrl(cfg: SupatypeProjectConfig): string | undefi
614
614
  * Whether realtime should run.
615
615
  *
616
616
  * `false` only when stated. An external database that cannot support logical replication is detected
617
- * rather than declared the capability record is what Studio and `doctor` read, so an operator who
617
+ * rather than declared: the capability record is what Studio and `doctor` read, so an operator who
618
618
  * has not thought about it gets a truthful answer instead of a silent default.
619
619
  */
620
620
  export function realtimeEnabled(cfg: SupatypeProjectConfig): boolean {
@@ -643,7 +643,7 @@ export const STACK_API_SCHEMAS = ["supatype", "graphql_public", "auth"] as const
643
643
  * while PostgREST kept serving `public`, so every request answered `PGRST106` and nothing in the
644
644
  * output mentioned the setting that caused it.
645
645
  *
646
- * `api_schemas` replaces the whole list when stated including the stack schemas, so dropping
646
+ * `api_schemas` replaces the whole list when stated, including the stack schemas, so dropping
647
647
  * `supatype` from it is a supported way to stop exposing Studio's views. Order is preserved and
648
648
  * duplicates removed: PostgREST serves the first entry as the default profile, so the managed
649
649
  * schema has to lead.
package/src/pull-utils.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Utilities for `pull` and `introspect` map engine DatabaseState to Model<> scaffold.
2
+ * Utilities for `pull` and `introspect`, map engine DatabaseState to Model<> scaffold.
3
3
  */
4
4
 
5
5
  export interface DbColumnState {
@@ -104,7 +104,7 @@ export function pgTypeToModelField(col: ColumnInfo): string {
104
104
  const base = name.replace(/_id$/, "")
105
105
  const rel = base.replace(/_([a-z])/g, (_, c: string) => c.toUpperCase())
106
106
  const relName = rel.charAt(0).toUpperCase() + rel.slice(1)
107
- return `${name}: UUID\n // TODO: relation RelatedTo<"${relName}">`
107
+ return `${name}: UUID\n // TODO: relation, RelatedTo<"${relName}">`
108
108
  }
109
109
  if (name === "created_at" || name === "updated_at") {
110
110
  return `${name}: Timestamp`
@@ -160,7 +160,7 @@ export function databaseStateToSchemaScaffold(state: DatabaseStateJson): string
160
160
  const skipTables = new Set(["spatial_ref_sys", "schema_migrations"])
161
161
 
162
162
  const lines: string[] = [
163
- "// DRAFT generated by `supatype pull`. Review access rules, relations, and indexes before push.",
163
+ "// DRAFT: generated by `supatype pull`. Review access rules, relations, and indexes before push.",
164
164
  'import type { Model, Public, UUID, Timestamp, Optional, Unique, Email, Slug, SupatypeAuthUserId, JSON, Int, BigInt } from "@supatype/types"',
165
165
  "",
166
166
  ]
@@ -231,7 +231,7 @@ export function printIntrospectSummary(state: DatabaseStateJson): void {
231
231
  }
232
232
  }
233
233
 
234
- /** @deprecated Legacy pull helper use {@link pgTypeToModelField}. */
234
+ /** @deprecated Legacy pull helper, use {@link pgTypeToModelField}. */
235
235
  export function pgTypeToField(col: ColumnInfo): string {
236
236
  const opts: Record<string, unknown> = { required: !col.nullable }
237
237
  if (col.isPrimary) opts["primaryKey"] = true
@@ -46,7 +46,7 @@ export async function resolveRealtimeLaunch(
46
46
  return { bin: process.execPath, args: [entry] }
47
47
  }
48
48
  throw new Error(
49
- "realtime binary not available run `supatype update` or set overrides.realtime in supatype.config.ts",
49
+ "realtime binary not available, run `supatype update` or set overrides.realtime in supatype.config.ts",
50
50
  )
51
51
  }
52
52
  }
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * Release pins read from files under packages/cli/releases/.
3
- * CI (deno-releases workflow) uses the same paths bump only releases/deno/VERSION.
3
+ * CI (deno-releases workflow) uses the same paths, bump only releases/deno/VERSION.
4
4
  */
5
5
 
6
6
  import { readFileSync } from "node:fs"
@@ -17,7 +17,7 @@ function readPinFile(...segments: string[]): string {
17
17
  } catch {
18
18
  throw new Error(
19
19
  `Missing release pin file: ${path}\n` +
20
- "Expected packages/cli/releases/… reinstall @supatype/cli or build from the monorepo.",
20
+ "Expected packages/cli/releases/…: reinstall @supatype/cli or build from the monorepo.",
21
21
  )
22
22
  }
23
23
  const version = raw.trim()
@@ -2,7 +2,7 @@
2
2
  * Resolve the project API base URL (Kong gateway or direct server) for CLI HTTP calls.
3
3
  */
4
4
 
5
- import { loadConfig } from "./config.js"
5
+ import { loadConfig, rethrowIfConfigBroken } from "./config.js"
6
6
  import { readEnvValue } from "./env-file.js"
7
7
  import { serverBaseUrl } from "./project-config.js"
8
8
 
@@ -34,8 +34,9 @@ export function resolveProjectApiUrl(cwd: string): string {
34
34
  if (fromConfig) {
35
35
  return fromConfig.replace(/\/+$/, "")
36
36
  }
37
- } catch {
38
- // No supatype.config — fall through to PORT default.
37
+ } catch (err) {
38
+ rethrowIfConfigBroken(err)
39
+ // No supatype.config: fall through to PORT default.
39
40
  }
40
41
 
41
42
  const port = readEnvValue(cwd, "PORT", "54321").trim() || "54321"
@@ -48,7 +48,7 @@ export interface DeployTarget {
48
48
  refreshToken?: string | undefined
49
49
  orgId?: string | undefined
50
50
  link: ProjectLink | null
51
- /** Project cwd needed to persist refreshed cloud tokens. */
51
+ /** Project cwd: needed to persist refreshed cloud tokens. */
52
52
  cwd?: string
53
53
  /** Engine subprocess path when mode is direct or local without control plane. */
54
54
  databaseUrl?: string
@@ -34,7 +34,7 @@ function serviceRoleKey(cwd: string): string {
34
34
  readEnvValue(cwd, "SUPATYPE_SERVICE_ROLE_KEY", "").trim() ||
35
35
  readEnvValue(cwd, "SERVICE_ROLE_KEY", "").trim()
36
36
  if (!key) {
37
- throw new Error("SERVICE_ROLE_KEY not found in .env run supatype dev or supatype keys")
37
+ throw new Error("SERVICE_ROLE_KEY not found in .env, run supatype dev or supatype keys")
38
38
  }
39
39
  return key.trim()
40
40
  }
@@ -66,7 +66,7 @@ function formatCacheApiError(
66
66
  return "REST server cache is not available on this plan or deployment."
67
67
  }
68
68
  if (status === 503 && trimmed.includes("valkey")) {
69
- return "Valkey is not configured server-side REST cache requires Valkey (supatype dev with docker)."
69
+ return "Valkey is not configured, server-side REST cache requires Valkey (supatype dev with docker)."
70
70
  }
71
71
  return `${operation} failed (${status}): ${trimmed || "(empty body)"}`
72
72
  }
@@ -17,7 +17,7 @@ export interface RuntimeRouteOptions {
17
17
  functionsServiceUrl?: string
18
18
  /**
19
19
  * Self-host Compose: Kong forwards API traffic to supatype-server (unified gateway),
20
- * which proxies to internal services same model as `supatype dev`.
20
+ * which proxies to internal services, same model as `supatype dev`.
21
21
  */
22
22
  unifiedGateway?: boolean
23
23
  /** Studio UI upstream (default: in-compose `studio:3002`). */
@@ -161,7 +161,7 @@ function runtimeRouteSpecUnified(opts: RuntimeRouteOptions): RuntimeRoute[] {
161
161
 
162
162
  /**
163
163
  * Legacy split-stack routes (PostgREST/storage/realtime directly from Kong).
164
- * Kept for tests or explicit opt-out only self-host uses unifiedGateway.
164
+ * Kept for tests or explicit opt-out only, self-host uses unifiedGateway.
165
165
  */
166
166
  function runtimeRouteSpecSplit(opts: RuntimeRouteOptions): RuntimeRoute[] {
167
167
  const studioUrl = studioServiceUrl(opts)
@@ -1,5 +1,5 @@
1
1
  /**
2
- * AST v2 wire format canonical types and emitters.
2
+ * AST v2 wire format, canonical types and emitters.
3
3
  * Parsers build {@link ParsedField}; only `emitField` / `emitModel` / `emitSchema` produce JSON.
4
4
  */
5
5
 
@@ -30,7 +30,7 @@ export interface FieldAnnotations {
30
30
  platform?: PlatformFieldAnnotations
31
31
  }
32
32
 
33
- /** Kernel facts only never db/platform keys at this layer. */
33
+ /** Kernel facts only: never db/platform keys at this layer. */
34
34
  export interface KernelFieldFacts {
35
35
  required?: boolean
36
36
  primaryKey?: boolean
@@ -62,7 +62,7 @@ export interface KernelFieldFacts {
62
62
  index?: boolean
63
63
  }
64
64
 
65
- /** Internal parse result not serialized. */
65
+ /** Internal parse result: not serialized. */
66
66
  export interface ParsedField {
67
67
  kind: string
68
68
  kernel: KernelFieldFacts
@@ -302,7 +302,7 @@ export function emitModel(
302
302
  options,
303
303
  annotations: {
304
304
  db: { tableName, indexes },
305
- // Hooks sit in `platform` beside `access`: they are an API-layer concern, not a column one
305
+ // Hooks sit in `platform` beside `access`: they are an API-layer concern, not a column one,
306
306
  // supatype-server reads them, Postgres never sees them.
307
307
  platform: { access, ...(Object.keys(hooks).length > 0 && { hooks }) },
308
308
  },
@@ -87,7 +87,7 @@ export async function withComposeSchemaPushLock<T>(
87
87
  //
88
88
  // Killing the local `docker` client does not stop the process inside the container: `docker
89
89
  // compose exec` does not forward the signal. With a sleeping session that meant every push
90
- // left a backend holding this advisory lock for 24 hours so `supatype push` never exited and
90
+ // left a backend holding this advisory lock for 24 hours, so `supatype push` never exited and
91
91
  // the next push blocked on it. Observed end-to-end before this change.
92
92
  //
93
93
  // Closing stdin *does* propagate: psql sees EOF, exits, and the session ends, which is what
@@ -102,7 +102,7 @@ export async function withComposeSchemaPushLock<T>(
102
102
  holder.stdin?.write(
103
103
  `SELECT pg_advisory_lock(${SCHEMA_PUSH_LOCK_CLASSID}, ${SCHEMA_PUSH_LOCK_OBJID});\n`,
104
104
  )
105
- // Deliberately not ended the open pipe is what keeps the session, and the lock, alive.
105
+ // Deliberately not ended: the open pipe is what keeps the session, and the lock, alive.
106
106
  holder.stderr?.on("data", (chunk: Buffer) => {
107
107
  stderrBuf += chunk.toString()
108
108
  })
@@ -131,7 +131,7 @@ export async function withComposeSchemaPushLock<T>(
131
131
  /**
132
132
  * End the holder session, then confirm the lock is actually gone.
133
133
  *
134
- * Closing stdin is the mechanism; the check is because a leaked holder is silent and expensive
134
+ * Closing stdin is the mechanism; the check is because a leaked holder is silent and expensive,
135
135
  * it blocks every later push. If EOF did not do it, terminate the backend directly.
136
136
  */
137
137
  async function releaseHolder(
@@ -1,5 +1,5 @@
1
1
  /**
2
- * Postinstall script @supatype/cli global/project install.
2
+ * Postinstall script: @supatype/cli global/project install.
3
3
  *
4
4
  * Host binaries (engine, server, postgres, deno) are downloaded on demand:
5
5
  * - native provider: first supatype dev / supatype update