@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.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +99 -97
- package/.turbo/turbo-typecheck.log +1 -1
- package/dist/app-vite-env.d.ts +4 -0
- package/dist/app-vite-env.d.ts.map +1 -0
- package/dist/app-vite-env.js +22 -0
- package/dist/app-vite-env.js.map +1 -0
- package/dist/augmentation-generator.d.ts.map +1 -1
- package/dist/augmentation-generator.js +26 -4
- package/dist/augmentation-generator.js.map +1 -1
- package/dist/binary-cache.d.ts +7 -5
- package/dist/binary-cache.d.ts.map +1 -1
- package/dist/binary-cache.js +28 -10
- package/dist/binary-cache.js.map +1 -1
- package/dist/cli-standalone.d.ts +10 -0
- package/dist/cli-standalone.d.ts.map +1 -0
- package/dist/cli-standalone.js +56 -0
- package/dist/cli-standalone.js.map +1 -0
- package/dist/commands/admin.d.ts.map +1 -1
- package/dist/commands/admin.js +10 -3
- package/dist/commands/admin.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +34 -0
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +3 -1
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/keys.d.ts.map +1 -1
- package/dist/commands/keys.js +16 -0
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/self-update.d.ts +1 -1
- package/dist/commands/self-update.d.ts.map +1 -1
- package/dist/commands/self-update.js +33 -9
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +9 -1
- package/dist/commands/update.js.map +1 -1
- package/dist/components.d.ts +2 -2
- package/dist/components.d.ts.map +1 -1
- package/dist/components.js +2 -2
- package/dist/components.js.map +1 -1
- package/dist/dev-compose.d.ts.map +1 -1
- package/dist/dev-compose.js +122 -12
- package/dist/dev-compose.js.map +1 -1
- package/dist/project-config.d.ts +2 -0
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js.map +1 -1
- package/dist/realtime-launch.d.ts +11 -0
- package/dist/realtime-launch.d.ts.map +1 -0
- package/dist/realtime-launch.js +39 -0
- package/dist/realtime-launch.js.map +1 -0
- package/dist/required-host-components.js +1 -1
- package/dist/required-host-components.js.map +1 -1
- package/dist/route-manifest.d.ts +3 -0
- package/dist/route-manifest.d.ts.map +1 -0
- package/dist/route-manifest.js +15 -0
- package/dist/route-manifest.js.map +1 -0
- package/dist/schema-push-lock.d.ts +17 -0
- package/dist/schema-push-lock.d.ts.map +1 -0
- package/dist/schema-push-lock.js +106 -0
- package/dist/schema-push-lock.js.map +1 -0
- package/dist/self-host-compose.d.ts.map +1 -1
- package/dist/self-host-compose.js +18 -0
- package/dist/self-host-compose.js.map +1 -1
- package/dist/type-extractor.d.ts.map +1 -1
- package/dist/type-extractor.js +125 -13
- package/dist/type-extractor.js.map +1 -1
- package/package.json +1 -1
- package/scripts/build-release-bundle.mjs +27 -0
- package/src/app-vite-env.ts +27 -0
- package/src/augmentation-generator.ts +29 -5
- package/src/binary-cache.ts +29 -11
- package/src/cli-standalone.ts +62 -0
- package/src/commands/admin.ts +13 -3
- package/src/commands/dev.ts +38 -0
- package/src/commands/init.ts +3 -1
- package/src/commands/keys.ts +16 -0
- package/src/commands/self-update.ts +34 -13
- package/src/commands/update.ts +9 -1
- package/src/components.ts +2 -2
- package/src/dev-compose.ts +146 -14
- package/src/project-config.ts +2 -0
- package/src/realtime-launch.ts +52 -0
- package/src/required-host-components.ts +1 -1
- package/src/route-manifest.ts +17 -0
- package/src/schema-push-lock.ts +131 -0
- package/src/self-host-compose.ts +18 -0
- package/src/type-extractor.ts +156 -13
- package/tests/augmentation-generator.test.ts +44 -4
- package/tests/realtime-launch.test.ts +25 -0
- package/tests/required-host-components.test.ts +2 -0
- package/tests/route-manifest.test.ts +29 -0
- package/tests/type-extractor.test.ts +52 -0
- package/tsconfig.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @supatype/cli@0.1.
|
|
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
|
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
|
|
2
|
-
> @supatype/cli@0.1.
|
|
2
|
+
> @supatype/cli@0.1.6 test /home/runner/work/supatype/supatype/packages/cli
|
|
3
3
|
> vitest run
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
[1m[46m RUN [49m[22m [36mv4.0.18 [39m[90m/home/runner/work/supatype/supatype/packages/cli[39m
|
|
7
7
|
|
|
8
|
-
[32m✓[39m tests/type-extractor.test.ts [2m([22m[
|
|
9
|
-
[32m✓[39m tests/runtime-contract.test.ts [2m([22m[2m41 tests[22m[2m)[22m[32m
|
|
8
|
+
[32m✓[39m tests/type-extractor.test.ts [2m([22m[2m37 tests[22m[2m)[22m[33m 359[2mms[22m[39m
|
|
9
|
+
[32m✓[39m tests/runtime-contract.test.ts [2m([22m[2m41 tests[22m[2m)[22m[32m 117[2mms[22m[39m
|
|
10
10
|
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mcreates all expected files
|
|
11
11
|
[22m[39m 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
|
-
[32m✓[39m tests/init.test.ts [2m([22m[2m26 tests[22m[2m)[22m[32m
|
|
294
|
+
[32m✓[39m tests/init.test.ts [2m([22m[2m26 tests[22m[2m)[22m[32m 75[2mms[22m[39m
|
|
295
295
|
|
|
296
296
|
[32m✓[39m tests/dev-ui.test.ts [2m([22m[2m21 tests[22m[2m)[22m[32m 108[2mms[22m[39m
|
|
297
297
|
|
|
@@ -304,21 +304,19 @@
|
|
|
304
304
|
|
|
305
305
|
docker: daemon down
|
|
306
306
|
|
|
307
|
-
[32m✓[39m tests/docker-runtime.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m
|
|
308
|
-
[32m✓[39m tests/config.test.ts [2m([22m[2m19 tests[22m[2m)[22m[33m
|
|
309
|
-
[33m[2m✓[22m[39m loads a valid supatype.config.ts (plain export default, no package imports) [33m
|
|
310
|
-
[33m[2m✓[22m[39m normalizes shorthand schema string to { path, pg_schema } [33m
|
|
311
|
-
[33m[2m✓[22m[39m loads a supatype.config.js (plain ESM) [33m
|
|
312
|
-
[33m[2m✓[22m[39m loads config without a versions section (latest by default) [33m
|
|
313
|
-
[33m[2m✓[22m[39m prefers supatype.config.ts over supatype.config.js when both exist [33m
|
|
314
|
-
[33m[2m✓[22m[39m supports optional output field in config [33m
|
|
315
|
-
[33m[2m✓[22m[39m merges supatype.local.config.ts over base [33m
|
|
316
|
-
[33m[2m✓[22m[39m loads defineConfig import before @supatype/cli is installed (init scaffold) [33m
|
|
317
|
-
[32m✓[39m tests/command-chrome-coverage.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m
|
|
307
|
+
[32m✓[39m tests/docker-runtime.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 15[2mms[22m[39m
|
|
308
|
+
[32m✓[39m tests/config.test.ts [2m([22m[2m19 tests[22m[2m)[22m[33m 5676[2mms[22m[39m
|
|
309
|
+
[33m[2m✓[22m[39m loads a valid supatype.config.ts (plain export default, no package imports) [33m 614[2mms[22m[39m
|
|
310
|
+
[33m[2m✓[22m[39m normalizes shorthand schema string to { path, pg_schema } [33m 624[2mms[22m[39m
|
|
311
|
+
[33m[2m✓[22m[39m loads a supatype.config.js (plain ESM) [33m 610[2mms[22m[39m
|
|
312
|
+
[33m[2m✓[22m[39m loads config without a versions section (latest by default) [33m 536[2mms[22m[39m
|
|
313
|
+
[33m[2m✓[22m[39m prefers supatype.config.ts over supatype.config.js when both exist [33m 631[2mms[22m[39m
|
|
314
|
+
[33m[2m✓[22m[39m supports optional output field in config [33m 550[2mms[22m[39m
|
|
315
|
+
[33m[2m✓[22m[39m merges supatype.local.config.ts over base [33m 1135[2mms[22m[39m
|
|
316
|
+
[33m[2m✓[22m[39m loads defineConfig import before @supatype/cli is installed (init scaffold) [33m 964[2mms[22m[39m
|
|
317
|
+
[32m✓[39m tests/command-chrome-coverage.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 14[2mms[22m[39m
|
|
318
318
|
[90mstdout[2m | tests/link.test.ts[2m > [22m[2mlink model[2m > [22m[2mmigrates cloud.json into link.json
|
|
319
319
|
[22m[39m created package.json
|
|
320
|
-
[90mstderr[2m | tests/link.test.ts[2m > [22m[2mlink model[2m > [22m[2mmigrates cloud.json into link.json
|
|
321
|
-
[22m[39m[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
|
+
[90mstderr[2m | tests/link.test.ts[2m > [22m[2mlink model[2m > [22m[2mmigrates cloud.json into link.json
|
|
329
|
+
[22m[39m[supatype] Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
|
|
330
330
|
|
|
331
|
-
[32m✓[39m tests/link.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m
|
|
332
|
-
[33m[2m✓[22m[39m resolveTarget returns cloud mode with /api/v1 prefix [33m
|
|
333
|
-
[33m[2m✓[22m[39m resolveTarget returns self-host mode with /platform/v1 prefix [33m
|
|
334
|
-
[33m[2m✓[22m[39m targetSchemaRollback posts to /platform/v1 when linked [33m
|
|
331
|
+
[32m✓[39m tests/link.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 2999[2mms[22m[39m
|
|
332
|
+
[33m[2m✓[22m[39m resolveTarget returns cloud mode with /api/v1 prefix [33m 1046[2mms[22m[39m
|
|
333
|
+
[33m[2m✓[22m[39m resolveTarget returns self-host mode with /platform/v1 prefix [33m 986[2mms[22m[39m
|
|
334
|
+
[33m[2m✓[22m[39m targetSchemaRollback posts to /platform/v1 when linked [33m 955[2mms[22m[39m
|
|
335
335
|
[90mstdout[2m | tests/admin-ensure.test.ts[2m > [22m[2minit admin seed in .env[2m > [22m[2mwrites SUPATYPE_ADMIN_* when scaffold options include credentials
|
|
336
336
|
[22m[39m 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
|
-
[32m✓[39m tests/admin-ensure.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m
|
|
346
|
-
[32m✓[39m tests/pull-utils.test.ts [2m([22m[2m49 tests[22m[2m)[22m[32m
|
|
347
|
-
[32m✓[39m tests/schema-sources.test.ts [2m([22m[2m5 tests[22m[2m)[22m[33m
|
|
348
|
-
[33m[2m✓[22m[39m buildSchemaSourcesPayload includes manifest metadata [33m
|
|
349
|
-
[33m[2m✓[22m[39m restore overwrites modified local files [33m
|
|
345
|
+
[32m✓[39m tests/admin-ensure.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 162[2mms[22m[39m
|
|
346
|
+
[32m✓[39m tests/pull-utils.test.ts [2m([22m[2m49 tests[22m[2m)[22m[32m 10[2mms[22m[39m
|
|
347
|
+
[32m✓[39m tests/schema-sources.test.ts [2m([22m[2m5 tests[22m[2m)[22m[33m 1278[2mms[22m[39m
|
|
348
|
+
[33m[2m✓[22m[39m buildSchemaSourcesPayload includes manifest metadata [33m 639[2mms[22m[39m
|
|
349
|
+
[33m[2m✓[22m[39m restore overwrites modified local files [33m 599[2mms[22m[39m
|
|
350
350
|
[90mstderr[2m | tests/binary-cache-cloud-overrides.test.ts[2m > [22m[2misLinkedToCloudProject[2m > [22m[2mis true when .supatype/cloud.json has projectSlug
|
|
351
351
|
[22m[39m[supatype] Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
|
|
352
352
|
|
|
353
|
-
[32m✓[39m tests/binary-cache-cloud-overrides.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m
|
|
354
|
-
[32m✓[39m tests/minisign.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m
|
|
353
|
+
[32m✓[39m tests/binary-cache-cloud-overrides.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 18[2mms[22m[39m
|
|
354
|
+
[32m✓[39m tests/minisign.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 14[2mms[22m[39m
|
|
355
|
+
[32m✓[39m tests/augmentation-generator.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 18[2mms[22m[39m
|
|
355
356
|
[90mstdout[2m | tests/storage-provision.test.ts[2m > [22m[2mprovisionBuckets[2m > [22m[2mPOSTs each bucket to the storage API
|
|
356
357
|
[22m[39m[supatype] Storage bucket "photos" ready.
|
|
357
358
|
|
|
358
359
|
[90mstdout[2m | tests/storage-provision.test.ts[2m > [22m[2mprovisionBuckets[2m > [22m[2mPOSTs each bucket to the storage API
|
|
359
360
|
[22m[39m[supatype] Storage bucket "avatars" ready.
|
|
360
361
|
|
|
361
|
-
[32m✓[39m tests/storage-provision.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m
|
|
362
|
-
[32m✓[39m tests/cached-artifact-format.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m
|
|
363
|
-
[32m✓[39m tests/
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
[33m[2m✓[22m[39m
|
|
367
|
-
[33m[2m✓[22m[39m
|
|
368
|
-
[33m[2m✓[22m[39m
|
|
369
|
-
[33m[2m✓[22m[39m
|
|
370
|
-
[33m[2m✓[22m[39m
|
|
371
|
-
[33m[2m✓[22m[39m
|
|
372
|
-
[33m[2m✓[22m[39m
|
|
373
|
-
[33m[2m✓[22m[39m
|
|
374
|
-
[33m[2m✓[22m[39m
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
[32m✓[39m tests/
|
|
378
|
-
[32m✓[39m tests/
|
|
379
|
-
[32m✓[39m tests/
|
|
380
|
-
[32m✓[39m tests/
|
|
381
|
-
[32m✓[39m tests/
|
|
382
|
-
|
|
383
|
-
[33m[2m✓[22m[39m evaluates
|
|
384
|
-
[33m[2m✓[22m[39m
|
|
385
|
-
[33m[2m✓[22m[39m
|
|
386
|
-
[33m[2m✓[22m[39m returns non-zero exit code on
|
|
387
|
-
[33m[2m✓[22m[39m
|
|
388
|
-
[33m[2m✓[22m[39m
|
|
389
|
-
|
|
390
|
-
[32m✓[39m tests/init-project-detect.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 12[2mms[22m[39m
|
|
391
|
-
[32m✓[39m tests/ui-messages.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 8[2mms[22m[39m
|
|
392
|
-
[32m✓[39m tests/required-host-components.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
393
|
-
[32m✓[39m tests/normalize-admin-config.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
362
|
+
[32m✓[39m tests/storage-provision.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 11[2mms[22m[39m
|
|
363
|
+
[32m✓[39m tests/cached-artifact-format.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 11[2mms[22m[39m
|
|
364
|
+
[32m✓[39m tests/keys.test.ts [2m([22m[2m11 tests[22m[2m)[22m[33m 16492[2mms[22m[39m
|
|
365
|
+
[33m[2m✓[22m[39m exits 0 with --secret [33m 1514[2mms[22m[39m
|
|
366
|
+
[33m[2m✓[22m[39m outputs ANON_KEY= line [33m 1367[2mms[22m[39m
|
|
367
|
+
[33m[2m✓[22m[39m outputs SERVICE_ROLE_KEY= line [33m 1427[2mms[22m[39m
|
|
368
|
+
[33m[2m✓[22m[39m ANON_KEY is a valid three-part JWT [33m 1377[2mms[22m[39m
|
|
369
|
+
[33m[2m✓[22m[39m SERVICE_ROLE_KEY payload has role: service_role [33m 1329[2mms[22m[39m
|
|
370
|
+
[33m[2m✓[22m[39m JWT has exp in the future [33m 1352[2mms[22m[39m
|
|
371
|
+
[33m[2m✓[22m[39m --exp-years changes the expiry window [33m 2769[2mms[22m[39m
|
|
372
|
+
[33m[2m✓[22m[39m reads JWT_SECRET from environment variable [33m 1331[2mms[22m[39m
|
|
373
|
+
[33m[2m✓[22m[39m reads JWT_SECRET from .env file [33m 1328[2mms[22m[39m
|
|
374
|
+
[33m[2m✓[22m[39m exits non-zero when no secret is available [33m 1410[2mms[22m[39m
|
|
375
|
+
[33m[2m✓[22m[39m keys --help shows --secret and --exp-years options [33m 1280[2mms[22m[39m
|
|
376
|
+
[32m✓[39m tests/proxy-dev-app.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
377
|
+
[32m✓[39m tests/init-dependency-versions.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 66[2mms[22m[39m
|
|
378
|
+
[32m✓[39m tests/type-resolver.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 14[2mms[22m[39m
|
|
379
|
+
[32m✓[39m tests/engine-push-output.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 9[2mms[22m[39m
|
|
380
|
+
[32m✓[39m tests/command-chrome-wrap.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
381
|
+
[32m✓[39m tests/ensure-binary.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 12[2mms[22m[39m
|
|
382
|
+
[32m✓[39m tests/init-project-detect.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 11[2mms[22m[39m
|
|
383
|
+
[32m✓[39m tests/tsx-runner.test.ts [2m([22m[2m7 tests[22m[2m)[22m[33m 3126[2mms[22m[39m
|
|
384
|
+
[33m[2m✓[22m[39m evaluates a simple expression and returns stdout [33m 437[2mms[22m[39m
|
|
385
|
+
[33m[2m✓[22m[39m evaluates TypeScript syntax (type annotations) [33m 386[2mms[22m[39m
|
|
386
|
+
[33m[2m✓[22m[39m can serialize a JSON object to stdout [33m 433[2mms[22m[39m
|
|
387
|
+
[33m[2m✓[22m[39m returns non-zero exit code on syntax error [33m 451[2mms[22m[39m
|
|
388
|
+
[33m[2m✓[22m[39m returns non-zero exit code on runtime error [33m 380[2mms[22m[39m
|
|
389
|
+
[33m[2m✓[22m[39m captures stderr separately from stdout [33m 453[2mms[22m[39m
|
|
390
|
+
[33m[2m✓[22m[39m runs a .ts file and returns its stdout [33m 581[2mms[22m[39m
|
|
394
391
|
[90mstdout[2m | tests/app-command.test.ts[2m > [22m[2msupatype app add --static[2m > [22m[2msets app.mode=static and static_dir in supatype.config.ts
|
|
395
392
|
[22m[39m 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
|
-
[32m✓[39m tests/
|
|
405
|
-
[32m✓[39m tests/ui-
|
|
406
|
-
[32m✓[39m tests/
|
|
407
|
-
[32m✓[39m tests/
|
|
401
|
+
[32m✓[39m tests/required-host-components.test.ts [2m([22m[2m4 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
402
|
+
[32m✓[39m tests/ui-messages.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
403
|
+
[32m✓[39m tests/normalize-admin-config.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
404
|
+
[32m✓[39m tests/dev-session-lock.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
405
|
+
[32m✓[39m tests/ui-confirm.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 9[2mms[22m[39m
|
|
408
406
|
[90mstdout[2m | tests/app-command.test.ts[2m > [22m[2msupatype app add --static[2m > [22m[2mcreates the static directory when missing
|
|
409
407
|
[22m[39m 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
|
-
[32m✓[39m tests/
|
|
419
|
-
[32m✓[39m tests/
|
|
420
|
-
|
|
421
|
-
[33m[2m✓[22m[39m --
|
|
422
|
-
[33m[2m✓[22m[39m
|
|
423
|
-
[33m[2m✓[22m[39m
|
|
424
|
-
[33m[2m✓[22m[39m
|
|
425
|
-
[33m[2m✓[22m[39m
|
|
426
|
-
[33m[2m✓[22m[39m
|
|
427
|
-
[33m[2m✓[22m[39m
|
|
428
|
-
[33m[2m✓[22m[39m
|
|
429
|
-
[33m[2m✓[22m[39m
|
|
430
|
-
[33m[2m✓[22m[39m
|
|
431
|
-
[33m[2m✓[22m[39m
|
|
432
|
-
[33m[2m✓[22m[39m app
|
|
433
|
-
[33m[2m✓[22m[39m
|
|
434
|
-
[33m[2m✓[22m[39m self-host
|
|
435
|
-
[33m[2m✓[22m[39m
|
|
416
|
+
[32m✓[39m tests/docker-postgres.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
417
|
+
[32m✓[39m tests/binary-download-lock.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
418
|
+
[32m✓[39m tests/cli-help.test.ts [2m([22m[2m16 tests[22m[2m)[22m[33m 21740[2mms[22m[39m
|
|
419
|
+
[33m[2m✓[22m[39m --help lists all top-level commands [33m 1404[2mms[22m[39m
|
|
420
|
+
[33m[2m✓[22m[39m --version prints package.json version [33m 1351[2mms[22m[39m
|
|
421
|
+
[33m[2m✓[22m[39m self-update --help describes the command [33m 1453[2mms[22m[39m
|
|
422
|
+
[33m[2m✓[22m[39m init --help describes the init command [33m 1404[2mms[22m[39m
|
|
423
|
+
[33m[2m✓[22m[39m push --help describes the push command and --yes flag [33m 1298[2mms[22m[39m
|
|
424
|
+
[33m[2m✓[22m[39m diff --help describes the diff command [33m 1321[2mms[22m[39m
|
|
425
|
+
[33m[2m✓[22m[39m pull --help describes scaffold pull command [33m 1347[2mms[22m[39m
|
|
426
|
+
[33m[2m✓[22m[39m doctor --help describes drift report command [33m 1376[2mms[22m[39m
|
|
427
|
+
[33m[2m✓[22m[39m introspect --help describes database introspection command [33m 1378[2mms[22m[39m
|
|
428
|
+
[33m[2m✓[22m[39m adopt --help describes adoption ceremony command [33m 1256[2mms[22m[39m
|
|
429
|
+
[33m[2m✓[22m[39m reset --help shows --yes flag [33m 1394[2mms[22m[39m
|
|
430
|
+
[33m[2m✓[22m[39m app --help describes the app command with add/remove subcommands [33m 1296[2mms[22m[39m
|
|
431
|
+
[33m[2m✓[22m[39m app add --help shows --static and --port options [33m 1311[2mms[22m[39m
|
|
432
|
+
[33m[2m✓[22m[39m self-host --help shows compose only (legacy commands hidden) [33m 1411[2mms[22m[39m
|
|
433
|
+
[33m[2m✓[22m[39m self-host compose --help shows compose subcommands [33m 1405[2mms[22m[39m
|
|
434
|
+
[33m[2m✓[22m[39m unknown command exits non-zero [33m 1327[2mms[22m[39m
|
|
435
|
+
[32m✓[39m tests/dev-ports.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
436
436
|
[32m✓[39m tests/dev-ready-panel.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
437
|
+
[32m✓[39m tests/route-manifest.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
438
|
+
[32m✓[39m tests/app-command.test.ts [2m([22m[2m2 tests[22m[2m)[22m[33m 2862[2mms[22m[39m
|
|
439
|
+
[33m[2m✓[22m[39m sets app.mode=static and static_dir in supatype.config.ts [33m 1426[2mms[22m[39m
|
|
440
|
+
[33m[2m✓[22m[39m creates the static directory when missing [33m 1433[2mms[22m[39m
|
|
437
441
|
[32m✓[39m tests/studio-admin-roles.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
438
|
-
[32m✓[39m tests/
|
|
439
|
-
[32m✓[39m tests/
|
|
440
|
-
[32m✓[39m tests/app-command.test.ts [2m([22m[2m2 tests[22m[2m)[22m[33m 2875[2mms[22m[39m
|
|
441
|
-
[33m[2m✓[22m[39m sets app.mode=static and static_dir in supatype.config.ts [33m 1454[2mms[22m[39m
|
|
442
|
-
[33m[2m✓[22m[39m creates the static directory when missing [33m 1419[2mms[22m[39m
|
|
442
|
+
[32m✓[39m tests/realtime-launch.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
443
|
+
[32m✓[39m tests/release-pins.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
443
444
|
[32m✓[39m tests/ensure-dev-api-config.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
444
|
-
[32m✓[39m tests/
|
|
445
|
-
[32m✓[39m tests/
|
|
445
|
+
[32m✓[39m tests/seed-discover.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 17[2mms[22m[39m
|
|
446
|
+
[32m✓[39m tests/rest-cache-admin.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 38[2mms[22m[39m
|
|
446
447
|
[32m✓[39m tests/resolve-api-url.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
447
|
-
[32m✓[39m tests/
|
|
448
|
-
[32m✓[39m tests/migrate-from-v1.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m
|
|
449
|
-
[32m✓[39m tests/
|
|
448
|
+
[32m✓[39m tests/init-package-json.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
449
|
+
[32m✓[39m tests/migrate-from-v1.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 15[2mms[22m[39m
|
|
450
|
+
[32m✓[39m tests/pg-spawn-env.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
451
|
+
[32m✓[39m tests/cli-package-version.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 2[2mms[22m[39m
|
|
450
452
|
[32m✓[39m tests/postgres-archive-tag.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 2[2mms[22m[39m
|
|
451
453
|
[32m✓[39m tests/stdin-after-ink.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
452
454
|
|
|
453
|
-
[2m Test Files [22m [1m[
|
|
454
|
-
[2m Tests [22m [1m[
|
|
455
|
-
[2m Start at [22m
|
|
456
|
-
[2m Duration [22m
|
|
455
|
+
[2m Test Files [22m [1m[32m50 passed[39m[22m[90m (50)[39m
|
|
456
|
+
[2m Tests [22m [1m[32m369 passed[39m[22m[90m (369)[39m
|
|
457
|
+
[2m Start at [22m 19:08:23
|
|
458
|
+
[2m Duration [22m 29.59s[2m (transform 5.28s, setup 0ms, import 23.25s, tests 55.39s, environment 14ms)[22m
|
|
457
459
|
|
|
@@ -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":"
|
|
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 ?? [])]
|
|
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(
|
|
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
|
|
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":"
|
|
1
|
+
{"version":3,"file":"augmentation-generator.js","sourceRoot":"","sources":["../src/augmentation-generator.ts"],"names":[],"mappings":"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"}
|
package/dist/binary-cache.d.ts
CHANGED
|
@@ -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
|
|
104
|
-
*
|
|
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":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAoBH,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAUhE;;;GAGG;AACH,eAAO,MAAM,iBAAiB,UAAU,CAAA;AAExC,oFAAoF;AACpF,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAGxE;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAGxE;AAED,yFAAyF;AACzF,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAO7E;AAED,kEAAkE;AAClE,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"binary-cache.d.ts","sourceRoot":"","sources":["../src/binary-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/binary-cache.js
CHANGED
|
@@ -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) =>
|
|
698
|
-
|
|
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
|
|
710
|
-
*
|
|
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
|
-
|
|
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);
|