@supatype/cli 0.2.0 → 0.2.1

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @supatype/cli@0.2.0 build /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.2.1 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,14 +1,14 @@
1
1
 
2
- > @supatype/cli@0.2.0 test /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.2.1 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/access-composition.test.ts (26 tests) 90ms
9
- ✓ tests/type-extractor.test.ts (44 tests) 117ms
10
- ✓ tests/model-hooks.test.ts (21 tests) 66ms
11
- ✓ tests/runtime-contract.test.ts (49 tests) 142ms
8
+ ✓ tests/access-composition.test.ts (26 tests) 389ms
9
+ ✓ tests/type-extractor.test.ts (44 tests) 484ms
10
+ ✓ tests/model-hooks.test.ts (21 tests) 110ms
11
+ ✓ tests/runtime-contract.test.ts (49 tests) 212ms
12
12
  stdout | tests/init.test.ts > scaffold() > creates all expected files
13
13
   created package.json
14
14
  created supatype.config.ts
@@ -295,12 +295,12 @@
295
295
  created public/.gitkeep
296
296
  created .gitignore
297
297
 
298
- ✓ tests/init.test.ts (26 tests) 44ms
299
- ✓ tests/model-constraints.test.ts (18 tests) 76ms
300
- ✓ tests/external-database-compose.test.ts (17 tests) 8ms
301
- ✓ tests/field-masking-tier.test.ts (16 tests) 14ms
298
+ ✓ tests/init.test.ts (26 tests) 108ms
299
+ ✓ tests/model-constraints.test.ts (18 tests) 98ms
300
+ ✓ tests/external-database-compose.test.ts (17 tests) 15ms
301
+ ✓ tests/field-masking-tier.test.ts (16 tests) 20ms
302
302
 
303
- ✓ tests/dev-ui.test.ts (21 tests) 117ms
303
+ ✓ tests/dev-ui.test.ts (21 tests) 129ms
304
304
 
305
305
  [supatype] Shutting down…
306
306
  stdout | tests/docker-runtime.test.ts > requireDockerDaemon > exits when the daemon is unavailable
@@ -311,54 +311,53 @@
311
311
 
312
312
  docker: daemon down
313
313
 
314
- ✓ tests/docker-runtime.test.ts (10 tests) 12ms
315
- ✓ tests/hooks-generator.test.ts (7 tests) 5380ms
316
- ✓ typechecks under strict mode, together with a handler that uses it  1784ms
317
- ✓ rejects a handler for a table that declares no hook  1801ms
318
- ✓ typechecks with a validator written the way the docs will show it  1768ms
319
- ✓ tests/config.test.ts (19 tests) 5148ms
320
- ✓ loads a valid supatype.config.ts (plain export default, no package imports)  529ms
321
- ✓ normalizes shorthand schema string to { path, pg_schema }  520ms
322
- ✓ loads a supatype.config.js (plain ESM)  485ms
323
- ✓ loads config without a versions section (latest by default)  533ms
324
- ✓ prefers supatype.config.ts over supatype.config.js when both exist  588ms
325
- ✓ supports optional output field in config  581ms
326
- ✓ merges supatype.local.config.ts over base  1021ms
327
- ✓ loads defineConfig import before @supatype/cli is installed (init scaffold)  880ms
328
- ✓ tests/db-preflight.test.ts (14 tests) 5ms
329
- ✓ tests/field-bounds.test.ts (23 tests) 9ms
330
- ✓ tests/cache-clean.test.ts (8 tests) 1667ms
331
- ✓ keeps pinned versions and removes the rest  551ms
332
- ✓ --force removes pinned versions  514ms
333
- ✓ explicit version removes even when pinned (with warning)  590ms
334
- ✓ tests/functions-deno-types.test.ts (7 tests) 2732ms
335
- ✓ adds functions to root tsconfig exclude when possible  510ms
336
- ✓ tsc fails with Cannot find name Deno without ambient types  1604ms
337
- ✓ tsc passes for Deno.env after ensureFunctionsDenoTypes  612ms
338
- ✓ tests/field-bounds-matrix.test.ts (124 tests) 24ms
339
- ✓ tests/external-database-config.test.ts (14 tests) 5ms
340
- ✓ tests/compose-services.test.ts (12 tests) 19ms
341
- ✓ tests/field-validators.test.ts (10 tests) 38ms
342
- ✓ tests/command-chrome-coverage.test.ts (1 test) 16ms
343
- ✓ tests/hook-upload.test.ts (8 tests) 14ms
344
- ✓ tests/env-file.test.ts (9 tests) 14ms
314
+ ✓ tests/docker-runtime.test.ts (10 tests) 26ms
315
+ ✓ tests/hooks-generator.test.ts (7 tests) 8413ms
316
+ ✓ typechecks under strict mode, together with a handler that uses it  2834ms
317
+ ✓ rejects a handler for a table that declares no hook  2770ms
318
+ ✓ typechecks with a validator written the way the docs will show it  2745ms
319
+ ✓ tests/config.test.ts (19 tests) 8257ms
320
+ ✓ loads a valid supatype.config.ts (plain export default, no package imports)  844ms
321
+ ✓ normalizes shorthand schema string to { path, pg_schema }  881ms
322
+ ✓ loads a supatype.config.js (plain ESM)  818ms
323
+ ✓ loads config without a versions section (latest by default)  757ms
324
+ ✓ prefers supatype.config.ts over supatype.config.js when both exist  901ms
325
+ ✓ supports optional output field in config  843ms
326
+ ✓ merges supatype.local.config.ts over base  1667ms
327
+ ✓ loads defineConfig import before @supatype/cli is installed (init scaffold)  1527ms
328
+ ✓ tests/db-preflight.test.ts (14 tests) 13ms
329
+ ✓ tests/field-bounds.test.ts (23 tests) 21ms
330
+ ✓ tests/cache-clean.test.ts (8 tests) 2699ms
331
+ ✓ keeps pinned versions and removes the rest  908ms
332
+ ✓ --force removes pinned versions  870ms
333
+ ✓ explicit version removes even when pinned (with warning)  900ms
334
+ ✓ tests/functions-deno-types.test.ts (7 tests) 3746ms
335
+ ✓ tsc fails with Cannot find name Deno without ambient types  2517ms
336
+ ✓ tsc passes for Deno.env after ensureFunctionsDenoTypes  1204ms
337
+ ✓ tests/field-bounds-matrix.test.ts (124 tests) 49ms
338
+ ✓ tests/external-database-config.test.ts (14 tests) 13ms
339
+ ✓ tests/compose-services.test.ts (12 tests) 13ms
340
+ ✓ tests/field-validators.test.ts (10 tests) 80ms
341
+ ✓ tests/command-chrome-coverage.test.ts (1 test) 19ms
342
+ ✓ tests/hook-upload.test.ts (8 tests) 16ms
343
+ ✓ tests/env-file.test.ts (9 tests) 18ms
345
344
  stdout | tests/link.test.ts > link model > migrates cloud.json into link.json
345
+ stderr | tests/link.test.ts > link model > migrates cloud.json into link.json
346
346
   created package.json
347
347
  created supatype.config.ts
348
348
  created schema/index.ts
349
+ [supatype] Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
349
350
  created .env
350
351
  created seed.ts
352
+
351
353
  created seeds/.gitkeep
352
354
  created public/.gitkeep
353
355
  created .gitignore
354
356
 
355
- stderr | tests/link.test.ts > link model > migrates cloud.json into link.json
356
- [supatype] Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
357
-
358
- ✓ tests/link.test.ts (4 tests) 2564ms
359
- ✓ resolveTarget returns cloud mode with /api/v1 prefix  899ms
360
- ✓ resolveTarget returns self-host mode with /platform/v1 prefix  789ms
361
- ✓ targetSchemaRollback posts to /platform/v1 when linked  867ms
357
+ ✓ tests/link.test.ts (4 tests) 3807ms
358
+ ✓ resolveTarget returns cloud mode with /api/v1 prefix  1230ms
359
+ ✓ resolveTarget returns self-host mode with /platform/v1 prefix  1281ms
360
+ ✓ targetSchemaRollback posts to /platform/v1 when linked  1279ms
362
361
  stdout | tests/admin-ensure.test.ts > init admin seed in .env > writes SUPATYPE_ADMIN_* when scaffold options include credentials
363
362
   created package.json
364
363
  created supatype.config.ts
@@ -369,8 +368,8 @@
369
368
  created public/.gitkeep
370
369
  created .gitignore
371
370
 
372
- ✓ tests/admin-ensure.test.ts (10 tests) 144ms
373
- ✓ tests/service-role-check.test.ts (10 tests) 8ms
371
+ ✓ tests/admin-ensure.test.ts (10 tests) 166ms
372
+ ✓ tests/service-role-check.test.ts (10 tests) 11ms
374
373
  stdout | tests/admin-studio-membership.test.ts > first admin user creation > does not write a role into app_metadata
375
374
  [supatype] Admin user "admin@example.com" created (role: admin).
376
375
  [supatype] Log in at /admin after starting the dev server.
@@ -387,46 +386,47 @@
387
386
  [supatype] Admin user "admin@example.com" created (role: admin).
388
387
  [supatype] Log in at /admin after starting the dev server.
389
388
 
390
- ✓ tests/admin-studio-membership.test.ts (5 tests) 385ms
391
- ✓ tests/augmentation-generator.test.ts (6 tests) 16ms
392
- ✓ tests/pull-utils.test.ts (49 tests) 10ms
393
- ✓ tests/keys.test.ts (11 tests) 13237ms
394
- ✓ exits 0 with --secret  1193ms
395
- ✓ outputs ANON_KEY= line  1194ms
396
- ✓ outputs SERVICE_ROLE_KEY= line  1074ms
397
- ✓ ANON_KEY is a valid three-part JWT  1092ms
398
- ✓ SERVICE_ROLE_KEY payload has role: service_role  1053ms
399
- ✓ JWT has exp in the future  1047ms
400
- ✓ --exp-years changes the expiry window  2168ms
401
- ✓ reads JWT_SECRET from environment variable  1063ms
402
- ✓ reads JWT_SECRET from .env file  1105ms
403
- ✓ exits non-zero when no secret is available  1134ms
404
- ✓ keys --help shows --secret and --exp-years options  1108ms
405
- ✓ tests/schema-sources.test.ts (5 tests) 1099ms
406
- ✓ buildSchemaSourcesPayload includes manifest metadata  459ms
407
- ✓ restore overwrites modified local files  604ms
389
+ ✓ tests/admin-studio-membership.test.ts (5 tests) 470ms
390
+ ✓ tests/augmentation-generator.test.ts (6 tests) 23ms
391
+ ✓ tests/pull-utils.test.ts (49 tests) 14ms
392
+ ✓ tests/schema-sources.test.ts (5 tests) 1531ms
393
+ ✓ buildSchemaSourcesPayload includes manifest metadata  734ms
394
+ ✓ restore overwrites modified local files  742ms
395
+ ✓ tests/keys.test.ts (11 tests) 21707ms
396
+ ✓ exits 0 with --secret  2102ms
397
+ ✓ outputs ANON_KEY= line  1906ms
398
+ ✓ outputs SERVICE_ROLE_KEY= line  1832ms
399
+ ✓ ANON_KEY is a valid three-part JWT  1714ms
400
+ ✓ SERVICE_ROLE_KEY payload has role: service_role  1673ms
401
+ ✓ JWT has exp in the future  1806ms
402
+ ✓ --exp-years changes the expiry window  3534ms
403
+ ✓ reads JWT_SECRET from environment variable  1820ms
404
+ ✓ reads JWT_SECRET from .env file  1825ms
405
+ ✓ exits non-zero when no secret is available  1640ms
406
+ ✓ keys --help shows --secret and --exp-years options  1844ms
408
407
  stderr | tests/binary-cache-cloud-overrides.test.ts > isLinkedToCloudProject > is true when .supatype/cloud.json has projectSlug
409
408
  [supatype] Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
410
409
 
411
- ✓ tests/binary-cache-cloud-overrides.test.ts (11 tests) 17ms
412
- ✓ tests/homebrew-formula.test.ts (4 tests) 110ms
413
- ✓ tests/local-server-image-env.test.ts (5 tests) 218ms
414
- ✓ tests/minisign.test.ts (5 tests) 8ms
415
- ✓ tests/engine-floor.test.ts (11 tests) 7ms
416
- ✓ tests/local-secrets.test.ts (5 tests) 7ms
417
- ✓ tests/api-schemas.test.ts (10 tests) 7ms
410
+ ✓ tests/binary-cache-cloud-overrides.test.ts (11 tests) 20ms
411
+ ✓ tests/local-server-image-env.test.ts (5 tests) 12ms
412
+ ✓ tests/homebrew-formula.test.ts (4 tests) 252ms
413
+ ✓ tests/minisign.test.ts (5 tests) 17ms
414
+ ✓ tests/local-secrets.test.ts (5 tests) 11ms
415
+ ✓ tests/engine-floor.test.ts (11 tests) 12ms
416
+ ✓ tests/self-host-keys.test.ts (7 tests) 13ms
417
+ ✓ tests/readiness-poll.test.ts (3 tests) 333ms
418
+ ✓ ends promptly when it carries a deadline  326ms
419
+ ✓ tests/api-schemas.test.ts (10 tests) 14ms
418
420
  stdout | tests/storage-provision.test.ts > provisionBuckets > POSTs each bucket to the storage API
419
421
  [supatype] Storage bucket "photos" ready.
420
422
 
421
423
  stdout | tests/storage-provision.test.ts > provisionBuckets > POSTs each bucket to the storage API
422
424
  [supatype] Storage bucket "avatars" ready.
423
425
 
424
- ✓ tests/storage-provision.test.ts (6 tests) 10ms
425
- ✓ tests/cached-artifact-format.test.ts (7 tests) 7ms
426
- ✓ tests/readiness-poll.test.ts (3 tests) 320ms
427
- ✓ ends promptly when it carries a deadline  317ms
428
- ✓ tests/target-client-refresh.test.ts (3 tests) 9ms
429
- ✓ tests/proxy-dev-app.test.ts (7 tests) 5ms
426
+ ✓ tests/cached-artifact-format.test.ts (7 tests) 16ms
427
+ ✓ tests/storage-provision.test.ts (6 tests) 14ms
428
+ ✓ tests/target-client-refresh.test.ts (3 tests) 12ms
429
+ ✓ tests/proxy-dev-app.test.ts (7 tests) 7ms
430
430
  stdout | tests/app-command.test.ts > supatype app add --static > sets app.mode=static and static_dir in supatype.config.ts
431
431
   created package.json
432
432
  created supatype.config.ts
@@ -447,80 +447,80 @@
447
447
  created public/.gitkeep
448
448
  created .gitignore
449
449
 
450
- ✓ tests/service-role-routes.test.ts (4 tests) 1404ms
451
- ✓ reads the declared list  465ms
452
- ✓ is an empty list when a project declares none  458ms
453
- ✓ sends what the project declared, hook entries included  479ms
454
- ✓ tests/app-command.test.ts (2 tests) 2281ms
455
- ✓ sets app.mode=static and static_dir in supatype.config.ts  1088ms
456
- ✓ creates the static directory when missing  1191ms
457
- ✓ tests/init-dependency-versions.test.ts (4 tests) 28ms
458
- ✓ tests/compose-parsable-defaults.test.ts (2 tests) 6ms
459
- ✓ tests/type-resolver.test.ts (2 tests) 13ms
460
- ✓ tests/engine-push-output.test.ts (7 tests) 6ms
461
- ✓ tests/cli-help.test.ts (16 tests) 17072ms
462
- ✓ --help lists all top-level commands  1059ms
463
- ✓ --version prints package.json version  1058ms
464
- ✓ self-update --help describes the command  975ms
465
- ✓ init --help describes the init command  1062ms
466
- ✓ push --help describes the push command and --yes flag  1091ms
467
- ✓ diff --help describes the diff command  1054ms
468
- ✓ pull --help describes scaffold pull command  1091ms
469
- ✓ doctor --help describes drift report command  1142ms
470
- ✓ introspect --help describes database introspection command  1060ms
471
- ✓ adopt --help describes adoption ceremony command  1025ms
472
- ✓ reset --help shows --yes flag  987ms
473
- ✓ app --help describes the app command with add/remove subcommands  1006ms
474
- ✓ app add --help shows --static and --port options  1046ms
475
- ✓ self-host --help shows compose only (legacy commands hidden)  1161ms
476
- ✓ self-host compose --help shows compose subcommands  1139ms
477
- ✓ unknown command exits non-zero  1108ms
478
- ✓ tests/command-chrome-wrap.test.ts (3 tests) 6ms
479
- ✓ tests/cli-install-method.test.ts (8 tests) 5ms
480
- ✓ tests/doctor-render.test.ts (3 tests) 5ms
481
- ✓ tests/port-in-use.test.ts (4 tests) 26ms
482
- ✓ tests/archive-name-alias.test.ts (4 tests) 5ms
483
- ✓ tests/ensure-binary.test.ts (2 tests) 8ms
484
- ✓ tests/init-project-detect.test.ts (4 tests) 9ms
485
- ✓ tests/tsx-runner.test.ts (7 tests) 2520ms
486
- ✓ evaluates a simple expression and returns stdout  329ms
487
- ✓ evaluates TypeScript syntax (type annotations)  343ms
488
- ✓ can serialize a JSON object to stdout  339ms
489
- ✓ returns non-zero exit code on syntax error  350ms
490
- ✓ returns non-zero exit code on runtime error  360ms
491
- ✓ captures stderr separately from stdout  344ms
492
- ✓ runs a .ts file and returns its stdout  448ms
493
- ✓ tests/doctor-service-role.test.ts (4 tests) 5ms
494
- ✓ tests/required-host-components.test.ts (4 tests) 4ms
495
- ✓ tests/dev-ports-owner.test.ts (6 tests) 4ms
496
- ✓ tests/ui-messages.test.ts (5 tests) 5ms
497
- ✓ tests/normalize-admin-config.test.ts (1 test) 5ms
498
- ✓ tests/ui-confirm.test.ts (3 tests) 6ms
499
- ✓ tests/docker-postgres.test.ts (5 tests) 4ms
500
- ✓ tests/binary-download-lock.test.ts (2 tests) 5ms
501
- ✓ tests/dev-session-lock.test.ts (2 tests) 3ms
502
- ✓ tests/dev-ports.test.ts (3 tests) 5ms
503
- ✓ tests/config-load-failure.test.ts (2 tests) 2836ms
504
- ✓ is reported, rather than treated as absent  1611ms
505
- ✓ does not stop the CLI working with no config at all  1223ms
506
- ✓ tests/route-manifest.test.ts (1 test) 4ms
507
- ✓ tests/dev-ready-panel.test.ts (2 tests) 3ms
508
- ✓ tests/studio-admin-roles.test.ts (3 tests) 3ms
509
- ✓ tests/release-pins.test.ts (2 tests) 3ms
510
- ✓ tests/realtime-launch.test.ts (1 test) 4ms
511
- ✓ tests/ensure-dev-api-config.test.ts (1 test) 3ms
512
- ✓ tests/seed-discover.test.ts (2 tests) 10ms
513
- ✓ tests/rest-cache-admin.test.ts (1 test) 40ms
514
- ✓ tests/init-package-json.test.ts (1 test) 2ms
515
- ✓ tests/resolve-api-url.test.ts (2 tests) 5ms
516
- ✓ tests/pg-spawn-env.test.ts (2 tests) 4ms
517
- ✓ tests/migrate-from-v1.test.ts (1 test) 12ms
518
- ✓ tests/cli-package-version.test.ts (1 test) 3ms
519
- ✓ tests/postgres-archive-tag.test.ts (1 test) 2ms
520
- ✓ tests/stdin-after-ink.test.ts (1 test) 2ms
521
-
522
-  Test Files  84 passed (84)
523
-  Tests  812 passed (812)
524
-  Start at  07:11:48
525
-  Duration  35.25s (transform 4.64s, setup 0ms, import 33.01s, tests 60.32s, environment 10ms)
450
+ ✓ tests/service-role-routes.test.ts (4 tests) 2190ms
451
+ ✓ reads the declared list  675ms
452
+ ✓ is an empty list when a project declares none  826ms
453
+ ✓ sends what the project declared, hook entries included  685ms
454
+ ✓ tests/app-command.test.ts (2 tests) 3695ms
455
+ ✓ sets app.mode=static and static_dir in supatype.config.ts  1771ms
456
+ ✓ creates the static directory when missing  1921ms
457
+ ✓ tests/init-dependency-versions.test.ts (4 tests) 43ms
458
+ ✓ tests/compose-parsable-defaults.test.ts (2 tests) 13ms
459
+ ✓ tests/type-resolver.test.ts (2 tests) 19ms
460
+ ✓ tests/engine-push-output.test.ts (7 tests) 10ms
461
+ ✓ tests/cli-help.test.ts (16 tests) 28425ms
462
+ ✓ --help lists all top-level commands  1744ms
463
+ ✓ --version prints package.json version  1808ms
464
+ ✓ self-update --help describes the command  1649ms
465
+ ✓ init --help describes the init command  1945ms
466
+ ✓ push --help describes the push command and --yes flag  1831ms
467
+ ✓ diff --help describes the diff command  1706ms
468
+ ✓ pull --help describes scaffold pull command  1765ms
469
+ ✓ doctor --help describes drift report command  1814ms
470
+ ✓ introspect --help describes database introspection command  1654ms
471
+ ✓ adopt --help describes adoption ceremony command  1823ms
472
+ ✓ reset --help shows --yes flag  1728ms
473
+ ✓ app --help describes the app command with add/remove subcommands  1722ms
474
+ ✓ app add --help shows --static and --port options  1724ms
475
+ ✓ self-host --help shows compose only (legacy commands hidden)  1791ms
476
+ ✓ self-host compose --help shows compose subcommands  1944ms
477
+ ✓ unknown command exits non-zero  1769ms
478
+ ✓ tests/command-chrome-wrap.test.ts (3 tests) 9ms
479
+ ✓ tests/cli-install-method.test.ts (8 tests) 8ms
480
+ ✓ tests/port-in-use.test.ts (4 tests) 33ms
481
+ ✓ tests/tsx-runner.test.ts (7 tests) 3630ms
482
+ ✓ evaluates a simple expression and returns stdout  457ms
483
+ ✓ evaluates TypeScript syntax (type annotations)  488ms
484
+ ✓ can serialize a JSON object to stdout  479ms
485
+ ✓ returns non-zero exit code on syntax error  544ms
486
+ ✓ returns non-zero exit code on runtime error  511ms
487
+ ✓ captures stderr separately from stdout  478ms
488
+ ✓ runs a .ts file and returns its stdout  667ms
489
+ ✓ tests/archive-name-alias.test.ts (4 tests) 10ms
490
+ ✓ tests/ensure-binary.test.ts (2 tests) 12ms
491
+ ✓ tests/init-project-detect.test.ts (4 tests) 14ms
492
+ ✓ tests/doctor-render.test.ts (3 tests) 7ms
493
+ ✓ tests/doctor-service-role.test.ts (4 tests) 7ms
494
+ ✓ tests/dev-ports-owner.test.ts (6 tests) 6ms
495
+ ✓ tests/required-host-components.test.ts (4 tests) 6ms
496
+ ✓ tests/ui-messages.test.ts (5 tests) 8ms
497
+ ✓ tests/normalize-admin-config.test.ts (1 test) 9ms
498
+ ✓ tests/ui-confirm.test.ts (3 tests) 10ms
499
+ ✓ tests/docker-postgres.test.ts (5 tests) 6ms
500
+ ✓ tests/binary-download-lock.test.ts (2 tests) 15ms
501
+ ✓ tests/dev-session-lock.test.ts (2 tests) 6ms
502
+ ✓ tests/dev-ports.test.ts (3 tests) 7ms
503
+ ✓ tests/route-manifest.test.ts (1 test) 5ms
504
+ ✓ tests/dev-ready-panel.test.ts (2 tests) 6ms
505
+ ✓ tests/config-load-failure.test.ts (2 tests) 4661ms
506
+ ✓ is reported, rather than treated as absent  2711ms
507
+ ✓ does not stop the CLI working with no config at all  1946ms
508
+ ✓ tests/studio-admin-roles.test.ts (3 tests) 4ms
509
+ ✓ tests/realtime-launch.test.ts (1 test) 6ms
510
+ ✓ tests/seed-discover.test.ts (2 tests) 28ms
511
+ ✓ tests/release-pins.test.ts (2 tests) 4ms
512
+ ✓ tests/ensure-dev-api-config.test.ts (1 test) 6ms
513
+ ✓ tests/rest-cache-admin.test.ts (1 test) 44ms
514
+ ✓ tests/init-package-json.test.ts (1 test) 4ms
515
+ ✓ tests/pg-spawn-env.test.ts (2 tests) 5ms
516
+ ✓ tests/migrate-from-v1.test.ts (1 test) 13ms
517
+ ✓ tests/resolve-api-url.test.ts (2 tests) 7ms
518
+ ✓ tests/cli-package-version.test.ts (1 test) 4ms
519
+ ✓ tests/postgres-archive-tag.test.ts (1 test) 3ms
520
+ ✓ tests/stdin-after-ink.test.ts (1 test) 4ms
521
+
522
+  Test Files  85 passed (85)
523
+  Tests  819 passed (819)
524
+  Start at  08:09:42
525
+  Duration  58.92s (transform 8.11s, setup 0ms, import 58.53s, tests 96.41s, environment 19ms)
526
526
 
@@ -1,4 +1,4 @@
1
1
 
2
- > @supatype/cli@0.2.0 typecheck /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.2.1 typecheck /home/runner/work/supatype/supatype/packages/cli
3
3
  > tsc --project tsconfig.json --noEmit && tsc --project tests/tsconfig.json --noEmit
4
4
 
@@ -9,5 +9,5 @@
9
9
  // Annotated `string`, not left to inference: once a release stamps a value here, the
10
10
  // inferred literal type makes the `!== ""` test in cliPackageVersion() a compile error
11
11
  // (TS2367, no overlap), so the build would only fail during a release.
12
- export const EMBEDDED_CLI_VERSION = "0.2.0";
12
+ export const EMBEDDED_CLI_VERSION = "0.2.1";
13
13
  //# sourceMappingURL=cli-version-embedded.js.map
@@ -15,4 +15,18 @@ export declare function generateAndWriteKeys(dir: string, expYears?: number): {
15
15
  serviceKey: string;
16
16
  } | null;
17
17
  export declare function resolveSecret(dir?: string): string | undefined;
18
+ /**
19
+ * Mint ANON_KEY / SERVICE_ROLE_KEY into `dir`'s .env only where they are
20
+ * missing or blank, and report which ones were filled.
21
+ *
22
+ * Deliberately not `generateAndWriteKeys`, which rewrites them unconditionally.
23
+ * That is right for `init`, where the project is new, and wrong for anything
24
+ * that runs on an existing deployment: reissuing the anon key on every start
25
+ * would lock out every client already holding one.
26
+ *
27
+ * A self-host `.env` copied from the template arrives with both keys empty, and
28
+ * the server refuses to serve without a service role key outside dev mode. That
29
+ * left the documented quick start unable to start at all.
30
+ */
31
+ export declare function fillMissingKeys(dir: string, expYears?: number): string[];
18
32
  //# sourceMappingURL=keys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8BnD;AAID,oEAAoE;AACpE,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,QAAQ,SAAK,GACZ;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAOzC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,QAAQ,SAAK,GACZ;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAuBhD;AAiBD,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,SAAS,CAsB7E"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAMxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA8BnD;AAID,oEAAoE;AACpE,wBAAgB,WAAW,CACzB,MAAM,EAAE,MAAM,EACd,QAAQ,SAAK,GACZ;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAOzC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,QAAQ,SAAK,GACZ;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAuBhD;AAiBD,wBAAgB,aAAa,CAAC,GAAG,GAAE,MAAsB,GAAG,MAAM,GAAG,SAAS,CAsB7E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,SAAK,GAAG,MAAM,EAAE,CAyBpE"}
@@ -106,4 +106,41 @@ export function resolveSecret(dir = process.cwd()) {
106
106
  }
107
107
  return undefined;
108
108
  }
109
+ /**
110
+ * Mint ANON_KEY / SERVICE_ROLE_KEY into `dir`'s .env only where they are
111
+ * missing or blank, and report which ones were filled.
112
+ *
113
+ * Deliberately not `generateAndWriteKeys`, which rewrites them unconditionally.
114
+ * That is right for `init`, where the project is new, and wrong for anything
115
+ * that runs on an existing deployment: reissuing the anon key on every start
116
+ * would lock out every client already holding one.
117
+ *
118
+ * A self-host `.env` copied from the template arrives with both keys empty, and
119
+ * the server refuses to serve without a service role key outside dev mode. That
120
+ * left the documented quick start unable to start at all.
121
+ */
122
+ export function fillMissingKeys(dir, expYears = 10) {
123
+ const envPath = resolve(dir, ".env");
124
+ if (!existsSync(envPath))
125
+ return [];
126
+ const content = readFileSync(envPath, "utf8");
127
+ const blank = (name) => {
128
+ const current = readEnvVar(content, name);
129
+ return current === undefined || current.trim() === "";
130
+ };
131
+ const needed = ["ANON_KEY", "SERVICE_ROLE_KEY"].filter(blank);
132
+ if (needed.length === 0)
133
+ return [];
134
+ const secret = resolveSecret(dir);
135
+ if (!secret)
136
+ return [];
137
+ const { anonKey, serviceKey } = signKeyPair(secret, expYears);
138
+ const minted = { ANON_KEY: anonKey, SERVICE_ROLE_KEY: serviceKey };
139
+ let next = content;
140
+ for (const name of needed) {
141
+ next = upsertEnvVar(next, name, minted[name]);
142
+ }
143
+ writeFileSync(envPath, next, "utf8");
144
+ return needed;
145
+ }
109
146
  //# sourceMappingURL=keys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../src/commands/keys.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"self-host.d.ts","sourceRoot":"","sources":["../../src/commands/self-host.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiBnC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA2WvD"}
1
+ {"version":3,"file":"self-host.d.ts","sourceRoot":"","sources":["../../src/commands/self-host.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAkBnC,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmXvD"}
@@ -12,6 +12,7 @@ import { spawnSync } from "node:child_process";
12
12
  import { gzipSync } from "node:zlib";
13
13
  import { loadConfig } from "../config.js";
14
14
  import { connectionString } from "../project-config.js";
15
+ import { fillMissingKeys } from "./keys.js";
15
16
  import { resolveBinary } from "../binary-cache.js";
16
17
  import { generateUnits } from "../systemd.js";
17
18
  import { readPid } from "../process-manager.js";
@@ -46,6 +47,14 @@ export function registerSelfHost(program) {
46
47
  const config = loadConfig(cwd);
47
48
  const project = composeProjectName(config.project.name);
48
49
  const args = opts.detach ? ["up", "-d"] : ["up"];
50
+ // A .env copied from the template arrives with both keys blank, and the
51
+ // server will not serve without a service role key outside dev mode.
52
+ // Only blanks are filled: reissuing a key an operator is already using
53
+ // would lock out every client holding the old one.
54
+ const filled = fillMissingKeys(cwd);
55
+ if (filled.length > 0) {
56
+ console.log(`[supatype] Minted ${filled.join(" and ")} in .env from JWT_SECRET.`);
57
+ }
49
58
  const brand = { intro: "Self-host deployment" };
50
59
  const status = await withSpinner("Starting self-host Compose stack", async () => {
51
60
  const out = writeSelfHostCompose(cwd, config);