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

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 (309) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +203 -1
  3. package/.turbo/turbo-typecheck.log +1 -1
  4. package/dist/app-config.d.ts +7 -0
  5. package/dist/app-config.d.ts.map +1 -0
  6. package/dist/app-config.js +113 -0
  7. package/dist/app-config.js.map +1 -0
  8. package/dist/augmentation-generator.d.ts +2 -0
  9. package/dist/augmentation-generator.d.ts.map +1 -0
  10. package/dist/augmentation-generator.js +111 -0
  11. package/dist/augmentation-generator.js.map +1 -0
  12. package/dist/binary-cache.d.ts +89 -0
  13. package/dist/binary-cache.d.ts.map +1 -0
  14. package/dist/binary-cache.js +656 -0
  15. package/dist/binary-cache.js.map +1 -0
  16. package/dist/cli.d.ts.map +1 -1
  17. package/dist/cli.js +13 -7
  18. package/dist/cli.js.map +1 -1
  19. package/dist/commands/admin.d.ts.map +1 -1
  20. package/dist/commands/admin.js +4 -3
  21. package/dist/commands/admin.js.map +1 -1
  22. package/dist/commands/app.d.ts.map +1 -1
  23. package/dist/commands/app.js +56 -209
  24. package/dist/commands/app.js.map +1 -1
  25. package/dist/commands/cache.d.ts +6 -0
  26. package/dist/commands/cache.d.ts.map +1 -0
  27. package/dist/commands/cache.js +105 -0
  28. package/dist/commands/cache.js.map +1 -0
  29. package/dist/commands/cloud.d.ts +12 -0
  30. package/dist/commands/cloud.d.ts.map +1 -1
  31. package/dist/commands/cloud.js +36 -46
  32. package/dist/commands/cloud.js.map +1 -1
  33. package/dist/commands/db.d.ts.map +1 -1
  34. package/dist/commands/db.js +47 -54
  35. package/dist/commands/db.js.map +1 -1
  36. package/dist/commands/deploy.d.ts +2 -1
  37. package/dist/commands/deploy.d.ts.map +1 -1
  38. package/dist/commands/deploy.js +92 -51
  39. package/dist/commands/deploy.js.map +1 -1
  40. package/dist/commands/dev.d.ts +11 -0
  41. package/dist/commands/dev.d.ts.map +1 -1
  42. package/dist/commands/dev.js +751 -384
  43. package/dist/commands/dev.js.map +1 -1
  44. package/dist/commands/diff.d.ts.map +1 -1
  45. package/dist/commands/diff.js +20 -15
  46. package/dist/commands/diff.js.map +1 -1
  47. package/dist/commands/engine.d.ts +1 -3
  48. package/dist/commands/engine.d.ts.map +1 -1
  49. package/dist/commands/engine.js +13 -85
  50. package/dist/commands/engine.js.map +1 -1
  51. package/dist/commands/functions.d.ts.map +1 -1
  52. package/dist/commands/functions.js +92 -105
  53. package/dist/commands/functions.js.map +1 -1
  54. package/dist/commands/generate.d.ts.map +1 -1
  55. package/dist/commands/generate.js +22 -12
  56. package/dist/commands/generate.js.map +1 -1
  57. package/dist/commands/init.d.ts +1 -1
  58. package/dist/commands/init.d.ts.map +1 -1
  59. package/dist/commands/init.js +124 -410
  60. package/dist/commands/init.js.map +1 -1
  61. package/dist/commands/migrate-from-v1.d.ts +5 -0
  62. package/dist/commands/migrate-from-v1.d.ts.map +1 -0
  63. package/dist/commands/migrate-from-v1.js +125 -0
  64. package/dist/commands/migrate-from-v1.js.map +1 -0
  65. package/dist/commands/migrate.d.ts.map +1 -1
  66. package/dist/commands/migrate.js +27 -23
  67. package/dist/commands/migrate.js.map +1 -1
  68. package/dist/commands/pg.d.ts +8 -0
  69. package/dist/commands/pg.d.ts.map +1 -0
  70. package/dist/commands/pg.js +102 -0
  71. package/dist/commands/pg.js.map +1 -0
  72. package/dist/commands/pull.d.ts.map +1 -1
  73. package/dist/commands/pull.js +5 -66
  74. package/dist/commands/pull.js.map +1 -1
  75. package/dist/commands/push.d.ts.map +1 -1
  76. package/dist/commands/push.js +99 -39
  77. package/dist/commands/push.js.map +1 -1
  78. package/dist/commands/seed.d.ts +2 -0
  79. package/dist/commands/seed.d.ts.map +1 -1
  80. package/dist/commands/seed.js +44 -11
  81. package/dist/commands/seed.js.map +1 -1
  82. package/dist/commands/self-host.d.ts +7 -1
  83. package/dist/commands/self-host.d.ts.map +1 -1
  84. package/dist/commands/self-host.js +272 -758
  85. package/dist/commands/self-host.js.map +1 -1
  86. package/dist/commands/self-update.d.ts +9 -0
  87. package/dist/commands/self-update.d.ts.map +1 -0
  88. package/dist/commands/self-update.js +33 -0
  89. package/dist/commands/self-update.js.map +1 -0
  90. package/dist/commands/status.d.ts.map +1 -1
  91. package/dist/commands/status.js +4 -3
  92. package/dist/commands/status.js.map +1 -1
  93. package/dist/commands/types.d.ts +3 -0
  94. package/dist/commands/types.d.ts.map +1 -0
  95. package/dist/commands/types.js +62 -0
  96. package/dist/commands/types.js.map +1 -0
  97. package/dist/commands/update.d.ts +7 -0
  98. package/dist/commands/update.d.ts.map +1 -0
  99. package/dist/commands/update.js +77 -0
  100. package/dist/commands/update.js.map +1 -0
  101. package/dist/components.d.ts +5 -0
  102. package/dist/components.d.ts.map +1 -0
  103. package/dist/components.js +3 -0
  104. package/dist/components.js.map +1 -0
  105. package/dist/config.d.ts +10 -51
  106. package/dist/config.d.ts.map +1 -1
  107. package/dist/config.js +101 -33
  108. package/dist/config.js.map +1 -1
  109. package/dist/docker-postgres.d.ts +39 -0
  110. package/dist/docker-postgres.d.ts.map +1 -0
  111. package/dist/docker-postgres.js +96 -0
  112. package/dist/docker-postgres.js.map +1 -0
  113. package/dist/engine-client.d.ts +67 -0
  114. package/dist/engine-client.d.ts.map +1 -0
  115. package/dist/engine-client.js +156 -0
  116. package/dist/engine-client.js.map +1 -0
  117. package/dist/ensure-binary.d.ts +7 -0
  118. package/dist/ensure-binary.d.ts.map +1 -0
  119. package/dist/ensure-binary.js +17 -0
  120. package/dist/ensure-binary.js.map +1 -0
  121. package/dist/functions-router-gen.d.ts +14 -0
  122. package/dist/functions-router-gen.d.ts.map +1 -0
  123. package/dist/functions-router-gen.js +199 -0
  124. package/dist/functions-router-gen.js.map +1 -0
  125. package/dist/index.d.ts +4 -5
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +2 -3
  128. package/dist/index.js.map +1 -1
  129. package/dist/kong-config.d.ts +21 -0
  130. package/dist/kong-config.d.ts.map +1 -0
  131. package/dist/kong-config.js +60 -0
  132. package/dist/kong-config.js.map +1 -0
  133. package/dist/local-gateway.d.ts +7 -0
  134. package/dist/local-gateway.d.ts.map +1 -0
  135. package/dist/local-gateway.js +9 -0
  136. package/dist/local-gateway.js.map +1 -0
  137. package/dist/local-storage.d.ts +8 -0
  138. package/dist/local-storage.d.ts.map +1 -0
  139. package/dist/local-storage.js +14 -0
  140. package/dist/local-storage.js.map +1 -0
  141. package/dist/pgbouncer-userlist.d.ts +5 -0
  142. package/dist/pgbouncer-userlist.d.ts.map +1 -0
  143. package/dist/pgbouncer-userlist.js +14 -0
  144. package/dist/pgbouncer-userlist.js.map +1 -0
  145. package/dist/postgres-ctl.d.ts +44 -0
  146. package/dist/postgres-ctl.d.ts.map +1 -0
  147. package/dist/postgres-ctl.js +137 -0
  148. package/dist/postgres-ctl.js.map +1 -0
  149. package/dist/process-manager.d.ts +41 -0
  150. package/dist/process-manager.d.ts.map +1 -0
  151. package/dist/process-manager.js +120 -0
  152. package/dist/process-manager.js.map +1 -0
  153. package/dist/project-config.d.ts +215 -0
  154. package/dist/project-config.d.ts.map +1 -0
  155. package/dist/project-config.js +145 -0
  156. package/dist/project-config.js.map +1 -0
  157. package/dist/pull-utils.d.ts +15 -0
  158. package/dist/pull-utils.d.ts.map +1 -1
  159. package/dist/pull-utils.js +12 -0
  160. package/dist/pull-utils.js.map +1 -1
  161. package/dist/release-pins.d.ts +7 -0
  162. package/dist/release-pins.d.ts.map +1 -0
  163. package/dist/release-pins.js +27 -0
  164. package/dist/release-pins.js.map +1 -0
  165. package/dist/release-public-key.d.ts +8 -0
  166. package/dist/release-public-key.d.ts.map +1 -0
  167. package/dist/release-public-key.js +13 -0
  168. package/dist/release-public-key.js.map +1 -0
  169. package/dist/runtime-routes.d.ts +25 -0
  170. package/dist/runtime-routes.d.ts.map +1 -0
  171. package/dist/runtime-routes.js +189 -0
  172. package/dist/runtime-routes.js.map +1 -0
  173. package/dist/scripts/postinstall.d.ts +5 -6
  174. package/dist/scripts/postinstall.d.ts.map +1 -1
  175. package/dist/scripts/postinstall.js +36 -20
  176. package/dist/scripts/postinstall.js.map +1 -1
  177. package/dist/self-host-compose.d.ts +14 -0
  178. package/dist/self-host-compose.d.ts.map +1 -0
  179. package/dist/self-host-compose.js +236 -0
  180. package/dist/self-host-compose.js.map +1 -0
  181. package/dist/storage-provision.d.ts +24 -0
  182. package/dist/storage-provision.d.ts.map +1 -0
  183. package/dist/storage-provision.js +44 -0
  184. package/dist/storage-provision.js.map +1 -0
  185. package/dist/systemd.d.ts +26 -0
  186. package/dist/systemd.d.ts.map +1 -0
  187. package/dist/systemd.js +102 -0
  188. package/dist/systemd.js.map +1 -0
  189. package/dist/tsx-runner.d.ts.map +1 -1
  190. package/dist/tsx-runner.js +9 -2
  191. package/dist/tsx-runner.js.map +1 -1
  192. package/dist/type-extractor.d.ts +31 -0
  193. package/dist/type-extractor.d.ts.map +1 -0
  194. package/dist/type-extractor.js +876 -0
  195. package/dist/type-extractor.js.map +1 -0
  196. package/package.json +4 -3
  197. package/releases/deno/VERSION +1 -0
  198. package/scripts/mirror-deno-release.sh +76 -0
  199. package/src/app-config.ts +128 -0
  200. package/src/augmentation-generator.ts +126 -0
  201. package/src/binary-cache.ts +802 -0
  202. package/src/cli.ts +13 -8
  203. package/src/commands/admin.ts +4 -3
  204. package/src/commands/app.ts +67 -231
  205. package/src/commands/cache.ts +117 -0
  206. package/src/commands/cloud.ts +46 -57
  207. package/src/commands/db.ts +54 -63
  208. package/src/commands/deploy.ts +110 -61
  209. package/src/commands/dev.ts +930 -405
  210. package/src/commands/diff.ts +21 -29
  211. package/src/commands/engine.ts +13 -116
  212. package/src/commands/functions.ts +97 -115
  213. package/src/commands/generate.ts +23 -10
  214. package/src/commands/init.ts +136 -414
  215. package/src/commands/migrate-from-v1.ts +131 -0
  216. package/src/commands/migrate.ts +27 -23
  217. package/src/commands/pg.ts +133 -0
  218. package/src/commands/pull.ts +6 -85
  219. package/src/commands/push.ts +128 -59
  220. package/src/commands/seed.ts +54 -12
  221. package/src/commands/self-host.ts +312 -880
  222. package/src/commands/self-update.ts +45 -0
  223. package/src/commands/status.ts +4 -3
  224. package/src/commands/types.ts +76 -0
  225. package/src/commands/update.ts +92 -0
  226. package/src/components.ts +6 -0
  227. package/src/config.ts +127 -94
  228. package/src/docker-postgres.ts +138 -0
  229. package/src/engine-client.ts +231 -0
  230. package/src/ensure-binary.ts +28 -0
  231. package/src/functions-router-gen.ts +224 -0
  232. package/src/index.ts +4 -12
  233. package/src/kong-config.ts +78 -0
  234. package/src/local-gateway.ts +9 -0
  235. package/src/local-storage.ts +14 -0
  236. package/src/pgbouncer-userlist.ts +15 -0
  237. package/src/postgres-ctl.ts +171 -0
  238. package/src/process-manager.ts +151 -0
  239. package/src/project-config.ts +353 -0
  240. package/src/pull-utils.ts +24 -0
  241. package/src/release-pins.ts +31 -0
  242. package/src/release-public-key.ts +12 -0
  243. package/src/runtime-routes.ts +216 -0
  244. package/src/scripts/postinstall.ts +36 -25
  245. package/src/self-host-compose.ts +257 -0
  246. package/src/storage-provision.ts +58 -0
  247. package/src/systemd.ts +137 -0
  248. package/src/tsx-runner.ts +11 -1
  249. package/src/type-extractor.ts +1016 -0
  250. package/tests/app-command.test.ts +54 -0
  251. package/tests/augmentation-generator.test.ts +59 -0
  252. package/tests/binary-cache-cloud-overrides.test.ts +123 -0
  253. package/tests/cached-artifact-format.test.ts +84 -0
  254. package/tests/cli-help.test.ts +40 -14
  255. package/tests/config.test.ts +140 -37
  256. package/tests/engine-distribution.test.ts +3 -3
  257. package/tests/ensure-binary.test.ts +59 -0
  258. package/tests/init.test.ts +28 -86
  259. package/tests/migrate-from-v1.test.ts +29 -0
  260. package/tests/pg-spawn-env.test.ts +18 -0
  261. package/tests/postgres-archive-tag.test.ts +9 -0
  262. package/tests/pull-utils.test.ts +36 -1
  263. package/tests/release-pins.test.ts +28 -0
  264. package/tests/runtime-contract.test.ts +236 -0
  265. package/tests/seed-discover.test.ts +31 -0
  266. package/tests/tsconfig.json +9 -0
  267. package/tests/type-extractor.test.ts +401 -0
  268. package/tsconfig.tsbuildinfo +1 -1
  269. package/vitest.config.ts +12 -0
  270. package/dist/engine/cache.d.ts +0 -37
  271. package/dist/engine/cache.d.ts.map +0 -1
  272. package/dist/engine/cache.js +0 -121
  273. package/dist/engine/cache.js.map +0 -1
  274. package/dist/engine/download.d.ts +0 -19
  275. package/dist/engine/download.d.ts.map +0 -1
  276. package/dist/engine/download.js +0 -108
  277. package/dist/engine/download.js.map +0 -1
  278. package/dist/engine/platform.d.ts +0 -24
  279. package/dist/engine/platform.d.ts.map +0 -1
  280. package/dist/engine/platform.js +0 -50
  281. package/dist/engine/platform.js.map +0 -1
  282. package/dist/engine/resolve.d.ts +0 -37
  283. package/dist/engine/resolve.d.ts.map +0 -1
  284. package/dist/engine/resolve.js +0 -133
  285. package/dist/engine/resolve.js.map +0 -1
  286. package/dist/engine/update-notify.d.ts +0 -11
  287. package/dist/engine/update-notify.d.ts.map +0 -1
  288. package/dist/engine/update-notify.js +0 -43
  289. package/dist/engine/update-notify.js.map +0 -1
  290. package/dist/engine/verify.d.ts +0 -50
  291. package/dist/engine/verify.d.ts.map +0 -1
  292. package/dist/engine/verify.js +0 -161
  293. package/dist/engine/verify.js.map +0 -1
  294. package/dist/engine-version.d.ts +0 -35
  295. package/dist/engine-version.d.ts.map +0 -1
  296. package/dist/engine-version.js +0 -35
  297. package/dist/engine-version.js.map +0 -1
  298. package/dist/engine.d.ts +0 -34
  299. package/dist/engine.d.ts.map +0 -1
  300. package/dist/engine.js +0 -76
  301. package/dist/engine.js.map +0 -1
  302. package/src/engine/cache.ts +0 -135
  303. package/src/engine/download.ts +0 -143
  304. package/src/engine/platform.ts +0 -66
  305. package/src/engine/resolve.ts +0 -197
  306. package/src/engine/update-notify.ts +0 -50
  307. package/src/engine/verify.ts +0 -206
  308. package/src/engine-version.ts +0 -39
  309. 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.7 build /home/runner/work/supatype/supatype/packages/cli
3
3
  > tsc --project tsconfig.json
4
4
 
@@ -1,7 +1,209 @@
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.7 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 (13 tests) 79ms
9
+ ✓ tests/runtime-contract.test.ts (15 tests) 100ms
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) 39ms
129
+ ✓ tests/pull-utils.test.ts (49 tests) 12ms
130
+ ✓ tests/config.test.ts (13 tests) 4586ms
131
+ ✓ loads a valid supatype.config.ts (plain export default, no package imports)  764ms
132
+ ✓ normalizes shorthand schema string to { path, pg_schema }  501ms
133
+ ✓ loads a supatype.config.js (plain ESM)  559ms
134
+ ✓ throws if config is missing the versions section  585ms
135
+ ✓ prefers supatype.config.ts over supatype.config.js when both exist  557ms
136
+ ✓ supports optional output field in config  526ms
137
+ ✓ merges supatype.local.config.ts over base  1081ms
138
+ ✓ tests/binary-cache-cloud-overrides.test.ts (11 tests) 19ms
139
+ ✓ tests/cached-artifact-format.test.ts (7 tests) 13ms
140
+ ✓ tests/tsx-runner.test.ts (7 tests) 2799ms
141
+ ✓ evaluates a simple expression and returns stdout  390ms
142
+ ✓ evaluates TypeScript syntax (type annotations)  393ms
143
+ ✓ can serialize a JSON object to stdout  377ms
144
+ ✓ returns non-zero exit code on syntax error  379ms
145
+ ✓ returns non-zero exit code on runtime error  395ms
146
+ ✓ captures stderr separately from stdout  383ms
147
+ ✓ runs a .ts file and returns its stdout  477ms
148
+ ✓ tests/augmentation-generator.test.ts (3 tests) 12ms
149
+ ✓ tests/ensure-binary.test.ts (2 tests) 7ms
150
+ stdout | tests/app-command.test.ts > supatype app add --static > sets app.mode=static and static_dir in supatype.config.ts
151
+  created package.json
152
+ created supatype.config.ts
153
+ created schema/index.ts
154
+ created .env
155
+ created seed.ts
156
+ created seeds/.gitkeep
157
+ created public/.gitkeep
158
+ created .gitignore
159
+
160
+ stdout | tests/app-command.test.ts > supatype app add --static > creates the static directory when missing
161
+  created package.json
162
+ created supatype.config.ts
163
+ created schema/index.ts
164
+ created .env
165
+ created seed.ts
166
+ created seeds/.gitkeep
167
+ created public/.gitkeep
168
+ created .gitignore
169
+
170
+ ✓ tests/app-command.test.ts (2 tests) 2030ms
171
+ ✓ sets app.mode=static and static_dir in supatype.config.ts  1053ms
172
+ ✓ creates the static directory when missing  976ms
173
+ ✓ tests/seed-discover.test.ts (2 tests) 18ms
174
+ ✓ tests/release-pins.test.ts (2 tests) 3ms
175
+ ✓ tests/migrate-from-v1.test.ts (1 test) 15ms
176
+ ✓ tests/keys.test.ts (11 tests) 12253ms
177
+ ✓ exits 0 with --secret  1115ms
178
+ ✓ outputs ANON_KEY= line  993ms
179
+ ✓ outputs SERVICE_ROLE_KEY= line  1030ms
180
+ ✓ ANON_KEY is a valid three-part JWT  1055ms
181
+ ✓ SERVICE_ROLE_KEY payload has role: service_role  998ms
182
+ ✓ JWT has exp in the future  1016ms
183
+ ✓ --exp-years changes the expiry window  2129ms
184
+ ✓ reads JWT_SECRET from environment variable  934ms
185
+ ✓ reads JWT_SECRET from .env file  1006ms
186
+ ✓ exits non-zero when no secret is available  950ms
187
+ ✓ keys --help shows --secret and --exp-years options  1020ms
188
+ ✓ tests/pg-spawn-env.test.ts (2 tests) 5ms
189
+ ✓ tests/postgres-archive-tag.test.ts (1 test) 2ms
190
+ ✓ tests/cli-help.test.ts (13 tests) 12560ms
191
+ ✓ --help lists all top-level commands  973ms
192
+ ✓ --version prints a semver string  980ms
193
+ ✓ self-update --help describes the command  1043ms
194
+ ✓ init --help describes the init command  992ms
195
+ ✓ push --help describes the push command and --yes flag  987ms
196
+ ✓ diff --help describes the diff command  1018ms
197
+ ✓ pull --help describes deprecated pull command  979ms
198
+ ✓ reset --help shows --yes flag  991ms
199
+ ✓ app --help describes the app command with add/remove subcommands  1029ms
200
+ ✓ app add --help shows --static and --port options  969ms
201
+ ✓ self-host --help shows compose only (legacy commands hidden)  1021ms
202
+ ✓ self-host compose --help shows compose subcommands  886ms
203
+ ✓ unknown command exits non-zero  686ms
204
+
205
+  Test Files  18 passed (18)
206
+  Tests  165 passed (165)
207
+  Start at  21:02:06
208
+  Duration  15.85s (transform 2.36s, setup 0ms, import 7.59s, tests 34.55s, environment 3ms)
209
+
@@ -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.7 typecheck /home/runner/work/supatype/supatype/packages/cli
3
3
  > tsc --project tsconfig.json --noEmit
4
4
 
@@ -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":"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"}
@@ -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":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Binary cache — manages supatype component binaries.
3
+ *
4
+ * Components: engine, server, postgres, deno.
5
+ * Cache root: ~/.supatype/cache/{component}/{version}/
6
+ * Override path: config.overrides?.{component} (local build path).
7
+ *
8
+ * Security model:
9
+ * 1. Download checksums.sha256 + checksums.sha256.minisig from CDN.
10
+ * 2. Verify Ed25519 minisign signature on the checksum file using the
11
+ * embedded public key (SUPATYPE_RELEASE_PUBLIC_KEY).
12
+ * 3. Verify SHA256 of the downloaded binary against the signed checksum.
13
+ * Both checks are mandatory when SUPATYPE_RELEASE_PUBLIC_KEY is set.
14
+ */
15
+ import type { SupatypeProjectConfig } from "./project-config.js";
16
+ /**
17
+ * Set `versions.{engine|server|postgres|deno}: VERSION_PIN_LOCAL` to mean “use `overrides.*` only”
18
+ * without duplicating the path string (Phase 10.7). Requires the matching `overrides` entry.
19
+ */
20
+ export declare const VERSION_PIN_LOCAL = "local";
21
+ /** True if `overrides` contains any non-empty string path (contributor local builds). */
22
+ export declare function hasMeaningfulOverrides(config: SupatypeProjectConfig): boolean;
23
+ /** Lines for a startup banner — non-empty override paths only. */
24
+ export declare function describeActiveOverrides(config: SupatypeProjectConfig): string[];
25
+ /**
26
+ * True when this working tree is associated with a remote Supatype Cloud project:
27
+ * `project.ref`, `.supatype/cloud.json` (schema deploy link), or `.supatype/linked.json` (functions link).
28
+ */
29
+ export declare function isLinkedToCloudProject(cwd: string, config: SupatypeProjectConfig): boolean;
30
+ export type { Component, ComponentVersions } from "./components.js";
31
+ export { BINARY_COMPONENTS } from "./components.js";
32
+ import { type Component } from "./components.js";
33
+ export interface PlatformId {
34
+ os: "linux" | "darwin" | "windows";
35
+ arch: "amd64" | "arm64";
36
+ }
37
+ /** Postgres CDN archives use PG major in the basename (17.2 → `supatype-pg-17-…`). */
38
+ export declare function postgresArchiveTag(version: string): string;
39
+ export declare function cacheRoot(): string;
40
+ export declare function cachePath(component: Component, version: string): string;
41
+ export declare function cachedBinaryPath(component: Component, version: string, platform: PlatformId): string;
42
+ export declare function currentPlatform(): PlatformId;
43
+ /**
44
+ * Resolve the binary path for a component.
45
+ *
46
+ * Resolution order:
47
+ * 1. config.overrides?.[component] — local build path (must exist)
48
+ * 2. Cached binary at ~/.supatype/cache/{component}/{version}/
49
+ * 3. Throws — caller should call download() first.
50
+ *
51
+ * Hard error if any meaningful `overrides` entry is set while the project is linked to cloud
52
+ * (`project.ref`, `.supatype/cloud.json`, or `.supatype/linked.json`).
53
+ */
54
+ export declare function resolveBinary(component: Component, config: SupatypeProjectConfig): Promise<string>;
55
+ /**
56
+ * Download a component binary to the cache.
57
+ *
58
+ * Verification order:
59
+ * 1. Fetch checksums.sha256 + checksums.sha256.minisig from CDN.
60
+ * 2. If SUPATYPE_RELEASE_PUBLIC_KEY is set: verify minisign signature.
61
+ * 3. Verify SHA256 of downloaded binary against signed checksum.
62
+ */
63
+ export declare function download(component: Component, version: string, platform: PlatformId): Promise<string>;
64
+ /** Confirm a downloaded/cached artifact matches the expected CDN format (tests, CI). */
65
+ export declare function validateArtifactFormat(component: Component, filePath: string, platform: PlatformId): void;
66
+ /**
67
+ * On Windows, Git Bash represents paths as /c/Users/... — convert to C:\Users\...
68
+ */
69
+ export declare function normalisePlatformPath(p: string): string;
70
+ export declare function versionFor(component: Component, config: SupatypeProjectConfig): string;
71
+ /**
72
+ * Fetch the latest available version for a component.
73
+ * Each component directory on the CDN exposes `latest.json` → `{"version":"x.y.z"}`.
74
+ */
75
+ export declare function fetchLatestVersion(component: Component): Promise<string>;
76
+ /** Fetch the latest version for all components concurrently. */
77
+ export declare function fetchAllLatestVersions(): Promise<Record<Component, string>>;
78
+ /**
79
+ * Download all component binaries for the current platform.
80
+ * Skips components that are already cached.
81
+ * Fails gracefully when graceful=true (suitable for postinstall).
82
+ */
83
+ /**
84
+ * Verify all cached binaries for the current platform (used by integration CI).
85
+ * Throws if any cached component is missing or fails format checks.
86
+ */
87
+ export declare function verifyCachedBinaries(versions: SupatypeProjectConfig["versions"]): void;
88
+ export declare function downloadAll(versions: SupatypeProjectConfig["versions"], graceful?: boolean): Promise<void>;
89
+ //# sourceMappingURL=binary-cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"binary-cache.d.ts","sourceRoot":"","sources":["../src/binary-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAmBH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAGhE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,UAAU,CAAA;AAExC,yFAAyF;AACzF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAO7E;AAED,kEAAkE;AAClE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,EAAE,CAgB/E;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAqB1F;AAMD,YAAY,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACnD,OAAO,EAAqB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAEnE,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAA;IAClC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAA;CACxB;AAQD,sFAAsF;AACtF,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE1D;AA6BD,wBAAgB,SAAS,IAAI,MAAM,CAElC;AAED,wBAAgB,SAAS,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEvE;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,GAAG,MAAM,CAEpG;AAgBD,wBAAgB,eAAe,IAAI,UAAU,CAY5C;AAMD;;;;;;;;;;GAUG;AACH,wBAAsB,aAAa,CACjC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,CAAC,CA+DjB;AAMD;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAC5B,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,UAAU,GACnB,OAAO,CAAC,MAAM,CAAC,CAwDjB;AAmMD,wFAAwF;AACxF,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,UAAU,GACnB,IAAI,CAEN;AAsJD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAYvD;AAED,wBAAgB,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,MAAM,EAAE,qBAAqB,GAAG,MAAM,CAMtF;AAMD;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,CAW9E;AAED,gEAAgE;AAChE,wBAAsB,sBAAsB,IAAI,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAKjF;AAMD;;;;GAIG;AACH;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,GAAG,IAAI,CAetF;AAED,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,qBAAqB,CAAC,UAAU,CAAC,EAC3C,QAAQ,UAAQ,GACf,OAAO,CAAC,IAAI,CAAC,CAmBf"}