@supatype/cli 0.1.4 → 0.1.6

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 (94) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/.turbo/turbo-test.log +99 -97
  3. package/.turbo/turbo-typecheck.log +1 -1
  4. package/dist/app-vite-env.d.ts +4 -0
  5. package/dist/app-vite-env.d.ts.map +1 -0
  6. package/dist/app-vite-env.js +22 -0
  7. package/dist/app-vite-env.js.map +1 -0
  8. package/dist/augmentation-generator.d.ts.map +1 -1
  9. package/dist/augmentation-generator.js +26 -4
  10. package/dist/augmentation-generator.js.map +1 -1
  11. package/dist/binary-cache.d.ts +7 -5
  12. package/dist/binary-cache.d.ts.map +1 -1
  13. package/dist/binary-cache.js +28 -10
  14. package/dist/binary-cache.js.map +1 -1
  15. package/dist/cli-standalone.d.ts +10 -0
  16. package/dist/cli-standalone.d.ts.map +1 -0
  17. package/dist/cli-standalone.js +56 -0
  18. package/dist/cli-standalone.js.map +1 -0
  19. package/dist/commands/admin.d.ts.map +1 -1
  20. package/dist/commands/admin.js +10 -3
  21. package/dist/commands/admin.js.map +1 -1
  22. package/dist/commands/dev.d.ts.map +1 -1
  23. package/dist/commands/dev.js +34 -0
  24. package/dist/commands/dev.js.map +1 -1
  25. package/dist/commands/init.d.ts.map +1 -1
  26. package/dist/commands/init.js +3 -1
  27. package/dist/commands/init.js.map +1 -1
  28. package/dist/commands/keys.d.ts.map +1 -1
  29. package/dist/commands/keys.js +16 -0
  30. package/dist/commands/keys.js.map +1 -1
  31. package/dist/commands/self-update.d.ts +1 -1
  32. package/dist/commands/self-update.d.ts.map +1 -1
  33. package/dist/commands/self-update.js +33 -9
  34. package/dist/commands/self-update.js.map +1 -1
  35. package/dist/commands/update.d.ts.map +1 -1
  36. package/dist/commands/update.js +9 -1
  37. package/dist/commands/update.js.map +1 -1
  38. package/dist/components.d.ts +2 -2
  39. package/dist/components.d.ts.map +1 -1
  40. package/dist/components.js +2 -2
  41. package/dist/components.js.map +1 -1
  42. package/dist/dev-compose.d.ts.map +1 -1
  43. package/dist/dev-compose.js +122 -12
  44. package/dist/dev-compose.js.map +1 -1
  45. package/dist/project-config.d.ts +2 -0
  46. package/dist/project-config.d.ts.map +1 -1
  47. package/dist/project-config.js.map +1 -1
  48. package/dist/realtime-launch.d.ts +11 -0
  49. package/dist/realtime-launch.d.ts.map +1 -0
  50. package/dist/realtime-launch.js +39 -0
  51. package/dist/realtime-launch.js.map +1 -0
  52. package/dist/required-host-components.js +1 -1
  53. package/dist/required-host-components.js.map +1 -1
  54. package/dist/route-manifest.d.ts +3 -0
  55. package/dist/route-manifest.d.ts.map +1 -0
  56. package/dist/route-manifest.js +15 -0
  57. package/dist/route-manifest.js.map +1 -0
  58. package/dist/schema-push-lock.d.ts +17 -0
  59. package/dist/schema-push-lock.d.ts.map +1 -0
  60. package/dist/schema-push-lock.js +106 -0
  61. package/dist/schema-push-lock.js.map +1 -0
  62. package/dist/self-host-compose.d.ts.map +1 -1
  63. package/dist/self-host-compose.js +18 -0
  64. package/dist/self-host-compose.js.map +1 -1
  65. package/dist/type-extractor.d.ts.map +1 -1
  66. package/dist/type-extractor.js +125 -13
  67. package/dist/type-extractor.js.map +1 -1
  68. package/package.json +1 -1
  69. package/scripts/build-release-bundle.mjs +27 -0
  70. package/src/app-vite-env.ts +27 -0
  71. package/src/augmentation-generator.ts +29 -5
  72. package/src/binary-cache.ts +29 -11
  73. package/src/cli-standalone.ts +62 -0
  74. package/src/commands/admin.ts +13 -3
  75. package/src/commands/dev.ts +38 -0
  76. package/src/commands/init.ts +3 -1
  77. package/src/commands/keys.ts +16 -0
  78. package/src/commands/self-update.ts +34 -13
  79. package/src/commands/update.ts +9 -1
  80. package/src/components.ts +2 -2
  81. package/src/dev-compose.ts +146 -14
  82. package/src/project-config.ts +2 -0
  83. package/src/realtime-launch.ts +52 -0
  84. package/src/required-host-components.ts +1 -1
  85. package/src/route-manifest.ts +17 -0
  86. package/src/schema-push-lock.ts +131 -0
  87. package/src/self-host-compose.ts +18 -0
  88. package/src/type-extractor.ts +156 -13
  89. package/tests/augmentation-generator.test.ts +44 -4
  90. package/tests/realtime-launch.test.ts +25 -0
  91. package/tests/required-host-components.test.ts +2 -0
  92. package/tests/route-manifest.test.ts +29 -0
  93. package/tests/type-extractor.test.ts +52 -0
  94. package/tsconfig.tsbuildinfo +1 -1
@@ -1,4 +1,4 @@
1
1
 
2
- > @supatype/cli@0.1.4 build /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.1.6 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,12 +1,12 @@
1
1
 
2
- > @supatype/cli@0.1.4 test /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.1.6 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 (36 tests) 229ms
9
- ✓ tests/runtime-contract.test.ts (41 tests) 131ms
8
+ ✓ tests/type-extractor.test.ts (37 tests) 359ms
9
+ ✓ tests/runtime-contract.test.ts (41 tests) 117ms
10
10
  stdout | tests/init.test.ts > scaffold() > creates all expected files
11
11
   created package.json
12
12
  created supatype.config.ts
@@ -291,7 +291,7 @@
291
291
  created public/.gitkeep
292
292
  created .gitignore
293
293
 
294
- ✓ tests/init.test.ts (26 tests) 95ms
294
+ ✓ tests/init.test.ts (26 tests) 75ms
295
295
 
296
296
  ✓ tests/dev-ui.test.ts (21 tests) 108ms
297
297
 
@@ -304,21 +304,19 @@
304
304
 
305
305
  docker: daemon down
306
306
 
307
- ✓ tests/docker-runtime.test.ts (10 tests) 17ms
308
- ✓ tests/config.test.ts (19 tests) 5201ms
309
- ✓ loads a valid supatype.config.ts (plain export default, no package imports)  515ms
310
- ✓ normalizes shorthand schema string to { path, pg_schema }  598ms
311
- ✓ loads a supatype.config.js (plain ESM)  563ms
312
- ✓ loads config without a versions section (latest by default)  502ms
313
- ✓ prefers supatype.config.ts over supatype.config.js when both exist  484ms
314
- ✓ supports optional output field in config  599ms
315
- ✓ merges supatype.local.config.ts over base  1065ms
316
- ✓ loads defineConfig import before @supatype/cli is installed (init scaffold)  863ms
317
- ✓ tests/command-chrome-coverage.test.ts (1 test) 12ms
307
+ ✓ tests/docker-runtime.test.ts (10 tests) 15ms
308
+ ✓ tests/config.test.ts (19 tests) 5676ms
309
+ ✓ loads a valid supatype.config.ts (plain export default, no package imports)  614ms
310
+ ✓ normalizes shorthand schema string to { path, pg_schema }  624ms
311
+ ✓ loads a supatype.config.js (plain ESM)  610ms
312
+ ✓ loads config without a versions section (latest by default)  536ms
313
+ ✓ prefers supatype.config.ts over supatype.config.js when both exist  631ms
314
+ ✓ supports optional output field in config  550ms
315
+ ✓ merges supatype.local.config.ts over base  1135ms
316
+ ✓ loads defineConfig import before @supatype/cli is installed (init scaffold)  964ms
317
+ ✓ tests/command-chrome-coverage.test.ts (1 test) 14ms
318
318
  stdout | tests/link.test.ts > link model > migrates cloud.json into link.json
319
319
   created package.json
320
- stderr | tests/link.test.ts > link model > migrates cloud.json into link.json
321
- [supatype] Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
322
320
  created supatype.config.ts
323
321
  created schema/index.ts
324
322
  created .env
@@ -327,11 +325,13 @@
327
325
  created public/.gitkeep
328
326
  created .gitignore
329
327
 
328
+ stderr | tests/link.test.ts > link model > migrates cloud.json into link.json
329
+ [supatype] Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
330
330
 
331
- ✓ tests/link.test.ts (4 tests) 2930ms
332
- ✓ resolveTarget returns cloud mode with /api/v1 prefix  1014ms
333
- ✓ resolveTarget returns self-host mode with /platform/v1 prefix  964ms
334
- ✓ targetSchemaRollback posts to /platform/v1 when linked  941ms
331
+ ✓ tests/link.test.ts (4 tests) 2999ms
332
+ ✓ resolveTarget returns cloud mode with /api/v1 prefix  1046ms
333
+ ✓ resolveTarget returns self-host mode with /platform/v1 prefix  986ms
334
+ ✓ targetSchemaRollback posts to /platform/v1 when linked  955ms
335
335
  stdout | tests/admin-ensure.test.ts > init admin seed in .env > writes SUPATYPE_ADMIN_* when scaffold options include credentials
336
336
   created package.json
337
337
  created supatype.config.ts
@@ -342,55 +342,52 @@
342
342
  created public/.gitkeep
343
343
  created .gitignore
344
344
 
345
- ✓ tests/admin-ensure.test.ts (10 tests) 196ms
346
- ✓ tests/pull-utils.test.ts (49 tests) 14ms
347
- ✓ tests/schema-sources.test.ts (5 tests) 1185ms
348
- ✓ buildSchemaSourcesPayload includes manifest metadata  584ms
349
- ✓ restore overwrites modified local files  555ms
345
+ ✓ tests/admin-ensure.test.ts (10 tests) 162ms
346
+ ✓ tests/pull-utils.test.ts (49 tests) 10ms
347
+ ✓ tests/schema-sources.test.ts (5 tests) 1278ms
348
+ ✓ buildSchemaSourcesPayload includes manifest metadata  639ms
349
+ ✓ restore overwrites modified local files  599ms
350
350
  stderr | tests/binary-cache-cloud-overrides.test.ts > isLinkedToCloudProject > is true when .supatype/cloud.json has projectSlug
351
351
  [supatype] Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
352
352
 
353
- ✓ tests/binary-cache-cloud-overrides.test.ts (11 tests) 21ms
354
- ✓ tests/minisign.test.ts (5 tests) 15ms
353
+ ✓ tests/binary-cache-cloud-overrides.test.ts (11 tests) 18ms
354
+ ✓ tests/minisign.test.ts (5 tests) 14ms
355
+ ✓ tests/augmentation-generator.test.ts (5 tests) 18ms
355
356
  stdout | tests/storage-provision.test.ts > provisionBuckets > POSTs each bucket to the storage API
356
357
  [supatype] Storage bucket "photos" ready.
357
358
 
358
359
  stdout | tests/storage-provision.test.ts > provisionBuckets > POSTs each bucket to the storage API
359
360
  [supatype] Storage bucket "avatars" ready.
360
361
 
361
- ✓ tests/storage-provision.test.ts (6 tests) 14ms
362
- ✓ tests/cached-artifact-format.test.ts (7 tests) 10ms
363
- ✓ tests/proxy-dev-app.test.ts (7 tests) 5ms
364
- ✓ tests/init-dependency-versions.test.ts (4 tests) 40ms
365
- ✓ tests/keys.test.ts (11 tests) 17122ms
366
- ✓ exits 0 with --secret  1522ms
367
- ✓ outputs ANON_KEY= line  1453ms
368
- ✓ outputs SERVICE_ROLE_KEY= line  1442ms
369
- ✓ ANON_KEY is a valid three-part JWT  1502ms
370
- ✓ SERVICE_ROLE_KEY payload has role: service_role  1494ms
371
- ✓ JWT has exp in the future  1371ms
372
- ✓ --exp-years changes the expiry window  2798ms
373
- ✓ reads JWT_SECRET from environment variable  1349ms
374
- ✓ reads JWT_SECRET from .env file  1454ms
375
- ✓ exits non-zero when no secret is available  1351ms
376
- ✓ keys --help shows --secret and --exp-years options  1380ms
377
- ✓ tests/augmentation-generator.test.ts (3 tests) 11ms
378
- ✓ tests/type-resolver.test.ts (2 tests) 18ms
379
- ✓ tests/engine-push-output.test.ts (7 tests) 5ms
380
- ✓ tests/command-chrome-wrap.test.ts (3 tests) 8ms
381
- ✓ tests/tsx-runner.test.ts (7 tests) 2945ms
382
- ✓ evaluates a simple expression and returns stdout  425ms
383
- ✓ evaluates TypeScript syntax (type annotations)  342ms
384
- ✓ can serialize a JSON object to stdout  368ms
385
- ✓ returns non-zero exit code on syntax error  437ms
386
- ✓ returns non-zero exit code on runtime error  357ms
387
- ✓ captures stderr separately from stdout  417ms
388
- ✓ runs a .ts file and returns its stdout  593ms
389
- ✓ tests/ensure-binary.test.ts (2 tests) 11ms
390
- ✓ tests/init-project-detect.test.ts (4 tests) 12ms
391
- ✓ tests/ui-messages.test.ts (5 tests) 8ms
392
- ✓ tests/required-host-components.test.ts (4 tests) 7ms
393
- ✓ tests/normalize-admin-config.test.ts (1 test) 5ms
362
+ ✓ tests/storage-provision.test.ts (6 tests) 11ms
363
+ ✓ tests/cached-artifact-format.test.ts (7 tests) 11ms
364
+ ✓ tests/keys.test.ts (11 tests) 16492ms
365
+ ✓ exits 0 with --secret  1514ms
366
+ ✓ outputs ANON_KEY= line  1367ms
367
+ ✓ outputs SERVICE_ROLE_KEY= line  1427ms
368
+ ✓ ANON_KEY is a valid three-part JWT  1377ms
369
+ ✓ SERVICE_ROLE_KEY payload has role: service_role  1329ms
370
+ ✓ JWT has exp in the future  1352ms
371
+ ✓ --exp-years changes the expiry window  2769ms
372
+ ✓ reads JWT_SECRET from environment variable  1331ms
373
+ ✓ reads JWT_SECRET from .env file  1328ms
374
+ ✓ exits non-zero when no secret is available  1410ms
375
+ ✓ keys --help shows --secret and --exp-years options  1280ms
376
+ ✓ tests/proxy-dev-app.test.ts (7 tests) 6ms
377
+ ✓ tests/init-dependency-versions.test.ts (4 tests) 66ms
378
+ ✓ tests/type-resolver.test.ts (2 tests) 14ms
379
+ ✓ tests/engine-push-output.test.ts (7 tests) 9ms
380
+ ✓ tests/command-chrome-wrap.test.ts (3 tests) 6ms
381
+ ✓ tests/ensure-binary.test.ts (2 tests) 12ms
382
+ ✓ tests/init-project-detect.test.ts (4 tests) 11ms
383
+ ✓ tests/tsx-runner.test.ts (7 tests) 3126ms
384
+ ✓ evaluates a simple expression and returns stdout  437ms
385
+ ✓ evaluates TypeScript syntax (type annotations)  386ms
386
+ ✓ can serialize a JSON object to stdout  433ms
387
+ ✓ returns non-zero exit code on syntax error  451ms
388
+ ✓ returns non-zero exit code on runtime error  380ms
389
+ ✓ captures stderr separately from stdout  453ms
390
+ ✓ runs a .ts file and returns its stdout  581ms
394
391
  stdout | tests/app-command.test.ts > supatype app add --static > sets app.mode=static and static_dir in supatype.config.ts
395
392
   created package.json
396
393
  created supatype.config.ts
@@ -401,10 +398,11 @@
401
398
  created public/.gitkeep
402
399
  created .gitignore
403
400
 
404
- ✓ tests/dev-session-lock.test.ts (2 tests) 6ms
405
- ✓ tests/ui-confirm.test.ts (3 tests) 8ms
406
- ✓ tests/docker-postgres.test.ts (5 tests) 5ms
407
- ✓ tests/binary-download-lock.test.ts (2 tests) 8ms
401
+ ✓ tests/required-host-components.test.ts (4 tests) 7ms
402
+ ✓ tests/ui-messages.test.ts (5 tests) 6ms
403
+ ✓ tests/normalize-admin-config.test.ts (1 test) 6ms
404
+ ✓ tests/dev-session-lock.test.ts (2 tests) 5ms
405
+ ✓ tests/ui-confirm.test.ts (3 tests) 9ms
408
406
  stdout | tests/app-command.test.ts > supatype app add --static > creates the static directory when missing
409
407
   created package.json
410
408
  created supatype.config.ts
@@ -415,43 +413,47 @@
415
413
  created public/.gitkeep
416
414
  created .gitignore
417
415
 
418
- ✓ tests/dev-ports.test.ts (3 tests) 7ms
419
- ✓ tests/cli-help.test.ts (16 tests) 22108ms
420
- ✓ --help lists all top-level commands  1433ms
421
- ✓ --version prints package.json version  1339ms
422
- ✓ self-update --help describes the command  1410ms
423
- ✓ init --help describes the init command  1366ms
424
- ✓ push --help describes the push command and --yes flag  1476ms
425
- ✓ diff --help describes the diff command  1376ms
426
- ✓ pull --help describes scaffold pull command  1374ms
427
- ✓ doctor --help describes drift report command  1246ms
428
- ✓ introspect --help describes database introspection command  1412ms
429
- ✓ adopt --help describes adoption ceremony command  1344ms
430
- ✓ reset --help shows --yes flag  1291ms
431
- ✓ app --help describes the app command with add/remove subcommands  1455ms
432
- ✓ app add --help shows --static and --port options  1401ms
433
- ✓ self-host --help shows compose only (legacy commands hidden)  1380ms
434
- ✓ self-host compose --help shows compose subcommands  1467ms
435
- ✓ unknown command exits non-zero  1331ms
416
+ ✓ tests/docker-postgres.test.ts (5 tests) 3ms
417
+ ✓ tests/binary-download-lock.test.ts (2 tests) 6ms
418
+ ✓ tests/cli-help.test.ts (16 tests) 21740ms
419
+ ✓ --help lists all top-level commands  1404ms
420
+ ✓ --version prints package.json version  1351ms
421
+ ✓ self-update --help describes the command  1453ms
422
+ ✓ init --help describes the init command  1404ms
423
+ ✓ push --help describes the push command and --yes flag  1298ms
424
+ ✓ diff --help describes the diff command  1321ms
425
+ ✓ pull --help describes scaffold pull command  1347ms
426
+ ✓ doctor --help describes drift report command  1376ms
427
+ ✓ introspect --help describes database introspection command  1378ms
428
+ ✓ adopt --help describes adoption ceremony command  1256ms
429
+ ✓ reset --help shows --yes flag  1394ms
430
+ ✓ app --help describes the app command with add/remove subcommands  1296ms
431
+ ✓ app add --help shows --static and --port options  1311ms
432
+ ✓ self-host --help shows compose only (legacy commands hidden)  1411ms
433
+ ✓ self-host compose --help shows compose subcommands  1405ms
434
+ ✓ unknown command exits non-zero  1327ms
435
+ ✓ tests/dev-ports.test.ts (3 tests) 6ms
436
436
  ✓ tests/dev-ready-panel.test.ts (2 tests) 4ms
437
+ ✓ tests/route-manifest.test.ts (1 test) 5ms
438
+ ✓ tests/app-command.test.ts (2 tests) 2862ms
439
+ ✓ sets app.mode=static and static_dir in supatype.config.ts  1426ms
440
+ ✓ creates the static directory when missing  1433ms
437
441
  ✓ tests/studio-admin-roles.test.ts (3 tests) 4ms
438
- ✓ tests/release-pins.test.ts (2 tests) 4ms
439
- ✓ tests/seed-discover.test.ts (2 tests) 13ms
440
- ✓ tests/app-command.test.ts (2 tests) 2875ms
441
- ✓ sets app.mode=static and static_dir in supatype.config.ts  1454ms
442
- ✓ creates the static directory when missing  1419ms
442
+ ✓ tests/realtime-launch.test.ts (1 test) 5ms
443
+ ✓ tests/release-pins.test.ts (2 tests) 3ms
443
444
  ✓ tests/ensure-dev-api-config.test.ts (1 test) 5ms
444
- ✓ tests/rest-cache-admin.test.ts (1 test) 48ms
445
- ✓ tests/init-package-json.test.ts (1 test) 4ms
445
+ ✓ tests/seed-discover.test.ts (2 tests) 17ms
446
+ ✓ tests/rest-cache-admin.test.ts (1 test) 38ms
446
447
  ✓ tests/resolve-api-url.test.ts (2 tests) 4ms
447
- ✓ tests/pg-spawn-env.test.ts (2 tests) 5ms
448
- ✓ tests/migrate-from-v1.test.ts (1 test) 18ms
449
- ✓ tests/cli-package-version.test.ts (1 test) 3ms
448
+ ✓ tests/init-package-json.test.ts (1 test) 3ms
449
+ ✓ tests/migrate-from-v1.test.ts (1 test) 15ms
450
+ ✓ tests/pg-spawn-env.test.ts (2 tests) 4ms
451
+ ✓ tests/cli-package-version.test.ts (1 test) 2ms
450
452
  ✓ tests/postgres-archive-tag.test.ts (1 test) 2ms
451
453
  ✓ tests/stdin-after-ink.test.ts (1 test) 3ms
452
454
 
453
-  Test Files  48 passed (48)
454
-  Tests  364 passed (364)
455
-  Start at  07:44:14
456
-  Duration  28.86s (transform 3.82s, setup 0ms, import 21.76s, tests 55.51s, environment 9ms)
455
+  Test Files  50 passed (50)
456
+  Tests  369 passed (369)
457
+  Start at  19:08:23
458
+  Duration  29.59s (transform 5.28s, setup 0ms, import 23.25s, tests 55.39s, environment 14ms)
457
459
 
@@ -1,4 +1,4 @@
1
1
 
2
- > @supatype/cli@0.1.4 typecheck /home/runner/work/supatype/supatype/packages/cli
2
+ > @supatype/cli@0.1.6 typecheck /home/runner/work/supatype/supatype/packages/cli
3
3
  > tsc --project tsconfig.json --noEmit && tsc --project tests/tsconfig.json --noEmit
4
4
 
@@ -0,0 +1,4 @@
1
+ import { type SupatypeProjectConfig } from "./project-config.js";
2
+ /** Write VITE_SUPATYPE_* keys for the app dev server (P2 DX). */
3
+ export declare function writeAppViteEnv(cwd: string, config: SupatypeProjectConfig, apiUrl: string, anonKey: string): void;
4
+ //# sourceMappingURL=app-vite-env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-vite-env.d.ts","sourceRoot":"","sources":["../src/app-vite-env.ts"],"names":[],"mappings":"AAEA,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AASvF,iEAAiE;AACjE,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CASN"}
@@ -0,0 +1,22 @@
1
+ import { existsSync, readFileSync, writeFileSync } from "node:fs";
2
+ import { join, resolve } from "node:path";
3
+ import { projectRootFromConfig } from "./project-config.js";
4
+ function upsertEnvVar(content, key, value) {
5
+ const re = new RegExp(`^${key}=.*$`, "m");
6
+ if (re.test(content))
7
+ return content.replace(re, `${key}=${value}`);
8
+ const sep = content.endsWith("\n") || content.length === 0 ? "" : "\n";
9
+ return `${content}${sep}${key}=${value}\n`;
10
+ }
11
+ /** Write VITE_SUPATYPE_* keys for the app dev server (P2 DX). */
12
+ export function writeAppViteEnv(cwd, config, apiUrl, anonKey) {
13
+ const appDir = projectRootFromConfig(config, cwd);
14
+ if (!existsSync(join(appDir, "package.json")))
15
+ return;
16
+ const envPath = resolve(appDir, ".env.local");
17
+ let content = existsSync(envPath) ? readFileSync(envPath, "utf8") : "";
18
+ content = upsertEnvVar(content, "VITE_SUPATYPE_URL", apiUrl);
19
+ content = upsertEnvVar(content, "VITE_SUPATYPE_ANON_KEY", anonKey);
20
+ writeFileSync(envPath, content, "utf8");
21
+ }
22
+ //# sourceMappingURL=app-vite-env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-vite-env.js","sourceRoot":"","sources":["../src/app-vite-env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,EAAE,qBAAqB,EAA8B,MAAM,qBAAqB,CAAA;AAEvF,SAAS,YAAY,CAAC,OAAe,EAAE,GAAW,EAAE,KAAa;IAC/D,MAAM,EAAE,GAAG,IAAI,MAAM,CAAC,IAAI,GAAG,MAAM,EAAE,GAAG,CAAC,CAAA;IACzC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC,CAAA;IACnE,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IACtE,OAAO,GAAG,OAAO,GAAG,GAAG,GAAG,GAAG,IAAI,KAAK,IAAI,CAAA;AAC5C,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,eAAe,CAC7B,GAAW,EACX,MAA6B,EAC7B,MAAc,EACd,OAAe;IAEf,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;QAAE,OAAM;IAErD,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAA;IAC7C,IAAI,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IACtE,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,mBAAmB,EAAE,MAAM,CAAC,CAAA;IAC5D,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,wBAAwB,EAAE,OAAO,CAAC,CAAA;IAClE,aAAa,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;AACzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"augmentation-generator.d.ts","sourceRoot":"","sources":["../src/augmentation-generator.ts"],"names":[],"mappings":"AASA,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAyB/D"}
1
+ {"version":3,"file":"augmentation-generator.d.ts","sourceRoot":"","sources":["../src/augmentation-generator.ts"],"names":[],"mappings":"AA+BA,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CA2B/D"}
@@ -1,13 +1,35 @@
1
+ function resolveTableName(model) {
2
+ const fromAnnotations = model.annotations?.db?.tableName;
3
+ if (typeof fromAnnotations === "string" && fromAnnotations.length > 0)
4
+ return fromAnnotations;
5
+ if (typeof model.tableName === "string" && model.tableName.length > 0)
6
+ return model.tableName;
7
+ if (typeof model.name === "string" && model.name.length > 0) {
8
+ return model.name.replace(/([A-Z])/g, "_$1").replace(/^_/, "").toLowerCase();
9
+ }
10
+ return "unknown";
11
+ }
12
+ function fieldServerGenerated(meta) {
13
+ if (meta["serverGenerated"] === true)
14
+ return true;
15
+ const annotations = meta["annotations"];
16
+ if (typeof annotations !== "object" || annotations === null)
17
+ return false;
18
+ const db = annotations.db;
19
+ return db?.serverGenerated === true;
20
+ }
1
21
  export function generateClientAugmentation(ast) {
2
22
  const parsed = ast;
3
- const models = [...(parsed.models ?? [])].sort((a, b) => a.tableName.localeCompare(b.tableName));
23
+ const models = [...(parsed.models ?? [])]
24
+ .map((model) => ({ model, tableName: resolveTableName(model) }))
25
+ .sort((a, b) => a.tableName.localeCompare(b.tableName));
4
26
  const lines = [];
5
27
  lines.push("// Generated by supatype CLI — do not edit manually.");
6
28
  lines.push("");
7
29
  lines.push("declare module \"@supatype/client\" {");
8
30
  lines.push(" interface SupatypeModels {");
9
- for (const model of models) {
10
- lines.push(` ${quoteKey(model.tableName)}: {`);
31
+ for (const { model, tableName } of models) {
32
+ lines.push(` ${quoteKey(tableName)}: {`);
11
33
  lines.push(` Row: ${generateRowType(model.fields)}`);
12
34
  lines.push(` Insert: ${generateInsertType(model.fields)}`);
13
35
  lines.push(` Update: ${generateUpdateType(model.fields)}`);
@@ -30,7 +52,7 @@ function generateRowType(fields) {
30
52
  return `{\n${body}\n}`;
31
53
  }
32
54
  function insertColumnOptionalOnInsert(meta) {
33
- return meta["default"] !== undefined || meta["serverGenerated"] === true;
55
+ return meta["default"] !== undefined || fieldServerGenerated(meta);
34
56
  }
35
57
  function generateInsertType(fields) {
36
58
  const entries = Object.entries(fields).sort(([a], [b]) => a.localeCompare(b));
@@ -1 +1 @@
1
- {"version":3,"file":"augmentation-generator.js","sourceRoot":"","sources":["../src/augmentation-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"augmentation-generator.js","sourceRoot":"","sources":["../src/augmentation-generator.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Binary cache — manages supatype component binaries.
3
3
  *
4
- * Components: engine, server, postgres, deno.
4
+ * Components: engine, server, postgres, deno, realtime.
5
5
  * Cache root: ~/.supatype/cache/{component}/{version}/
6
6
  * Override path: config.overrides?.{component} (local build path).
7
7
  *
@@ -92,16 +92,18 @@ export declare function versionFor(component: Component, config: SupatypeProject
92
92
  * Each component directory on the CDN exposes `latest.json` → `{"version":"x.y.z"}`.
93
93
  */
94
94
  export declare function fetchLatestVersion(component: Component): Promise<string>;
95
- /** Fetch the latest version for all components concurrently. */
96
- export declare function fetchAllLatestVersions(): Promise<Record<Component, string>>;
95
+ /** Fetch the latest version for all components concurrently. Missing CDN entries are omitted. */
96
+ export declare function fetchAllLatestVersions(): Promise<Partial<Record<Component, string>>>;
97
97
  /**
98
98
  * Download all component binaries for the current platform.
99
99
  * Skips components that are already cached.
100
100
  * Fails gracefully when graceful=true (suitable for postinstall).
101
101
  */
102
102
  /**
103
- * Verify all cached binaries for the current platform (used by integration CI).
104
- * Throws if any cached component is missing or fails format checks.
103
+ * Verify cached binaries for the current platform (used by integration CI).
104
+ * Only checks components present in `versions` unpublished CDN components
105
+ * (no latest.json yet) are skipped with a log so CI can land before first release.
106
+ * Throws if a pinned component is missing from cache or fails format checks.
105
107
  */
106
108
  export declare function verifyCachedBinaries(versions: Partial<ComponentVersions> | undefined): void;
107
109
  export declare function downloadAll(versions: Partial<ComponentVersions> | undefined, graceful?: boolean): Promise<void>;
@@ -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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"}
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Binary cache — manages supatype component binaries.
3
3
  *
4
- * Components: engine, server, postgres, deno.
4
+ * Components: engine, server, postgres, deno, realtime.
5
5
  * Cache root: ~/.supatype/cache/{component}/{version}/
6
6
  * Override path: config.overrides?.{component} (local build path).
7
7
  *
@@ -63,6 +63,7 @@ export function describeActiveOverrides(config) {
63
63
  add("server", o.server);
64
64
  add("postgres_dir", o.postgres_dir);
65
65
  add("deno", o.deno);
66
+ add("realtime", o.realtime);
66
67
  add("studio", o.studio);
67
68
  add("postgrest", o.postgrest);
68
69
  return lines;
@@ -115,6 +116,7 @@ const CDN_PATHS = {
115
116
  server: (v, p) => `/server/v${v}/supatype-server-${p.os}-${p.arch}${p.os === "windows" ? ".exe" : ""}`,
116
117
  postgres: (v, p) => `/postgres/v${v}/supatype-pg-${postgresArchiveTag(v)}-${p.os}-${p.arch}${p.os === "windows" ? ".zip" : ".tar.gz"}`,
117
118
  deno: (v, p) => `/deno/v${v}/deno-${p.os}-${p.arch}${p.os === "windows" ? ".exe" : ""}`,
119
+ realtime: (v, p) => `/realtime/v${v}/supatype-realtime-${p.os}-${p.arch}${p.os === "windows" ? ".exe" : ""}`,
118
120
  };
119
121
  // Checksums file path (one per version directory, covers all platform binaries).
120
122
  const checksumsDirPath = (component, version) => `/${component}/v${version}/checksums.sha256`;
@@ -142,6 +144,7 @@ function binaryName(component, version, platform) {
142
144
  case "server": return `supatype-server-${platform.os}-${platform.arch}${win ? ".exe" : ""}`;
143
145
  case "postgres": return `supatype-pg-${postgresArchiveTag(version)}-${platform.os}-${platform.arch}${win ? ".zip" : ".tar.gz"}`;
144
146
  case "deno": return `deno-${platform.os}-${platform.arch}${win ? ".exe" : ""}`;
147
+ case "realtime": return `supatype-realtime-${platform.os}-${platform.arch}${win ? ".exe" : ""}`;
145
148
  }
146
149
  }
147
150
  // ---------------------------------------------------------------------------
@@ -496,7 +499,7 @@ async function streamToFileWithProgress(url, destPath) {
496
499
  // ---------------------------------------------------------------------------
497
500
  // SHA256 verification
498
501
  // ---------------------------------------------------------------------------
499
- const EXECUTABLE_COMPONENTS = new Set(["engine", "server", "deno"]);
502
+ const EXECUTABLE_COMPONENTS = new Set(["engine", "server", "deno", "realtime"]);
500
503
  /** True when a cached file matches expected format for the current platform. */
501
504
  function cachedArtifactLooksValid(component, filePath) {
502
505
  try {
@@ -516,7 +519,7 @@ export function validateArtifactFormat(component, filePath, platform) {
516
519
  }
517
520
  /**
518
521
  * Per-component CDN artifact shapes:
519
- * engine, server, deno — native executable (ELF / Mach-O / PE)
522
+ * engine, server, deno, realtime — native executable (ELF / Mach-O / PE)
520
523
  * postgres (unix) — .tar.gz (gzip)
521
524
  * postgres (windows) — .zip
522
525
  */
@@ -692,10 +695,22 @@ export async function fetchLatestVersion(component) {
692
695
  }
693
696
  return data.version.trim();
694
697
  }
695
- /** Fetch the latest version for all components concurrently. */
698
+ /** Fetch the latest version for all components concurrently. Missing CDN entries are omitted. */
696
699
  export async function fetchAllLatestVersions() {
697
- const results = await Promise.all(BINARY_COMPONENTS.map(async (c) => [c, await fetchLatestVersion(c)]));
698
- return Object.fromEntries(results);
700
+ const results = await Promise.all(BINARY_COMPONENTS.map(async (c) => {
701
+ try {
702
+ return [c, await fetchLatestVersion(c)];
703
+ }
704
+ catch {
705
+ return [c, undefined];
706
+ }
707
+ }));
708
+ const out = {};
709
+ for (const [c, v] of results) {
710
+ if (v)
711
+ out[c] = v;
712
+ }
713
+ return out;
699
714
  }
700
715
  // ---------------------------------------------------------------------------
701
716
  // Download all components (used by postinstall + supatype update)
@@ -706,8 +721,10 @@ export async function fetchAllLatestVersions() {
706
721
  * Fails gracefully when graceful=true (suitable for postinstall).
707
722
  */
708
723
  /**
709
- * Verify all cached binaries for the current platform (used by integration CI).
710
- * Throws if any cached component is missing or fails format checks.
724
+ * Verify cached binaries for the current platform (used by integration CI).
725
+ * Only checks components present in `versions` unpublished CDN components
726
+ * (no latest.json yet) are skipped with a log so CI can land before first release.
727
+ * Throws if a pinned component is missing from cache or fails format checks.
711
728
  */
712
729
  export function verifyCachedBinaries(versions) {
713
730
  if (!versions) {
@@ -717,7 +734,8 @@ export function verifyCachedBinaries(versions) {
717
734
  for (const component of BINARY_COMPONENTS) {
718
735
  const version = versions[component];
719
736
  if (typeof version !== "string" || version.trim() === "") {
720
- throw new Error(`[supatype] versions.${component} must be set`);
737
+ console.log(`[supatype] skipping verify for ${component} (no version — CDN latest.json not published yet)`);
738
+ continue;
721
739
  }
722
740
  const destPath = join(cachePath(component, version), binaryName(component, version, platform));
723
741
  if (!cachedArtifactLooksValid(component, destPath)) {
@@ -732,7 +750,7 @@ export async function downloadAll(versions, graceful = false) {
732
750
  const latest = await fetchAllLatestVersions();
733
751
  for (const component of components) {
734
752
  const version = versions?.[component] ?? latest[component];
735
- if (version === VERSION_PIN_LOCAL)
753
+ if (!version || version === VERSION_PIN_LOCAL)
736
754
  continue;
737
755
  try {
738
756
  await download(component, version, platform);