@vendure/cloud 0.4.0 → 0.5.0-dev.20261016123507.ge07a06e
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/README.md +43 -10
- package/dist/cli/arguments.d.ts.map +1 -1
- package/dist/cli/arguments.js +9 -31
- package/dist/cli/arguments.js.map +1 -1
- package/dist/cli/command.d.ts.map +1 -1
- package/dist/cli/command.js +13 -30
- package/dist/cli/command.js.map +1 -1
- package/dist/cli/commands/access/access.d.ts +5 -0
- package/dist/cli/commands/access/access.d.ts.map +1 -0
- package/dist/cli/commands/access/access.js +73 -0
- package/dist/cli/commands/access/access.js.map +1 -0
- package/dist/cli/commands/access/index.d.ts +2 -0
- package/dist/cli/commands/access/index.d.ts.map +1 -0
- package/dist/cli/commands/access/index.js +46 -0
- package/dist/cli/commands/access/index.js.map +1 -0
- package/dist/cli/commands/deployment/arguments.d.ts.map +1 -1
- package/dist/cli/commands/deployment/arguments.js +1 -8
- package/dist/cli/commands/deployment/arguments.js.map +1 -1
- package/dist/cli/commands/deployment/build-logs.d.ts.map +1 -1
- package/dist/cli/commands/deployment/build-logs.js +12 -16
- package/dist/cli/commands/deployment/build-logs.js.map +1 -1
- package/dist/cli/commands/deployment/deploy.d.ts.map +1 -1
- package/dist/cli/commands/deployment/deploy.js +88 -45
- package/dist/cli/commands/deployment/deploy.js.map +1 -1
- package/dist/cli/commands/deployment/index.d.ts.map +1 -1
- package/dist/cli/commands/deployment/index.js +18 -30
- package/dist/cli/commands/deployment/index.js.map +1 -1
- package/dist/cli/commands/deployment/list.d.ts.map +1 -1
- package/dist/cli/commands/deployment/list.js +5 -5
- package/dist/cli/commands/deployment/list.js.map +1 -1
- package/dist/cli/commands/deployment/log-export.d.ts.map +1 -1
- package/dist/cli/commands/deployment/log-export.js +14 -27
- package/dist/cli/commands/deployment/log-export.js.map +1 -1
- package/dist/cli/commands/deployment/log-query-output.d.ts.map +1 -1
- package/dist/cli/commands/deployment/log-query-output.js +18 -32
- package/dist/cli/commands/deployment/log-query-output.js.map +1 -1
- package/dist/cli/commands/deployment/logs.d.ts.map +1 -1
- package/dist/cli/commands/deployment/logs.js +52 -72
- package/dist/cli/commands/deployment/logs.js.map +1 -1
- package/dist/cli/commands/deployment/options.d.ts.map +1 -1
- package/dist/cli/commands/deployment/options.js +11 -20
- package/dist/cli/commands/deployment/options.js.map +1 -1
- package/dist/cli/commands/deployment/plan-format.d.ts.map +1 -1
- package/dist/cli/commands/deployment/plan-format.js +2 -2
- package/dist/cli/commands/deployment/plan-format.js.map +1 -1
- package/dist/cli/commands/deployment/plan.d.ts.map +1 -1
- package/dist/cli/commands/deployment/plan.js +7 -8
- package/dist/cli/commands/deployment/plan.js.map +1 -1
- package/dist/cli/commands/deployment/recovery.d.ts.map +1 -1
- package/dist/cli/commands/deployment/recovery.js +25 -35
- package/dist/cli/commands/deployment/recovery.js.map +1 -1
- package/dist/cli/commands/deployment/rollback.d.ts.map +1 -1
- package/dist/cli/commands/deployment/rollback.js +58 -12
- package/dist/cli/commands/deployment/rollback.js.map +1 -1
- package/dist/cli/commands/deployment/shared.d.ts.map +1 -1
- package/dist/cli/commands/deployment/shared.js +4 -7
- package/dist/cli/commands/deployment/shared.js.map +1 -1
- package/dist/cli/commands/deployment/show.d.ts.map +1 -1
- package/dist/cli/commands/deployment/show.js +8 -9
- package/dist/cli/commands/deployment/show.js.map +1 -1
- package/dist/cli/commands/deployment/source.d.ts.map +1 -1
- package/dist/cli/commands/deployment/source.js +2 -2
- package/dist/cli/commands/deployment/source.js.map +1 -1
- package/dist/cli/commands/deployment/status.d.ts.map +1 -1
- package/dist/cli/commands/deployment/status.js +10 -11
- package/dist/cli/commands/deployment/status.js.map +1 -1
- package/dist/cli/commands/deployment/teardown.js +22 -31
- package/dist/cli/commands/deployment/teardown.js.map +1 -1
- package/dist/cli/commands/identity-context/context.d.ts.map +1 -1
- package/dist/cli/commands/identity-context/context.js +3 -4
- package/dist/cli/commands/identity-context/context.js.map +1 -1
- package/dist/cli/commands/identity-context/index.d.ts.map +1 -1
- package/dist/cli/commands/identity-context/index.js +16 -50
- package/dist/cli/commands/identity-context/index.js.map +1 -1
- package/dist/cli/commands/identity-context/keys.d.ts.map +1 -1
- package/dist/cli/commands/identity-context/keys.js +13 -15
- package/dist/cli/commands/identity-context/keys.js.map +1 -1
- package/dist/cli/commands/identity-context/use.js +1 -1
- package/dist/cli/commands/identity-context/use.js.map +1 -1
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +13 -20
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/project-config/config/build-fields.d.ts.map +1 -1
- package/dist/cli/commands/project-config/config/build-fields.js +2 -3
- package/dist/cli/commands/project-config/config/build-fields.js.map +1 -1
- package/dist/cli/commands/project-config/config/build.d.ts.map +1 -1
- package/dist/cli/commands/project-config/config/build.js +8 -9
- package/dist/cli/commands/project-config/config/build.js.map +1 -1
- package/dist/cli/commands/project-config/config/desired-state.d.ts.map +1 -1
- package/dist/cli/commands/project-config/config/desired-state.js +10 -12
- package/dist/cli/commands/project-config/config/desired-state.js.map +1 -1
- package/dist/cli/commands/project-config/config/email/domain.d.ts.map +1 -1
- package/dist/cli/commands/project-config/config/email/domain.js +12 -9
- package/dist/cli/commands/project-config/config/email/domain.js.map +1 -1
- package/dist/cli/commands/project-config/config/email/events.d.ts.map +1 -1
- package/dist/cli/commands/project-config/config/email/events.js +9 -9
- package/dist/cli/commands/project-config/config/email/events.js.map +1 -1
- package/dist/cli/commands/project-config/config/email/index.d.ts.map +1 -1
- package/dist/cli/commands/project-config/config/email/index.js +5 -6
- package/dist/cli/commands/project-config/config/email/index.js.map +1 -1
- package/dist/cli/commands/project-config/config/email/test-sending.d.ts.map +1 -1
- package/dist/cli/commands/project-config/config/email/test-sending.js +6 -5
- package/dist/cli/commands/project-config/config/email/test-sending.js.map +1 -1
- package/dist/cli/commands/project-config/config/index.d.ts.map +1 -1
- package/dist/cli/commands/project-config/config/index.js +8 -10
- package/dist/cli/commands/project-config/config/index.js.map +1 -1
- package/dist/cli/commands/project-config/config/runtime.d.ts.map +1 -1
- package/dist/cli/commands/project-config/config/runtime.js +10 -21
- package/dist/cli/commands/project-config/config/runtime.js.map +1 -1
- package/dist/cli/commands/project-config/config/set.js +3 -3
- package/dist/cli/commands/project-config/config/set.js.map +1 -1
- package/dist/cli/commands/project-config/config/show.d.ts.map +1 -1
- package/dist/cli/commands/project-config/config/show.js +7 -7
- package/dist/cli/commands/project-config/config/show.js.map +1 -1
- package/dist/cli/commands/project-config/env/add.d.ts.map +1 -1
- package/dist/cli/commands/project-config/env/add.js +4 -3
- package/dist/cli/commands/project-config/env/add.js.map +1 -1
- package/dist/cli/commands/project-config/env/get.d.ts.map +1 -1
- package/dist/cli/commands/project-config/env/get.js +7 -2
- package/dist/cli/commands/project-config/env/get.js.map +1 -1
- package/dist/cli/commands/project-config/env/import.d.ts.map +1 -1
- package/dist/cli/commands/project-config/env/import.js +15 -8
- package/dist/cli/commands/project-config/env/import.js.map +1 -1
- package/dist/cli/commands/project-config/env/index.js +7 -8
- package/dist/cli/commands/project-config/env/index.js.map +1 -1
- package/dist/cli/commands/project-config/env/list.d.ts.map +1 -1
- package/dist/cli/commands/project-config/env/list.js +29 -8
- package/dist/cli/commands/project-config/env/list.js.map +1 -1
- package/dist/cli/commands/project-config/env/metadata-options.d.ts.map +1 -1
- package/dist/cli/commands/project-config/env/metadata-options.js +0 -1
- package/dist/cli/commands/project-config/env/metadata-options.js.map +1 -1
- package/dist/cli/commands/project-config/env/pull.d.ts.map +1 -1
- package/dist/cli/commands/project-config/env/pull.js +22 -8
- package/dist/cli/commands/project-config/env/pull.js.map +1 -1
- package/dist/cli/commands/project-config/env/read-value.d.ts.map +1 -1
- package/dist/cli/commands/project-config/env/read-value.js +8 -4
- package/dist/cli/commands/project-config/env/read-value.js.map +1 -1
- package/dist/cli/commands/project-config/env/rm.d.ts.map +1 -1
- package/dist/cli/commands/project-config/env/rm.js +4 -3
- package/dist/cli/commands/project-config/env/rm.js.map +1 -1
- package/dist/cli/commands/project-config/env/run.d.ts.map +1 -1
- package/dist/cli/commands/project-config/env/run.js +9 -8
- package/dist/cli/commands/project-config/env/run.js.map +1 -1
- package/dist/cli/commands/project-config/env/update.d.ts.map +1 -1
- package/dist/cli/commands/project-config/env/update.js +4 -3
- package/dist/cli/commands/project-config/env/update.js.map +1 -1
- package/dist/cli/commands/project-config/environment/create.d.ts.map +1 -1
- package/dist/cli/commands/project-config/environment/create.js +5 -6
- package/dist/cli/commands/project-config/environment/create.js.map +1 -1
- package/dist/cli/commands/project-config/environment/delete.d.ts.map +1 -1
- package/dist/cli/commands/project-config/environment/delete.js +6 -6
- package/dist/cli/commands/project-config/environment/delete.js.map +1 -1
- package/dist/cli/commands/project-config/environment/find.js +3 -3
- package/dist/cli/commands/project-config/environment/find.js.map +1 -1
- package/dist/cli/commands/project-config/environment/index.d.ts.map +1 -1
- package/dist/cli/commands/project-config/environment/index.js +8 -10
- package/dist/cli/commands/project-config/environment/index.js.map +1 -1
- package/dist/cli/commands/project-config/environment/initial-superadmin.d.ts.map +1 -1
- package/dist/cli/commands/project-config/environment/initial-superadmin.js +4 -5
- package/dist/cli/commands/project-config/environment/initial-superadmin.js.map +1 -1
- package/dist/cli/commands/project-config/environment/list.d.ts.map +1 -1
- package/dist/cli/commands/project-config/environment/list.js +5 -5
- package/dist/cli/commands/project-config/environment/list.js.map +1 -1
- package/dist/cli/commands/project-config/environment/regions.d.ts.map +1 -1
- package/dist/cli/commands/project-config/environment/regions.js +3 -3
- package/dist/cli/commands/project-config/environment/regions.js.map +1 -1
- package/dist/cli/commands/project-config/environment/show.d.ts.map +1 -1
- package/dist/cli/commands/project-config/environment/show.js +3 -4
- package/dist/cli/commands/project-config/environment/show.js.map +1 -1
- package/dist/cli/commands/project-config/environment/update.d.ts.map +1 -1
- package/dist/cli/commands/project-config/environment/update.js +3 -4
- package/dist/cli/commands/project-config/environment/update.js.map +1 -1
- package/dist/cli/commands/project-config/index.js +5 -5
- package/dist/cli/commands/project-config/index.js.map +1 -1
- package/dist/cli/commands/project-config/init/build-detection.d.ts.map +1 -1
- package/dist/cli/commands/project-config/init/build-detection.js +4 -4
- package/dist/cli/commands/project-config/init/build-detection.js.map +1 -1
- package/dist/cli/commands/project-config/init/index.d.ts.map +1 -1
- package/dist/cli/commands/project-config/init/index.js +4 -5
- package/dist/cli/commands/project-config/init/index.js.map +1 -1
- package/dist/cli/commands/project-config/init/init.d.ts.map +1 -1
- package/dist/cli/commands/project-config/init/init.js +18 -22
- package/dist/cli/commands/project-config/init/init.js.map +1 -1
- package/dist/cli/commands/project-config/options.d.ts.map +1 -1
- package/dist/cli/commands/project-config/options.js +9 -14
- package/dist/cli/commands/project-config/options.js.map +1 -1
- package/dist/cli/commands/project-config/project/create.d.ts.map +1 -1
- package/dist/cli/commands/project-config/project/create.js +3 -3
- package/dist/cli/commands/project-config/project/create.js.map +1 -1
- package/dist/cli/commands/project-config/project/delete.d.ts.map +1 -1
- package/dist/cli/commands/project-config/project/delete.js +4 -5
- package/dist/cli/commands/project-config/project/delete.js.map +1 -1
- package/dist/cli/commands/project-config/project/index.d.ts.map +1 -1
- package/dist/cli/commands/project-config/project/index.js +4 -5
- package/dist/cli/commands/project-config/project/index.js.map +1 -1
- package/dist/cli/commands/project-config/project/link.d.ts.map +1 -1
- package/dist/cli/commands/project-config/project/link.js +4 -4
- package/dist/cli/commands/project-config/project/link.js.map +1 -1
- package/dist/cli/commands/project-config/project/list.d.ts.map +1 -1
- package/dist/cli/commands/project-config/project/list.js +5 -5
- package/dist/cli/commands/project-config/project/list.js.map +1 -1
- package/dist/cli/commands/project-config/project/show.d.ts.map +1 -1
- package/dist/cli/commands/project-config/project/show.js +11 -14
- package/dist/cli/commands/project-config/project/show.js.map +1 -1
- package/dist/cli/commands/project-config/project/subscription-state.d.ts.map +1 -1
- package/dist/cli/commands/project-config/project/subscription-state.js +17 -20
- package/dist/cli/commands/project-config/project/subscription-state.js.map +1 -1
- package/dist/cli/commands/project-config/project/unlink.d.ts.map +1 -1
- package/dist/cli/commands/project-config/project/unlink.js +2 -3
- package/dist/cli/commands/project-config/project/unlink.js.map +1 -1
- package/dist/cli/commands/project-config/project/update.d.ts.map +1 -1
- package/dist/cli/commands/project-config/project/update.js +3 -4
- package/dist/cli/commands/project-config/project/update.js.map +1 -1
- package/dist/cli/commands/project-config/source/connect.d.ts.map +1 -1
- package/dist/cli/commands/project-config/source/connect.js +24 -26
- package/dist/cli/commands/project-config/source/connect.js.map +1 -1
- package/dist/cli/commands/project-config/source/disconnect.d.ts.map +1 -1
- package/dist/cli/commands/project-config/source/disconnect.js +4 -4
- package/dist/cli/commands/project-config/source/disconnect.js.map +1 -1
- package/dist/cli/commands/project-config/source/index.js +7 -7
- package/dist/cli/commands/project-config/source/index.js.map +1 -1
- package/dist/cli/commands/project-config/source/map.d.ts.map +1 -1
- package/dist/cli/commands/project-config/source/map.js +12 -16
- package/dist/cli/commands/project-config/source/map.js.map +1 -1
- package/dist/cli/commands/project-config/source/repos.d.ts.map +1 -1
- package/dist/cli/commands/project-config/source/repos.js +5 -5
- package/dist/cli/commands/project-config/source/repos.js.map +1 -1
- package/dist/cli/commands/project-config/source/status.d.ts.map +1 -1
- package/dist/cli/commands/project-config/source/status.js +16 -25
- package/dist/cli/commands/project-config/source/status.js.map +1 -1
- package/dist/cli/commands/runtime-data/backup.d.ts.map +1 -1
- package/dist/cli/commands/runtime-data/backup.js +34 -36
- package/dist/cli/commands/runtime-data/backup.js.map +1 -1
- package/dist/cli/commands/runtime-data/index.d.ts.map +1 -1
- package/dist/cli/commands/runtime-data/index.js +38 -39
- package/dist/cli/commands/runtime-data/index.js.map +1 -1
- package/dist/cli/commands/runtime-data/resource.d.ts +1 -0
- package/dist/cli/commands/runtime-data/resource.d.ts.map +1 -1
- package/dist/cli/commands/runtime-data/resource.js +92 -33
- package/dist/cli/commands/runtime-data/resource.js.map +1 -1
- package/dist/cli/commands/runtime-data/restore.d.ts.map +1 -1
- package/dist/cli/commands/runtime-data/restore.js +32 -45
- package/dist/cli/commands/runtime-data/restore.js.map +1 -1
- package/dist/cli/commands/runtime-data/seeds.d.ts.map +1 -1
- package/dist/cli/commands/runtime-data/seeds.js +24 -26
- package/dist/cli/commands/runtime-data/seeds.js.map +1 -1
- package/dist/cli/commands/runtime-data/tunnel.d.ts.map +1 -1
- package/dist/cli/commands/runtime-data/tunnel.js +33 -43
- package/dist/cli/commands/runtime-data/tunnel.js.map +1 -1
- package/dist/cli/host-arguments.d.ts.map +1 -1
- package/dist/cli/host-arguments.js +10 -18
- package/dist/cli/host-arguments.js.map +1 -1
- package/dist/cli/host-nodes.js +1 -1
- package/dist/cli/host-nodes.js.map +1 -1
- package/dist/cli/index.d.ts +10 -13
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +22 -33
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/lib/api-client.d.ts +10 -5
- package/dist/cli/lib/api-client.d.ts.map +1 -1
- package/dist/cli/lib/api-client.js +23 -42
- package/dist/cli/lib/api-client.js.map +1 -1
- package/dist/cli/lib/auth.d.ts +4 -145
- package/dist/cli/lib/auth.d.ts.map +1 -1
- package/dist/cli/lib/auth.js +8 -515
- package/dist/cli/lib/auth.js.map +1 -1
- package/dist/cli/lib/cli-login.d.ts +12 -0
- package/dist/cli/lib/cli-login.d.ts.map +1 -0
- package/dist/cli/lib/cli-login.js +155 -0
- package/dist/cli/lib/cli-login.js.map +1 -0
- package/dist/cli/lib/cloud-api-url.d.ts +2 -0
- package/dist/cli/lib/cloud-api-url.d.ts.map +1 -0
- package/dist/cli/lib/cloud-api-url.js +3 -0
- package/dist/cli/lib/cloud-api-url.js.map +1 -0
- package/dist/cli/lib/commit.d.ts.map +1 -1
- package/dist/cli/lib/commit.js +2 -3
- package/dist/cli/lib/commit.js.map +1 -1
- package/dist/cli/lib/config-revisions.d.ts +9 -0
- package/dist/cli/lib/config-revisions.d.ts.map +1 -0
- package/dist/cli/lib/config-revisions.js +52 -0
- package/dist/cli/lib/config-revisions.js.map +1 -0
- package/dist/cli/lib/config.d.ts +0 -4
- package/dist/cli/lib/config.d.ts.map +1 -1
- package/dist/cli/lib/config.js +3 -5
- package/dist/cli/lib/config.js.map +1 -1
- package/dist/cli/lib/console-pairing.d.ts +1 -14
- package/dist/cli/lib/console-pairing.d.ts.map +1 -1
- package/dist/cli/lib/console-pairing.js +48 -60
- package/dist/cli/lib/console-pairing.js.map +1 -1
- package/dist/cli/lib/contract/backup-schedule-reasons.d.ts.map +1 -1
- package/dist/cli/lib/contract/backup-schedule-reasons.js +3 -7
- package/dist/cli/lib/contract/backup-schedule-reasons.js.map +1 -1
- package/dist/cli/lib/contract/build-settings.d.ts +1 -1
- package/dist/cli/lib/contract/build-settings.d.ts.map +1 -1
- package/dist/cli/lib/contract/build-settings.js +12 -18
- package/dist/cli/lib/contract/build-settings.js.map +1 -1
- package/dist/cli/lib/contract/database.d.ts.map +1 -1
- package/dist/cli/lib/contract/database.js +7 -13
- package/dist/cli/lib/contract/database.js.map +1 -1
- package/dist/cli/lib/contract/deployment-resource-labels.d.ts.map +1 -1
- package/dist/cli/lib/contract/deployment-resource-labels.js +2 -6
- package/dist/cli/lib/contract/deployment-resource-labels.js.map +1 -1
- package/dist/cli/lib/contract/deployments.d.ts +1 -0
- package/dist/cli/lib/contract/deployments.d.ts.map +1 -1
- package/dist/cli/lib/contract/deployments.js +32 -40
- package/dist/cli/lib/contract/deployments.js.map +1 -1
- package/dist/cli/lib/contract/desired-state.d.ts +3 -1
- package/dist/cli/lib/contract/desired-state.d.ts.map +1 -1
- package/dist/cli/lib/contract/desired-state.js +33 -50
- package/dist/cli/lib/contract/desired-state.js.map +1 -1
- package/dist/cli/lib/contract/env-vars.d.ts +37 -0
- package/dist/cli/lib/contract/env-vars.d.ts.map +1 -0
- package/dist/cli/lib/contract/env-vars.js +6 -0
- package/dist/cli/lib/contract/env-vars.js.map +1 -0
- package/dist/cli/lib/contract/foreign-credentials.d.ts +14 -27
- package/dist/cli/lib/contract/foreign-credentials.d.ts.map +1 -1
- package/dist/cli/lib/contract/foreign-credentials.js +19 -32
- package/dist/cli/lib/contract/foreign-credentials.js.map +1 -1
- package/dist/cli/lib/contract/logs.d.ts.map +1 -1
- package/dist/cli/lib/contract/logs.js +26 -34
- package/dist/cli/lib/contract/logs.js.map +1 -1
- package/dist/cli/lib/contract/managed-email.d.ts.map +1 -1
- package/dist/cli/lib/contract/managed-email.js +2 -3
- package/dist/cli/lib/contract/managed-email.js.map +1 -1
- package/dist/cli/lib/contract/permission-denied.d.ts +16 -0
- package/dist/cli/lib/contract/permission-denied.d.ts.map +1 -0
- package/dist/cli/lib/contract/permission-denied.js +20 -0
- package/dist/cli/lib/contract/permission-denied.js.map +1 -0
- package/dist/cli/lib/contract/project-grants.d.ts +16 -0
- package/dist/cli/lib/contract/project-grants.d.ts.map +1 -0
- package/dist/cli/lib/contract/project-grants.js +58 -0
- package/dist/cli/lib/contract/project-grants.js.map +1 -0
- package/dist/cli/lib/contract/projects.d.ts.map +1 -1
- package/dist/cli/lib/contract/projects.js +2 -3
- package/dist/cli/lib/contract/projects.js.map +1 -1
- package/dist/cli/lib/contract/public-error-details.d.ts.map +1 -1
- package/dist/cli/lib/contract/public-error-details.js +28 -43
- package/dist/cli/lib/contract/public-error-details.js.map +1 -1
- package/dist/cli/lib/contract/regions.js +2 -2
- package/dist/cli/lib/contract/regions.js.map +1 -1
- package/dist/cli/lib/contract/runtime-operations.d.ts +16 -0
- package/dist/cli/lib/contract/runtime-operations.d.ts.map +1 -1
- package/dist/cli/lib/contract/runtime-operations.js +16 -21
- package/dist/cli/lib/contract/runtime-operations.js.map +1 -1
- package/dist/cli/lib/contract/seeds.d.ts.map +1 -1
- package/dist/cli/lib/contract/seeds.js +12 -21
- package/dist/cli/lib/contract/seeds.js.map +1 -1
- package/dist/cli/lib/contract/source-disconnect-reasons.d.ts.map +1 -1
- package/dist/cli/lib/contract/source-disconnect-reasons.js +9 -17
- package/dist/cli/lib/contract/source-disconnect-reasons.js.map +1 -1
- package/dist/cli/lib/contract/source-repository.d.ts.map +1 -1
- package/dist/cli/lib/contract/source-repository.js +5 -9
- package/dist/cli/lib/contract/source-repository.js.map +1 -1
- package/dist/cli/lib/contract/wire-types.d.ts.map +1 -1
- package/dist/cli/lib/contract/wire-types.js +3 -8
- package/dist/cli/lib/contract/wire-types.js.map +1 -1
- package/dist/cli/lib/contract/wire-values.d.ts.map +1 -1
- package/dist/cli/lib/contract/wire-values.js +2 -3
- package/dist/cli/lib/contract/wire-values.js.map +1 -1
- package/dist/cli/lib/dotenv.d.ts +6 -0
- package/dist/cli/lib/dotenv.d.ts.map +1 -1
- package/dist/cli/lib/dotenv.js +62 -20
- package/dist/cli/lib/dotenv.js.map +1 -1
- package/dist/cli/lib/env-file.d.ts.map +1 -1
- package/dist/cli/lib/env-file.js +5 -11
- package/dist/cli/lib/env-file.js.map +1 -1
- package/dist/cli/lib/env-preflight.d.ts +6 -1
- package/dist/cli/lib/env-preflight.d.ts.map +1 -1
- package/dist/cli/lib/env-preflight.js +91 -63
- package/dist/cli/lib/env-preflight.js.map +1 -1
- package/dist/cli/lib/errors.d.ts +17 -49
- package/dist/cli/lib/errors.d.ts.map +1 -1
- package/dist/cli/lib/errors.js +47 -106
- package/dist/cli/lib/errors.js.map +1 -1
- package/dist/cli/lib/format.d.ts.map +1 -1
- package/dist/cli/lib/format.js +3 -5
- package/dist/cli/lib/format.js.map +1 -1
- package/dist/cli/lib/invocation.d.ts +4 -5
- package/dist/cli/lib/invocation.d.ts.map +1 -1
- package/dist/cli/lib/invocation.js +5 -33
- package/dist/cli/lib/invocation.js.map +1 -1
- package/dist/cli/lib/log-stream.d.ts.map +1 -1
- package/dist/cli/lib/log-stream.js +15 -23
- package/dist/cli/lib/log-stream.js.map +1 -1
- package/dist/cli/lib/logger.d.ts.map +1 -1
- package/dist/cli/lib/logger.js +7 -12
- package/dist/cli/lib/logger.js.map +1 -1
- package/dist/cli/lib/organization.d.ts.map +1 -1
- package/dist/cli/lib/organization.js +5 -13
- package/dist/cli/lib/organization.js.map +1 -1
- package/dist/cli/lib/project-link.d.ts.map +1 -1
- package/dist/cli/lib/project-link.js +2 -4
- package/dist/cli/lib/project-link.js.map +1 -1
- package/dist/cli/lib/resolve.d.ts +1 -6
- package/dist/cli/lib/resolve.d.ts.map +1 -1
- package/dist/cli/lib/resolve.js +26 -48
- package/dist/cli/lib/resolve.js.map +1 -1
- package/dist/cli/lib/source-repository-link.d.ts.map +1 -1
- package/dist/cli/lib/source-repository-link.js +6 -9
- package/dist/cli/lib/source-repository-link.js.map +1 -1
- package/dist/cli/lib/terminal-output.d.ts +4 -0
- package/dist/cli/lib/terminal-output.d.ts.map +1 -1
- package/dist/cli/lib/terminal-output.js +35 -18
- package/dist/cli/lib/terminal-output.js.map +1 -1
- package/dist/cli/lib/types.d.ts +3 -7
- package/dist/cli/lib/types.d.ts.map +1 -1
- package/dist/cli/lib/types.js.map +1 -1
- package/dist/cli/lib/utf8.d.ts +2 -0
- package/dist/cli/lib/utf8.d.ts.map +1 -0
- package/dist/cli/lib/utf8.js +12 -0
- package/dist/cli/lib/utf8.js.map +1 -0
- package/dist/cli/root-options.d.ts.map +1 -1
- package/dist/cli/root-options.js +11 -14
- package/dist/cli/root-options.js.map +1 -1
- package/dist/cli-plugin.d.ts.map +1 -1
- package/dist/cli-plugin.js +2 -6
- package/dist/cli-plugin.js.map +1 -1
- package/dist/cloud-config-module.js +2 -2
- package/dist/cloud-config-module.js.map +1 -1
- package/dist/dev/cli-host.d.ts.map +1 -1
- package/dist/dev/cli-host.js +16 -19
- package/dist/dev/cli-host.js.map +1 -1
- package/dist/dev/dashboard-vite-config.d.ts.map +1 -1
- package/dist/dev/dashboard-vite-config.js +17 -20
- package/dist/dev/dashboard-vite-config.js.map +1 -1
- package/dist/dev/dev-command.d.ts.map +1 -1
- package/dist/dev/dev-command.js +72 -55
- package/dist/dev/dev-command.js.map +1 -1
- package/dist/dev/dev-config.d.ts +3 -0
- package/dist/dev/dev-config.d.ts.map +1 -1
- package/dist/dev/dev-config.js +43 -13
- package/dist/dev/dev-config.js.map +1 -1
- package/dist/dev/dev-migrate.js +7 -11
- package/dist/dev/dev-migrate.js.map +1 -1
- package/dist/dev/dev-process.d.ts.map +1 -1
- package/dist/dev/dev-process.js +6 -10
- package/dist/dev/dev-process.js.map +1 -1
- package/dist/dev/dev-server.js +7 -9
- package/dist/dev/dev-server.js.map +1 -1
- package/dist/dev/dev-worker.js +5 -3
- package/dist/dev/dev-worker.js.map +1 -1
- package/dist/dev/local-services.d.ts.map +1 -1
- package/dist/dev/local-services.js +163 -106
- package/dist/dev/local-services.js.map +1 -1
- package/dist/dev/project-layout.d.ts.map +1 -1
- package/dist/dev/project-layout.js +12 -17
- package/dist/dev/project-layout.js.map +1 -1
- package/dist/dev/project-plugin-scope.d.ts +2 -0
- package/dist/dev/project-plugin-scope.d.ts.map +1 -0
- package/dist/dev/project-plugin-scope.js +38 -0
- package/dist/dev/project-plugin-scope.js.map +1 -0
- package/dist/entrypoint.js +2 -0
- package/dist/entrypoint.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -6
- package/dist/index.js.map +1 -1
- package/dist/local-asset-server.d.ts.map +1 -1
- package/dist/local-asset-server.js +7 -13
- package/dist/local-asset-server.js.map +1 -1
- package/dist/local-cache-plugin.d.ts.map +1 -1
- package/dist/local-cache-plugin.js +20 -28
- package/dist/local-cache-plugin.js.map +1 -1
- package/dist/local-cache.d.ts.map +1 -1
- package/dist/local-cache.js +40 -55
- package/dist/local-cache.js.map +1 -1
- package/dist/local-core.d.ts.map +1 -1
- package/dist/local-core.js +3 -5
- package/dist/local-core.js.map +1 -1
- package/dist/local-dashboard-plugin.d.ts.map +1 -1
- package/dist/local-dashboard-plugin.js +6 -11
- package/dist/local-dashboard-plugin.js.map +1 -1
- package/dist/local-database.d.ts.map +1 -1
- package/dist/local-database.js +20 -23
- package/dist/local-database.js.map +1 -1
- package/dist/local-durable-execution-plugin.d.ts +12 -0
- package/dist/local-durable-execution-plugin.d.ts.map +1 -1
- package/dist/local-durable-execution-plugin.js +296 -24
- package/dist/local-durable-execution-plugin.js.map +1 -1
- package/dist/local-runtime-guard.d.ts +2 -0
- package/dist/local-runtime-guard.d.ts.map +1 -1
- package/dist/local-runtime-guard.js +40 -3
- package/dist/local-runtime-guard.js.map +1 -1
- package/dist/local-runtime.d.ts.map +1 -1
- package/dist/local-runtime.js +51 -48
- package/dist/local-runtime.js.map +1 -1
- package/package.json +16 -9
- package/dist/cli/commands/identity-context/login.d.ts +0 -2
- package/dist/cli/commands/identity-context/login.d.ts.map +0 -1
- package/dist/cli/commands/identity-context/login.js +0 -158
- package/dist/cli/commands/identity-context/login.js.map +0 -1
- package/dist/cli/commands/identity-context/logout.d.ts +0 -2
- package/dist/cli/commands/identity-context/logout.d.ts.map +0 -1
- package/dist/cli/commands/identity-context/logout.js +0 -11
- package/dist/cli/commands/identity-context/logout.js.map +0 -1
- package/dist/cli/commands/identity-context/org-switch.d.ts +0 -3
- package/dist/cli/commands/identity-context/org-switch.d.ts.map +0 -1
- package/dist/cli/commands/identity-context/org-switch.js +0 -83
- package/dist/cli/commands/identity-context/org-switch.js.map +0 -1
- package/dist/cli/commands/identity-context/whoami.d.ts +0 -3
- package/dist/cli/commands/identity-context/whoami.d.ts.map +0 -1
- package/dist/cli/commands/identity-context/whoami.js +0 -101
- package/dist/cli/commands/identity-context/whoami.js.map +0 -1
- package/dist/cli/lib/console-credential.d.ts +0 -55
- package/dist/cli/lib/console-credential.d.ts.map +0 -1
- package/dist/cli/lib/console-credential.js +0 -164
- package/dist/cli/lib/console-credential.js.map +0 -1
- package/dist/cli/lib/console-origins.d.ts +0 -30
- package/dist/cli/lib/console-origins.d.ts.map +0 -1
- package/dist/cli/lib/console-origins.js +0 -87
- package/dist/cli/lib/console-origins.js.map +0 -1
- package/dist/cli/lib/console-session-lock.d.ts +0 -39
- package/dist/cli/lib/console-session-lock.d.ts.map +0 -1
- package/dist/cli/lib/console-session-lock.js +0 -235
- package/dist/cli/lib/console-session-lock.js.map +0 -1
- package/dist/cli/lib/console-session.d.ts +0 -47
- package/dist/cli/lib/console-session.d.ts.map +0 -1
- package/dist/cli/lib/console-session.js +0 -235
- package/dist/cli/lib/console-session.js.map +0 -1
- package/dist/cli/lib/file-lock.d.ts +0 -23
- package/dist/cli/lib/file-lock.d.ts.map +0 -1
- package/dist/cli/lib/file-lock.js +0 -121
- package/dist/cli/lib/file-lock.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../../src/cli/commands/runtime-data/resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAEL,
|
|
1
|
+
{"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../../src/cli/commands/runtime-data/resource.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/runtime-data/restore.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"restore.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/runtime-data/restore.ts"],"names":[],"mappings":"AACA,OAAO,EAGL,KAAK,iBAAiB,EAavB,MAAM,gBAAgB,CAAC;AAoCxB,wBAAsB,eAAe,CAAC,EACpC,IAAI,EACJ,OAAO,EACP,OAAO,GACR,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAgFjD"}
|
|
@@ -1,29 +1,20 @@
|
|
|
1
1
|
import * as prompts from "@clack/prompts";
|
|
2
|
-
import {
|
|
2
|
+
import { CLOUD_INVOCATION, createAuthenticatedClient, findEnvironmentOrThrow, formatDateTime, formatDuration, listEnvironments, output, readSingleValue, requiredArgument, resolveEnvironment, sleep, } from "../../index.js";
|
|
3
3
|
import { DB_OPERATION_FAILED_STATUSES, DB_OPERATION_SUCCESS_STATUS, } from "../../lib/contract/database.js";
|
|
4
|
-
// A restore is two long operations
|
|
5
|
-
//
|
|
6
|
-
// seconds for hours.
|
|
4
|
+
// A restore is two long operations and neither reports a percentage, so the poll starts quick and
|
|
5
|
+
// widens instead of asking every few seconds for hours.
|
|
7
6
|
const FIRST_POLL_INTERVAL_MS = 3_000;
|
|
8
7
|
const MAX_POLL_INTERVAL_MS = 30_000;
|
|
9
8
|
const POLL_BACKOFF_FACTOR = 2;
|
|
10
9
|
// How much longer than the platform's own budget to keep watching. The budget comes back on the
|
|
11
|
-
// start response
|
|
12
|
-
//
|
|
13
|
-
// the two machines.
|
|
10
|
+
// start response, derived from this environment's archive size; the margin covers clock skew
|
|
11
|
+
// between the two machines.
|
|
14
12
|
const DEADLINE_MARGIN_MS = 60_000;
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
// authorises overwriting a production database from a script. A flag somebody can type by habit is
|
|
18
|
-
// the wrong shape for that.
|
|
13
|
+
// Spelled out instead of `--yes`: every other `--yes` in this CLI skips a confirmation, and this
|
|
14
|
+
// one authorises overwriting a production database from a script.
|
|
19
15
|
const NON_INTERACTIVE_FLAG = "--i-know-this-destroys-data";
|
|
20
|
-
|
|
21
|
-
//
|
|
22
|
-
function migrationWarning() {
|
|
23
|
-
return `If this backup predates your latest deploy, the database schema may now be behind the running code. Run \`${cloudInvocation()} deploy\` to re-apply pending migrations.`;
|
|
24
|
-
}
|
|
25
|
-
// What each phase is called while a customer watches it. The safety backup has touched nothing yet
|
|
26
|
-
// and the restore has, which is the one distinction worth spelling out on a spinner.
|
|
16
|
+
const MIGRATION_WARNING = `If this backup predates your latest deploy, the database schema may now be behind the running code. Run \`${CLOUD_INVOCATION} deploy\` to re-apply pending migrations.`;
|
|
17
|
+
// The safety backup has touched nothing yet and the restore has; the spinner says which.
|
|
27
18
|
const PHASE_MESSAGE = {
|
|
28
19
|
queued: "Waiting for Vendure Cloud to pick up the restore",
|
|
29
20
|
"safety-backup": "Taking a safety backup of the current data",
|
|
@@ -37,13 +28,12 @@ export async function restoreDatabase({ args, options, globals, }) {
|
|
|
37
28
|
// Checked before the environment is resolved, so a script that cannot proceed fails without a
|
|
38
29
|
// network call and without having named an environment it is about to overwrite.
|
|
39
30
|
if (!confirmedByFlag && !process.stdin.isTTY) {
|
|
40
|
-
throw new Error(`\`${
|
|
31
|
+
throw new Error(`\`${CLOUD_INVOCATION} restore db\` overwrites this environment's database and requires an interactive terminal. Re-run with ${NON_INTERACTIVE_FLAG} to proceed without one.`);
|
|
41
32
|
}
|
|
42
33
|
const { project, environment } = await resolveEnvironment(globals);
|
|
43
|
-
const client = createAuthenticatedClient(globals);
|
|
34
|
+
const client = await createAuthenticatedClient(globals);
|
|
44
35
|
// The environment this is pointed at is the one that gets overwritten, whatever `--from` says.
|
|
45
|
-
// `--from` only changes where the backup is read from
|
|
46
|
-
// a name outside it is refused here rather than by the control plane.
|
|
36
|
+
// `--from` only changes where the backup is read from.
|
|
47
37
|
const source = await resolveSource(client, project, environment, options.from);
|
|
48
38
|
const destination = `${project.slug} / ${environment.slug}`;
|
|
49
39
|
const takenFrom = source.id === environment.id ? "" : `, taken from ${project.slug} / ${source.slug}`;
|
|
@@ -56,7 +46,7 @@ export async function restoreDatabase({ args, options, globals, }) {
|
|
|
56
46
|
message: `Restore the ${destination} database from backup ${backup.id} (created ${formatDateTime(backup.createdAt)}${takenFrom})? All current data in ${destination} will be overwritten.`,
|
|
57
47
|
});
|
|
58
48
|
if (prompts.isCancel(confirmed) || !confirmed) {
|
|
59
|
-
|
|
49
|
+
output.info("Restore cancelled.");
|
|
60
50
|
return undefined;
|
|
61
51
|
}
|
|
62
52
|
}
|
|
@@ -65,44 +55,41 @@ export async function restoreDatabase({ args, options, globals, }) {
|
|
|
65
55
|
let result;
|
|
66
56
|
try {
|
|
67
57
|
result = await client.post(`/environments/${environment.id}/database/backups/${encodeURIComponent(backupId)}/restore`,
|
|
68
|
-
// Sent only when the two differ, so an in-place restore
|
|
58
|
+
// Sent only when the two differ, so an in-place restore sends an unchanged request.
|
|
69
59
|
source.id === environment.id ? undefined : { sourceEnvironmentId: source.id });
|
|
70
60
|
}
|
|
71
61
|
catch (error) {
|
|
72
62
|
spinner.stop("Restore could not be started");
|
|
73
63
|
throw error;
|
|
74
64
|
}
|
|
75
|
-
// Said once, before the wait: the id
|
|
76
|
-
//
|
|
77
|
-
//
|
|
78
|
-
|
|
65
|
+
// Said once, before the wait: the id recovers this environment if the restored data turns out to
|
|
66
|
+
// be wrong, and a customer needs it whatever happens next, including a terminal closed
|
|
67
|
+
// mid-restore.
|
|
68
|
+
output.info(`A safety backup of the current data is being taken as ${result.safetyBackupId}. Restore it with \`${CLOUD_INVOCATION} restore db ${result.safetyBackupId}\` if you need the previous state back.`);
|
|
79
69
|
const current = await pollRestore(client, environment.id, result, spinner);
|
|
80
70
|
if (!current)
|
|
81
71
|
return 1;
|
|
82
72
|
if (current.status === DB_OPERATION_SUCCESS_STATUS) {
|
|
83
73
|
spinner.stop("Restore complete.");
|
|
84
|
-
|
|
85
|
-
|
|
74
|
+
output.success(`Database restored into ${destination} from backup ${backup.id}. A safety backup of the previous state was kept as ${result.safetyBackupId}.`);
|
|
75
|
+
output.warn(MIGRATION_WARNING);
|
|
86
76
|
return undefined;
|
|
87
77
|
}
|
|
88
78
|
spinner.stop("Restore failed");
|
|
89
79
|
// The control plane's own sentence when it has one: it is written for a customer, names the safety
|
|
90
80
|
// backup and says what to do next. The status alone is the fallback.
|
|
91
|
-
|
|
81
|
+
output.error(current.errorDetails ??
|
|
92
82
|
`Restore ${result.restoreId} ended with status "${current.status}". The safety backup ${result.safetyBackupId} holds the data from before this attempt.`);
|
|
93
83
|
return 1;
|
|
94
84
|
}
|
|
95
85
|
// Which environment's backup this reads. `--from` names a sibling in the project already resolved,
|
|
96
|
-
// so a name outside it is refused here
|
|
86
|
+
// so a name outside it is refused here, not by the control plane.
|
|
97
87
|
//
|
|
98
|
-
//
|
|
99
|
-
//
|
|
100
|
-
// and the fallback available here is the destination — which would restore in place over the
|
|
101
|
-
// environment being pointed at, with no prompt under `--i-know-this-destroys-data`.
|
|
88
|
+
// A value the declaration did not describe throws. Falling back to the destination would restore in
|
|
89
|
+
// place over the environment being pointed at, with no prompt under `--i-know-this-destroys-data`.
|
|
102
90
|
//
|
|
103
|
-
// `readSingleValue` is the shared refusal in `arguments.ts`; this
|
|
104
|
-
//
|
|
105
|
-
// that file gives for each family keeping its own.
|
|
91
|
+
// `readSingleValue` is the shared refusal in `arguments.ts`; this wrapper adds what absent means
|
|
92
|
+
// here, which is restore in place.
|
|
106
93
|
async function resolveSource(client, project, destination, from) {
|
|
107
94
|
const identifier = readSingleValue(from, "--from");
|
|
108
95
|
if (identifier === undefined)
|
|
@@ -110,9 +97,9 @@ async function resolveSource(client, project, destination, from) {
|
|
|
110
97
|
const environments = await listEnvironments(client, project.id);
|
|
111
98
|
return findEnvironmentOrThrow(environments, identifier, project);
|
|
112
99
|
}
|
|
113
|
-
// Polls until the restore settles, reporting each phase
|
|
114
|
-
//
|
|
115
|
-
//
|
|
100
|
+
// Polls until the restore settles, reporting each phase. Returns null when the platform's deadline
|
|
101
|
+
// passed without the restore settling; the row is the record, and nothing local knows what became
|
|
102
|
+
// of the work.
|
|
116
103
|
async function pollRestore(client, environmentId, result, spinner) {
|
|
117
104
|
const startedAt = Date.now();
|
|
118
105
|
// Derived from this environment's own archive by the control plane. Clamped below at one minute so
|
|
@@ -128,8 +115,8 @@ async function pollRestore(client, environmentId, result, spinner) {
|
|
|
128
115
|
spinner.message(`${PHASE_MESSAGE[current.phase]}...`);
|
|
129
116
|
}
|
|
130
117
|
else {
|
|
131
|
-
// The same phase,
|
|
132
|
-
//
|
|
118
|
+
// The same phase, with how long it has been going. A destructive operation that says nothing
|
|
119
|
+
// for an hour is indistinguishable from one nobody is watching.
|
|
133
120
|
spinner.message(`${PHASE_MESSAGE[current.phase]} (${formatDuration(Date.now() - startedAt)} so far)...`);
|
|
134
121
|
}
|
|
135
122
|
if (current.status === DB_OPERATION_SUCCESS_STATUS ||
|
|
@@ -138,7 +125,7 @@ async function pollRestore(client, environmentId, result, spinner) {
|
|
|
138
125
|
}
|
|
139
126
|
if (Date.now() >= deadline) {
|
|
140
127
|
spinner.stop("Restore is taking longer than Vendure Cloud allows for it");
|
|
141
|
-
|
|
128
|
+
output.warn(`Restore ${result.restoreId} has not finished within the time Vendure Cloud allows for this environment's data. Vendure Cloud will finish or stop it on its own — check it with \`${CLOUD_INVOCATION} backup db list\` before deploying or restoring again. The safety backup ${result.safetyBackupId} holds the data from before this attempt.`);
|
|
142
129
|
return null;
|
|
143
130
|
}
|
|
144
131
|
interval = Math.min(MAX_POLL_INTERVAL_MS, interval * POLL_BACKOFF_FACTOR);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../../../src/cli/commands/runtime-data/restore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"restore.js","sourceRoot":"","sources":["../../../../src/cli/commands/runtime-data/restore.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seeds.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/runtime-data/seeds.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"seeds.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/runtime-data/seeds.ts"],"names":[],"mappings":"AAIA,OAAO,EAEL,KAAK,iBAAiB,EASvB,MAAM,gBAAgB,CAAC;AAwBxB,wBAAsB,QAAQ,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+DlF;AAED,wBAAsB,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B7E;AAED,wBAAsB,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6E5F;AAED,wBAAsB,UAAU,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6B7F"}
|
|
@@ -2,15 +2,15 @@ import { createReadStream } from "node:fs";
|
|
|
2
2
|
import { stat } from "node:fs/promises";
|
|
3
3
|
import { basename } from "node:path";
|
|
4
4
|
import * as prompts from "@clack/prompts";
|
|
5
|
-
import {
|
|
5
|
+
import { CLOUD_INVOCATION, createAuthenticatedClient, formatBytes, formatDateTime, formatTable, output, requiredArgument, resolveEnvironment, sleep, } from "../../index.js";
|
|
6
6
|
import { SEED_CONTENT_TYPE, SEED_UPLOAD_PRECONDITION_HEADER, SEED_UPLOAD_PRECONDITION_VALUE, isValidSeedName, } from "../../lib/contract/seeds.js";
|
|
7
7
|
const POLL_INTERVAL_MS = 3_000;
|
|
8
8
|
// Long enough for a real dump. The apply runs as a task in the environment's Cell and the platform
|
|
9
9
|
// stops it at its own, longer deadline, so a client giving up here abandons the wait rather than the
|
|
10
10
|
// work: the operation goes on and its outcome is on the record the id names.
|
|
11
11
|
const APPLY_TIMEOUT_MS = 60 * 60 * 1000;
|
|
12
|
-
// Postgres restore does not repopulate the search index
|
|
13
|
-
//
|
|
12
|
+
// A Postgres restore does not repopulate the search index. Until CLO-220 automates that, tell the
|
|
13
|
+
// operator search is empty.
|
|
14
14
|
const SEARCH_WARNING = "The search index was not rebuilt. Products won't appear in search until a reindex runs (Admin UI → Products → reindex, or your app's reindex job).";
|
|
15
15
|
export async function pushSeed({ args, globals }) {
|
|
16
16
|
const name = requiredArgument(args, 0, "name");
|
|
@@ -25,7 +25,7 @@ export async function pushSeed({ args, globals }) {
|
|
|
25
25
|
if (!info.isFile()) {
|
|
26
26
|
throw new Error(`Not a file: ${file}`);
|
|
27
27
|
}
|
|
28
|
-
const client = createAuthenticatedClient(globals);
|
|
28
|
+
const client = await createAuthenticatedClient(globals);
|
|
29
29
|
const spinner = globals.json ? null : prompts.spinner();
|
|
30
30
|
spinner?.start(`Uploading ${basename(file)} as seed "${name}"...`);
|
|
31
31
|
// Request a short-lived presigned upload URL, then PUT the bytes straight to
|
|
@@ -50,7 +50,7 @@ export async function pushSeed({ args, globals }) {
|
|
|
50
50
|
const response = await fetch(ticket.uploadUrl, uploadInit);
|
|
51
51
|
if (response.status === 412) {
|
|
52
52
|
spinner?.stop("Upload rejected");
|
|
53
|
-
throw new Error(`A seed named "${name}" already exists. Delete it first with \`${
|
|
53
|
+
throw new Error(`A seed named "${name}" already exists. Delete it first with \`${CLOUD_INVOCATION} seed rm ${name}\`, or use a different name.`);
|
|
54
54
|
}
|
|
55
55
|
if (!response.ok) {
|
|
56
56
|
spinner?.stop("Upload failed");
|
|
@@ -61,11 +61,11 @@ export async function pushSeed({ args, globals }) {
|
|
|
61
61
|
writeCompactJson({ name, sizeBytes: info.size });
|
|
62
62
|
return;
|
|
63
63
|
}
|
|
64
|
-
|
|
65
|
-
|
|
64
|
+
output.success(`Seed "${name}" uploaded (${formatBytes(info.size)}).`);
|
|
65
|
+
output.info(`Apply it with \`${CLOUD_INVOCATION} seed apply ${name} -e <environment>\`.`);
|
|
66
66
|
}
|
|
67
67
|
export async function listSeeds({ globals }) {
|
|
68
|
-
const client = createAuthenticatedClient(globals);
|
|
68
|
+
const client = await createAuthenticatedClient(globals);
|
|
69
69
|
// In JSON mode, keep stdout to the machine-readable payload only — no spinner
|
|
70
70
|
// or notes, which clack writes to stdout and would corrupt the output.
|
|
71
71
|
const spinner = globals.json ? null : prompts.spinner();
|
|
@@ -77,15 +77,15 @@ export async function listSeeds({ globals }) {
|
|
|
77
77
|
return;
|
|
78
78
|
}
|
|
79
79
|
if (seeds.length === 0) {
|
|
80
|
-
|
|
80
|
+
output.info(`No seeds yet. Upload one with \`${CLOUD_INVOCATION} seed push <name> <file.gz>\`.`);
|
|
81
81
|
return;
|
|
82
82
|
}
|
|
83
83
|
const rows = seeds
|
|
84
84
|
.slice()
|
|
85
85
|
.sort((a, b) => a.name.localeCompare(b.name))
|
|
86
86
|
.map((s) => [s.name, formatBytes(s.sizeBytes), formatDateTime(s.updatedAt)]);
|
|
87
|
-
|
|
88
|
-
|
|
87
|
+
output.note(formatTable(["NAME", "SIZE", "UPDATED"], rows), "Seeds");
|
|
88
|
+
output.info(`Apply one with \`${CLOUD_INVOCATION} seed apply <name> -e <environment>\`.`);
|
|
89
89
|
}
|
|
90
90
|
export async function applySeed({ args, options, globals }) {
|
|
91
91
|
const name = requiredArgument(args, 0, "name");
|
|
@@ -104,11 +104,11 @@ export async function applySeed({ args, options, globals }) {
|
|
|
104
104
|
message: `Apply seed "${name}" to ${project.slug} / ${environment.slug}? All current data in the database will be overwritten.`,
|
|
105
105
|
});
|
|
106
106
|
if (prompts.isCancel(confirmed) || !confirmed) {
|
|
107
|
-
|
|
107
|
+
output.info("Apply cancelled.");
|
|
108
108
|
return;
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
|
-
const client = createAuthenticatedClient(globals);
|
|
111
|
+
const client = await createAuthenticatedClient(globals);
|
|
112
112
|
const spinner = globals.json ? null : prompts.spinner();
|
|
113
113
|
spinner?.start(`Applying seed "${name}" to ${project.slug} / ${environment.slug}...`);
|
|
114
114
|
let started;
|
|
@@ -131,8 +131,8 @@ export async function applySeed({ args, options, globals }) {
|
|
|
131
131
|
}
|
|
132
132
|
if (current.status !== "success") {
|
|
133
133
|
spinner?.stop("Seed apply failed");
|
|
134
|
-
// The control plane's own sentence when it has one
|
|
135
|
-
// to do next. The status alone is the fallback
|
|
134
|
+
// The control plane's own sentence when it has one; it is written for a customer and says what
|
|
135
|
+
// to do next. The status alone is the fallback for a control plane without the field.
|
|
136
136
|
throw new Error(current.errorDetails ??
|
|
137
137
|
`Seed apply ${started.operationId} ended with status "${current.status}".`);
|
|
138
138
|
}
|
|
@@ -145,8 +145,8 @@ export async function applySeed({ args, options, globals }) {
|
|
|
145
145
|
});
|
|
146
146
|
return;
|
|
147
147
|
}
|
|
148
|
-
|
|
149
|
-
|
|
148
|
+
output.success(`Seed "${name}" applied to ${project.slug} / ${environment.slug}.`);
|
|
149
|
+
output.warn(SEARCH_WARNING);
|
|
150
150
|
}
|
|
151
151
|
export async function removeSeed({ args, options, globals }) {
|
|
152
152
|
const name = requiredArgument(args, 0, "name");
|
|
@@ -163,29 +163,27 @@ export async function removeSeed({ args, options, globals }) {
|
|
|
163
163
|
message: `Delete seed "${name}"? Environments configured to use it will fail to seed until it is replaced.`,
|
|
164
164
|
});
|
|
165
165
|
if (prompts.isCancel(confirmed) || !confirmed) {
|
|
166
|
-
|
|
166
|
+
output.info("Deletion cancelled.");
|
|
167
167
|
return;
|
|
168
168
|
}
|
|
169
169
|
}
|
|
170
|
-
const client = createAuthenticatedClient(globals);
|
|
170
|
+
const client = await createAuthenticatedClient(globals);
|
|
171
171
|
const result = await client.delete(`/seeds/${encodeURIComponent(name)}`);
|
|
172
172
|
if (globals.json) {
|
|
173
173
|
writeCompactJson(result);
|
|
174
174
|
return;
|
|
175
175
|
}
|
|
176
|
-
|
|
176
|
+
output.success(`Seed "${result.name}" deleted.`);
|
|
177
177
|
}
|
|
178
|
-
// Client-side pre-validation for a fast, clear error; the control plane is the
|
|
179
|
-
//
|
|
180
|
-
// (CLO-217) so the two never drift.
|
|
178
|
+
// Client-side pre-validation for a fast, clear error; the control plane is the authority. Delegates
|
|
179
|
+
// to the seed-name rule the wire contract carries (CLO-217) so the two do not drift.
|
|
181
180
|
function assertValidSeedName(name) {
|
|
182
181
|
if (!isValidSeedName(name)) {
|
|
183
182
|
throw new Error(`Invalid seed name "${name}". Use lowercase letters, numbers and hyphens (max 63 characters), e.g. "flowtech-preview-slim".`);
|
|
184
183
|
}
|
|
185
184
|
}
|
|
186
|
-
// One line, no indentation. `writeJson` pretty-prints,
|
|
187
|
-
//
|
|
188
|
-
// would stop working on the change.
|
|
185
|
+
// One line, no indentation. `writeJson` pretty-prints, and a script reading a seed command's stdout
|
|
186
|
+
// line by line breaks on indented output.
|
|
189
187
|
function writeCompactJson(value) {
|
|
190
188
|
process.stdout.write(`${JSON.stringify(value)}\n`);
|
|
191
189
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"seeds.js","sourceRoot":"","sources":["../../../../src/cli/commands/runtime-data/seeds.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,
|
|
1
|
+
{"version":3,"file":"seeds.js","sourceRoot":"","sources":["../../../../src/cli/commands/runtime-data/seeds.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/runtime-data/tunnel.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,iBAAiB,
|
|
1
|
+
{"version":3,"file":"tunnel.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/runtime-data/tunnel.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,SAAS,EACd,KAAK,iBAAiB,EAMvB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAenE,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B;AAYD,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9F;AAED,wBAAsB,kBAAkB,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CA6CjG;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE;IAC3C,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB,GAAG,OAAO,CAAC,YAAY,CAAC,CA6BxB"}
|
|
@@ -1,31 +1,26 @@
|
|
|
1
1
|
import net from "node:net";
|
|
2
2
|
import * as prompts from "@clack/prompts";
|
|
3
|
-
import { createAuthenticatedClient, getApiUrl, logger, resolveEnvironment, } from "../../index.js";
|
|
3
|
+
import { createAuthenticatedClient, getApiUrl, logger, output, resolveEnvironment, } from "../../index.js";
|
|
4
4
|
// Local tunnel to the environment database. Per accepted TCP connection the
|
|
5
5
|
// CLI mints a single-use ticket over HTTPS and opens one WebSocket to the
|
|
6
6
|
// control plane, which relays to the database. The ticket travels as the
|
|
7
7
|
// FIRST WS message — never in the URL.
|
|
8
8
|
//
|
|
9
|
-
//
|
|
9
|
+
// The built-in WebSocket needs Node 22 or later.
|
|
10
10
|
const DEFAULT_PORT = 5432;
|
|
11
11
|
// Gateway close codes (mirror apps/control-plane database-tunnel.gateway.ts).
|
|
12
12
|
const CLOSE_IDLE_TIMEOUT = 4410;
|
|
13
13
|
const CLOSE_MAX_DURATION = 4411;
|
|
14
|
-
// Local connection string for the tunnel. The relay is a transparent pipe and
|
|
15
|
-
//
|
|
16
|
-
//
|
|
17
|
-
// 127.0.0.1 and the cert belongs to the remote DB: encrypt without hostname
|
|
18
|
-
// verification.
|
|
14
|
+
// Local connection string for the tunnel. The relay is a transparent pipe and TLS is negotiated
|
|
15
|
+
// end-to-end with the database (ADR-0006), so the client must request TLS: `sslmode=require`, not
|
|
16
|
+
// `verify-full`, because the client dials 127.0.0.1 and the certificate belongs to the remote DB.
|
|
19
17
|
//
|
|
20
|
-
// This is libpq semantics (psql and other libpq clients consume this string),
|
|
21
|
-
//
|
|
22
|
-
//
|
|
23
|
-
// is `no-verify`, injected as a managed env var (ADR-0011). Same intent, different
|
|
24
|
-
// driver: don't unify the two values.
|
|
18
|
+
// This is libpq semantics (psql and other libpq clients consume this string), where `require` means
|
|
19
|
+
// encrypt without verifying the CA. The managed app runs node-postgres, whose equivalent is
|
|
20
|
+
// `no-verify`, injected as a managed env var (ADR-0011). The two values are not interchangeable.
|
|
25
21
|
//
|
|
26
|
-
// Host is `127.0.0.1
|
|
27
|
-
//
|
|
28
|
-
// would miss the tunnel (and may hit a local Postgres bound on `::1:5432`).
|
|
22
|
+
// Host is `127.0.0.1` because the listener binds IPv4 loopback, and `localhost` resolves to IPv6
|
|
23
|
+
// (`::1`) first on many systems, so a client using it would miss the tunnel.
|
|
29
24
|
export function buildConnectionString(database, port) {
|
|
30
25
|
const sslSuffix = database.tlsEnabled ? "?sslmode=require" : "";
|
|
31
26
|
return `postgres://${encodeURIComponent(database.username)}:${encodeURIComponent(database.password)}@127.0.0.1:${port}/${encodeURIComponent(database.database)}${sslSuffix}`;
|
|
@@ -33,7 +28,7 @@ export function buildConnectionString(database, port) {
|
|
|
33
28
|
export async function openDatabaseTunnel({ options, globals }) {
|
|
34
29
|
const requestedPort = readPort(options.port);
|
|
35
30
|
const { project, environment } = await resolveEnvironment(globals);
|
|
36
|
-
const client = createAuthenticatedClient(globals);
|
|
31
|
+
const client = await createAuthenticatedClient(globals);
|
|
37
32
|
const spinner = prompts.spinner();
|
|
38
33
|
spinner.start(`Opening tunnel to ${project.slug} / ${environment.slug} database...`);
|
|
39
34
|
let handle;
|
|
@@ -54,12 +49,11 @@ export async function openDatabaseTunnel({ options, globals }) {
|
|
|
54
49
|
// Printed as plain lines, not a boxed note: the connection string is long
|
|
55
50
|
// enough to overflow a clack note box and fragment its borders.
|
|
56
51
|
spinner.stop(`Tunnel open on 127.0.0.1:${port}`);
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
// The command runs until Ctrl-C
|
|
60
|
-
//
|
|
61
|
-
//
|
|
62
|
-
// is what makes the teardown observable from a test.
|
|
52
|
+
output.message(connectionString);
|
|
53
|
+
output.info("Press Ctrl-C to close the tunnel.");
|
|
54
|
+
// The command runs until Ctrl-C because the net server holds the event loop, then returns the
|
|
55
|
+
// exit code to the host. Process exit stays at the command boundary and teardown is observable
|
|
56
|
+
// from a test.
|
|
63
57
|
return await new Promise((resolve) => {
|
|
64
58
|
process.once("SIGINT", () => {
|
|
65
59
|
void handle
|
|
@@ -98,25 +92,22 @@ export async function startDbTunnel(options) {
|
|
|
98
92
|
};
|
|
99
93
|
}
|
|
100
94
|
async function relayConnection(socket, client, environmentId, wsUrl) {
|
|
101
|
-
// Buffer client bytes (psql sends its startup packet immediately) until
|
|
102
|
-
//
|
|
103
|
-
// is
|
|
104
|
-
// while the socket is paused and be dropped by the runtime underneath.
|
|
95
|
+
// Buffer client bytes (psql sends its startup packet immediately) until the relay is ready. The
|
|
96
|
+
// data listener is attached right away and the queue is kept here, so no byte arrives while the
|
|
97
|
+
// socket is paused and is dropped by the runtime.
|
|
105
98
|
let ready = false;
|
|
106
99
|
let wsSend = null;
|
|
107
100
|
const pending = [];
|
|
108
101
|
let closed = false;
|
|
109
102
|
let activeWs = null;
|
|
110
|
-
// Idempotent teardown, wired before the ticket-mint await below. The `error`
|
|
111
|
-
//
|
|
112
|
-
//
|
|
113
|
-
//
|
|
114
|
-
// mint resolves and the WS is created; teardown closes it once it exists. The
|
|
115
|
-
// `closed` flag also lets us skip opening a doomed WS if the client went away
|
|
103
|
+
// Idempotent teardown, wired before the ticket-mint await below. The `error` listener must exist
|
|
104
|
+
// from the start: a net.Socket with no 'error' handler throws on a peer RST, and during the mint
|
|
105
|
+
// window there is no other handler. `activeWs` is null until the mint resolves; teardown closes
|
|
106
|
+
// it once it exists. The `closed` flag skips opening a doomed WS if the client went away
|
|
116
107
|
// mid-mint.
|
|
117
108
|
const teardown = () => {
|
|
118
|
-
// Re-entrant: the `activeWs.close()` below can dispatch the WS `error` event
|
|
119
|
-
//
|
|
109
|
+
// Re-entrant: the `activeWs.close()` below can dispatch the WS `error` event synchronously,
|
|
110
|
+
// whose listener calls teardown again.
|
|
120
111
|
if (closed) {
|
|
121
112
|
return;
|
|
122
113
|
}
|
|
@@ -143,7 +134,7 @@ async function relayConnection(socket, client, environmentId, wsUrl) {
|
|
|
143
134
|
}
|
|
144
135
|
catch (error) {
|
|
145
136
|
logger.warn({ error: error instanceof Error ? error.message : error }, "Tunnel ticket mint failed");
|
|
146
|
-
|
|
137
|
+
output.warn("Connection rejected — could not authorize the tunnel.");
|
|
147
138
|
teardown();
|
|
148
139
|
return;
|
|
149
140
|
}
|
|
@@ -158,7 +149,6 @@ async function relayConnection(socket, client, environmentId, wsUrl) {
|
|
|
158
149
|
});
|
|
159
150
|
ws.addEventListener("message", (event) => {
|
|
160
151
|
if (!ready) {
|
|
161
|
-
// First message is the relay handshake.
|
|
162
152
|
if (typeof event.data === "string") {
|
|
163
153
|
try {
|
|
164
154
|
const message = JSON.parse(event.data);
|
|
@@ -175,7 +165,7 @@ async function relayConnection(socket, client, environmentId, wsUrl) {
|
|
|
175
165
|
}
|
|
176
166
|
}
|
|
177
167
|
catch {
|
|
178
|
-
//
|
|
168
|
+
// Unparseable handshake: falls through to the warning and teardown below.
|
|
179
169
|
}
|
|
180
170
|
}
|
|
181
171
|
logger.warn({ data: String(event.data) }, "Unexpected tunnel handshake message");
|
|
@@ -189,14 +179,14 @@ async function relayConnection(socket, client, environmentId, wsUrl) {
|
|
|
189
179
|
});
|
|
190
180
|
ws.addEventListener("close", (event) => {
|
|
191
181
|
if (!ready && event.code !== 1000) {
|
|
192
|
-
|
|
182
|
+
output.warn("Connection rejected by the tunnel endpoint.");
|
|
193
183
|
logger.warn({ code: event.code, reason: event.reason }, "Tunnel WS closed before ready");
|
|
194
184
|
}
|
|
195
185
|
else if (event.code === CLOSE_IDLE_TIMEOUT) {
|
|
196
|
-
|
|
186
|
+
output.warn("Connection closed: idle timeout. Reconnect to continue.");
|
|
197
187
|
}
|
|
198
188
|
else if (event.code === CLOSE_MAX_DURATION) {
|
|
199
|
-
|
|
189
|
+
output.warn("Connection closed: maximum tunnel duration reached. Reconnect to continue.");
|
|
200
190
|
}
|
|
201
191
|
socket.destroy();
|
|
202
192
|
});
|
|
@@ -205,8 +195,8 @@ async function relayConnection(socket, client, environmentId, wsUrl) {
|
|
|
205
195
|
teardown();
|
|
206
196
|
});
|
|
207
197
|
}
|
|
208
|
-
// `--port` is declared with a mandatory value, so the host hands over the string the customer
|
|
209
|
-
//
|
|
198
|
+
// `--port` is declared with a mandatory value, so the host hands over the string the customer typed
|
|
199
|
+
// or nothing at all. Anything else is a shape this command did not declare.
|
|
210
200
|
function readPort(value) {
|
|
211
201
|
if (value === undefined)
|
|
212
202
|
return undefined;
|
|
@@ -226,7 +216,7 @@ async function listenWithFallback(server, requestedPort) {
|
|
|
226
216
|
if (requestedPort !== undefined || (code !== "EADDRINUSE" && code !== "EACCES")) {
|
|
227
217
|
throw error;
|
|
228
218
|
}
|
|
229
|
-
|
|
219
|
+
output.warn(`Port ${preferred} is in use — picking a free port.`);
|
|
230
220
|
await listen(server, 0);
|
|
231
221
|
}
|
|
232
222
|
return server.address().port;
|