@supatype/cli 0.1.0-alpha.9 → 0.1.0
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 +2 -2
- package/.turbo/turbo-test.log +270 -65
- package/.turbo/turbo-typecheck.log +1 -1
- package/assets/supatype-logo-wordmark.ascii.txt +6 -0
- package/bin/dev-entry.ts +2 -1
- package/dist/app/framework.js +1 -3
- package/dist/app/framework.js.map +1 -1
- package/dist/app/proxy-dev-app.d.ts +14 -0
- package/dist/app/proxy-dev-app.d.ts.map +1 -1
- package/dist/app/proxy-dev-app.js +110 -6
- package/dist/app/proxy-dev-app.js.map +1 -1
- package/dist/app-config.d.ts +10 -0
- package/dist/app-config.d.ts.map +1 -1
- package/dist/app-config.js +72 -0
- package/dist/app-config.js.map +1 -1
- package/dist/assets/supatype-logo-wordmark.ascii.txt +6 -0
- package/dist/binary-cache.d.ts +19 -7
- package/dist/binary-cache.d.ts.map +1 -1
- package/dist/binary-cache.js +92 -46
- package/dist/binary-cache.js.map +1 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +17 -2
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.d.ts +3 -0
- package/dist/commands/add.d.ts.map +1 -0
- package/dist/commands/add.js +86 -0
- package/dist/commands/add.js.map +1 -0
- package/dist/commands/admin.d.ts.map +1 -1
- package/dist/commands/admin.js +39 -53
- package/dist/commands/admin.js.map +1 -1
- package/dist/commands/adopt.d.ts +3 -0
- package/dist/commands/adopt.d.ts.map +1 -0
- package/dist/commands/adopt.js +55 -0
- package/dist/commands/adopt.js.map +1 -0
- package/dist/commands/app.d.ts.map +1 -1
- package/dist/commands/app.js +20 -17
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/cache.d.ts.map +1 -1
- package/dist/commands/cache.js +11 -10
- package/dist/commands/cache.js.map +1 -1
- package/dist/commands/cloud.d.ts +4 -9
- package/dist/commands/cloud.d.ts.map +1 -1
- package/dist/commands/cloud.js +75 -125
- package/dist/commands/cloud.js.map +1 -1
- package/dist/commands/db.d.ts.map +1 -1
- package/dist/commands/db.js +37 -58
- package/dist/commands/db.js.map +1 -1
- package/dist/commands/deploy.d.ts.map +1 -1
- package/dist/commands/deploy.js +140 -96
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +72 -39
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/diff.d.ts.map +1 -1
- package/dist/commands/diff.js +39 -39
- package/dist/commands/diff.js.map +1 -1
- package/dist/commands/doctor.d.ts +3 -0
- package/dist/commands/doctor.d.ts.map +1 -0
- package/dist/commands/doctor.js +78 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/engine.d.ts.map +1 -1
- package/dist/commands/engine.js +5 -4
- package/dist/commands/engine.js.map +1 -1
- package/dist/commands/functions.d.ts.map +1 -1
- package/dist/commands/functions.js +172 -119
- package/dist/commands/functions.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +5 -4
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init.d.ts +30 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +814 -107
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/introspect.d.ts +3 -0
- package/dist/commands/introspect.d.ts.map +1 -0
- package/dist/commands/introspect.js +35 -0
- package/dist/commands/introspect.js.map +1 -0
- package/dist/commands/keys.d.ts +15 -1
- package/dist/commands/keys.d.ts.map +1 -1
- package/dist/commands/keys.js +46 -10
- package/dist/commands/keys.js.map +1 -1
- package/dist/commands/link-helpers.d.ts +15 -0
- package/dist/commands/link-helpers.d.ts.map +1 -0
- package/dist/commands/link-helpers.js +225 -0
- package/dist/commands/link-helpers.js.map +1 -0
- package/dist/commands/logs.d.ts.map +1 -1
- package/dist/commands/logs.js +5 -4
- package/dist/commands/logs.js.map +1 -1
- package/dist/commands/migrate-from-v1.d.ts.map +1 -1
- package/dist/commands/migrate-from-v1.js +3 -2
- package/dist/commands/migrate-from-v1.js.map +1 -1
- package/dist/commands/migrate.d.ts.map +1 -1
- package/dist/commands/migrate.js +119 -26
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/pg.d.ts.map +1 -1
- package/dist/commands/pg.js +11 -12
- package/dist/commands/pg.js.map +1 -1
- package/dist/commands/plugins.d.ts.map +1 -1
- package/dist/commands/plugins.js +55 -46
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/pull.d.ts.map +1 -1
- package/dist/commands/pull.js +33 -5
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +110 -137
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/seed.d.ts.map +1 -1
- package/dist/commands/seed.js +4 -3
- package/dist/commands/seed.js.map +1 -1
- package/dist/commands/self-host.d.ts +2 -2
- package/dist/commands/self-host.d.ts.map +1 -1
- package/dist/commands/self-host.js +65 -50
- package/dist/commands/self-host.js.map +1 -1
- package/dist/commands/self-update.d.ts.map +1 -1
- package/dist/commands/self-update.js +3 -2
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/status.d.ts.map +1 -1
- package/dist/commands/status.js +95 -29
- package/dist/commands/status.js.map +1 -1
- package/dist/commands/types.d.ts.map +1 -1
- package/dist/commands/types.js +3 -2
- package/dist/commands/types.js.map +1 -1
- package/dist/commands/update.d.ts.map +1 -1
- package/dist/commands/update.js +54 -21
- package/dist/commands/update.js.map +1 -1
- package/dist/config.d.ts +2 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/dev-compose.d.ts +26 -0
- package/dist/dev-compose.d.ts.map +1 -1
- package/dist/dev-compose.js +328 -34
- package/dist/dev-compose.js.map +1 -1
- 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 +56 -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 +13 -0
- package/dist/dev-task-colors.d.ts.map +1 -0
- package/dist/dev-task-colors.js +43 -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 +5 -1
- package/dist/diff-output.d.ts.map +1 -1
- package/dist/diff-output.js +69 -0
- package/dist/diff-output.js.map +1 -1
- package/dist/docker-runtime.d.ts +30 -0
- package/dist/docker-runtime.d.ts.map +1 -0
- package/dist/docker-runtime.js +118 -0
- package/dist/docker-runtime.js.map +1 -0
- package/dist/engine-client.d.ts +10 -1
- package/dist/engine-client.d.ts.map +1 -1
- package/dist/engine-client.js +76 -17
- package/dist/engine-client.js.map +1 -1
- package/dist/engine-push-output.d.ts +17 -0
- package/dist/engine-push-output.d.ts.map +1 -0
- package/dist/engine-push-output.js +64 -0
- package/dist/engine-push-output.js.map +1 -0
- package/dist/ensure-binary.js +2 -2
- package/dist/ensure-binary.js.map +1 -1
- package/dist/gitignore.d.ts +8 -0
- package/dist/gitignore.d.ts.map +1 -0
- package/dist/gitignore.js +41 -0
- package/dist/gitignore.js.map +1 -0
- package/dist/kong-config.d.ts +9 -0
- package/dist/kong-config.d.ts.map +1 -1
- package/dist/kong-config.js +18 -1
- package/dist/kong-config.js.map +1 -1
- package/dist/link.d.ts +66 -0
- package/dist/link.d.ts.map +1 -0
- package/dist/link.js +160 -0
- package/dist/link.js.map +1 -0
- package/dist/process-manager.d.ts +8 -0
- package/dist/process-manager.d.ts.map +1 -1
- package/dist/process-manager.js +53 -9
- package/dist/process-manager.js.map +1 -1
- package/dist/project-config.d.ts +30 -3
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js +37 -4
- package/dist/project-config.js.map +1 -1
- package/dist/prompts.d.ts +3 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +3 -0
- package/dist/prompts.js.map +1 -0
- package/dist/pull-utils.d.ts +50 -14
- package/dist/pull-utils.d.ts.map +1 -1
- package/dist/pull-utils.js +152 -12
- package/dist/pull-utils.js.map +1 -1
- package/dist/resolve-target.d.ts +86 -0
- package/dist/resolve-target.d.ts.map +1 -0
- package/dist/resolve-target.js +291 -0
- package/dist/resolve-target.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.map +1 -1
- package/dist/runtime-routes.js +7 -0
- package/dist/runtime-routes.js.map +1 -1
- package/dist/schema-ast-v2.d.ts +1 -1
- package/dist/schema-ast-v2.d.ts.map +1 -1
- package/dist/schema-ast-v2.js +2 -2
- package/dist/schema-ast-v2.js.map +1 -1
- package/dist/schema-sources.d.ts +40 -0
- package/dist/schema-sources.d.ts.map +1 -0
- package/dist/schema-sources.js +183 -0
- package/dist/schema-sources.js.map +1 -0
- package/dist/scripts/postinstall.js +5 -1
- package/dist/scripts/postinstall.js.map +1 -1
- package/dist/self-host-compose.d.ts +37 -1
- package/dist/self-host-compose.d.ts.map +1 -1
- package/dist/self-host-compose.js +233 -43
- package/dist/self-host-compose.js.map +1 -1
- package/dist/storage-provision.d.ts +4 -0
- package/dist/storage-provision.d.ts.map +1 -1
- package/dist/storage-provision.js +24 -2
- package/dist/storage-provision.js.map +1 -1
- 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.js +2 -2
- package/dist/systemd.js.map +1 -1
- package/dist/target-client.d.ts +10 -0
- package/dist/target-client.d.ts.map +1 -0
- package/dist/target-client.js +22 -0
- package/dist/target-client.js.map +1 -0
- package/dist/type-extractor.d.ts +11 -0
- package/dist/type-extractor.d.ts.map +1 -1
- package/dist/type-extractor.js +95 -8
- package/dist/type-extractor.js.map +1 -1
- package/dist/ui/brand.d.ts +9 -0
- package/dist/ui/brand.d.ts.map +1 -0
- package/dist/ui/brand.js +11 -0
- package/dist/ui/brand.js.map +1 -0
- package/dist/ui/confirm.d.ts +12 -0
- package/dist/ui/confirm.d.ts.map +1 -0
- package/dist/ui/confirm.js +28 -0
- package/dist/ui/confirm.js.map +1 -0
- package/dist/ui/fatal.d.ts +10 -0
- package/dist/ui/fatal.d.ts.map +1 -0
- package/dist/ui/fatal.js +34 -0
- package/dist/ui/fatal.js.map +1 -0
- package/dist/ui/index.d.ts +9 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +9 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/interactive.d.ts +3 -0
- package/dist/ui/interactive.d.ts.map +1 -0
- package/dist/ui/interactive.js +5 -0
- package/dist/ui/interactive.js.map +1 -0
- package/dist/ui/messages.d.ts +10 -0
- package/dist/ui/messages.d.ts.map +1 -0
- package/dist/ui/messages.js +35 -0
- package/dist/ui/messages.js.map +1 -0
- package/dist/ui/next-steps.d.ts +3 -0
- package/dist/ui/next-steps.d.ts.map +1 -0
- package/dist/ui/next-steps.js +10 -0
- package/dist/ui/next-steps.js.map +1 -0
- package/dist/ui/progress.d.ts +5 -0
- package/dist/ui/progress.d.ts.map +1 -0
- package/dist/ui/progress.js +24 -0
- package/dist/ui/progress.js.map +1 -0
- package/dist/ui/prompts.d.ts +14 -0
- package/dist/ui/prompts.d.ts.map +1 -0
- package/dist/ui/prompts.js +34 -0
- package/dist/ui/prompts.js.map +1 -0
- package/package.json +3 -2
- package/src/app/framework.ts +1 -3
- package/src/app/proxy-dev-app.ts +114 -6
- package/src/app-config.ts +80 -0
- package/src/binary-cache.ts +102 -52
- package/src/cli.ts +16 -2
- package/src/commands/add.ts +97 -0
- package/src/commands/admin.ts +39 -73
- package/src/commands/adopt.ts +82 -0
- package/src/commands/app.ts +20 -17
- package/src/commands/cache.ts +11 -10
- package/src/commands/cloud.ts +91 -142
- package/src/commands/db.ts +40 -63
- package/src/commands/deploy.ts +186 -126
- package/src/commands/dev.ts +95 -55
- package/src/commands/diff.ts +52 -43
- package/src/commands/doctor.ts +103 -0
- package/src/commands/engine.ts +5 -4
- package/src/commands/functions.ts +187 -123
- package/src/commands/generate.ts +5 -4
- package/src/commands/init.ts +996 -105
- package/src/commands/introspect.ts +48 -0
- package/src/commands/keys.ts +56 -14
- package/src/commands/link-helpers.ts +273 -0
- package/src/commands/logs.ts +5 -4
- package/src/commands/migrate-from-v1.ts +3 -2
- package/src/commands/migrate.ts +167 -27
- package/src/commands/pg.ts +13 -18
- package/src/commands/plugins.ts +55 -46
- package/src/commands/pull.ts +38 -9
- package/src/commands/push.ts +147 -174
- package/src/commands/seed.ts +5 -4
- package/src/commands/self-host.ts +85 -54
- package/src/commands/self-update.ts +3 -2
- package/src/commands/status.ts +102 -33
- package/src/commands/types.ts +3 -2
- package/src/commands/update.ts +59 -23
- package/src/config.ts +2 -1
- package/src/dev-compose.ts +426 -34
- package/src/dev-log-bus.ts +101 -0
- package/src/dev-log-filter.ts +32 -0
- package/src/dev-logo.ts +61 -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 +79 -1
- package/src/docker-runtime.ts +151 -0
- package/src/engine-client.ts +81 -17
- package/src/engine-push-output.ts +75 -0
- package/src/ensure-binary.ts +2 -2
- package/src/gitignore.ts +48 -0
- package/src/kong-config.ts +24 -1
- package/src/link.ts +243 -0
- package/src/process-manager.ts +66 -10
- package/src/project-config.ts +62 -7
- package/src/prompts.ts +2 -0
- package/src/pull-utils.ts +217 -23
- package/src/resolve-target.ts +419 -0
- package/src/restore-system-relation-targets.ts +45 -0
- package/src/runtime-routes.ts +7 -0
- package/src/schema-ast-v2.ts +2 -1
- package/src/schema-sources.ts +248 -0
- package/src/scripts/postinstall.ts +7 -1
- package/src/self-host-compose.ts +261 -46
- package/src/storage-provision.ts +33 -1
- package/src/supatype-eval-1781522769253.mts +1 -0
- package/src/systemd.ts +2 -2
- package/src/target-client.ts +40 -0
- package/src/type-extractor.ts +124 -11
- package/src/ui/README.md +17 -0
- package/src/ui/brand.ts +12 -0
- package/src/ui/confirm.ts +38 -0
- package/src/ui/fatal.ts +43 -0
- package/src/ui/index.ts +8 -0
- package/src/ui/interactive.ts +4 -0
- package/src/ui/messages.ts +43 -0
- package/src/ui/next-steps.ts +10 -0
- package/src/ui/progress.ts +28 -0
- package/src/ui/prompts.ts +40 -0
- package/tests/cli-help.test.ts +27 -2
- package/tests/config.test.ts +29 -2
- package/tests/dev-ui.test.ts +139 -0
- package/tests/docker-runtime.test.ts +236 -0
- package/tests/engine-push-output.test.ts +67 -0
- package/tests/init.test.ts +197 -18
- package/tests/link.test.ts +148 -0
- package/tests/minisign.test.ts +102 -0
- package/tests/proxy-dev-app.test.ts +45 -1
- package/tests/pull-utils.test.ts +5 -4
- package/tests/runtime-contract.test.ts +186 -2
- package/tests/schema-sources.test.ts +119 -0
- package/tests/storage-provision.test.ts +100 -0
- package/tests/ui-confirm.test.ts +41 -0
- package/tests/ui-messages.test.ts +66 -0
- package/tsconfig.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
|
|
2
|
-
> @supatype/cli@0.1.0
|
|
3
|
-
> tsc --project tsconfig.json
|
|
2
|
+
> @supatype/cli@0.1.0 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
4
|
|
package/.turbo/turbo-test.log
CHANGED
|
@@ -1,12 +1,10 @@
|
|
|
1
1
|
|
|
2
|
-
> @supatype/cli@0.1.0
|
|
2
|
+
> @supatype/cli@0.1.0 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[2m34 tests[22m[2m)[22m[32m 191[2mms[22m[39m
|
|
9
|
-
[32m✓[39m tests/runtime-contract.test.ts [2m([22m[2m28 tests[22m[2m)[22m[32m 194[2mms[22m[39m
|
|
10
8
|
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mcreates all expected files
|
|
11
9
|
[22m[39m created package.json
|
|
12
10
|
created supatype.config.ts
|
|
@@ -77,7 +75,7 @@
|
|
|
77
75
|
created public/.gitkeep
|
|
78
76
|
created .gitignore
|
|
79
77
|
|
|
80
|
-
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mschema/index.ts exports a
|
|
78
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mschema/index.ts exports a Profile model using RFC v2 Model<>
|
|
81
79
|
[22m[39m created package.json
|
|
82
80
|
created supatype.config.ts
|
|
83
81
|
created schema/index.ts
|
|
@@ -125,28 +123,236 @@
|
|
|
125
123
|
created public/.gitkeep
|
|
126
124
|
created .gitignore
|
|
127
125
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
126
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mself-host target emits standalone mode + domain and a local override
|
|
127
|
+
[22m[39m created package.json
|
|
128
|
+
created supatype.config.ts
|
|
129
|
+
created supatype.local.config.ts
|
|
130
|
+
created schema/index.ts
|
|
131
|
+
created .env
|
|
132
|
+
created seed.ts
|
|
133
|
+
created seeds/.gitkeep
|
|
134
|
+
created public/.gitkeep
|
|
135
|
+
created .gitignore
|
|
136
|
+
|
|
137
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mself-host with a TLS email emits an active tls block
|
|
138
|
+
[22m[39m created package.json
|
|
139
|
+
created supatype.config.ts
|
|
140
|
+
created supatype.local.config.ts
|
|
141
|
+
created schema/index.ts
|
|
142
|
+
created .env
|
|
143
|
+
created seed.ts
|
|
144
|
+
created seeds/.gitkeep
|
|
145
|
+
created public/.gitkeep
|
|
146
|
+
created .gitignore
|
|
147
|
+
|
|
148
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mself-host without a TLS email emits a commented tls hint
|
|
149
|
+
[22m[39m created package.json
|
|
150
|
+
created supatype.config.ts
|
|
151
|
+
created supatype.local.config.ts
|
|
152
|
+
created schema/index.ts
|
|
153
|
+
created .env
|
|
154
|
+
created seed.ts
|
|
155
|
+
created seeds/.gitkeep
|
|
156
|
+
created public/.gitkeep
|
|
157
|
+
created .gitignore
|
|
158
|
+
|
|
159
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mcloud target emits managed mode + environments and a local override
|
|
160
|
+
[22m[39m created package.json
|
|
161
|
+
created supatype.config.ts
|
|
162
|
+
created supatype.local.config.ts
|
|
163
|
+
created schema/index.ts
|
|
164
|
+
created .env
|
|
165
|
+
created seed.ts
|
|
166
|
+
created seeds/.gitkeep
|
|
167
|
+
created public/.gitkeep
|
|
168
|
+
created .gitignore
|
|
169
|
+
|
|
170
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mlater target stays in dev mode with no local override
|
|
171
|
+
[22m[39m created package.json
|
|
172
|
+
created supatype.config.ts
|
|
173
|
+
created schema/index.ts
|
|
174
|
+
created .env
|
|
175
|
+
created seed.ts
|
|
176
|
+
created seeds/.gitkeep
|
|
177
|
+
created public/.gitkeep
|
|
178
|
+
created .gitignore
|
|
179
|
+
|
|
180
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mstatic app mode writes the static dir and config block
|
|
181
|
+
[22m[39m created package.json
|
|
182
|
+
created supatype.config.ts
|
|
183
|
+
created schema/index.ts
|
|
184
|
+
created .env
|
|
185
|
+
created seed.ts
|
|
186
|
+
created seeds/.gitkeep
|
|
187
|
+
created dist/index.html
|
|
188
|
+
created .gitignore
|
|
189
|
+
|
|
190
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mstatic app mode with Vite scaffolds root index.html and vite.config.ts
|
|
191
|
+
[22m[39m created package.json
|
|
192
|
+
created supatype.config.ts
|
|
193
|
+
created schema/index.ts
|
|
194
|
+
created .env
|
|
195
|
+
created seed.ts
|
|
196
|
+
created seeds/.gitkeep
|
|
197
|
+
created public/index.html
|
|
198
|
+
created index.html
|
|
199
|
+
created vite.config.ts
|
|
200
|
+
created .gitignore
|
|
201
|
+
|
|
202
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mproxy app mode writes upstream and start in the config when target is later
|
|
203
|
+
[22m[39m created package.json
|
|
204
|
+
created supatype.config.ts
|
|
205
|
+
created schema/index.ts
|
|
206
|
+
created .env
|
|
207
|
+
created seed.ts
|
|
208
|
+
created seeds/.gitkeep
|
|
209
|
+
created public/.gitkeep
|
|
210
|
+
created .gitignore
|
|
211
|
+
|
|
212
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mproxy app mode with self-host splits static production config and local proxy override
|
|
213
|
+
[22m[39m created package.json
|
|
214
|
+
created supatype.config.ts
|
|
215
|
+
created supatype.local.config.ts
|
|
216
|
+
created schema/index.ts
|
|
217
|
+
created .env
|
|
218
|
+
created seed.ts
|
|
219
|
+
created seeds/.gitkeep
|
|
220
|
+
created dist/index.html
|
|
221
|
+
created index.html
|
|
222
|
+
created vite.config.ts
|
|
223
|
+
created .gitignore
|
|
224
|
+
|
|
225
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mproxy app mode with cloud target splits static production config and local proxy override
|
|
226
|
+
[22m[39m created package.json
|
|
227
|
+
created supatype.config.ts
|
|
228
|
+
created supatype.local.config.ts
|
|
229
|
+
created schema/index.ts
|
|
230
|
+
created .env
|
|
231
|
+
created seed.ts
|
|
232
|
+
created seeds/.gitkeep
|
|
233
|
+
created dist/index.html
|
|
234
|
+
created .gitignore
|
|
235
|
+
|
|
236
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mhello-world function scaffolds function files and a functions script
|
|
237
|
+
[22m[39m created package.json
|
|
238
|
+
created supatype.config.ts
|
|
239
|
+
created schema/index.ts
|
|
240
|
+
created .env
|
|
241
|
+
created seed.ts
|
|
242
|
+
created seeds/.gitkeep
|
|
243
|
+
created public/.gitkeep
|
|
244
|
+
created functions/hello/index.ts
|
|
245
|
+
created functions/_shared/README.md
|
|
246
|
+
created functions/.env.local
|
|
247
|
+
created .gitignore
|
|
248
|
+
|
|
249
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mcustom schema path is honored
|
|
250
|
+
[22m[39m created package.json
|
|
251
|
+
created supatype.config.ts
|
|
252
|
+
created db/schema.ts
|
|
253
|
+
created .env
|
|
254
|
+
created seed.ts
|
|
255
|
+
created seeds/.gitkeep
|
|
256
|
+
created public/.gitkeep
|
|
257
|
+
created .gitignore
|
|
258
|
+
|
|
259
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2ms3 storage and resend email reflect in config and .env
|
|
260
|
+
[22m[39m created package.json
|
|
261
|
+
created supatype.config.ts
|
|
262
|
+
created schema/index.ts
|
|
263
|
+
created .env
|
|
264
|
+
created seed.ts
|
|
265
|
+
created seeds/.gitkeep
|
|
266
|
+
created public/.gitkeep
|
|
267
|
+
created .gitignore
|
|
268
|
+
|
|
269
|
+
[90mstdout[2m | tests/init.test.ts[2m > [22m[2mscaffold()[2m > [22m[2mmixed local dev and s3 production writes both storage sections
|
|
270
|
+
[22m[39m created package.json
|
|
271
|
+
created supatype.config.ts
|
|
272
|
+
created schema/index.ts
|
|
273
|
+
created .env
|
|
274
|
+
created seed.ts
|
|
275
|
+
created seeds/.gitkeep
|
|
276
|
+
created public/.gitkeep
|
|
277
|
+
created .gitignore
|
|
278
|
+
|
|
279
|
+
[32m✓[39m tests/init.test.ts [2m([22m[2m25 tests[22m[2m)[22m[32m 170[2mms[22m[39m
|
|
280
|
+
[32m✓[39m tests/type-extractor.test.ts [2m([22m[2m34 tests[22m[2m)[22m[32m 149[2mms[22m[39m
|
|
281
|
+
[32m✓[39m tests/runtime-contract.test.ts [2m([22m[2m40 tests[22m[2m)[22m[32m 167[2mms[22m[39m
|
|
282
|
+
[90mstdout[2m | tests/docker-runtime.test.ts[2m > [22m[2mrequireDockerDaemon[2m > [22m[2mexits when the daemon is unavailable
|
|
283
|
+
[22m[39m
|
|
284
|
+
Start the Docker daemon (e.g. sudo systemctl start docker), then try again.
|
|
285
|
+
|
|
286
|
+
To develop without Docker, set provider: "native" in supatype.config.ts.
|
|
287
|
+
|
|
288
|
+
docker: daemon down
|
|
289
|
+
|
|
290
|
+
[32m✓[39m tests/docker-runtime.test.ts [2m([22m[2m10 tests[22m[2m)[22m[32m 24[2mms[22m[39m
|
|
291
|
+
[32m✓[39m tests/config.test.ts [2m([22m[2m18 tests[22m[2m)[22m[33m 4668[2mms[22m[39m
|
|
292
|
+
[33m[2m✓[22m[39m loads a valid supatype.config.ts (plain export default, no package imports) [33m 711[2mms[22m[39m
|
|
293
|
+
[33m[2m✓[22m[39m normalizes shorthand schema string to { path, pg_schema } [33m 541[2mms[22m[39m
|
|
294
|
+
[33m[2m✓[22m[39m loads a supatype.config.js (plain ESM) [33m 581[2mms[22m[39m
|
|
295
|
+
[33m[2m✓[22m[39m loads config without a versions section (latest by default) [33m 489[2mms[22m[39m
|
|
296
|
+
[33m[2m✓[22m[39m prefers supatype.config.ts over supatype.config.js when both exist [33m 559[2mms[22m[39m
|
|
297
|
+
[33m[2m✓[22m[39m supports optional output field in config [33m 550[2mms[22m[39m
|
|
298
|
+
[33m[2m✓[22m[39m merges supatype.local.config.ts over base [33m 1224[2mms[22m[39m
|
|
299
|
+
[90mstdout[2m | tests/link.test.ts[2m > [22m[2mlink model[2m > [22m[2mmigrates cloud.json into link.json
|
|
300
|
+
[22m[39m created package.json
|
|
301
|
+
created supatype.config.ts
|
|
302
|
+
created schema/index.ts
|
|
303
|
+
created .env
|
|
304
|
+
created seed.ts
|
|
305
|
+
created seeds/.gitkeep
|
|
306
|
+
created public/.gitkeep
|
|
307
|
+
created .gitignore
|
|
308
|
+
|
|
309
|
+
[90mstderr[2m | tests/link.test.ts[2m > [22m[2mlink model[2m > [22m[2mmigrates cloud.json into link.json
|
|
310
|
+
[22m[39m[supatype] Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
|
|
311
|
+
|
|
312
|
+
[32m✓[39m tests/link.test.ts [2m([22m[2m4 tests[22m[2m)[22m[33m 2795[2mms[22m[39m
|
|
313
|
+
[33m[2m✓[22m[39m resolveTarget returns cloud mode with /api/v1 prefix [33m 950[2mms[22m[39m
|
|
314
|
+
[33m[2m✓[22m[39m resolveTarget returns self-host mode with /platform/v1 prefix [33m 918[2mms[22m[39m
|
|
315
|
+
[33m[2m✓[22m[39m targetSchemaRollback posts to /platform/v1 when linked [33m 915[2mms[22m[39m
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
|
|
319
|
+
|
|
320
|
+
[32m✓[39m tests/dev-ui.test.ts [2m([22m[2m15 tests[22m[2m)[22m[32m 66[2mms[22m[39m
|
|
321
|
+
|
|
322
|
+
[32m✓[39m tests/pull-utils.test.ts [2m([22m[2m49 tests[22m[2m)[22m[32m 11[2mms[22m[39m
|
|
323
|
+
[32m✓[39m tests/schema-sources.test.ts [2m([22m[2m5 tests[22m[2m)[22m[33m 1150[2mms[22m[39m
|
|
324
|
+
[33m[2m✓[22m[39m buildSchemaSourcesPayload includes manifest metadata [33m 604[2mms[22m[39m
|
|
325
|
+
[33m[2m✓[22m[39m restore overwrites modified local files [33m 497[2mms[22m[39m
|
|
326
|
+
[90mstderr[2m | tests/binary-cache-cloud-overrides.test.ts[2m > [22m[2misLinkedToCloudProject[2m > [22m[2mis true when .supatype/cloud.json has projectSlug
|
|
327
|
+
[22m[39m[supatype] Migrated .supatype/cloud.json → .supatype/link.json (legacy files kept; remove manually when ready).
|
|
328
|
+
|
|
329
|
+
[32m✓[39m tests/binary-cache-cloud-overrides.test.ts [2m([22m[2m11 tests[22m[2m)[22m[32m 29[2mms[22m[39m
|
|
330
|
+
[32m✓[39m tests/minisign.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 26[2mms[22m[39m
|
|
331
|
+
[90mstdout[2m | tests/storage-provision.test.ts[2m > [22m[2mprovisionBuckets[2m > [22m[2mPOSTs each bucket to the storage API
|
|
332
|
+
[22m[39m[supatype] Storage bucket "photos" ready.
|
|
333
|
+
|
|
334
|
+
[90mstdout[2m | tests/storage-provision.test.ts[2m > [22m[2mprovisionBuckets[2m > [22m[2mPOSTs each bucket to the storage API
|
|
335
|
+
[22m[39m[supatype] Storage bucket "avatars" ready.
|
|
336
|
+
|
|
337
|
+
[32m✓[39m tests/storage-provision.test.ts [2m([22m[2m6 tests[22m[2m)[22m[32m 9[2mms[22m[39m
|
|
139
338
|
[32m✓[39m tests/cached-artifact-format.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 13[2mms[22m[39m
|
|
140
|
-
[32m✓[39m tests/
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
339
|
+
[32m✓[39m tests/proxy-dev-app.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
340
|
+
[32m✓[39m tests/keys.test.ts [2m([22m[2m11 tests[22m[2m)[22m[33m 12562[2mms[22m[39m
|
|
341
|
+
[33m[2m✓[22m[39m exits 0 with --secret [33m 1104[2mms[22m[39m
|
|
342
|
+
[33m[2m✓[22m[39m outputs ANON_KEY= line [33m 1075[2mms[22m[39m
|
|
343
|
+
[33m[2m✓[22m[39m outputs SERVICE_ROLE_KEY= line [33m 1066[2mms[22m[39m
|
|
344
|
+
[33m[2m✓[22m[39m ANON_KEY is a valid three-part JWT [33m 1024[2mms[22m[39m
|
|
345
|
+
[33m[2m✓[22m[39m SERVICE_ROLE_KEY payload has role: service_role [33m 1088[2mms[22m[39m
|
|
346
|
+
[33m[2m✓[22m[39m JWT has exp in the future [33m 1030[2mms[22m[39m
|
|
347
|
+
[33m[2m✓[22m[39m --exp-years changes the expiry window [33m 2097[2mms[22m[39m
|
|
348
|
+
[33m[2m✓[22m[39m reads JWT_SECRET from environment variable [33m 998[2mms[22m[39m
|
|
349
|
+
[33m[2m✓[22m[39m reads JWT_SECRET from .env file [33m 1054[2mms[22m[39m
|
|
350
|
+
[33m[2m✓[22m[39m exits non-zero when no secret is available [33m 1029[2mms[22m[39m
|
|
351
|
+
[33m[2m✓[22m[39m keys --help shows --secret and --exp-years options [33m 992[2mms[22m[39m
|
|
352
|
+
[32m✓[39m tests/augmentation-generator.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 17[2mms[22m[39m
|
|
353
|
+
[32m✓[39m tests/type-resolver.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 14[2mms[22m[39m
|
|
354
|
+
[32m✓[39m tests/engine-push-output.test.ts [2m([22m[2m7 tests[22m[2m)[22m[32m 6[2mms[22m[39m
|
|
355
|
+
[32m✓[39m tests/ui-messages.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
150
356
|
[32m✓[39m tests/ensure-binary.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 10[2mms[22m[39m
|
|
151
357
|
[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
|
|
152
358
|
[22m[39m created package.json
|
|
@@ -158,6 +364,16 @@
|
|
|
158
364
|
created public/.gitkeep
|
|
159
365
|
created .gitignore
|
|
160
366
|
|
|
367
|
+
[32m✓[39m tests/tsx-runner.test.ts [2m([22m[2m7 tests[22m[2m)[22m[33m 2937[2mms[22m[39m
|
|
368
|
+
[33m[2m✓[22m[39m evaluates a simple expression and returns stdout [33m 430[2mms[22m[39m
|
|
369
|
+
[33m[2m✓[22m[39m evaluates TypeScript syntax (type annotations) [33m 367[2mms[22m[39m
|
|
370
|
+
[33m[2m✓[22m[39m can serialize a JSON object to stdout [33m 459[2mms[22m[39m
|
|
371
|
+
[33m[2m✓[22m[39m returns non-zero exit code on syntax error [33m 379[2mms[22m[39m
|
|
372
|
+
[33m[2m✓[22m[39m returns non-zero exit code on runtime error [33m 370[2mms[22m[39m
|
|
373
|
+
[33m[2m✓[22m[39m captures stderr separately from stdout [33m 372[2mms[22m[39m
|
|
374
|
+
[33m[2m✓[22m[39m runs a .ts file and returns its stdout [33m 556[2mms[22m[39m
|
|
375
|
+
[32m✓[39m tests/normalize-admin-config.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
376
|
+
[32m✓[39m tests/ui-confirm.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 8[2mms[22m[39m
|
|
161
377
|
[90mstdout[2m | tests/app-command.test.ts[2m > [22m[2msupatype app add --static[2m > [22m[2mcreates the static directory when missing
|
|
162
378
|
[22m[39m created package.json
|
|
163
379
|
created supatype.config.ts
|
|
@@ -168,47 +384,36 @@
|
|
|
168
384
|
created public/.gitkeep
|
|
169
385
|
created .gitignore
|
|
170
386
|
|
|
171
|
-
[32m✓[39m tests/app-command.test.ts [2m([22m[2m2 tests[22m[2m)[22m[33m 2105[2mms[22m[39m
|
|
172
|
-
[33m[2m✓[22m[39m sets app.mode=static and static_dir in supatype.config.ts [33m 1095[2mms[22m[39m
|
|
173
|
-
[33m[2m✓[22m[39m creates the static directory when missing [33m 1008[2mms[22m[39m
|
|
174
|
-
[32m✓[39m tests/normalize-admin-config.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 7[2mms[22m[39m
|
|
175
387
|
[32m✓[39m tests/docker-postgres.test.ts [2m([22m[2m5 tests[22m[2m)[22m[32m 5[2mms[22m[39m
|
|
176
|
-
[32m✓[39m tests/
|
|
177
|
-
[32m✓[39m tests/
|
|
178
|
-
|
|
179
|
-
[33m[2m✓[22m[39m
|
|
180
|
-
[33m[2m✓[22m[39m
|
|
181
|
-
|
|
182
|
-
[33m[2m✓[22m[39m
|
|
183
|
-
[33m[2m✓[22m[39m
|
|
184
|
-
[33m[2m✓[22m[39m
|
|
185
|
-
[33m[2m✓[22m[39m
|
|
186
|
-
[33m[2m✓[22m[39m
|
|
187
|
-
[33m[2m✓[22m[39m
|
|
188
|
-
[33m[2m✓[22m[39m
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
388
|
+
[32m✓[39m tests/seed-discover.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 14[2mms[22m[39m
|
|
389
|
+
[32m✓[39m tests/studio-admin-roles.test.ts [2m([22m[2m3 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
390
|
+
[32m✓[39m tests/app-command.test.ts [2m([22m[2m2 tests[22m[2m)[22m[33m 2183[2mms[22m[39m
|
|
391
|
+
[33m[2m✓[22m[39m sets app.mode=static and static_dir in supatype.config.ts [33m 1081[2mms[22m[39m
|
|
392
|
+
[33m[2m✓[22m[39m creates the static directory when missing [33m 1100[2mms[22m[39m
|
|
393
|
+
[32m✓[39m tests/cli-help.test.ts [2m([22m[2m16 tests[22m[2m)[22m[33m 16526[2mms[22m[39m
|
|
394
|
+
[33m[2m✓[22m[39m --help lists all top-level commands [33m 1119[2mms[22m[39m
|
|
395
|
+
[33m[2m✓[22m[39m --version prints a semver string [33m 1022[2mms[22m[39m
|
|
396
|
+
[33m[2m✓[22m[39m self-update --help describes the command [33m 1026[2mms[22m[39m
|
|
397
|
+
[33m[2m✓[22m[39m init --help describes the init command [33m 986[2mms[22m[39m
|
|
398
|
+
[33m[2m✓[22m[39m push --help describes the push command and --yes flag [33m 960[2mms[22m[39m
|
|
399
|
+
[33m[2m✓[22m[39m diff --help describes the diff command [33m 1013[2mms[22m[39m
|
|
400
|
+
[33m[2m✓[22m[39m pull --help describes scaffold pull command [33m 1109[2mms[22m[39m
|
|
401
|
+
[33m[2m✓[22m[39m doctor --help describes drift report command [33m 1101[2mms[22m[39m
|
|
402
|
+
[33m[2m✓[22m[39m introspect --help describes database introspection command [33m 1111[2mms[22m[39m
|
|
403
|
+
[33m[2m✓[22m[39m adopt --help describes adoption ceremony command [33m 1031[2mms[22m[39m
|
|
404
|
+
[33m[2m✓[22m[39m reset --help shows --yes flag [33m 1054[2mms[22m[39m
|
|
405
|
+
[33m[2m✓[22m[39m app --help describes the app command with add/remove subcommands [33m 1001[2mms[22m[39m
|
|
406
|
+
[33m[2m✓[22m[39m app add --help shows --static and --port options [33m 981[2mms[22m[39m
|
|
407
|
+
[33m[2m✓[22m[39m self-host --help shows compose only (legacy commands hidden) [33m 997[2mms[22m[39m
|
|
408
|
+
[33m[2m✓[22m[39m self-host compose --help shows compose subcommands [33m 988[2mms[22m[39m
|
|
409
|
+
[33m[2m✓[22m[39m unknown command exits non-zero [33m 1019[2mms[22m[39m
|
|
410
|
+
[32m✓[39m tests/pg-spawn-env.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
411
|
+
[32m✓[39m tests/release-pins.test.ts [2m([22m[2m2 tests[22m[2m)[22m[32m 4[2mms[22m[39m
|
|
193
412
|
[32m✓[39m tests/postgres-archive-tag.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 3[2mms[22m[39m
|
|
194
413
|
[32m✓[39m tests/migrate-from-v1.test.ts [2m([22m[2m1 test[22m[2m)[22m[32m 11[2mms[22m[39m
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
[33m[2m✓[22m[39m push --help describes the push command and --yes flag [33m 927[2mms[22m[39m
|
|
201
|
-
[33m[2m✓[22m[39m diff --help describes the diff command [33m 985[2mms[22m[39m
|
|
202
|
-
[33m[2m✓[22m[39m pull --help describes deprecated pull command [33m 1049[2mms[22m[39m
|
|
203
|
-
[33m[2m✓[22m[39m reset --help shows --yes flag [33m 881[2mms[22m[39m
|
|
204
|
-
[33m[2m✓[22m[39m app --help describes the app command with add/remove subcommands [33m 932[2mms[22m[39m
|
|
205
|
-
[33m[2m✓[22m[39m app add --help shows --static and --port options [33m 1008[2mms[22m[39m
|
|
206
|
-
[33m[2m✓[22m[39m self-host --help shows compose only (legacy commands hidden) [33m 1000[2mms[22m[39m
|
|
207
|
-
[33m[2m✓[22m[39m self-host compose --help shows compose subcommands [33m 958[2mms[22m[39m
|
|
208
|
-
[33m[2m✓[22m[39m unknown command exits non-zero [33m 887[2mms[22m[39m
|
|
209
|
-
|
|
210
|
-
[2m Test Files [22m [1m[32m23 passed[39m[22m[90m (23)[39m
|
|
211
|
-
[2m Tests [22m [1m[32m216 passed[39m[22m[90m (216)[39m
|
|
212
|
-
[2m Start at [22m 15:41:44
|
|
213
|
-
[2m Duration [22m 16.26s[2m (transform 2.65s, setup 0ms, import 8.71s, tests 34.52s, environment 4ms)[22m
|
|
414
|
+
|
|
415
|
+
[2m Test Files [22m [1m[32m32 passed[39m[22m[90m (32)[39m
|
|
416
|
+
[2m Tests [22m [1m[32m311 passed[39m[22m[90m (311)[39m
|
|
417
|
+
[2m Start at [22m 07:36:07
|
|
418
|
+
[2m Duration [22m 20.09s[2m (transform 3.26s, setup 0ms, import 9.33s, tests 43.60s, environment 6ms)[22m
|
|
214
419
|
|
package/bin/dev-entry.ts
CHANGED
package/dist/app/framework.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Inspects package.json to determine the framework, then resolves
|
|
4
4
|
* build command, output directory, and SPA mode defaults.
|
|
5
5
|
*/
|
|
6
|
-
import { existsSync, readFileSync } from "node:fs";
|
|
6
|
+
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
7
7
|
import { join, resolve } from "node:path";
|
|
8
8
|
const FRAMEWORK_DEFAULTS = {
|
|
9
9
|
nextjs: { buildCommand: "next build", outputDirectory: "out", spa: false },
|
|
@@ -174,7 +174,6 @@ export function validateBuildOutput(outputDir, maxSizeMb) {
|
|
|
174
174
|
return null;
|
|
175
175
|
}
|
|
176
176
|
function findHtmlFile(dir) {
|
|
177
|
-
const { readdirSync, statSync } = require("node:fs");
|
|
178
177
|
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
179
178
|
if (entry.isFile() && entry.name.endsWith(".html"))
|
|
180
179
|
return true;
|
|
@@ -186,7 +185,6 @@ function findHtmlFile(dir) {
|
|
|
186
185
|
return false;
|
|
187
186
|
}
|
|
188
187
|
function getDirSizeMb(dir) {
|
|
189
|
-
const { readdirSync, statSync } = require("node:fs");
|
|
190
188
|
let size = 0;
|
|
191
189
|
for (const entry of readdirSync(dir, { withFileTypes: true })) {
|
|
192
190
|
const path = join(dir, entry.name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"framework.js","sourceRoot":"","sources":["../../src/app/framework.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"framework.js","sourceRoot":"","sources":["../../src/app/framework.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,20 @@ import { ProcessManager } from "../process-manager.js";
|
|
|
5
5
|
import { type SupatypeProjectConfig } from "../project-config.js";
|
|
6
6
|
/** package.json script name to run (only when app.mode is proxy). */
|
|
7
7
|
export declare function resolveProxyDevScript(config: SupatypeProjectConfig): string | null;
|
|
8
|
+
/** Port from app.upstream (e.g. http://localhost:5285 → 5285). */
|
|
9
|
+
export declare function portFromUpstream(config: SupatypeProjectConfig): number | null;
|
|
10
|
+
/** Free the upstream port and any stale app PID before spawning Vite. */
|
|
11
|
+
export declare function freeProxyDevPort(pidDir: string, port: number): void;
|
|
12
|
+
/**
|
|
13
|
+
* When a package.json script only runs Vite, spawn node + vite.js directly.
|
|
14
|
+
* Avoids Windows shell shims (pnpm → bash → vite) that orphan the real server
|
|
15
|
+
* and break PID-based cleanup / auto-restart.
|
|
16
|
+
*/
|
|
17
|
+
export declare function resolveViteDirectSpawn(appDir: string, script: string, scripts: Record<string, string> | undefined): {
|
|
18
|
+
bin: string;
|
|
19
|
+
args: string[];
|
|
20
|
+
shell: boolean;
|
|
21
|
+
} | null;
|
|
8
22
|
/**
|
|
9
23
|
* Start the configured package.json script for proxy dev.
|
|
10
24
|
* Returns null when not in proxy mode or when the script is missing.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy-dev-app.d.ts","sourceRoot":"","sources":["../../src/app/proxy-dev-app.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"proxy-dev-app.d.ts","sourceRoot":"","sources":["../../src/app/proxy-dev-app.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAE,cAAc,EAAW,MAAM,uBAAuB,CAAA;AAC/D,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAA;AAIxF,qEAAqE;AACrE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAIlF;AAED,kEAAkE;AAClE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,qBAAqB,GAAG,MAAM,GAAG,IAAI,CAW7E;AAmDD,yEAAyE;AACzE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAInE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,GAC1C;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,GAAG,IAAI,CAexD;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,qBAAqB,EAC7B,MAAM,EAAE,MAAM,GACb,cAAc,GAAG,IAAI,CAiDvB"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Spawn the frontend dev server during `supatype dev` when app.mode is proxy.
|
|
3
3
|
*/
|
|
4
|
+
import { execSync } from "node:child_process";
|
|
4
5
|
import { existsSync, readFileSync } from "node:fs";
|
|
5
6
|
import { join } from "node:path";
|
|
6
7
|
import { detectPackageManager } from "./framework.js";
|
|
7
|
-
import {
|
|
8
|
+
import { appendDevTaskLog } from "../dev-session.js";
|
|
9
|
+
import { ProcessManager, readPid } from "../process-manager.js";
|
|
8
10
|
import { projectRootFromConfig } from "../project-config.js";
|
|
9
11
|
const DEFAULT_PROXY_DEV_SCRIPT = "start";
|
|
10
12
|
/** package.json script name to run (only when app.mode is proxy). */
|
|
@@ -14,6 +16,102 @@ export function resolveProxyDevScript(config) {
|
|
|
14
16
|
const script = config.app.start?.trim();
|
|
15
17
|
return script && script.length > 0 ? script : DEFAULT_PROXY_DEV_SCRIPT;
|
|
16
18
|
}
|
|
19
|
+
/** Port from app.upstream (e.g. http://localhost:5285 → 5285). */
|
|
20
|
+
export function portFromUpstream(config) {
|
|
21
|
+
const raw = config.app?.upstream?.trim();
|
|
22
|
+
if (!raw)
|
|
23
|
+
return null;
|
|
24
|
+
try {
|
|
25
|
+
const port = new URL(raw).port;
|
|
26
|
+
if (!port)
|
|
27
|
+
return null;
|
|
28
|
+
const n = Number(port);
|
|
29
|
+
return Number.isFinite(n) && n > 0 ? n : null;
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
function killPidTree(pid) {
|
|
36
|
+
if (!Number.isFinite(pid) || pid <= 0)
|
|
37
|
+
return;
|
|
38
|
+
try {
|
|
39
|
+
if (process.platform === "win32") {
|
|
40
|
+
execSync(`taskkill /pid ${pid} /T /F`, { stdio: "ignore" });
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
execSync(`kill -9 ${pid}`, { stdio: "ignore" });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
/* already gone */
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function killPortListeners(port) {
|
|
51
|
+
if (process.platform === "win32") {
|
|
52
|
+
try {
|
|
53
|
+
const out = execSync(`netstat -ano | findstr :${port}`, { encoding: "utf8" });
|
|
54
|
+
const pids = new Set();
|
|
55
|
+
for (const line of out.split("\n")) {
|
|
56
|
+
const match = line.match(/LISTENING\s+(\d+)/);
|
|
57
|
+
if (match?.[1])
|
|
58
|
+
pids.add(match[1]);
|
|
59
|
+
}
|
|
60
|
+
for (const pid of pids) {
|
|
61
|
+
try {
|
|
62
|
+
execSync(`taskkill /pid ${pid} /T /F`, { stdio: "ignore" });
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
/* already gone */
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
/* nothing listening */
|
|
71
|
+
}
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
try {
|
|
75
|
+
const out = execSync(`lsof -ti :${port}`, { encoding: "utf8" });
|
|
76
|
+
for (const pid of out.trim().split(/\s+/)) {
|
|
77
|
+
try {
|
|
78
|
+
execSync(`kill -9 ${pid}`, { stdio: "ignore" });
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
/* already gone */
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch {
|
|
86
|
+
/* nothing listening */
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/** Free the upstream port and any stale app PID before spawning Vite. */
|
|
90
|
+
export function freeProxyDevPort(pidDir, port) {
|
|
91
|
+
const stalePid = readPid(pidDir, "app");
|
|
92
|
+
if (stalePid)
|
|
93
|
+
killPidTree(stalePid);
|
|
94
|
+
killPortListeners(port);
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* When a package.json script only runs Vite, spawn node + vite.js directly.
|
|
98
|
+
* Avoids Windows shell shims (pnpm → bash → vite) that orphan the real server
|
|
99
|
+
* and break PID-based cleanup / auto-restart.
|
|
100
|
+
*/
|
|
101
|
+
export function resolveViteDirectSpawn(appDir, script, scripts) {
|
|
102
|
+
const body = scripts?.[script]?.trim() ?? "";
|
|
103
|
+
if (!body)
|
|
104
|
+
return null;
|
|
105
|
+
const runsVite = body === "vite" ||
|
|
106
|
+
/^vite\s/.test(body) ||
|
|
107
|
+
body.includes("vite/bin/vite");
|
|
108
|
+
if (!runsVite)
|
|
109
|
+
return null;
|
|
110
|
+
const viteJs = join(appDir, "node_modules", "vite", "bin", "vite.js");
|
|
111
|
+
if (!existsSync(viteJs))
|
|
112
|
+
return null;
|
|
113
|
+
return { bin: process.execPath, args: [viteJs], shell: false };
|
|
114
|
+
}
|
|
17
115
|
/**
|
|
18
116
|
* Start the configured package.json script for proxy dev.
|
|
19
117
|
* Returns null when not in proxy mode or when the script is missing.
|
|
@@ -34,18 +132,24 @@ export function startProxyDevApp(cwd, config, pidDir) {
|
|
|
34
132
|
` Add "scripts.${script}" or set app.start in supatype.config.ts`);
|
|
35
133
|
return null;
|
|
36
134
|
}
|
|
135
|
+
const upstreamPort = portFromUpstream(config);
|
|
136
|
+
const directVite = resolveViteDirectSpawn(appDir, script, pkg.scripts);
|
|
37
137
|
const pm = detectPackageManager(appDir);
|
|
38
|
-
const bin = pm;
|
|
39
|
-
const args = pm === "yarn" ? [script] : ["run", script];
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
138
|
+
const bin = directVite?.bin ?? pm;
|
|
139
|
+
const args = directVite?.args ?? (pm === "yarn" ? [script] : ["run", script]);
|
|
140
|
+
const useShell = directVite ? false : process.platform === "win32";
|
|
141
|
+
appendDevTaskLog("app", "app", directVite
|
|
142
|
+
? `Proxy mode: running node vite.js (${appDir})`
|
|
143
|
+
: `Proxy mode: running ${bin} ${args.join(" ")} (${appDir})`);
|
|
144
|
+
if (upstreamPort)
|
|
145
|
+
freeProxyDevPort(pidDir, upstreamPort);
|
|
43
146
|
const manager = new ProcessManager(bin, args, {
|
|
44
147
|
label: "app",
|
|
45
148
|
pidDir,
|
|
46
149
|
cwd: appDir,
|
|
47
150
|
colour: "\x1b[33m",
|
|
48
151
|
shell: useShell,
|
|
152
|
+
...(upstreamPort ? { beforeRestart: () => freeProxyDevPort(pidDir, upstreamPort) } : {}),
|
|
49
153
|
});
|
|
50
154
|
manager.start();
|
|
51
155
|
return manager;
|