@supatype/cli 0.1.0-alpha.6 → 0.1.0-alpha.8

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 (350) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +208 -1
  3. package/.turbo/turbo-typecheck.log +1 -1
  4. package/dist/app/proxy-dev-app.d.ts +13 -0
  5. package/dist/app/proxy-dev-app.d.ts.map +1 -0
  6. package/dist/app/proxy-dev-app.js +53 -0
  7. package/dist/app/proxy-dev-app.js.map +1 -0
  8. package/dist/app-config.d.ts +7 -0
  9. package/dist/app-config.d.ts.map +1 -0
  10. package/dist/app-config.js +113 -0
  11. package/dist/app-config.js.map +1 -0
  12. package/dist/augmentation-generator.d.ts +2 -0
  13. package/dist/augmentation-generator.d.ts.map +1 -0
  14. package/dist/augmentation-generator.js +111 -0
  15. package/dist/augmentation-generator.js.map +1 -0
  16. package/dist/binary-cache.d.ts +94 -0
  17. package/dist/binary-cache.d.ts.map +1 -0
  18. package/dist/binary-cache.js +669 -0
  19. package/dist/binary-cache.js.map +1 -0
  20. package/dist/cli.d.ts.map +1 -1
  21. package/dist/cli.js +13 -7
  22. package/dist/cli.js.map +1 -1
  23. package/dist/commands/admin.d.ts.map +1 -1
  24. package/dist/commands/admin.js +4 -3
  25. package/dist/commands/admin.js.map +1 -1
  26. package/dist/commands/app.d.ts.map +1 -1
  27. package/dist/commands/app.js +56 -209
  28. package/dist/commands/app.js.map +1 -1
  29. package/dist/commands/cache.d.ts +6 -0
  30. package/dist/commands/cache.d.ts.map +1 -0
  31. package/dist/commands/cache.js +105 -0
  32. package/dist/commands/cache.js.map +1 -0
  33. package/dist/commands/cloud.d.ts +20 -0
  34. package/dist/commands/cloud.d.ts.map +1 -1
  35. package/dist/commands/cloud.js +50 -52
  36. package/dist/commands/cloud.js.map +1 -1
  37. package/dist/commands/db.d.ts.map +1 -1
  38. package/dist/commands/db.js +47 -54
  39. package/dist/commands/db.js.map +1 -1
  40. package/dist/commands/deploy.d.ts +2 -1
  41. package/dist/commands/deploy.d.ts.map +1 -1
  42. package/dist/commands/deploy.js +79 -52
  43. package/dist/commands/deploy.js.map +1 -1
  44. package/dist/commands/dev.d.ts +11 -0
  45. package/dist/commands/dev.d.ts.map +1 -1
  46. package/dist/commands/dev.js +759 -385
  47. package/dist/commands/dev.js.map +1 -1
  48. package/dist/commands/diff.d.ts.map +1 -1
  49. package/dist/commands/diff.js +30 -15
  50. package/dist/commands/diff.js.map +1 -1
  51. package/dist/commands/engine.d.ts +1 -3
  52. package/dist/commands/engine.d.ts.map +1 -1
  53. package/dist/commands/engine.js +13 -85
  54. package/dist/commands/engine.js.map +1 -1
  55. package/dist/commands/functions.d.ts.map +1 -1
  56. package/dist/commands/functions.js +92 -105
  57. package/dist/commands/functions.js.map +1 -1
  58. package/dist/commands/generate.d.ts.map +1 -1
  59. package/dist/commands/generate.js +22 -12
  60. package/dist/commands/generate.js.map +1 -1
  61. package/dist/commands/init.d.ts +1 -1
  62. package/dist/commands/init.d.ts.map +1 -1
  63. package/dist/commands/init.js +137 -410
  64. package/dist/commands/init.js.map +1 -1
  65. package/dist/commands/migrate-from-v1.d.ts +5 -0
  66. package/dist/commands/migrate-from-v1.d.ts.map +1 -0
  67. package/dist/commands/migrate-from-v1.js +125 -0
  68. package/dist/commands/migrate-from-v1.js.map +1 -0
  69. package/dist/commands/migrate.d.ts.map +1 -1
  70. package/dist/commands/migrate.js +27 -23
  71. package/dist/commands/migrate.js.map +1 -1
  72. package/dist/commands/pg.d.ts +8 -0
  73. package/dist/commands/pg.d.ts.map +1 -0
  74. package/dist/commands/pg.js +102 -0
  75. package/dist/commands/pg.js.map +1 -0
  76. package/dist/commands/pull.d.ts.map +1 -1
  77. package/dist/commands/pull.js +5 -66
  78. package/dist/commands/pull.js.map +1 -1
  79. package/dist/commands/push.d.ts.map +1 -1
  80. package/dist/commands/push.js +128 -38
  81. package/dist/commands/push.js.map +1 -1
  82. package/dist/commands/seed.d.ts +2 -0
  83. package/dist/commands/seed.d.ts.map +1 -1
  84. package/dist/commands/seed.js +44 -11
  85. package/dist/commands/seed.js.map +1 -1
  86. package/dist/commands/self-host.d.ts +7 -1
  87. package/dist/commands/self-host.d.ts.map +1 -1
  88. package/dist/commands/self-host.js +272 -758
  89. package/dist/commands/self-host.js.map +1 -1
  90. package/dist/commands/self-update.d.ts +9 -0
  91. package/dist/commands/self-update.d.ts.map +1 -0
  92. package/dist/commands/self-update.js +33 -0
  93. package/dist/commands/self-update.js.map +1 -0
  94. package/dist/commands/status.d.ts.map +1 -1
  95. package/dist/commands/status.js +4 -3
  96. package/dist/commands/status.js.map +1 -1
  97. package/dist/commands/types.d.ts +3 -0
  98. package/dist/commands/types.d.ts.map +1 -0
  99. package/dist/commands/types.js +62 -0
  100. package/dist/commands/types.js.map +1 -0
  101. package/dist/commands/update.d.ts +7 -0
  102. package/dist/commands/update.d.ts.map +1 -0
  103. package/dist/commands/update.js +93 -0
  104. package/dist/commands/update.js.map +1 -0
  105. package/dist/components.d.ts +5 -0
  106. package/dist/components.d.ts.map +1 -0
  107. package/dist/components.js +3 -0
  108. package/dist/components.js.map +1 -0
  109. package/dist/config.d.ts +10 -51
  110. package/dist/config.d.ts.map +1 -1
  111. package/dist/config.js +101 -33
  112. package/dist/config.js.map +1 -1
  113. package/dist/dev-compose.d.ts +17 -0
  114. package/dist/dev-compose.d.ts.map +1 -0
  115. package/dist/dev-compose.js +374 -0
  116. package/dist/dev-compose.js.map +1 -0
  117. package/dist/diff-output.d.ts +4 -0
  118. package/dist/diff-output.d.ts.map +1 -0
  119. package/dist/diff-output.js +12 -0
  120. package/dist/diff-output.js.map +1 -0
  121. package/dist/docker-postgres.d.ts +57 -0
  122. package/dist/docker-postgres.d.ts.map +1 -0
  123. package/dist/docker-postgres.js +208 -0
  124. package/dist/docker-postgres.js.map +1 -0
  125. package/dist/engine-client.d.ts +69 -0
  126. package/dist/engine-client.d.ts.map +1 -0
  127. package/dist/engine-client.js +157 -0
  128. package/dist/engine-client.js.map +1 -0
  129. package/dist/ensure-binary.d.ts +7 -0
  130. package/dist/ensure-binary.d.ts.map +1 -0
  131. package/dist/ensure-binary.js +17 -0
  132. package/dist/ensure-binary.js.map +1 -0
  133. package/dist/functions-router-gen.d.ts +14 -0
  134. package/dist/functions-router-gen.d.ts.map +1 -0
  135. package/dist/functions-router-gen.js +199 -0
  136. package/dist/functions-router-gen.js.map +1 -0
  137. package/dist/index.d.ts +4 -5
  138. package/dist/index.d.ts.map +1 -1
  139. package/dist/index.js +2 -3
  140. package/dist/index.js.map +1 -1
  141. package/dist/kong-config.d.ts +25 -0
  142. package/dist/kong-config.d.ts.map +1 -0
  143. package/dist/kong-config.js +71 -0
  144. package/dist/kong-config.js.map +1 -0
  145. package/dist/local-gateway.d.ts +7 -0
  146. package/dist/local-gateway.d.ts.map +1 -0
  147. package/dist/local-gateway.js +9 -0
  148. package/dist/local-gateway.js.map +1 -0
  149. package/dist/local-storage.d.ts +8 -0
  150. package/dist/local-storage.d.ts.map +1 -0
  151. package/dist/local-storage.js +14 -0
  152. package/dist/local-storage.js.map +1 -0
  153. package/dist/pgbouncer-userlist.d.ts +5 -0
  154. package/dist/pgbouncer-userlist.d.ts.map +1 -0
  155. package/dist/pgbouncer-userlist.js +14 -0
  156. package/dist/pgbouncer-userlist.js.map +1 -0
  157. package/dist/postgres-ctl.d.ts +44 -0
  158. package/dist/postgres-ctl.d.ts.map +1 -0
  159. package/dist/postgres-ctl.js +137 -0
  160. package/dist/postgres-ctl.js.map +1 -0
  161. package/dist/process-manager.d.ts +43 -0
  162. package/dist/process-manager.d.ts.map +1 -0
  163. package/dist/process-manager.js +135 -0
  164. package/dist/process-manager.js.map +1 -0
  165. package/dist/project-config.d.ts +235 -0
  166. package/dist/project-config.d.ts.map +1 -0
  167. package/dist/project-config.js +160 -0
  168. package/dist/project-config.js.map +1 -0
  169. package/dist/pull-utils.d.ts +15 -0
  170. package/dist/pull-utils.d.ts.map +1 -1
  171. package/dist/pull-utils.js +12 -0
  172. package/dist/pull-utils.js.map +1 -1
  173. package/dist/release-pins.d.ts +7 -0
  174. package/dist/release-pins.d.ts.map +1 -0
  175. package/dist/release-pins.js +27 -0
  176. package/dist/release-pins.js.map +1 -0
  177. package/dist/release-public-key.d.ts +8 -0
  178. package/dist/release-public-key.d.ts.map +1 -0
  179. package/dist/release-public-key.js +13 -0
  180. package/dist/release-public-key.js.map +1 -0
  181. package/dist/runtime-routes.d.ts +34 -0
  182. package/dist/runtime-routes.d.ts.map +1 -0
  183. package/dist/runtime-routes.js +252 -0
  184. package/dist/runtime-routes.js.map +1 -0
  185. package/dist/schema-ast-v2.d.ts +127 -0
  186. package/dist/schema-ast-v2.d.ts.map +1 -0
  187. package/dist/schema-ast-v2.js +226 -0
  188. package/dist/schema-ast-v2.js.map +1 -0
  189. package/dist/scripts/postinstall.d.ts +5 -6
  190. package/dist/scripts/postinstall.d.ts.map +1 -1
  191. package/dist/scripts/postinstall.js +36 -20
  192. package/dist/scripts/postinstall.js.map +1 -1
  193. package/dist/self-host-compose.d.ts +22 -0
  194. package/dist/self-host-compose.d.ts.map +1 -0
  195. package/dist/self-host-compose.js +347 -0
  196. package/dist/self-host-compose.js.map +1 -0
  197. package/dist/storage-provision.d.ts +24 -0
  198. package/dist/storage-provision.d.ts.map +1 -0
  199. package/dist/storage-provision.js +44 -0
  200. package/dist/storage-provision.js.map +1 -0
  201. package/dist/studio-admin-roles.d.ts +7 -0
  202. package/dist/studio-admin-roles.d.ts.map +1 -0
  203. package/dist/studio-admin-roles.js +14 -0
  204. package/dist/studio-admin-roles.js.map +1 -0
  205. package/dist/studio-dev-server.d.ts +22 -0
  206. package/dist/studio-dev-server.d.ts.map +1 -0
  207. package/dist/studio-dev-server.js +28 -0
  208. package/dist/studio-dev-server.js.map +1 -0
  209. package/dist/systemd.d.ts +26 -0
  210. package/dist/systemd.d.ts.map +1 -0
  211. package/dist/systemd.js +102 -0
  212. package/dist/systemd.js.map +1 -0
  213. package/dist/tsx-runner.d.ts.map +1 -1
  214. package/dist/tsx-runner.js +9 -2
  215. package/dist/tsx-runner.js.map +1 -1
  216. package/dist/type-extractor.d.ts +4 -0
  217. package/dist/type-extractor.d.ts.map +1 -0
  218. package/dist/type-extractor.js +1213 -0
  219. package/dist/type-extractor.js.map +1 -0
  220. package/dist/type-resolver.d.ts +33 -0
  221. package/dist/type-resolver.d.ts.map +1 -0
  222. package/dist/type-resolver.js +338 -0
  223. package/dist/type-resolver.js.map +1 -0
  224. package/package.json +4 -3
  225. package/releases/deno/VERSION +1 -0
  226. package/scripts/mirror-deno-release.sh +76 -0
  227. package/src/TYPE-RESOLUTION.md +294 -0
  228. package/src/app/proxy-dev-app.ts +67 -0
  229. package/src/app-config.ts +128 -0
  230. package/src/augmentation-generator.ts +126 -0
  231. package/src/binary-cache.ts +822 -0
  232. package/src/cli.ts +13 -8
  233. package/src/commands/admin.ts +4 -3
  234. package/src/commands/app.ts +67 -231
  235. package/src/commands/cache.ts +117 -0
  236. package/src/commands/cloud.ts +63 -64
  237. package/src/commands/db.ts +54 -63
  238. package/src/commands/deploy.ts +96 -62
  239. package/src/commands/dev.ts +933 -405
  240. package/src/commands/diff.ts +31 -29
  241. package/src/commands/engine.ts +13 -116
  242. package/src/commands/functions.ts +97 -115
  243. package/src/commands/generate.ts +23 -10
  244. package/src/commands/init.ts +149 -414
  245. package/src/commands/migrate-from-v1.ts +131 -0
  246. package/src/commands/migrate.ts +27 -23
  247. package/src/commands/pg.ts +133 -0
  248. package/src/commands/pull.ts +6 -85
  249. package/src/commands/push.ts +161 -56
  250. package/src/commands/seed.ts +54 -12
  251. package/src/commands/self-host.ts +312 -880
  252. package/src/commands/self-update.ts +45 -0
  253. package/src/commands/status.ts +4 -3
  254. package/src/commands/types.ts +76 -0
  255. package/src/commands/update.ts +109 -0
  256. package/src/components.ts +6 -0
  257. package/src/config.ts +127 -94
  258. package/src/dev-compose.ts +455 -0
  259. package/src/diff-output.ts +12 -0
  260. package/src/docker-postgres.ts +295 -0
  261. package/src/engine-client.ts +236 -0
  262. package/src/ensure-binary.ts +28 -0
  263. package/src/functions-router-gen.ts +224 -0
  264. package/src/index.ts +4 -12
  265. package/src/kong-config.ts +93 -0
  266. package/src/local-gateway.ts +9 -0
  267. package/src/local-storage.ts +14 -0
  268. package/src/pgbouncer-userlist.ts +15 -0
  269. package/src/postgres-ctl.ts +171 -0
  270. package/src/process-manager.ts +168 -0
  271. package/src/project-config.ts +386 -0
  272. package/src/pull-utils.ts +24 -0
  273. package/src/release-pins.ts +31 -0
  274. package/src/release-public-key.ts +12 -0
  275. package/src/runtime-routes.ts +291 -0
  276. package/src/schema-ast-v2.ts +324 -0
  277. package/src/scripts/postinstall.ts +36 -25
  278. package/src/self-host-compose.ts +389 -0
  279. package/src/storage-provision.ts +58 -0
  280. package/src/studio-admin-roles.ts +16 -0
  281. package/src/studio-dev-server.ts +53 -0
  282. package/src/systemd.ts +137 -0
  283. package/src/tsx-runner.ts +11 -1
  284. package/src/type-extractor.ts +1479 -0
  285. package/src/type-resolver.ts +457 -0
  286. package/tests/app-command.test.ts +54 -0
  287. package/tests/augmentation-generator.test.ts +59 -0
  288. package/tests/binary-cache-cloud-overrides.test.ts +123 -0
  289. package/tests/cached-artifact-format.test.ts +84 -0
  290. package/tests/cli-help.test.ts +40 -14
  291. package/tests/config.test.ts +171 -37
  292. package/tests/docker-postgres.test.ts +39 -0
  293. package/tests/engine-distribution.test.ts +3 -3
  294. package/tests/ensure-binary.test.ts +59 -0
  295. package/tests/init.test.ts +28 -86
  296. package/tests/migrate-from-v1.test.ts +29 -0
  297. package/tests/normalize-admin-config.test.ts +48 -0
  298. package/tests/pg-spawn-env.test.ts +18 -0
  299. package/tests/postgres-archive-tag.test.ts +9 -0
  300. package/tests/proxy-dev-app.test.ts +33 -0
  301. package/tests/pull-utils.test.ts +36 -1
  302. package/tests/release-pins.test.ts +28 -0
  303. package/tests/runtime-contract.test.ts +351 -0
  304. package/tests/seed-discover.test.ts +31 -0
  305. package/tests/studio-admin-roles.test.ts +27 -0
  306. package/tests/tsconfig.json +9 -0
  307. package/tests/type-extractor.test.ts +985 -0
  308. package/tests/type-resolver.test.ts +59 -0
  309. package/tsconfig.tsbuildinfo +1 -1
  310. package/vitest.config.ts +12 -0
  311. package/dist/engine/cache.d.ts +0 -37
  312. package/dist/engine/cache.d.ts.map +0 -1
  313. package/dist/engine/cache.js +0 -121
  314. package/dist/engine/cache.js.map +0 -1
  315. package/dist/engine/download.d.ts +0 -19
  316. package/dist/engine/download.d.ts.map +0 -1
  317. package/dist/engine/download.js +0 -108
  318. package/dist/engine/download.js.map +0 -1
  319. package/dist/engine/platform.d.ts +0 -24
  320. package/dist/engine/platform.d.ts.map +0 -1
  321. package/dist/engine/platform.js +0 -50
  322. package/dist/engine/platform.js.map +0 -1
  323. package/dist/engine/resolve.d.ts +0 -37
  324. package/dist/engine/resolve.d.ts.map +0 -1
  325. package/dist/engine/resolve.js +0 -133
  326. package/dist/engine/resolve.js.map +0 -1
  327. package/dist/engine/update-notify.d.ts +0 -11
  328. package/dist/engine/update-notify.d.ts.map +0 -1
  329. package/dist/engine/update-notify.js +0 -43
  330. package/dist/engine/update-notify.js.map +0 -1
  331. package/dist/engine/verify.d.ts +0 -50
  332. package/dist/engine/verify.d.ts.map +0 -1
  333. package/dist/engine/verify.js +0 -161
  334. package/dist/engine/verify.js.map +0 -1
  335. package/dist/engine-version.d.ts +0 -35
  336. package/dist/engine-version.d.ts.map +0 -1
  337. package/dist/engine-version.js +0 -35
  338. package/dist/engine-version.js.map +0 -1
  339. package/dist/engine.d.ts +0 -34
  340. package/dist/engine.d.ts.map +0 -1
  341. package/dist/engine.js +0 -76
  342. package/dist/engine.js.map +0 -1
  343. package/src/engine/cache.ts +0 -135
  344. package/src/engine/download.ts +0 -143
  345. package/src/engine/platform.ts +0 -66
  346. package/src/engine/resolve.ts +0 -197
  347. package/src/engine/update-notify.ts +0 -50
  348. package/src/engine/verify.ts +0 -206
  349. package/src/engine-version.ts +0 -39
  350. package/src/engine.ts +0 -99
@@ -1,4 +1,4 @@
1
1
 
2
- > @supatype/cli@0.1.0-alpha.6 build /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.1.0-alpha.8 build /home/runner/work/supatype/supatype/packages/cli
3
3
  > tsc --project tsconfig.json
4
4
 
@@ -1,7 +1,214 @@
1
1
 
2
- > @supatype/cli@0.1.0-alpha.6 test /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.1.0-alpha.8 test /home/runner/work/supatype/supatype/packages/cli
3
3
  > vitest run
4
4
 
5
5
 
6
6
   RUN  v4.0.18 /home/runner/work/supatype/supatype/packages/cli
7
7
 
8
+ ✓ tests/type-extractor.test.ts (34 tests) 119ms
9
+ ✓ tests/runtime-contract.test.ts (28 tests) 105ms
10
+ stdout | tests/init.test.ts > scaffold() > creates all expected files
11
+  created package.json
12
+ created supatype.config.ts
13
+ created schema/index.ts
14
+ created .env
15
+ created seed.ts
16
+ created seeds/.gitkeep
17
+ created public/.gitkeep
18
+ created .gitignore
19
+
20
+ stdout | tests/init.test.ts > scaffold() > supatype.config.ts embeds the project name and exports defineConfig
21
+  created package.json
22
+ created supatype.config.ts
23
+ created schema/index.ts
24
+ created .env
25
+ created seed.ts
26
+ created seeds/.gitkeep
27
+ created public/.gitkeep
28
+ created .gitignore
29
+
30
+ stdout | tests/init.test.ts > scaffold() > package.json includes @supatype/cli and @supatype/types
31
+  created package.json
32
+ created supatype.config.ts
33
+ created schema/index.ts
34
+ created .env
35
+ created seed.ts
36
+ created seeds/.gitkeep
37
+ created public/.gitkeep
38
+ created .gitignore
39
+
40
+ stdout | tests/init.test.ts > scaffold() > skips package.json when it already exists
41
+  skipped package.json (already exists)
42
+ created supatype.config.ts
43
+ created schema/index.ts
44
+ created .env
45
+ created seed.ts
46
+ created seeds/.gitkeep
47
+ created public/.gitkeep
48
+ created .gitignore
49
+
50
+ stdout | tests/init.test.ts > scaffold() > supatype.config.ts documents self-host workflow
51
+  created package.json
52
+ created supatype.config.ts
53
+ created schema/index.ts
54
+ created .env
55
+ created seed.ts
56
+ created seeds/.gitkeep
57
+ created public/.gitkeep
58
+ created .gitignore
59
+
60
+ stdout | tests/init.test.ts > scaffold() > .env contains DATABASE_URL, JWT_SECRET, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB
61
+  created package.json
62
+ created supatype.config.ts
63
+ created schema/index.ts
64
+ created .env
65
+ created seed.ts
66
+ created seeds/.gitkeep
67
+ created public/.gitkeep
68
+ created .gitignore
69
+
70
+ stdout | tests/init.test.ts > scaffold() > .env contains ANON_KEY, SERVICE_ROLE_KEY, and SITE_URL placeholders
71
+  created package.json
72
+ created supatype.config.ts
73
+ created schema/index.ts
74
+ created .env
75
+ created seed.ts
76
+ created seeds/.gitkeep
77
+ created public/.gitkeep
78
+ created .gitignore
79
+
80
+ stdout | tests/init.test.ts > scaffold() > schema/index.ts exports a User model using RFC v2 Model<>
81
+  created package.json
82
+ created supatype.config.ts
83
+ created schema/index.ts
84
+ created .env
85
+ created seed.ts
86
+ created seeds/.gitkeep
87
+ created public/.gitkeep
88
+ created .gitignore
89
+
90
+ stdout | tests/init.test.ts > scaffold() > .gitignore excludes .env, node_modules, and engine binary
91
+  created package.json
92
+ created supatype.config.ts
93
+ created schema/index.ts
94
+ created .env
95
+ created seed.ts
96
+ created seeds/.gitkeep
97
+ created public/.gitkeep
98
+ created .gitignore
99
+
100
+ stdout | tests/init.test.ts > scaffold() > seed.ts references the project name
101
+  created package.json
102
+ created supatype.config.ts
103
+ created schema/index.ts
104
+ created .env
105
+ created seed.ts
106
+ created seeds/.gitkeep
107
+ created public/.gitkeep
108
+ created .gitignore
109
+
110
+ stdout | tests/init.test.ts > scaffold() > different project names produce different config bodies
111
+  created package.json
112
+ created supatype.config.ts
113
+ created schema/index.ts
114
+ created .env
115
+ created seed.ts
116
+ created seeds/.gitkeep
117
+ created public/.gitkeep
118
+ created .gitignore
119
+ created package.json
120
+ created supatype.config.ts
121
+ created schema/index.ts
122
+ created .env
123
+ created seed.ts
124
+ created seeds/.gitkeep
125
+ created public/.gitkeep
126
+ created .gitignore
127
+
128
+ ✓ tests/init.test.ts (11 tests) 37ms
129
+ ✓ tests/pull-utils.test.ts (49 tests) 12ms
130
+ ✓ tests/config.test.ts (16 tests) 4442ms
131
+ ✓ loads a valid supatype.config.ts (plain export default, no package imports)  910ms
132
+ ✓ normalizes shorthand schema string to { path, pg_schema }  519ms
133
+ ✓ loads a supatype.config.js (plain ESM)  505ms
134
+ ✓ throws if config is missing the versions section  487ms
135
+ ✓ prefers supatype.config.ts over supatype.config.js when both exist  526ms
136
+ ✓ supports optional output field in config  509ms
137
+ ✓ merges supatype.local.config.ts over base  975ms
138
+ ✓ tests/binary-cache-cloud-overrides.test.ts (11 tests) 18ms
139
+ ✓ tests/cached-artifact-format.test.ts (7 tests) 14ms
140
+ ✓ tests/tsx-runner.test.ts (7 tests) 2790ms
141
+ ✓ evaluates a simple expression and returns stdout  365ms
142
+ ✓ evaluates TypeScript syntax (type annotations)  381ms
143
+ ✓ can serialize a JSON object to stdout  385ms
144
+ ✓ returns non-zero exit code on syntax error  350ms
145
+ ✓ returns non-zero exit code on runtime error  397ms
146
+ ✓ captures stderr separately from stdout  398ms
147
+ ✓ runs a .ts file and returns its stdout  508ms
148
+ ✓ tests/augmentation-generator.test.ts (3 tests) 16ms
149
+ ✓ tests/type-resolver.test.ts (2 tests) 13ms
150
+ ✓ tests/ensure-binary.test.ts (2 tests) 8ms
151
+ stdout | tests/app-command.test.ts > supatype app add --static > sets app.mode=static and static_dir in supatype.config.ts
152
+  created package.json
153
+ created supatype.config.ts
154
+ created schema/index.ts
155
+ created .env
156
+ created seed.ts
157
+ created seeds/.gitkeep
158
+ created public/.gitkeep
159
+ created .gitignore
160
+
161
+ stdout | tests/app-command.test.ts > supatype app add --static > creates the static directory when missing
162
+  created package.json
163
+ created supatype.config.ts
164
+ created schema/index.ts
165
+ created .env
166
+ created seed.ts
167
+ created seeds/.gitkeep
168
+ created public/.gitkeep
169
+ created .gitignore
170
+
171
+ ✓ tests/app-command.test.ts (2 tests) 2116ms
172
+ ✓ sets app.mode=static and static_dir in supatype.config.ts  1065ms
173
+ ✓ creates the static directory when missing  1049ms
174
+ ✓ tests/normalize-admin-config.test.ts (1 test) 7ms
175
+ ✓ tests/docker-postgres.test.ts (5 tests) 8ms
176
+ ✓ tests/proxy-dev-app.test.ts (3 tests) 4ms
177
+ ✓ tests/keys.test.ts (11 tests) 11219ms
178
+ ✓ exits 0 with --secret  974ms
179
+ ✓ outputs ANON_KEY= line  966ms
180
+ ✓ outputs SERVICE_ROLE_KEY= line  946ms
181
+ ✓ ANON_KEY is a valid three-part JWT  921ms
182
+ ✓ SERVICE_ROLE_KEY payload has role: service_role  967ms
183
+ ✓ JWT has exp in the future  920ms
184
+ ✓ --exp-years changes the expiry window  1818ms
185
+ ✓ reads JWT_SECRET from environment variable  983ms
186
+ ✓ reads JWT_SECRET from .env file  869ms
187
+ ✓ exits non-zero when no secret is available  917ms
188
+ ✓ keys --help shows --secret and --exp-years options  931ms
189
+ ✓ tests/studio-admin-roles.test.ts (3 tests) 5ms
190
+ ✓ tests/release-pins.test.ts (2 tests) 4ms
191
+ ✓ tests/seed-discover.test.ts (2 tests) 17ms
192
+ ✓ tests/pg-spawn-env.test.ts (2 tests) 4ms
193
+ ✓ tests/postgres-archive-tag.test.ts (1 test) 2ms
194
+ ✓ tests/migrate-from-v1.test.ts (1 test) 14ms
195
+ ✓ tests/cli-help.test.ts (13 tests) 12029ms
196
+ ✓ --help lists all top-level commands  945ms
197
+ ✓ --version prints a semver string  969ms
198
+ ✓ self-update --help describes the command  943ms
199
+ ✓ init --help describes the init command  900ms
200
+ ✓ push --help describes the push command and --yes flag  965ms
201
+ ✓ diff --help describes the diff command  1002ms
202
+ ✓ pull --help describes deprecated pull command  949ms
203
+ ✓ reset --help shows --yes flag  921ms
204
+ ✓ app --help describes the app command with add/remove subcommands  881ms
205
+ ✓ app add --help shows --static and --port options  984ms
206
+ ✓ self-host --help shows compose only (legacy commands hidden)  836ms
207
+ ✓ self-host compose --help shows compose subcommands  938ms
208
+ ✓ unknown command exits non-zero  792ms
209
+
210
+  Test Files  23 passed (23)
211
+  Tests  216 passed (216)
212
+  Start at  13:02:26
213
+  Duration  15.29s (transform 2.28s, setup 0ms, import 7.63s, tests 33.00s, environment 4ms)
214
+
@@ -1,4 +1,4 @@
1
1
 
2
- > @supatype/cli@0.1.0-alpha.6 typecheck /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.1.0-alpha.8 typecheck /home/runner/work/supatype/supatype/packages/cli
3
3
  > tsc --project tsconfig.json --noEmit
4
4
 
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Spawn the frontend dev server during `supatype dev` when app.mode is proxy.
3
+ */
4
+ import { ProcessManager } from "../process-manager.js";
5
+ import { type SupatypeProjectConfig } from "../project-config.js";
6
+ /** package.json script name to run (only when app.mode is proxy). */
7
+ export declare function resolveProxyDevScript(config: SupatypeProjectConfig): string | null;
8
+ /**
9
+ * Start the configured package.json script for proxy dev.
10
+ * Returns null when not in proxy mode or when the script is missing.
11
+ */
12
+ export declare function startProxyDevApp(cwd: string, config: SupatypeProjectConfig, pidDir: string): ProcessManager | null;
13
+ //# sourceMappingURL=proxy-dev-app.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-dev-app.d.ts","sourceRoot":"","sources":["../../src/app/proxy-dev-app.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAIxF,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAIlF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,MAAM,GACb,cAAc,GAAG,IAAI,CAuCvB"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Spawn the frontend dev server during `supatype dev` when app.mode is proxy.
3
+ */
4
+ import { existsSync, readFileSync } from "node:fs";
5
+ import { join } from "node:path";
6
+ import { detectPackageManager } from "./framework.js";
7
+ import { ProcessManager } from "../process-manager.js";
8
+ import { projectRootFromConfig } from "../project-config.js";
9
+ const DEFAULT_PROXY_DEV_SCRIPT = "start";
10
+ /** package.json script name to run (only when app.mode is proxy). */
11
+ export function resolveProxyDevScript(config) {
12
+ if (config.app?.mode !== "proxy")
13
+ return null;
14
+ const script = config.app.start?.trim();
15
+ return script && script.length > 0 ? script : DEFAULT_PROXY_DEV_SCRIPT;
16
+ }
17
+ /**
18
+ * Start the configured package.json script for proxy dev.
19
+ * Returns null when not in proxy mode or when the script is missing.
20
+ */
21
+ export function startProxyDevApp(cwd, config, pidDir) {
22
+ const script = resolveProxyDevScript(config);
23
+ if (!script)
24
+ return null;
25
+ const appDir = projectRootFromConfig(config, cwd);
26
+ const pkgPath = join(appDir, "package.json");
27
+ if (!existsSync(pkgPath)) {
28
+ console.warn(`[supatype] app.mode=proxy but no package.json at ${appDir}; skipping dev app`);
29
+ return null;
30
+ }
31
+ const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
32
+ if (!pkg.scripts?.[script]) {
33
+ console.warn(`[supatype] app.mode=proxy: package.json has no "${script}" script.\n` +
34
+ ` Add "scripts.${script}" or set app.start in supatype.config.ts`);
35
+ return null;
36
+ }
37
+ const pm = detectPackageManager(appDir);
38
+ const bin = pm;
39
+ const args = pm === "yarn" ? [script] : ["run", script];
40
+ // pnpm/npm/yarn are .cmd shims on Windows — spawn via shell so PATH resolution works.
41
+ const useShell = process.platform === "win32";
42
+ console.log(`[supatype] Proxy mode: running ${bin} ${args.join(" ")} (${appDir})`);
43
+ const manager = new ProcessManager(bin, args, {
44
+ label: "app",
45
+ pidDir,
46
+ cwd: appDir,
47
+ colour: "\x1b[33m",
48
+ shell: useShell,
49
+ });
50
+ manager.start();
51
+ return manager;
52
+ }
53
+ //# sourceMappingURL=proxy-dev-app.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proxy-dev-app.js","sourceRoot":"","sources":["../../src/app/proxy-dev-app.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,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAA8B,MAAM,sBAAsB,CAAA;AAExF,MAAM,wBAAwB,GAAG,OAAO,CAAA;AAExC,qEAAqE;AACrE,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IACjE,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAA;IACvC,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAA;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAW,EACX,MAA6B,EAC7B,MAAc;IAEd,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAC5C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,oDAAoD,MAAM,oBAAoB,CAAC,CAAA;QAC5F,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAEnD,CAAA;IACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CACV,mDAAmD,MAAM,aAAa;YACpE,kBAAkB,MAAM,0CAA0C,CACrE,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,GAAG,GAAG,EAAE,CAAA;IACd,MAAM,IAAI,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACvD,sFAAsF;IACtF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;IAE7C,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,CAAA;IAElF,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE;QAC5C,KAAK,EAAE,KAAK;QACZ,MAAM;QACN,GAAG,EAAE,MAAM;QACX,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAA;IACF,OAAO,CAAC,KAAK,EAAE,CAAA;IACf,OAAO,OAAO,CAAA;AAChB,CAAC"}
@@ -0,0 +1,7 @@
1
+ export interface UpdateAppConfigInput {
2
+ mode: "none" | "static" | "proxy";
3
+ staticDir?: string;
4
+ upstream?: string;
5
+ }
6
+ export declare function updateAppConfigInProject(cwd: string, input: UpdateAppConfigInput): string;
7
+ //# sourceMappingURL=app-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAQzF"}
@@ -0,0 +1,113 @@
1
+ import { readFileSync, writeFileSync, existsSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import { Node, Project, QuoteKind, SyntaxKind } from "ts-morph";
4
+ export function updateAppConfigInProject(cwd, input) {
5
+ const configPath = resolve(cwd, "supatype.config.ts");
6
+ if (!existsSync(configPath)) {
7
+ throw new Error("supatype.config.ts not found. Run: supatype init");
8
+ }
9
+ const next = updateAppConfigAst(configPath, input);
10
+ writeFileSync(configPath, next, "utf8");
11
+ return configPath;
12
+ }
13
+ function updateAppConfigAst(configPath, input) {
14
+ const project = new Project({
15
+ useInMemoryFileSystem: false,
16
+ skipAddingFilesFromTsConfig: true,
17
+ manipulationSettings: {
18
+ quoteKind: QuoteKind.Double,
19
+ },
20
+ });
21
+ const srcText = readFileSync(configPath, "utf8");
22
+ const sourceFile = project.createSourceFile(configPath, srcText, { overwrite: true });
23
+ const rootObject = getRootConfigObject(sourceFile);
24
+ const appProperty = rootObject.getProperty("app");
25
+ if (appProperty === undefined) {
26
+ rootObject.addPropertyAssignment({
27
+ name: "app",
28
+ initializer: renderAppInitializer(input),
29
+ });
30
+ }
31
+ else if (Node.isPropertyAssignment(appProperty)) {
32
+ const init = appProperty.getInitializer();
33
+ if (init && Node.isObjectLiteralExpression(init)) {
34
+ patchAppObject(init, input);
35
+ }
36
+ else {
37
+ appProperty.setInitializer(renderAppInitializer(input));
38
+ }
39
+ }
40
+ else {
41
+ appProperty.remove();
42
+ rootObject.addPropertyAssignment({
43
+ name: "app",
44
+ initializer: renderAppInitializer(input),
45
+ });
46
+ }
47
+ return sourceFile.getFullText();
48
+ }
49
+ function getRootConfigObject(sourceFile) {
50
+ const exportAssignment = sourceFile.getFirstDescendantByKind(SyntaxKind.ExportAssignment);
51
+ if (!exportAssignment) {
52
+ throw new Error("Could not find default export in supatype.config.ts.");
53
+ }
54
+ const expr = exportAssignment.getExpression();
55
+ if (Node.isObjectLiteralExpression(expr)) {
56
+ return expr;
57
+ }
58
+ if (Node.isCallExpression(expr)) {
59
+ const [firstArg] = expr.getArguments();
60
+ if (firstArg && Node.isObjectLiteralExpression(firstArg)) {
61
+ return firstArg;
62
+ }
63
+ }
64
+ throw new Error("supatype.config.ts must export an object literal or defineConfig({...}).");
65
+ }
66
+ function renderAppInitializer(input) {
67
+ if (input.mode === "proxy") {
68
+ return `{
69
+ mode: "proxy",
70
+ upstream: "${input.upstream ?? "http://localhost:3000"}",
71
+ }`;
72
+ }
73
+ if (input.mode === "static") {
74
+ return `{
75
+ mode: "static",
76
+ static_dir: "${input.staticDir ?? "./dist"}",
77
+ }`;
78
+ }
79
+ return `{
80
+ mode: "none",
81
+ }`;
82
+ }
83
+ function patchAppObject(appObj, input) {
84
+ upsertStringProperty(appObj, "mode", input.mode);
85
+ if (input.mode === "proxy") {
86
+ upsertStringProperty(appObj, "upstream", input.upstream ?? "http://localhost:3000");
87
+ removePropertyIfPresent(appObj, "static_dir");
88
+ return;
89
+ }
90
+ if (input.mode === "static") {
91
+ upsertStringProperty(appObj, "static_dir", input.staticDir ?? "./dist");
92
+ removePropertyIfPresent(appObj, "upstream");
93
+ return;
94
+ }
95
+ removePropertyIfPresent(appObj, "upstream");
96
+ removePropertyIfPresent(appObj, "static_dir");
97
+ }
98
+ function upsertStringProperty(obj, key, value) {
99
+ const existing = obj.getProperty(key);
100
+ if (existing && Node.isPropertyAssignment(existing)) {
101
+ existing.setInitializer(`"${value}"`);
102
+ return;
103
+ }
104
+ if (existing)
105
+ existing.remove();
106
+ obj.addPropertyAssignment({ name: key, initializer: `"${value}"` });
107
+ }
108
+ function removePropertyIfPresent(obj, key) {
109
+ const prop = obj.getProperty(key);
110
+ if (prop)
111
+ prop.remove();
112
+ }
113
+ //# sourceMappingURL=app-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACnC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,UAAU,EAAiD,MAAM,UAAU,CAAA;AAQ9G,MAAM,UAAU,wBAAwB,CAAC,GAAW,EAAE,KAA2B;IAC/E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,EAAE,oBAAoB,CAAC,CAAA;IACrD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAA;IACrE,CAAC;IACD,MAAM,IAAI,GAAG,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;IAClD,aAAa,CAAC,UAAU,EAAE,IAAI,EAAE,MAAM,CAAC,CAAA;IACvC,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,SAAS,kBAAkB,CAAC,UAAkB,EAAE,KAA2B;IACzE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC;QAC1B,qBAAqB,EAAE,KAAK;QAC5B,2BAA2B,EAAE,IAAI;QACjC,oBAAoB,EAAE;YACpB,SAAS,EAAE,SAAS,CAAC,MAAM;SAC5B;KACF,CAAC,CAAA;IACF,MAAM,OAAO,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IAChD,MAAM,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IACrF,MAAM,UAAU,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAA;IAElD,MAAM,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;IAEjD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC9B,UAAU,CAAC,qBAAqB,CAAC;YAC/B,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,oBAAoB,CAAC,KAAK,CAAC;SACzC,CAAC,CAAA;IACJ,CAAC;SAAM,IAAI,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;QAClD,MAAM,IAAI,GAAG,WAAW,CAAC,cAAc,EAAE,CAAA;QACzC,IAAI,IAAI,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;YACjD,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC7B,CAAC;aAAM,CAAC;YACN,WAAW,CAAC,cAAc,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;SAAM,CAAC;QACN,WAAW,CAAC,MAAM,EAAE,CAAA;QACpB,UAAU,CAAC,qBAAqB,CAAC;YAC/B,IAAI,EAAE,KAAK;YACX,WAAW,EAAE,oBAAoB,CAAC,KAAK,CAAC;SACzC,CAAC,CAAA;IACJ,CAAC;IAED,OAAO,UAAU,CAAC,WAAW,EAAE,CAAA;AACjC,CAAC;AAED,SAAS,mBAAmB,CAAC,UAAsB;IACjD,MAAM,gBAAgB,GAAG,UAAU,CAAC,wBAAwB,CAAC,UAAU,CAAC,gBAAgB,CAAC,CAAA;IACzF,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;IACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,aAAa,EAAE,CAAA;IAC7C,IAAI,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,CAAC;QAChC,MAAM,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,YAAY,EAAE,CAAA;QACtC,IAAI,QAAQ,IAAI,IAAI,CAAC,yBAAyB,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzD,OAAO,QAAQ,CAAA;QACjB,CAAC;IACH,CAAC;IACD,MAAM,IAAI,KAAK,CACb,0EAA0E,CAC3E,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,KAA2B;IACvD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,OAAO;;mBAEQ,KAAK,CAAC,QAAQ,IAAI,uBAAuB;MACtD,CAAA;IACJ,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO;;qBAEU,KAAK,CAAC,SAAS,IAAI,QAAQ;MAC1C,CAAA;IACJ,CAAC;IACD,OAAO;;IAEL,CAAA;AACJ,CAAC;AAED,SAAS,cAAc,CAAC,MAA+B,EAAE,KAA2B;IAClF,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAEhD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC3B,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,IAAI,uBAAuB,CAAC,CAAA;QACnF,uBAAuB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;QAC7C,OAAM;IACR,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5B,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,KAAK,CAAC,SAAS,IAAI,QAAQ,CAAC,CAAA;QACvE,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;QAC3C,OAAM;IACR,CAAC;IAED,uBAAuB,CAAC,MAAM,EAAE,UAAU,CAAC,CAAA;IAC3C,uBAAuB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;AAC/C,CAAC;AAED,SAAS,oBAAoB,CAAC,GAA4B,EAAE,GAAW,EAAE,KAAa;IACpF,MAAM,QAAQ,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACrC,IAAI,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;QACpD,QAAQ,CAAC,cAAc,CAAC,IAAI,KAAK,GAAG,CAAC,CAAA;QACrC,OAAM;IACR,CAAC;IACD,IAAI,QAAQ;QAAE,QAAQ,CAAC,MAAM,EAAE,CAAA;IAC/B,GAAG,CAAC,qBAAqB,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,KAAK,GAAG,EAAE,CAAC,CAAA;AACrE,CAAC;AAED,SAAS,uBAAuB,CAAC,GAA4B,EAAE,GAAW;IACxE,MAAM,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,CAAA;IACjC,IAAI,IAAI;QAAE,IAAI,CAAC,MAAM,EAAE,CAAA;AACzB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function generateClientAugmentation(ast: unknown): string;
2
+ //# sourceMappingURL=augmentation-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"augmentation-generator.d.ts","sourceRoot":"","sources":["../src/augmentation-generator.ts"],"names":[],"mappings":"AASA,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAyB/D"}
@@ -0,0 +1,111 @@
1
+ export function generateClientAugmentation(ast) {
2
+ const parsed = ast;
3
+ const models = [...(parsed.models ?? [])].sort((a, b) => a.tableName.localeCompare(b.tableName));
4
+ const lines = [];
5
+ lines.push("// Generated by supatype CLI — do not edit manually.");
6
+ lines.push("");
7
+ lines.push("declare module \"@supatype/client\" {");
8
+ lines.push(" interface SupatypeModels {");
9
+ for (const model of models) {
10
+ lines.push(` ${quoteKey(model.tableName)}: {`);
11
+ lines.push(` Row: ${generateRowType(model.fields)}`);
12
+ lines.push(` Insert: ${generateInsertType(model.fields)}`);
13
+ lines.push(` Update: ${generateUpdateType(model.fields)}`);
14
+ lines.push(" }");
15
+ }
16
+ lines.push(" }");
17
+ lines.push("}");
18
+ lines.push("");
19
+ lines.push("export {}");
20
+ lines.push("");
21
+ return lines.join("\n");
22
+ }
23
+ function generateRowType(fields) {
24
+ const entries = Object.entries(fields).sort(([a], [b]) => a.localeCompare(b));
25
+ if (entries.length === 0)
26
+ return "Record<string, unknown>";
27
+ const body = entries
28
+ .map(([name, meta]) => ` ${quoteKey(name)}: ${toTsType(meta)}`)
29
+ .join("\n");
30
+ return `{\n${body}\n}`;
31
+ }
32
+ function insertColumnOptionalOnInsert(meta) {
33
+ return meta["default"] !== undefined || meta["serverGenerated"] === true;
34
+ }
35
+ function generateInsertType(fields) {
36
+ const entries = Object.entries(fields).sort(([a], [b]) => a.localeCompare(b));
37
+ if (entries.length === 0)
38
+ return "Record<string, unknown>";
39
+ const body = entries
40
+ .map(([name, meta]) => {
41
+ const required = meta["required"] === true && !insertColumnOptionalOnInsert(meta);
42
+ return ` ${quoteKey(name)}${required ? "" : "?"}: ${toTsType(meta)}`;
43
+ })
44
+ .join("\n");
45
+ return `{\n${body}\n}`;
46
+ }
47
+ function generateUpdateType(fields) {
48
+ const entries = Object.entries(fields).sort(([a], [b]) => a.localeCompare(b));
49
+ if (entries.length === 0)
50
+ return "Record<string, unknown>";
51
+ const body = entries
52
+ .map(([name, meta]) => ` ${quoteKey(name)}?: ${toTsType(meta)}`)
53
+ .join("\n");
54
+ return `{\n${body}\n}`;
55
+ }
56
+ function toTsType(meta) {
57
+ const kind = typeof meta["kind"] === "string" ? meta["kind"] : "json";
58
+ const required = meta["required"] === true;
59
+ const base = (() => {
60
+ switch (kind) {
61
+ case "uuid":
62
+ case "slug":
63
+ case "text":
64
+ case "email":
65
+ case "url":
66
+ case "date":
67
+ case "timestamp":
68
+ case "datetime":
69
+ case "money":
70
+ case "xml":
71
+ case "interval":
72
+ return "string";
73
+ case "integer":
74
+ case "smallInt":
75
+ case "serial":
76
+ case "float":
77
+ case "decimal":
78
+ return "number";
79
+ case "bigSerial":
80
+ case "bigInt":
81
+ return "bigint";
82
+ case "boolean":
83
+ return "boolean";
84
+ case "json":
85
+ case "blocks":
86
+ case "geo":
87
+ case "vector":
88
+ case "relation":
89
+ case "array":
90
+ case "image":
91
+ case "file":
92
+ return "Record<string, unknown>";
93
+ case "richText":
94
+ return "(import(\"@supatype/types/lexical\").SerializedEditorState | string)";
95
+ case "enum": {
96
+ const values = Array.isArray(meta["values"]) ? meta["values"] : [];
97
+ const quoted = values
98
+ .filter((v) => typeof v === "string")
99
+ .map((v) => JSON.stringify(v));
100
+ return quoted.length > 0 ? quoted.join(" | ") : "string";
101
+ }
102
+ default:
103
+ return "unknown";
104
+ }
105
+ })();
106
+ return required ? base : `${base} | null`;
107
+ }
108
+ function quoteKey(key) {
109
+ return /^[A-Za-z_$][A-Za-z0-9_$]*$/.test(key) ? key : JSON.stringify(key);
110
+ }
111
+ //# sourceMappingURL=augmentation-generator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"augmentation-generator.js","sourceRoot":"","sources":["../src/augmentation-generator.ts"],"names":[],"mappings":"AASA,MAAM,UAAU,0BAA0B,CAAC,GAAY;IACrD,MAAM,MAAM,GAAG,GAAe,CAAA;IAC9B,MAAM,MAAM,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAA;IAEhG,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,KAAK,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAA;IAClE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAA;IACnD,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAA;IAE1C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;QACjD,KAAK,CAAC,IAAI,CAAC,cAAc,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QACzD,KAAK,CAAC,IAAI,CAAC,iBAAiB,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC/D,KAAK,CAAC,IAAI,CAAC,iBAAiB,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAA;QAC/D,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACrB,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACjB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACf,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IACd,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAA;IACvB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAEd,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,eAAe,CAAC,MAA+C;IACtE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,yBAAyB,CAAA;IAC1D,MAAM,IAAI,GAAG,OAAO;SACjB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;SAC/D,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,OAAO,MAAM,IAAI,KAAK,CAAA;AACxB,CAAC;AAED,SAAS,4BAA4B,CAAC,IAA6B;IACjE,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,SAAS,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,IAAI,CAAA;AAC1E,CAAC;AAED,SAAS,kBAAkB,CAAC,MAA+C;IACzE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,yBAAyB,CAAA;IAC1D,MAAM,IAAI,GAAG,OAAO;SACjB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,CAAA;QACjF,OAAO,KAAK,QAAQ,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAA;IACvE,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,OAAO,MAAM,IAAI,KAAK,CAAA;AACxB,CAAC;AAED,SAAS,kBAAkB,CAAC,MAA+C;IACzE,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7E,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,yBAAyB,CAAA;IAC1D,MAAM,IAAI,GAAG,OAAO;SACjB,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,KAAK,QAAQ,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC,CAAA;IACb,OAAO,MAAM,IAAI,KAAK,CAAA;AACxB,CAAC;AAED,SAAS,QAAQ,CAAC,IAA6B;IAC7C,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAA;IAC1C,MAAM,IAAI,GAAG,CAAC,GAAG,EAAE;QACjB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC;YACZ,KAAK,MAAM,CAAC;YACZ,KAAK,OAAO,CAAC;YACb,KAAK,KAAK,CAAC;YACX,KAAK,MAAM,CAAC;YACZ,KAAK,WAAW,CAAC;YACjB,KAAK,UAAU,CAAC;YAChB,KAAK,OAAO,CAAC;YACb,KAAK,KAAK,CAAC;YACX,KAAK,UAAU;gBACb,OAAO,QAAQ,CAAA;YACjB,KAAK,SAAS,CAAC;YACf,KAAK,UAAU,CAAC;YAChB,KAAK,QAAQ,CAAC;YACd,KAAK,OAAO,CAAC;YACb,KAAK,SAAS;gBACZ,OAAO,QAAQ,CAAA;YACjB,KAAK,WAAW,CAAC;YACjB,KAAK,QAAQ;gBACX,OAAO,QAAQ,CAAA;YACjB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAA;YAClB,KAAK,MAAM,CAAC;YACZ,KAAK,QAAQ,CAAC;YACd,KAAK,KAAK,CAAC;YACX,KAAK,QAAQ,CAAC;YACd,KAAK,UAAU,CAAC;YAChB,KAAK,OAAO,CAAC;YACb,KAAK,OAAO,CAAC;YACb,KAAK,MAAM;gBACT,OAAO,yBAAyB,CAAA;YAClC,KAAK,UAAU;gBACb,OAAO,sEAAsE,CAAA;YAC/E,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAc,CAAC,CAAC,CAAC,EAAE,CAAA;gBAC/E,MAAM,MAAM,GAAG,MAAM;qBAClB,MAAM,CAAC,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC;qBACjD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAA;gBAChC,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAA;YAC1D,CAAC;YACD;gBACE,OAAO,SAAS,CAAA;QACpB,CAAC;IACH,CAAC,CAAC,EAAE,CAAA;IACJ,OAAO,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,SAAS,CAAA;AAC3C,CAAC;AAED,SAAS,QAAQ,CAAC,GAAW;IAC3B,OAAO,4BAA4B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAA;AAC3E,CAAC"}