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

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 (58) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +209 -92
  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/commands/self-host.d.ts.map +1 -1
  26. package/dist/commands/self-host.js +5 -5
  27. package/dist/commands/self-host.js.map +1 -1
  28. package/dist/kong-config.d.ts +9 -0
  29. package/dist/kong-config.d.ts.map +1 -1
  30. package/dist/kong-config.js +18 -1
  31. package/dist/kong-config.js.map +1 -1
  32. package/dist/project-config.d.ts +16 -0
  33. package/dist/project-config.d.ts.map +1 -1
  34. package/dist/project-config.js +34 -0
  35. package/dist/project-config.js.map +1 -1
  36. package/dist/prompts.d.ts +8 -0
  37. package/dist/prompts.d.ts.map +1 -0
  38. package/dist/prompts.js +20 -0
  39. package/dist/prompts.js.map +1 -0
  40. package/dist/self-host-compose.d.ts.map +1 -1
  41. package/dist/self-host-compose.js +62 -17
  42. package/dist/self-host-compose.js.map +1 -1
  43. package/package.json +2 -1
  44. package/src/app-config.ts +80 -0
  45. package/src/cli.ts +2 -0
  46. package/src/commands/add.ts +94 -0
  47. package/src/commands/app.ts +2 -2
  48. package/src/commands/init.ts +738 -88
  49. package/src/commands/keys.ts +49 -4
  50. package/src/commands/self-host.ts +25 -5
  51. package/src/kong-config.ts +24 -1
  52. package/src/project-config.ts +45 -0
  53. package/src/prompts.ts +21 -0
  54. package/src/self-host-compose.ts +62 -17
  55. package/tests/config.test.ts +26 -0
  56. package/tests/init.test.ts +128 -15
  57. package/tests/runtime-contract.test.ts +111 -1
  58. 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.15 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.15 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) 128ms
244
+ ✓ tests/type-extractor.test.ts (34 tests) 137ms
245
+ ✓ tests/runtime-contract.test.ts (39 tests) 147ms
246
+ ✓ tests/config.test.ts (18 tests) 4109ms
247
+ ✓ loads a valid supatype.config.ts (plain export default, no package imports)  635ms
248
+ ✓ normalizes shorthand schema string to { path, pg_schema }  509ms
249
+ ✓ loads a supatype.config.js (plain ESM)  538ms
250
+ ✓ loads config without a versions section (latest by default)  471ms
251
+ ✓ prefers supatype.config.ts over supatype.config.js when both exist  539ms
252
+ ✓ supports optional output field in config  464ms
253
+ ✓ merges supatype.local.config.ts over base  941ms
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) 2735ms
268
+ ✓ resolveTarget returns cloud mode with /api/v1 prefix  907ms
269
+ ✓ resolveTarget returns self-host mode with /platform/v1 prefix  869ms
270
+ ✓ targetSchemaRollback posts to /platform/v1 when linked  949ms
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) 68ms
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) 12ms
278
+ ✓ tests/schema-sources.test.ts (5 tests) 1063ms
279
+ ✓ buildSchemaSourcesPayload includes manifest metadata  501ms
280
+ ✓ restore overwrites modified local files  521ms
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) 17ms
285
+ ✓ tests/minisign.test.ts (5 tests) 12ms
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
292
+ ✓ tests/storage-provision.test.ts (6 tests) 12ms
293
+ ✓ tests/cached-artifact-format.test.ts (7 tests) 12ms
177
294
  ✓ 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
295
+ ✓ tests/keys.test.ts (11 tests) 11934ms
296
+ ✓ exits 0 with --secret  1101ms
297
+ ✓ outputs ANON_KEY= line  955ms
298
+ ✓ outputs SERVICE_ROLE_KEY= line  990ms
299
+ ✓ ANON_KEY is a valid three-part JWT  1041ms
300
+ ✓ SERVICE_ROLE_KEY payload has role: service_role  1027ms
301
+ ✓ JWT has exp in the future  991ms
302
+ ✓ --exp-years changes the expiry window  1942ms
303
+ ✓ reads JWT_SECRET from environment variable  938ms
304
+ ✓ reads JWT_SECRET from .env file  971ms
305
+ ✓ exits non-zero when no secret is available  928ms
306
+ ✓ keys --help shows --secret and --exp-years options  1043ms
307
+ ✓ tests/augmentation-generator.test.ts (3 tests) 12ms
308
+ ✓ tests/type-resolver.test.ts (2 tests) 15ms
309
+ ✓ tests/engine-push-output.test.ts (7 tests) 6ms
310
+ ✓ tests/ensure-binary.test.ts (2 tests) 8ms
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,16 +318,16 @@
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
213
- ✓ tests/docker-postgres.test.ts (5 tests) 5ms
321
+ ✓ tests/tsx-runner.test.ts (7 tests) 2738ms
322
+ ✓ evaluates a simple expression and returns stdout  440ms
323
+ ✓ evaluates TypeScript syntax (type annotations)  378ms
324
+ ✓ can serialize a JSON object to stdout  384ms
325
+ ✓ returns non-zero exit code on syntax error  385ms
326
+ ✓ returns non-zero exit code on runtime error  337ms
327
+ ✓ captures stderr separately from stdout  367ms
328
+ ✓ runs a .ts file and returns its stdout  443ms
329
+ ✓ tests/normalize-admin-config.test.ts (1 test) 7ms
330
+ ✓ tests/docker-postgres.test.ts (5 tests) 4ms
214
331
  stdout | tests/app-command.test.ts > supatype app add --static > creates the static directory when missing
215
332
   created package.json
216
333
  created supatype.config.ts
@@ -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) 17ms
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
231
- ✓ tests/postgres-archive-tag.test.ts (1 test) 3ms
232
- ✓ 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
344
+ ✓ tests/app-command.test.ts (2 tests) 2034ms
345
+ ✓ sets app.mode=static and static_dir in supatype.config.ts  1008ms
346
+ ✓ creates the static directory when missing  1023ms
347
+ ✓ tests/pg-spawn-env.test.ts (2 tests) 4ms
348
+ ✓ tests/cli-help.test.ts (16 tests) 15686ms
349
+ ✓ --help lists all top-level commands  1117ms
350
+ ✓ --version prints a semver string  977ms
351
+ ✓ self-update --help describes the command  949ms
352
+ ✓ init --help describes the init command  1038ms
238
353
  ✓ 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
354
+ ✓ diff --help describes the diff command  937ms
355
+ ✓ pull --help describes scaffold pull command  1040ms
356
+ ✓ doctor --help describes drift report command  936ms
357
+ ✓ introspect --help describes database introspection command  1058ms
358
+ ✓ adopt --help describes adoption ceremony command  945ms
359
+ ✓ reset --help shows --yes flag  969ms
360
+ ✓ app --help describes the app command with add/remove subcommands  973ms
361
+ ✓ app add --help shows --static and --port options  944ms
362
+ ✓ self-host --help shows compose only (legacy commands hidden)  1026ms
363
+ ✓ self-host compose --help shows compose subcommands  904ms
364
+ ✓ unknown command exits non-zero  899ms
365
+ ✓ tests/postgres-archive-tag.test.ts (1 test) 2ms
366
+ ✓ tests/migrate-from-v1.test.ts (1 test) 10ms
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  07:23:14
371
+  Duration  19.00s (transform 2.75s, setup 0ms, import 9.21s, tests 40.94s, environment 5ms)
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.15 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":"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"}
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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"}