@supatype/cli 0.1.0-alpha.10
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 +4 -0
- package/.turbo/turbo-test.log +221 -0
- package/.turbo/turbo-typecheck.log +4 -0
- package/assets/supatype-logo-wordmark.ascii.txt +6 -0
- package/bin/dev-entry.ts +2 -0
- package/bin/supatype.js +5 -0
- package/dist/app/framework.d.ts +44 -0
- package/dist/app/framework.d.ts.map +1 -0
- package/dist/app/framework.js +200 -0
- package/dist/app/framework.js.map +1 -0
- package/dist/app/proxy-dev-app.d.ts +13 -0
- package/dist/app/proxy-dev-app.d.ts.map +1 -0
- package/dist/app/proxy-dev-app.js +54 -0
- package/dist/app/proxy-dev-app.js.map +1 -0
- package/dist/app-config.d.ts +7 -0
- package/dist/app-config.d.ts.map +1 -0
- package/dist/app-config.js +113 -0
- package/dist/app-config.js.map +1 -0
- package/dist/assets/supatype-logo-wordmark.ascii.txt +6 -0
- package/dist/augmentation-generator.d.ts +2 -0
- package/dist/augmentation-generator.d.ts.map +1 -0
- package/dist/augmentation-generator.js +111 -0
- package/dist/augmentation-generator.js.map +1 -0
- package/dist/binary-cache.d.ts +98 -0
- package/dist/binary-cache.d.ts.map +1 -0
- package/dist/binary-cache.js +687 -0
- package/dist/binary-cache.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +61 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/admin.d.ts +4 -0
- package/dist/commands/admin.d.ts.map +1 -0
- package/dist/commands/admin.js +271 -0
- package/dist/commands/admin.js.map +1 -0
- package/dist/commands/app.d.ts +3 -0
- package/dist/commands/app.d.ts.map +1 -0
- package/dist/commands/app.js +82 -0
- package/dist/commands/app.js.map +1 -0
- package/dist/commands/cache.d.ts +6 -0
- package/dist/commands/cache.d.ts.map +1 -0
- package/dist/commands/cache.js +105 -0
- package/dist/commands/cache.js.map +1 -0
- package/dist/commands/cloud.d.ts +23 -0
- package/dist/commands/cloud.d.ts.map +1 -0
- package/dist/commands/cloud.js +254 -0
- package/dist/commands/cloud.js.map +1 -0
- package/dist/commands/db.d.ts +8 -0
- package/dist/commands/db.d.ts.map +1 -0
- package/dist/commands/db.js +116 -0
- package/dist/commands/db.js.map +1 -0
- package/dist/commands/deploy-types.d.ts +14 -0
- package/dist/commands/deploy-types.d.ts.map +1 -0
- package/dist/commands/deploy-types.js +38 -0
- package/dist/commands/deploy-types.js.map +1 -0
- package/dist/commands/deploy.d.ts +15 -0
- package/dist/commands/deploy.d.ts.map +1 -0
- package/dist/commands/deploy.js +322 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/dev.d.ts +14 -0
- package/dist/commands/dev.d.ts.map +1 -0
- package/dist/commands/dev.js +806 -0
- package/dist/commands/dev.js.map +1 -0
- package/dist/commands/diff.d.ts +3 -0
- package/dist/commands/diff.d.ts.map +1 -0
- package/dist/commands/diff.js +54 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/engine.d.ts +7 -0
- package/dist/commands/engine.d.ts.map +1 -0
- package/dist/commands/engine.js +27 -0
- package/dist/commands/engine.js.map +1 -0
- package/dist/commands/functions.d.ts +3 -0
- package/dist/commands/functions.d.ts.map +1 -0
- package/dist/commands/functions.js +749 -0
- package/dist/commands/functions.js.map +1 -0
- package/dist/commands/generate.d.ts +3 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +38 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/init.d.ts +7 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +228 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/keys.d.ts +4 -0
- package/dist/commands/keys.d.ts.map +1 -0
- package/dist/commands/keys.js +57 -0
- package/dist/commands/keys.js.map +1 -0
- package/dist/commands/logs.d.ts +6 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +52 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/migrate-from-v1.d.ts +5 -0
- package/dist/commands/migrate-from-v1.d.ts.map +1 -0
- package/dist/commands/migrate-from-v1.js +125 -0
- package/dist/commands/migrate-from-v1.js.map +1 -0
- package/dist/commands/migrate.d.ts +3 -0
- package/dist/commands/migrate.d.ts.map +1 -0
- package/dist/commands/migrate.js +75 -0
- package/dist/commands/migrate.js.map +1 -0
- package/dist/commands/pg.d.ts +8 -0
- package/dist/commands/pg.d.ts.map +1 -0
- package/dist/commands/pg.js +102 -0
- package/dist/commands/pg.js.map +1 -0
- package/dist/commands/plugins.d.ts +3 -0
- package/dist/commands/plugins.d.ts.map +1 -0
- package/dist/commands/plugins.js +431 -0
- package/dist/commands/plugins.js.map +1 -0
- package/dist/commands/pull.d.ts +3 -0
- package/dist/commands/pull.d.ts.map +1 -0
- package/dist/commands/pull.js +12 -0
- package/dist/commands/pull.js.map +1 -0
- package/dist/commands/push.d.ts +3 -0
- package/dist/commands/push.d.ts.map +1 -0
- package/dist/commands/push.js +179 -0
- package/dist/commands/push.js.map +1 -0
- package/dist/commands/seed.d.ts +5 -0
- package/dist/commands/seed.d.ts.map +1 -0
- package/dist/commands/seed.js +55 -0
- package/dist/commands/seed.js.map +1 -0
- package/dist/commands/self-host.d.ts +9 -0
- package/dist/commands/self-host.d.ts.map +1 -0
- package/dist/commands/self-host.js +310 -0
- package/dist/commands/self-host.js.map +1 -0
- package/dist/commands/self-update.d.ts +9 -0
- package/dist/commands/self-update.d.ts.map +1 -0
- package/dist/commands/self-update.js +33 -0
- package/dist/commands/self-update.js.map +1 -0
- package/dist/commands/status.d.ts +6 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +70 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/types.d.ts +3 -0
- package/dist/commands/types.d.ts.map +1 -0
- package/dist/commands/types.js +62 -0
- package/dist/commands/types.js.map +1 -0
- package/dist/commands/update.d.ts +7 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +118 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/components.d.ts +5 -0
- package/dist/components.d.ts.map +1 -0
- package/dist/components.js +3 -0
- package/dist/components.js.map +1 -0
- package/dist/config.d.ts +65 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +134 -0
- package/dist/config.js.map +1 -0
- package/dist/dev-compose.d.ts +19 -0
- package/dist/dev-compose.d.ts.map +1 -0
- package/dist/dev-compose.js +468 -0
- package/dist/dev-compose.js.map +1 -0
- package/dist/dev-log-bus.d.ts +30 -0
- package/dist/dev-log-bus.d.ts.map +1 -0
- package/dist/dev-log-bus.js +87 -0
- package/dist/dev-log-bus.js.map +1 -0
- package/dist/dev-log-filter.d.ts +10 -0
- package/dist/dev-log-filter.d.ts.map +1 -0
- package/dist/dev-log-filter.js +36 -0
- package/dist/dev-log-filter.js.map +1 -0
- package/dist/dev-logo.d.ts +12 -0
- package/dist/dev-logo.d.ts.map +1 -0
- package/dist/dev-logo.js +57 -0
- package/dist/dev-logo.js.map +1 -0
- package/dist/dev-session.d.ts +26 -0
- package/dist/dev-session.d.ts.map +1 -0
- package/dist/dev-session.js +106 -0
- package/dist/dev-session.js.map +1 -0
- package/dist/dev-shutdown.d.ts +9 -0
- package/dist/dev-shutdown.d.ts.map +1 -0
- package/dist/dev-shutdown.js +50 -0
- package/dist/dev-shutdown.js.map +1 -0
- package/dist/dev-task-colors.d.ts +14 -0
- package/dist/dev-task-colors.d.ts.map +1 -0
- package/dist/dev-task-colors.js +44 -0
- package/dist/dev-task-colors.js.map +1 -0
- package/dist/dev-tui.d.ts +24 -0
- package/dist/dev-tui.d.ts.map +1 -0
- package/dist/dev-tui.js +188 -0
- package/dist/dev-tui.js.map +1 -0
- package/dist/diff-output.d.ts +4 -0
- package/dist/diff-output.d.ts.map +1 -0
- package/dist/diff-output.js +12 -0
- package/dist/diff-output.js.map +1 -0
- package/dist/docker-postgres.d.ts +57 -0
- package/dist/docker-postgres.d.ts.map +1 -0
- package/dist/docker-postgres.js +208 -0
- package/dist/docker-postgres.js.map +1 -0
- package/dist/engine-client.d.ts +69 -0
- package/dist/engine-client.d.ts.map +1 -0
- package/dist/engine-client.js +157 -0
- package/dist/engine-client.js.map +1 -0
- package/dist/engine-push-output.d.ts +16 -0
- package/dist/engine-push-output.d.ts.map +1 -0
- package/dist/engine-push-output.js +61 -0
- package/dist/engine-push-output.js.map +1 -0
- package/dist/ensure-binary.d.ts +7 -0
- package/dist/ensure-binary.d.ts.map +1 -0
- package/dist/ensure-binary.js +17 -0
- package/dist/ensure-binary.js.map +1 -0
- package/dist/functions-router-gen.d.ts +14 -0
- package/dist/functions-router-gen.d.ts.map +1 -0
- package/dist/functions-router-gen.js +199 -0
- package/dist/functions-router-gen.js.map +1 -0
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +9 -0
- package/dist/index.js.map +1 -0
- package/dist/jwt.d.ts +3 -0
- package/dist/jwt.d.ts.map +1 -0
- package/dist/jwt.js +13 -0
- package/dist/jwt.js.map +1 -0
- package/dist/kong-config.d.ts +25 -0
- package/dist/kong-config.d.ts.map +1 -0
- package/dist/kong-config.js +71 -0
- package/dist/kong-config.js.map +1 -0
- package/dist/local-gateway.d.ts +7 -0
- package/dist/local-gateway.d.ts.map +1 -0
- package/dist/local-gateway.js +9 -0
- package/dist/local-gateway.js.map +1 -0
- package/dist/local-storage.d.ts +8 -0
- package/dist/local-storage.d.ts.map +1 -0
- package/dist/local-storage.js +14 -0
- package/dist/local-storage.js.map +1 -0
- package/dist/pgbouncer-userlist.d.ts +5 -0
- package/dist/pgbouncer-userlist.d.ts.map +1 -0
- package/dist/pgbouncer-userlist.js +14 -0
- package/dist/pgbouncer-userlist.js.map +1 -0
- package/dist/postgres-ctl.d.ts +44 -0
- package/dist/postgres-ctl.d.ts.map +1 -0
- package/dist/postgres-ctl.js +137 -0
- package/dist/postgres-ctl.js.map +1 -0
- package/dist/process-manager.d.ts +49 -0
- package/dist/process-manager.d.ts.map +1 -0
- package/dist/process-manager.js +177 -0
- package/dist/process-manager.js.map +1 -0
- package/dist/project-config.d.ts +238 -0
- package/dist/project-config.d.ts.map +1 -0
- package/dist/project-config.js +159 -0
- package/dist/project-config.js.map +1 -0
- package/dist/pull-utils.d.ts +31 -0
- package/dist/pull-utils.d.ts.map +1 -0
- package/dist/pull-utils.js +77 -0
- package/dist/pull-utils.js.map +1 -0
- package/dist/release-pins.d.ts +7 -0
- package/dist/release-pins.d.ts.map +1 -0
- package/dist/release-pins.js +27 -0
- package/dist/release-pins.js.map +1 -0
- package/dist/release-public-key.d.ts +8 -0
- package/dist/release-public-key.d.ts.map +1 -0
- package/dist/release-public-key.js +13 -0
- package/dist/release-public-key.js.map +1 -0
- package/dist/restore-system-relation-targets.d.ts +3 -0
- package/dist/restore-system-relation-targets.d.ts.map +1 -0
- package/dist/restore-system-relation-targets.js +45 -0
- package/dist/restore-system-relation-targets.js.map +1 -0
- package/dist/runtime-routes.d.ts +34 -0
- package/dist/runtime-routes.d.ts.map +1 -0
- package/dist/runtime-routes.js +252 -0
- package/dist/runtime-routes.js.map +1 -0
- package/dist/schema-ast-v2.d.ts +127 -0
- package/dist/schema-ast-v2.d.ts.map +1 -0
- package/dist/schema-ast-v2.js +226 -0
- package/dist/schema-ast-v2.js.map +1 -0
- package/dist/scripts/postinstall.d.ts +11 -0
- package/dist/scripts/postinstall.d.ts.map +1 -0
- package/dist/scripts/postinstall.js +47 -0
- package/dist/scripts/postinstall.js.map +1 -0
- package/dist/seed.d.ts +8 -0
- package/dist/seed.d.ts.map +1 -0
- package/dist/seed.js +32 -0
- package/dist/seed.js.map +1 -0
- package/dist/self-host-compose.d.ts +43 -0
- package/dist/self-host-compose.d.ts.map +1 -0
- package/dist/self-host-compose.js +400 -0
- package/dist/self-host-compose.js.map +1 -0
- package/dist/storage-provision.d.ts +24 -0
- package/dist/storage-provision.d.ts.map +1 -0
- package/dist/storage-provision.js +44 -0
- package/dist/storage-provision.js.map +1 -0
- package/dist/studio-admin-roles.d.ts +7 -0
- package/dist/studio-admin-roles.d.ts.map +1 -0
- package/dist/studio-admin-roles.js +14 -0
- package/dist/studio-admin-roles.js.map +1 -0
- package/dist/studio-dev-server.d.ts +22 -0
- package/dist/studio-dev-server.d.ts.map +1 -0
- package/dist/studio-dev-server.js +28 -0
- package/dist/studio-dev-server.js.map +1 -0
- package/dist/supatype-eval-1781522769253.d.mts +2 -0
- package/dist/supatype-eval-1781522769253.d.mts.map +1 -0
- package/dist/supatype-eval-1781522769253.mjs +3 -0
- package/dist/supatype-eval-1781522769253.mjs.map +1 -0
- package/dist/systemd.d.ts +26 -0
- package/dist/systemd.d.ts.map +1 -0
- package/dist/systemd.js +102 -0
- package/dist/systemd.js.map +1 -0
- package/dist/tsx-runner.d.ts +18 -0
- package/dist/tsx-runner.d.ts.map +1 -0
- package/dist/tsx-runner.js +69 -0
- package/dist/tsx-runner.js.map +1 -0
- package/dist/type-extractor.d.ts +4 -0
- package/dist/type-extractor.d.ts.map +1 -0
- package/dist/type-extractor.js +1213 -0
- package/dist/type-extractor.js.map +1 -0
- package/dist/type-resolver.d.ts +33 -0
- package/dist/type-resolver.d.ts.map +1 -0
- package/dist/type-resolver.js +338 -0
- package/dist/type-resolver.js.map +1 -0
- package/package.json +41 -0
- package/releases/deno/VERSION +1 -0
- package/scripts/mirror-deno-release.sh +76 -0
- package/src/TYPE-RESOLUTION.md +294 -0
- package/src/app/framework.ts +249 -0
- package/src/app/proxy-dev-app.ts +68 -0
- package/src/app-config.ts +128 -0
- package/src/augmentation-generator.ts +126 -0
- package/src/binary-cache.ts +845 -0
- package/src/cli.ts +63 -0
- package/src/commands/admin.ts +372 -0
- package/src/commands/app.ts +97 -0
- package/src/commands/cache.ts +117 -0
- package/src/commands/cloud.ts +325 -0
- package/src/commands/db.ts +136 -0
- package/src/commands/deploy-types.ts +49 -0
- package/src/commands/deploy.ts +400 -0
- package/src/commands/dev.ts +1009 -0
- package/src/commands/diff.ts +63 -0
- package/src/commands/engine.ts +30 -0
- package/src/commands/functions.ts +901 -0
- package/src/commands/generate.ts +44 -0
- package/src/commands/init.ts +253 -0
- package/src/commands/keys.ts +66 -0
- package/src/commands/logs.ts +58 -0
- package/src/commands/migrate-from-v1.ts +131 -0
- package/src/commands/migrate.ts +87 -0
- package/src/commands/pg.ts +133 -0
- package/src/commands/plugins.ts +508 -0
- package/src/commands/pull.ts +17 -0
- package/src/commands/push.ts +226 -0
- package/src/commands/seed.ts +68 -0
- package/src/commands/self-host.ts +364 -0
- package/src/commands/self-update.ts +45 -0
- package/src/commands/status.ts +84 -0
- package/src/commands/types.ts +76 -0
- package/src/commands/update.ts +136 -0
- package/src/components.ts +6 -0
- package/src/config.ts +223 -0
- package/src/dev-compose.ts +583 -0
- package/src/dev-log-bus.ts +101 -0
- package/src/dev-log-filter.ts +32 -0
- package/src/dev-logo.ts +62 -0
- package/src/dev-session.ts +130 -0
- package/src/dev-shutdown.ts +54 -0
- package/src/dev-task-colors.ts +47 -0
- package/src/dev-tui.ts +232 -0
- package/src/diff-output.ts +12 -0
- package/src/docker-postgres.ts +295 -0
- package/src/engine-client.ts +236 -0
- package/src/engine-push-output.ts +71 -0
- package/src/ensure-binary.ts +28 -0
- package/src/functions-router-gen.ts +224 -0
- package/src/index.ts +11 -0
- package/src/jwt.ts +14 -0
- package/src/kong-config.ts +93 -0
- package/src/local-gateway.ts +9 -0
- package/src/local-storage.ts +14 -0
- package/src/pgbouncer-userlist.ts +15 -0
- package/src/postgres-ctl.ts +171 -0
- package/src/process-manager.ts +220 -0
- package/src/project-config.ts +388 -0
- package/src/pull-utils.ts +81 -0
- package/src/release-pins.ts +31 -0
- package/src/release-public-key.ts +12 -0
- package/src/restore-system-relation-targets.ts +45 -0
- package/src/runtime-routes.ts +291 -0
- package/src/schema-ast-v2.ts +324 -0
- package/src/scripts/postinstall.ts +51 -0
- package/src/seed.ts +43 -0
- package/src/self-host-compose.ts +452 -0
- package/src/storage-provision.ts +58 -0
- package/src/studio-admin-roles.ts +16 -0
- package/src/studio-dev-server.ts +53 -0
- package/src/supatype-eval-1781522769253.mts +1 -0
- package/src/systemd.ts +137 -0
- package/src/tsx-runner.ts +89 -0
- package/src/type-extractor.ts +1479 -0
- package/src/type-resolver.ts +457 -0
- package/tests/app-command.test.ts +54 -0
- package/tests/augmentation-generator.test.ts +59 -0
- package/tests/binary-cache-cloud-overrides.test.ts +123 -0
- package/tests/cached-artifact-format.test.ts +84 -0
- package/tests/cli-help.test.ts +133 -0
- package/tests/config.test.ts +252 -0
- package/tests/dev-ui.test.ts +139 -0
- package/tests/docker-postgres.test.ts +39 -0
- package/tests/engine-distribution.test.ts +418 -0
- package/tests/engine-push-output.test.ts +67 -0
- package/tests/ensure-binary.test.ts +59 -0
- package/tests/init.test.ts +127 -0
- package/tests/keys.test.ts +160 -0
- package/tests/migrate-from-v1.test.ts +29 -0
- package/tests/normalize-admin-config.test.ts +48 -0
- package/tests/pg-spawn-env.test.ts +18 -0
- package/tests/postgres-archive-tag.test.ts +9 -0
- package/tests/proxy-dev-app.test.ts +33 -0
- package/tests/pull-utils.test.ts +150 -0
- package/tests/release-pins.test.ts +28 -0
- package/tests/runtime-contract.test.ts +370 -0
- package/tests/seed-discover.test.ts +31 -0
- package/tests/studio-admin-roles.test.ts +27 -0
- package/tests/tsconfig.json +9 -0
- package/tests/tsx-runner.test.ts +66 -0
- package/tests/type-extractor.test.ts +985 -0
- package/tests/type-resolver.test.ts +59 -0
- package/tsconfig.json +10 -0
- package/tsconfig.tsbuildinfo +1 -0
- package/vitest.config.ts +12 -0
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
|
|
2
|
+
> @supatype/cli@0.1.0-alpha.10 build /home/runner/work/supatype/supatype/packages/cli
|
|
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
|
+
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
|
|
2
|
+
> @supatype/cli@0.1.0-alpha.10 test /home/runner/work/supatype/supatype/packages/cli
|
|
3
|
+
> vitest run
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
[1m[46m RUN [49m[22m [36mv4.0.18 [39m[90m/home/runner/work/supatype/supatype/packages/cli[39m
|
|
7
|
+
|
|
8
|
+
[32m✓[39m tests/type-extractor.test.ts [2m([22m[2m34 tests[22m[2m)[22m[32m 160[2mms[22m[39m
|
|
9
|
+
[32m✓[39m tests/runtime-contract.test.ts [2m([22m[2m29 tests[22m[2m)[22m[32m 138[2mms[22m[39m
|
|
10
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mcreates all expected files
|
|
11
|
+
[22m[39m created package.json
|
|
12
|
+
created supatype.config.ts
|
|
13
|
+
created schema/index.ts
|
|
14
|
+
created .env
|
|
15
|
+
created seed.ts
|
|
16
|
+
created seeds/.gitkeep
|
|
17
|
+
created public/.gitkeep
|
|
18
|
+
created .gitignore
|
|
19
|
+
|
|
20
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2msupatype.config.ts embeds the project name and exports defineConfig
|
|
21
|
+
[22m[39m created package.json
|
|
22
|
+
created supatype.config.ts
|
|
23
|
+
created schema/index.ts
|
|
24
|
+
created .env
|
|
25
|
+
created seed.ts
|
|
26
|
+
created seeds/.gitkeep
|
|
27
|
+
created public/.gitkeep
|
|
28
|
+
created .gitignore
|
|
29
|
+
|
|
30
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mpackage.json includes @supatype/cli and @supatype/types
|
|
31
|
+
[22m[39m created package.json
|
|
32
|
+
created supatype.config.ts
|
|
33
|
+
created schema/index.ts
|
|
34
|
+
created .env
|
|
35
|
+
created seed.ts
|
|
36
|
+
created seeds/.gitkeep
|
|
37
|
+
created public/.gitkeep
|
|
38
|
+
created .gitignore
|
|
39
|
+
|
|
40
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mskips package.json when it already exists
|
|
41
|
+
[22m[39m skipped package.json (already exists)
|
|
42
|
+
created supatype.config.ts
|
|
43
|
+
created schema/index.ts
|
|
44
|
+
created .env
|
|
45
|
+
created seed.ts
|
|
46
|
+
created seeds/.gitkeep
|
|
47
|
+
created public/.gitkeep
|
|
48
|
+
created .gitignore
|
|
49
|
+
|
|
50
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2msupatype.config.ts documents self-host workflow
|
|
51
|
+
[22m[39m created package.json
|
|
52
|
+
created supatype.config.ts
|
|
53
|
+
created schema/index.ts
|
|
54
|
+
created .env
|
|
55
|
+
created seed.ts
|
|
56
|
+
created seeds/.gitkeep
|
|
57
|
+
created public/.gitkeep
|
|
58
|
+
created .gitignore
|
|
59
|
+
|
|
60
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2m.env contains DATABASE_URL, JWT_SECRET, POSTGRES_USER, POSTGRES_PASSWORD, POSTGRES_DB
|
|
61
|
+
[22m[39m created package.json
|
|
62
|
+
created supatype.config.ts
|
|
63
|
+
created schema/index.ts
|
|
64
|
+
created .env
|
|
65
|
+
created seed.ts
|
|
66
|
+
created seeds/.gitkeep
|
|
67
|
+
created public/.gitkeep
|
|
68
|
+
created .gitignore
|
|
69
|
+
|
|
70
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2m.env contains ANON_KEY, SERVICE_ROLE_KEY, and SITE_URL placeholders
|
|
71
|
+
[22m[39m created package.json
|
|
72
|
+
created supatype.config.ts
|
|
73
|
+
created schema/index.ts
|
|
74
|
+
created .env
|
|
75
|
+
created seed.ts
|
|
76
|
+
created seeds/.gitkeep
|
|
77
|
+
created public/.gitkeep
|
|
78
|
+
created .gitignore
|
|
79
|
+
|
|
80
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mschema/index.ts exports a User model using RFC v2 Model<>
|
|
81
|
+
[22m[39m created package.json
|
|
82
|
+
created supatype.config.ts
|
|
83
|
+
created schema/index.ts
|
|
84
|
+
created .env
|
|
85
|
+
created seed.ts
|
|
86
|
+
created seeds/.gitkeep
|
|
87
|
+
created public/.gitkeep
|
|
88
|
+
created .gitignore
|
|
89
|
+
|
|
90
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2m.gitignore excludes .env, node_modules, and engine binary
|
|
91
|
+
[22m[39m created package.json
|
|
92
|
+
created supatype.config.ts
|
|
93
|
+
created schema/index.ts
|
|
94
|
+
created .env
|
|
95
|
+
created seed.ts
|
|
96
|
+
created seeds/.gitkeep
|
|
97
|
+
created public/.gitkeep
|
|
98
|
+
created .gitignore
|
|
99
|
+
|
|
100
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mseed.ts references the project name
|
|
101
|
+
[22m[39m created package.json
|
|
102
|
+
created supatype.config.ts
|
|
103
|
+
created schema/index.ts
|
|
104
|
+
created .env
|
|
105
|
+
created seed.ts
|
|
106
|
+
created seeds/.gitkeep
|
|
107
|
+
created public/.gitkeep
|
|
108
|
+
created .gitignore
|
|
109
|
+
|
|
110
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mdifferent project names produce different config bodies
|
|
111
|
+
[22m[39m created package.json
|
|
112
|
+
created supatype.config.ts
|
|
113
|
+
created schema/index.ts
|
|
114
|
+
created .env
|
|
115
|
+
created seed.ts
|
|
116
|
+
created seeds/.gitkeep
|
|
117
|
+
created public/.gitkeep
|
|
118
|
+
created .gitignore
|
|
119
|
+
created package.json
|
|
120
|
+
created supatype.config.ts
|
|
121
|
+
created schema/index.ts
|
|
122
|
+
created .env
|
|
123
|
+
created seed.ts
|
|
124
|
+
created seeds/.gitkeep
|
|
125
|
+
created public/.gitkeep
|
|
126
|
+
created .gitignore
|
|
127
|
+
|
|
128
|
+
[32m✓[39m tests/init.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 41[2mms[22m[39m
|
|
129
|
+
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
|
|
133
|
+
[32m✓[39m tests/dev-ui.test.ts [2m([22m[2m15 tests[22m[2m)[22m[32m 70[2mms[22m[39m
|
|
134
|
+
|
|
135
|
+
[32m✓[39m tests/pull-utils.test.ts [2m([22m[2m49 tests[22m[2m)[22m[32m 13[2mms[22m[39m
|
|
136
|
+
[32m✓[39m tests/config.test.ts [2m([22m[2m16 tests[22m[2m)[22m[33m 4238[2mms[22m[39m
|
|
137
|
+
[33m[2m✓[22m[39m loads a valid supatype.config.ts (plain export default, no package imports) [33m 637[2mms[22m[39m
|
|
138
|
+
[33m[2m✓[22m[39m normalizes shorthand schema string to { path, pg_schema } [33m 539[2mms[22m[39m
|
|
139
|
+
[33m[2m✓[22m[39m loads a supatype.config.js (plain ESM) [33m 475[2mms[22m[39m
|
|
140
|
+
[33m[2m✓[22m[39m loads config without a versions section (latest by default) [33m 499[2mms[22m[39m
|
|
141
|
+
[33m[2m✓[22m[39m prefers supatype.config.ts over supatype.config.js when both exist [33m 489[2mms[22m[39m
|
|
142
|
+
[33m[2m✓[22m[39m supports optional output field in config [33m 561[2mms[22m[39m
|
|
143
|
+
[33m[2m✓[22m[39m merges supatype.local.config.ts over base [33m 1027[2mms[22m[39m
|
|
144
|
+
[32m✓[39m tests/binary-cache-cloud-overrides.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 16[2mms[22m[39m
|
|
145
|
+
[32m✓[39m tests/cached-artifact-format.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 13[2mms[22m[39m
|
|
146
|
+
[32m✓[39m tests/tsx-runner.test.ts [2m([22m[2m7 tests[22m[2m)[22m[33m 2794[2mms[22m[39m
|
|
147
|
+
[33m[2m✓[22m[39m evaluates a simple expression and returns stdout [33m 374[2mms[22m[39m
|
|
148
|
+
[33m[2m✓[22m[39m evaluates TypeScript syntax (type annotations) [33m 390[2mms[22m[39m
|
|
149
|
+
[33m[2m✓[22m[39m can serialize a JSON object to stdout [33m 383[2mms[22m[39m
|
|
150
|
+
[33m[2m✓[22m[39m returns non-zero exit code on syntax error [33m 402[2mms[22m[39m
|
|
151
|
+
[33m[2m✓[22m[39m returns non-zero exit code on runtime error [33m 381[2mms[22m[39m
|
|
152
|
+
[33m[2m✓[22m[39m captures stderr separately from stdout [33m 371[2mms[22m[39m
|
|
153
|
+
[33m[2m✓[22m[39m runs a .ts file and returns its stdout [33m 487[2mms[22m[39m
|
|
154
|
+
[32m✓[39m tests/augmentation-generator.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 18[2mms[22m[39m
|
|
155
|
+
[32m✓[39m tests/type-resolver.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 14[2mms[22m[39m
|
|
156
|
+
[32m✓[39m tests/engine-push-output.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
157
|
+
[32m✓[39m tests/ensure-binary.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
158
|
+
[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
|
|
159
|
+
[22m[39m created package.json
|
|
160
|
+
created supatype.config.ts
|
|
161
|
+
created schema/index.ts
|
|
162
|
+
created .env
|
|
163
|
+
created seed.ts
|
|
164
|
+
created seeds/.gitkeep
|
|
165
|
+
created public/.gitkeep
|
|
166
|
+
created .gitignore
|
|
167
|
+
|
|
168
|
+
[90mstdout[2m | tests/app-command.test.ts[2m > [22m[2msupatype app add --static[2m > [22m[2mcreates the static directory when missing
|
|
169
|
+
[22m[39m created package.json
|
|
170
|
+
created supatype.config.ts
|
|
171
|
+
created schema/index.ts
|
|
172
|
+
created .env
|
|
173
|
+
created seed.ts
|
|
174
|
+
created seeds/.gitkeep
|
|
175
|
+
created public/.gitkeep
|
|
176
|
+
created .gitignore
|
|
177
|
+
|
|
178
|
+
[32m✓[39m tests/app-command.test.ts [2m([22m[2m2 tests[22m[2m)[22m[33m 2250[2mms[22m[39m
|
|
179
|
+
[33m[2m✓[22m[39m sets app.mode=static and static_dir in supatype.config.ts [33m 1094[2mms[22m[39m
|
|
180
|
+
[33m[2m✓[22m[39m creates the static directory when missing [33m 1154[2mms[22m[39m
|
|
181
|
+
[32m✓[39m tests/normalize-admin-config.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 9[2mms[22m[39m
|
|
182
|
+
[32m✓[39m tests/docker-postgres.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
183
|
+
[32m✓[39m tests/proxy-dev-app.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
184
|
+
[32m✓[39m tests/keys.test.ts [2m([22m[2m11 tests[22m[2m)[22m[33m 12151[2mms[22m[39m
|
|
185
|
+
[33m[2m✓[22m[39m exits 0 with --secret [33m 1059[2mms[22m[39m
|
|
186
|
+
[33m[2m✓[22m[39m outputs ANON_KEY= line [33m 1070[2mms[22m[39m
|
|
187
|
+
[33m[2m✓[22m[39m outputs SERVICE_ROLE_KEY= line [33m 1056[2mms[22m[39m
|
|
188
|
+
[33m[2m✓[22m[39m ANON_KEY is a valid three-part JWT [33m 1107[2mms[22m[39m
|
|
189
|
+
[33m[2m✓[22m[39m SERVICE_ROLE_KEY payload has role: service_role [33m 1014[2mms[22m[39m
|
|
190
|
+
[33m[2m✓[22m[39m JWT has exp in the future [33m 993[2mms[22m[39m
|
|
191
|
+
[33m[2m✓[22m[39m --exp-years changes the expiry window [33m 2075[2mms[22m[39m
|
|
192
|
+
[33m[2m✓[22m[39m reads JWT_SECRET from environment variable [33m 959[2mms[22m[39m
|
|
193
|
+
[33m[2m✓[22m[39m reads JWT_SECRET from .env file [33m 925[2mms[22m[39m
|
|
194
|
+
[33m[2m✓[22m[39m exits non-zero when no secret is available [33m 1047[2mms[22m[39m
|
|
195
|
+
[33m[2m✓[22m[39m keys --help shows --secret and --exp-years options [33m 837[2mms[22m[39m
|
|
196
|
+
[32m✓[39m tests/studio-admin-roles.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
197
|
+
[32m✓[39m tests/release-pins.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
198
|
+
[32m✓[39m tests/seed-discover.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 20[2mms[22m[39m
|
|
199
|
+
[32m✓[39m tests/pg-spawn-env.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
200
|
+
[32m✓[39m tests/postgres-archive-tag.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
201
|
+
[32m✓[39m tests/migrate-from-v1.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 13[2mms[22m[39m
|
|
202
|
+
[32m✓[39m tests/cli-help.test.ts [2m([22m[2m13 tests[22m[2m)[22m[33m 12581[2mms[22m[39m
|
|
203
|
+
[33m[2m✓[22m[39m --help lists all top-level commands [33m 1038[2mms[22m[39m
|
|
204
|
+
[33m[2m✓[22m[39m --version prints a semver string [33m 969[2mms[22m[39m
|
|
205
|
+
[33m[2m✓[22m[39m self-update --help describes the command [33m 972[2mms[22m[39m
|
|
206
|
+
[33m[2m✓[22m[39m init --help describes the init command [33m 918[2mms[22m[39m
|
|
207
|
+
[33m[2m✓[22m[39m push --help describes the push command and --yes flag [33m 981[2mms[22m[39m
|
|
208
|
+
[33m[2m✓[22m[39m diff --help describes the diff command [33m 954[2mms[22m[39m
|
|
209
|
+
[33m[2m✓[22m[39m pull --help describes deprecated pull command [33m 1017[2mms[22m[39m
|
|
210
|
+
[33m[2m✓[22m[39m reset --help shows --yes flag [33m 1000[2mms[22m[39m
|
|
211
|
+
[33m[2m✓[22m[39m app --help describes the app command with add/remove subcommands [33m 1050[2mms[22m[39m
|
|
212
|
+
[33m[2m✓[22m[39m app add --help shows --static and --port options [33m 929[2mms[22m[39m
|
|
213
|
+
[33m[2m✓[22m[39m self-host --help shows compose only (legacy commands hidden) [33m 908[2mms[22m[39m
|
|
214
|
+
[33m[2m✓[22m[39m self-host compose --help shows compose subcommands [33m 987[2mms[22m[39m
|
|
215
|
+
[33m[2m✓[22m[39m unknown command exits non-zero [33m 853[2mms[22m[39m
|
|
216
|
+
|
|
217
|
+
[2m Test Files [22m [1m[32m25 passed[39m[22m[90m (25)[39m
|
|
218
|
+
[2m Tests [22m [1m[32m239 passed[39m[22m[90m (239)[39m
|
|
219
|
+
[2m Start at [22m 20:06:53
|
|
220
|
+
[2m Duration [22m 16.14s[2m (transform 2.52s, setup 0ms, import 8.15s, tests 34.58s, environment 7ms)[22m
|
|
221
|
+
|
package/bin/dev-entry.ts
ADDED
package/bin/supatype.js
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework auto-detection and build configuration.
|
|
3
|
+
* Inspects package.json to determine the framework, then resolves
|
|
4
|
+
* build command, output directory, and SPA mode defaults.
|
|
5
|
+
*/
|
|
6
|
+
import type { AppConfig, AppFramework } from "../config.js";
|
|
7
|
+
export interface ResolvedAppConfig {
|
|
8
|
+
framework: AppFramework;
|
|
9
|
+
directory: string;
|
|
10
|
+
buildCommand: string;
|
|
11
|
+
outputDirectory: string;
|
|
12
|
+
spa: boolean;
|
|
13
|
+
env: Record<string, string>;
|
|
14
|
+
headers: Record<string, string>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Detect the framework from package.json dependencies.
|
|
18
|
+
*/
|
|
19
|
+
export declare function detectFramework(appDir: string): AppFramework | undefined;
|
|
20
|
+
/**
|
|
21
|
+
* Detect if the project is a monorepo.
|
|
22
|
+
*/
|
|
23
|
+
export declare function detectMonorepo(cwd: string): {
|
|
24
|
+
isMonorepo: boolean;
|
|
25
|
+
tool?: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Detect package manager from lockfiles.
|
|
29
|
+
*/
|
|
30
|
+
export declare function detectPackageManager(dir: string): "npm" | "pnpm" | "yarn";
|
|
31
|
+
/**
|
|
32
|
+
* Resolve the full app configuration from user config + auto-detection.
|
|
33
|
+
*/
|
|
34
|
+
export declare function resolveAppConfig(appConfig: AppConfig | undefined, cwd: string): ResolvedAppConfig;
|
|
35
|
+
/**
|
|
36
|
+
* Validate that the framework is configured for static output.
|
|
37
|
+
* Returns an error message if SSR mode is detected.
|
|
38
|
+
*/
|
|
39
|
+
export declare function validateStaticMode(framework: AppFramework, appDir: string): string | null;
|
|
40
|
+
/**
|
|
41
|
+
* Validate the build output.
|
|
42
|
+
*/
|
|
43
|
+
export declare function validateBuildOutput(outputDir: string, maxSizeMb: number): string | null;
|
|
44
|
+
//# sourceMappingURL=framework.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework.d.ts","sourceRoot":"","sources":["../../src/app/framework.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3D,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,YAAY,CAAA;IACvB,SAAS,EAAE,MAAM,CAAA;IACjB,YAAY,EAAE,MAAM,CAAA;IACpB,eAAe,EAAE,MAAM,CAAA;IACvB,GAAG,EAAE,OAAO,CAAA;IACZ,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAChC;AA6BD;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAmBxE;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,UAAU,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAKlF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,CAIzE;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,SAAS,GAAG,SAAS,EAChC,GAAG,EAAE,MAAM,GACV,iBAAiB,CAwCnB;AASD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgDzF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAwBvF"}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework auto-detection and build configuration.
|
|
3
|
+
* Inspects package.json to determine the framework, then resolves
|
|
4
|
+
* build command, output directory, and SPA mode defaults.
|
|
5
|
+
*/
|
|
6
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
7
|
+
import { join, resolve } from "node:path";
|
|
8
|
+
const FRAMEWORK_DEFAULTS = {
|
|
9
|
+
nextjs: { buildCommand: "next build", outputDirectory: "out", spa: false },
|
|
10
|
+
astro: { buildCommand: "astro build", outputDirectory: "dist", spa: false },
|
|
11
|
+
vite: { buildCommand: "vite build", outputDirectory: "dist", spa: true },
|
|
12
|
+
"remix-spa": { buildCommand: "remix vite:build", outputDirectory: "build/client", spa: true },
|
|
13
|
+
sveltekit: { buildCommand: "vite build", outputDirectory: "build", spa: false },
|
|
14
|
+
nuxt: { buildCommand: "nuxt generate", outputDirectory: "dist", spa: false },
|
|
15
|
+
static: { buildCommand: "", outputDirectory: ".", spa: false },
|
|
16
|
+
};
|
|
17
|
+
// Maps package.json dependency names to framework identifiers
|
|
18
|
+
const FRAMEWORK_DETECTION = [
|
|
19
|
+
{ dep: "next", framework: "nextjs" },
|
|
20
|
+
{ dep: "astro", framework: "astro" },
|
|
21
|
+
{ dep: "@remix-run/react", framework: "remix-spa" },
|
|
22
|
+
{ dep: "@sveltejs/kit", framework: "sveltekit" },
|
|
23
|
+
{ dep: "nuxt", framework: "nuxt" },
|
|
24
|
+
// Vite last — many frameworks use Vite under the hood
|
|
25
|
+
{ dep: "vite", framework: "vite" },
|
|
26
|
+
];
|
|
27
|
+
/**
|
|
28
|
+
* Detect the framework from package.json dependencies.
|
|
29
|
+
*/
|
|
30
|
+
export function detectFramework(appDir) {
|
|
31
|
+
const pkgPath = join(appDir, "package.json");
|
|
32
|
+
if (!existsSync(pkgPath))
|
|
33
|
+
return undefined;
|
|
34
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
35
|
+
const allDeps = { ...pkg.dependencies, ...pkg.devDependencies };
|
|
36
|
+
for (const { dep, framework } of FRAMEWORK_DETECTION) {
|
|
37
|
+
if (dep in allDeps)
|
|
38
|
+
return framework;
|
|
39
|
+
}
|
|
40
|
+
// Check for plain HTML
|
|
41
|
+
if (existsSync(join(appDir, "index.html")))
|
|
42
|
+
return "static";
|
|
43
|
+
return undefined;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Detect if the project is a monorepo.
|
|
47
|
+
*/
|
|
48
|
+
export function detectMonorepo(cwd) {
|
|
49
|
+
if (existsSync(join(cwd, "turbo.json")))
|
|
50
|
+
return { isMonorepo: true, tool: "turbo" };
|
|
51
|
+
if (existsSync(join(cwd, "pnpm-workspace.yaml")))
|
|
52
|
+
return { isMonorepo: true, tool: "pnpm" };
|
|
53
|
+
if (existsSync(join(cwd, "nx.json")))
|
|
54
|
+
return { isMonorepo: true, tool: "nx" };
|
|
55
|
+
return { isMonorepo: false };
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Detect package manager from lockfiles.
|
|
59
|
+
*/
|
|
60
|
+
export function detectPackageManager(dir) {
|
|
61
|
+
if (existsSync(join(dir, "pnpm-lock.yaml")))
|
|
62
|
+
return "pnpm";
|
|
63
|
+
if (existsSync(join(dir, "yarn.lock")))
|
|
64
|
+
return "yarn";
|
|
65
|
+
return "npm";
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Resolve the full app configuration from user config + auto-detection.
|
|
69
|
+
*/
|
|
70
|
+
export function resolveAppConfig(appConfig, cwd) {
|
|
71
|
+
const directory = resolve(cwd, appConfig?.directory || ".");
|
|
72
|
+
// Framework detection
|
|
73
|
+
let framework = appConfig?.framework;
|
|
74
|
+
if (!framework) {
|
|
75
|
+
framework = detectFramework(directory);
|
|
76
|
+
if (!framework) {
|
|
77
|
+
throw new Error("Could not detect frontend framework.\n" +
|
|
78
|
+
"Set app.framework in supatype.config.ts, or ensure package.json is present.");
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
const defaults = FRAMEWORK_DEFAULTS[framework];
|
|
82
|
+
// Build command
|
|
83
|
+
let buildCommand = appConfig?.buildCommand || defaults.buildCommand;
|
|
84
|
+
const mono = detectMonorepo(cwd);
|
|
85
|
+
if (mono.isMonorepo && mono.tool === "turbo" && !appConfig?.buildCommand) {
|
|
86
|
+
// In a Turborepo, run build via turbo from workspace root
|
|
87
|
+
const appDirRelative = appConfig?.directory || ".";
|
|
88
|
+
if (appDirRelative !== ".") {
|
|
89
|
+
const pkgName = getPackageName(directory);
|
|
90
|
+
if (pkgName) {
|
|
91
|
+
buildCommand = `turbo run build --filter=${pkgName}`;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
framework,
|
|
97
|
+
directory,
|
|
98
|
+
buildCommand,
|
|
99
|
+
outputDirectory: resolve(directory, appConfig?.outputDirectory || defaults.outputDirectory),
|
|
100
|
+
spa: appConfig?.spa ?? defaults.spa,
|
|
101
|
+
env: appConfig?.env ?? {},
|
|
102
|
+
headers: appConfig?.headers ?? {},
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
function getPackageName(dir) {
|
|
106
|
+
const pkgPath = join(dir, "package.json");
|
|
107
|
+
if (!existsSync(pkgPath))
|
|
108
|
+
return undefined;
|
|
109
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
110
|
+
return pkg.name;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Validate that the framework is configured for static output.
|
|
114
|
+
* Returns an error message if SSR mode is detected.
|
|
115
|
+
*/
|
|
116
|
+
export function validateStaticMode(framework, appDir) {
|
|
117
|
+
if (framework === "nextjs") {
|
|
118
|
+
// Check for output: 'export' in next.config.js/mjs/ts
|
|
119
|
+
for (const name of ["next.config.js", "next.config.mjs", "next.config.ts"]) {
|
|
120
|
+
const configPath = join(appDir, name);
|
|
121
|
+
if (existsSync(configPath)) {
|
|
122
|
+
const content = readFileSync(configPath, "utf8");
|
|
123
|
+
if (!content.includes("export")) {
|
|
124
|
+
return ("Supatype currently supports Next.js static export only.\n" +
|
|
125
|
+
"Add `output: 'export'` to your next.config.js,\n" +
|
|
126
|
+
"or deploy your frontend to Vercel for SSR support.");
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (framework === "astro") {
|
|
132
|
+
const configPath = join(appDir, "astro.config.mjs");
|
|
133
|
+
if (existsSync(configPath)) {
|
|
134
|
+
const content = readFileSync(configPath, "utf8");
|
|
135
|
+
if (content.includes("output: 'server'") || content.includes("output: \"server\"")) {
|
|
136
|
+
return ("Supatype currently supports Astro static sites only.\n" +
|
|
137
|
+
"Remove `output: 'server'` from astro.config.mjs,\n" +
|
|
138
|
+
"or deploy your frontend separately for SSR support.");
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
if (framework === "sveltekit") {
|
|
143
|
+
const pkgPath = join(appDir, "package.json");
|
|
144
|
+
if (existsSync(pkgPath)) {
|
|
145
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
146
|
+
if (!pkg.devDependencies?.["@sveltejs/adapter-static"]) {
|
|
147
|
+
return ("Supatype requires @sveltejs/adapter-static for SvelteKit.\n" +
|
|
148
|
+
"Install it: npm install -D @sveltejs/adapter-static");
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Validate the build output.
|
|
156
|
+
*/
|
|
157
|
+
export function validateBuildOutput(outputDir, maxSizeMb) {
|
|
158
|
+
if (!existsSync(outputDir)) {
|
|
159
|
+
return `Build output directory not found: ${outputDir}`;
|
|
160
|
+
}
|
|
161
|
+
// Check for at least one HTML file
|
|
162
|
+
const hasHtml = findHtmlFile(outputDir);
|
|
163
|
+
if (!hasHtml) {
|
|
164
|
+
return `No HTML files found in build output: ${outputDir}`;
|
|
165
|
+
}
|
|
166
|
+
// Check total size
|
|
167
|
+
const sizeMb = getDirSizeMb(outputDir);
|
|
168
|
+
if (sizeMb > maxSizeMb) {
|
|
169
|
+
return `Build output ${sizeMb.toFixed(1)}MB exceeds limit of ${maxSizeMb}MB`;
|
|
170
|
+
}
|
|
171
|
+
if (sizeMb > 500) {
|
|
172
|
+
console.warn(`Warning: Build output is ${sizeMb.toFixed(1)}MB. This may include unoptimised assets or node_modules.`);
|
|
173
|
+
}
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
function findHtmlFile(dir) {
|
|
177
|
+
const { readdirSync, statSync } = require("node:fs");
|
|
178
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
179
|
+
if (entry.isFile() && entry.name.endsWith(".html"))
|
|
180
|
+
return true;
|
|
181
|
+
if (entry.isDirectory()) {
|
|
182
|
+
if (findHtmlFile(join(dir, entry.name)))
|
|
183
|
+
return true;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
function getDirSizeMb(dir) {
|
|
189
|
+
const { readdirSync, statSync } = require("node:fs");
|
|
190
|
+
let size = 0;
|
|
191
|
+
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
192
|
+
const path = join(dir, entry.name);
|
|
193
|
+
if (entry.isFile())
|
|
194
|
+
size += statSync(path).size;
|
|
195
|
+
else if (entry.isDirectory())
|
|
196
|
+
size += getDirSizeMb(path) * 1024 * 1024;
|
|
197
|
+
}
|
|
198
|
+
return size / (1024 * 1024);
|
|
199
|
+
}
|
|
200
|
+
//# sourceMappingURL=framework.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"framework.js","sourceRoot":"","sources":["../../src/app/framework.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spawn the frontend dev server during `supatype dev` when app.mode is proxy.
|
|
3
|
+
*/
|
|
4
|
+
import { ProcessManager } from "../process-manager.js";
|
|
5
|
+
import { type SupatypeProjectConfig } from "../project-config.js";
|
|
6
|
+
/** package.json script name to run (only when app.mode is proxy). */
|
|
7
|
+
export declare function resolveProxyDevScript(config: SupatypeProjectConfig): string | null;
|
|
8
|
+
/**
|
|
9
|
+
* Start the configured package.json script for proxy dev.
|
|
10
|
+
* Returns null when not in proxy mode or when the script is missing.
|
|
11
|
+
*/
|
|
12
|
+
export declare function startProxyDevApp(cwd: string, config: SupatypeProjectConfig, pidDir: string): ProcessManager | null;
|
|
13
|
+
//# sourceMappingURL=proxy-dev-app.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-dev-app.d.ts","sourceRoot":"","sources":["../../src/app/proxy-dev-app.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAIxF,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAIlF;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,MAAM,GACb,cAAc,GAAG,IAAI,CAuCvB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spawn the frontend dev server during `supatype dev` when app.mode is proxy.
|
|
3
|
+
*/
|
|
4
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
5
|
+
import { join } from "node:path";
|
|
6
|
+
import { detectPackageManager } from "./framework.js";
|
|
7
|
+
import { appendDevTaskLog } from "../dev-session.js";
|
|
8
|
+
import { ProcessManager } from "../process-manager.js";
|
|
9
|
+
import { projectRootFromConfig } from "../project-config.js";
|
|
10
|
+
const DEFAULT_PROXY_DEV_SCRIPT = "start";
|
|
11
|
+
/** package.json script name to run (only when app.mode is proxy). */
|
|
12
|
+
export function resolveProxyDevScript(config) {
|
|
13
|
+
if (config.app?.mode !== "proxy")
|
|
14
|
+
return null;
|
|
15
|
+
const script = config.app.start?.trim();
|
|
16
|
+
return script && script.length > 0 ? script : DEFAULT_PROXY_DEV_SCRIPT;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Start the configured package.json script for proxy dev.
|
|
20
|
+
* Returns null when not in proxy mode or when the script is missing.
|
|
21
|
+
*/
|
|
22
|
+
export function startProxyDevApp(cwd, config, pidDir) {
|
|
23
|
+
const script = resolveProxyDevScript(config);
|
|
24
|
+
if (!script)
|
|
25
|
+
return null;
|
|
26
|
+
const appDir = projectRootFromConfig(config, cwd);
|
|
27
|
+
const pkgPath = join(appDir, "package.json");
|
|
28
|
+
if (!existsSync(pkgPath)) {
|
|
29
|
+
console.warn(`[supatype] app.mode=proxy but no package.json at ${appDir}; skipping dev app`);
|
|
30
|
+
return null;
|
|
31
|
+
}
|
|
32
|
+
const pkg = JSON.parse(readFileSync(pkgPath, "utf8"));
|
|
33
|
+
if (!pkg.scripts?.[script]) {
|
|
34
|
+
console.warn(`[supatype] app.mode=proxy: package.json has no "${script}" script.\n` +
|
|
35
|
+
` Add "scripts.${script}" or set app.start in supatype.config.ts`);
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
const pm = detectPackageManager(appDir);
|
|
39
|
+
const bin = pm;
|
|
40
|
+
const args = pm === "yarn" ? [script] : ["run", script];
|
|
41
|
+
// pnpm/npm/yarn are .cmd shims on Windows — spawn via shell so PATH resolution works.
|
|
42
|
+
const useShell = process.platform === "win32";
|
|
43
|
+
appendDevTaskLog("app", "app", `Proxy mode: running ${bin} ${args.join(" ")} (${appDir})`);
|
|
44
|
+
const manager = new ProcessManager(bin, args, {
|
|
45
|
+
label: "app",
|
|
46
|
+
pidDir,
|
|
47
|
+
cwd: appDir,
|
|
48
|
+
colour: "\x1b[33m",
|
|
49
|
+
shell: useShell,
|
|
50
|
+
});
|
|
51
|
+
manager.start();
|
|
52
|
+
return manager;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=proxy-dev-app.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"proxy-dev-app.js","sourceRoot":"","sources":["../../src/app/proxy-dev-app.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,qBAAqB,EAA8B,MAAM,sBAAsB,CAAA;AAExF,MAAM,wBAAwB,GAAG,OAAO,CAAA;AAExC,qEAAqE;AACrE,MAAM,UAAU,qBAAqB,CAAC,MAA6B;IACjE,IAAI,MAAM,CAAC,GAAG,EAAE,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IAC7C,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,CAAA;IACvC,OAAO,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,wBAAwB,CAAA;AACxE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAAW,EACX,MAA6B,EAC7B,MAAc;IAEd,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAA;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IAExB,MAAM,MAAM,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACjD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC,CAAA;IAC5C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,IAAI,CAAC,oDAAoD,MAAM,oBAAoB,CAAC,CAAA;QAC5F,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAEnD,CAAA;IACD,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,IAAI,CACV,mDAAmD,MAAM,aAAa;YACpE,kBAAkB,MAAM,0CAA0C,CACrE,CAAA;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IACvC,MAAM,GAAG,GAAG,EAAE,CAAA;IACd,MAAM,IAAI,GAAG,EAAE,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACvD,sFAAsF;IACtF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAA;IAE7C,gBAAgB,CAAC,KAAK,EAAE,KAAK,EAAE,uBAAuB,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,MAAM,GAAG,CAAC,CAAA;IAE1F,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,GAAG,EAAE,IAAI,EAAE;QAC5C,KAAK,EAAE,KAAK;QACZ,MAAM;QACN,GAAG,EAAE,MAAM;QACX,MAAM,EAAE,UAAU;QAClB,KAAK,EAAE,QAAQ;KAChB,CAAC,CAAA;IACF,OAAO,CAAC,KAAK,EAAE,CAAA;IACf,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface UpdateAppConfigInput {
|
|
2
|
+
mode: "none" | "static" | "proxy";
|
|
3
|
+
staticDir?: string;
|
|
4
|
+
upstream?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function updateAppConfigInProject(cwd: string, input: UpdateAppConfigInput): string;
|
|
7
|
+
//# sourceMappingURL=app-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"app-config.d.ts","sourceRoot":"","sources":["../src/app-config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAA;IACjC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAQzF"}
|