@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,147 @@
|
|
|
1
|
+
import * as prompts from "@clack/prompts";
|
|
2
|
+
import { ZodError } from "zod";
|
|
3
|
+
import { foreignCredentialRefusal, } from "./contract/foreign-credentials.js";
|
|
4
|
+
import { formatInlineUserFacingErrorReason } from "./error-output.js";
|
|
5
|
+
import { cloudInvocation, underCurrentInvocation } from "./invocation.js";
|
|
6
|
+
import { logger } from "./logger.js";
|
|
7
|
+
export class ApiError extends Error {
|
|
8
|
+
status;
|
|
9
|
+
body;
|
|
10
|
+
constructor(status, body) {
|
|
11
|
+
super(`API request failed with status ${status}`);
|
|
12
|
+
this.status = status;
|
|
13
|
+
this.body = body;
|
|
14
|
+
this.name = "ApiError";
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
// A credential another Vendure product issued was supplied as a Cloud API key. Thrown before the
|
|
18
|
+
// value is used, so it never reaches the control plane.
|
|
19
|
+
export class ForeignCredentialError extends Error {
|
|
20
|
+
kind;
|
|
21
|
+
constructor(kind) {
|
|
22
|
+
super(underCurrentInvocation(foreignCredentialRefusal(kind)));
|
|
23
|
+
this.kind = kind;
|
|
24
|
+
this.name = "ForeignCredentialError";
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Built when it is thrown rather than held as a constant, because it names the program the customer
|
|
28
|
+
// ran and the compatibility executable names itself after this module has already been loaded.
|
|
29
|
+
function sessionRefreshFailedMessage() {
|
|
30
|
+
return `Could not refresh the CLI session. Run \`${cloudInvocation()} login\` to re-authenticate.`;
|
|
31
|
+
}
|
|
32
|
+
export class SessionRefreshError extends Error {
|
|
33
|
+
constructor(message = sessionRefreshFailedMessage(), options) {
|
|
34
|
+
super(message, options);
|
|
35
|
+
this.name = "SessionRefreshError";
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// The authentication service rejected the stored refresh token outright — it was revoked, expired,
|
|
39
|
+
// or already consumed. Definitive: the stored credentials are worthless and only a fresh login
|
|
40
|
+
// recovers.
|
|
41
|
+
export class RefreshTokenRejectedError extends SessionRefreshError {
|
|
42
|
+
constructor(options) {
|
|
43
|
+
super(`Your CLI session has expired. Run \`${cloudInvocation()} login\` to re-authenticate.`, options);
|
|
44
|
+
this.name = "RefreshTokenRejectedError";
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
// The refresh could not be completed — network failure, timeout, or an unhealthy service.
|
|
48
|
+
// Transient: the stored refresh token may still be valid, so credentials must survive.
|
|
49
|
+
export class RefreshUnavailableError extends SessionRefreshError {
|
|
50
|
+
constructor(options) {
|
|
51
|
+
super(`Could not reach the authentication service to refresh your CLI session. Check your connection and try again — run \`${cloudInvocation()} login\` if it keeps failing.`, options);
|
|
52
|
+
this.name = "RefreshUnavailableError";
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
// The renewed session could not be stored. A refresh token is single-use, so a write that fails
|
|
56
|
+
// after the exchange leaves the consumed token as the machine's only credential; this is raised
|
|
57
|
+
// before the exchange instead, and nothing on disk was touched.
|
|
58
|
+
export class SessionUnstorableError extends SessionRefreshError {
|
|
59
|
+
directory;
|
|
60
|
+
constructor(directory, options) {
|
|
61
|
+
super(`Cannot save a renewed CLI session to ${directory}. Your stored login was left as it is, so nothing was lost. Check that the directory is writable and has free space, then run the command again.`, options);
|
|
62
|
+
this.directory = directory;
|
|
63
|
+
this.name = "SessionUnstorableError";
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
export function toSessionRefreshError(error) {
|
|
67
|
+
if (error instanceof SessionRefreshError) {
|
|
68
|
+
return error;
|
|
69
|
+
}
|
|
70
|
+
return new SessionRefreshError(sessionRefreshFailedMessage(), { cause: error });
|
|
71
|
+
}
|
|
72
|
+
// What the customer is told a failure was. Separated from writing it so the same classification
|
|
73
|
+
// serves the terminal and `--json`, and so it can be asserted without a process that exits.
|
|
74
|
+
export function formatCommandErrorMessage(error) {
|
|
75
|
+
if (error instanceof ApiError && error.status === 401) {
|
|
76
|
+
// Deliberately non-destructive: a 401 here already survived one refresh-and-retry, and the
|
|
77
|
+
// stored refresh token may still be valid (a revoked org membership, a mis-scoped token, or a
|
|
78
|
+
// bad `--token` all land here). Only an outright rejected refresh token clears credentials —
|
|
79
|
+
// see `refreshAccessToken`.
|
|
80
|
+
return `Session expired. Run \`${cloudInvocation()} login\` to re-authenticate.`;
|
|
81
|
+
}
|
|
82
|
+
if (error instanceof SessionRefreshError) {
|
|
83
|
+
return error.message;
|
|
84
|
+
}
|
|
85
|
+
if (error instanceof ApiError) {
|
|
86
|
+
return `API error (${error.status}): ${formatApiErrorBody(error.body)}`;
|
|
87
|
+
}
|
|
88
|
+
if (error instanceof ZodError) {
|
|
89
|
+
return error.issues.map((issue) => issue.message).join("\n");
|
|
90
|
+
}
|
|
91
|
+
if (error instanceof TypeError) {
|
|
92
|
+
return "Could not reach Vendure Cloud API. Check your connection or API URL.";
|
|
93
|
+
}
|
|
94
|
+
if (error instanceof Error) {
|
|
95
|
+
return error.message;
|
|
96
|
+
}
|
|
97
|
+
return "Unknown command error.";
|
|
98
|
+
}
|
|
99
|
+
// Reports the failure and answers with the process exit code it earns. It does not exit: the
|
|
100
|
+
// Vendure CLI host calls `process.exit` with whatever a command action returns, and a command that
|
|
101
|
+
// exited itself would take that decision away from the host mid-run.
|
|
102
|
+
export function reportCommandError(error, options = {}) {
|
|
103
|
+
logger.error({ error: error instanceof Error ? errorForLog(error) : error }, "Command failed");
|
|
104
|
+
const message = formatCommandErrorMessage(error);
|
|
105
|
+
if (options.json === true) {
|
|
106
|
+
process.stderr.write(`${JSON.stringify({ error: { message } })}\n`);
|
|
107
|
+
return 1;
|
|
108
|
+
}
|
|
109
|
+
prompts.log.error(message);
|
|
110
|
+
return 1;
|
|
111
|
+
}
|
|
112
|
+
function errorForLog(error) {
|
|
113
|
+
const cause = error.cause instanceof Error
|
|
114
|
+
? { message: error.cause.message, stack: error.cause.stack }
|
|
115
|
+
: error.cause;
|
|
116
|
+
return {
|
|
117
|
+
message: error.message,
|
|
118
|
+
stack: error.stack,
|
|
119
|
+
...(cause === undefined ? {} : { cause }),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
// NestJS wraps thrown HttpExceptions as `{ message, error, statusCode }`. Surface just the message
|
|
123
|
+
// (or the array of messages for ValidationPipe failures) so the operator sees the actionable text,
|
|
124
|
+
// not the envelope.
|
|
125
|
+
function formatApiErrorBody(body) {
|
|
126
|
+
if (typeof body === "string")
|
|
127
|
+
return formatApiErrorMessage(body);
|
|
128
|
+
if (body && typeof body === "object") {
|
|
129
|
+
const b = body;
|
|
130
|
+
if (Array.isArray(b.message)) {
|
|
131
|
+
return b.message
|
|
132
|
+
.map((message) => typeof message === "string"
|
|
133
|
+
? formatApiErrorMessage(message)
|
|
134
|
+
: formatApiErrorMessage(JSON.stringify(message) ?? String(message)))
|
|
135
|
+
.join("\n ");
|
|
136
|
+
}
|
|
137
|
+
if (typeof b.message === "string")
|
|
138
|
+
return formatApiErrorMessage(b.message);
|
|
139
|
+
if (typeof b.error === "string")
|
|
140
|
+
return formatApiErrorMessage(b.error);
|
|
141
|
+
}
|
|
142
|
+
return formatApiErrorMessage(JSON.stringify(body) ?? String(body));
|
|
143
|
+
}
|
|
144
|
+
function formatApiErrorMessage(message) {
|
|
145
|
+
return formatInlineUserFacingErrorReason(message);
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/cli/lib/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface FileLockOptions {
|
|
2
|
+
staleMs: number;
|
|
3
|
+
waitMs: number;
|
|
4
|
+
pollMs?: number;
|
|
5
|
+
onWait?: () => void;
|
|
6
|
+
waitNoticeMs?: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Best-effort advisory mutex between concurrent `vcloud` processes, built on
|
|
10
|
+
* the atomicity of `open(O_CREAT | O_EXCL)`.
|
|
11
|
+
*
|
|
12
|
+
* "Best effort" is the important part: if the lock cannot be taken (wait
|
|
13
|
+
* exhausted, read-only config dir, unsupported filesystem) `fn` still runs,
|
|
14
|
+
* unserialized. It removes the common race; it does not guarantee exclusion.
|
|
15
|
+
*
|
|
16
|
+
* `fn` therefore receives whether the lock was actually held. Anything whose
|
|
17
|
+
* consequences are unacceptable when two processes do it at once — in this
|
|
18
|
+
* codebase, discarding stored credentials — must be gated on that flag, and
|
|
19
|
+
* the caller needs a recovery path for the unlocked case. Ignoring the flag is
|
|
20
|
+
* how you get a mutex that reads as exclusive but silently isn't.
|
|
21
|
+
*/
|
|
22
|
+
export declare function withFileLock<T>(lockFile: string, options: FileLockOptions, fn: (held: boolean) => Promise<T>): Promise<T>;
|
|
23
|
+
//# sourceMappingURL=file-lock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-lock.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/file-lock.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAI9B,OAAO,EAAE,MAAM,CAAC;IAEhB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAIhB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAKD;;;;;;;;;;;;;GAaG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAClC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,eAAe,EACxB,EAAE,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,CAAC,CAAC,CASZ"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
import { randomBytes } from "node:crypto";
|
|
2
|
+
import { mkdirSync, readFileSync, statSync, unlinkSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { dirname } from "node:path";
|
|
4
|
+
import { logger } from "./logger.js";
|
|
5
|
+
import { sleep } from "./sleep.js";
|
|
6
|
+
const DEFAULT_POLL_MS = 50;
|
|
7
|
+
const DEFAULT_WAIT_NOTICE_MS = 2_000;
|
|
8
|
+
/**
|
|
9
|
+
* Best-effort advisory mutex between concurrent `vcloud` processes, built on
|
|
10
|
+
* the atomicity of `open(O_CREAT | O_EXCL)`.
|
|
11
|
+
*
|
|
12
|
+
* "Best effort" is the important part: if the lock cannot be taken (wait
|
|
13
|
+
* exhausted, read-only config dir, unsupported filesystem) `fn` still runs,
|
|
14
|
+
* unserialized. It removes the common race; it does not guarantee exclusion.
|
|
15
|
+
*
|
|
16
|
+
* `fn` therefore receives whether the lock was actually held. Anything whose
|
|
17
|
+
* consequences are unacceptable when two processes do it at once — in this
|
|
18
|
+
* codebase, discarding stored credentials — must be gated on that flag, and
|
|
19
|
+
* the caller needs a recovery path for the unlocked case. Ignoring the flag is
|
|
20
|
+
* how you get a mutex that reads as exclusive but silently isn't.
|
|
21
|
+
*/
|
|
22
|
+
export async function withFileLock(lockFile, options, fn) {
|
|
23
|
+
const owner = await acquireLock(lockFile, options);
|
|
24
|
+
try {
|
|
25
|
+
return await fn(owner !== null);
|
|
26
|
+
}
|
|
27
|
+
finally {
|
|
28
|
+
if (owner) {
|
|
29
|
+
releaseLock(lockFile, owner);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
async function acquireLock(lockFile, options) {
|
|
34
|
+
const owner = `${process.pid}-${randomBytes(8).toString("hex")}`;
|
|
35
|
+
const startedAt = Date.now();
|
|
36
|
+
const deadline = startedAt + options.waitMs;
|
|
37
|
+
const noticeAt = startedAt + (options.waitNoticeMs ?? DEFAULT_WAIT_NOTICE_MS);
|
|
38
|
+
let noticed = false;
|
|
39
|
+
// The guarded work writes into this directory anyway, but the lock is taken
|
|
40
|
+
// first — on a fresh machine it would otherwise ENOENT and run unlocked.
|
|
41
|
+
try {
|
|
42
|
+
mkdirSync(dirname(lockFile), { recursive: true });
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
logger.debug({ lockFile, error }, "Could not create lock directory; continuing unlocked");
|
|
46
|
+
return null;
|
|
47
|
+
}
|
|
48
|
+
while (true) {
|
|
49
|
+
try {
|
|
50
|
+
writeFileSync(lockFile, owner, { flag: "wx", mode: 0o600 });
|
|
51
|
+
return owner;
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
if (errorCode(error) !== "EEXIST") {
|
|
55
|
+
logger.debug({ lockFile, error }, "Could not create lock file; continuing unlocked");
|
|
56
|
+
return null;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
if (isStale(lockFile, options.staleMs)) {
|
|
60
|
+
logger.debug({ lockFile }, "Breaking stale lock");
|
|
61
|
+
removeLock(lockFile);
|
|
62
|
+
continue;
|
|
63
|
+
}
|
|
64
|
+
if (Date.now() >= deadline) {
|
|
65
|
+
logger.debug({ lockFile }, "Lock wait exhausted; continuing unlocked");
|
|
66
|
+
return null;
|
|
67
|
+
}
|
|
68
|
+
if (!noticed && options.onWait && Date.now() >= noticeAt) {
|
|
69
|
+
noticed = true;
|
|
70
|
+
notifyWaiting(options.onWait, lockFile);
|
|
71
|
+
}
|
|
72
|
+
await sleep(options.pollMs ?? DEFAULT_POLL_MS);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
// Progress reporting must never be what stops the guarded work from running —
|
|
76
|
+
// the sink is usually stderr, and a closed pipe raises EPIPE.
|
|
77
|
+
function notifyWaiting(onWait, lockFile) {
|
|
78
|
+
try {
|
|
79
|
+
onWait();
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
logger.debug({ lockFile, error }, "Wait notice failed");
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function releaseLock(lockFile, owner) {
|
|
86
|
+
// Only drop the lock while we still hold it: another process may have
|
|
87
|
+
// broken ours as stale and taken its own.
|
|
88
|
+
try {
|
|
89
|
+
if (readFileSync(lockFile, "utf-8") !== owner) {
|
|
90
|
+
return;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
removeLock(lockFile);
|
|
97
|
+
}
|
|
98
|
+
function isStale(lockFile, staleMs) {
|
|
99
|
+
try {
|
|
100
|
+
return statSync(lockFile).mtimeMs < Date.now() - staleMs;
|
|
101
|
+
}
|
|
102
|
+
catch {
|
|
103
|
+
// Gone between the failed create and this stat — treat as free and retry.
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function removeLock(lockFile) {
|
|
108
|
+
try {
|
|
109
|
+
unlinkSync(lockFile);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Another process already removed it.
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function errorCode(error) {
|
|
116
|
+
if (error instanceof Error && "code" in error && typeof error.code === "string") {
|
|
117
|
+
return error.code;
|
|
118
|
+
}
|
|
119
|
+
return undefined;
|
|
120
|
+
}
|
|
121
|
+
//# sourceMappingURL=file-lock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file-lock.js","sourceRoot":"","sources":["../../../src/cli/lib/file-lock.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare function formatDateTime(iso: string): string;
|
|
2
|
+
export declare function formatDuration(ms: number): string;
|
|
3
|
+
export declare function formatTable(headers: readonly string[], rows: readonly (readonly string[])[]): string;
|
|
4
|
+
export declare function writeJson(value: unknown): void;
|
|
5
|
+
export { formatBytes } from "./contract/wire-values.js";
|
|
6
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/format.ts"],"names":[],"mappings":"AAAA,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUlD;AAKD,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CASjD;AAMD,wBAAgB,WAAW,CACzB,OAAO,EAAE,SAAS,MAAM,EAAE,EAC1B,IAAI,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,GACnC,MAAM,CASR;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAE9C;AAKD,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export function formatDateTime(iso) {
|
|
2
|
+
const d = new Date(iso);
|
|
3
|
+
return d.toLocaleString("en-US", {
|
|
4
|
+
year: "numeric",
|
|
5
|
+
month: "2-digit",
|
|
6
|
+
day: "2-digit",
|
|
7
|
+
hour: "2-digit",
|
|
8
|
+
minute: "2-digit",
|
|
9
|
+
hour12: false,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
// How long something has been going, for a spinner a customer is watching. Rounded to the unit they
|
|
13
|
+
// would use for the number: "3 minutes" is the honest rendering of 182 seconds, and "182 seconds" is
|
|
14
|
+
// only more precise about a measurement nobody needs to that precision.
|
|
15
|
+
export function formatDuration(ms) {
|
|
16
|
+
const seconds = Math.max(1, Math.round(ms / 1000));
|
|
17
|
+
if (seconds < 90)
|
|
18
|
+
return plural(seconds, "second");
|
|
19
|
+
const minutes = Math.round(seconds / 60);
|
|
20
|
+
if (minutes < 60)
|
|
21
|
+
return plural(minutes, "minute");
|
|
22
|
+
const hours = Math.floor(minutes / 60);
|
|
23
|
+
const remainder = minutes % 60;
|
|
24
|
+
if (remainder === 0)
|
|
25
|
+
return plural(hours, "hour");
|
|
26
|
+
return `${plural(hours, "hour")} ${plural(remainder, "minute")}`;
|
|
27
|
+
}
|
|
28
|
+
function plural(count, noun) {
|
|
29
|
+
return `${count} ${noun}${count === 1 ? "" : "s"}`;
|
|
30
|
+
}
|
|
31
|
+
export function formatTable(headers, rows) {
|
|
32
|
+
const widths = headers.map((header, column) => Math.max(header.length, ...rows.map((row) => row[column]?.length ?? 0)));
|
|
33
|
+
return [headers, ...rows]
|
|
34
|
+
.map((row) => row.map((value, column) => value.padEnd(widths[column] ?? value.length)).join(" "))
|
|
35
|
+
.join("\n");
|
|
36
|
+
}
|
|
37
|
+
export function writeJson(value) {
|
|
38
|
+
process.stdout.write(`${JSON.stringify(value, null, 2)}\n`);
|
|
39
|
+
}
|
|
40
|
+
// Re-exported so a command reads every rendering helper from one module. The implementation is
|
|
41
|
+
// shared with the dashboard; see ./contract/README.md for why it is mirrored rather than
|
|
42
|
+
// imported.
|
|
43
|
+
export { formatBytes } from "./contract/wire-values.js";
|
|
44
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/cli/lib/format.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;IACxB,OAAO,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE;QAC/B,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,SAAS;QACf,MAAM,EAAE,SAAS;QACjB,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;AACL,CAAC;AAED,oGAAoG;AACpG,qGAAqG;AACrG,wEAAwE;AACxE,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC;IACnD,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACzC,IAAI,OAAO,GAAG,EAAE;QAAE,OAAO,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,OAAO,GAAG,EAAE,CAAC;IAC/B,IAAI,SAAS,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAClD,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAAC;AACnE,CAAC;AAED,SAAS,MAAM,CAAC,KAAa,EAAE,IAAY;IACzC,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,OAA0B,EAC1B,IAAoC;IAEpC,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,CAC5C,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC,CAAC,CAAC,CACxE,CAAC;IACF,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC;SACtB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CACX,GAAG,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CACpF;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,KAAc;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,+FAA+F;AAC/F,yFAAyF;AACzF,YAAY;AACZ,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export interface Identifiable {
|
|
2
|
+
id: string;
|
|
3
|
+
}
|
|
4
|
+
export declare function isIdPrefix(identifier: string): boolean;
|
|
5
|
+
export declare function resolveUniqueIdPrefix(identifier: string, candidates: readonly Identifiable[], resourceName: string): string;
|
|
6
|
+
//# sourceMappingURL=id-prefix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-prefix.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/id-prefix.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAMtD;AAED,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,SAAS,YAAY,EAAE,EACnC,YAAY,EAAE,MAAM,GACnB,MAAM,CAeR"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { DEPLOYMENT_ID_PREFIX_MAX_LENGTH, DEPLOYMENT_ID_PREFIX_MIN_LENGTH, DEPLOYMENT_ID_PREFIX_PATTERN, } from "./contract/wire-values.js";
|
|
2
|
+
export function isIdPrefix(identifier) {
|
|
3
|
+
return (identifier.length >= DEPLOYMENT_ID_PREFIX_MIN_LENGTH &&
|
|
4
|
+
identifier.length <= DEPLOYMENT_ID_PREFIX_MAX_LENGTH &&
|
|
5
|
+
DEPLOYMENT_ID_PREFIX_PATTERN.test(identifier));
|
|
6
|
+
}
|
|
7
|
+
export function resolveUniqueIdPrefix(identifier, candidates, resourceName) {
|
|
8
|
+
const normalized = identifier.toLowerCase();
|
|
9
|
+
const [match, secondMatch] = candidates.filter((candidate) => candidate.id.toLowerCase().startsWith(normalized));
|
|
10
|
+
if (!match) {
|
|
11
|
+
throw new Error(`No ${resourceName} found matching ID prefix "${identifier}".`);
|
|
12
|
+
}
|
|
13
|
+
if (secondMatch) {
|
|
14
|
+
throw new Error(`ID prefix "${identifier}" is ambiguous for ${resourceName}. Pass more characters or the full ID.`);
|
|
15
|
+
}
|
|
16
|
+
return match.id;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=id-prefix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-prefix.js","sourceRoot":"","sources":["../../../src/cli/lib/id-prefix.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,+BAA+B,EAC/B,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAMnC,MAAM,UAAU,UAAU,CAAC,UAAkB;IAC3C,OAAO,CACL,UAAU,CAAC,MAAM,IAAI,+BAA+B;QACpD,UAAU,CAAC,MAAM,IAAI,+BAA+B;QACpD,4BAA4B,CAAC,IAAI,CAAC,UAAU,CAAC,CAC9C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,UAAkB,EAClB,UAAmC,EACnC,YAAoB;IAEpB,MAAM,UAAU,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAC3D,SAAS,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAClD,CAAC;IAEF,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,MAAM,YAAY,8BAA8B,UAAU,IAAI,CAAC,CAAC;IAClF,CAAC;IACD,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,cAAc,UAAU,sBAAsB,YAAY,wCAAwC,CACnG,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC,EAAE,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export declare const CLOUD_INVOCATIONS: readonly ["vendure", "vcloud"];
|
|
2
|
+
export type CloudInvocation = (typeof CLOUD_INVOCATIONS)[number];
|
|
3
|
+
export declare function setCloudInvocation(name: CloudInvocation): void;
|
|
4
|
+
export declare function cloudInvocation(): CloudInvocation;
|
|
5
|
+
export declare function underCurrentInvocation(message: string): string;
|
|
6
|
+
//# sourceMappingURL=invocation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/invocation.ts"],"names":[],"mappings":"AAcA,eAAO,MAAM,iBAAiB,gCAAiC,CAAC;AAEhE,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,iBAAiB,CAAC,CAAC,MAAM,CAAC,CAAC;AAIjE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,eAAe,GAAG,IAAI,CAE9D;AAED,wBAAgB,eAAe,IAAI,eAAe,CAEjD;AAYD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE9D"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
// How a message spells a command the customer would type next.
|
|
2
|
+
//
|
|
3
|
+
// One implementation reaches the customer two ways: `vendure <command>` through the
|
|
4
|
+
// `@vendure/cloud` CLI plugin, and `vcloud <command>` through the compatibility executable. Around
|
|
5
|
+
// seventy messages end in one of these, and a hint that names the wrong program sends the customer
|
|
6
|
+
// to one they are not running.
|
|
7
|
+
//
|
|
8
|
+
// The name belongs to the process rather than to a command. Which entry point is running is fixed
|
|
9
|
+
// before the first command starts and cannot differ between two commands in the same process, so it
|
|
10
|
+
// is held here instead of travelling through `CloudCommandInput` — which would mean threading a
|
|
11
|
+
// program name through every error constructor and resolver that builds one of these sentences.
|
|
12
|
+
// `vendure` is the default; the compatibility executable names itself at startup. CLO-638 removes
|
|
13
|
+
// that executable and the reason this is a variable at all.
|
|
14
|
+
export const CLOUD_INVOCATIONS = ["vendure", "vcloud"];
|
|
15
|
+
let invocation = "vendure";
|
|
16
|
+
export function setCloudInvocation(name) {
|
|
17
|
+
invocation = name;
|
|
18
|
+
}
|
|
19
|
+
export function cloudInvocation() {
|
|
20
|
+
return invocation;
|
|
21
|
+
}
|
|
22
|
+
// `vcloud` as a whole word, wherever it appears.
|
|
23
|
+
//
|
|
24
|
+
// Anchoring on a following space would leave "run `vcloud`." untouched, and this exists precisely
|
|
25
|
+
// for sentences nobody here writes: they come from `./contract/`, which is compared character for
|
|
26
|
+
// character against `@vendure-cloud/api-types` (`test/cli-contract-drift.test.ts`) because the
|
|
27
|
+
// control plane emits the same words. The contract cannot be reworded for this caller, so the name
|
|
28
|
+
// is substituted as the CLI renders it, and a substitution that matched only some spellings would
|
|
29
|
+
// leave a customer under `vendure` a hint naming a program they do not have.
|
|
30
|
+
const PROGRAM_NAME = /\bvcloud\b/g;
|
|
31
|
+
export function underCurrentInvocation(message) {
|
|
32
|
+
return message.replace(PROGRAM_NAME, invocation);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=invocation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"invocation.js","sourceRoot":"","sources":["../../../src/cli/lib/invocation.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,EAAE;AACF,oFAAoF;AACpF,mGAAmG;AACnG,mGAAmG;AACnG,+BAA+B;AAC/B,EAAE;AACF,kGAAkG;AAClG,oGAAoG;AACpG,gGAAgG;AAChG,gGAAgG;AAChG,kGAAkG;AAClG,4DAA4D;AAE5D,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAU,CAAC;AAIhE,IAAI,UAAU,GAAoB,SAAS,CAAC;AAE5C,MAAM,UAAU,kBAAkB,CAAC,IAAqB;IACtD,UAAU,GAAG,IAAI,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,eAAe;IAC7B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,iDAAiD;AACjD,EAAE;AACF,kGAAkG;AAClG,kGAAkG;AAClG,+FAA+F;AAC/F,mGAAmG;AACnG,kGAAkG;AAClG,6EAA6E;AAC7E,MAAM,YAAY,GAAG,aAAa,CAAC;AAEnC,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,OAAO,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { ApiClient } from "./api-client.js";
|
|
2
|
+
import { type LogEntry } from "./contract/logs.js";
|
|
3
|
+
export declare function printLogLine(entry: Pick<LogEntry, "timestamp" | "message">): void;
|
|
4
|
+
export declare function consumeLogStream(client: ApiClient, path: string, options?: {
|
|
5
|
+
expectTerminalFrame?: boolean;
|
|
6
|
+
}): Promise<boolean>;
|
|
7
|
+
//# sourceMappingURL=log-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log-stream.d.ts","sourceRoot":"","sources":["../../../src/cli/lib/log-stream.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,KAAK,QAAQ,EAKd,MAAM,oBAAoB,CAAC;AA0B5B,wBAAgB,YAAY,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,SAAS,CAAC,GAAG,IAAI,CAGjF;AAQD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,mBAAmB,CAAC,EAAE,OAAO,CAAA;CAAO,GAC9C,OAAO,CAAC,OAAO,CAAC,CAgFlB"}
|