@supatype/cli 0.1.7 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-test.log +125 -122
- package/.turbo/turbo-typecheck.log +1 -1
- package/LICENSE +202 -0
- package/deno.d.ts +1 -1
- package/dist/app/framework.js +1 -1
- package/dist/app/framework.js.map +1 -1
- package/dist/augmentation-generator.d.ts +1 -1
- package/dist/augmentation-generator.js +3 -3
- package/dist/augmentation-generator.js.map +1 -1
- package/dist/binary-cache.d.ts +30 -8
- package/dist/binary-cache.d.ts.map +1 -1
- package/dist/binary-cache.js +47 -35
- package/dist/binary-cache.js.map +1 -1
- package/dist/cache-pins.d.ts +1 -1
- package/dist/cache-pins.js +2 -2
- package/dist/cache-pins.js.map +1 -1
- 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 +17 -1
- package/dist/cli-install-method.d.ts.map +1 -1
- package/dist/cli-install-method.js +32 -4
- package/dist/cli-install-method.js.map +1 -1
- 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.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/commands/add.js +4 -3
- package/dist/commands/add.js.map +1 -1
- package/dist/commands/admin.js +6 -6
- 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.js +3 -3
- package/dist/commands/cache.js.map +1 -1
- package/dist/commands/db.d.ts +3 -3
- package/dist/commands/db.d.ts.map +1 -1
- package/dist/commands/db.js +12 -11
- 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.js +17 -17
- package/dist/commands/dev.js.map +1 -1
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/doctor.js +3 -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.map +1 -1
- package/dist/commands/functions.js +8 -7
- package/dist/commands/functions.js.map +1 -1
- package/dist/commands/hooks.d.ts +2 -2
- package/dist/commands/hooks.js +4 -4
- package/dist/commands/hooks.js.map +1 -1
- package/dist/commands/init.js +28 -28
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/internal.d.ts.map +1 -1
- package/dist/commands/internal.js +37 -0
- package/dist/commands/internal.js.map +1 -1
- package/dist/commands/login.d.ts +1 -1
- package/dist/commands/login.js +1 -1
- package/dist/commands/login.js.map +1 -1
- 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.js +3 -3
- 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 +2 -8
- package/dist/commands/self-update.d.ts.map +1 -1
- package/dist/commands/self-update.js +20 -12
- 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 +23 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +37 -18
- package/dist/config.js.map +1 -1
- package/dist/db-preflight.d.ts +4 -4
- package/dist/db-preflight.js +14 -14
- package/dist/db-preflight.js.map +1 -1
- package/dist/dev-compose.d.ts +3 -3
- package/dist/dev-compose.js +27 -27
- 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 +2 -2
- package/dist/env-file.d.ts.map +1 -1
- package/dist/env-file.js +1 -1
- package/dist/env-file.js.map +1 -1
- package/dist/field-masking-tier.d.ts +5 -5
- package/dist/field-masking-tier.d.ts.map +1 -1
- package/dist/field-masking-tier.js +6 -6
- package/dist/field-masking-tier.js.map +1 -1
- package/dist/functions-deno-types.d.ts +1 -1
- package/dist/functions-deno-types.d.ts.map +1 -1
- package/dist/functions-deno-types.js +3 -3
- package/dist/functions-deno-types.js.map +1 -1
- 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 +1 -1
- package/dist/hook-upload.js +3 -3
- package/dist/hooks-generator.d.ts +1 -1
- package/dist/hooks-generator.js +9 -9
- 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 +1 -1
- package/dist/link.d.ts.map +1 -1
- package/dist/local-secrets.d.ts +5 -5
- package/dist/local-secrets.js +5 -5
- 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 +3 -3
- package/dist/model-hooks.js +4 -4
- 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 +1 -1
- package/dist/postgres-ctl.js +4 -4
- 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 +12 -12
- package/dist/project-config.d.ts.map +1 -1
- package/dist/project-config.js +9 -9
- 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.d.ts.map +1 -1
- package/dist/resolve-api-url.js +4 -3
- package/dist/resolve-api-url.js.map +1 -1
- package/dist/resolve-target.d.ts +1 -1
- package/dist/resolve-target.d.ts.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 +3 -3
- 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-push-lock.js +3 -3
- 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 +5 -5
- package/dist/self-host-compose.d.ts.map +1 -1
- package/dist/self-host-compose.js +24 -24
- package/dist/self-host-compose.js.map +1 -1
- package/dist/service-role-check.js +3 -3
- package/dist/service-role-check.js.map +1 -1
- 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.js +1 -1
- package/dist/target-client.js.map +1 -1
- package/dist/tsx-runner.d.ts +12 -0
- package/dist/tsx-runner.d.ts.map +1 -1
- package/dist/tsx-runner.js +36 -2
- package/dist/tsx-runner.js.map +1 -1
- package/dist/type-extractor.js +27 -27
- 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 +1 -1
- 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.js +1 -1
- 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 +3 -2
- package/scripts/build-release-artifacts.sh +112 -0
- package/scripts/generate-homebrew-formula.mjs +47 -45
- 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 +3 -3
- package/src/binary-cache.ts +51 -36
- package/src/cache-pins.ts +2 -2
- package/src/cli-artifacts.ts +65 -0
- package/src/cli-install-method.ts +35 -4
- 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 +1 -1
- package/src/commands/add.ts +4 -3
- package/src/commands/admin.ts +6 -6
- package/src/commands/adopt.ts +1 -1
- package/src/commands/app.ts +2 -2
- package/src/commands/cache.ts +3 -3
- package/src/commands/db.ts +12 -11
- package/src/commands/deploy.ts +12 -12
- package/src/commands/dev.ts +19 -19
- package/src/commands/doctor.ts +3 -3
- package/src/commands/engine.ts +1 -1
- package/src/commands/functions.ts +8 -7
- package/src/commands/hooks.ts +6 -6
- package/src/commands/init.ts +28 -28
- package/src/commands/internal.ts +37 -0
- package/src/commands/login.ts +2 -2
- 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 +3 -3
- package/src/commands/self-host.ts +1 -1
- package/src/commands/self-update.ts +23 -73
- package/src/commands/status.ts +1 -1
- package/src/commands/update.ts +1 -1
- package/src/config.ts +39 -18
- package/src/db-preflight.ts +15 -15
- package/src/dev-compose.ts +27 -27
- 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 +2 -2
- package/src/field-masking-tier.ts +6 -6
- package/src/functions-deno-types.ts +3 -3
- package/src/functions-router-gen.ts +1 -1
- package/src/gitignore.ts +3 -3
- package/src/hook-upload.ts +3 -3
- package/src/hooks-generator.ts +9 -9
- package/src/index.ts +1 -1
- package/src/init-project-detect.ts +1 -1
- package/src/link.ts +1 -1
- package/src/local-secrets.ts +5 -5
- package/src/main.ts +20 -0
- package/src/model-hooks.ts +4 -4
- package/src/pgbouncer-userlist.ts +2 -2
- package/src/postgres-ctl.ts +4 -4
- package/src/process-manager.ts +4 -4
- package/src/project-config.ts +16 -16
- 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 +4 -3
- package/src/resolve-target.ts +1 -1
- package/src/rest-cache-admin.ts +2 -2
- package/src/runtime-routes.ts +2 -2
- package/src/schema-ast-v2.ts +4 -4
- package/src/schema-push-lock.ts +3 -3
- package/src/scripts/postinstall.ts +1 -1
- package/src/self-host-compose.ts +25 -25
- package/src/service-role-check.ts +3 -3
- 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 +1 -1
- package/src/tsx-runner.ts +41 -2
- package/src/type-extractor.ts +27 -27
- 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 +1 -1
- package/src/ui/runtime/run-clack-flow.tsx +1 -1
- package/src/ui/runtime/stdin-after-ink.ts +1 -1
- package/src/ui/theme.ts +1 -1
- package/src/valkey-sidecar.ts +2 -2
- package/tests/access-composition.test.ts +6 -6
- package/tests/admin-studio-membership.test.ts +1 -1
- package/tests/api-schemas.test.ts +1 -1
- package/tests/archive-name-alias.test.ts +1 -1
- package/tests/cli-help.test.ts +8 -2
- package/tests/config-load-failure.test.ts +44 -0
- package/tests/db-preflight.test.ts +1 -1
- package/tests/doctor-render.test.ts +3 -3
- package/tests/doctor-service-role.test.ts +2 -2
- package/tests/engine-push-output.test.ts +1 -1
- package/tests/env-file.test.ts +3 -3
- package/tests/external-database-compose.test.ts +5 -5
- package/tests/external-database-config.test.ts +2 -2
- package/tests/field-masking-tier.test.ts +1 -1
- package/tests/homebrew-formula.test.ts +68 -26
- package/tests/hook-upload.test.ts +1 -1
- package/tests/hooks-generator.test.ts +1 -1
- package/tests/init.test.ts +2 -2
- package/tests/keys.test.ts +8 -2
- package/tests/local-secrets.test.ts +3 -3
- package/tests/model-hooks.test.ts +6 -6
- package/tests/runtime-contract.test.ts +2 -2
- package/tests/service-role-check.test.ts +3 -3
- package/tests/storage-provision.test.ts +1 -1
- package/tests/type-extractor.test.ts +2 -2
- package/tsconfig.tsbuildinfo +1 -1
- package/vitest.config.ts +7 -1
- package/scripts/build-release-bundle.mjs +0 -27
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init-project-detect.js","sourceRoot":"","sources":["../src/init-project-detect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAEhC,MAAM,iBAAiB,GAAG;IACxB,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,iBAAiB;CACT,CAAA;AAEV,MAAM,qBAAqB,GAAG;IAC5B,oBAAoB;IACpB,oBAAoB;IACpB,qBAAqB;CACb,CAAA;AAcV,SAAS,cAAc,CAAC,GAAW;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,cAAc,CAAC,CAAA;IACzC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,OAAO,KAAK,CAAA;IACtC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAGnD,CAAA;QACD,OAAO,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,CAAC,CAAA;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC/B,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,SAAQ;QAC/B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;QACtC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAA;QAC5C,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACnB,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;YAC9C,IAAI,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAA;QACrD,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,YAAY,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAA;IAChE,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;QAAE,OAAO,UAAU,CAAA;IACpE,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QAAE,OAAO,QAAQ,CAAA;IAClD,IAAI,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;QAAE,OAAO,UAAU,CAAA;IACtD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,
|
|
1
|
+
{"version":3,"file":"init-project-detect.js","sourceRoot":"","sources":["../src/init-project-detect.ts"],"names":[],"mappings":"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"}
|
package/dist/link.d.ts
CHANGED
|
@@ -16,7 +16,7 @@ export interface ProjectLink {
|
|
|
16
16
|
defaultEnvironment: string;
|
|
17
17
|
/** Access token (cloud user JWT) or self-host SERVICE_ROLE_KEY. */
|
|
18
18
|
token?: string;
|
|
19
|
-
/** Cloud GoTrue refresh token
|
|
19
|
+
/** Cloud GoTrue refresh token, used to renew short-lived access JWTs. */
|
|
20
20
|
refreshToken?: string;
|
|
21
21
|
orgId?: string | undefined;
|
|
22
22
|
cloudApiUrl?: string;
|
package/dist/link.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../src/link.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,YAAY,EAAG,CAAU,CAAA;AACtC,eAAO,MAAM,SAAS,wBAAwB,CAAA;AAC9C,eAAO,MAAM,iBAAiB,yBAAyB,CAAA;AACvD,eAAO,MAAM,kBAAkB,0BAA0B,CAAA;AAEzD,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,WAAW,GAAG,OAAO,CAAA;AAE7D,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,YAAY,CAAA;IAC5B,IAAI,EAAE,eAAe,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;IAClB,kBAAkB,EAAE,MAAM,CAAA;IAC1B,mEAAmE;IACnE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,
|
|
1
|
+
{"version":3,"file":"link.d.ts","sourceRoot":"","sources":["../src/link.ts"],"names":[],"mappings":"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"}
|
package/dist/local-secrets.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* The secrets the local stack runs with.
|
|
3
3
|
*
|
|
4
4
|
* **Read from `.env`, never pinned back into it.** These used to be hardcoded constants that
|
|
5
|
-
* `supatype dev` wrote to `.env` on every run
|
|
5
|
+
* `supatype dev` wrote to `.env` on every run, which meant a project could not hold its own
|
|
6
6
|
* secrets: whatever `supatype init` or the developer put there was replaced by the published
|
|
7
7
|
* defaults on the next `dev`, and the same `.env` then went to a server. Resolving instead of
|
|
8
8
|
* pinning is what lets a generated secret survive to production.
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
/**
|
|
14
14
|
* Fallback JWT signing secret for a project that has none.
|
|
15
15
|
*
|
|
16
|
-
* Published, therefore worthless as a secret
|
|
16
|
+
* Published, therefore worthless as a secret, anyone can mint a token for a stack still using
|
|
17
17
|
* it. That is precisely why `init` generates one instead of relying on this.
|
|
18
18
|
*/
|
|
19
19
|
export declare const FALLBACK_JWT_SECRET = "super-secret-jwt-token-with-at-least-32-characters-long";
|
|
@@ -37,7 +37,7 @@ export declare function devAuthenticatorPassword(cwd: string): string;
|
|
|
37
37
|
*
|
|
38
38
|
* The compose template requires these with `${VAR:?}` rather than defaulting them, because a
|
|
39
39
|
* default is how a published constant ends up signing a real deployment's tokens. That only
|
|
40
|
-
* works if something guarantees presence
|
|
40
|
+
* works if something guarantees presence, this does, for any project that predates
|
|
41
41
|
* `supatype init` writing them.
|
|
42
42
|
*
|
|
43
43
|
* **Fills with the fallback, does not generate.** Preserving the value such a project has been
|
|
@@ -48,11 +48,11 @@ export declare function devAuthenticatorPassword(cwd: string): string;
|
|
|
48
48
|
*/
|
|
49
49
|
export declare function seedMissingLocalSecrets(cwd: string): Record<string, string>;
|
|
50
50
|
/**
|
|
51
|
-
* The database identity the local stack connects with
|
|
51
|
+
* The database identity the local stack connects with, seeded, never overwritten.
|
|
52
52
|
*
|
|
53
53
|
* `POSTGRES_DB` in particular is *project configuration*: `supatype init` sets it to the
|
|
54
54
|
* project name, and the running container's database was created from it. Rewriting it to a
|
|
55
|
-
* default afterwards points every tool at a database that does not exist
|
|
55
|
+
* default afterwards points every tool at a database that does not exist, observed as
|
|
56
56
|
* `supatype push` failing with `FATAL: database "supatype" does not exist` on a project called
|
|
57
57
|
* something else, because the push path rewrote `.env` after `self-host compose up` had already
|
|
58
58
|
* created the database under its real name.
|
package/dist/local-secrets.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* The secrets the local stack runs with.
|
|
3
3
|
*
|
|
4
4
|
* **Read from `.env`, never pinned back into it.** These used to be hardcoded constants that
|
|
5
|
-
* `supatype dev` wrote to `.env` on every run
|
|
5
|
+
* `supatype dev` wrote to `.env` on every run, which meant a project could not hold its own
|
|
6
6
|
* secrets: whatever `supatype init` or the developer put there was replaced by the published
|
|
7
7
|
* defaults on the next `dev`, and the same `.env` then went to a server. Resolving instead of
|
|
8
8
|
* pinning is what lets a generated secret survive to production.
|
|
@@ -14,7 +14,7 @@ import { hasEnvValue, readEnvValue } from "./env-file.js";
|
|
|
14
14
|
/**
|
|
15
15
|
* Fallback JWT signing secret for a project that has none.
|
|
16
16
|
*
|
|
17
|
-
* Published, therefore worthless as a secret
|
|
17
|
+
* Published, therefore worthless as a secret, anyone can mint a token for a stack still using
|
|
18
18
|
* it. That is precisely why `init` generates one instead of relying on this.
|
|
19
19
|
*/
|
|
20
20
|
export const FALLBACK_JWT_SECRET = "super-secret-jwt-token-with-at-least-32-characters-long";
|
|
@@ -44,7 +44,7 @@ export function devAuthenticatorPassword(cwd) {
|
|
|
44
44
|
*
|
|
45
45
|
* The compose template requires these with `${VAR:?}` rather than defaulting them, because a
|
|
46
46
|
* default is how a published constant ends up signing a real deployment's tokens. That only
|
|
47
|
-
* works if something guarantees presence
|
|
47
|
+
* works if something guarantees presence, this does, for any project that predates
|
|
48
48
|
* `supatype init` writing them.
|
|
49
49
|
*
|
|
50
50
|
* **Fills with the fallback, does not generate.** Preserving the value such a project has been
|
|
@@ -65,11 +65,11 @@ export function seedMissingLocalSecrets(cwd) {
|
|
|
65
65
|
return out;
|
|
66
66
|
}
|
|
67
67
|
/**
|
|
68
|
-
* The database identity the local stack connects with
|
|
68
|
+
* The database identity the local stack connects with, seeded, never overwritten.
|
|
69
69
|
*
|
|
70
70
|
* `POSTGRES_DB` in particular is *project configuration*: `supatype init` sets it to the
|
|
71
71
|
* project name, and the running container's database was created from it. Rewriting it to a
|
|
72
|
-
* default afterwards points every tool at a database that does not exist
|
|
72
|
+
* default afterwards points every tool at a database that does not exist, observed as
|
|
73
73
|
* `supatype push` failing with `FATAL: database "supatype" does not exist` on a project called
|
|
74
74
|
* something else, because the push path rewrote `.env` after `self-host compose up` had already
|
|
75
75
|
* created the database under its real name.
|
package/dist/main.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}
|
package/dist/main.js
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entry point for the standalone binary.
|
|
3
|
+
*
|
|
4
|
+
* `bin/supatype.js` stays the npm entry: it loads the CLI with a dynamic import, which Bun
|
|
5
|
+
* cannot follow when compiling. Given `import("../dist/cli.js")` it emits a binary that
|
|
6
|
+
* bundles one module and then fails at runtime with
|
|
7
|
+
* `Cannot find module '../dist/cli.js' from '/$bunfs/root/supatype'`. The import below is
|
|
8
|
+
* static, so the whole graph is embedded.
|
|
9
|
+
*/
|
|
10
|
+
import { run } from "./cli.js";
|
|
11
|
+
import { reportCliFatal } from "./ui/fatal.js";
|
|
12
|
+
// reportCliFatal rather than console.error: it is what run() already uses for a failed
|
|
13
|
+
// command, and it prints a stack under SUPATYPE_DEBUG=1. Open-coding the message here would
|
|
14
|
+
// make a crash report from a curl | bash user less useful than one from an npm user. This
|
|
15
|
+
// only fires for a throw during command registration, since run() catches everything after.
|
|
16
|
+
run().catch((err) => {
|
|
17
|
+
reportCliFatal(err);
|
|
18
|
+
process.exit(1);
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=main.js.map
|
package/dist/main.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAA;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAE9C,uFAAuF;AACvF,4FAA4F;AAC5F,0FAA0F;AAC1F,4FAA4F;AAC5F,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,GAAY,EAAE,EAAE;IAC3B,cAAc,CAAC,GAAG,CAAC,CAAA;IACnB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;AACjB,CAAC,CAAC,CAAA"}
|
package/dist/model-hooks.d.ts
CHANGED
|
@@ -29,7 +29,7 @@ export interface ManifestHookEntry {
|
|
|
29
29
|
onUnavailable?: "reject" | "log";
|
|
30
30
|
}
|
|
31
31
|
/**
|
|
32
|
-
* The hook map for `.supatype/manifest.json`, keyed by **table name
|
|
32
|
+
* The hook map for `.supatype/manifest.json`, keyed by **table name**, because that is what the
|
|
33
33
|
* server matches a request path against, not the model name.
|
|
34
34
|
*
|
|
35
35
|
* Defaults are resolved here rather than in the server: one place decides that a `before*` hook
|
|
@@ -44,7 +44,7 @@ export declare const DEFAULT_HOOK_TIMEOUT_MS = 2000;
|
|
|
44
44
|
*
|
|
45
45
|
* **Only updates a manifest that is already there.** Creating one from scratch here would be a
|
|
46
46
|
* hazard: `functions_enabled` is a plain bool on the server's side, so a manifest carrying only
|
|
47
|
-
* hooks would read as functions *disabled
|
|
47
|
+
* hooks would read as functions *disabled*, the exact defect this repo fixed a commit ago, arriving
|
|
48
48
|
* by a different door. The compose path owns creation; this owns one key.
|
|
49
49
|
*
|
|
50
50
|
* Returns true when the file was rewritten.
|
|
@@ -62,7 +62,7 @@ export interface HooksReport {
|
|
|
62
62
|
/**
|
|
63
63
|
* What `supatype doctor` needs to answer "will my hooks actually run?".
|
|
64
64
|
*
|
|
65
|
-
* Local facts only
|
|
65
|
+
* Local facts only: the schema, the functions on disk, and the manifest the server reads. No probe
|
|
66
66
|
* of a running worker, so the answer is the same whether or not the stack is up, and a report that
|
|
67
67
|
* needs a stack is a report nobody runs before deploying.
|
|
68
68
|
*
|
package/dist/model-hooks.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Validate the lifecycle hooks a schema declares against the functions that exist.
|
|
3
3
|
*
|
|
4
4
|
* A hook names a function directory. If the name is wrong, the honest failure is at push time with
|
|
5
|
-
* the path we searched
|
|
5
|
+
* the path we searched, not at runtime, where the symptom is a hook that never fires and a write
|
|
6
6
|
* that quietly succeeds unvalidated. That silence is the whole reason this check exists.
|
|
7
7
|
*
|
|
8
8
|
* Kept out of the extractor on purpose: resolving the functions directory needs the project config,
|
|
@@ -90,7 +90,7 @@ export function writeHooksModule(cwd, functionsDir, ast) {
|
|
|
90
90
|
return relative(cwd, file) || file;
|
|
91
91
|
}
|
|
92
92
|
/**
|
|
93
|
-
* The hook map for `.supatype/manifest.json`, keyed by **table name
|
|
93
|
+
* The hook map for `.supatype/manifest.json`, keyed by **table name**, because that is what the
|
|
94
94
|
* server matches a request path against, not the model name.
|
|
95
95
|
*
|
|
96
96
|
* Defaults are resolved here rather than in the server: one place decides that a `before*` hook
|
|
@@ -138,7 +138,7 @@ export const DEFAULT_HOOK_TIMEOUT_MS = 2000;
|
|
|
138
138
|
*
|
|
139
139
|
* **Only updates a manifest that is already there.** Creating one from scratch here would be a
|
|
140
140
|
* hazard: `functions_enabled` is a plain bool on the server's side, so a manifest carrying only
|
|
141
|
-
* hooks would read as functions *disabled
|
|
141
|
+
* hooks would read as functions *disabled*, the exact defect this repo fixed a commit ago, arriving
|
|
142
142
|
* by a different door. The compose path owns creation; this owns one key.
|
|
143
143
|
*
|
|
144
144
|
* Returns true when the file was rewritten.
|
|
@@ -173,7 +173,7 @@ export function syncManifestHooks(cwd, ast) {
|
|
|
173
173
|
/**
|
|
174
174
|
* What `supatype doctor` needs to answer "will my hooks actually run?".
|
|
175
175
|
*
|
|
176
|
-
* Local facts only
|
|
176
|
+
* Local facts only: the schema, the functions on disk, and the manifest the server reads. No probe
|
|
177
177
|
* of a running worker, so the answer is the same whether or not the stack is up, and a report that
|
|
178
178
|
* needs a stack is a report nobody runs before deploying.
|
|
179
179
|
*
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
/** PgBouncer md5 auth: "md5" + md5(password + username)
|
|
1
|
+
/** PgBouncer md5 auth: "md5" + md5(password + username), same as supatype-cloud / self-host. */
|
|
2
2
|
export declare function pgbouncerMd5Hash(password: string, username: string): string;
|
|
3
3
|
/** Two roles used by local compose: superuser pools (GoTrue, engine) and PostgREST. */
|
|
4
4
|
export declare function pgbouncerUserlistContent(pgPassword: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pgbouncer-userlist.d.ts","sourceRoot":"","sources":["../src/pgbouncer-userlist.ts"],"names":[],"mappings":"AAEA,
|
|
1
|
+
{"version":3,"file":"pgbouncer-userlist.d.ts","sourceRoot":"","sources":["../src/pgbouncer-userlist.ts"],"names":[],"mappings":"AAEA,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3E;AAED,uFAAuF;AACvF,wBAAgB,wBAAwB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAMnE"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
/** PgBouncer md5 auth: "md5" + md5(password + username)
|
|
2
|
+
/** PgBouncer md5 auth: "md5" + md5(password + username), same as supatype-cloud / self-host. */
|
|
3
3
|
export function pgbouncerMd5Hash(password, username) {
|
|
4
4
|
return "md5" + createHash("md5").update(password + username).digest("hex");
|
|
5
5
|
}
|
|
6
6
|
/** Two roles used by local compose: superuser pools (GoTrue, engine) and PostgREST. */
|
|
7
7
|
export function pgbouncerUserlistContent(pgPassword) {
|
|
8
|
-
return `# PgBouncer md5 userlist
|
|
8
|
+
return `# PgBouncer md5 userlist, matches supatype-cloud transaction pool (auth_type = md5).
|
|
9
9
|
# Regenerated by supatype dev --local / init from POSTGRES_PASSWORD.
|
|
10
10
|
"supatype_admin" "${pgbouncerMd5Hash(pgPassword, "supatype_admin")}"
|
|
11
11
|
"authenticator" "${pgbouncerMd5Hash(pgPassword, "authenticator")}"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pgbouncer-userlist.js","sourceRoot":"","sources":["../src/pgbouncer-userlist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,
|
|
1
|
+
{"version":3,"file":"pgbouncer-userlist.js","sourceRoot":"","sources":["../src/pgbouncer-userlist.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAExC,gGAAgG;AAChG,MAAM,UAAU,gBAAgB,CAAC,QAAgB,EAAE,QAAgB;IACjE,OAAO,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC5E,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,wBAAwB,CAAC,UAAkB;IACzD,OAAO;;oBAEW,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,CAAC;mBAC/C,gBAAgB,CAAC,UAAU,EAAE,eAAe,CAAC;CAC/D,CAAA;AACD,CAAC"}
|
package/dist/postgres-ctl.d.ts
CHANGED
package/dist/postgres-ctl.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* postgres-ctl
|
|
2
|
+
* postgres-ctl: wrappers around pg_ctl, initdb, and pg_isready for managing
|
|
3
3
|
* a native Postgres installation.
|
|
4
4
|
*/
|
|
5
5
|
import { spawnSync } from "node:child_process";
|
|
@@ -70,7 +70,7 @@ export function nativeMaskLibraryPresent(pgBinDir) {
|
|
|
70
70
|
export function start(opts) {
|
|
71
71
|
const bin = pgBin(opts.pgBinDir, "pg_ctl");
|
|
72
72
|
const logPath = opts.logPath ?? join(opts.dataDir, "postgres.log");
|
|
73
|
-
// `supatype_mask` is a planner hook, so it has to be preloaded
|
|
73
|
+
// `supatype_mask` is a planner hook, so it has to be preloaded, `CREATE EXTENSION` alone does
|
|
74
74
|
// nothing without it. Only when the archive actually carries the library: an install downloaded
|
|
75
75
|
// before it was bundled would fail to start with "could not access file".
|
|
76
76
|
//
|
|
@@ -103,7 +103,7 @@ export function stop(opts) {
|
|
|
103
103
|
encoding: "utf8",
|
|
104
104
|
env: pgSpawnEnv(opts.pgBinDir),
|
|
105
105
|
});
|
|
106
|
-
// Ignore exit code
|
|
106
|
+
// Ignore exit code: Postgres may already be stopped.
|
|
107
107
|
void result;
|
|
108
108
|
}
|
|
109
109
|
// ---------------------------------------------------------------------------
|
|
@@ -139,7 +139,7 @@ export async function isPortInUse(port) {
|
|
|
139
139
|
return new Promise((resolve) => {
|
|
140
140
|
const server = createServer();
|
|
141
141
|
server.once("error", (err) => {
|
|
142
|
-
// EADDRINUSE
|
|
142
|
+
// EADDRINUSE: something is listening. EACCES, Windows excluded/reserved port range.
|
|
143
143
|
resolve(err.code === "EADDRINUSE" || err.code === "EACCES");
|
|
144
144
|
});
|
|
145
145
|
server.once("listening", () => {
|
package/dist/postgres-ctl.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-ctl.js","sourceRoot":"","sources":["../src/postgres-ctl.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"postgres-ctl.js","sourceRoot":"","sources":["../src/postgres-ctl.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ProcessManager
|
|
2
|
+
* ProcessManager: spawn a child process, write its PID, stream logs with a
|
|
3
3
|
* colored prefix, and restart on crash with exponential backoff.
|
|
4
4
|
*/
|
|
5
5
|
export interface ProcessOptions {
|
|
@@ -38,7 +38,7 @@ export declare class ProcessManager {
|
|
|
38
38
|
/** Skip immediate duplicate lines (npm prints script banners to both streams). */
|
|
39
39
|
private lastLoggedLine;
|
|
40
40
|
constructor(bin: string, args: string[], opts: ProcessOptions);
|
|
41
|
-
/** Start the process. Returns immediately
|
|
41
|
+
/** Start the process. Returns immediately, the process runs in the background. */
|
|
42
42
|
start(): void;
|
|
43
43
|
/** Stop the process and clear the PID file. */
|
|
44
44
|
stop(): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-manager.d.ts","sourceRoot":"","sources":["../src/process-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAA;IACd,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,kFAAkF;IAClF,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAA;IAC5D,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IACzC,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;CAC3B;AAID,qBAAa,cAAc;IAiBvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAjBvB,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,IAAI,CAQX;IACD,kFAAkF;IAClF,OAAO,CAAC,cAAc,CAAK;gBAGR,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EAC/B,IAAI,EAAE,cAAc;IAgBtB,
|
|
1
|
+
{"version":3,"file":"process-manager.d.ts","sourceRoot":"","sources":["../src/process-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,KAAK,EAAE,MAAM,CAAA;IACb,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAA;IACd,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC5B,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,CAAA;IACzB,yCAAyC;IACzC,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,sDAAsD;IACtD,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;IACnB,6EAA6E;IAC7E,KAAK,CAAC,EAAE,OAAO,CAAA;IACf,kFAAkF;IAClF,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,GAAG,QAAQ,KAAK,IAAI,CAAA;IAC5D,kDAAkD;IAClD,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAA;IACzC,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;CAC3B;AAID,qBAAa,cAAc;IAiBvB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAjBvB,OAAO,CAAC,KAAK,CAA4B;IACzC,OAAO,CAAC,OAAO,CAAQ;IACvB,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,IAAI,CAQX;IACD,kFAAkF;IAClF,OAAO,CAAC,cAAc,CAAK;gBAGR,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EAAE,EAC/B,IAAI,EAAE,cAAc;IAgBtB,kFAAkF;IAClF,KAAK,IAAI,IAAI;IAKb,+CAA+C;IACzC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAgC3B,OAAO,CAAC,KAAK;IAoFb,OAAO,CAAC,QAAQ;YASF,QAAQ;CAOvB;AAED,mEAAmE;AACnE,wBAAgB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMpE"}
|
package/dist/process-manager.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* ProcessManager
|
|
2
|
+
* ProcessManager: spawn a child process, write its PID, stream logs with a
|
|
3
3
|
* colored prefix, and restart on crash with exponential backoff.
|
|
4
4
|
*/
|
|
5
5
|
import { spawn, spawnSync } from "node:child_process";
|
|
@@ -33,7 +33,7 @@ export class ProcessManager {
|
|
|
33
33
|
};
|
|
34
34
|
this.backoffMs = this.opts.initialBackoffMs;
|
|
35
35
|
}
|
|
36
|
-
/** Start the process. Returns immediately
|
|
36
|
+
/** Start the process. Returns immediately, the process runs in the background. */
|
|
37
37
|
start() {
|
|
38
38
|
this.stopped = false;
|
|
39
39
|
this.spawn();
|
|
@@ -155,7 +155,7 @@ export class ProcessManager {
|
|
|
155
155
|
writeFileSync(join(this.opts.pidDir, `${this.opts.label}.pid`), String(pid));
|
|
156
156
|
}
|
|
157
157
|
catch {
|
|
158
|
-
// Non-fatal
|
|
158
|
+
// Non-fatal: PID tracking is best-effort.
|
|
159
159
|
}
|
|
160
160
|
}
|
|
161
161
|
async clearPid() {
|
|
@@ -163,7 +163,7 @@ export class ProcessManager {
|
|
|
163
163
|
await unlink(join(this.opts.pidDir, `${this.opts.label}.pid`));
|
|
164
164
|
}
|
|
165
165
|
catch {
|
|
166
|
-
// Ignore
|
|
166
|
+
// Ignore: file may already be gone.
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
169
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../src/process-manager.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAqB,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AACxE,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAC5E,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,qBAAqB,EAAE,MAAM,kBAAkB,CAAA;AA6BxD,MAAM,KAAK,GAAG,SAAS,CAAA;AAEvB,MAAM,OAAO,cAAc;IAiBN;IACA;IAjBX,KAAK,GAAwB,IAAI,CAAA;IACjC,OAAO,GAAG,KAAK,CAAA;IACf,SAAS,CAAQ;IACjB,IAAI,CAQX;IACD,kFAAkF;IAC1E,cAAc,GAAG,EAAE,CAAA;IAE3B,YACmB,GAAW,EACX,IAAc,EAC/B,IAAoB;QAFH,QAAG,GAAH,GAAG,CAAQ;QACX,SAAI,GAAJ,IAAI,CAAU;QAG/B,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;QACtD,IAAI,CAAC,IAAI,GAAG;YACV,MAAM,EAAE,UAAU;YAClB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;YAClB,GAAG,EAAE,EAAE;YACP,gBAAgB,EAAE,KAAK;YACvB,YAAY,EAAE,MAAM;YACpB,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;YAChB,KAAK,EAAE,KAAK;YACZ,GAAG,MAAM;SACV,CAAA;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAA;IAC7C,CAAC;IAED,
|
|
1
|
+
{"version":3,"file":"process-manager.js","sourceRoot":"","sources":["../src/process-manager.ts"],"names":[],"mappings":"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"}
|
package/dist/project-config.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export interface SupatypeProjectConfig {
|
|
|
14
14
|
root?: string;
|
|
15
15
|
};
|
|
16
16
|
project: {
|
|
17
|
-
/** Project name
|
|
17
|
+
/** Project name: used for per-project state dirs and logging. */
|
|
18
18
|
name: string;
|
|
19
19
|
/** Cloud project reference (set by `supatype link`). */
|
|
20
20
|
ref?: string;
|
|
@@ -25,7 +25,7 @@ export interface SupatypeProjectConfig {
|
|
|
25
25
|
* "native" = supatype manages a native Postgres binary (downloaded from CDN).
|
|
26
26
|
* "docker" = supatype runs supatype/postgres via Docker (includes all extensions).
|
|
27
27
|
*
|
|
28
|
-
* Omitted when `external` is set
|
|
28
|
+
* Omitted when `external` is set, there is no backend for Supatype to choose.
|
|
29
29
|
*/
|
|
30
30
|
provider?: "native" | "docker";
|
|
31
31
|
/**
|
|
@@ -43,7 +43,7 @@ export interface SupatypeProjectConfig {
|
|
|
43
43
|
* Postgres URL for every service in the stack.
|
|
44
44
|
*
|
|
45
45
|
* The role in it owns the schema and runs migrations. PostgREST connects as `authenticator`
|
|
46
|
-
* separately
|
|
46
|
+
* separately: see `supatype db check`, which reports what this database is missing.
|
|
47
47
|
*/
|
|
48
48
|
url: string;
|
|
49
49
|
/**
|
|
@@ -208,12 +208,12 @@ export interface SupatypeProjectConfig {
|
|
|
208
208
|
/**
|
|
209
209
|
* Schemas the REST API exposes, in order (`PGRST_DB_SCHEMA`).
|
|
210
210
|
*
|
|
211
|
-
* Defaults to `pg_schema` plus the ones the stack needs for itself
|
|
212
|
-
* views, `graphql_public`, `auth
|
|
211
|
+
* Defaults to `pg_schema` plus the ones the stack needs for itself, `supatype` for Studio's
|
|
212
|
+
* views, `graphql_public`, `auth`: so setting `pg_schema` alone does the sensible thing.
|
|
213
213
|
*
|
|
214
214
|
* It used to be a hardcoded literal, which meant choosing a non-`public` `pg_schema` gave you
|
|
215
215
|
* a correct push and an API that answered `PGRST106` for everything: the engine had moved and
|
|
216
|
-
* PostgREST had not been told. State this explicitly when you need a different set
|
|
216
|
+
* PostgREST had not been told. State this explicitly when you need a different set, an extra
|
|
217
217
|
* schema of your own, or to stop exposing one.
|
|
218
218
|
*/
|
|
219
219
|
api_schemas?: readonly string[];
|
|
@@ -231,7 +231,7 @@ export interface SupatypeProjectConfig {
|
|
|
231
231
|
*
|
|
232
232
|
* **Model hooks are not listed here and do not need to be.** A hook is procedural: only the API
|
|
233
233
|
* server calls it, around a write the caller was already permitted to make, and the gateway
|
|
234
|
-
* refuses its route from outside
|
|
234
|
+
* refuses its route from outside, so there is no attacker to withhold it from, and the trust is
|
|
235
235
|
* the same a trigger already has.
|
|
236
236
|
*/
|
|
237
237
|
serviceRole?: readonly string[];
|
|
@@ -294,11 +294,11 @@ export declare function projectRootFromConfig(cfg: SupatypeProjectConfig, cwd: s
|
|
|
294
294
|
/** Candidate functions directories in lookup order. */
|
|
295
295
|
export declare function functionsPathCandidatesFromProject(cfg: SupatypeProjectConfig, cwd: string): string[];
|
|
296
296
|
/**
|
|
297
|
-
* Directory holding **model hooks
|
|
297
|
+
* Directory holding **model hooks**, procedural handlers the API calls around a write.
|
|
298
298
|
*
|
|
299
299
|
* Separate from `functions/` because the two have different trust models: a function is a public
|
|
300
300
|
* endpoint anyone with the anon key may invoke, while a hook is only ever called by the server. One
|
|
301
|
-
* worker serves both, and the gateway refuses the hook namespace from outside
|
|
301
|
+
* worker serves both, and the gateway refuses the hook namespace from outside, so keeping them in
|
|
302
302
|
* separate directories is what makes that boundary structural rather than a list to maintain.
|
|
303
303
|
*/
|
|
304
304
|
export declare function hooksPathFromProject(cfg: SupatypeProjectConfig, cwd: string): string;
|
|
@@ -322,7 +322,7 @@ export declare function resolveRuntimeProvider(cfg: SupatypeProjectConfig): "nat
|
|
|
322
322
|
*
|
|
323
323
|
* Resolved here rather than in the compose template so there is one definition of the format.
|
|
324
324
|
*
|
|
325
|
-
* This does **not** check that the names exist
|
|
325
|
+
* This does **not** check that the names exist, it cannot, since it has only the config. An earlier
|
|
326
326
|
* version of this comment claimed a typo was "visible in one place rather than silently granting
|
|
327
327
|
* nothing", which was false: nothing read the list except the two callers that turn it into an env var.
|
|
328
328
|
* `checkServiceRoleRoutes` in `service-role-check.ts` is what actually resolves the names, and `push`
|
|
@@ -352,7 +352,7 @@ export declare function externalDatabaseUrl(cfg: SupatypeProjectConfig): string
|
|
|
352
352
|
* Whether realtime should run.
|
|
353
353
|
*
|
|
354
354
|
* `false` only when stated. An external database that cannot support logical replication is detected
|
|
355
|
-
* rather than declared
|
|
355
|
+
* rather than declared: the capability record is what Studio and `doctor` read, so an operator who
|
|
356
356
|
* has not thought about it gets a truthful answer instead of a silent default.
|
|
357
357
|
*/
|
|
358
358
|
export declare function realtimeEnabled(cfg: SupatypeProjectConfig): boolean;
|
|
@@ -373,7 +373,7 @@ export declare const STACK_API_SCHEMAS: readonly ["supatype", "graphql_public",
|
|
|
373
373
|
* while PostgREST kept serving `public`, so every request answered `PGRST106` and nothing in the
|
|
374
374
|
* output mentioned the setting that caused it.
|
|
375
375
|
*
|
|
376
|
-
* `api_schemas` replaces the whole list when stated
|
|
376
|
+
* `api_schemas` replaces the whole list when stated, including the stack schemas, so dropping
|
|
377
377
|
* `supatype` from it is a supported way to stop exposing Studio's views. Order is preserved and
|
|
378
378
|
* duplicates removed: PostgREST serves the first entry as the default profile, so the managed
|
|
379
379
|
* schema has to lead.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAMxD,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,QAAQ,CAAC,EAAE;QACT;;;WAGG;QACH,IAAI,CAAC,EAAE,MAAM,CAAA;KACd,CAAA;IACD,OAAO,EAAE;QACP,
|
|
1
|
+
{"version":3,"file":"project-config.d.ts","sourceRoot":"","sources":["../src/project-config.ts"],"names":[],"mappings":"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"}
|
package/dist/project-config.js
CHANGED
|
@@ -127,7 +127,7 @@ function validateExternalDatabase(cfg, filename) {
|
|
|
127
127
|
}
|
|
128
128
|
const url = external["url"];
|
|
129
129
|
if (typeof url !== "string" || url.trim().length === 0) {
|
|
130
|
-
throw new Error(`${filename}: database.external.url is required
|
|
130
|
+
throw new Error(`${filename}: database.external.url is required, the Postgres URL every service connects to.\n` +
|
|
131
131
|
"Reading it from the environment keeps the password out of version control:\n" +
|
|
132
132
|
" database: { external: { url: process.env.DATABASE_URL! } }\n" +
|
|
133
133
|
"The project's .env is loaded before the config module, so DATABASE_URL there is enough.");
|
|
@@ -141,20 +141,20 @@ function validateExternalDatabase(cfg, filename) {
|
|
|
141
141
|
}
|
|
142
142
|
if (database["provider"] !== undefined) {
|
|
143
143
|
throw new Error(`${filename}: database.provider ("${String(database["provider"])}") and database.external ` +
|
|
144
|
-
"cannot both be set
|
|
144
|
+
"cannot both be set, provider chooses a Postgres for Supatype to run, external says one " +
|
|
145
145
|
"already exists.\n" +
|
|
146
146
|
"Remove database.provider. The runtime stack is still chosen by the top-level `provider`.");
|
|
147
147
|
}
|
|
148
148
|
const server = cfg["server"];
|
|
149
149
|
if (server?.["mode"] === "managed") {
|
|
150
|
-
throw new Error(`${filename}: database.external is not supported with server.mode "managed"
|
|
150
|
+
throw new Error(`${filename}: database.external is not supported with server.mode "managed", on the cloud ` +
|
|
151
151
|
"path the database is part of what is being provided.\n" +
|
|
152
152
|
"Use an external database with a self-hosted stack (server.mode \"dev\" or \"standalone\").");
|
|
153
153
|
}
|
|
154
154
|
const connection = cfg["connection"];
|
|
155
155
|
if (typeof connection === "string" && connection.trim() !== url.trim()) {
|
|
156
156
|
throw new Error(`${filename}: connection and database.external.url are both set and disagree.\n` +
|
|
157
|
-
"database.external.url is what the whole stack uses, CLI commands included
|
|
157
|
+
"database.external.url is what the whole stack uses, CLI commands included, remove " +
|
|
158
158
|
"`connection`.");
|
|
159
159
|
}
|
|
160
160
|
}
|
|
@@ -176,11 +176,11 @@ export function functionsPathCandidatesFromProject(cfg, cwd) {
|
|
|
176
176
|
return [resolve(root, "functions"), resolve(root, "supatype/functions")];
|
|
177
177
|
}
|
|
178
178
|
/**
|
|
179
|
-
* Directory holding **model hooks
|
|
179
|
+
* Directory holding **model hooks**, procedural handlers the API calls around a write.
|
|
180
180
|
*
|
|
181
181
|
* Separate from `functions/` because the two have different trust models: a function is a public
|
|
182
182
|
* endpoint anyone with the anon key may invoke, while a hook is only ever called by the server. One
|
|
183
|
-
* worker serves both, and the gateway refuses the hook namespace from outside
|
|
183
|
+
* worker serves both, and the gateway refuses the hook namespace from outside, so keeping them in
|
|
184
184
|
* separate directories is what makes that boundary structural rather than a list to maintain.
|
|
185
185
|
*/
|
|
186
186
|
export function hooksPathFromProject(cfg, cwd) {
|
|
@@ -242,7 +242,7 @@ export function resolveRuntimeProvider(cfg) {
|
|
|
242
242
|
*
|
|
243
243
|
* Resolved here rather than in the compose template so there is one definition of the format.
|
|
244
244
|
*
|
|
245
|
-
* This does **not** check that the names exist
|
|
245
|
+
* This does **not** check that the names exist, it cannot, since it has only the config. An earlier
|
|
246
246
|
* version of this comment claimed a typo was "visible in one place rather than silently granting
|
|
247
247
|
* nothing", which was false: nothing read the list except the two callers that turn it into an env var.
|
|
248
248
|
* `checkServiceRoleRoutes` in `service-role-check.ts` is what actually resolves the names, and `push`
|
|
@@ -285,7 +285,7 @@ export function externalDatabaseUrl(cfg) {
|
|
|
285
285
|
* Whether realtime should run.
|
|
286
286
|
*
|
|
287
287
|
* `false` only when stated. An external database that cannot support logical replication is detected
|
|
288
|
-
* rather than declared
|
|
288
|
+
* rather than declared: the capability record is what Studio and `doctor` read, so an operator who
|
|
289
289
|
* has not thought about it gets a truthful answer instead of a silent default.
|
|
290
290
|
*/
|
|
291
291
|
export function realtimeEnabled(cfg) {
|
|
@@ -311,7 +311,7 @@ export const STACK_API_SCHEMAS = ["supatype", "graphql_public", "auth"];
|
|
|
311
311
|
* while PostgREST kept serving `public`, so every request answered `PGRST106` and nothing in the
|
|
312
312
|
* output mentioned the setting that caused it.
|
|
313
313
|
*
|
|
314
|
-
* `api_schemas` replaces the whole list when stated
|
|
314
|
+
* `api_schemas` replaces the whole list when stated, including the stack schemas, so dropping
|
|
315
315
|
* `supatype` from it is a supported way to stop exposing Studio's views. Order is preserved and
|
|
316
316
|
* duplicates removed: PostgREST serves the first entry as the default profile, so the managed
|
|
317
317
|
* schema has to lead.
|