@supatype/cli 0.1.0-alpha.13 → 0.1.0-alpha.14

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 (54) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +208 -91
  3. package/.turbo/turbo-typecheck.log +1 -1
  4. package/dist/app-config.d.ts +10 -0
  5. package/dist/app-config.d.ts.map +1 -1
  6. package/dist/app-config.js +72 -0
  7. package/dist/app-config.js.map +1 -1
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +2 -0
  10. package/dist/cli.js.map +1 -1
  11. package/dist/commands/add.d.ts +3 -0
  12. package/dist/commands/add.d.ts.map +1 -0
  13. package/dist/commands/add.js +83 -0
  14. package/dist/commands/add.js.map +1 -0
  15. package/dist/commands/app.js +2 -2
  16. package/dist/commands/app.js.map +1 -1
  17. package/dist/commands/init.d.ts +29 -1
  18. package/dist/commands/init.d.ts.map +1 -1
  19. package/dist/commands/init.js +569 -90
  20. package/dist/commands/init.js.map +1 -1
  21. package/dist/commands/keys.d.ts +15 -1
  22. package/dist/commands/keys.d.ts.map +1 -1
  23. package/dist/commands/keys.js +39 -4
  24. package/dist/commands/keys.js.map +1 -1
  25. package/dist/kong-config.d.ts +9 -0
  26. package/dist/kong-config.d.ts.map +1 -1
  27. package/dist/kong-config.js +18 -1
  28. package/dist/kong-config.js.map +1 -1
  29. package/dist/project-config.d.ts +16 -0
  30. package/dist/project-config.d.ts.map +1 -1
  31. package/dist/project-config.js +34 -0
  32. package/dist/project-config.js.map +1 -1
  33. package/dist/prompts.d.ts +8 -0
  34. package/dist/prompts.d.ts.map +1 -0
  35. package/dist/prompts.js +20 -0
  36. package/dist/prompts.js.map +1 -0
  37. package/dist/self-host-compose.d.ts.map +1 -1
  38. package/dist/self-host-compose.js +61 -17
  39. package/dist/self-host-compose.js.map +1 -1
  40. package/package.json +2 -1
  41. package/src/app-config.ts +80 -0
  42. package/src/cli.ts +2 -0
  43. package/src/commands/add.ts +94 -0
  44. package/src/commands/app.ts +2 -2
  45. package/src/commands/init.ts +738 -88
  46. package/src/commands/keys.ts +49 -4
  47. package/src/kong-config.ts +24 -1
  48. package/src/project-config.ts +45 -0
  49. package/src/prompts.ts +21 -0
  50. package/src/self-host-compose.ts +61 -17
  51. package/tests/config.test.ts +26 -0
  52. package/tests/init.test.ts +128 -15
  53. package/tests/runtime-contract.test.ts +111 -1
  54. package/tsconfig.tsbuildinfo +1 -1
@@ -1,4 +1,4 @@
1
1
 
2
- > @supatype/cli@0.1.0-alpha.13 build /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.1.0-alpha.14 build /home/runner/work/supatype/supatype/packages/cli
3
3
  > tsc --project tsconfig.json && node --input-type=module -e "import{cpSync,mkdirSync}from'node:fs';const a='dist/assets';mkdirSync(a,{recursive:true});cpSync('assets/supatype-logo-wordmark.ascii.txt',a+'/supatype-logo-wordmark.ascii.txt')"
4
4
 
@@ -1,37 +1,10 @@
1
1
 
2
- > @supatype/cli@0.1.0-alpha.13 test /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.1.0-alpha.14 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/runtime-contract.test.ts (32 tests) 162ms
9
- ✓ tests/type-extractor.test.ts (34 tests) 179ms
10
- ✓ tests/config.test.ts (16 tests) 4820ms
11
- ✓ loads a valid supatype.config.ts (plain export default, no package imports)  919ms
12
- ✓ normalizes shorthand schema string to { path, pg_schema }  718ms
13
- ✓ loads a supatype.config.js (plain ESM)  498ms
14
- ✓ loads config without a versions section (latest by default)  551ms
15
- ✓ prefers supatype.config.ts over supatype.config.js when both exist  576ms
16
- ✓ supports optional output field in config  446ms
17
- ✓ merges supatype.local.config.ts over base  1091ms
18
- stdout | tests/link.test.ts > link model > migrates cloud.json into link.json
19
-  created package.json
20
- stderr | tests/link.test.ts > link model > migrates cloud.json into link.json
21
- Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
22
-
23
- created supatype.config.ts
24
- created schema/index.ts
25
- created .env
26
- created seed.ts
27
- created seeds/.gitkeep
28
- created public/.gitkeep
29
- created .gitignore
30
-
31
- ✓ tests/link.test.ts (4 tests) 2644ms
32
- ✓ resolveTarget returns cloud mode with /api/v1 prefix  885ms
33
- ✓ resolveTarget returns self-host mode with /platform/v1 prefix  941ms
34
- ✓ targetSchemaRollback posts to /platform/v1 when linked  807ms
35
8
  stdout | tests/init.test.ts > scaffold() > creates all expected files
36
9
   created package.json
37
10
  created supatype.config.ts
@@ -102,7 +75,7 @@
102
75
  created public/.gitkeep
103
76
  created .gitignore
104
77
 
105
- stdout | tests/init.test.ts > scaffold() > schema/index.ts exports a User model using RFC v2 Model<>
78
+ stdout | tests/init.test.ts > scaffold() > schema/index.ts exports a Profile model using RFC v2 Model<>
106
79
   created package.json
107
80
  created supatype.config.ts
108
81
  created schema/index.ts
@@ -150,47 +123,191 @@
150
123
  created public/.gitkeep
151
124
  created .gitignore
152
125
 
153
- ✓ tests/init.test.ts (11 tests) 32ms
126
+ stdout | tests/init.test.ts > scaffold() > self-host target emits standalone mode + domain and a local override
127
+  created package.json
128
+ created supatype.config.ts
129
+ created supatype.local.config.ts
130
+ created schema/index.ts
131
+ created .env
132
+ created seed.ts
133
+ created seeds/.gitkeep
134
+ created public/.gitkeep
135
+ created .gitignore
136
+
137
+ stdout | tests/init.test.ts > scaffold() > self-host with a TLS email emits an active tls block
138
+  created package.json
139
+ created supatype.config.ts
140
+ created supatype.local.config.ts
141
+ created schema/index.ts
142
+ created .env
143
+ created seed.ts
144
+ created seeds/.gitkeep
145
+ created public/.gitkeep
146
+ created .gitignore
147
+
148
+ stdout | tests/init.test.ts > scaffold() > self-host without a TLS email emits a commented tls hint
149
+  created package.json
150
+ created supatype.config.ts
151
+ created supatype.local.config.ts
152
+ created schema/index.ts
153
+ created .env
154
+ created seed.ts
155
+ created seeds/.gitkeep
156
+ created public/.gitkeep
157
+ created .gitignore
158
+
159
+ stdout | tests/init.test.ts > scaffold() > cloud target emits managed mode + environments and a local override
160
+  created package.json
161
+ created supatype.config.ts
162
+ created supatype.local.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
+ stdout | tests/init.test.ts > scaffold() > later target stays in dev mode with no local override
171
+  created package.json
172
+ created supatype.config.ts
173
+ created schema/index.ts
174
+ created .env
175
+ created seed.ts
176
+ created seeds/.gitkeep
177
+ created public/.gitkeep
178
+ created .gitignore
179
+
180
+ stdout | tests/init.test.ts > scaffold() > static app mode writes the static dir and config block
181
+  created package.json
182
+ created supatype.config.ts
183
+ created schema/index.ts
184
+ created .env
185
+ created seed.ts
186
+ created seeds/.gitkeep
187
+ created dist/.gitkeep
188
+ created .gitignore
189
+
190
+ stdout | tests/init.test.ts > scaffold() > proxy app mode writes upstream and start in the config
191
+  created package.json
192
+ created supatype.config.ts
193
+ created schema/index.ts
194
+ created .env
195
+ created seed.ts
196
+ created seeds/.gitkeep
197
+ created public/.gitkeep
198
+ created .gitignore
199
+
200
+ stdout | tests/init.test.ts > scaffold() > hello-world function scaffolds function files and a functions script
201
+  created package.json
202
+ created supatype.config.ts
203
+ created schema/index.ts
204
+ created .env
205
+ created seed.ts
206
+ created seeds/.gitkeep
207
+ created public/.gitkeep
208
+ created functions/hello/index.ts
209
+ created functions/_shared/README.md
210
+ created functions/.env.local
211
+ created .gitignore
212
+
213
+ stdout | tests/init.test.ts > scaffold() > custom schema path is honored
214
+  created package.json
215
+ created supatype.config.ts
216
+ created db/schema.ts
217
+ created .env
218
+ created seed.ts
219
+ created seeds/.gitkeep
220
+ created public/.gitkeep
221
+ created .gitignore
222
+
223
+ stdout | tests/init.test.ts > scaffold() > s3 storage and resend email reflect in config and .env
224
+  created package.json
225
+ created supatype.config.ts
226
+ created schema/index.ts
227
+ created .env
228
+ created seed.ts
229
+ created seeds/.gitkeep
230
+ created public/.gitkeep
231
+ created .gitignore
232
+
233
+ stdout | tests/init.test.ts > scaffold() > mixed local dev and s3 production writes both storage sections
234
+  created package.json
235
+ created supatype.config.ts
236
+ created schema/index.ts
237
+ created .env
238
+ created seed.ts
239
+ created seeds/.gitkeep
240
+ created public/.gitkeep
241
+ created .gitignore
242
+
243
+ ✓ tests/init.test.ts (22 tests) 153ms
244
+ ✓ tests/runtime-contract.test.ts (39 tests) 323ms
245
+ ✓ tests/type-extractor.test.ts (34 tests) 311ms
246
+ ✓ tests/config.test.ts (18 tests) 4514ms
247
+ ✓ loads a valid supatype.config.ts (plain export default, no package imports)  857ms
248
+ ✓ normalizes shorthand schema string to { path, pg_schema }  495ms
249
+ ✓ loads a supatype.config.js (plain ESM)  500ms
250
+ ✓ loads config without a versions section (latest by default)  529ms
251
+ ✓ prefers supatype.config.ts over supatype.config.js when both exist  542ms
252
+ ✓ supports optional output field in config  520ms
253
+ ✓ merges supatype.local.config.ts over base  1059ms
254
+ stdout | tests/link.test.ts > link model > migrates cloud.json into link.json
255
+  created package.json
256
+ created supatype.config.ts
257
+ created schema/index.ts
258
+ created .env
259
+ created seed.ts
260
+ created seeds/.gitkeep
261
+ created public/.gitkeep
262
+ created .gitignore
263
+
264
+ stderr | tests/link.test.ts > link model > migrates cloud.json into link.json
265
+ Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
266
+
267
+ ✓ tests/link.test.ts (4 tests) 2782ms
268
+ ✓ resolveTarget returns cloud mode with /api/v1 prefix  897ms
269
+ ✓ resolveTarget returns self-host mode with /platform/v1 prefix  909ms
270
+ ✓ targetSchemaRollback posts to /platform/v1 when linked  965ms
154
271
 
155
272
 
156
273
 
157
274
 
158
- ✓ tests/dev-ui.test.ts (15 tests) 65ms
275
+ ✓ tests/dev-ui.test.ts (15 tests) 71ms
159
276
 
160
- ✓ tests/pull-utils.test.ts (49 tests) 9ms
161
- ✓ tests/schema-sources.test.ts (5 tests) 1069ms
162
- ✓ buildSchemaSourcesPayload includes manifest metadata  530ms
163
- ✓ restore overwrites modified local files  494ms
277
+ ✓ tests/pull-utils.test.ts (49 tests) 13ms
278
+ ✓ tests/schema-sources.test.ts (5 tests) 1101ms
279
+ ✓ buildSchemaSourcesPayload includes manifest metadata  521ms
280
+ ✓ restore overwrites modified local files  535ms
164
281
  stderr | tests/binary-cache-cloud-overrides.test.ts > isLinkedToCloudProject > is true when .supatype/cloud.json has projectSlug
165
282
  Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
166
283
 
167
- ✓ tests/binary-cache-cloud-overrides.test.ts (11 tests) 20ms
168
- ✓ tests/minisign.test.ts (5 tests) 14ms
284
+ ✓ tests/binary-cache-cloud-overrides.test.ts (11 tests) 19ms
285
+ ✓ tests/minisign.test.ts (5 tests) 19ms
169
286
  stdout | tests/storage-provision.test.ts > provisionBuckets > POSTs each bucket to the storage API
170
287
  [supatype] Storage bucket "photos" ready.
171
288
 
172
289
  stdout | tests/storage-provision.test.ts > provisionBuckets > POSTs each bucket to the storage API
173
290
  [supatype] Storage bucket "avatars" ready.
174
291
 
175
- ✓ tests/storage-provision.test.ts (6 tests) 9ms
176
- ✓ tests/cached-artifact-format.test.ts (7 tests) 13ms
177
- ✓ tests/proxy-dev-app.test.ts (7 tests) 5ms
178
- ✓ tests/keys.test.ts (11 tests) 12265ms
179
- ✓ exits 0 with --secret  1299ms
180
- ✓ outputs ANON_KEY= line  998ms
181
- ✓ outputs SERVICE_ROLE_KEY= line  1046ms
182
- ✓ ANON_KEY is a valid three-part JWT  976ms
183
- ✓ SERVICE_ROLE_KEY payload has role: service_role  1046ms
184
- ✓ JWT has exp in the future  986ms
185
- ✓ --exp-years changes the expiry window  1971ms
186
- ✓ reads JWT_SECRET from environment variable  1019ms
187
- ✓ reads JWT_SECRET from .env file  964ms
188
- ✓ exits non-zero when no secret is available  942ms
189
- ✓ keys --help shows --secret and --exp-years options  1013ms
190
- ✓ tests/augmentation-generator.test.ts (3 tests) 19ms
191
- ✓ tests/type-resolver.test.ts (2 tests) 11ms
192
- ✓ tests/engine-push-output.test.ts (7 tests) 5ms
193
- ✓ tests/ensure-binary.test.ts (2 tests) 13ms
292
+ ✓ tests/storage-provision.test.ts (6 tests) 12ms
293
+ ✓ tests/cached-artifact-format.test.ts (7 tests) 12ms
294
+ ✓ tests/proxy-dev-app.test.ts (7 tests) 6ms
295
+ ✓ tests/keys.test.ts (11 tests) 12701ms
296
+ ✓ exits 0 with --secret  1459ms
297
+ ✓ outputs ANON_KEY= line  1045ms
298
+ ✓ outputs SERVICE_ROLE_KEY= line  1007ms
299
+ ✓ ANON_KEY is a valid three-part JWT  1025ms
300
+ ✓ SERVICE_ROLE_KEY payload has role: service_role  1032ms
301
+ ✓ JWT has exp in the future  1010ms
302
+ ✓ --exp-years changes the expiry window  2011ms
303
+ ✓ reads JWT_SECRET from environment variable  1018ms
304
+ ✓ reads JWT_SECRET from .env file  1065ms
305
+ ✓ exits non-zero when no secret is available  950ms
306
+ ✓ keys --help shows --secret and --exp-years options  1072ms
307
+ ✓ tests/augmentation-generator.test.ts (3 tests) 16ms
308
+ ✓ tests/type-resolver.test.ts (2 tests) 17ms
309
+ ✓ tests/engine-push-output.test.ts (7 tests) 7ms
310
+ ✓ tests/ensure-binary.test.ts (2 tests) 14ms
194
311
  stdout | tests/app-command.test.ts > supatype app add --static > sets app.mode=static and static_dir in supatype.config.ts
195
312
   created package.json
196
313
  created supatype.config.ts
@@ -201,15 +318,15 @@
201
318
  created public/.gitkeep
202
319
  created .gitignore
203
320
 
204
- ✓ tests/tsx-runner.test.ts (7 tests) 2693ms
205
- ✓ evaluates a simple expression and returns stdout  389ms
206
- ✓ evaluates TypeScript syntax (type annotations)  401ms
207
- ✓ can serialize a JSON object to stdout  333ms
208
- ✓ returns non-zero exit code on syntax error  318ms
209
- ✓ returns non-zero exit code on runtime error  378ms
210
- ✓ captures stderr separately from stdout  387ms
211
- ✓ runs a .ts file and returns its stdout  484ms
212
- ✓ tests/normalize-admin-config.test.ts (1 test) 5ms
321
+ ✓ tests/tsx-runner.test.ts (7 tests) 2758ms
322
+ ✓ evaluates a simple expression and returns stdout  432ms
323
+ ✓ evaluates TypeScript syntax (type annotations)  367ms
324
+ ✓ can serialize a JSON object to stdout  354ms
325
+ ✓ returns non-zero exit code on syntax error  334ms
326
+ ✓ returns non-zero exit code on runtime error  354ms
327
+ ✓ captures stderr separately from stdout  390ms
328
+ ✓ runs a .ts file and returns its stdout  521ms
329
+ ✓ tests/normalize-admin-config.test.ts (1 test) 7ms
213
330
  ✓ tests/docker-postgres.test.ts (5 tests) 5ms
214
331
  stdout | tests/app-command.test.ts > supatype app add --static > creates the static directory when missing
215
332
   created package.json
@@ -221,35 +338,35 @@
221
338
  created public/.gitkeep
222
339
  created .gitignore
223
340
 
224
- ✓ tests/seed-discover.test.ts (2 tests) 20ms
225
- ✓ tests/studio-admin-roles.test.ts (3 tests) 5ms
341
+ ✓ tests/seed-discover.test.ts (2 tests) 15ms
342
+ ✓ tests/studio-admin-roles.test.ts (3 tests) 4ms
226
343
  ✓ tests/release-pins.test.ts (2 tests) 4ms
227
- ✓ tests/app-command.test.ts (2 tests) 2001ms
228
- ✓ sets app.mode=static and static_dir in supatype.config.ts  1044ms
229
- ✓ creates the static directory when missing  955ms
230
- ✓ tests/pg-spawn-env.test.ts (2 tests) 7ms
344
+ ✓ tests/app-command.test.ts (2 tests) 2146ms
345
+ ✓ sets app.mode=static and static_dir in supatype.config.ts  1054ms
346
+ ✓ creates the static directory when missing  1090ms
347
+ ✓ tests/cli-help.test.ts (16 tests) 16484ms
348
+ ✓ --help lists all top-level commands  1346ms
349
+ ✓ --version prints a semver string  1002ms
350
+ ✓ self-update --help describes the command  1013ms
351
+ ✓ init --help describes the init command  983ms
352
+ ✓ push --help describes the push command and --yes flag  1060ms
353
+ ✓ diff --help describes the diff command  1035ms
354
+ ✓ pull --help describes scaffold pull command  1017ms
355
+ ✓ doctor --help describes drift report command  1010ms
356
+ ✓ introspect --help describes database introspection command  930ms
357
+ ✓ adopt --help describes adoption ceremony command  1000ms
358
+ ✓ reset --help shows --yes flag  1004ms
359
+ ✓ app --help describes the app command with add/remove subcommands  1001ms
360
+ ✓ app add --help shows --static and --port options  1059ms
361
+ ✓ self-host --help shows compose only (legacy commands hidden)  1014ms
362
+ ✓ self-host compose --help shows compose subcommands  969ms
363
+ ✓ unknown command exits non-zero  1036ms
364
+ ✓ tests/pg-spawn-env.test.ts (2 tests) 4ms
231
365
  ✓ tests/postgres-archive-tag.test.ts (1 test) 3ms
232
366
  ✓ tests/migrate-from-v1.test.ts (1 test) 11ms
233
- ✓ tests/cli-help.test.ts (16 tests) 16300ms
234
- ✓ --help lists all top-level commands  1178ms
235
- ✓ --version prints a semver string  946ms
236
- ✓ self-update --help describes the command  1033ms
237
- ✓ init --help describes the init command  1012ms
238
- ✓ push --help describes the push command and --yes flag  967ms
239
- ✓ diff --help describes the diff command  991ms
240
- ✓ pull --help describes scaffold pull command  1033ms
241
- ✓ doctor --help describes drift report command  1000ms
242
- ✓ introspect --help describes database introspection command  1038ms
243
- ✓ adopt --help describes adoption ceremony command  1030ms
244
- ✓ reset --help shows --yes flag  1077ms
245
- ✓ app --help describes the app command with add/remove subcommands  1015ms
246
- ✓ app add --help shows --static and --port options  1074ms
247
- ✓ self-host --help shows compose only (legacy commands hidden)  973ms
248
- ✓ self-host compose --help shows compose subcommands  1005ms
249
- ✓ unknown command exits non-zero  921ms
250
367
 
251
368
   Test Files  29 passed (29)
252
-  Tests  269 passed (269)
253
-  Start at  21:39:03
254
-  Duration  19.31s (transform 2.40s, setup 0ms, import 9.90s, tests 42.41s, environment 5ms)
369
+  Tests  289 passed (289)
370
+  Start at  21:04:37
371
+  Duration  20.06s (transform 2.99s, setup 0ms, import 10.13s, tests 43.53s, environment 19ms)
255
372
 
@@ -1,4 +1,4 @@
1
1
 
2
- > @supatype/cli@0.1.0-alpha.13 typecheck /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.1.0-alpha.14 typecheck /home/runner/work/supatype/supatype/packages/cli
3
3
  > tsc --project tsconfig.json --noEmit
4
4
 
@@ -4,4 +4,14 @@ export interface UpdateAppConfigInput {
4
4
  upstream?: string;
5
5
  }
6
6
  export declare function updateAppConfigInProject(cwd: string, input: UpdateAppConfigInput): string;
7
+ export interface UpdateServerConfigInput {
8
+ domain: string;
9
+ tlsEmail: string;
10
+ provider?: "kong" | "none";
11
+ }
12
+ /**
13
+ * Set `server.mode = "standalone"` plus `domain` and `tls` in supatype.config.ts,
14
+ * enabling self-host HTTPS. Preserves other `server` keys (port, etc).
15
+ */
16
+ export declare function updateServerConfigInProject(cwd: string, input: UpdateServerConfigInput): string;
7
17
  //# sourceMappingURL=app-config.d.ts.map
@@ -1 +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"}
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;AAuCD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;IAChB,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;CAC3B;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,uBAAuB,GAAG,MAAM,CAQ/F"}
@@ -46,6 +46,78 @@ function updateAppConfigAst(configPath, input) {
46
46
  }
47
47
  return sourceFile.getFullText();
48
48
  }
49
+ /**
50
+ * Set `server.mode = "standalone"` plus `domain` and `tls` in supatype.config.ts,
51
+ * enabling self-host HTTPS. Preserves other `server` keys (port, etc).
52
+ */
53
+ export function updateServerConfigInProject(cwd, input) {
54
+ const configPath = resolve(cwd, "supatype.config.ts");
55
+ if (!existsSync(configPath)) {
56
+ throw new Error("supatype.config.ts not found. Run: supatype init");
57
+ }
58
+ const next = updateServerConfigAst(configPath, input);
59
+ writeFileSync(configPath, next, "utf8");
60
+ return configPath;
61
+ }
62
+ function updateServerConfigAst(configPath, input) {
63
+ const project = new Project({
64
+ useInMemoryFileSystem: false,
65
+ skipAddingFilesFromTsConfig: true,
66
+ manipulationSettings: {
67
+ quoteKind: QuoteKind.Double,
68
+ },
69
+ });
70
+ const srcText = readFileSync(configPath, "utf8");
71
+ const sourceFile = project.createSourceFile(configPath, srcText, { overwrite: true });
72
+ const rootObject = getRootConfigObject(sourceFile);
73
+ const serverProperty = rootObject.getProperty("server");
74
+ if (serverProperty === undefined) {
75
+ rootObject.addPropertyAssignment({
76
+ name: "server",
77
+ initializer: renderServerInitializer(input),
78
+ });
79
+ }
80
+ else if (Node.isPropertyAssignment(serverProperty)) {
81
+ const init = serverProperty.getInitializer();
82
+ if (init && Node.isObjectLiteralExpression(init)) {
83
+ patchServerObject(init, input);
84
+ }
85
+ else {
86
+ serverProperty.setInitializer(renderServerInitializer(input));
87
+ }
88
+ }
89
+ else {
90
+ serverProperty.remove();
91
+ rootObject.addPropertyAssignment({
92
+ name: "server",
93
+ initializer: renderServerInitializer(input),
94
+ });
95
+ }
96
+ return sourceFile.getFullText();
97
+ }
98
+ function renderServerInitializer(input) {
99
+ const provider = input.provider ?? "kong";
100
+ return `{
101
+ mode: "standalone",
102
+ domain: "${input.domain}",
103
+ tls: { email: "${input.tlsEmail}", provider: "${provider}" },
104
+ }`;
105
+ }
106
+ function patchServerObject(serverObj, input) {
107
+ upsertStringProperty(serverObj, "mode", "standalone");
108
+ upsertStringProperty(serverObj, "domain", input.domain);
109
+ const provider = input.provider ?? "kong";
110
+ const tlsInitializer = `{ email: "${input.tlsEmail}", provider: "${provider}" }`;
111
+ const existing = serverObj.getProperty("tls");
112
+ if (existing && Node.isPropertyAssignment(existing)) {
113
+ existing.setInitializer(tlsInitializer);
114
+ }
115
+ else {
116
+ if (existing)
117
+ existing.remove();
118
+ serverObj.addPropertyAssignment({ name: "tls", initializer: tlsInitializer });
119
+ }
120
+ }
49
121
  function getRootConfigObject(sourceFile) {
50
122
  const exportAssignment = sourceFile.getFirstDescendantByKind(SyntaxKind.ExportAssignment);
51
123
  if (!exportAssignment) {
@@ -1 +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"}
1
+ {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AA+BA,wBAAgB,GAAG,IAAI,IAAI,CAqC1B"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAgCA,wBAAgB,GAAG,IAAI,IAAI,CAsC1B"}
package/dist/cli.js CHANGED
@@ -15,6 +15,7 @@ import { registerMigrate } from "./commands/migrate.js";
15
15
  import { registerSeed } from "./commands/seed.js";
16
16
  import { registerKeys } from "./commands/keys.js";
17
17
  import { registerApp } from "./commands/app.js";
18
+ import { registerAdd } from "./commands/add.js";
18
19
  import { registerSelfHost } from "./commands/self-host.js";
19
20
  import { registerCloud } from "./commands/cloud.js";
20
21
  import { registerEngine } from "./commands/engine.js";
@@ -50,6 +51,7 @@ export function run() {
50
51
  registerSeed(program);
51
52
  registerKeys(program);
52
53
  registerApp(program);
54
+ registerAdd(program);
53
55
  registerSelfHost(program);
54
56
  registerCloud(program);
55
57
  registerEngine(program);
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerAdd(program: Command): void;
3
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOxC,wBAAgB,WAAW,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAYlD"}
@@ -0,0 +1,83 @@
1
+ import * as p from "@clack/prompts";
2
+ import { loadConfig } from "../config.js";
3
+ import { selfHostTlsEnabled } from "../project-config.js";
4
+ import { updateServerConfigInProject } from "../app-config.js";
5
+ import { ensureNotCancelled, printLogo } from "../prompts.js";
6
+ export function registerAdd(program) {
7
+ const addCmd = program
8
+ .command("add")
9
+ .description("Add capabilities to an existing project");
10
+ addCmd
11
+ .command("domain [domain]")
12
+ .description("Add a custom domain with automatic HTTPS (self-host)")
13
+ .option("--email <email>", "Email for Let's Encrypt TLS certificates")
14
+ .action(async (domainArg, opts) => {
15
+ await addDomain(domainArg, opts.email);
16
+ });
17
+ }
18
+ async function promptDomain(initial) {
19
+ const trimmed = initial?.trim();
20
+ if (trimmed)
21
+ return trimmed;
22
+ return ensureNotCancelled(await p.text({
23
+ message: "Please provide domain:",
24
+ placeholder: "demo.supatype.com",
25
+ validate: (v) => ((v ?? "").trim().length === 0 ? "Domain is required" : undefined),
26
+ })).trim();
27
+ }
28
+ async function promptEmail(initial) {
29
+ const trimmed = initial?.trim();
30
+ if (trimmed)
31
+ return trimmed;
32
+ return ensureNotCancelled(await p.text({
33
+ message: "Please provide email for TLS",
34
+ placeholder: "hello@supatype.com",
35
+ validate: (v) => ((v ?? "").trim().length === 0 ? "Email is required" : undefined),
36
+ })).trim();
37
+ }
38
+ async function addDomain(domainArg, emailArg) {
39
+ const cwd = process.cwd();
40
+ const interactive = !domainArg?.trim() || !emailArg?.trim();
41
+ if (interactive) {
42
+ printLogo();
43
+ p.intro("Add a custom domain");
44
+ }
45
+ const domain = await promptDomain(domainArg);
46
+ const email = await promptEmail(emailArg);
47
+ try {
48
+ const configPath = updateServerConfigInProject(cwd, { domain, tlsEmail: email });
49
+ if (interactive) {
50
+ p.outro(`Updated ${configPath}`);
51
+ }
52
+ else {
53
+ console.log(` updated ${configPath}`);
54
+ }
55
+ printDomainNextSteps(cwd, domain);
56
+ }
57
+ catch (err) {
58
+ console.error(err.message);
59
+ process.exit(1);
60
+ }
61
+ }
62
+ function printDomainNextSteps(cwd, domain) {
63
+ let tlsActive = true;
64
+ try {
65
+ tlsActive = selfHostTlsEnabled(loadConfig(cwd));
66
+ }
67
+ catch {
68
+ // config re-load is best-effort for the warning below
69
+ }
70
+ console.log(`\nDomain set to ${domain} with automatic HTTPS.`);
71
+ if (!tlsActive) {
72
+ console.log("\nNote: a supatype.local.config.ts override (server.mode=dev) is suppressing HTTPS locally.\n" +
73
+ "That file is gitignored, so HTTPS still activates on your production server.");
74
+ }
75
+ console.log("\nGo live:");
76
+ console.log(` 1. Point DNS: an A record for ${domain} -> your server's public IP`);
77
+ console.log(" 2. Open ports 80 and 443 on the server firewall");
78
+ console.log(" 3. supatype self-host compose up -d # Kong provisions HTTPS automatically");
79
+ console.log(`\nYour Supatype platform goes live at https://${domain}`);
80
+ console.log(" Your app, REST, Auth, Storage, Realtime, Functions, and Studio — all behind one HTTPS domain.");
81
+ console.log(" Certificates persist in the valkey-data volume.\n");
82
+ }
83
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../src/commands/add.ts"],"names":[],"mappings":"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"}