@supatype/cli 0.1.11 → 0.1.13

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 (68) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +136 -130
  3. package/.turbo/turbo-typecheck.log +1 -1
  4. package/dist/cli-version-embedded.js +1 -1
  5. package/dist/commands/db.d.ts.map +1 -1
  6. package/dist/commands/db.js +23 -1
  7. package/dist/commands/db.js.map +1 -1
  8. package/dist/commands/doctor.d.ts +0 -7
  9. package/dist/commands/doctor.d.ts.map +1 -1
  10. package/dist/commands/doctor.js +26 -0
  11. package/dist/commands/doctor.js.map +1 -1
  12. package/dist/commands/push.d.ts.map +1 -1
  13. package/dist/commands/push.js +15 -7
  14. package/dist/commands/push.js.map +1 -1
  15. package/dist/compose-local-server-image.d.ts +11 -0
  16. package/dist/compose-local-server-image.d.ts.map +1 -1
  17. package/dist/compose-local-server-image.js +18 -0
  18. package/dist/compose-local-server-image.js.map +1 -1
  19. package/dist/db-preflight.d.ts +23 -0
  20. package/dist/db-preflight.d.ts.map +1 -1
  21. package/dist/db-preflight.js +66 -1
  22. package/dist/db-preflight.js.map +1 -1
  23. package/dist/dev-compose.d.ts +1 -0
  24. package/dist/dev-compose.d.ts.map +1 -1
  25. package/dist/dev-compose.js +79 -10
  26. package/dist/dev-compose.js.map +1 -1
  27. package/dist/field-bounds.d.ts +68 -0
  28. package/dist/field-bounds.d.ts.map +1 -0
  29. package/dist/field-bounds.js +277 -0
  30. package/dist/field-bounds.js.map +1 -0
  31. package/dist/hooks-generator.d.ts +1 -1
  32. package/dist/hooks-generator.d.ts.map +1 -1
  33. package/dist/hooks-generator.js +78 -4
  34. package/dist/hooks-generator.js.map +1 -1
  35. package/dist/model-hooks.d.ts +44 -2
  36. package/dist/model-hooks.d.ts.map +1 -1
  37. package/dist/model-hooks.js +116 -12
  38. package/dist/model-hooks.js.map +1 -1
  39. package/dist/schema-ast-v2.d.ts +38 -4
  40. package/dist/schema-ast-v2.d.ts.map +1 -1
  41. package/dist/schema-ast-v2.js +87 -4
  42. package/dist/schema-ast-v2.js.map +1 -1
  43. package/dist/type-extractor.d.ts.map +1 -1
  44. package/dist/type-extractor.js +309 -27
  45. package/dist/type-extractor.js.map +1 -1
  46. package/package.json +4 -3
  47. package/src/cli-version-embedded.ts +1 -1
  48. package/src/commands/db.ts +27 -1
  49. package/src/commands/doctor.ts +30 -0
  50. package/src/commands/push.ts +26 -6
  51. package/src/compose-local-server-image.ts +17 -0
  52. package/src/db-preflight.ts +89 -1
  53. package/src/dev-compose.ts +96 -9
  54. package/src/field-bounds.ts +359 -0
  55. package/src/hooks-generator.ts +81 -4
  56. package/src/model-hooks.ts +158 -12
  57. package/src/schema-ast-v2.ts +114 -10
  58. package/src/type-extractor.ts +374 -39
  59. package/tests/db-preflight.test.ts +80 -0
  60. package/tests/field-bounds-matrix.test.ts +163 -0
  61. package/tests/field-bounds.test.ts +139 -0
  62. package/tests/field-validators.test.ts +139 -0
  63. package/tests/hooks-generator.test.ts +86 -0
  64. package/tests/local-server-image-env.test.ts +93 -0
  65. package/tests/model-constraints.test.ts +293 -0
  66. package/tests/model-hooks.test.ts +56 -0
  67. package/tests/type-extractor.test.ts +49 -0
  68. package/tsconfig.tsbuildinfo +1 -1
@@ -1,4 +1,4 @@
1
1
 
2
- > @supatype/cli@0.1.11 build /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.1.13 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,13 @@
1
1
 
2
- > @supatype/cli@0.1.11 test /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.1.13 test /home/runner/work/supatype/supatype/packages/cli
3
3
  > vitest run
4
4
 
5
5
 
6
6
   RUN  v4.0.18 /home/runner/work/supatype/supatype/packages/cli
7
7
 
8
- ✓ tests/type-extractor.test.ts (43 tests) 277ms
9
- ✓ tests/access-composition.test.ts (26 tests) 288ms
10
- ✓ tests/runtime-contract.test.ts (49 tests) 140ms
11
- ✓ tests/model-hooks.test.ts (19 tests) 84ms
8
+ ✓ tests/access-composition.test.ts (26 tests) 236ms
9
+ ✓ tests/type-extractor.test.ts (44 tests) 234ms
10
+ ✓ tests/model-hooks.test.ts (21 tests) 117ms
12
11
  stdout | tests/init.test.ts > scaffold() > creates all expected files
13
12
   created package.json
14
13
  created supatype.config.ts
@@ -295,11 +294,13 @@
295
294
  created public/.gitkeep
296
295
  created .gitignore
297
296
 
298
- ✓ tests/init.test.ts (26 tests) 61ms
299
- ✓ tests/field-masking-tier.test.ts (16 tests) 11ms
300
- ✓ tests/external-database-compose.test.ts (17 tests) 12ms
297
+ ✓ tests/init.test.ts (26 tests) 126ms
298
+ ✓ tests/runtime-contract.test.ts (49 tests) 141ms
299
+ ✓ tests/model-constraints.test.ts (18 tests) 155ms
300
+ ✓ tests/external-database-compose.test.ts (17 tests) 34ms
301
+ ✓ tests/field-masking-tier.test.ts (16 tests) 34ms
301
302
 
302
- ✓ tests/dev-ui.test.ts (21 tests) 130ms
303
+ ✓ tests/dev-ui.test.ts (21 tests) 145ms
303
304
 
304
305
  [supatype] Shutting down…
305
306
  stdout | tests/docker-runtime.test.ts > requireDockerDaemon > exits when the daemon is unavailable
@@ -310,47 +311,52 @@
310
311
 
311
312
  docker: daemon down
312
313
 
313
- ✓ tests/docker-runtime.test.ts (10 tests) 26ms
314
- ✓ tests/hooks-generator.test.ts (5 tests) 5492ms
315
- ✓ typechecks under strict mode, together with a handler that uses it  2768ms
316
- ✓ rejects a handler for a table that declares no hook  2648ms
317
- ✓ tests/config.test.ts (19 tests) 8234ms
318
- ✓ loads a valid supatype.config.ts (plain export default, no package imports)  750ms
319
- ✓ normalizes shorthand schema string to { path, pg_schema }  949ms
320
- ✓ loads a supatype.config.js (plain ESM)  895ms
321
- ✓ loads config without a versions section (latest by default)  847ms
322
- ✓ prefers supatype.config.ts over supatype.config.js when both exist  979ms
323
- ✓ supports optional output field in config  898ms
324
- ✓ merges supatype.local.config.ts over base  1688ms
325
- ✓ loads defineConfig import before @supatype/cli is installed (init scaffold)  1218ms
326
- ✓ tests/functions-deno-types.test.ts (7 tests) 3635ms
327
- ✓ tsc fails with Cannot find name Deno without ambient types  2634ms
328
- ✓ tsc passes for Deno.env after ensureFunctionsDenoTypes  983ms
329
- ✓ tests/external-database-config.test.ts (14 tests) 8ms
330
- ✓ tests/cache-clean.test.ts (8 tests) 2130ms
331
- ✓ keeps pinned versions and removes the rest  682ms
332
- ✓ --force removes pinned versions  706ms
333
- ✓ explicit version removes even when pinned (with warning)  719ms
334
- ✓ tests/command-chrome-coverage.test.ts (1 test) 13ms
335
- ✓ tests/hook-upload.test.ts (8 tests) 11ms
336
- ✓ tests/env-file.test.ts (9 tests) 16ms
314
+ ✓ tests/docker-runtime.test.ts (10 tests) 18ms
315
+ ✓ tests/hooks-generator.test.ts (7 tests) 8597ms
316
+ ✓ typechecks under strict mode, together with a handler that uses it  2915ms
317
+ ✓ rejects a handler for a table that declares no hook  2901ms
318
+ ✓ typechecks with a validator written the way the docs will show it  2718ms
319
+ ✓ tests/config.test.ts (19 tests) 8783ms
320
+ ✓ loads a valid supatype.config.ts (plain export default, no package imports)  800ms
321
+ ✓ normalizes shorthand schema string to { path, pg_schema }  1028ms
322
+ ✓ loads a supatype.config.js (plain ESM)  703ms
323
+ ✓ loads config without a versions section (latest by default)  853ms
324
+ ✓ prefers supatype.config.ts over supatype.config.js when both exist  984ms
325
+ ✓ supports optional output field in config  998ms
326
+ ✓ merges supatype.local.config.ts over base  1981ms
327
+ ✓ loads defineConfig import before @supatype/cli is installed (init scaffold)  1414ms
328
+ ✓ tests/db-preflight.test.ts (14 tests) 32ms
329
+ ✓ tests/field-bounds.test.ts (23 tests) 38ms
330
+ ✓ tests/cache-clean.test.ts (8 tests) 2523ms
331
+ ✓ keeps pinned versions and removes the rest  724ms
332
+ ✓ --force removes pinned versions  870ms
333
+ ✓ explicit version removes even when pinned (with warning)  903ms
334
+ ✓ tests/field-bounds-matrix.test.ts (124 tests) 38ms
335
+ ✓ tests/functions-deno-types.test.ts (7 tests) 3606ms
336
+ ✓ tsc fails with Cannot find name Deno without ambient types  2505ms
337
+ ✓ tsc passes for Deno.env after ensureFunctionsDenoTypes  1082ms
338
+ ✓ tests/external-database-config.test.ts (14 tests) 11ms
339
+ ✓ tests/field-validators.test.ts (10 tests) 73ms
340
+ ✓ tests/command-chrome-coverage.test.ts (1 test) 19ms
341
+ ✓ tests/hook-upload.test.ts (8 tests) 12ms
342
+ ✓ tests/env-file.test.ts (9 tests) 21ms
337
343
  stdout | tests/link.test.ts > link model > migrates cloud.json into link.json
338
344
   created package.json
345
+ stderr | tests/link.test.ts > link model > migrates cloud.json into link.json
346
+ [supatype] Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
347
+
339
348
  created supatype.config.ts
340
349
  created schema/index.ts
341
350
  created .env
342
- stderr | tests/link.test.ts > link model > migrates cloud.json into link.json
343
- [supatype] Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
344
351
  created seed.ts
345
352
  created seeds/.gitkeep
346
353
  created public/.gitkeep
347
354
  created .gitignore
348
355
 
349
-
350
- ✓ tests/link.test.ts (4 tests) 2773ms
351
- ✓ resolveTarget returns cloud mode with /api/v1 prefix  905ms
352
- ✓ resolveTarget returns self-host mode with /platform/v1 prefix  927ms
353
- ✓ targetSchemaRollback posts to /platform/v1 when linked  930ms
356
+ ✓ tests/link.test.ts (4 tests) 3020ms
357
+ ✓ resolveTarget returns cloud mode with /api/v1 prefix  1000ms
358
+ ✓ resolveTarget returns self-host mode with /platform/v1 prefix  972ms
359
+ ✓ targetSchemaRollback posts to /platform/v1 when linked  1037ms
354
360
  stdout | tests/admin-ensure.test.ts > init admin seed in .env > writes SUPATYPE_ADMIN_* when scaffold options include credentials
355
361
   created package.json
356
362
  created supatype.config.ts
@@ -361,8 +367,8 @@
361
367
  created public/.gitkeep
362
368
  created .gitignore
363
369
 
364
- ✓ tests/admin-ensure.test.ts (10 tests) 148ms
365
- ✓ tests/service-role-check.test.ts (10 tests) 11ms
370
+ ✓ tests/admin-ensure.test.ts (10 tests) 164ms
371
+ ✓ tests/service-role-check.test.ts (10 tests) 12ms
366
372
  stdout | tests/admin-studio-membership.test.ts > first admin user creation > does not write a role into app_metadata
367
373
  [supatype] Admin user "admin@example.com" created (role: admin).
368
374
  [supatype] Log in at /admin after starting the dev server.
@@ -379,41 +385,41 @@
379
385
  [supatype] Admin user "admin@example.com" created (role: admin).
380
386
  [supatype] Log in at /admin after starting the dev server.
381
387
 
382
- ✓ tests/admin-studio-membership.test.ts (5 tests) 436ms
388
+ ✓ tests/admin-studio-membership.test.ts (5 tests) 539ms
383
389
  ✓ tests/augmentation-generator.test.ts (6 tests) 17ms
384
- ✓ tests/pull-utils.test.ts (49 tests) 8ms
385
- ✓ tests/schema-sources.test.ts (5 tests) 1219ms
386
- ✓ buildSchemaSourcesPayload includes manifest metadata  518ms
387
- ✓ restore overwrites modified local files  655ms
390
+ ✓ tests/pull-utils.test.ts (49 tests) 15ms
391
+ ✓ tests/schema-sources.test.ts (5 tests) 1255ms
392
+ ✓ buildSchemaSourcesPayload includes manifest metadata  659ms
393
+ ✓ restore overwrites modified local files  553ms
394
+ ✓ tests/keys.test.ts (11 tests) 18407ms
395
+ ✓ exits 0 with --secret  2004ms
396
+ ✓ outputs ANON_KEY= line  2047ms
397
+ ✓ outputs SERVICE_ROLE_KEY= line  1727ms
398
+ ✓ ANON_KEY is a valid three-part JWT  1358ms
399
+ ✓ SERVICE_ROLE_KEY payload has role: service_role  1463ms
400
+ ✓ JWT has exp in the future  1438ms
401
+ ✓ --exp-years changes the expiry window  2856ms
402
+ ✓ reads JWT_SECRET from environment variable  1440ms
403
+ ✓ reads JWT_SECRET from .env file  1300ms
404
+ ✓ exits non-zero when no secret is available  1357ms
405
+ ✓ keys --help shows --secret and --exp-years options  1407ms
406
+ ✓ tests/local-server-image-env.test.ts (5 tests) 11ms
388
407
  stderr | tests/binary-cache-cloud-overrides.test.ts > isLinkedToCloudProject > is true when .supatype/cloud.json has projectSlug
389
408
  [supatype] Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
390
409
 
391
- ✓ tests/binary-cache-cloud-overrides.test.ts (11 tests) 13ms
392
- ✓ tests/homebrew-formula.test.ts (4 tests) 176ms
410
+ ✓ tests/binary-cache-cloud-overrides.test.ts (11 tests) 15ms
411
+ ✓ tests/homebrew-formula.test.ts (4 tests) 151ms
393
412
  ✓ tests/minisign.test.ts (5 tests) 13ms
394
- ✓ tests/local-secrets.test.ts (5 tests) 8ms
395
- ✓ tests/api-schemas.test.ts (10 tests) 8ms
413
+ ✓ tests/local-secrets.test.ts (5 tests) 13ms
414
+ ✓ tests/api-schemas.test.ts (10 tests) 9ms
396
415
  stdout | tests/storage-provision.test.ts > provisionBuckets > POSTs each bucket to the storage API
397
416
  [supatype] Storage bucket "photos" ready.
398
417
 
399
418
  stdout | tests/storage-provision.test.ts > provisionBuckets > POSTs each bucket to the storage API
400
419
  [supatype] Storage bucket "avatars" ready.
401
420
 
402
- ✓ tests/storage-provision.test.ts (6 tests) 9ms
403
- ✓ tests/db-preflight.test.ts (6 tests) 4ms
404
- ✓ tests/cached-artifact-format.test.ts (7 tests) 10ms
405
- ✓ tests/keys.test.ts (11 tests) 15414ms
406
- ✓ exits 0 with --secret  1501ms
407
- ✓ outputs ANON_KEY= line  1641ms
408
- ✓ outputs SERVICE_ROLE_KEY= line  1485ms
409
- ✓ ANON_KEY is a valid three-part JWT  1181ms
410
- ✓ SERVICE_ROLE_KEY payload has role: service_role  1195ms
411
- ✓ JWT has exp in the future  1222ms
412
- ✓ --exp-years changes the expiry window  2416ms
413
- ✓ reads JWT_SECRET from environment variable  1209ms
414
- ✓ reads JWT_SECRET from .env file  1255ms
415
- ✓ exits non-zero when no secret is available  1166ms
416
- ✓ keys --help shows --secret and --exp-years options  1136ms
421
+ ✓ tests/storage-provision.test.ts (6 tests) 11ms
422
+ ✓ tests/cached-artifact-format.test.ts (7 tests) 12ms
417
423
  ✓ tests/target-client-refresh.test.ts (3 tests) 10ms
418
424
  ✓ tests/proxy-dev-app.test.ts (7 tests) 6ms
419
425
  stdout | tests/app-command.test.ts > supatype app add --static > sets app.mode=static and static_dir in supatype.config.ts
@@ -436,77 +442,77 @@
436
442
  created public/.gitkeep
437
443
  created .gitignore
438
444
 
439
- ✓ tests/service-role-routes.test.ts (4 tests) 1623ms
440
- ✓ reads the declared list  553ms
441
- ✓ is an empty list when a project declares none  501ms
442
- ✓ sends what the project declared, hook entries included  564ms
443
- ✓ tests/init-dependency-versions.test.ts (4 tests) 34ms
444
- ✓ tests/app-command.test.ts (2 tests) 2532ms
445
- ✓ sets app.mode=static and static_dir in supatype.config.ts  1280ms
446
- ✓ creates the static directory when missing  1250ms
447
- ✓ tests/type-resolver.test.ts (2 tests) 13ms
445
+ ✓ tests/service-role-routes.test.ts (4 tests) 1737ms
446
+ ✓ reads the declared list  576ms
447
+ ✓ is an empty list when a project declares none  589ms
448
+ ✓ sends what the project declared, hook entries included  569ms
449
+ ✓ tests/init-dependency-versions.test.ts (4 tests) 37ms
450
+ ✓ tests/app-command.test.ts (2 tests) 2802ms
451
+ ✓ sets app.mode=static and static_dir in supatype.config.ts  1418ms
452
+ ✓ creates the static directory when missing  1380ms
453
+ ✓ tests/type-resolver.test.ts (2 tests) 14ms
448
454
  ✓ tests/engine-push-output.test.ts (7 tests) 6ms
449
- ✓ tests/cli-help.test.ts (16 tests) 19936ms
450
- ✓ --help lists all top-level commands  1693ms
451
- ✓ --version prints package.json version  1783ms
452
- ✓ self-update --help describes the command  1154ms
453
- ✓ init --help describes the init command  1231ms
454
- ✓ push --help describes the push command and --yes flag  1189ms
455
- ✓ diff --help describes the diff command  1232ms
456
- ✓ pull --help describes scaffold pull command  1192ms
457
- ✓ doctor --help describes drift report command  1154ms
458
- ✓ introspect --help describes database introspection command  1103ms
459
- ✓ adopt --help describes adoption ceremony command  1120ms
460
- ✓ reset --help shows --yes flag  1134ms
461
- ✓ app --help describes the app command with add/remove subcommands  1155ms
462
- ✓ app add --help shows --static and --port options  1308ms
463
- ✓ self-host --help shows compose only (legacy commands hidden)  1091ms
464
- ✓ self-host compose --help shows compose subcommands  1229ms
465
- ✓ unknown command exits non-zero  1163ms
466
- ✓ tests/command-chrome-wrap.test.ts (3 tests) 6ms
455
+ ✓ tests/command-chrome-wrap.test.ts (3 tests) 12ms
456
+ ✓ tests/cli-help.test.ts (16 tests) 22909ms
457
+ ✓ --help lists all top-level commands  2166ms
458
+ ✓ --version prints package.json version  1355ms
459
+ ✓ self-update --help describes the command  1300ms
460
+ ✓ init --help describes the init command  1390ms
461
+ ✓ push --help describes the push command and --yes flag  1388ms
462
+ ✓ diff --help describes the diff command  1372ms
463
+ ✓ pull --help describes scaffold pull command  1470ms
464
+ ✓ doctor --help describes drift report command  1414ms
465
+ ✓ introspect --help describes database introspection command  1267ms
466
+ ✓ adopt --help describes adoption ceremony command  1390ms
467
+ ✓ reset --help shows --yes flag  1419ms
468
+ ✓ app --help describes the app command with add/remove subcommands  1384ms
469
+ ✓ app add --help shows --static and --port options  1362ms
470
+ ✓ self-host --help shows compose only (legacy commands hidden)  1418ms
471
+ ✓ self-host compose --help shows compose subcommands  1383ms
472
+ ✓ unknown command exits non-zero  1416ms
467
473
  ✓ tests/cli-install-method.test.ts (8 tests) 6ms
468
- ✓ tests/doctor-render.test.ts (3 tests) 6ms
469
- ✓ tests/archive-name-alias.test.ts (4 tests) 5ms
474
+ ✓ tests/archive-name-alias.test.ts (4 tests) 6ms
470
475
  ✓ tests/ensure-binary.test.ts (2 tests) 9ms
471
- ✓ tests/init-project-detect.test.ts (4 tests) 7ms
472
- ✓ tests/tsx-runner.test.ts (7 tests) 2754ms
476
+ ✓ tests/tsx-runner.test.ts (7 tests) 2922ms
473
477
  ✓ evaluates a simple expression and returns stdout  388ms
474
- ✓ evaluates TypeScript syntax (type annotations)  394ms
475
- ✓ can serialize a JSON object to stdout  341ms
476
- ✓ returns non-zero exit code on syntax error  380ms
477
- ✓ returns non-zero exit code on runtime error  392ms
478
- ✓ captures stderr separately from stdout  369ms
479
- ✓ runs a .ts file and returns its stdout  485ms
478
+ ✓ evaluates TypeScript syntax (type annotations)  400ms
479
+ ✓ can serialize a JSON object to stdout  335ms
480
+ ✓ returns non-zero exit code on syntax error  424ms
481
+ ✓ returns non-zero exit code on runtime error  422ms
482
+ ✓ captures stderr separately from stdout  400ms
483
+ ✓ runs a .ts file and returns its stdout  547ms
484
+ ✓ tests/init-project-detect.test.ts (4 tests) 14ms
485
+ ✓ tests/doctor-render.test.ts (3 tests) 6ms
480
486
  ✓ tests/required-host-components.test.ts (4 tests) 6ms
481
- ✓ tests/ui-messages.test.ts (5 tests) 5ms
482
- ✓ tests/normalize-admin-config.test.ts (1 test) 6ms
483
- ✓ tests/doctor-service-role.test.ts (4 tests) 5ms
487
+ ✓ tests/ui-messages.test.ts (5 tests) 7ms
488
+ ✓ tests/normalize-admin-config.test.ts (1 test) 7ms
489
+ ✓ tests/doctor-service-role.test.ts (4 tests) 6ms
484
490
  ✓ tests/ui-confirm.test.ts (3 tests) 7ms
485
- ✓ tests/docker-postgres.test.ts (5 tests) 5ms
486
- ✓ tests/binary-download-lock.test.ts (2 tests) 7ms
487
- ✓ tests/dev-session-lock.test.ts (2 tests) 4ms
488
- ✓ tests/dev-ports.test.ts (3 tests) 5ms
489
- ✓ tests/dev-ready-panel.test.ts (2 tests) 3ms
490
- ✓ tests/route-manifest.test.ts (1 test) 5ms
491
- ✓ tests/studio-admin-roles.test.ts (3 tests) 4ms
492
- ✓ tests/config-load-failure.test.ts (2 tests) 2975ms
493
- ✓ is reported, rather than treated as absent  1807ms
494
- ✓ does not stop the CLI working with no config at all  1164ms
495
- ✓ tests/release-pins.test.ts (2 tests) 3ms
496
- ✓ tests/realtime-launch.test.ts (1 test) 4ms
497
- ✓ tests/ensure-dev-api-config.test.ts (1 test) 3ms
498
- ✓ tests/seed-discover.test.ts (2 tests) 16ms
499
- ✓ tests/rest-cache-admin.test.ts (1 test) 31ms
500
- ✓ tests/init-package-json.test.ts (1 test) 2ms
501
- ✓ tests/resolve-api-url.test.ts (2 tests) 5ms
502
- ✓ tests/pg-spawn-env.test.ts (2 tests) 3ms
503
- ✓ tests/migrate-from-v1.test.ts (1 test) 13ms
504
- ✓ tests/cli-package-version.test.ts (1 test) 3ms
491
+ ✓ tests/docker-postgres.test.ts (5 tests) 4ms
492
+ ✓ tests/binary-download-lock.test.ts (2 tests) 6ms
493
+ ✓ tests/dev-session-lock.test.ts (2 tests) 5ms
494
+ ✓ tests/dev-ports.test.ts (3 tests) 6ms
495
+ ✓ tests/route-manifest.test.ts (1 test) 6ms
496
+ ✓ tests/dev-ready-panel.test.ts (2 tests) 5ms
497
+ ✓ tests/studio-admin-roles.test.ts (3 tests) 3ms
498
+ ✓ tests/config-load-failure.test.ts (2 tests) 3474ms
499
+ ✓ is reported, rather than treated as absent  1964ms
500
+ ✓ does not stop the CLI working with no config at all  1507ms
501
+ ✓ tests/realtime-launch.test.ts (1 test) 5ms
502
+ ✓ tests/release-pins.test.ts (2 tests) 6ms
503
+ ✓ tests/ensure-dev-api-config.test.ts (1 test) 5ms
504
+ ✓ tests/seed-discover.test.ts (2 tests) 17ms
505
+ ✓ tests/rest-cache-admin.test.ts (1 test) 30ms
506
+ ✓ tests/init-package-json.test.ts (1 test) 3ms
507
+ ✓ tests/pg-spawn-env.test.ts (2 tests) 4ms
508
+ ✓ tests/resolve-api-url.test.ts (2 tests) 4ms
509
+ ✓ tests/migrate-from-v1.test.ts (1 test) 10ms
510
+ ✓ tests/cli-package-version.test.ts (1 test) 4ms
505
511
  ✓ tests/postgres-archive-tag.test.ts (1 test) 2ms
506
512
  ✓ tests/stdin-after-ink.test.ts (1 test) 3ms
507
513
 
508
-  Test Files  73 passed (73)
509
-  Tests  581 passed (581)
510
-  Start at  09:33:26
511
-  Duration  40.72s (transform 6.67s, setup 0ms, import 37.37s, tests 70.91s, environment 13ms)
514
+  Test Files  78 passed (78)
515
+  Tests  774 passed (774)
516
+  Start at  22:11:33
517
+  Duration  48.31s (transform 7.40s, setup 0ms, import 44.84s, tests 82.79s, environment 17ms)
512
518
 
@@ -1,4 +1,4 @@
1
1
 
2
- > @supatype/cli@0.1.11 typecheck /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.1.13 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.1.11";
12
+ export const EMBEDDED_CLI_VERSION = "0.1.13";
13
13
  //# sourceMappingURL=cli-version-embedded.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiBxC,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyOjD"}
1
+ {"version":3,"file":"db.d.ts","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAiBxC,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAmQjD"}
@@ -184,13 +184,35 @@ export function registerDb(program) {
184
184
  info(`\nApplying ${fixable.length} remediation(s) in one transaction...`);
185
185
  try {
186
186
  await applyRemedies(client, fixable);
187
- info("Applied. Re-run `supatype db check` to confirm.");
188
187
  }
189
188
  catch (err) {
190
189
  error(`Rolled back: the database is unchanged: ${err.message}`);
191
190
  process.exitCode = 1;
192
191
  return;
193
192
  }
193
+ // Re-read rather than report the commit. A committed statement is not a fixed finding:
194
+ // `GRANT` on an object the caller does not own raises `WARNING: no privileges were
195
+ // granted` and commits happily, so "Applied" was a claim about the transaction rather
196
+ // than about the database. Checking is the whole job of this command.
197
+ const after = await runPreflight(client, {
198
+ schema: schema,
199
+ ...(opts.authenticatorPassword !== undefined && {
200
+ authenticatorPassword: opts.authenticatorPassword,
201
+ }),
202
+ });
203
+ const stillFailing = transactionalRemedies(after);
204
+ if (stillFailing.length === 0) {
205
+ info(`Applied. ${fixable.length} finding(s) fixed and confirmed.`);
206
+ }
207
+ else {
208
+ error(`\nApplied, but ${stillFailing.length} of ${fixable.length} finding(s) are still failing:`);
209
+ for (const r of stillFailing)
210
+ error(` ${r.title}: ${r.detail}`);
211
+ error("\n The statements committed without error and changed nothing that the check can see.\n" +
212
+ " The usual cause is a privilege the connected role does not hold: Postgres reports\n" +
213
+ " that as a warning, not an error. Re-run with --emit and apply the SQL as an owner.");
214
+ process.exitCode = 1;
215
+ }
194
216
  }
195
217
  if (manual.length > 0) {
196
218
  warn(`\n${manual.length} finding(s) cannot be fixed in a transaction:`);
@@ -1 +1 @@
1
- {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"db.js","sourceRoot":"","sources":["../../src/commands/db.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,UAAU,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACjD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,gBAAgB,EAChB,YAAY,EACZ,qBAAqB,GAGtB,MAAM,oBAAoB,CAAA;AAE3B,MAAM,UAAU,UAAU,CAAC,OAAgB;IACzC,MAAM,EAAE,GAAG,OAAO;SACf,OAAO,CAAC,IAAI,CAAC;SACb,WAAW,CAAC,gCAAgC,CAAC,CAAA;IAEhD,EAAE;SACC,OAAO,CAAC,mBAAmB,CAAC;SAC5B,WAAW,CAAC,4DAA4D,CAAC;SACzE,MAAM,CAAC,eAAe,EAAE,+DAA+D,CAAC;SACxF,MAAM,CAAC,cAAc,EAAE,kBAAkB,EAAE,YAAY,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,IAA6C,EAAE,EAAE;QAC9D,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACzB,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;QACjC,MAAM,SAAS,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;QAE1C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACnC,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;YACrF,KAAK,CAAC,OAAO,CAAC,CAAA;YACd,KAAK,EAAE,CAAA;YACP,KAAK,CAAC,6EAA6E,CAAC,CAAA;YACpF,KAAK,CAAC,gFAAgF,CAAC,CAAA;YACvF,OAAM;QACR,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,YAAY,CAAA;QAExC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,SAAS,EAChB;gBACE,MAAM,EAAE,KAAK;gBACb,IAAI,EAAE,aAAa,MAAM,CAAC,UAAU,eAAe;gBACnD,KAAK,EAAE,MAAM,CAAC,KAAM;gBACpB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CACF,CAAA;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAA;YAChD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,KAAK,CAAC,gBAAgB,OAAO,aAAa,CAAC,CAAA;gBAC3C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;gBACpB,OAAM;YACR,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,CAAC,WAAW,IAAI,iCAAiC,CAAA;YACpE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;YACxE,KAAK,EAAE,CAAA;YACP,KAAK,CAAC,6EAA6E,CAAC,CAAA;YACpF,KAAK,CAAC,gFAAgF,CAAC,CAAA;QACzF,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,sCAAuC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;YACrE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,EAAE;SACC,OAAO,CAAC,gBAAgB,CAAC;SACzB,WAAW,CAAC,oDAAoD,CAAC;SACjE,MAAM,CAAC,cAAc,EAAE,kBAAkB,EAAE,YAAY,CAAC;SACxD,MAAM,CAAC,KAAK,EAAE,IAAsB,EAAE,EAAE;QACvC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACzB,MAAM,IAAI,GAAG,eAAe,CAAC,GAAG,CAAC,CAAA;QAEjC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACnC,KAAK,CAAC,mEAAmE,CAAC,CAAA;YAC1E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACR,CAAC;QAED,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAA;QACpD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,YAAY,CAAA;QAExC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,MAAM,CAAC,UAAU,EACjB,MAAM,CAAC,SAAS,EAChB;gBACE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,aAAa,MAAM,CAAC,UAAU,iBAAiB,OAAO,oBAAoB;gBAChF,KAAK,EAAE,MAAM,CAAC,KAAM;gBACpB,KAAK,EAAE,MAAM,CAAC,KAAK;aACpB,CACF,CAAA;YAED,IAAI,CAAC,uCAAuC,CAAC,CAAA;YAC7C,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;gBACrB,KAAK,CAAC,6BAA6B,IAAI,CAAC,WAAW,EAAE,CAAC,CAAA;YACxD,CAAC;iBAAM,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACzB,KAAK,CAAC,mBAAmB,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,6BAA8B,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;YAC5D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,CAAC,CAAA;IAEJ,EAAE;SACC,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,gFAAgF,CAAC;SAC7F,MAAM,CAAC,oBAAoB,EAAE,qEAAqE,CAAC;SACnG,MAAM,CAAC,iBAAiB,EAAE,8DAA8D,CAAC;SACzF,MAAM,CAAC,QAAQ,EAAE,kDAAkD,CAAC;SACpE,MAAM,CAAC,OAAO,EAAE,+CAA+C,CAAC;SAChE,MAAM,CACL,qCAAqC,EACrC,iEAAiE,CAClE;SACA,MAAM,CAAC,KAAK,EAAE,IAMd,EAAE,EAAE;QACH,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,KAAK,CAAC,+EAA+E,CAAC,CAAA;YACtF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACR,CAAC;QAED,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;QACzB,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,EAAE,CAAA;QACjC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,IAAI,EAAE,CAAA;QAChC,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;gBAC9B,GAAG,GAAG,GAAG,IAAI,gBAAgB,CAAC,MAAM,CAAC,CAAA;gBACrC,MAAM,GAAG,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,SAAS,IAAI,QAAQ,CAAA;YACzD,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,qBAAqB,CAAC,GAAG,CAAC,CAAA;gBAC1B,wFAAwF;gBACxF,mDAAmD;gBACnD,GAAG,GAAG,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAA;gBACxC,MAAM,GAAG,MAAM,IAAI,QAAQ,CAAA;YAC7B,CAAC;QACH,CAAC;QACD,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,KAAK,CAAC,gGAAgG,CAAC,CAAA;YACvG,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACR,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,CAAA;QAChC,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,gBAAgB,EAAE,GAAG,EAAE,CAAC,CAAA;QAClE,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,OAAO,EAAE,CAAA;QACxB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,KAAK,CAAC,sBAAuB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;YACrD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACpB,OAAM;QACR,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE;gBACxC,MAAM,EAAE,MAAO;gBACf,GAAG,CAAC,IAAI,CAAC,qBAAqB,KAAK,SAAS,IAAI;oBAC9C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;iBAClD,CAAC;aACH,CAAC,CAAA;YAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;YAC7C,MAAM,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAA;YAEvC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;gBACd,uFAAuF;gBACvF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,2CAA2C,CAAC,CAAA;gBACnD,CAAC;qBAAM,CAAC;oBACN,KAAK,CAAC,QAAQ,CAAC,CAAA;oBACf,KAAK,MAAM,CAAC,IAAI,OAAO;wBAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;oBAC9D,KAAK,CAAC,WAAW,CAAC,CAAA;gBACpB,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,8DAA8D,CAAC,CAAA;oBACtF,KAAK,MAAM,CAAC,IAAI,MAAM;wBAAE,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;gBAC3D,CAAC;gBACD,OAAM;YACR,CAAC;YAED,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;YAE3B,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;gBACb,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,iBAAiB,CAAC,CAAA;gBACzB,CAAC;qBAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1C,qFAAqF;oBACrF,+DAA+D;oBAC/D,KAAK,CACH,qFAAqF;wBACnF,gGAAgG;wBAChG,+DAA+D,CAClE,CAAA;oBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;oBACpB,OAAM;gBACR,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,cAAc,OAAO,CAAC,MAAM,uCAAuC,CAAC,CAAA;oBACzE,IAAI,CAAC;wBACH,MAAM,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;oBACtC,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,KAAK,CAAC,2CAA4C,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;wBAC1E,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;wBACpB,OAAM;oBACR,CAAC;oBAED,uFAAuF;oBACvF,mFAAmF;oBACnF,sFAAsF;oBACtF,sEAAsE;oBACtE,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,MAAM,EAAE;wBACvC,MAAM,EAAE,MAAO;wBACf,GAAG,CAAC,IAAI,CAAC,qBAAqB,KAAK,SAAS,IAAI;4BAC9C,qBAAqB,EAAE,IAAI,CAAC,qBAAqB;yBAClD,CAAC;qBACH,CAAC,CAAA;oBACF,MAAM,YAAY,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAA;oBAEjD,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAC9B,IAAI,CAAC,YAAY,OAAO,CAAC,MAAM,kCAAkC,CAAC,CAAA;oBACpE,CAAC;yBAAM,CAAC;wBACN,KAAK,CACH,kBAAkB,YAAY,CAAC,MAAM,OAAO,OAAO,CAAC,MAAM,gCAAgC,CAC3F,CAAA;wBACD,KAAK,MAAM,CAAC,IAAI,YAAY;4BAAE,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;wBAChE,KAAK,CACH,0FAA0F;4BACxF,uFAAuF;4BACvF,sFAAsF,CACzF,CAAA;wBACD,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;oBACtB,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACtB,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM,+CAA+C,CAAC,CAAA;oBACvE,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE,CAAC;wBACvB,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,sDAAsD,CAAC,CAAA;oBAC1E,CAAC;gBACH,CAAC;gBACD,OAAM;YACR,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;gBAC5B,KAAK,CAAC,EAAE,CAAC,CAAA;gBACT,KAAK,CAAC,sFAAsF,CAAC,CAAA;gBAC7F,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;YACtB,CAAC;iBAAM,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9B,KAAK,CAAC,EAAE,CAAC,CAAA;gBACT,IAAI,CAAC,gEAAgE,CAAC,CAAA;YACxE,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iEAAiE;YACjE,KAAK,CAAC,iCAAkC,GAAa,CAAC,OAAO,EAAE,CAAC,CAAA;YAChE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAA;QACtB,CAAC;gBAAS,CAAC;YACT,MAAM,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAA;QAC3C,CAAC;IACH,CAAC,CAAC,CAAA;AACN,CAAC;AAED,MAAM,cAAc,GAA6B;IAC/C,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,MAAM;IACf,IAAI,EAAE,MAAM;CACb,CAAA;AAED,SAAS,WAAW,CAAC,OAA+B;IAClD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,IAAI,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,MAAM,EAAE,CAAA;QACtE,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;YAAE,KAAK,CAAC,IAAI,CAAC,CAAA;aACjC,IAAI,CAAC,CAAC,QAAQ,KAAK,SAAS,IAAI,CAAC,CAAC,QAAQ,KAAK,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,CAAA;;YACjE,KAAK,CAAC,IAAI,CAAC,CAAA;QAChB,IAAI,CAAC,CAAC,MAAM;YAAE,KAAK,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE,CAAC,CAAA;IAC7C,CAAC;AACH,CAAC"}
@@ -11,13 +11,6 @@ interface DoctorItem {
11
11
  /** Exported for tests: the label form is easy to get subtly wrong per item kind. */
12
12
  export declare function printSection(title: string, items: DoctorItem[]): void;
13
13
  export declare function registerDoctor(program: Command): void;
14
- /**
15
- * Whether declared hooks can actually run.
16
- *
17
- * Worth its own section because every failure here is silent: a hook whose function is missing, or a
18
- * stack with functions switched off, produces no error anywhere, the write just succeeds
19
- * unvalidated. Drift you cannot see is the thing doctor exists for.
20
- */
21
14
  export declare function printHooks(report: HooksReport): void;
22
15
  /**
23
16
  * Report which functions may see the service-role key, and which grants do nothing.
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOxC,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE3F,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAQD,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAUrE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyErD;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAuBpD;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,IAAI,CAcN"}
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAOxC,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACjE,OAAO,EAA0B,KAAK,mBAAmB,EAAE,MAAM,0BAA0B,CAAA;AAE3F,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,OAAO,EAAE,MAAM,CAAA;CAChB;AAQD,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAUrE;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAyErD;AAsCD,wBAAgB,UAAU,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAwBpD;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,mBAAmB,EAC7B,QAAQ,EAAE,SAAS,MAAM,EAAE,GAC1B,IAAI,CAcN"}
@@ -89,7 +89,33 @@ export function registerDoctor(program) {
89
89
  * stack with functions switched off, produces no error anywhere, the write just succeeds
90
90
  * unvalidated. Drift you cannot see is the thing doctor exists for.
91
91
  */
92
+ /**
93
+ * Field validators, reported separately from hooks because the consequence differs.
94
+ *
95
+ * A hook that never fires is a step that did not happen. A validator that never fires would be a
96
+ * field written unchecked, so the server refuses the write instead: these fields cannot be saved at
97
+ * all until the function exists, and the line has to say that rather than imply a silent gap.
98
+ */
99
+ function printFieldValidators(report) {
100
+ if (report.validators.length === 0)
101
+ return;
102
+ plain(`\nField validators (${report.validators.length}):\n`);
103
+ for (const entry of report.validators) {
104
+ const broken = report.validatorsMissing.some((m) => m.model === entry.model && m.field === entry.field);
105
+ plain(` ${broken ? "✗" : "•"} ${entry.model}.${entry.field} → ${entry.function}`);
106
+ }
107
+ if (report.validatorsMissing.length > 0) {
108
+ plain("\n Those marked ✗ name a function that does not exist. An unreachable validator refuses");
109
+ plain(" the write, so these fields cannot be saved until the function is created.");
110
+ plain(" Create it with: supatype hooks new <name>");
111
+ }
112
+ if (report.validatorMapMissing) {
113
+ plain("\n .supatype/manifest.json carries no validator map, so no field is being checked.");
114
+ plain(" Run: supatype push");
115
+ }
116
+ }
92
117
  export function printHooks(report) {
118
+ printFieldValidators(report);
93
119
  if (report.declared.length === 0)
94
120
  return;
95
121
  plain(`\nHooks (${report.declared.length}):\n`);
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AA6CxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoDnD"}
1
+ {"version":3,"file":"push.d.ts","sourceRoot":"","sources":["../../src/commands/push.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAkDxC,wBAAgB,YAAY,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAoDnD"}
@@ -1,7 +1,7 @@
1
1
  import { existsSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { loadConfig, loadSchemaAst } from "../config.js";
4
- import { syncManifestHooks, validateModelHooks, writeHooksModule } from "../model-hooks.js";
4
+ import { syncManifestHooks, validateModelHooks, validateModelValidators, writeHooksModule, } from "../model-hooks.js";
5
5
  import { adapterEntry, readHookUpload } from "../hook-upload.js";
6
6
  import { checkServiceRoleRoutes, serviceRoleProblemLines } from "../service-role-check.js";
7
7
  import { fatalError } from "../ui/fatal.js";
@@ -248,11 +248,19 @@ function assertServiceRoleGrantsResolve(cwd, config) {
248
248
  });
249
249
  }
250
250
  function assertModelHooksResolve(cwd, config, ast) {
251
- const problems = validateModelHooks(ast, hooksPathFromProject(config, cwd), cwd);
252
- if (problems.length === 0)
253
- return;
254
- fatalError("A model declares a hook whose function does not exist.", problems, {
255
- brand: { intro: "Push" },
256
- });
251
+ const dir = hooksPathFromProject(config, cwd);
252
+ const problems = validateModelHooks(ast, dir, cwd);
253
+ if (problems.length > 0) {
254
+ fatalError("A model declares a hook whose function does not exist.", problems, {
255
+ brand: { intro: "Push" },
256
+ });
257
+ }
258
+ // Reported separately from hooks, because the fix is different: a missing validator means a field
259
+ // nobody is checking, and the message should say so rather than talk about lifecycle events.
260
+ const validatorProblems = validateModelValidators(ast, dir, cwd);
261
+ if (validatorProblems.length > 0) {
262
+ fatalError("A model declares a field validator whose function does not exist, so that field would be " +
263
+ "written unchecked.", validatorProblems, { brand: { intro: "Push" } });
264
+ }
257
265
  }
258
266
  //# sourceMappingURL=push.js.map