@supatype/cli 0.1.6 → 0.1.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +152 -102
- package/.turbo/turbo-typecheck.log +1 -1
- package/LICENSE +202 -0
- package/deno.d.ts +52 -0
- package/dist/app/framework.js +1 -1
- package/dist/app/framework.js.map +1 -1
- package/dist/augmentation-generator.d.ts +22 -0
- package/dist/augmentation-generator.d.ts.map +1 -1
- package/dist/augmentation-generator.js +19 -5
- package/dist/augmentation-generator.js.map +1 -1
- package/dist/binary-cache.d.ts +42 -6
- package/dist/binary-cache.d.ts.map +1 -1
- package/dist/binary-cache.js +76 -44
- package/dist/binary-cache.js.map +1 -1
- package/dist/cache-clean.d.ts +15 -0
- package/dist/cache-clean.d.ts.map +1 -0
- package/dist/cache-clean.js +76 -0
- package/dist/cache-clean.js.map +1 -0
- package/dist/cache-pins.d.ts +51 -0
- package/dist/cache-pins.d.ts.map +1 -0
- package/dist/cache-pins.js +184 -0
- package/dist/cache-pins.js.map +1 -0
- package/dist/cli-artifacts.d.ts +32 -0
- package/dist/cli-artifacts.d.ts.map +1 -0
- package/dist/cli-artifacts.js +49 -0
- package/dist/cli-artifacts.js.map +1 -0
- package/dist/cli-install-method.d.ts +27 -0
- package/dist/cli-install-method.d.ts.map +1 -0
- package/dist/cli-install-method.js +78 -0
- package/dist/cli-install-method.js.map +1 -0
- package/dist/cli-package-version.d.ts +1 -1
- package/dist/cli-package-version.d.ts.map +1 -1
- package/dist/cli-package-version.js +6 -1
- package/dist/cli-package-version.js.map +1 -1
- package/dist/cli-standalone.d.ts +13 -4
- package/dist/cli-standalone.d.ts.map +1 -1
- package/dist/cli-standalone.js +86 -31
- package/dist/cli-standalone.js.map +1 -1
- package/dist/cli-version-embedded.d.ts +10 -0
- package/dist/cli-version-embedded.d.ts.map +1 -0
- package/dist/cli-version-embedded.js +13 -0
- package/dist/cli-version-embedded.js.map +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +7 -1
- package/dist/cli.js.map +1 -1
- package/dist/cloud-credentials.d.ts +34 -0
- package/dist/cloud-credentials.d.ts.map +1 -0
- package/dist/cloud-credentials.js +139 -0
- package/dist/cloud-credentials.js.map +1 -0
- package/dist/commands/add.js +1 -1
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/admin.d.ts +11 -0
- package/dist/commands/admin.d.ts.map +1 -1
- package/dist/commands/admin.js +123 -21
- package/dist/commands/admin.js.map +1 -1
- package/dist/commands/adopt.js +1 -1
- package/dist/commands/adopt.js.map +1 -1
- package/dist/commands/app.js +2 -2
- package/dist/commands/app.js.map +1 -1
- package/dist/commands/cache.d.ts +1 -1
- package/dist/commands/cache.d.ts.map +1 -1
- package/dist/commands/cache.js +69 -73
- package/dist/commands/cache.js.map +1 -1
- package/dist/commands/cloud.d.ts.map +1 -1
- package/dist/commands/cloud.js +32 -8
- package/dist/commands/cloud.js.map +1 -1
- package/dist/commands/db.d.ts +3 -2
- package/dist/commands/db.d.ts.map +1 -1
- package/dist/commands/db.js +149 -3
- package/dist/commands/db.js.map +1 -1
- package/dist/commands/deploy.d.ts +9 -9
- package/dist/commands/deploy.js +12 -12
- package/dist/commands/deploy.js.map +1 -1
- package/dist/commands/dev.d.ts +3 -3
- package/dist/commands/dev.d.ts.map +1 -1
- package/dist/commands/dev.js +63 -23
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts +28 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +60 -3
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/engine.d.ts +1 -1
- package/dist/commands/engine.js +1 -1
- package/dist/commands/functions.d.ts +7 -0
- package/dist/commands/functions.d.ts.map +1 -1
- package/dist/commands/functions.js +45 -11
- package/dist/commands/functions.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +5 -1
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/hooks.d.ts +12 -0
- package/dist/commands/hooks.d.ts.map +1 -0
- package/dist/commands/hooks.js +118 -0
- package/dist/commands/hooks.js.map +1 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +64 -30
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/internal.d.ts +6 -0
- package/dist/commands/internal.d.ts.map +1 -0
- package/dist/commands/internal.js +22 -0
- package/dist/commands/internal.js.map +1 -0
- package/dist/commands/link-helpers.d.ts.map +1 -1
- package/dist/commands/link-helpers.js +8 -2
- package/dist/commands/link-helpers.js.map +1 -1
- package/dist/commands/login.d.ts +7 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +110 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/logs.d.ts +1 -1
- package/dist/commands/migrate.js +5 -5
- package/dist/commands/migrate.js.map +1 -1
- package/dist/commands/pg.d.ts +1 -1
- package/dist/commands/pg.js +1 -1
- package/dist/commands/plugins.js +1 -1
- package/dist/commands/plugins.js.map +1 -1
- package/dist/commands/pull.js +2 -2
- package/dist/commands/pull.js.map +1 -1
- package/dist/commands/push.d.ts.map +1 -1
- package/dist/commands/push.js +110 -7
- package/dist/commands/push.js.map +1 -1
- package/dist/commands/self-host.d.ts +1 -1
- package/dist/commands/self-host.js +1 -1
- package/dist/commands/self-update.d.ts +3 -2
- package/dist/commands/self-update.d.ts.map +1 -1
- package/dist/commands/self-update.js +31 -16
- package/dist/commands/self-update.js.map +1 -1
- package/dist/commands/status.d.ts +1 -1
- package/dist/commands/update.d.ts +1 -1
- package/dist/commands/update.js +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +19 -4
- package/dist/config.js.map +1 -1
- package/dist/db-preflight.d.ts +78 -0
- package/dist/db-preflight.d.ts.map +1 -0
- package/dist/db-preflight.js +452 -0
- package/dist/db-preflight.js.map +1 -0
- package/dist/dev-compose.d.ts +4 -4
- package/dist/dev-compose.d.ts.map +1 -1
- package/dist/dev-compose.js +143 -88
- package/dist/dev-compose.js.map +1 -1
- package/dist/dev-log-filter.d.ts +1 -1
- package/dist/dev-log-filter.d.ts.map +1 -1
- package/dist/dev-log-filter.js +1 -1
- package/dist/dev-log-filter.js.map +1 -1
- package/dist/dev-ports.d.ts +2 -2
- package/dist/dev-ports.d.ts.map +1 -1
- package/dist/dev-ports.js +2 -2
- package/dist/dev-ports.js.map +1 -1
- package/dist/dev-session.d.ts +5 -5
- package/dist/dev-session.d.ts.map +1 -1
- package/dist/dev-session.js +6 -6
- package/dist/dev-session.js.map +1 -1
- package/dist/dev-shutdown.d.ts +5 -5
- package/dist/dev-shutdown.d.ts.map +1 -1
- package/dist/dev-shutdown.js +7 -7
- package/dist/dev-shutdown.js.map +1 -1
- package/dist/dev-task-colors.d.ts +1 -1
- package/dist/dev-task-colors.d.ts.map +1 -1
- package/dist/dev-task-colors.js +1 -1
- package/dist/dev-task-colors.js.map +1 -1
- package/dist/docker-postgres.d.ts +5 -5
- package/dist/docker-postgres.d.ts.map +1 -1
- package/dist/docker-postgres.js +5 -5
- package/dist/docker-postgres.js.map +1 -1
- package/dist/docker-runtime.d.ts +2 -2
- package/dist/docker-runtime.d.ts.map +1 -1
- package/dist/docker-runtime.js +5 -5
- package/dist/docker-runtime.js.map +1 -1
- package/dist/engine-client.d.ts +1 -1
- package/dist/engine-client.js +3 -3
- package/dist/engine-client.js.map +1 -1
- package/dist/engine-push-output.js +1 -1
- package/dist/engine-push-output.js.map +1 -1
- package/dist/ensure-binary.d.ts.map +1 -1
- package/dist/ensure-binary.js +17 -0
- package/dist/ensure-binary.js.map +1 -1
- package/dist/ensure-component-binaries.js +1 -1
- package/dist/ensure-component-binaries.js.map +1 -1
- package/dist/env-file.d.ts +40 -2
- package/dist/env-file.d.ts.map +1 -1
- package/dist/env-file.js +132 -11
- package/dist/env-file.js.map +1 -1
- package/dist/field-masking-tier.d.ts +50 -0
- package/dist/field-masking-tier.d.ts.map +1 -0
- package/dist/field-masking-tier.js +91 -0
- package/dist/field-masking-tier.js.map +1 -0
- package/dist/functions-deno-types.d.ts +24 -0
- package/dist/functions-deno-types.d.ts.map +1 -0
- package/dist/functions-deno-types.js +155 -0
- package/dist/functions-deno-types.js.map +1 -0
- package/dist/functions-router-gen.js +1 -1
- package/dist/gitignore.d.ts +2 -2
- package/dist/gitignore.d.ts.map +1 -1
- package/dist/gitignore.js +3 -3
- package/dist/gitignore.js.map +1 -1
- package/dist/hook-upload.d.ts +30 -0
- package/dist/hook-upload.d.ts.map +1 -0
- package/dist/hook-upload.js +86 -0
- package/dist/hook-upload.js.map +1 -0
- package/dist/hooks-generator.d.ts +8 -0
- package/dist/hooks-generator.d.ts.map +1 -0
- package/dist/hooks-generator.js +332 -0
- package/dist/hooks-generator.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/init-project-detect.d.ts +1 -1
- package/dist/init-project-detect.d.ts.map +1 -1
- package/dist/init-project-detect.js +1 -1
- package/dist/init-project-detect.js.map +1 -1
- package/dist/link.d.ts +4 -0
- package/dist/link.d.ts.map +1 -1
- package/dist/link.js +2 -0
- package/dist/link.js.map +1 -1
- package/dist/local-secrets.d.ts +71 -0
- package/dist/local-secrets.d.ts.map +1 -0
- package/dist/local-secrets.js +100 -0
- package/dist/local-secrets.js.map +1 -0
- package/dist/main.d.ts +2 -0
- package/dist/main.d.ts.map +1 -0
- package/dist/main.js +20 -0
- package/dist/main.js.map +1 -0
- package/dist/model-hooks.d.ts +73 -0
- package/dist/model-hooks.d.ts.map +1 -0
- package/dist/model-hooks.js +211 -0
- package/dist/model-hooks.js.map +1 -0
- package/dist/pgbouncer-userlist.d.ts +1 -1
- package/dist/pgbouncer-userlist.d.ts.map +1 -1
- package/dist/pgbouncer-userlist.js +2 -2
- package/dist/pgbouncer-userlist.js.map +1 -1
- package/dist/postgres-ctl.d.ts +12 -1
- package/dist/postgres-ctl.d.ts.map +1 -1
- package/dist/postgres-ctl.js +28 -5
- package/dist/postgres-ctl.js.map +1 -1
- package/dist/process-manager.d.ts +2 -2
- package/dist/process-manager.d.ts.map +1 -1
- package/dist/process-manager.js +4 -4
- package/dist/process-manager.js.map +1 -1
- package/dist/project-config.d.ts +122 -2
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js +150 -1
- package/dist/project-config.js.map +1 -1
- package/dist/pull-utils.d.ts +2 -2
- package/dist/pull-utils.d.ts.map +1 -1
- package/dist/pull-utils.js +4 -4
- package/dist/pull-utils.js.map +1 -1
- package/dist/realtime-launch.js +1 -1
- package/dist/realtime-launch.js.map +1 -1
- package/dist/release-pins.d.ts +1 -1
- package/dist/release-pins.js +2 -2
- package/dist/release-pins.js.map +1 -1
- package/dist/resolve-api-url.js +1 -1
- package/dist/resolve-api-url.js.map +1 -1
- package/dist/resolve-target.d.ts +4 -0
- package/dist/resolve-target.d.ts.map +1 -1
- package/dist/resolve-target.js +69 -73
- package/dist/resolve-target.js.map +1 -1
- package/dist/rest-cache-admin.js +2 -2
- package/dist/rest-cache-admin.js.map +1 -1
- package/dist/runtime-routes.d.ts +1 -1
- package/dist/runtime-routes.js +1 -1
- package/dist/schema-ast-v2.d.ts +5 -4
- package/dist/schema-ast-v2.d.ts.map +1 -1
- package/dist/schema-ast-v2.js +5 -3
- package/dist/schema-ast-v2.js.map +1 -1
- package/dist/schema-push-lock.d.ts.map +1 -1
- package/dist/schema-push-lock.js +43 -16
- package/dist/schema-push-lock.js.map +1 -1
- package/dist/scripts/postinstall.d.ts +1 -1
- package/dist/scripts/postinstall.js +1 -1
- package/dist/self-host-compose.d.ts +26 -2
- package/dist/self-host-compose.d.ts.map +1 -1
- package/dist/self-host-compose.js +305 -73
- package/dist/self-host-compose.js.map +1 -1
- package/dist/service-role-check.d.ts +21 -0
- package/dist/service-role-check.d.ts.map +1 -0
- package/dist/service-role-check.js +85 -0
- package/dist/service-role-check.js.map +1 -0
- package/dist/storage-provision.d.ts +1 -1
- package/dist/storage-provision.js +3 -3
- package/dist/storage-provision.js.map +1 -1
- package/dist/studio-dev-server.d.ts +1 -1
- package/dist/studio-dev-server.d.ts.map +1 -1
- package/dist/systemd.d.ts +1 -1
- package/dist/systemd.js +1 -1
- package/dist/target-client.d.ts +17 -0
- package/dist/target-client.d.ts.map +1 -1
- package/dist/target-client.js +69 -17
- package/dist/target-client.js.map +1 -1
- package/dist/tsx-runner.js +1 -1
- package/dist/tsx-runner.js.map +1 -1
- package/dist/type-extractor.d.ts.map +1 -1
- package/dist/type-extractor.js +738 -34
- package/dist/type-extractor.js.map +1 -1
- package/dist/type-resolver.js +1 -1
- package/dist/type-resolver.js.map +1 -1
- package/dist/ui/brand.d.ts +1 -1
- package/dist/ui/brand.js +1 -1
- package/dist/ui/components/LogoWordmark.d.ts +1 -1
- package/dist/ui/components/LogoWordmark.d.ts.map +1 -1
- package/dist/ui/components/LogoWordmark.js +1 -1
- package/dist/ui/components/LogoWordmark.js.map +1 -1
- package/dist/ui/components/SelectField.js +1 -1
- package/dist/ui/components/SelectField.js.map +1 -1
- package/dist/ui/confirm.d.ts +1 -1
- package/dist/ui/confirm.js +1 -1
- package/dist/ui/fatal.d.ts +1 -1
- package/dist/ui/fatal.d.ts.map +1 -1
- package/dist/ui/fatal.js +1 -1
- package/dist/ui/fatal.js.map +1 -1
- package/dist/ui/flows/prompt-fields.js +1 -1
- package/dist/ui/flows/prompt-fields.js.map +1 -1
- package/dist/ui/interactive.d.ts +1 -1
- package/dist/ui/interactive.d.ts.map +1 -1
- package/dist/ui/interactive.js +1 -1
- package/dist/ui/interactive.js.map +1 -1
- package/dist/ui/progress.d.ts +1 -1
- package/dist/ui/progress.js +1 -1
- package/dist/ui/runtime/command-chrome.js +2 -2
- package/dist/ui/runtime/command-chrome.js.map +1 -1
- package/dist/ui/runtime/run-clack-flow.js +1 -1
- package/dist/ui/runtime/run-clack-flow.js.map +1 -1
- package/dist/ui/runtime/stdin-after-ink.d.ts.map +1 -1
- package/dist/ui/runtime/stdin-after-ink.js +4 -2
- package/dist/ui/runtime/stdin-after-ink.js.map +1 -1
- package/dist/ui/theme.d.ts +1 -1
- package/dist/ui/theme.js +1 -1
- package/dist/valkey-sidecar.d.ts +1 -1
- package/dist/valkey-sidecar.d.ts.map +1 -1
- package/dist/valkey-sidecar.js +2 -2
- package/dist/valkey-sidecar.js.map +1 -1
- package/package.json +6 -2
- package/scripts/build-release-artifacts.sh +112 -0
- package/scripts/generate-homebrew-formula.mjs +123 -0
- package/scripts/mirror-deno-release.sh +1 -1
- package/src/TYPE-RESOLUTION.md +31 -31
- package/src/app/framework.ts +1 -1
- package/src/augmentation-generator.ts +19 -6
- package/src/binary-cache.ts +94 -47
- package/src/cache-clean.ts +81 -0
- package/src/cache-pins.ts +243 -0
- package/src/cli-artifacts.ts +65 -0
- package/src/cli-install-method.ts +87 -0
- package/src/cli-package-version.ts +5 -1
- package/src/cli-standalone.ts +116 -34
- package/src/cli-version-embedded.ts +12 -0
- package/src/cli.ts +7 -1
- package/src/cloud-credentials.ts +183 -0
- package/src/commands/add.ts +1 -1
- package/src/commands/admin.ts +142 -27
- package/src/commands/adopt.ts +1 -1
- package/src/commands/app.ts +2 -2
- package/src/commands/cache.ts +92 -77
- package/src/commands/cloud.ts +32 -8
- package/src/commands/db.ts +164 -3
- package/src/commands/deploy.ts +12 -12
- package/src/commands/dev.ts +72 -23
- package/src/commands/doctor.ts +69 -3
- package/src/commands/engine.ts +1 -1
- package/src/commands/functions.ts +47 -10
- package/src/commands/generate.ts +5 -1
- package/src/commands/hooks.ts +138 -0
- package/src/commands/init.ts +65 -31
- package/src/commands/internal.ts +23 -0
- package/src/commands/link-helpers.ts +9 -2
- package/src/commands/login.ts +127 -0
- package/src/commands/logs.ts +1 -1
- package/src/commands/migrate.ts +5 -5
- package/src/commands/pg.ts +1 -1
- package/src/commands/plugins.ts +1 -1
- package/src/commands/pull.ts +2 -2
- package/src/commands/push.ts +124 -7
- package/src/commands/self-host.ts +1 -1
- package/src/commands/self-update.ts +41 -19
- package/src/commands/status.ts +1 -1
- package/src/commands/update.ts +1 -1
- package/src/config.ts +23 -4
- package/src/db-preflight.ts +575 -0
- package/src/dev-compose.ts +158 -89
- package/src/dev-log-filter.ts +1 -1
- package/src/dev-ports.ts +3 -3
- package/src/dev-session.ts +6 -6
- package/src/dev-shutdown.ts +8 -8
- package/src/dev-task-colors.ts +1 -1
- package/src/docker-postgres.ts +6 -6
- package/src/docker-runtime.ts +5 -5
- package/src/engine-client.ts +3 -3
- package/src/engine-push-output.ts +1 -1
- package/src/ensure-binary.ts +20 -0
- package/src/ensure-component-binaries.ts +1 -1
- package/src/env-file.ts +157 -11
- package/src/field-masking-tier.ts +107 -0
- package/src/functions-deno-types.ts +188 -0
- package/src/functions-router-gen.ts +1 -1
- package/src/gitignore.ts +3 -3
- package/src/hook-upload.ts +107 -0
- package/src/hooks-generator.ts +352 -0
- package/src/index.ts +1 -1
- package/src/init-project-detect.ts +1 -1
- package/src/link.ts +7 -0
- package/src/local-secrets.ts +104 -0
- package/src/main.ts +20 -0
- package/src/model-hooks.ts +260 -0
- package/src/pgbouncer-userlist.ts +2 -2
- package/src/postgres-ctl.ts +32 -5
- package/src/process-manager.ts +4 -4
- package/src/project-config.ts +237 -3
- package/src/pull-utils.ts +4 -4
- package/src/realtime-launch.ts +1 -1
- package/src/release-pins.ts +2 -2
- package/src/resolve-api-url.ts +1 -1
- package/src/resolve-target.ts +113 -68
- package/src/rest-cache-admin.ts +2 -2
- package/src/runtime-routes.ts +2 -2
- package/src/schema-ast-v2.ts +8 -5
- package/src/schema-push-lock.ts +56 -17
- package/src/scripts/postinstall.ts +1 -1
- package/src/self-host-compose.ts +348 -72
- package/src/service-role-check.ts +111 -0
- package/src/storage-provision.ts +3 -3
- package/src/studio-dev-server.ts +1 -1
- package/src/systemd.ts +1 -1
- package/src/target-client.ts +105 -18
- package/src/tsx-runner.ts +1 -1
- package/src/type-extractor.ts +885 -30
- package/src/type-resolver.ts +1 -1
- package/src/ui/README.md +1 -1
- package/src/ui/brand.ts +1 -1
- package/src/ui/components/LogoWordmark.tsx +1 -1
- package/src/ui/components/SelectField.tsx +1 -1
- package/src/ui/confirm.ts +1 -1
- package/src/ui/fatal.ts +1 -1
- package/src/ui/flows/prompt-fields.tsx +1 -1
- package/src/ui/interactive.ts +1 -1
- package/src/ui/progress.ts +1 -1
- package/src/ui/runtime/command-chrome.ts +2 -2
- package/src/ui/runtime/run-clack-flow.tsx +1 -1
- package/src/ui/runtime/stdin-after-ink.ts +4 -2
- package/src/ui/theme.ts +1 -1
- package/src/valkey-sidecar.ts +2 -2
- package/tests/access-composition.test.ts +667 -0
- package/tests/admin-studio-membership.test.ts +121 -0
- package/tests/api-schemas.test.ts +83 -0
- package/tests/archive-name-alias.test.ts +42 -0
- package/tests/augmentation-generator.test.ts +28 -0
- package/tests/cache-clean.test.ts +206 -0
- package/tests/cli-help.test.ts +11 -2
- package/tests/cli-install-method.test.ts +66 -0
- package/tests/command-chrome-coverage.test.ts +31 -26
- package/tests/command-chrome-wrap.test.ts +1 -0
- package/tests/db-preflight.test.ts +72 -0
- package/tests/doctor-render.test.ts +62 -0
- package/tests/doctor-service-role.test.ts +55 -0
- package/tests/engine-push-output.test.ts +1 -1
- package/tests/env-file.test.ts +121 -0
- package/tests/external-database-compose.test.ts +184 -0
- package/tests/external-database-config.test.ts +154 -0
- package/tests/field-masking-tier.test.ts +184 -0
- package/tests/functions-deno-types.test.ts +197 -0
- package/tests/homebrew-formula.test.ts +100 -0
- package/tests/hook-upload.test.ts +125 -0
- package/tests/hooks-generator.test.ts +212 -0
- package/tests/init.test.ts +5 -2
- package/tests/keys.test.ts +8 -2
- package/tests/local-secrets.test.ts +92 -0
- package/tests/model-hooks.test.ts +322 -0
- package/tests/runtime-contract.test.ts +113 -1
- package/tests/service-role-check.test.ts +109 -0
- package/tests/service-role-routes.test.ts +51 -0
- package/tests/storage-provision.test.ts +1 -1
- package/tests/target-client-refresh.test.ts +94 -0
- package/tests/type-extractor.test.ts +187 -0
- package/tsconfig.tsbuildinfo +1 -1
- package/vitest.config.ts +7 -1
- package/scripts/build-release-bundle.mjs +0 -27
- package/tests/engine-distribution.test.ts +0 -418
package/dist/engine-client.d.ts
CHANGED
package/dist/engine-client.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* engine-client.ts
|
|
2
|
+
* engine-client.ts: subprocess-based engine invocation.
|
|
3
3
|
*
|
|
4
4
|
* Replaces the former HTTP-based engine client (Docker container API).
|
|
5
5
|
* All callers use the same interface; only the transport changed.
|
|
@@ -47,7 +47,7 @@ async function getEngineBin() {
|
|
|
47
47
|
throw err;
|
|
48
48
|
// Otherwise (no valid project config) fall through to default cache scan.
|
|
49
49
|
}
|
|
50
|
-
// No config found
|
|
50
|
+
// No config found: scan the cache for any available engine binary.
|
|
51
51
|
const platform = currentPlatform();
|
|
52
52
|
const engineCacheDir = join(homedir(), ".supatype", "cache", "engine");
|
|
53
53
|
try {
|
|
@@ -140,7 +140,7 @@ export async function engineRequest(endpoint, body) {
|
|
|
140
140
|
return JSON.parse(result.stdout);
|
|
141
141
|
}
|
|
142
142
|
catch {
|
|
143
|
-
// Non-JSON stdout
|
|
143
|
+
// Non-JSON stdout: return as message.
|
|
144
144
|
return { message: result.stdout.trim() };
|
|
145
145
|
}
|
|
146
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-client.js","sourceRoot":"","sources":["../src/engine-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACvF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAC9D,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAiDjD,MAAM,OAAO,WAAY,SAAQ,KAAK;IAGlB;IACA;IAHlB,YACE,OAAe,EACC,QAAgB,EAChB,QAAuB;QAEvC,KAAK,CAAC,OAAO,CAAC,CAAA;QAHE,aAAQ,GAAR,QAAQ,CAAQ;QAChB,aAAQ,GAAR,QAAQ,CAAe;QAGvC,IAAI,CAAC,IAAI,GAAG,aAAa,CAAA;IAC3B,CAAC;CACF;AAED,8EAA8E;AAC9E,2BAA2B;AAC3B,8EAA8E;AAE9E,IAAI,UAAU,GAAkB,IAAI,CAAA;AAEpC,KAAK,UAAU,YAAY;IACzB,IAAI,UAAU;QAAE,OAAO,UAAU,CAAA;IAEjC,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAA;IAEzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAA;QAC9B,2EAA2E;QAC3E,2EAA2E;QAC3E,UAAU,GAAG,MAAM,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QACjD,OAAO,UAAU,CAAA;IACnB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAChE,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAAE,MAAM,GAAG,CAAA;QACrD,0EAA0E;IAC5E,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"engine-client.js","sourceRoot":"","sources":["../src/engine-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,7 +34,7 @@ export function parseEnginePushOutput(output) {
|
|
|
34
34
|
export function formatEnginePushMessage(result) {
|
|
35
35
|
if (result.status === "up_to_date") {
|
|
36
36
|
if (result.admin_refreshed) {
|
|
37
|
-
return "Schema up to date
|
|
37
|
+
return "Schema up to date, Studio metadata synced.";
|
|
38
38
|
}
|
|
39
39
|
return "Schema up to date.";
|
|
40
40
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine-push-output.js","sourceRoot":"","sources":["../src/engine-push-output.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAI,MAAc;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC7B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAQ;QACpE,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAM,CAAA;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAA;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,qBAAqB,CAAmB,MAAM,CAAC,CAAA;AACxD,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,uBAAuB,CAAC,MAAwB;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,OAAO,
|
|
1
|
+
{"version":3,"file":"engine-push-output.js","sourceRoot":"","sources":["../src/engine-push-output.ts"],"names":[],"mappings":"AAAA;;GAEG;AASH,8EAA8E;AAC9E,MAAM,UAAU,qBAAqB,CAAI,MAAc;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAA;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAEzB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC7B,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;YAAE,SAAQ;QACpE,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,SAAS,CAAM,CAAA;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAA;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAc;IAClD,OAAO,qBAAqB,CAAmB,MAAM,CAAC,CAAA;AACxD,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,uBAAuB,CAAC,MAAwB;IAC9D,IAAI,MAAM,CAAC,MAAM,KAAK,YAAY,EAAE,CAAC;QACnC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,OAAO,4CAA4C,CAAA;QACrD,CAAC;QACD,OAAO,oBAAoB,CAAA;IAC7B,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAA;IAC7B,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACvC,OAAO,WAAW,GAAG,gBAAgB,CAAA;IACvC,CAAC;IAED,OAAO,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,IAAI,iBAAiB,CAAA;AACpD,CAAC;AAED,MAAM,qBAAqB,GACzB,0FAA0F,CAAA;AAE5F,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,OAAO,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;AAChD,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,kBAAkB,CAAC,MAAc;IAC/C,OAAO,MAAM;SACV,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SAC7B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACf,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QACrB,IAAI,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;QACpB,IAAI,qBAAqB,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;QAC1C,OAAO,IAAI,CAAA;IACb,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC;SACV,IAAI,EAAE,CAAA;AACX,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-binary.d.ts","sourceRoot":"","sources":["../src/ensure-binary.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"ensure-binary.d.ts","sourceRoot":"","sources":["../src/ensure-binary.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAML,KAAK,SAAS,EACf,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAmBhE,wBAAsB,YAAY,CAChC,SAAS,EAAE,SAAS,EACpB,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,MAAM,CAAC,CA+BjB"}
|
package/dist/ensure-binary.js
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { resolveBinary, download, currentPlatform, resolveVersionFor, isCachedBinaryReady, } from "./binary-cache.js";
|
|
5
5
|
import { isDownloadInProgress, waitForComponentDownload } from "./binary-download-lock.js";
|
|
6
|
+
import { currentLibc } from "./cli-artifacts.js";
|
|
7
|
+
/**
|
|
8
|
+
* Components are published for glibc only, so on Alpine the CLI itself runs (it has a musl
|
|
9
|
+
* build) while everything it downloads cannot start. Said once, before the first download,
|
|
10
|
+
* because the alternative is a dynamic loader error naming a file the user never asked for.
|
|
11
|
+
*/
|
|
12
|
+
let warnedAboutMusl = false;
|
|
13
|
+
function warnIfMusl(component) {
|
|
14
|
+
if (warnedAboutMusl || currentLibc() !== "musl")
|
|
15
|
+
return;
|
|
16
|
+
warnedAboutMusl = true;
|
|
17
|
+
console.warn(`[supatype] This is a musl system (Alpine). Component binaries such as ${component} are ` +
|
|
18
|
+
"published for glibc only, so they may fail to start here.\n" +
|
|
19
|
+
"[supatype] Use a glibc image (for example node:22-bookworm) for local stacks, or run " +
|
|
20
|
+
"against a remote target with `supatype link`.");
|
|
21
|
+
}
|
|
6
22
|
export async function ensureBinary(component, config) {
|
|
7
23
|
try {
|
|
8
24
|
return await resolveBinary(component, config);
|
|
@@ -13,6 +29,7 @@ export async function ensureBinary(component, config) {
|
|
|
13
29
|
throw err;
|
|
14
30
|
}
|
|
15
31
|
}
|
|
32
|
+
warnIfMusl(component);
|
|
16
33
|
const version = await resolveVersionFor(component, config);
|
|
17
34
|
const platform = currentPlatform();
|
|
18
35
|
if (isDownloadInProgress(component, version)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-binary.js","sourceRoot":"","sources":["../src/ensure-binary.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,aAAa,EACb,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,mBAAmB,GAEpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;
|
|
1
|
+
{"version":3,"file":"ensure-binary.js","sourceRoot":"","sources":["../src/ensure-binary.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,aAAa,EACb,QAAQ,EACR,eAAe,EACf,iBAAiB,EACjB,mBAAmB,GAEpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,oBAAoB,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAA;AAC1F,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAGhD;;;;GAIG;AACH,IAAI,eAAe,GAAG,KAAK,CAAA;AAC3B,SAAS,UAAU,CAAC,SAAoB;IACtC,IAAI,eAAe,IAAI,WAAW,EAAE,KAAK,MAAM;QAAE,OAAM;IACvD,eAAe,GAAG,IAAI,CAAA;IACtB,OAAO,CAAC,IAAI,CACV,yEAAyE,SAAS,OAAO;QACvF,6DAA6D;QAC7D,uFAAuF;QACvF,+CAA+C,CAClD,CAAA;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAoB,EACpB,MAA6B;IAE7B,IAAI,CAAC;QACH,OAAO,MAAM,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC/C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QAChE,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC5C,MAAM,GAAG,CAAA;QACX,CAAC;IACH,CAAC;IAED,UAAU,CAAC,SAAS,CAAC,CAAA;IAErB,MAAM,OAAO,GAAG,MAAM,iBAAiB,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;IAC1D,MAAM,QAAQ,GAAG,eAAe,EAAE,CAAA;IAElC,IAAI,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,EAAE,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,sCAAsC,SAAS,cAAc,CAAC,CAAA;QAC1E,MAAM,OAAO,GAAG,MAAM,wBAAwB,CAC5C,SAAS,EACT,OAAO,EACP,GAAG,EAAE,CAAC,mBAAmB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,EACvD,CAAC,CAAC,EAAE,EAAE;YACJ,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,KAAK,CAAC,CAAA;QACrD,CAAC,CACF,CAAA;QACD,IAAI,OAAO,KAAK,OAAO,EAAE,CAAC;YACxB,OAAO,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;QACzC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAA;AAC/C,CAAC"}
|
|
@@ -13,7 +13,7 @@ export async function ensureComponentBinaries(config, cwd = process.cwd()) {
|
|
|
13
13
|
}
|
|
14
14
|
const list = describeRequiredHostComponents(components);
|
|
15
15
|
if (provider === "docker") {
|
|
16
|
-
info(`Preparing host CLI tools (${list})
|
|
16
|
+
info(`Preparing host CLI tools (${list}), Compose still runs Postgres and the API stack.`);
|
|
17
17
|
}
|
|
18
18
|
else {
|
|
19
19
|
info(`Preparing local runtime components (${list})…`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ensure-component-binaries.js","sourceRoot":"","sources":["../src/ensure-component-binaries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAapD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAA6B,EAC7B,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAE/C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAClD,CAAC;IAED,MAAM,IAAI,GAAG,8BAA8B,CAAC,UAAU,CAAC,CAAA;IACvD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CACF,6BAA6B,IAAI,
|
|
1
|
+
{"version":3,"file":"ensure-component-binaries.js","sourceRoot":"","sources":["../src/ensure-component-binaries.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAGjD,OAAO,EACL,8BAA8B,EAC9B,sBAAsB,GACvB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AAapD,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,MAA6B,EAC7B,MAAc,OAAO,CAAC,GAAG,EAAE;IAE3B,MAAM,UAAU,GAAG,sBAAsB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtD,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAA;IAE/C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAA;IAClD,CAAC;IAED,MAAM,IAAI,GAAG,8BAA8B,CAAC,UAAU,CAAC,CAAA;IACvD,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAC1B,IAAI,CACF,6BAA6B,IAAI,mDAAmD,CACrF,CAAA;IACH,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,uCAAuC,IAAI,IAAI,CAAC,CAAA;IACvD,CAAC;IAED,MAAM,QAAQ,GAA6B,EAAE,CAAA;IAE7C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAA;YACrC,IAAI,CAAC,GAAG,SAAS,SAAS,CAAC,CAAA;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;YAChE,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;YACrC,KAAK,CAAC,qBAAqB,SAAS,KAAK,OAAO,EAAE,CAAC,CAAA;QACrD,CAAC;IACH,CAAC;IAED,OAAO,EAAE,EAAE,EAAE,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;AAChE,CAAC;AAED,MAAM,UAAU,6BAA6B,CAAC,QAAkC;IAC9E,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAM;IAEjC,IAAI,CAAC,4CAA4C,CAAC,CAAA;IAClD,KAAK,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC9C,IAAI,CAAC,KAAK,SAAS,KAAK,OAAO,EAAE,CAAC,CAAA;IACpC,CAAC;IACD,IAAI,CAAC,2DAA2D,CAAC,CAAA;IACjE,IAAI,CAAC,8EAA8E,CAAC,CAAA;AACtF,CAAC"}
|
package/dist/env-file.d.ts
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Marks a value the CLI wrote from `versions` in `supatype.config.ts`.
|
|
3
|
+
*
|
|
4
|
+
* Provenance, so that removing a pin from config can clean up the stale image reference it left
|
|
5
|
+
* behind *without* deleting a value the operator wrote by hand. Before this, the image keys derived
|
|
6
|
+
* from config were removed unconditionally on every compose run: an operator could override
|
|
7
|
+
* `SUPATYPE_REALTIME_IMAGE` from `.env` and could not override `SUPATYPE_SERVER_IMAGE`, because the
|
|
8
|
+
* latter is derivable from a pin and the former is not. Same file, same shape, different rules.
|
|
9
|
+
*/
|
|
10
|
+
export declare const MANAGED_MARKER = "# supatype:managed, value from versions in supatype.config.ts";
|
|
11
|
+
export interface UpsertOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Keys to delete: but only where the CLI wrote them (see [`MANAGED_MARKER`]). A hand-written value
|
|
14
|
+
* is left alone, because the operator putting an image tag in `.env` is the documented way to run a
|
|
15
|
+
* local build and deleting it silently sent them back to `:latest`.
|
|
16
|
+
*/
|
|
17
|
+
removeManaged?: readonly string[];
|
|
18
|
+
/** Keys in `updates` that come from config and may later be cleaned up. Written with the marker. */
|
|
19
|
+
managed?: readonly string[];
|
|
20
|
+
/** Keys to delete outright, whoever wrote them. For secrets being rotated out. */
|
|
21
|
+
remove?: readonly string[];
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Merge key/value updates into a project `.env`.
|
|
25
|
+
*
|
|
26
|
+
* Comments, blank lines and ordering are preserved: this file is edited by hand, and the previous
|
|
27
|
+
* implementation rebuilt it from the assignments alone, so every comment an operator had written
|
|
28
|
+
* disappeared the first time they ran anything that touched `.env`.
|
|
29
|
+
*/
|
|
30
|
+
export declare function upsertEnvFile(cwd: string, updates: Record<string, string>, options?: UpsertOptions | readonly string[]): void;
|
|
31
|
+
/**
|
|
32
|
+
* Parse a project `.env` into key/value pairs.
|
|
33
|
+
*
|
|
34
|
+
* Deliberately small: `KEY=value`, `#` comments, one optional layer of surrounding quotes. No
|
|
35
|
+
* interpolation and no `export` handling, because Compose's own parser does not do those either and
|
|
36
|
+
* a `.env` that means two different things depending on who reads it is worse than a limited one.
|
|
37
|
+
*/
|
|
38
|
+
export declare function readEnvFile(cwd: string): Record<string, string>;
|
|
3
39
|
export declare function readEnvValue(cwd: string, key: string, fallback: string): string;
|
|
40
|
+
/** Whether `.env` carries a non-empty value for `key`. Distinguishes absent from defaulted. */
|
|
41
|
+
export declare function hasEnvValue(cwd: string, key: string): boolean;
|
|
4
42
|
export declare function readEnvInt(cwd: string, key: string): number | null;
|
|
5
43
|
//# sourceMappingURL=env-file.d.ts.map
|
package/dist/env-file.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-file.d.ts","sourceRoot":"","sources":["../src/env-file.ts"],"names":[],"mappings":"AAGA,
|
|
1
|
+
{"version":3,"file":"env-file.d.ts","sourceRoot":"","sources":["../src/env-file.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,kEAAkE,CAAA;AAmC7F,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACjC,oGAAoG;IACpG,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC3B,kFAAkF;IAClF,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;CAC3B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC/B,OAAO,GAAE,aAAa,GAAG,SAAS,MAAM,EAAO,GAC9C,IAAI,CAwDN;AAED;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAuB/D;AAED,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAO/E;AAED,+FAA+F;AAC/F,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAI7D;AAED,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKlE"}
|
package/dist/env-file.js
CHANGED
|
@@ -1,18 +1,132 @@
|
|
|
1
1
|
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
2
|
import { join } from "node:path";
|
|
3
|
-
/**
|
|
4
|
-
|
|
3
|
+
/**
|
|
4
|
+
* Marks a value the CLI wrote from `versions` in `supatype.config.ts`.
|
|
5
|
+
*
|
|
6
|
+
* Provenance, so that removing a pin from config can clean up the stale image reference it left
|
|
7
|
+
* behind *without* deleting a value the operator wrote by hand. Before this, the image keys derived
|
|
8
|
+
* from config were removed unconditionally on every compose run: an operator could override
|
|
9
|
+
* `SUPATYPE_REALTIME_IMAGE` from `.env` and could not override `SUPATYPE_SERVER_IMAGE`, because the
|
|
10
|
+
* latter is derivable from a pin and the former is not. Same file, same shape, different rules.
|
|
11
|
+
*/
|
|
12
|
+
export const MANAGED_MARKER = "# supatype:managed, value from versions in supatype.config.ts";
|
|
13
|
+
function parseLines(text) {
|
|
14
|
+
const out = [];
|
|
15
|
+
if (text === "")
|
|
16
|
+
return out;
|
|
17
|
+
let markerPending = false;
|
|
18
|
+
// A file ending in a newline yields a final empty element; keeping it would put a blank line
|
|
19
|
+
// between the existing content and anything appended.
|
|
20
|
+
const raws = text.split(/\r?\n/);
|
|
21
|
+
while (raws.length > 0 && raws[raws.length - 1] === "")
|
|
22
|
+
raws.pop();
|
|
23
|
+
for (const raw of raws) {
|
|
24
|
+
const trimmed = raw.trim();
|
|
25
|
+
if (trimmed === MANAGED_MARKER) {
|
|
26
|
+
markerPending = true;
|
|
27
|
+
out.push({ text: raw, managed: false });
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
const eq = raw.indexOf("=");
|
|
31
|
+
const key = eq > 0 ? raw.slice(0, eq).trim() : undefined;
|
|
32
|
+
const isAssignment = key !== undefined && /^[A-Za-z_][A-Za-z0-9_]*$/.test(key);
|
|
33
|
+
out.push({ ...(isAssignment && { key }), text: raw, managed: isAssignment && markerPending });
|
|
34
|
+
if (!isAssignment && trimmed !== "")
|
|
35
|
+
markerPending = false;
|
|
36
|
+
else if (isAssignment)
|
|
37
|
+
markerPending = false;
|
|
38
|
+
}
|
|
39
|
+
return out;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Merge key/value updates into a project `.env`.
|
|
43
|
+
*
|
|
44
|
+
* Comments, blank lines and ordering are preserved: this file is edited by hand, and the previous
|
|
45
|
+
* implementation rebuilt it from the assignments alone, so every comment an operator had written
|
|
46
|
+
* disappeared the first time they ran anything that touched `.env`.
|
|
47
|
+
*/
|
|
48
|
+
export function upsertEnvFile(cwd, updates, options = {}) {
|
|
49
|
+
// Historically the third argument was a plain list of keys to remove unconditionally.
|
|
50
|
+
const opts = Array.isArray(options)
|
|
51
|
+
? { remove: options }
|
|
52
|
+
: options;
|
|
53
|
+
const removeManaged = new Set(opts.removeManaged ?? []);
|
|
54
|
+
const removeAlways = new Set(opts.remove ?? []);
|
|
55
|
+
const managed = new Set(opts.managed ?? []);
|
|
5
56
|
const envPath = join(cwd, ".env");
|
|
6
57
|
const existing = existsSync(envPath) ? readFileSync(envPath, "utf8") : "";
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
58
|
+
const lines = parseLines(existing);
|
|
59
|
+
const written = new Set();
|
|
60
|
+
const kept = [];
|
|
61
|
+
for (let i = 0; i < lines.length; i++) {
|
|
62
|
+
const line = lines[i];
|
|
63
|
+
const key = line.key;
|
|
64
|
+
if (key === undefined) {
|
|
65
|
+
kept.push(line);
|
|
66
|
+
continue;
|
|
67
|
+
}
|
|
68
|
+
if (removeAlways.has(key) || (removeManaged.has(key) && line.managed)) {
|
|
69
|
+
// Drop the marker that introduced it, so no orphan comment is left behind.
|
|
70
|
+
if (line.managed && kept[kept.length - 1]?.text.trim() === MANAGED_MARKER)
|
|
71
|
+
kept.pop();
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
if (key in updates) {
|
|
75
|
+
const wantsMarker = managed.has(key);
|
|
76
|
+
if (wantsMarker && kept[kept.length - 1]?.text.trim() !== MANAGED_MARKER) {
|
|
77
|
+
kept.push({ text: MANAGED_MARKER, managed: false });
|
|
78
|
+
}
|
|
79
|
+
if (!wantsMarker && line.managed && kept[kept.length - 1]?.text.trim() === MANAGED_MARKER) {
|
|
80
|
+
kept.pop();
|
|
81
|
+
}
|
|
82
|
+
kept.push({ key, text: `${key}=${updates[key]}`, managed: wantsMarker });
|
|
83
|
+
written.add(key);
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
kept.push(line);
|
|
87
|
+
}
|
|
88
|
+
const appended = [];
|
|
89
|
+
for (const [key, value] of Object.entries(updates)) {
|
|
90
|
+
if (written.has(key))
|
|
91
|
+
continue;
|
|
92
|
+
if (managed.has(key))
|
|
93
|
+
appended.push(MANAGED_MARKER);
|
|
94
|
+
appended.push(`${key}=${value}`);
|
|
95
|
+
}
|
|
96
|
+
const body = [...kept.map((l) => l.text), ...appended].join("\n");
|
|
97
|
+
writeFileSync(envPath, `${body.replace(/\n+$/, "")}\n`, "utf8");
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Parse a project `.env` into key/value pairs.
|
|
101
|
+
*
|
|
102
|
+
* Deliberately small: `KEY=value`, `#` comments, one optional layer of surrounding quotes. No
|
|
103
|
+
* interpolation and no `export` handling, because Compose's own parser does not do those either and
|
|
104
|
+
* a `.env` that means two different things depending on who reads it is worse than a limited one.
|
|
105
|
+
*/
|
|
106
|
+
export function readEnvFile(cwd) {
|
|
107
|
+
const envPath = join(cwd, ".env");
|
|
108
|
+
if (!existsSync(envPath))
|
|
109
|
+
return {};
|
|
110
|
+
const out = {};
|
|
111
|
+
for (const line of readFileSync(envPath, "utf8").split(/\r?\n/)) {
|
|
112
|
+
const trimmed = line.trim();
|
|
113
|
+
if (trimmed.length === 0 || trimmed.startsWith("#"))
|
|
114
|
+
continue;
|
|
115
|
+
const eq = trimmed.indexOf("=");
|
|
116
|
+
if (eq <= 0)
|
|
117
|
+
continue;
|
|
118
|
+
const key = trimmed.slice(0, eq).trim();
|
|
119
|
+
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key))
|
|
120
|
+
continue;
|
|
121
|
+
let value = trimmed.slice(eq + 1).trim();
|
|
122
|
+
if (value.length >= 2 &&
|
|
123
|
+
((value.startsWith('"') && value.endsWith('"')) ||
|
|
124
|
+
(value.startsWith("'") && value.endsWith("'")))) {
|
|
125
|
+
value = value.slice(1, -1);
|
|
126
|
+
}
|
|
127
|
+
out[key] = value;
|
|
128
|
+
}
|
|
129
|
+
return out;
|
|
16
130
|
}
|
|
17
131
|
export function readEnvValue(cwd, key, fallback) {
|
|
18
132
|
const envPath = join(cwd, ".env");
|
|
@@ -23,6 +137,13 @@ export function readEnvValue(cwd, key, fallback) {
|
|
|
23
137
|
}
|
|
24
138
|
return fallback;
|
|
25
139
|
}
|
|
140
|
+
/** Whether `.env` carries a non-empty value for `key`. Distinguishes absent from defaulted. */
|
|
141
|
+
export function hasEnvValue(cwd, key) {
|
|
142
|
+
const envPath = join(cwd, ".env");
|
|
143
|
+
if (!existsSync(envPath))
|
|
144
|
+
return false;
|
|
145
|
+
return new RegExp(`^${key}=(.+)$`, "m").test(readFileSync(envPath, "utf8"));
|
|
146
|
+
}
|
|
26
147
|
export function readEnvInt(cwd, key) {
|
|
27
148
|
const raw = readEnvValue(cwd, key, "");
|
|
28
149
|
if (!raw)
|
package/dist/env-file.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env-file.js","sourceRoot":"","sources":["../src/env-file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,
|
|
1
|
+
{"version":3,"file":"env-file.js","sourceRoot":"","sources":["../src/env-file.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which mechanism will enforce this project's per-column rules, decided offline.
|
|
3
|
+
*
|
|
4
|
+
* The engine makes the same decision at push time by asking the database whether `supatype_mask` is
|
|
5
|
+
* installed. The CLI has to answer earlier: it writes `PGRST_DB_SCHEMA` when it generates compose,
|
|
6
|
+
* before any database necessarily exists. It can, because the extension needs
|
|
7
|
+
* `shared_preload_libraries` and a compiled library on the host, so exactly one path ships it,
|
|
8
|
+
* `supatype/postgres`. Everything else gets the view tier:
|
|
9
|
+
*
|
|
10
|
+
* | Config | Ships the extension | Tier |
|
|
11
|
+
* | -------------------------------------------- | ------------------- | --------- |
|
|
12
|
+
* | `database.provider: "docker"` | yes | extension |
|
|
13
|
+
* | `provider: native` | no | views |
|
|
14
|
+
* | `database.external` | no | views |
|
|
15
|
+
* | `provider: docker` + `database.image` override | no | views |
|
|
16
|
+
*
|
|
17
|
+
* Deliberately **not** "is the database external": a native `supatype dev` has no extension either,
|
|
18
|
+
* and treating it as tier 1 would point PostgREST at a schema whose tables the API roles no longer
|
|
19
|
+
* hold privileges on: every request denied.
|
|
20
|
+
*
|
|
21
|
+
* The one case this cannot call is a self-managed Postgres where the operator compiled and installed
|
|
22
|
+
* the extension themselves and points at it with `database.external`. They set `schema.api_schemas`
|
|
23
|
+
* explicitly; `supatype db check` reports the mismatch either way.
|
|
24
|
+
*/
|
|
25
|
+
export { nativeMaskLibraryPresent } from "./postgres-ctl.js";
|
|
26
|
+
import type { SupatypeProjectConfig } from "./project-config.js";
|
|
27
|
+
export type FieldMaskingTier = "none" | "extension" | "views";
|
|
28
|
+
/** True when the Postgres this project runs is one that carries `supatype_mask`. */
|
|
29
|
+
export declare function imageShipsMaskExtension(config: SupatypeProjectConfig): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Whether any model masks a column.
|
|
32
|
+
*
|
|
33
|
+
* Read from the extracted AST rather than the config, because that is where field rules live. Shaped
|
|
34
|
+
* loosely on purpose: the CLI's AST type carries `platform.access` as an opaque record, and this only
|
|
35
|
+
* needs to know whether a `fields` map is present and non-empty.
|
|
36
|
+
*/
|
|
37
|
+
export declare function schemaHasFieldRules(ast: unknown): boolean;
|
|
38
|
+
/** The tier this project's next push will use. */
|
|
39
|
+
export declare function fieldMaskingTier(config: SupatypeProjectConfig, ast: unknown,
|
|
40
|
+
/** Set on the native path once the Postgres install is known, see [`nativeMaskLibraryPresent`]. */
|
|
41
|
+
maskLibraryPresent?: boolean): FieldMaskingTier;
|
|
42
|
+
/**
|
|
43
|
+
* The tier for a project on disk, loading its schema to see whether any column is masked.
|
|
44
|
+
*
|
|
45
|
+
* A schema that fails to load falls back to `"none"`, the default exposed-schema list. Deciding the
|
|
46
|
+
* tier is the wrong moment to report a syntax error, and `push`/`dev` do it properly moments later
|
|
47
|
+
* with the file and line.
|
|
48
|
+
*/
|
|
49
|
+
export declare function fieldMaskingTierFromProject(cwd: string, config: SupatypeProjectConfig, maskLibraryPresent?: boolean): FieldMaskingTier;
|
|
50
|
+
//# sourceMappingURL=field-masking-tier.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-masking-tier.d.ts","sourceRoot":"","sources":["../src/field-masking-tier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAOH,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAOhE,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,WAAW,GAAG,OAAO,CAAA;AAY7D,oFAAoF;AACpF,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAG9E;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAUzD;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,qBAAqB,EAC7B,GAAG,EAAE,OAAO;AACZ,mGAAmG;AACnG,kBAAkB,CAAC,EAAE,OAAO,GAC3B,gBAAgB,CAIlB;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,qBAAqB,EAC7B,kBAAkB,CAAC,EAAE,OAAO,GAC3B,gBAAgB,CAQlB"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which mechanism will enforce this project's per-column rules, decided offline.
|
|
3
|
+
*
|
|
4
|
+
* The engine makes the same decision at push time by asking the database whether `supatype_mask` is
|
|
5
|
+
* installed. The CLI has to answer earlier: it writes `PGRST_DB_SCHEMA` when it generates compose,
|
|
6
|
+
* before any database necessarily exists. It can, because the extension needs
|
|
7
|
+
* `shared_preload_libraries` and a compiled library on the host, so exactly one path ships it,
|
|
8
|
+
* `supatype/postgres`. Everything else gets the view tier:
|
|
9
|
+
*
|
|
10
|
+
* | Config | Ships the extension | Tier |
|
|
11
|
+
* | -------------------------------------------- | ------------------- | --------- |
|
|
12
|
+
* | `database.provider: "docker"` | yes | extension |
|
|
13
|
+
* | `provider: native` | no | views |
|
|
14
|
+
* | `database.external` | no | views |
|
|
15
|
+
* | `provider: docker` + `database.image` override | no | views |
|
|
16
|
+
*
|
|
17
|
+
* Deliberately **not** "is the database external": a native `supatype dev` has no extension either,
|
|
18
|
+
* and treating it as tier 1 would point PostgREST at a schema whose tables the API roles no longer
|
|
19
|
+
* hold privileges on: every request denied.
|
|
20
|
+
*
|
|
21
|
+
* The one case this cannot call is a self-managed Postgres where the operator compiled and installed
|
|
22
|
+
* the extension themselves and points at it with `database.external`. They set `schema.api_schemas`
|
|
23
|
+
* explicitly; `supatype db check` reports the mismatch either way.
|
|
24
|
+
*/
|
|
25
|
+
import { existsSync } from "node:fs";
|
|
26
|
+
// Statically imported: these packages are ESM, where `require` does not exist. The first attempt used
|
|
27
|
+
// it for a lazy import and every command that generates compose would have thrown at runtime, caught
|
|
28
|
+
// by the tests that run the built binary rather than the source.
|
|
29
|
+
import { loadSchemaAst } from "./config.js";
|
|
30
|
+
export { nativeMaskLibraryPresent } from "./postgres-ctl.js";
|
|
31
|
+
import { resolveRuntimeProvider, schemaPathFromProject, usesExternalDatabase, } from "./project-config.js";
|
|
32
|
+
/** Postgres image this project would run, when it runs one at all. */
|
|
33
|
+
function postgresImage(config) {
|
|
34
|
+
if (usesExternalDatabase(config))
|
|
35
|
+
return undefined;
|
|
36
|
+
if (config.database.provider !== "docker" && resolveRuntimeProvider(config) !== "docker") {
|
|
37
|
+
return undefined;
|
|
38
|
+
}
|
|
39
|
+
return config.database.image?.trim() || "supatype/postgres:latest";
|
|
40
|
+
}
|
|
41
|
+
/** True when the Postgres this project runs is one that carries `supatype_mask`. */
|
|
42
|
+
export function imageShipsMaskExtension(config) {
|
|
43
|
+
const image = postgresImage(config);
|
|
44
|
+
return image !== undefined && /^supatype\/postgres(:|$)/.test(image);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Whether any model masks a column.
|
|
48
|
+
*
|
|
49
|
+
* Read from the extracted AST rather than the config, because that is where field rules live. Shaped
|
|
50
|
+
* loosely on purpose: the CLI's AST type carries `platform.access` as an opaque record, and this only
|
|
51
|
+
* needs to know whether a `fields` map is present and non-empty.
|
|
52
|
+
*/
|
|
53
|
+
export function schemaHasFieldRules(ast) {
|
|
54
|
+
const models = ast?.models;
|
|
55
|
+
if (!Array.isArray(models))
|
|
56
|
+
return false;
|
|
57
|
+
return models.some((model) => {
|
|
58
|
+
const access = model?.annotations?.platform?.access;
|
|
59
|
+
const fields = access?.["fields"];
|
|
60
|
+
return typeof fields === "object" && fields !== null && Object.keys(fields).length > 0;
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
/** The tier this project's next push will use. */
|
|
64
|
+
export function fieldMaskingTier(config, ast,
|
|
65
|
+
/** Set on the native path once the Postgres install is known, see [`nativeMaskLibraryPresent`]. */
|
|
66
|
+
maskLibraryPresent) {
|
|
67
|
+
if (!schemaHasFieldRules(ast))
|
|
68
|
+
return "none";
|
|
69
|
+
if (maskLibraryPresent === true)
|
|
70
|
+
return "extension";
|
|
71
|
+
return imageShipsMaskExtension(config) ? "extension" : "views";
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The tier for a project on disk, loading its schema to see whether any column is masked.
|
|
75
|
+
*
|
|
76
|
+
* A schema that fails to load falls back to `"none"`, the default exposed-schema list. Deciding the
|
|
77
|
+
* tier is the wrong moment to report a syntax error, and `push`/`dev` do it properly moments later
|
|
78
|
+
* with the file and line.
|
|
79
|
+
*/
|
|
80
|
+
export function fieldMaskingTierFromProject(cwd, config, maskLibraryPresent) {
|
|
81
|
+
try {
|
|
82
|
+
const schemaPath = schemaPathFromProject(config, cwd);
|
|
83
|
+
if (!existsSync(schemaPath))
|
|
84
|
+
return "none";
|
|
85
|
+
return fieldMaskingTier(config, loadSchemaAst(schemaPath, cwd), maskLibraryPresent);
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
return "none";
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=field-masking-tier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"field-masking-tier.js","sourceRoot":"","sources":["../src/field-masking-tier.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,sGAAsG;AACtG,qGAAqG;AACrG,iEAAiE;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAC3C,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AAE5D,OAAO,EACL,sBAAsB,EACtB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,qBAAqB,CAAA;AAK5B,sEAAsE;AACtE,SAAS,aAAa,CAAC,MAA6B;IAClD,IAAI,oBAAoB,CAAC,MAAM,CAAC;QAAE,OAAO,SAAS,CAAA;IAClD,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,KAAK,QAAQ,IAAI,sBAAsB,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;QACzF,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,0BAA0B,CAAA;AACpE,CAAC;AAED,oFAAoF;AACpF,MAAM,UAAU,uBAAuB,CAAC,MAA6B;IACnE,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAA;IACnC,OAAO,KAAK,KAAK,SAAS,IAAI,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACtE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CAAC,GAAY;IAC9C,MAAM,MAAM,GAAI,GAAqC,EAAE,MAAM,CAAA;IAC7D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;QAAE,OAAO,KAAK,CAAA;IACxC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;QAC3B,MAAM,MAAM,GACV,KACD,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,CAAA;QAChC,MAAM,MAAM,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,CAAA;QACjC,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAA;IACxF,CAAC,CAAC,CAAA;AACJ,CAAC;AAED,kDAAkD;AAClD,MAAM,UAAU,gBAAgB,CAC9B,MAA6B,EAC7B,GAAY;AACZ,mGAAmG;AACnG,kBAA4B;IAE5B,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC;QAAE,OAAO,MAAM,CAAA;IAC5C,IAAI,kBAAkB,KAAK,IAAI;QAAE,OAAO,WAAW,CAAA;IACnD,OAAO,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAA;AAChE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CACzC,GAAW,EACX,MAA6B,EAC7B,kBAA4B;IAE5B,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;QACrD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,MAAM,CAAA;QAC1C,OAAO,gBAAgB,CAAC,MAAM,EAAE,aAAa,CAAC,UAAU,EAAE,GAAG,CAAC,EAAE,kBAAkB,CAAC,CAAA;IACrF,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAA;IACf,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Scaffold Deno IDE types for edge functions so tsserver / Cursor stop
|
|
3
|
+
* reporting "Cannot find name 'Deno'" under the project root tsconfig.
|
|
4
|
+
*
|
|
5
|
+
* We ship a curated ambient declaration (not `@types/deno` at the app root):
|
|
6
|
+
* installing `@types/deno` as a project dependency auto-includes it in the
|
|
7
|
+
* whole app when root `tsconfig` omits `"types"`, which pollutes React/Next.
|
|
8
|
+
*/
|
|
9
|
+
/** Ambient Deno types written into `functions/deno.d.ts`. */
|
|
10
|
+
export declare function functionsDenoAmbientSource(): string;
|
|
11
|
+
/** `functions/tsconfig.json`: owns function files so the app config can exclude them. */
|
|
12
|
+
export declare function functionsTsConfigSource(): string;
|
|
13
|
+
export type FunctionsDenoTypesResult = {
|
|
14
|
+
wroteDenoDts: boolean;
|
|
15
|
+
wroteTsconfig: boolean;
|
|
16
|
+
rootExclude: "updated" | "already" | "missing" | "manual";
|
|
17
|
+
hints: string[];
|
|
18
|
+
};
|
|
19
|
+
/**
|
|
20
|
+
* Ensure `functions/deno.d.ts` + `functions/tsconfig.json` exist, and try to
|
|
21
|
+
* exclude `functions` from the project-root `tsconfig.json`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function ensureFunctionsDenoTypes(projectRoot: string, functionsDir: string): FunctionsDenoTypesResult;
|
|
24
|
+
//# sourceMappingURL=functions-deno-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functions-deno-types.d.ts","sourceRoot":"","sources":["../src/functions-deno-types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAaH,6DAA6D;AAC7D,wBAAgB,0BAA0B,IAAI,MAAM,CAsDnD;AAED,yFAAyF;AACzF,wBAAgB,uBAAuB,IAAI,MAAM,CAiBhD;AAED,MAAM,MAAM,wBAAwB,GAAG;IACrC,YAAY,EAAE,OAAO,CAAA;IACrB,aAAa,EAAE,OAAO,CAAA;IACtB,WAAW,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAA;IACzD,KAAK,EAAE,MAAM,EAAE,CAAA;CAChB,CAAA;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,wBAAwB,CAiC1B"}
|