@vendure/cloud 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +42 -7
- package/dist/cli/arguments.d.ts +5 -0
- package/dist/cli/arguments.d.ts.map +1 -0
- package/dist/cli/arguments.js +57 -0
- package/dist/cli/arguments.js.map +1 -0
- package/dist/cli/command.d.ts +26 -0
- package/dist/cli/command.d.ts.map +1 -0
- package/dist/cli/command.js +84 -0
- package/dist/cli/command.js.map +1 -0
- package/dist/cli/commands/deployment/arguments.d.ts +3 -0
- package/dist/cli/commands/deployment/arguments.d.ts.map +1 -0
- package/dist/cli/commands/deployment/arguments.js +13 -0
- package/dist/cli/commands/deployment/arguments.js.map +1 -0
- package/dist/cli/commands/deployment/build-logs.d.ts +3 -0
- package/dist/cli/commands/deployment/build-logs.d.ts.map +1 -0
- package/dist/cli/commands/deployment/build-logs.js +98 -0
- package/dist/cli/commands/deployment/build-logs.js.map +1 -0
- package/dist/cli/commands/deployment/deploy.d.ts +3 -0
- package/dist/cli/commands/deployment/deploy.d.ts.map +1 -0
- package/dist/cli/commands/deployment/deploy.js +306 -0
- package/dist/cli/commands/deployment/deploy.js.map +1 -0
- package/dist/cli/commands/deployment/index.d.ts +3 -0
- package/dist/cli/commands/deployment/index.d.ts.map +1 -0
- package/dist/cli/commands/deployment/index.js +177 -0
- package/dist/cli/commands/deployment/index.js.map +1 -0
- package/dist/cli/commands/deployment/list.d.ts +3 -0
- package/dist/cli/commands/deployment/list.d.ts.map +1 -0
- package/dist/cli/commands/deployment/list.js +77 -0
- package/dist/cli/commands/deployment/list.js.map +1 -0
- package/dist/cli/commands/deployment/logs.d.ts +3 -0
- package/dist/cli/commands/deployment/logs.d.ts.map +1 -0
- package/dist/cli/commands/deployment/logs.js +88 -0
- package/dist/cli/commands/deployment/logs.js.map +1 -0
- package/dist/cli/commands/deployment/options.d.ts +11 -0
- package/dist/cli/commands/deployment/options.d.ts.map +1 -0
- package/dist/cli/commands/deployment/options.js +37 -0
- package/dist/cli/commands/deployment/options.js.map +1 -0
- package/dist/cli/commands/deployment/plan-format.d.ts +8 -0
- package/dist/cli/commands/deployment/plan-format.d.ts.map +1 -0
- package/dist/cli/commands/deployment/plan-format.js +25 -0
- package/dist/cli/commands/deployment/plan-format.js.map +1 -0
- package/dist/cli/commands/deployment/plan.d.ts +3 -0
- package/dist/cli/commands/deployment/plan.d.ts.map +1 -0
- package/dist/cli/commands/deployment/plan.js +54 -0
- package/dist/cli/commands/deployment/plan.js.map +1 -0
- package/dist/cli/commands/deployment/rollback.d.ts +3 -0
- package/dist/cli/commands/deployment/rollback.d.ts.map +1 -0
- package/dist/cli/commands/deployment/rollback.js +97 -0
- package/dist/cli/commands/deployment/rollback.js.map +1 -0
- package/dist/cli/commands/deployment/shared.d.ts +5 -0
- package/dist/cli/commands/deployment/shared.d.ts.map +1 -0
- package/dist/cli/commands/deployment/shared.js +23 -0
- package/dist/cli/commands/deployment/shared.js.map +1 -0
- package/dist/cli/commands/deployment/show.d.ts +3 -0
- package/dist/cli/commands/deployment/show.d.ts.map +1 -0
- package/dist/cli/commands/deployment/show.js +71 -0
- package/dist/cli/commands/deployment/show.js.map +1 -0
- package/dist/cli/commands/deployment/source.d.ts +14 -0
- package/dist/cli/commands/deployment/source.d.ts.map +1 -0
- package/dist/cli/commands/deployment/source.js +19 -0
- package/dist/cli/commands/deployment/source.js.map +1 -0
- package/dist/cli/commands/deployment/status.d.ts +3 -0
- package/dist/cli/commands/deployment/status.d.ts.map +1 -0
- package/dist/cli/commands/deployment/status.js +59 -0
- package/dist/cli/commands/deployment/status.js.map +1 -0
- package/dist/cli/commands/deployment/teardown.d.ts +3 -0
- package/dist/cli/commands/deployment/teardown.d.ts.map +1 -0
- package/dist/cli/commands/deployment/teardown.js +178 -0
- package/dist/cli/commands/deployment/teardown.js.map +1 -0
- package/dist/cli/commands/identity-context/context.d.ts +3 -0
- package/dist/cli/commands/identity-context/context.d.ts.map +1 -0
- package/dist/cli/commands/identity-context/context.js +47 -0
- package/dist/cli/commands/identity-context/context.js.map +1 -0
- package/dist/cli/commands/identity-context/index.d.ts +2 -0
- package/dist/cli/commands/identity-context/index.d.ts.map +1 -0
- package/dist/cli/commands/identity-context/index.js +94 -0
- package/dist/cli/commands/identity-context/index.js.map +1 -0
- package/dist/cli/commands/identity-context/keys.d.ts +5 -0
- package/dist/cli/commands/identity-context/keys.d.ts.map +1 -0
- package/dist/cli/commands/identity-context/keys.js +52 -0
- package/dist/cli/commands/identity-context/keys.js.map +1 -0
- package/dist/cli/commands/identity-context/login.d.ts +2 -0
- package/dist/cli/commands/identity-context/login.d.ts.map +1 -0
- package/dist/cli/commands/identity-context/login.js +158 -0
- package/dist/cli/commands/identity-context/login.js.map +1 -0
- package/dist/cli/commands/identity-context/logout.d.ts +2 -0
- package/dist/cli/commands/identity-context/logout.d.ts.map +1 -0
- package/dist/cli/commands/identity-context/logout.js +12 -0
- package/dist/cli/commands/identity-context/logout.js.map +1 -0
- package/dist/cli/commands/identity-context/org-switch.d.ts +3 -0
- package/dist/cli/commands/identity-context/org-switch.d.ts.map +1 -0
- package/dist/cli/commands/identity-context/org-switch.js +71 -0
- package/dist/cli/commands/identity-context/org-switch.js.map +1 -0
- package/dist/cli/commands/identity-context/use.d.ts +3 -0
- package/dist/cli/commands/identity-context/use.d.ts.map +1 -0
- package/dist/cli/commands/identity-context/use.js +23 -0
- package/dist/cli/commands/identity-context/use.js.map +1 -0
- package/dist/cli/commands/identity-context/whoami.d.ts +3 -0
- package/dist/cli/commands/identity-context/whoami.d.ts.map +1 -0
- package/dist/cli/commands/identity-context/whoami.js +80 -0
- package/dist/cli/commands/identity-context/whoami.js.map +1 -0
- package/dist/cli/commands/index.d.ts +4 -0
- package/dist/cli/commands/index.d.ts.map +1 -0
- package/dist/cli/commands/index.js +67 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/project-config/config/build-fields.d.ts +4 -0
- package/dist/cli/commands/project-config/config/build-fields.d.ts.map +1 -0
- package/dist/cli/commands/project-config/config/build-fields.js +16 -0
- package/dist/cli/commands/project-config/config/build-fields.js.map +1 -0
- package/dist/cli/commands/project-config/config/build.d.ts +4 -0
- package/dist/cli/commands/project-config/config/build.d.ts.map +1 -0
- package/dist/cli/commands/project-config/config/build.js +46 -0
- package/dist/cli/commands/project-config/config/build.js.map +1 -0
- package/dist/cli/commands/project-config/config/desired-state.d.ts +4 -0
- package/dist/cli/commands/project-config/config/desired-state.d.ts.map +1 -0
- package/dist/cli/commands/project-config/config/desired-state.js +34 -0
- package/dist/cli/commands/project-config/config/desired-state.js.map +1 -0
- package/dist/cli/commands/project-config/config/index.d.ts +2 -0
- package/dist/cli/commands/project-config/config/index.d.ts.map +1 -0
- package/dist/cli/commands/project-config/config/index.js +177 -0
- package/dist/cli/commands/project-config/config/index.js.map +1 -0
- package/dist/cli/commands/project-config/config/runtime.d.ts +3 -0
- package/dist/cli/commands/project-config/config/runtime.d.ts.map +1 -0
- package/dist/cli/commands/project-config/config/runtime.js +38 -0
- package/dist/cli/commands/project-config/config/runtime.js.map +1 -0
- package/dist/cli/commands/project-config/config/search.d.ts +3 -0
- package/dist/cli/commands/project-config/config/search.d.ts.map +1 -0
- package/dist/cli/commands/project-config/config/search.js +54 -0
- package/dist/cli/commands/project-config/config/search.js.map +1 -0
- package/dist/cli/commands/project-config/config/set.d.ts +2 -0
- package/dist/cli/commands/project-config/config/set.d.ts.map +1 -0
- package/dist/cli/commands/project-config/config/set.js +14 -0
- package/dist/cli/commands/project-config/config/set.js.map +1 -0
- package/dist/cli/commands/project-config/config/show.d.ts +6 -0
- package/dist/cli/commands/project-config/config/show.d.ts.map +1 -0
- package/dist/cli/commands/project-config/config/show.js +33 -0
- package/dist/cli/commands/project-config/config/show.js.map +1 -0
- package/dist/cli/commands/project-config/env/add.d.ts +3 -0
- package/dist/cli/commands/project-config/env/add.d.ts.map +1 -0
- package/dist/cli/commands/project-config/env/add.js +22 -0
- package/dist/cli/commands/project-config/env/add.js.map +1 -0
- package/dist/cli/commands/project-config/env/get.d.ts +3 -0
- package/dist/cli/commands/project-config/env/get.d.ts.map +1 -0
- package/dist/cli/commands/project-config/env/get.js +12 -0
- package/dist/cli/commands/project-config/env/get.js.map +1 -0
- package/dist/cli/commands/project-config/env/import.d.ts +3 -0
- package/dist/cli/commands/project-config/env/import.d.ts.map +1 -0
- package/dist/cli/commands/project-config/env/import.js +45 -0
- package/dist/cli/commands/project-config/env/import.js.map +1 -0
- package/dist/cli/commands/project-config/env/index.d.ts +2 -0
- package/dist/cli/commands/project-config/env/index.d.ts.map +1 -0
- package/dist/cli/commands/project-config/env/index.js +103 -0
- package/dist/cli/commands/project-config/env/index.js.map +1 -0
- package/dist/cli/commands/project-config/env/list.d.ts +3 -0
- package/dist/cli/commands/project-config/env/list.d.ts.map +1 -0
- package/dist/cli/commands/project-config/env/list.js +25 -0
- package/dist/cli/commands/project-config/env/list.js.map +1 -0
- package/dist/cli/commands/project-config/env/metadata-options.d.ts +9 -0
- package/dist/cli/commands/project-config/env/metadata-options.d.ts.map +1 -0
- package/dist/cli/commands/project-config/env/metadata-options.js +32 -0
- package/dist/cli/commands/project-config/env/metadata-options.js.map +1 -0
- package/dist/cli/commands/project-config/env/pull.d.ts +3 -0
- package/dist/cli/commands/project-config/env/pull.d.ts.map +1 -0
- package/dist/cli/commands/project-config/env/pull.js +50 -0
- package/dist/cli/commands/project-config/env/pull.js.map +1 -0
- package/dist/cli/commands/project-config/env/read-value.d.ts +3 -0
- package/dist/cli/commands/project-config/env/read-value.d.ts.map +1 -0
- package/dist/cli/commands/project-config/env/read-value.js +20 -0
- package/dist/cli/commands/project-config/env/read-value.js.map +1 -0
- package/dist/cli/commands/project-config/env/rm.d.ts +3 -0
- package/dist/cli/commands/project-config/env/rm.d.ts.map +1 -0
- package/dist/cli/commands/project-config/env/rm.js +23 -0
- package/dist/cli/commands/project-config/env/rm.js.map +1 -0
- package/dist/cli/commands/project-config/env/run.d.ts +3 -0
- package/dist/cli/commands/project-config/env/run.d.ts.map +1 -0
- package/dist/cli/commands/project-config/env/run.js +28 -0
- package/dist/cli/commands/project-config/env/run.js.map +1 -0
- package/dist/cli/commands/project-config/env/update.d.ts +3 -0
- package/dist/cli/commands/project-config/env/update.d.ts.map +1 -0
- package/dist/cli/commands/project-config/env/update.js +32 -0
- package/dist/cli/commands/project-config/env/update.js.map +1 -0
- package/dist/cli/commands/project-config/environment/create.d.ts +3 -0
- package/dist/cli/commands/project-config/environment/create.d.ts.map +1 -0
- package/dist/cli/commands/project-config/environment/create.js +33 -0
- package/dist/cli/commands/project-config/environment/create.js.map +1 -0
- package/dist/cli/commands/project-config/environment/delete.d.ts +3 -0
- package/dist/cli/commands/project-config/environment/delete.d.ts.map +1 -0
- package/dist/cli/commands/project-config/environment/delete.js +42 -0
- package/dist/cli/commands/project-config/environment/delete.js.map +1 -0
- package/dist/cli/commands/project-config/environment/find.d.ts +7 -0
- package/dist/cli/commands/project-config/environment/find.d.ts.map +1 -0
- package/dist/cli/commands/project-config/environment/find.js +18 -0
- package/dist/cli/commands/project-config/environment/find.js.map +1 -0
- package/dist/cli/commands/project-config/environment/index.d.ts +2 -0
- package/dist/cli/commands/project-config/environment/index.d.ts.map +1 -0
- package/dist/cli/commands/project-config/environment/index.js +76 -0
- package/dist/cli/commands/project-config/environment/index.js.map +1 -0
- package/dist/cli/commands/project-config/environment/initial-superadmin.d.ts +3 -0
- package/dist/cli/commands/project-config/environment/initial-superadmin.d.ts.map +1 -0
- package/dist/cli/commands/project-config/environment/initial-superadmin.js +13 -0
- package/dist/cli/commands/project-config/environment/initial-superadmin.js.map +1 -0
- package/dist/cli/commands/project-config/environment/list.d.ts +3 -0
- package/dist/cli/commands/project-config/environment/list.d.ts.map +1 -0
- package/dist/cli/commands/project-config/environment/list.js +23 -0
- package/dist/cli/commands/project-config/environment/list.js.map +1 -0
- package/dist/cli/commands/project-config/environment/show.d.ts +3 -0
- package/dist/cli/commands/project-config/environment/show.d.ts.map +1 -0
- package/dist/cli/commands/project-config/environment/show.js +30 -0
- package/dist/cli/commands/project-config/environment/show.js.map +1 -0
- package/dist/cli/commands/project-config/environment/update.d.ts +3 -0
- package/dist/cli/commands/project-config/environment/update.d.ts.map +1 -0
- package/dist/cli/commands/project-config/environment/update.js +19 -0
- package/dist/cli/commands/project-config/environment/update.js.map +1 -0
- package/dist/cli/commands/project-config/index.d.ts +3 -0
- package/dist/cli/commands/project-config/index.d.ts.map +1 -0
- package/dist/cli/commands/project-config/index.js +27 -0
- package/dist/cli/commands/project-config/index.js.map +1 -0
- package/dist/cli/commands/project-config/init/build-detection.d.ts +11 -0
- package/dist/cli/commands/project-config/init/build-detection.d.ts.map +1 -0
- package/dist/cli/commands/project-config/init/build-detection.js +113 -0
- package/dist/cli/commands/project-config/init/build-detection.js.map +1 -0
- package/dist/cli/commands/project-config/init/index.d.ts +2 -0
- package/dist/cli/commands/project-config/init/index.d.ts.map +1 -0
- package/dist/cli/commands/project-config/init/index.js +48 -0
- package/dist/cli/commands/project-config/init/index.js.map +1 -0
- package/dist/cli/commands/project-config/init/init.d.ts +14 -0
- package/dist/cli/commands/project-config/init/init.d.ts.map +1 -0
- package/dist/cli/commands/project-config/init/init.js +367 -0
- package/dist/cli/commands/project-config/init/init.js.map +1 -0
- package/dist/cli/commands/project-config/options.d.ts +10 -0
- package/dist/cli/commands/project-config/options.d.ts.map +1 -0
- package/dist/cli/commands/project-config/options.js +80 -0
- package/dist/cli/commands/project-config/options.js.map +1 -0
- package/dist/cli/commands/project-config/project/create.d.ts +3 -0
- package/dist/cli/commands/project-config/project/create.d.ts.map +1 -0
- package/dist/cli/commands/project-config/project/create.js +20 -0
- package/dist/cli/commands/project-config/project/create.js.map +1 -0
- package/dist/cli/commands/project-config/project/delete.d.ts +3 -0
- package/dist/cli/commands/project-config/project/delete.d.ts.map +1 -0
- package/dist/cli/commands/project-config/project/delete.js +28 -0
- package/dist/cli/commands/project-config/project/delete.js.map +1 -0
- package/dist/cli/commands/project-config/project/index.d.ts +2 -0
- package/dist/cli/commands/project-config/project/index.d.ts.map +1 -0
- package/dist/cli/commands/project-config/project/index.js +88 -0
- package/dist/cli/commands/project-config/project/index.js.map +1 -0
- package/dist/cli/commands/project-config/project/link.d.ts +3 -0
- package/dist/cli/commands/project-config/project/link.d.ts.map +1 -0
- package/dist/cli/commands/project-config/project/link.js +45 -0
- package/dist/cli/commands/project-config/project/link.js.map +1 -0
- package/dist/cli/commands/project-config/project/list.d.ts +3 -0
- package/dist/cli/commands/project-config/project/list.d.ts.map +1 -0
- package/dist/cli/commands/project-config/project/list.js +15 -0
- package/dist/cli/commands/project-config/project/list.js.map +1 -0
- package/dist/cli/commands/project-config/project/show.d.ts +3 -0
- package/dist/cli/commands/project-config/project/show.d.ts.map +1 -0
- package/dist/cli/commands/project-config/project/show.js +33 -0
- package/dist/cli/commands/project-config/project/show.js.map +1 -0
- package/dist/cli/commands/project-config/project/unlink.d.ts +3 -0
- package/dist/cli/commands/project-config/project/unlink.d.ts.map +1 -0
- package/dist/cli/commands/project-config/project/unlink.js +21 -0
- package/dist/cli/commands/project-config/project/unlink.js.map +1 -0
- package/dist/cli/commands/project-config/project/update.d.ts +3 -0
- package/dist/cli/commands/project-config/project/update.d.ts.map +1 -0
- package/dist/cli/commands/project-config/project/update.js +18 -0
- package/dist/cli/commands/project-config/project/update.js.map +1 -0
- package/dist/cli/commands/project-config/source/connect.d.ts +15 -0
- package/dist/cli/commands/project-config/source/connect.d.ts.map +1 -0
- package/dist/cli/commands/project-config/source/connect.js +208 -0
- package/dist/cli/commands/project-config/source/connect.js.map +1 -0
- package/dist/cli/commands/project-config/source/disconnect.d.ts +3 -0
- package/dist/cli/commands/project-config/source/disconnect.d.ts.map +1 -0
- package/dist/cli/commands/project-config/source/disconnect.js +27 -0
- package/dist/cli/commands/project-config/source/disconnect.js.map +1 -0
- package/dist/cli/commands/project-config/source/index.d.ts +2 -0
- package/dist/cli/commands/project-config/source/index.d.ts.map +1 -0
- package/dist/cli/commands/project-config/source/index.js +74 -0
- package/dist/cli/commands/project-config/source/index.js.map +1 -0
- package/dist/cli/commands/project-config/source/map.d.ts +3 -0
- package/dist/cli/commands/project-config/source/map.d.ts.map +1 -0
- package/dist/cli/commands/project-config/source/map.js +93 -0
- package/dist/cli/commands/project-config/source/map.js.map +1 -0
- package/dist/cli/commands/project-config/source/repos.d.ts +3 -0
- package/dist/cli/commands/project-config/source/repos.d.ts.map +1 -0
- package/dist/cli/commands/project-config/source/repos.js +18 -0
- package/dist/cli/commands/project-config/source/repos.js.map +1 -0
- package/dist/cli/commands/project-config/source/status.d.ts +3 -0
- package/dist/cli/commands/project-config/source/status.d.ts.map +1 -0
- package/dist/cli/commands/project-config/source/status.js +72 -0
- package/dist/cli/commands/project-config/source/status.js.map +1 -0
- package/dist/cli/commands/runtime-data/backup.d.ts +5 -0
- package/dist/cli/commands/runtime-data/backup.d.ts.map +1 -0
- package/dist/cli/commands/runtime-data/backup.js +107 -0
- package/dist/cli/commands/runtime-data/backup.js.map +1 -0
- package/dist/cli/commands/runtime-data/index.d.ts +2 -0
- package/dist/cli/commands/runtime-data/index.d.ts.map +1 -0
- package/dist/cli/commands/runtime-data/index.js +206 -0
- package/dist/cli/commands/runtime-data/index.js.map +1 -0
- package/dist/cli/commands/runtime-data/resource.d.ts +11 -0
- package/dist/cli/commands/runtime-data/resource.d.ts.map +1 -0
- package/dist/cli/commands/runtime-data/resource.js +147 -0
- package/dist/cli/commands/runtime-data/resource.js.map +1 -0
- package/dist/cli/commands/runtime-data/restore.d.ts +3 -0
- package/dist/cli/commands/runtime-data/restore.d.ts.map +1 -0
- package/dist/cli/commands/runtime-data/restore.js +119 -0
- package/dist/cli/commands/runtime-data/restore.js.map +1 -0
- package/dist/cli/commands/runtime-data/seeds.d.ts +6 -0
- package/dist/cli/commands/runtime-data/seeds.d.ts.map +1 -0
- package/dist/cli/commands/runtime-data/seeds.js +213 -0
- package/dist/cli/commands/runtime-data/seeds.js.map +1 -0
- package/dist/cli/commands/runtime-data/tunnel.d.ts +16 -0
- package/dist/cli/commands/runtime-data/tunnel.d.ts.map +1 -0
- package/dist/cli/commands/runtime-data/tunnel.js +249 -0
- package/dist/cli/commands/runtime-data/tunnel.js.map +1 -0
- package/dist/cli/host-arguments.d.ts +7 -0
- package/dist/cli/host-arguments.d.ts.map +1 -0
- package/dist/cli/host-arguments.js +46 -0
- package/dist/cli/host-arguments.js.map +1 -0
- package/dist/cli/host-nodes.d.ts +30 -0
- package/dist/cli/host-nodes.d.ts.map +1 -0
- package/dist/cli/host-nodes.js +17 -0
- package/dist/cli/host-nodes.js.map +1 -0
- package/dist/cli/index.d.ts +29 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +60 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/lib/api-client.d.ts +19 -0
- package/dist/cli/lib/api-client.d.ts.map +1 -0
- package/dist/cli/lib/api-client.js +111 -0
- package/dist/cli/lib/api-client.js.map +1 -0
- package/dist/cli/lib/auth.d.ts +132 -0
- package/dist/cli/lib/auth.d.ts.map +1 -0
- package/dist/cli/lib/auth.js +505 -0
- package/dist/cli/lib/auth.js.map +1 -0
- package/dist/cli/lib/config.d.ts +7 -0
- package/dist/cli/lib/config.d.ts.map +1 -0
- package/dist/cli/lib/config.js +11 -0
- package/dist/cli/lib/config.js.map +1 -0
- package/dist/cli/lib/context.d.ts +10 -0
- package/dist/cli/lib/context.d.ts.map +1 -0
- package/dist/cli/lib/context.js +42 -0
- package/dist/cli/lib/context.js.map +1 -0
- package/dist/cli/lib/contract/build-settings.d.ts +36 -0
- package/dist/cli/lib/contract/build-settings.d.ts.map +1 -0
- package/dist/cli/lib/contract/build-settings.js +73 -0
- package/dist/cli/lib/contract/build-settings.js.map +1 -0
- package/dist/cli/lib/contract/database.d.ts +47 -0
- package/dist/cli/lib/contract/database.d.ts.map +1 -0
- package/dist/cli/lib/contract/database.js +29 -0
- package/dist/cli/lib/contract/database.js.map +1 -0
- package/dist/cli/lib/contract/deployment-resource-labels.d.ts +11 -0
- package/dist/cli/lib/contract/deployment-resource-labels.d.ts.map +1 -0
- package/dist/cli/lib/contract/deployment-resource-labels.js +80 -0
- package/dist/cli/lib/contract/deployment-resource-labels.js.map +1 -0
- package/dist/cli/lib/contract/deployments.d.ts +128 -0
- package/dist/cli/lib/contract/deployments.d.ts.map +1 -0
- package/dist/cli/lib/contract/deployments.js +46 -0
- package/dist/cli/lib/contract/deployments.js.map +1 -0
- package/dist/cli/lib/contract/desired-state.d.ts +104 -0
- package/dist/cli/lib/contract/desired-state.d.ts.map +1 -0
- package/dist/cli/lib/contract/desired-state.js +171 -0
- package/dist/cli/lib/contract/desired-state.js.map +1 -0
- package/dist/cli/lib/contract/foreign-credentials.d.ts +49 -0
- package/dist/cli/lib/contract/foreign-credentials.d.ts.map +1 -0
- package/dist/cli/lib/contract/foreign-credentials.js +71 -0
- package/dist/cli/lib/contract/foreign-credentials.js.map +1 -0
- package/dist/cli/lib/contract/logs.d.ts +44 -0
- package/dist/cli/lib/contract/logs.d.ts.map +1 -0
- package/dist/cli/lib/contract/logs.js +66 -0
- package/dist/cli/lib/contract/logs.js.map +1 -0
- package/dist/cli/lib/contract/projects.d.ts +31 -0
- package/dist/cli/lib/contract/projects.d.ts.map +1 -0
- package/dist/cli/lib/contract/projects.js +9 -0
- package/dist/cli/lib/contract/projects.js.map +1 -0
- package/dist/cli/lib/contract/public-error-details.d.ts +4 -0
- package/dist/cli/lib/contract/public-error-details.d.ts.map +1 -0
- package/dist/cli/lib/contract/public-error-details.js +248 -0
- package/dist/cli/lib/contract/public-error-details.js.map +1 -0
- package/dist/cli/lib/contract/runtime-operations.d.ts +87 -0
- package/dist/cli/lib/contract/runtime-operations.d.ts.map +1 -0
- package/dist/cli/lib/contract/runtime-operations.js +67 -0
- package/dist/cli/lib/contract/runtime-operations.js.map +1 -0
- package/dist/cli/lib/contract/seeds.d.ts +31 -0
- package/dist/cli/lib/contract/seeds.d.ts.map +1 -0
- package/dist/cli/lib/contract/seeds.js +43 -0
- package/dist/cli/lib/contract/seeds.js.map +1 -0
- package/dist/cli/lib/contract/source-repository.d.ts +73 -0
- package/dist/cli/lib/contract/source-repository.d.ts.map +1 -0
- package/dist/cli/lib/contract/source-repository.js +31 -0
- package/dist/cli/lib/contract/source-repository.js.map +1 -0
- package/dist/cli/lib/contract/wire-types.d.ts +47 -0
- package/dist/cli/lib/contract/wire-types.d.ts.map +1 -0
- package/dist/cli/lib/contract/wire-types.js +13 -0
- package/dist/cli/lib/contract/wire-types.js.map +1 -0
- package/dist/cli/lib/contract/wire-values.d.ts +6 -0
- package/dist/cli/lib/contract/wire-values.d.ts.map +1 -0
- package/dist/cli/lib/contract/wire-values.js +21 -0
- package/dist/cli/lib/contract/wire-values.js.map +1 -0
- package/dist/cli/lib/dotenv.d.ts +2 -0
- package/dist/cli/lib/dotenv.d.ts.map +1 -0
- package/dist/cli/lib/dotenv.js +28 -0
- package/dist/cli/lib/dotenv.js.map +1 -0
- package/dist/cli/lib/env-file.d.ts +2 -0
- package/dist/cli/lib/env-file.d.ts.map +1 -0
- package/dist/cli/lib/env-file.js +26 -0
- package/dist/cli/lib/env-file.js.map +1 -0
- package/dist/cli/lib/env-preflight.d.ts +24 -0
- package/dist/cli/lib/env-preflight.d.ts.map +1 -0
- package/dist/cli/lib/env-preflight.js +265 -0
- package/dist/cli/lib/env-preflight.js.map +1 -0
- package/dist/cli/lib/error-output.d.ts +3 -0
- package/dist/cli/lib/error-output.d.ts.map +1 -0
- package/dist/cli/lib/error-output.js +2 -0
- package/dist/cli/lib/error-output.js.map +1 -0
- package/dist/cli/lib/errors.d.ts +37 -0
- package/dist/cli/lib/errors.d.ts.map +1 -0
- package/dist/cli/lib/errors.js +147 -0
- package/dist/cli/lib/errors.js.map +1 -0
- package/dist/cli/lib/file-lock.d.ts +23 -0
- package/dist/cli/lib/file-lock.d.ts.map +1 -0
- package/dist/cli/lib/file-lock.js +121 -0
- package/dist/cli/lib/file-lock.js.map +1 -0
- package/dist/cli/lib/format.d.ts +6 -0
- package/dist/cli/lib/format.d.ts.map +1 -0
- package/dist/cli/lib/format.js +44 -0
- package/dist/cli/lib/format.js.map +1 -0
- package/dist/cli/lib/id-prefix.d.ts +6 -0
- package/dist/cli/lib/id-prefix.d.ts.map +1 -0
- package/dist/cli/lib/id-prefix.js +18 -0
- package/dist/cli/lib/id-prefix.js.map +1 -0
- package/dist/cli/lib/invocation.d.ts +6 -0
- package/dist/cli/lib/invocation.d.ts.map +1 -0
- package/dist/cli/lib/invocation.js +34 -0
- package/dist/cli/lib/invocation.js.map +1 -0
- package/dist/cli/lib/log-stream.d.ts +7 -0
- package/dist/cli/lib/log-stream.d.ts.map +1 -0
- package/dist/cli/lib/log-stream.js +179 -0
- package/dist/cli/lib/log-stream.js.map +1 -0
- package/dist/cli/lib/logger.d.ts +5 -0
- package/dist/cli/lib/logger.d.ts.map +1 -0
- package/dist/cli/lib/logger.js +52 -0
- package/dist/cli/lib/logger.js.map +1 -0
- package/dist/cli/lib/open-browser.d.ts +2 -0
- package/dist/cli/lib/open-browser.d.ts.map +1 -0
- package/dist/cli/lib/open-browser.js +8 -0
- package/dist/cli/lib/open-browser.js.map +1 -0
- package/dist/cli/lib/organization.d.ts +3 -0
- package/dist/cli/lib/organization.d.ts.map +1 -0
- package/dist/cli/lib/organization.js +20 -0
- package/dist/cli/lib/organization.js.map +1 -0
- package/dist/cli/lib/project-link.d.ts +12 -0
- package/dist/cli/lib/project-link.d.ts.map +1 -0
- package/dist/cli/lib/project-link.js +69 -0
- package/dist/cli/lib/project-link.js.map +1 -0
- package/dist/cli/lib/resolve.d.ts +20 -0
- package/dist/cli/lib/resolve.d.ts.map +1 -0
- package/dist/cli/lib/resolve.js +88 -0
- package/dist/cli/lib/resolve.js.map +1 -0
- package/dist/cli/lib/sleep.d.ts +2 -0
- package/dist/cli/lib/sleep.d.ts.map +1 -0
- package/dist/cli/lib/sleep.js +4 -0
- package/dist/cli/lib/sleep.js.map +1 -0
- package/dist/cli/lib/slug.d.ts +3 -0
- package/dist/cli/lib/slug.d.ts.map +1 -0
- package/dist/cli/lib/slug.js +13 -0
- package/dist/cli/lib/slug.js.map +1 -0
- package/dist/cli/lib/source-repository-link.d.ts +5 -0
- package/dist/cli/lib/source-repository-link.d.ts.map +1 -0
- package/dist/cli/lib/source-repository-link.js +28 -0
- package/dist/cli/lib/source-repository-link.js.map +1 -0
- package/dist/cli/lib/types.d.ts +58 -0
- package/dist/cli/lib/types.d.ts.map +1 -0
- package/dist/cli/lib/types.js +10 -0
- package/dist/cli/lib/types.js.map +1 -0
- package/dist/cli/root-options.d.ts +14 -0
- package/dist/cli/root-options.d.ts.map +1 -0
- package/dist/cli/root-options.js +53 -0
- package/dist/cli/root-options.js.map +1 -0
- package/dist/cli-plugin.d.ts +22 -0
- package/dist/cli-plugin.d.ts.map +1 -0
- package/dist/cli-plugin.js +30 -0
- package/dist/cli-plugin.js.map +1 -0
- package/dist/cloud-config-module.d.ts +3 -0
- package/dist/cloud-config-module.d.ts.map +1 -0
- package/dist/cloud-config-module.js +16 -0
- package/dist/cloud-config-module.js.map +1 -0
- package/dist/dev/cli-host.d.ts +3 -0
- package/dist/dev/cli-host.d.ts.map +1 -0
- package/dist/dev/cli-host.js +72 -0
- package/dist/dev/cli-host.js.map +1 -0
- package/dist/dev/dev-command.d.ts +7 -0
- package/dist/dev/dev-command.d.ts.map +1 -0
- package/dist/dev/dev-command.js +122 -0
- package/dist/dev/dev-command.js.map +1 -0
- package/dist/dev/dev-config.d.ts +4 -0
- package/dist/dev/dev-config.d.ts.map +1 -0
- package/dist/dev/dev-config.js +28 -0
- package/dist/dev/dev-config.js.map +1 -0
- package/dist/dev/dev-migrate.d.ts +2 -0
- package/dist/dev/dev-migrate.d.ts.map +1 -0
- package/dist/dev/dev-migrate.js +17 -0
- package/dist/dev/dev-migrate.js.map +1 -0
- package/dist/dev/dev-process.d.ts +2 -0
- package/dist/dev/dev-process.d.ts.map +1 -0
- package/dist/dev/dev-process.js +14 -0
- package/dist/dev/dev-process.js.map +1 -0
- package/dist/dev/dev-server.d.ts +2 -0
- package/dist/dev/dev-server.d.ts.map +1 -0
- package/dist/dev/dev-server.js +15 -0
- package/dist/dev/dev-server.js.map +1 -0
- package/dist/dev/dev-worker.d.ts +2 -0
- package/dist/dev/dev-worker.d.ts.map +1 -0
- package/dist/dev/dev-worker.js +11 -0
- package/dist/dev/dev-worker.js.map +1 -0
- package/dist/dev/local-services.d.ts +23 -0
- package/dist/dev/local-services.d.ts.map +1 -0
- package/dist/dev/local-services.js +288 -0
- package/dist/dev/local-services.js.map +1 -0
- package/dist/dev/project-layout.d.ts +11 -0
- package/dist/dev/project-layout.d.ts.map +1 -0
- package/dist/dev/project-layout.js +89 -0
- package/dist/dev/project-layout.js.map +1 -0
- package/dist/entrypoint.js +3 -12
- package/dist/entrypoint.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/local-asset-server.d.ts +4 -0
- package/dist/local-asset-server.d.ts.map +1 -0
- package/dist/local-asset-server.js +24 -0
- package/dist/local-asset-server.js.map +1 -0
- package/dist/local-cache-plugin.d.ts +5 -0
- package/dist/local-cache-plugin.d.ts.map +1 -0
- package/dist/local-cache-plugin.js +68 -0
- package/dist/local-cache-plugin.js.map +1 -0
- package/dist/local-cache.d.ts +17 -0
- package/dist/local-cache.d.ts.map +1 -0
- package/dist/local-cache.js +144 -0
- package/dist/local-cache.js.map +1 -0
- package/dist/local-dashboard-plugin.d.ts +9 -0
- package/dist/local-dashboard-plugin.d.ts.map +1 -0
- package/dist/local-dashboard-plugin.js +37 -0
- package/dist/local-dashboard-plugin.js.map +1 -0
- package/dist/local-database.d.ts +15 -0
- package/dist/local-database.d.ts.map +1 -0
- package/dist/local-database.js +64 -0
- package/dist/local-database.js.map +1 -0
- package/dist/local-runtime.d.ts +15 -2
- package/dist/local-runtime.d.ts.map +1 -1
- package/dist/local-runtime.js +145 -28
- package/dist/local-runtime.js.map +1 -1
- package/package.json +63 -7
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
import * as prompts from "@clack/prompts";
|
|
2
|
+
import { API_AUTH_CONFIG_TIMEOUT_MS, WORKOS_AUTHENTICATE_URL, WORKOS_AUTH_REQUEST_TIMEOUT_MS, WORKOS_DEVICE_AUTHORIZE_URL, cloudInvocation, createApiClient, exchangeRefreshToken, getApiUrl, openBrowser, readAuthConfig, sleep, withSessionLock, writeAuthConfig, } from "../../index.js";
|
|
3
|
+
// Answers with an exit code rather than setting `process.exitCode`: the host exits with whatever a
|
|
4
|
+
// command action returns. A login that was cancelled at the organization picker saved nothing and
|
|
5
|
+
// left the account signed out, so a script must not read it as a completed login.
|
|
6
|
+
export async function login() {
|
|
7
|
+
prompts.intro("Vendure Cloud Login");
|
|
8
|
+
const existing = readAuthConfig();
|
|
9
|
+
if (existing) {
|
|
10
|
+
const shouldContinue = await prompts.confirm({
|
|
11
|
+
initialValue: false,
|
|
12
|
+
message: `Already logged in as ${existing.user.email}. Continue and re-authenticate?`,
|
|
13
|
+
});
|
|
14
|
+
if (prompts.isCancel(shouldContinue) || !shouldContinue) {
|
|
15
|
+
prompts.outro("Login cancelled.");
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const apiUrl = getApiUrl();
|
|
20
|
+
const publicClient = createApiClient({ baseUrl: apiUrl });
|
|
21
|
+
const { workosClientId } = await publicClient.get("/auth/cli-config");
|
|
22
|
+
const deviceResponse = await fetchWorkos(WORKOS_DEVICE_AUTHORIZE_URL, {
|
|
23
|
+
method: "POST",
|
|
24
|
+
headers: { "content-type": "application/x-www-form-urlencoded" },
|
|
25
|
+
body: new URLSearchParams({ client_id: workosClientId }),
|
|
26
|
+
}, API_AUTH_CONFIG_TIMEOUT_MS);
|
|
27
|
+
if (!deviceResponse.ok) {
|
|
28
|
+
throw new Error("Failed to start device authorization flow");
|
|
29
|
+
}
|
|
30
|
+
const device = (await deviceResponse.json());
|
|
31
|
+
prompts.note(`Your code: ${device.user_code}\n\nIf the browser doesn't open, visit:\n${device.verification_uri_complete}`, "Open the URL in your browser to authenticate");
|
|
32
|
+
openBrowser(device.verification_uri_complete);
|
|
33
|
+
const spinner = prompts.spinner();
|
|
34
|
+
spinner.start("Waiting for authentication...");
|
|
35
|
+
let token;
|
|
36
|
+
try {
|
|
37
|
+
token = await pollForToken(workosClientId, device.device_code, device.interval, device.expires_in);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
spinner.stop("Authentication failed.");
|
|
41
|
+
throw error;
|
|
42
|
+
}
|
|
43
|
+
spinner.stop("Authenticated!");
|
|
44
|
+
const userName = [token.user.first_name, token.user.last_name].filter(Boolean).join(" ") || null;
|
|
45
|
+
const authedClient = createApiClient({ baseUrl: apiUrl, token: token.access_token });
|
|
46
|
+
const orgs = await authedClient.get("/auth/organizations");
|
|
47
|
+
if (orgs.length === 0) {
|
|
48
|
+
throw new Error("No organization is set up for your account. Contact support to get started.");
|
|
49
|
+
}
|
|
50
|
+
const activeOrg = await resolveActiveOrganization(orgs, token.organization_id);
|
|
51
|
+
if (!activeOrg) {
|
|
52
|
+
// Nothing was saved and the account is not signed in, so a caller must not read this exit as a
|
|
53
|
+
// completed login.
|
|
54
|
+
prompts.outro("Login cancelled.");
|
|
55
|
+
return 1;
|
|
56
|
+
}
|
|
57
|
+
// The device-flow token is scoped to WorkOS's default org for this user. If they picked (or only
|
|
58
|
+
// have) a different org, re-mint the token scoped to it so its `org_id` + `permissions` claims
|
|
59
|
+
// match the active org — otherwise permissioned calls 403 against the "wrong" org's claims.
|
|
60
|
+
//
|
|
61
|
+
// Under the session lock: the re-mint spends a single-use refresh token, and the write must not
|
|
62
|
+
// interleave with a concurrent command's refresh writing its rotated pair over this brand-new
|
|
63
|
+
// session.
|
|
64
|
+
await withSessionLock(async () => {
|
|
65
|
+
let accessToken = token.access_token;
|
|
66
|
+
let refreshToken = token.refresh_token;
|
|
67
|
+
try {
|
|
68
|
+
const pair = await exchangeRefreshToken(token.refresh_token, activeOrg.workosOrgId);
|
|
69
|
+
accessToken = pair.accessToken;
|
|
70
|
+
refreshToken = pair.refreshToken;
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
// The re-mint failed (network blip, authentication service hiccup). Persist the device-flow
|
|
74
|
+
// tokens anyway so the user lands logged in rather than stranded with a consumed token and
|
|
75
|
+
// no config. The session is just unscoped (default org) until they retry — `org switch`
|
|
76
|
+
// re-mints.
|
|
77
|
+
prompts.log.warn(`Signed in, but couldn't scope your session to ${activeOrg.name}. Run \`${cloudInvocation()} org switch\` to finish scoping.`);
|
|
78
|
+
}
|
|
79
|
+
writeAuthConfig({
|
|
80
|
+
accessToken,
|
|
81
|
+
refreshToken,
|
|
82
|
+
user: { id: token.user.id, email: token.user.email, name: userName },
|
|
83
|
+
activeOrganizationId: activeOrg.id,
|
|
84
|
+
organizations: orgs,
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
prompts.outro(`Logged in as ${token.user.email} (org: ${activeOrg.name})`);
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
// The browser step already asks a multi-organization user which organization to sign in to, and
|
|
91
|
+
// reports it back as an external organization id. Honouring that answer stops the CLI asking the
|
|
92
|
+
// same question again, and lets a login finish where there is no terminal to answer a prompt. The
|
|
93
|
+
// picker is only reached when the browser sent no organization, or named one this account can no
|
|
94
|
+
// longer see. Returns null when the user cancels the picker.
|
|
95
|
+
async function resolveActiveOrganization(orgs, browserOrganizationId) {
|
|
96
|
+
const fromBrowser = browserOrganizationId
|
|
97
|
+
? orgs.find((org) => org.workosOrgId === browserOrganizationId)
|
|
98
|
+
: undefined;
|
|
99
|
+
if (fromBrowser) {
|
|
100
|
+
return fromBrowser;
|
|
101
|
+
}
|
|
102
|
+
if (orgs.length === 1) {
|
|
103
|
+
return orgs[0];
|
|
104
|
+
}
|
|
105
|
+
if (!process.stdin.isTTY) {
|
|
106
|
+
throw new Error(`Could not tell which organization this session belongs to. Run \`${cloudInvocation()} login\` again in an interactive terminal and choose one.`);
|
|
107
|
+
}
|
|
108
|
+
const selected = await prompts.select({
|
|
109
|
+
message: "Select an organization:",
|
|
110
|
+
options: orgs.map((org) => ({ value: org, label: `${org.name} (${org.slug})` })),
|
|
111
|
+
});
|
|
112
|
+
return prompts.isCancel(selected) ? null : selected;
|
|
113
|
+
}
|
|
114
|
+
async function pollForToken(clientId, deviceCode, initialInterval, expiresIn) {
|
|
115
|
+
const deadline = Date.now() + expiresIn * 1000;
|
|
116
|
+
let pollInterval = initialInterval;
|
|
117
|
+
while (Date.now() < deadline) {
|
|
118
|
+
await sleep(pollInterval * 1000);
|
|
119
|
+
const response = await fetchWorkos(WORKOS_AUTHENTICATE_URL, {
|
|
120
|
+
method: "POST",
|
|
121
|
+
headers: { "content-type": "application/json" },
|
|
122
|
+
body: JSON.stringify({
|
|
123
|
+
client_id: clientId,
|
|
124
|
+
device_code: deviceCode,
|
|
125
|
+
grant_type: "urn:ietf:params:oauth:grant-type:device_code",
|
|
126
|
+
}),
|
|
127
|
+
}, WORKOS_AUTH_REQUEST_TIMEOUT_MS);
|
|
128
|
+
if (response.ok) {
|
|
129
|
+
return response.json();
|
|
130
|
+
}
|
|
131
|
+
const body = (await response.json().catch(() => ({})));
|
|
132
|
+
const error = typeof body.error === "string" ? body.error : undefined;
|
|
133
|
+
if (error === "authorization_pending") {
|
|
134
|
+
continue;
|
|
135
|
+
}
|
|
136
|
+
if (error === "slow_down") {
|
|
137
|
+
pollInterval += 1;
|
|
138
|
+
continue;
|
|
139
|
+
}
|
|
140
|
+
if (error === "expired_token") {
|
|
141
|
+
throw new Error("Device code expired. Please try again.");
|
|
142
|
+
}
|
|
143
|
+
throw new Error(`Authentication failed: ${error || response.statusText}`);
|
|
144
|
+
}
|
|
145
|
+
throw new Error("Device code expired. Please try again.");
|
|
146
|
+
}
|
|
147
|
+
async function fetchWorkos(url, init, timeoutMs) {
|
|
148
|
+
try {
|
|
149
|
+
return await fetch(url, {
|
|
150
|
+
...init,
|
|
151
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
throw new Error("Could not reach the authentication service. Check your connection and try again.", { cause: error });
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=login.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.js","sourceRoot":"","sources":["../../../../src/cli/commands/identity-context/login.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,0BAA0B,EAE1B,uBAAuB,EACvB,8BAA8B,EAC9B,2BAA2B,EAC3B,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,SAAS,EACT,WAAW,EACX,cAAc,EACd,KAAK,EACL,eAAe,EACf,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAsBxB,mGAAmG;AACnG,kGAAkG;AAClG,kFAAkF;AAClF,MAAM,CAAC,KAAK,UAAU,KAAK;IACzB,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAErC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAClC,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC;YAC3C,YAAY,EAAE,KAAK;YACnB,OAAO,EAAE,wBAAwB,QAAQ,CAAC,IAAI,CAAC,KAAK,iCAAiC;SACtF,CAAC,CAAC;QACH,IAAI,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;YAClC,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAC3B,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC1D,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,YAAY,CAAC,GAAG,CAA6B,kBAAkB,CAAC,CAAC;IAElG,MAAM,cAAc,GAAG,MAAM,WAAW,CACtC,2BAA2B,EAC3B;QACE,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;QAChE,IAAI,EAAE,IAAI,eAAe,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,CAAC;KACzD,EACD,0BAA0B,CAC3B,CAAC;IACF,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,MAAM,cAAc,CAAC,IAAI,EAAE,CAAuB,CAAC;IAEnE,OAAO,CAAC,IAAI,CACV,cAAc,MAAM,CAAC,SAAS,4CAA4C,MAAM,CAAC,yBAAyB,EAAE,EAC5G,8CAA8C,CAC/C,CAAC;IAEF,WAAW,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAE9C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAE/C,IAAI,KAA0B,CAAC;IAC/B,IAAI,CAAC;QACH,KAAK,GAAG,MAAM,YAAY,CACxB,cAAc,EACd,MAAM,CAAC,WAAW,EAClB,MAAM,CAAC,QAAQ,EACf,MAAM,CAAC,UAAU,CAClB,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACvC,MAAM,KAAK,CAAC;IACd,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAE/B,MAAM,QAAQ,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;IAEjG,MAAM,YAAY,GAAG,eAAe,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,EAAE,CAAC,CAAC;IACrF,MAAM,IAAI,GAAG,MAAM,YAAY,CAAC,GAAG,CAAqB,qBAAqB,CAAC,CAAC;IAE/E,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACjG,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,yBAAyB,CAAC,IAAI,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC;IAC/E,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,+FAA+F;QAC/F,mBAAmB;QACnB,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC;IACX,CAAC;IAED,iGAAiG;IACjG,+FAA+F;IAC/F,4FAA4F;IAC5F,EAAE;IACF,gGAAgG;IAChG,8FAA8F;IAC9F,WAAW;IACX,MAAM,eAAe,CAAC,KAAK,IAAI,EAAE;QAC/B,IAAI,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC;QACrC,IAAI,YAAY,GAAG,KAAK,CAAC,aAAa,CAAC;QACvC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,WAAW,CAAC,CAAC;YACpF,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAC/B,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACnC,CAAC;QAAC,MAAM,CAAC;YACP,4FAA4F;YAC5F,2FAA2F;YAC3F,wFAAwF;YACxF,YAAY;YACZ,OAAO,CAAC,GAAG,CAAC,IAAI,CACd,iDAAiD,SAAS,CAAC,IAAI,WAAW,eAAe,EAAE,kCAAkC,CAC9H,CAAC;QACJ,CAAC;QAED,eAAe,CAAC;YACd,WAAW;YACX,YAAY;YACZ,IAAI,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE;YACpE,oBAAoB,EAAE,SAAS,CAAC,EAAE;YAClC,aAAa,EAAE,IAAI;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,KAAK,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,KAAK,UAAU,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;IAC3E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,gGAAgG;AAChG,iGAAiG;AACjG,kGAAkG;AAClG,iGAAiG;AACjG,6DAA6D;AAC7D,KAAK,UAAU,yBAAyB,CACtC,IAAwB,EACxB,qBAAyC;IAEzC,MAAM,WAAW,GAAG,qBAAqB;QACvC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,KAAK,qBAAqB,CAAC;QAC/D,CAAC,CAAC,SAAS,CAAC;IACd,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,oEAAoE,eAAe,EAAE,2DAA2D,CACjJ,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CAAmB;QACtD,OAAO,EAAE,yBAAyB;QAClC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;KACjF,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC;AACtD,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,QAAgB,EAChB,UAAkB,EAClB,eAAuB,EACvB,SAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,GAAG,IAAI,CAAC;IAC/C,IAAI,YAAY,GAAG,eAAe,CAAC;IAEnC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;QAEjC,MAAM,QAAQ,GAAG,MAAM,WAAW,CAChC,uBAAuB,EACvB;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,SAAS,EAAE,QAAQ;gBACnB,WAAW,EAAE,UAAU;gBACvB,UAAU,EAAE,8CAA8C;aAC3D,CAAC;SACH,EACD,8BAA8B,CAC/B,CAAC;QAEF,IAAI,QAAQ,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO,QAAQ,CAAC,IAAI,EAAkC,CAAC;QACzD,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAA4B,CAAC;QAClF,MAAM,KAAK,GAAG,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QAEtE,IAAI,KAAK,KAAK,uBAAuB,EAAE,CAAC;YACtC,SAAS;QACX,CAAC;QACD,IAAI,KAAK,KAAK,WAAW,EAAE,CAAC;YAC1B,YAAY,IAAI,CAAC,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,KAAK,KAAK,eAAe,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC5D,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,IAAiB,EAAE,SAAiB;IAC1E,IAAI,CAAC;QACH,OAAO,MAAM,KAAK,CAAC,GAAG,EAAE;YACtB,GAAG,IAAI;YACP,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;SACvC,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,kFAAkF,EAClF,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/identity-context/logout.ts"],"names":[],"mappings":"AAGA,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAQ5C"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import * as prompts from "@clack/prompts";
|
|
2
|
+
import { clearAuthConfig, readAuthConfig } from "../../index.js";
|
|
3
|
+
export async function logout() {
|
|
4
|
+
const existing = readAuthConfig();
|
|
5
|
+
if (!existing) {
|
|
6
|
+
prompts.log.info("Not currently logged in.");
|
|
7
|
+
return;
|
|
8
|
+
}
|
|
9
|
+
clearAuthConfig();
|
|
10
|
+
prompts.log.success("Logged out successfully.");
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=logout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logout.js","sourceRoot":"","sources":["../../../../src/cli/commands/identity-context/logout.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,MAAM;IAC1B,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAClC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IACD,eAAe,EAAE,CAAC;IAClB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,0BAA0B,CAAC,CAAC;AAClD,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-switch.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/identity-context/org-switch.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,iBAAiB,EAMvB,MAAM,gBAAgB,CAAC;AAExB,wBAAsB,kBAAkB,CAAC,EACvC,OAAO,GACR,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CA2EjD"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import * as prompts from "@clack/prompts";
|
|
2
|
+
import { cloudInvocation, createAuthenticatedClient, readAuthConfig, resolveCredential, rotateActiveOrganization, } from "../../index.js";
|
|
3
|
+
export async function switchOrganization({ globals, }) {
|
|
4
|
+
// This command re-mints and rewrites the stored login, so it only ever operates on that
|
|
5
|
+
// credential. An API key is already scoped to a single organization and owns no session to
|
|
6
|
+
// rewrite — say so rather than acting on a credential the caller did not name.
|
|
7
|
+
if (resolveCredential(globals)?.kind === "apiKey") {
|
|
8
|
+
throw new Error(`\`${cloudInvocation()} org switch\` changes the organization of your stored login. An API key is scoped to one organization and cannot be switched.`);
|
|
9
|
+
}
|
|
10
|
+
const config = readAuthConfig();
|
|
11
|
+
if (!config) {
|
|
12
|
+
prompts.log.warn(`Not logged in. Run \`${cloudInvocation()} login\` to authenticate.`);
|
|
13
|
+
// The exit code is returned, not assigned to `process.exitCode`; see `defineCloudCommand`.
|
|
14
|
+
return 1;
|
|
15
|
+
}
|
|
16
|
+
// Re-fetch the membership list rather than trusting the stored copy: it gives us the up-to-date
|
|
17
|
+
// set (membership can change between logins) and, crucially, the `workosOrgId` needed to re-mint
|
|
18
|
+
// the token — older configs were persisted before that field existed. createAuthenticatedClient
|
|
19
|
+
// wires the 401-retry refresh so an expired stored token self-heals here.
|
|
20
|
+
const client = createAuthenticatedClient(globals);
|
|
21
|
+
const organizations = await client.get("/auth/organizations");
|
|
22
|
+
if (organizations.length <= 1) {
|
|
23
|
+
prompts.log.info("You only belong to one organization.");
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
const selected = await prompts.select({
|
|
27
|
+
message: "Select an organization:",
|
|
28
|
+
options: organizations.map((org) => ({
|
|
29
|
+
value: org.id,
|
|
30
|
+
label: `${org.name} (${org.slug})`,
|
|
31
|
+
hint: org.id === config.activeOrganizationId ? "current" : undefined,
|
|
32
|
+
})),
|
|
33
|
+
});
|
|
34
|
+
if (prompts.isCancel(selected)) {
|
|
35
|
+
prompts.log.info("Switch cancelled.");
|
|
36
|
+
return undefined;
|
|
37
|
+
}
|
|
38
|
+
const target = organizations.find((o) => o.id === selected);
|
|
39
|
+
if (!target) {
|
|
40
|
+
throw new Error("Selected organization not found.");
|
|
41
|
+
}
|
|
42
|
+
// Re-mint the access token scoped to the chosen org so its `org_id` + `permissions` claims
|
|
43
|
+
// match. Flipping `activeOrganizationId` alone would leave the JWT scoped to the previous org
|
|
44
|
+
// and 403 every permissioned call. rotateActiveOrganization does the exchange and the write as
|
|
45
|
+
// one locked unit so it cannot double-spend the refresh token against a concurrent command, or
|
|
46
|
+
// overwrite that command's rotation with a stale snapshot.
|
|
47
|
+
const spinner = prompts.spinner();
|
|
48
|
+
spinner.start(`Switching to ${target.name}...`);
|
|
49
|
+
try {
|
|
50
|
+
await rotateActiveOrganization({
|
|
51
|
+
organizationId: target.id,
|
|
52
|
+
workosOrgId: target.workosOrgId,
|
|
53
|
+
organizations,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
spinner.stop("Switch failed.");
|
|
58
|
+
// The config is never half-written: rotateActiveOrganization persists the new pair and the new
|
|
59
|
+
// active org in one atomic replace, or not at all, so a failed switch cannot strand the user
|
|
60
|
+
// between orgs.
|
|
61
|
+
//
|
|
62
|
+
// It can still end the session outright. If the re-mint comes back with the refresh token
|
|
63
|
+
// rejected, that token is dead no matter which command found out, and the stored credentials
|
|
64
|
+
// go with it — the user has to log in again. Every other failure leaves the existing session
|
|
65
|
+
// intact.
|
|
66
|
+
throw error;
|
|
67
|
+
}
|
|
68
|
+
spinner.stop(`Switched to ${target.name} (${target.slug}).`);
|
|
69
|
+
return undefined;
|
|
70
|
+
}
|
|
71
|
+
//# sourceMappingURL=org-switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"org-switch.js","sourceRoot":"","sources":["../../../../src/cli/commands/identity-context/org-switch.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/identity-context/use.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,KAAK,iBAAiB,EAUvB,MAAM,gBAAgB,CAAC;AAExB,wBAAsB,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBxF"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import * as prompts from "@clack/prompts";
|
|
2
|
+
import { requiredArgument } from "../../arguments.js";
|
|
3
|
+
import { createAuthenticatedClient, findEnvironmentOrNull, getAuthenticatedOrganizationSlug, listEnvironments, readContext, resolveProject, setActiveEnvironment, writeContext, writeJson, } from "../../index.js";
|
|
4
|
+
export async function useEnvironment({ args, globals }) {
|
|
5
|
+
const environment = requiredArgument(args, 0, "environment");
|
|
6
|
+
const project = await resolveProject(globals);
|
|
7
|
+
const client = createAuthenticatedClient(globals);
|
|
8
|
+
const environments = await listEnvironments(client, project.id);
|
|
9
|
+
const match = findEnvironmentOrNull(environments, environment);
|
|
10
|
+
if (!match) {
|
|
11
|
+
throw new Error(`Environment "${environment}" not found in project "${project.slug}". Available: ${environments.map((e) => e.slug).join(", ") || "none"}`);
|
|
12
|
+
}
|
|
13
|
+
// Not fetched under `--json`: the organization slug only words the terminal line, and asking for
|
|
14
|
+
// it would put a second request behind a machine-readable command.
|
|
15
|
+
const organization = globals.json ? "" : await getAuthenticatedOrganizationSlug(client);
|
|
16
|
+
writeContext(setActiveEnvironment(readContext(), project, match.slug));
|
|
17
|
+
if (globals.json === true) {
|
|
18
|
+
writeJson({ project: { id: project.id, slug: project.slug }, environment: match });
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
prompts.log.info(`Active environment set to ${organization}/${project.slug}/${match.slug}`);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=use.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"use.js","sourceRoot":"","sources":["../../../../src/cli/commands/identity-context/use.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,OAAO,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAEL,yBAAyB,EACzB,qBAAqB,EACrB,gCAAgC,EAChC,gBAAgB,EAChB,WAAW,EACX,cAAc,EACd,oBAAoB,EACpB,YAAY,EACZ,SAAS,GACV,MAAM,gBAAgB,CAAC;AAExB,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EAAE,IAAI,EAAE,OAAO,EAAqB;IACvE,MAAM,WAAW,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC,EAAE,aAAa,CAAC,CAAC;IAC7D,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,yBAAyB,CAAC,OAAO,CAAC,CAAC;IAElD,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,qBAAqB,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;IAE/D,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CACb,gBAAgB,WAAW,2BAA2B,OAAO,CAAC,IAAI,iBAAiB,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAC1I,CAAC;IACJ,CAAC;IAED,iGAAiG;IACjG,mEAAmE;IACnE,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,gCAAgC,CAAC,MAAM,CAAC,CAAC;IACxF,YAAY,CAAC,oBAAoB,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACvE,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QAC1B,SAAS,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,CAAC;QACnF,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,6BAA6B,YAAY,IAAI,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;AAC9F,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/identity-context/whoami.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,iBAAiB,EAOvB,MAAM,gBAAgB,CAAC;AASxB,wBAAsB,MAAM,CAAC,EAAE,OAAO,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAkBxF"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as prompts from "@clack/prompts";
|
|
2
|
+
import { cloudInvocation, createApiClient, getApiUrl, readAuthConfig, refreshAccessToken, resolveCredential, } from "../../index.js";
|
|
3
|
+
export async function whoami({ globals }) {
|
|
4
|
+
const credential = resolveCredential(globals);
|
|
5
|
+
if (!credential) {
|
|
6
|
+
prompts.log.warn(`Not logged in. Run \`${cloudInvocation()} login\` to authenticate.`);
|
|
7
|
+
// The exit code is returned, not assigned to `process.exitCode`; see `defineCloudCommand`.
|
|
8
|
+
return 1;
|
|
9
|
+
}
|
|
10
|
+
// `/auth/me` echoes the credential's own resolved identity, so it reports what the credential is
|
|
11
|
+
// rather than what local config claims.
|
|
12
|
+
const me = await createWhoamiClient(credential).get("/auth/me");
|
|
13
|
+
if (credential.kind === "apiKey") {
|
|
14
|
+
reportApiKey(me);
|
|
15
|
+
return undefined;
|
|
16
|
+
}
|
|
17
|
+
reportSession(me, readAuthConfig());
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
// Not `createAuthenticatedClient`: whoami is the command you run to find out why the others are
|
|
21
|
+
// refusing, so a session with no active organization has to reach `/auth/me` rather than be turned
|
|
22
|
+
// away locally.
|
|
23
|
+
function createWhoamiClient(credential) {
|
|
24
|
+
if (credential.kind === "apiKey") {
|
|
25
|
+
return createApiClient({ baseUrl: getApiUrl(), apiKey: credential.token });
|
|
26
|
+
}
|
|
27
|
+
return createApiClient({
|
|
28
|
+
baseUrl: getApiUrl(),
|
|
29
|
+
token: credential.token,
|
|
30
|
+
organizationId: credential.organizationId ?? undefined,
|
|
31
|
+
// Only a token that came from the stored session has a refresh token behind it, and this is
|
|
32
|
+
// that token.
|
|
33
|
+
onUnauthorized: (failedToken) => refreshAccessToken(failedToken),
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
// An API key authenticates an organization, not a person, so there is no user to report and no
|
|
37
|
+
// local session to compare against.
|
|
38
|
+
function reportApiKey(me) {
|
|
39
|
+
prompts.log.info("Auth: API key");
|
|
40
|
+
if (me.dbOrganization?.slug) {
|
|
41
|
+
prompts.log.info(`Org: ${me.dbOrganization.slug}`);
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
prompts.log.warn("This API key does not resolve to an organization.");
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
function reportSession(me, authConfig) {
|
|
48
|
+
const email = me.dbUser?.email ?? "Unknown";
|
|
49
|
+
prompts.log.info(`Email: ${email}`);
|
|
50
|
+
if (authConfig?.user.name) {
|
|
51
|
+
prompts.log.info(`Name: ${authConfig.user.name}`);
|
|
52
|
+
}
|
|
53
|
+
// The org the token is actually scoped to, taken from the token's own `org_id` claim. We do NOT
|
|
54
|
+
// report the org recorded in local config: config can drift from the token, and reporting config
|
|
55
|
+
// state would hide that drift. That masking is exactly what made the CLO-124 split-state bug so
|
|
56
|
+
// hard to diagnose. Map the WorkOS org_id to a friendly name via the stored membership list;
|
|
57
|
+
// fall back to the raw id if it isn't in the list (e.g. a token scoped to an org added since
|
|
58
|
+
// last login).
|
|
59
|
+
if (me.org_id) {
|
|
60
|
+
const tokenOrg = authConfig?.organizations.find((o) => o.workosOrgId === me.org_id);
|
|
61
|
+
prompts.log.info(`Org: ${tokenOrg ? `${tokenOrg.name} (${me.org_id})` : me.org_id}`);
|
|
62
|
+
if (me.role) {
|
|
63
|
+
prompts.log.info(`Role: ${me.role}`);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
// The token carries no org scope — e.g. a device-flow token whose org-scoped re-mint failed
|
|
68
|
+
// during login (see CLO-124 fallback). Say so explicitly rather than printing Email/Name and
|
|
69
|
+
// falling silent.
|
|
70
|
+
prompts.log.warn(`Your session has no organization scope. Run \`${cloudInvocation()} org switch\` to scope it.`);
|
|
71
|
+
}
|
|
72
|
+
// Surface a drift between the token's org and the CLI's "active" org rather than silently
|
|
73
|
+
// trusting config. Post-CLO-124 this shouldn't happen via login/org switch, but a stale token or
|
|
74
|
+
// hand-edited config still could.
|
|
75
|
+
const activeOrg = authConfig?.organizations.find((o) => o.id === authConfig.activeOrganizationId);
|
|
76
|
+
if (activeOrg && me.org_id && activeOrg.workosOrgId !== me.org_id) {
|
|
77
|
+
prompts.log.warn(`Your token is scoped to a different organization than your active org (${activeOrg.name}). Run \`${cloudInvocation()} org switch\` to re-scope.`);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=whoami.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"whoami.js","sourceRoot":"","sources":["../../../../src/cli/commands/identity-context/whoami.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAuBtD,eAAO,MAAM,UAAU,UA6BtB,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,gBAAgB,EAK3C,CAAC"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { deploymentCommands } from "./deployment/index.js";
|
|
2
|
+
import { identityContextCommands } from "./identity-context/index.js";
|
|
3
|
+
import { PROJECT_CONFIG_COMMANDS } from "./project-config/index.js";
|
|
4
|
+
import { runtimeDataCommands } from "./runtime-data/index.js";
|
|
5
|
+
// Every hosted Cloud command, as one inventory.
|
|
6
|
+
//
|
|
7
|
+
// Both entry points read this. Neither holds a list of its own, so a command cannot exist under one
|
|
8
|
+
// name and not the other.
|
|
9
|
+
//
|
|
10
|
+
// Declaration only: nothing here reaches an implementation or `./lib/**`, and every command's `run`
|
|
11
|
+
// goes through `await import(...)`. The host `require`s this graph on every `vendure` invocation,
|
|
12
|
+
// including the ones with nothing to do with Cloud.
|
|
13
|
+
// `test/cli-published-surface.test.ts` walks it from `src/cli-plugin.ts` and holds that line.
|
|
14
|
+
// The order `vcloud --help` listed the commands in. Its group headings are kept below as comments:
|
|
15
|
+
// the host has no equivalent of Commander's help groups, so under `vendure` the order is all that
|
|
16
|
+
// survives of them, and the compatibility executable prints the headings itself.
|
|
17
|
+
//
|
|
18
|
+
// Each family already declares its own commands in this order. This list interleaves the families,
|
|
19
|
+
// because `vcloud` did not list them family by family — `init` opened the help and the account
|
|
20
|
+
// commands closed it.
|
|
21
|
+
export const HELP_ORDER = [
|
|
22
|
+
// Setup and context
|
|
23
|
+
"init",
|
|
24
|
+
"login",
|
|
25
|
+
"context",
|
|
26
|
+
"use",
|
|
27
|
+
// Projects and configuration
|
|
28
|
+
"project",
|
|
29
|
+
"environment",
|
|
30
|
+
"config",
|
|
31
|
+
"env",
|
|
32
|
+
"source",
|
|
33
|
+
// Deployments
|
|
34
|
+
"deploy",
|
|
35
|
+
"status",
|
|
36
|
+
"logs",
|
|
37
|
+
"deployment",
|
|
38
|
+
"rollback",
|
|
39
|
+
// Resources and data
|
|
40
|
+
"resource",
|
|
41
|
+
"backup",
|
|
42
|
+
"restore",
|
|
43
|
+
"tunnel",
|
|
44
|
+
"seed",
|
|
45
|
+
// Account and organization
|
|
46
|
+
"org",
|
|
47
|
+
"key",
|
|
48
|
+
"whoami",
|
|
49
|
+
"logout",
|
|
50
|
+
];
|
|
51
|
+
export const CLOUD_COMMANDS = inHelpOrder([
|
|
52
|
+
...PROJECT_CONFIG_COMMANDS,
|
|
53
|
+
...identityContextCommands,
|
|
54
|
+
...deploymentCommands,
|
|
55
|
+
...runtimeDataCommands,
|
|
56
|
+
]);
|
|
57
|
+
// A command `HELP_ORDER` does not name lands at the end rather than being dropped. A command
|
|
58
|
+
// missing from the CLI is a worse failure than one listed out of place, and where it belongs is a
|
|
59
|
+
// decision for whoever added it. `test/cli-plugin.test.ts` reports the omission.
|
|
60
|
+
function inHelpOrder(nodes) {
|
|
61
|
+
const rank = (node) => {
|
|
62
|
+
const index = HELP_ORDER.indexOf(node.name);
|
|
63
|
+
return index === -1 ? HELP_ORDER.length : index;
|
|
64
|
+
};
|
|
65
|
+
return [...nodes].sort((first, second) => rank(first) - rank(second));
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AACtE,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAE9D,gDAAgD;AAChD,EAAE;AACF,oGAAoG;AACpG,0BAA0B;AAC1B,EAAE;AACF,oGAAoG;AACpG,kGAAkG;AAClG,oDAAoD;AACpD,8FAA8F;AAE9F,mGAAmG;AACnG,kGAAkG;AAClG,iFAAiF;AACjF,EAAE;AACF,mGAAmG;AACnG,+FAA+F;AAC/F,sBAAsB;AACtB,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,oBAAoB;IACpB,MAAM;IACN,OAAO;IACP,SAAS;IACT,KAAK;IACL,6BAA6B;IAC7B,SAAS;IACT,aAAa;IACb,QAAQ;IACR,KAAK;IACL,QAAQ;IACR,cAAc;IACd,QAAQ;IACR,QAAQ;IACR,MAAM;IACN,YAAY;IACZ,UAAU;IACV,qBAAqB;IACrB,UAAU;IACV,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,MAAM;IACN,2BAA2B;IAC3B,KAAK;IACL,KAAK;IACL,QAAQ;IACR,QAAQ;CACT,CAAC;AAEF,MAAM,CAAC,MAAM,cAAc,GAAuB,WAAW,CAAC;IAC5D,GAAG,uBAAuB;IAC1B,GAAG,uBAAuB;IAC1B,GAAG,kBAAkB;IACrB,GAAG,mBAAmB;CACvB,CAAC,CAAC;AAEH,6FAA6F;AAC7F,kGAAkG;AAClG,iFAAiF;AACjF,SAAS,WAAW,CAAC,KAAkC;IACrD,MAAM,IAAI,GAAG,CAAC,IAAsB,EAAU,EAAE;QAC9C,MAAM,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IAClD,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;AACxE,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const BUILD_FIELDS: readonly ["nodeVersion", "packageManager", "buildCommand", "appDir", "systemPackages"];
|
|
2
|
+
export type BuildField = (typeof BUILD_FIELDS)[number];
|
|
3
|
+
export declare function isBuildField(value: string): value is BuildField;
|
|
4
|
+
//# sourceMappingURL=build-fields.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-fields.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/project-config/config/build-fields.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,wFAMf,CAAC;AAEX,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,UAAU,CAE/D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// The Source Build Settings overrides `config build clear` accepts.
|
|
2
|
+
//
|
|
3
|
+
// Its own module, and importing nothing, so both the command that validates against it and the
|
|
4
|
+
// module that declares the command tree can read it. The declaration module may not reach anything
|
|
5
|
+
// heavier — see `env/index.ts`.
|
|
6
|
+
export const BUILD_FIELDS = [
|
|
7
|
+
"nodeVersion",
|
|
8
|
+
"packageManager",
|
|
9
|
+
"buildCommand",
|
|
10
|
+
"appDir",
|
|
11
|
+
"systemPackages",
|
|
12
|
+
];
|
|
13
|
+
export function isBuildField(value) {
|
|
14
|
+
return BUILD_FIELDS.some((field) => field === value);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=build-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build-fields.js","sourceRoot":"","sources":["../../../../../src/cli/commands/project-config/config/build-fields.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,EAAE;AACF,+FAA+F;AAC/F,mGAAmG;AACnG,gCAAgC;AAChC,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,aAAa;IACb,gBAAgB;IAChB,cAAc;IACd,QAAQ;IACR,gBAAgB;CACR,CAAC;AAIX,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,KAAK,CAAC,CAAC;AACvD,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type GlobalOptions } from "../../../index.js";
|
|
2
|
+
export declare function buildSetAction(options: GlobalOptions, commandOptions: Record<string, unknown>): Promise<void>;
|
|
3
|
+
export declare function buildClearAction(field: string, options: GlobalOptions): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=build.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/project-config/config/build.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,aAAa,EAOnB,MAAM,mBAAmB,CAAC;AAI3B,wBAAsB,cAAc,CAClC,OAAO,EAAE,aAAa,EACtB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACtC,OAAO,CAAC,IAAI,CAAC,CAWf;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC,CAO3F"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import * as prompts from "@clack/prompts";
|
|
2
|
+
import { createAuthenticatedClient, getAuthenticatedOrganizationSlug, resolveEnvironment, sourceBuildSettingsSchema, writeJson, } from "../../../index.js";
|
|
3
|
+
import { assertNotEmpty, definedEntries, readInteger, readList, readString } from "../options.js";
|
|
4
|
+
import { BUILD_FIELDS, isBuildField } from "./build-fields.js";
|
|
5
|
+
export async function buildSetAction(options, commandOptions) {
|
|
6
|
+
await updateBuildSettings(options, definedEntries({
|
|
7
|
+
nodeVersion: readInteger(commandOptions.nodeVersion, "--node-version"),
|
|
8
|
+
packageManager: readString(commandOptions.packageManager),
|
|
9
|
+
buildCommand: readString(commandOptions.buildCommand),
|
|
10
|
+
appDir: readString(commandOptions.appDir),
|
|
11
|
+
systemPackages: readList(commandOptions.systemPackages),
|
|
12
|
+
}));
|
|
13
|
+
}
|
|
14
|
+
export async function buildClearAction(field, options) {
|
|
15
|
+
if (!isBuildField(field)) {
|
|
16
|
+
throw new Error(`Unknown build override "${field}". Valid: ${BUILD_FIELDS.join(", ")}.`);
|
|
17
|
+
}
|
|
18
|
+
// `null` is how one override is cleared back to automatic detection. It is dropped from the
|
|
19
|
+
// document before validation and sent as-is, which is what the control plane reads as a clear.
|
|
20
|
+
await updateBuildSettings(options, { [field]: null });
|
|
21
|
+
}
|
|
22
|
+
async function updateBuildSettings(options, patch) {
|
|
23
|
+
assertNotEmpty(patch, "Specify at least one build override.");
|
|
24
|
+
const { project, environment } = await resolveEnvironment(options);
|
|
25
|
+
const client = createAuthenticatedClient(options);
|
|
26
|
+
const current = await client.get(`/environments/${environment.id}/source-build-settings`);
|
|
27
|
+
const next = { ...current.settings, ...patch };
|
|
28
|
+
for (const [key, value] of Object.entries(next)) {
|
|
29
|
+
if (value === null)
|
|
30
|
+
delete next[key];
|
|
31
|
+
}
|
|
32
|
+
// Validated but not sent: the PATCH carries the sparse patch, and the control plane applies the
|
|
33
|
+
// schema's own transforms (the `appDir` trailing-slash strip, the `systemPackages` dedupe and
|
|
34
|
+
// sort). What this buys is the refusal happening before the round trip, with the schema's message.
|
|
35
|
+
sourceBuildSettingsSchema.parse(next);
|
|
36
|
+
const json = options.json === true;
|
|
37
|
+
const organization = json ? "" : await getAuthenticatedOrganizationSlug(client);
|
|
38
|
+
const updated = await client.patch(`/environments/${environment.id}/source-build-settings`, { expectedVersion: current.version, ...patch });
|
|
39
|
+
if (json) {
|
|
40
|
+
writeJson(updated);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
prompts.log.success(`Source Build Settings for ${organization}/${project.slug}/${environment.slug} updated to version ${updated.version}.`);
|
|
44
|
+
prompts.log.info("This change applies on the next source build.");
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"build.js","sourceRoot":"","sources":["../../../../../src/cli/commands/project-config/config/build.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { type EnvironmentDesiredState, type GlobalOptions } from "../../../index.js";
|
|
2
|
+
export type DesiredStateSection = "environment" | "server" | "worker" | "search";
|
|
3
|
+
export declare function updateDesiredState(options: GlobalOptions, section: DesiredStateSection, createState: (state: EnvironmentDesiredState) => EnvironmentDesiredState): Promise<void>;
|
|
4
|
+
//# sourceMappingURL=desired-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"desired-state.d.ts","sourceRoot":"","sources":["../../../../../src/cli/commands/project-config/config/desired-state.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,aAAa,EAMnB,MAAM,mBAAmB,CAAC;AAE3B,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAYjF,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,aAAa,EACtB,OAAO,EAAE,mBAAmB,EAC5B,WAAW,EAAE,CAAC,KAAK,EAAE,uBAAuB,KAAK,uBAAuB,GACvE,OAAO,CAAC,IAAI,CAAC,CAsBf"}
|