@supatype/cli 0.1.0-alpha.12 → 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 (67) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +207 -89
  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/binary-cache.d.ts +11 -3
  9. package/dist/binary-cache.d.ts.map +1 -1
  10. package/dist/binary-cache.js +62 -39
  11. package/dist/binary-cache.js.map +1 -1
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +2 -0
  14. package/dist/cli.js.map +1 -1
  15. package/dist/commands/add.d.ts +3 -0
  16. package/dist/commands/add.d.ts.map +1 -0
  17. package/dist/commands/add.js +83 -0
  18. package/dist/commands/add.js.map +1 -0
  19. package/dist/commands/app.js +2 -2
  20. package/dist/commands/app.js.map +1 -1
  21. package/dist/commands/init.d.ts +29 -1
  22. package/dist/commands/init.d.ts.map +1 -1
  23. package/dist/commands/init.js +569 -90
  24. package/dist/commands/init.js.map +1 -1
  25. package/dist/commands/keys.d.ts +15 -1
  26. package/dist/commands/keys.d.ts.map +1 -1
  27. package/dist/commands/keys.js +39 -4
  28. package/dist/commands/keys.js.map +1 -1
  29. package/dist/engine-client.d.ts.map +1 -1
  30. package/dist/engine-client.js +12 -4
  31. package/dist/engine-client.js.map +1 -1
  32. package/dist/kong-config.d.ts +9 -0
  33. package/dist/kong-config.d.ts.map +1 -1
  34. package/dist/kong-config.js +18 -1
  35. package/dist/kong-config.js.map +1 -1
  36. package/dist/project-config.d.ts +16 -0
  37. package/dist/project-config.d.ts.map +1 -1
  38. package/dist/project-config.js +34 -0
  39. package/dist/project-config.js.map +1 -1
  40. package/dist/prompts.d.ts +8 -0
  41. package/dist/prompts.d.ts.map +1 -0
  42. package/dist/prompts.js +20 -0
  43. package/dist/prompts.js.map +1 -0
  44. package/dist/scripts/postinstall.js +5 -1
  45. package/dist/scripts/postinstall.js.map +1 -1
  46. package/dist/self-host-compose.d.ts.map +1 -1
  47. package/dist/self-host-compose.js +61 -17
  48. package/dist/self-host-compose.js.map +1 -1
  49. package/package.json +2 -1
  50. package/src/app-config.ts +80 -0
  51. package/src/binary-cache.ts +64 -42
  52. package/src/cli.ts +2 -0
  53. package/src/commands/add.ts +94 -0
  54. package/src/commands/app.ts +2 -2
  55. package/src/commands/init.ts +738 -88
  56. package/src/commands/keys.ts +49 -4
  57. package/src/engine-client.ts +11 -4
  58. package/src/kong-config.ts +24 -1
  59. package/src/project-config.ts +45 -0
  60. package/src/prompts.ts +21 -0
  61. package/src/scripts/postinstall.ts +7 -1
  62. package/src/self-host-compose.ts +61 -17
  63. package/tests/config.test.ts +26 -0
  64. package/tests/init.test.ts +128 -15
  65. package/tests/minisign.test.ts +102 -0
  66. package/tests/runtime-contract.test.ts +111 -1
  67. package/tsconfig.tsbuildinfo +1 -1
@@ -1,4 +1,4 @@
1
1
 
2
- > @supatype/cli@0.1.0-alpha.12 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.12 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) 153ms
9
- ✓ tests/type-extractor.test.ts (34 tests) 154ms
10
- ✓ tests/config.test.ts (16 tests) 4226ms
11
- ✓ loads a valid supatype.config.ts (plain export default, no package imports)  545ms
12
- ✓ normalizes shorthand schema string to { path, pg_schema }  495ms
13
- ✓ loads a supatype.config.js (plain ESM)  454ms
14
- ✓ loads config without a versions section (latest by default)  546ms
15
- ✓ prefers supatype.config.ts over supatype.config.js when both exist  539ms
16
- ✓ supports optional output field in config  575ms
17
- ✓ merges supatype.local.config.ts over base  1058ms
18
- stdout | tests/link.test.ts > link model > migrates cloud.json into link.json
19
-  created package.json
20
- created supatype.config.ts
21
- created schema/index.ts
22
- created .env
23
- created seed.ts
24
- created seeds/.gitkeep
25
- created public/.gitkeep
26
- created .gitignore
27
-
28
- stderr | tests/link.test.ts > link model > migrates cloud.json into link.json
29
- Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
30
-
31
- ✓ tests/link.test.ts (4 tests) 2837ms
32
- ✓ resolveTarget returns cloud mode with /api/v1 prefix  929ms
33
- ✓ resolveTarget returns self-host mode with /platform/v1 prefix  922ms
34
- ✓ targetSchemaRollback posts to /platform/v1 when linked  973ms
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,46 +123,191 @@
150
123
  created public/.gitkeep
151
124
  created .gitignore
152
125
 
153
- ✓ tests/init.test.ts (11 tests) 43ms
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) 69ms
275
+ ✓ tests/dev-ui.test.ts (15 tests) 71ms
159
276
 
160
- ✓ tests/pull-utils.test.ts (49 tests) 19ms
161
- ✓ tests/schema-sources.test.ts (5 tests) 1167ms
162
- ✓ buildSchemaSourcesPayload includes manifest metadata  572ms
163
- ✓ restore overwrites modified local files  548ms
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
284
  ✓ tests/binary-cache-cloud-overrides.test.ts (11 tests) 19ms
285
+ ✓ tests/minisign.test.ts (5 tests) 19ms
168
286
  stdout | tests/storage-provision.test.ts > provisionBuckets > POSTs each bucket to the storage API
169
287
  [supatype] Storage bucket "photos" ready.
170
288
 
171
289
  stdout | tests/storage-provision.test.ts > provisionBuckets > POSTs each bucket to the storage API
172
290
  [supatype] Storage bucket "avatars" ready.
173
291
 
174
- ✓ tests/storage-provision.test.ts (6 tests) 13ms
175
- ✓ tests/cached-artifact-format.test.ts (7 tests) 13ms
176
- ✓ tests/proxy-dev-app.test.ts (7 tests) 9ms
177
- ✓ tests/keys.test.ts (11 tests) 12113ms
178
- ✓ exits 0 with --secret  1125ms
179
- ✓ outputs ANON_KEY= line  1052ms
180
- ✓ outputs SERVICE_ROLE_KEY= line  1027ms
181
- ✓ ANON_KEY is a valid three-part JWT  974ms
182
- ✓ SERVICE_ROLE_KEY payload has role: service_role  1018ms
183
- ✓ JWT has exp in the future  955ms
184
- ✓ --exp-years changes the expiry window  1996ms
185
- ✓ reads JWT_SECRET from environment variable  981ms
186
- ✓ reads JWT_SECRET from .env file  1027ms
187
- ✓ exits non-zero when no secret is available  990ms
188
- ✓ keys --help shows --secret and --exp-years options  961ms
189
- ✓ tests/augmentation-generator.test.ts (3 tests) 18ms
190
- ✓ tests/type-resolver.test.ts (2 tests) 19ms
191
- ✓ tests/engine-push-output.test.ts (7 tests) 6ms
192
- ✓ tests/ensure-binary.test.ts (2 tests) 10ms
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
193
311
  stdout | tests/app-command.test.ts > supatype app add --static > sets app.mode=static and static_dir in supatype.config.ts
194
312
   created package.json
195
313
  created supatype.config.ts
@@ -200,15 +318,15 @@
200
318
  created public/.gitkeep
201
319
  created .gitignore
202
320
 
203
- ✓ tests/tsx-runner.test.ts (7 tests) 2653ms
204
- ✓ evaluates a simple expression and returns stdout  363ms
205
- ✓ evaluates TypeScript syntax (type annotations)  349ms
206
- ✓ can serialize a JSON object to stdout  343ms
207
- ✓ returns non-zero exit code on syntax error  390ms
208
- ✓ returns non-zero exit code on runtime error  343ms
209
- ✓ captures stderr separately from stdout  407ms
210
- ✓ runs a .ts file and returns its stdout  455ms
211
- ✓ tests/normalize-admin-config.test.ts (1 test) 8ms
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
212
330
  ✓ tests/docker-postgres.test.ts (5 tests) 5ms
213
331
  stdout | tests/app-command.test.ts > supatype app add --static > creates the static directory when missing
214
332
   created package.json
@@ -222,33 +340,33 @@
222
340
 
223
341
  ✓ tests/seed-discover.test.ts (2 tests) 15ms
224
342
  ✓ tests/studio-admin-roles.test.ts (3 tests) 4ms
225
- ✓ tests/app-command.test.ts (2 tests) 2073ms
226
- ✓ sets app.mode=static and static_dir in supatype.config.ts  1056ms
227
- ✓ creates the static directory when missing  1016ms
228
- ✓ tests/release-pins.test.ts (2 tests) 3ms
229
- ✓ tests/pg-spawn-env.test.ts (2 tests) 5ms
343
+ ✓ tests/release-pins.test.ts (2 tests) 4ms
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
230
365
  ✓ tests/postgres-archive-tag.test.ts (1 test) 3ms
231
- ✓ tests/cli-help.test.ts (16 tests) 16035ms
232
- ✓ --help lists all top-level commands  1018ms
233
- ✓ --version prints a semver string  969ms
234
- ✓ self-update --help describes the command  981ms
235
- ✓ init --help describes the init command  1105ms
236
- ✓ push --help describes the push command and --yes flag  977ms
237
- ✓ diff --help describes the diff command  1007ms
238
- ✓ pull --help describes scaffold pull command  978ms
239
- ✓ doctor --help describes drift report command  1020ms
240
- ✓ introspect --help describes database introspection command  915ms
241
- ✓ adopt --help describes adoption ceremony command  966ms
242
- ✓ reset --help shows --yes flag  974ms
243
- ✓ app --help describes the app command with add/remove subcommands  1080ms
244
- ✓ app add --help shows --static and --port options  998ms
245
- ✓ self-host --help shows compose only (legacy commands hidden)  1033ms
246
- ✓ self-host compose --help shows compose subcommands  1038ms
247
- ✓ unknown command exits non-zero  970ms
248
366
  ✓ tests/migrate-from-v1.test.ts (1 test) 11ms
249
367
 
250
-  Test Files  28 passed (28)
251
-  Tests  264 passed (264)
252
-  Start at  19:48:26
253
-  Duration  19.22s (transform 2.92s, setup 0ms, import 10.12s, tests 41.70s, environment 5ms)
368
+  Test Files  29 passed (29)
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)
254
372
 
@@ -1,4 +1,4 @@
1
1
 
2
- > @supatype/cli@0.1.0-alpha.12 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":"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"}
1
+ {"version":3,"file":"app-config.js","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,13 @@
7
7
  *
8
8
  * Security model:
9
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).
10
+ * 2. Verify the Ed25519 minisign signature on the checksum file using the
11
+ * release public key (embedded at publish, overridable via
12
+ * SUPATYPE_RELEASE_PUBLIC_KEY).
12
13
  * 3. Verify SHA256 of the downloaded binary against the signed checksum.
13
- * Both checks are mandatory when SUPATYPE_RELEASE_PUBLIC_KEY is set.
14
+ * Verification is mandatory and fails closed: if no public key is configured,
15
+ * the download errors out rather than silently degrading to SHA256-only.
16
+ * The only escape hatch is the explicit SUPATYPE_ALLOW_UNVERIFIED_DOWNLOADS=1.
14
17
  */
15
18
  import type { SupatypeProjectConfig } from "./project-config.js";
16
19
  /**
@@ -66,6 +69,11 @@ export declare function resolveBinary(component: Component, config: SupatypeProj
66
69
  /** Download if missing or invalid; return cached path for the given platform. */
67
70
  export declare function ensureCachedBinary(component: Component, version: string, platform: PlatformId): Promise<string>;
68
71
  export declare function download(component: Component, version: string, platform: PlatformId): Promise<string>;
72
+ /**
73
+ * Verify a minisign signature. Supports both Ed25519 legacy mode ("Ed", over the
74
+ * raw file) and prehashed mode ("ED", over BLAKE2b-512(file)). Throws if invalid.
75
+ */
76
+ export declare function verifyMinisign(fileBytes: Buffer, sigFileContent: string, pubKeyStr: string): void;
69
77
  /** Confirm a downloaded/cached artifact matches the expected CDN format (tests, CI). */
70
78
  export declare function validateArtifactFormat(component: Component, filePath: string, platform: PlatformId): void;
71
79
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"binary-cache.d.ts","sourceRoot":"","sources":["../src/binary-cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"binary-cache.d.ts","sourceRoot":"","sources":["../src/binary-cache.ts"],"names":[],"mappings":"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"}