@synteq/cli 0.1.6 → 1.1.1
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/bin/run.js +61 -2
- package/dist/api/client.d.ts +363 -5
- package/dist/api/client.js +559 -44
- package/dist/api/client.js.map +1 -1
- package/dist/api/factory.d.ts +3 -0
- package/dist/api/factory.js +6 -3
- package/dist/api/factory.js.map +1 -1
- package/dist/api/types.d.ts +896 -4
- package/dist/apps-support/deploy.d.ts +197 -0
- package/dist/apps-support/deploy.js +639 -0
- package/dist/apps-support/deploy.js.map +1 -0
- package/dist/apps-support/dotenv.d.ts +67 -0
- package/dist/apps-support/dotenv.js +136 -0
- package/dist/apps-support/dotenv.js.map +1 -0
- package/dist/apps-support/env-rollout.d.ts +18 -0
- package/dist/apps-support/env-rollout.js +52 -0
- package/dist/apps-support/env-rollout.js.map +1 -0
- package/dist/apps-support/git.d.ts +14 -0
- package/dist/apps-support/git.js +25 -0
- package/dist/apps-support/git.js.map +1 -0
- package/dist/apps-support/link.d.ts +25 -0
- package/dist/apps-support/link.js +39 -0
- package/dist/apps-support/link.js.map +1 -0
- package/dist/apps-support/log-stream.d.ts +25 -0
- package/dist/apps-support/log-stream.js +85 -0
- package/dist/apps-support/log-stream.js.map +1 -0
- package/dist/apps-support/paid-app.d.ts +64 -0
- package/dist/apps-support/paid-app.js +195 -0
- package/dist/apps-support/paid-app.js.map +1 -0
- package/dist/apps-support/plans.d.ts +44 -0
- package/dist/apps-support/plans.js +43 -0
- package/dist/apps-support/plans.js.map +1 -0
- package/dist/apps-support/resolve.d.ts +10 -0
- package/dist/apps-support/resolve.js +53 -0
- package/dist/apps-support/resolve.js.map +1 -0
- package/dist/apps-support/time.d.ts +20 -0
- package/dist/apps-support/time.js +82 -0
- package/dist/apps-support/time.js.map +1 -0
- package/dist/auth/scope.d.ts +19 -0
- package/dist/auth/scope.js +69 -0
- package/dist/auth/scope.js.map +1 -0
- package/dist/auth/tokens.d.ts +3 -0
- package/dist/auth/tokens.js +6 -4
- package/dist/auth/tokens.js.map +1 -1
- package/dist/base/command.d.ts +36 -1
- package/dist/base/command.js +132 -0
- package/dist/base/command.js.map +1 -1
- package/dist/commands/account/index.d.ts +1 -0
- package/dist/commands/account/index.js +1 -0
- package/dist/commands/account/index.js.map +1 -1
- package/dist/commands/account/show.d.ts +1 -0
- package/dist/commands/account/show.js +1 -0
- package/dist/commands/account/show.js.map +1 -1
- package/dist/commands/agents.d.ts +10 -0
- package/dist/commands/agents.js +53 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/api.d.ts +1 -1
- package/dist/commands/api.js +6 -4
- package/dist/commands/api.js.map +1 -1
- package/dist/commands/app/deployment/list.d.ts +14 -0
- package/dist/commands/app/deployment/list.js +45 -0
- package/dist/commands/app/deployment/list.js.map +1 -0
- package/dist/commands/app/deployment/rollback.d.ts +18 -0
- package/dist/commands/app/deployment/rollback.js +57 -0
- package/dist/commands/app/deployment/rollback.js.map +1 -0
- package/dist/commands/app/deployment/show.d.ts +26 -0
- package/dist/commands/app/deployment/show.js +98 -0
- package/dist/commands/app/deployment/show.js.map +1 -0
- package/dist/commands/app/domain/add.d.ts +17 -0
- package/dist/commands/app/domain/add.js +59 -0
- package/dist/commands/app/domain/add.js.map +1 -0
- package/dist/commands/app/domain/list.d.ts +14 -0
- package/dist/commands/app/domain/list.js +42 -0
- package/dist/commands/app/domain/list.js.map +1 -0
- package/dist/commands/app/domain/remove.d.ts +16 -0
- package/dist/commands/app/domain/remove.js +51 -0
- package/dist/commands/app/domain/remove.js.map +1 -0
- package/dist/commands/app/domain/verify.d.ts +15 -0
- package/dist/commands/app/domain/verify.js +39 -0
- package/dist/commands/app/domain/verify.js.map +1 -0
- package/dist/commands/app/env/add.d.ts +22 -0
- package/dist/commands/app/env/add.js +103 -0
- package/dist/commands/app/env/add.js.map +1 -0
- package/dist/commands/app/env/list.d.ts +17 -0
- package/dist/commands/app/env/list.js +40 -0
- package/dist/commands/app/env/list.js.map +1 -0
- package/dist/commands/app/env/reveal.d.ts +17 -0
- package/dist/commands/app/env/reveal.js +40 -0
- package/dist/commands/app/env/reveal.js.map +1 -0
- package/dist/commands/app/env/rm.d.ts +16 -0
- package/dist/commands/app/env/rm.js +48 -0
- package/dist/commands/app/env/rm.js.map +1 -0
- package/dist/commands/app/health.d.ts +14 -0
- package/dist/commands/app/health.js +40 -0
- package/dist/commands/app/health.js.map +1 -0
- package/dist/commands/app/index.d.ts +6 -0
- package/dist/commands/app/index.js +7 -0
- package/dist/commands/app/index.js.map +1 -0
- package/dist/commands/app/link.d.ts +22 -0
- package/dist/commands/app/link.js +31 -0
- package/dist/commands/app/link.js.map +1 -0
- package/dist/commands/app/logs.d.ts +25 -0
- package/dist/commands/app/logs.js +121 -0
- package/dist/commands/app/logs.js.map +1 -0
- package/dist/commands/app/metrics.d.ts +21 -0
- package/dist/commands/app/metrics.js +123 -0
- package/dist/commands/app/metrics.js.map +1 -0
- package/dist/commands/app/plan/change.d.ts +18 -0
- package/dist/commands/app/plan/change.js +79 -0
- package/dist/commands/app/plan/change.js.map +1 -0
- package/dist/commands/app/plan/show.d.ts +14 -0
- package/dist/commands/app/plan/show.js +40 -0
- package/dist/commands/app/plan/show.js.map +1 -0
- package/dist/commands/app/settings/set.d.ts +25 -0
- package/dist/commands/app/settings/set.js +96 -0
- package/dist/commands/app/settings/set.js.map +1 -0
- package/dist/commands/app/settings/show.d.ts +14 -0
- package/dist/commands/app/settings/show.js +48 -0
- package/dist/commands/app/settings/show.js.map +1 -0
- package/dist/commands/app/unlink.d.ts +8 -0
- package/dist/commands/app/unlink.js +25 -0
- package/dist/commands/app/unlink.js.map +1 -0
- package/dist/commands/apps/create.d.ts +26 -0
- package/dist/commands/apps/create.js +91 -0
- package/dist/commands/apps/create.js.map +1 -0
- package/dist/commands/apps/list.d.ts +16 -0
- package/dist/commands/apps/list.js +54 -0
- package/dist/commands/apps/list.js.map +1 -0
- package/dist/commands/baremetal/activity.d.ts +14 -0
- package/dist/commands/baremetal/activity.js +53 -0
- package/dist/commands/baremetal/activity.js.map +1 -0
- package/dist/commands/baremetal/bandwidth.d.ts +10 -0
- package/dist/commands/baremetal/bandwidth.js +86 -0
- package/dist/commands/baremetal/bandwidth.js.map +1 -0
- package/dist/commands/baremetal/console.d.ts +20 -0
- package/dist/commands/baremetal/console.js +72 -0
- package/dist/commands/baremetal/console.js.map +1 -0
- package/dist/commands/baremetal/details.d.ts +11 -0
- package/dist/commands/baremetal/details.js +116 -0
- package/dist/commands/baremetal/details.js.map +1 -0
- package/dist/commands/baremetal/index.d.ts +5 -0
- package/dist/commands/baremetal/index.js +6 -0
- package/dist/commands/baremetal/index.js.map +1 -0
- package/dist/commands/baremetal/install-password.d.ts +14 -0
- package/dist/commands/baremetal/install-password.js +80 -0
- package/dist/commands/baremetal/install-password.js.map +1 -0
- package/dist/commands/baremetal/list.d.ts +11 -0
- package/dist/commands/baremetal/list.js +59 -0
- package/dist/commands/baremetal/list.js.map +1 -0
- package/dist/commands/baremetal/order.d.ts +34 -0
- package/dist/commands/baremetal/order.js +394 -0
- package/dist/commands/baremetal/order.js.map +1 -0
- package/dist/commands/baremetal/power.d.ts +18 -0
- package/dist/commands/baremetal/power.js +168 -0
- package/dist/commands/baremetal/power.js.map +1 -0
- package/dist/commands/baremetal/reinstall.d.ts +21 -0
- package/dist/commands/baremetal/reinstall.js +168 -0
- package/dist/commands/baremetal/reinstall.js.map +1 -0
- package/dist/commands/catalog.d.ts +1 -0
- package/dist/commands/catalog.js +5 -0
- package/dist/commands/catalog.js.map +1 -1
- package/dist/commands/config/index.d.ts +1 -0
- package/dist/commands/config/index.js +1 -0
- package/dist/commands/config/index.js.map +1 -1
- package/dist/commands/config/profile/add.d.ts +11 -0
- package/dist/commands/config/profile/add.js +51 -0
- package/dist/commands/config/profile/add.js.map +1 -0
- package/dist/commands/config/profile/list.d.ts +7 -0
- package/dist/commands/config/profile/list.js +29 -0
- package/dist/commands/config/profile/list.js.map +1 -0
- package/dist/commands/config/profile/remove.d.ts +11 -0
- package/dist/commands/config/profile/remove.js +35 -0
- package/dist/commands/config/profile/remove.js.map +1 -0
- package/dist/commands/config/profile/use.d.ts +10 -0
- package/dist/commands/config/profile/use.js +44 -0
- package/dist/commands/config/profile/use.js.map +1 -0
- package/dist/commands/config/set-api-url.d.ts +1 -0
- package/dist/commands/config/set-api-url.js +1 -0
- package/dist/commands/config/set-api-url.js.map +1 -1
- package/dist/commands/config/show.d.ts +1 -0
- package/dist/commands/config/show.js +5 -1
- package/dist/commands/config/show.js.map +1 -1
- package/dist/commands/credits/add.d.ts +1 -0
- package/dist/commands/credits/add.js +3 -2
- package/dist/commands/credits/add.js.map +1 -1
- package/dist/commands/credits/index.d.ts +1 -0
- package/dist/commands/credits/index.js +6 -1
- package/dist/commands/credits/index.js.map +1 -1
- package/dist/commands/credits/list.d.ts +1 -0
- package/dist/commands/credits/list.js +1 -0
- package/dist/commands/credits/list.js.map +1 -1
- package/dist/commands/deploy.d.ts +51 -0
- package/dist/commands/deploy.js +515 -0
- package/dist/commands/deploy.js.map +1 -0
- package/dist/commands/function/create.d.ts +29 -0
- package/dist/commands/function/create.js +113 -0
- package/dist/commands/function/create.js.map +1 -0
- package/dist/commands/function/credits/add.d.ts +29 -0
- package/dist/commands/function/credits/add.js +209 -0
- package/dist/commands/function/credits/add.js.map +1 -0
- package/dist/commands/function/credits/auto-reload.d.ts +27 -0
- package/dist/commands/function/credits/auto-reload.js +107 -0
- package/dist/commands/function/credits/auto-reload.js.map +1 -0
- package/dist/commands/function/credits/index.d.ts +22 -0
- package/dist/commands/function/credits/index.js +80 -0
- package/dist/commands/function/credits/index.js.map +1 -0
- package/dist/commands/function/cron/add.d.ts +19 -0
- package/dist/commands/function/cron/add.js +74 -0
- package/dist/commands/function/cron/add.js.map +1 -0
- package/dist/commands/function/cron/list.d.ts +12 -0
- package/dist/commands/function/cron/list.js +55 -0
- package/dist/commands/function/cron/list.js.map +1 -0
- package/dist/commands/function/cron/rm.d.ts +17 -0
- package/dist/commands/function/cron/rm.js +73 -0
- package/dist/commands/function/cron/rm.js.map +1 -0
- package/dist/commands/function/cron/run.d.ts +16 -0
- package/dist/commands/function/cron/run.js +59 -0
- package/dist/commands/function/cron/run.js.map +1 -0
- package/dist/commands/function/cron/update.d.ts +21 -0
- package/dist/commands/function/cron/update.js +87 -0
- package/dist/commands/function/cron/update.js.map +1 -0
- package/dist/commands/function/delete.d.ts +23 -0
- package/dist/commands/function/delete.js +90 -0
- package/dist/commands/function/delete.js.map +1 -0
- package/dist/commands/function/deploy.d.ts +64 -0
- package/dist/commands/function/deploy.js +608 -0
- package/dist/commands/function/deploy.js.map +1 -0
- package/dist/commands/function/env/list.d.ts +12 -0
- package/dist/commands/function/env/list.js +46 -0
- package/dist/commands/function/env/list.js.map +1 -0
- package/dist/commands/function/env/reveal.d.ts +21 -0
- package/dist/commands/function/env/reveal.js +54 -0
- package/dist/commands/function/env/reveal.js.map +1 -0
- package/dist/commands/function/env/rm.d.ts +17 -0
- package/dist/commands/function/env/rm.js +62 -0
- package/dist/commands/function/env/rm.js.map +1 -0
- package/dist/commands/function/env/set.d.ts +28 -0
- package/dist/commands/function/env/set.js +124 -0
- package/dist/commands/function/env/set.js.map +1 -0
- package/dist/commands/function/index.d.ts +14 -0
- package/dist/commands/function/index.js +11 -0
- package/dist/commands/function/index.js.map +1 -0
- package/dist/commands/function/init.d.ts +47 -0
- package/dist/commands/function/init.js +269 -0
- package/dist/commands/function/init.js.map +1 -0
- package/dist/commands/function/invoke.d.ts +29 -0
- package/dist/commands/function/invoke.js +138 -0
- package/dist/commands/function/invoke.js.map +1 -0
- package/dist/commands/function/link.d.ts +23 -0
- package/dist/commands/function/link.js +80 -0
- package/dist/commands/function/link.js.map +1 -0
- package/dist/commands/function/list.d.ts +16 -0
- package/dist/commands/function/list.js +55 -0
- package/dist/commands/function/list.js.map +1 -0
- package/dist/commands/function/logs.d.ts +29 -0
- package/dist/commands/function/logs.js +171 -0
- package/dist/commands/function/logs.js.map +1 -0
- package/dist/commands/function/pause.d.ts +19 -0
- package/dist/commands/function/pause.js +50 -0
- package/dist/commands/function/pause.js.map +1 -0
- package/dist/commands/function/releases.d.ts +15 -0
- package/dist/commands/function/releases.js +62 -0
- package/dist/commands/function/releases.js.map +1 -0
- package/dist/commands/function/resume.d.ts +16 -0
- package/dist/commands/function/resume.js +47 -0
- package/dist/commands/function/resume.js.map +1 -0
- package/dist/commands/function/rollback.d.ts +18 -0
- package/dist/commands/function/rollback.js +69 -0
- package/dist/commands/function/rollback.js.map +1 -0
- package/dist/commands/function/settings/set.d.ts +23 -0
- package/dist/commands/function/settings/set.js +119 -0
- package/dist/commands/function/settings/set.js.map +1 -0
- package/dist/commands/function/show.d.ts +15 -0
- package/dist/commands/function/show.js +80 -0
- package/dist/commands/function/show.js.map +1 -0
- package/dist/commands/function/unlink.d.ts +9 -0
- package/dist/commands/function/unlink.js +34 -0
- package/dist/commands/function/unlink.js.map +1 -0
- package/dist/commands/gpu/activity.d.ts +1 -0
- package/dist/commands/gpu/activity.js +1 -0
- package/dist/commands/gpu/activity.js.map +1 -1
- package/dist/commands/gpu/bandwidth.d.ts +1 -0
- package/dist/commands/gpu/bandwidth.js +1 -0
- package/dist/commands/gpu/bandwidth.js.map +1 -1
- package/dist/commands/gpu/boot-order.d.ts +1 -0
- package/dist/commands/gpu/boot-order.js +1 -0
- package/dist/commands/gpu/boot-order.js.map +1 -1
- package/dist/commands/gpu/console.d.ts +1 -0
- package/dist/commands/gpu/console.js +1 -0
- package/dist/commands/gpu/console.js.map +1 -1
- package/dist/commands/gpu/details.d.ts +1 -0
- package/dist/commands/gpu/details.js +1 -0
- package/dist/commands/gpu/details.js.map +1 -1
- package/dist/commands/gpu/index.d.ts +1 -0
- package/dist/commands/gpu/index.js +1 -0
- package/dist/commands/gpu/index.js.map +1 -1
- package/dist/commands/gpu/ip/add.d.ts +1 -0
- package/dist/commands/gpu/ip/add.js +1 -0
- package/dist/commands/gpu/ip/add.js.map +1 -1
- package/dist/commands/gpu/ip/list.d.ts +1 -0
- package/dist/commands/gpu/ip/list.js +1 -0
- package/dist/commands/gpu/ip/list.js.map +1 -1
- package/dist/commands/gpu/list.d.ts +1 -0
- package/dist/commands/gpu/list.js +1 -0
- package/dist/commands/gpu/list.js.map +1 -1
- package/dist/commands/gpu/order.d.ts +1 -0
- package/dist/commands/gpu/order.js +1 -0
- package/dist/commands/gpu/order.js.map +1 -1
- package/dist/commands/gpu/power.d.ts +1 -0
- package/dist/commands/gpu/power.js +1 -0
- package/dist/commands/gpu/power.js.map +1 -1
- package/dist/commands/gpu/reinstall.d.ts +1 -0
- package/dist/commands/gpu/reinstall.js +1 -0
- package/dist/commands/gpu/reinstall.js.map +1 -1
- package/dist/commands/gpu/resize.d.ts +1 -0
- package/dist/commands/gpu/resize.js +1 -0
- package/dist/commands/gpu/resize.js.map +1 -1
- package/dist/commands/gpu/stats.d.ts +1 -0
- package/dist/commands/gpu/stats.js +1 -0
- package/dist/commands/gpu/stats.js.map +1 -1
- package/dist/commands/help.d.ts +2 -0
- package/dist/commands/help.js +5 -0
- package/dist/commands/help.js.map +1 -1
- package/dist/commands/instant-metal/activity.d.ts +1 -0
- package/dist/commands/instant-metal/activity.js +1 -0
- package/dist/commands/instant-metal/activity.js.map +1 -1
- package/dist/commands/instant-metal/bandwidth.d.ts +1 -0
- package/dist/commands/instant-metal/bandwidth.js +1 -0
- package/dist/commands/instant-metal/bandwidth.js.map +1 -1
- package/dist/commands/instant-metal/boot-order.d.ts +1 -0
- package/dist/commands/instant-metal/boot-order.js +1 -0
- package/dist/commands/instant-metal/boot-order.js.map +1 -1
- package/dist/commands/instant-metal/console.d.ts +1 -0
- package/dist/commands/instant-metal/console.js +1 -0
- package/dist/commands/instant-metal/console.js.map +1 -1
- package/dist/commands/instant-metal/details.d.ts +1 -0
- package/dist/commands/instant-metal/details.js +1 -0
- package/dist/commands/instant-metal/details.js.map +1 -1
- package/dist/commands/instant-metal/index.d.ts +1 -0
- package/dist/commands/instant-metal/index.js +1 -0
- package/dist/commands/instant-metal/index.js.map +1 -1
- package/dist/commands/instant-metal/ip/add.d.ts +1 -0
- package/dist/commands/instant-metal/ip/add.js +1 -0
- package/dist/commands/instant-metal/ip/add.js.map +1 -1
- package/dist/commands/instant-metal/ip/list.d.ts +1 -0
- package/dist/commands/instant-metal/ip/list.js +1 -0
- package/dist/commands/instant-metal/ip/list.js.map +1 -1
- package/dist/commands/instant-metal/list.d.ts +1 -0
- package/dist/commands/instant-metal/list.js +1 -0
- package/dist/commands/instant-metal/list.js.map +1 -1
- package/dist/commands/instant-metal/order.d.ts +1 -0
- package/dist/commands/instant-metal/order.js +1 -0
- package/dist/commands/instant-metal/order.js.map +1 -1
- package/dist/commands/instant-metal/power.d.ts +1 -0
- package/dist/commands/instant-metal/power.js +1 -0
- package/dist/commands/instant-metal/power.js.map +1 -1
- package/dist/commands/instant-metal/reinstall.d.ts +1 -0
- package/dist/commands/instant-metal/reinstall.js +1 -0
- package/dist/commands/instant-metal/reinstall.js.map +1 -1
- package/dist/commands/instant-metal/resize.d.ts +1 -0
- package/dist/commands/instant-metal/resize.js +1 -0
- package/dist/commands/instant-metal/resize.js.map +1 -1
- package/dist/commands/instant-metal/stats.d.ts +1 -0
- package/dist/commands/instant-metal/stats.js +1 -0
- package/dist/commands/instant-metal/stats.js.map +1 -1
- package/dist/commands/link.d.ts +77 -0
- package/dist/commands/link.js +530 -0
- package/dist/commands/link.js.map +1 -0
- package/dist/commands/login.d.ts +1 -0
- package/dist/commands/login.js +10 -0
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +1 -0
- package/dist/commands/logout.js +1 -0
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/order/gpu.d.ts +1 -0
- package/dist/commands/order/gpu.js +1 -0
- package/dist/commands/order/gpu.js.map +1 -1
- package/dist/commands/order/instant-metal.d.ts +1 -0
- package/dist/commands/order/instant-metal.js +1 -0
- package/dist/commands/order/instant-metal.js.map +1 -1
- package/dist/commands/order/storage.d.ts +1 -0
- package/dist/commands/order/storage.js +1 -0
- package/dist/commands/order/storage.js.map +1 -1
- package/dist/commands/order/vps.d.ts +1 -0
- package/dist/commands/order/vps.js +1 -0
- package/dist/commands/order/vps.js.map +1 -1
- package/dist/commands/order.d.ts +1 -0
- package/dist/commands/order.js +4 -1
- package/dist/commands/order.js.map +1 -1
- package/dist/commands/os-images.d.ts +1 -0
- package/dist/commands/os-images.js +3 -0
- package/dist/commands/os-images.js.map +1 -1
- package/dist/commands/payments/index.d.ts +1 -0
- package/dist/commands/payments/index.js +1 -0
- package/dist/commands/payments/index.js.map +1 -1
- package/dist/commands/payments/methods/add.d.ts +1 -0
- package/dist/commands/payments/methods/add.js +1 -0
- package/dist/commands/payments/methods/add.js.map +1 -1
- package/dist/commands/payments/methods/delete.d.ts +1 -0
- package/dist/commands/payments/methods/delete.js +3 -2
- package/dist/commands/payments/methods/delete.js.map +1 -1
- package/dist/commands/payments/methods/index.d.ts +1 -0
- package/dist/commands/payments/methods/index.js +1 -0
- package/dist/commands/payments/methods/index.js.map +1 -1
- package/dist/commands/payments/methods/list.d.ts +1 -0
- package/dist/commands/payments/methods/list.js +1 -0
- package/dist/commands/payments/methods/list.js.map +1 -1
- package/dist/commands/payments/methods/set-default.d.ts +1 -0
- package/dist/commands/payments/methods/set-default.js +1 -0
- package/dist/commands/payments/methods/set-default.js.map +1 -1
- package/dist/commands/projects/index.d.ts +1 -0
- package/dist/commands/projects/index.js +1 -0
- package/dist/commands/projects/index.js.map +1 -1
- package/dist/commands/projects/list.d.ts +1 -0
- package/dist/commands/projects/list.js +1 -0
- package/dist/commands/projects/list.js.map +1 -1
- package/dist/commands/resources.d.ts +1 -0
- package/dist/commands/resources.js +61 -7
- package/dist/commands/resources.js.map +1 -1
- package/dist/commands/settings/index.d.ts +1 -0
- package/dist/commands/settings/index.js +1 -0
- package/dist/commands/settings/index.js.map +1 -1
- package/dist/commands/settings/render-mode.d.ts +1 -0
- package/dist/commands/settings/render-mode.js +1 -0
- package/dist/commands/settings/render-mode.js.map +1 -1
- package/dist/commands/ssh-key/add.d.ts +1 -0
- package/dist/commands/ssh-key/add.js +1 -0
- package/dist/commands/ssh-key/add.js.map +1 -1
- package/dist/commands/ssh-key/delete.d.ts +1 -0
- package/dist/commands/ssh-key/delete.js +1 -0
- package/dist/commands/ssh-key/delete.js.map +1 -1
- package/dist/commands/ssh-key/list.d.ts +1 -0
- package/dist/commands/ssh-key/list.js +1 -0
- package/dist/commands/ssh-key/list.js.map +1 -1
- package/dist/commands/status.d.ts +12 -0
- package/dist/commands/status.js +71 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/commands/storage/attach.d.ts +1 -0
- package/dist/commands/storage/attach.js +1 -0
- package/dist/commands/storage/attach.js.map +1 -1
- package/dist/commands/storage/detach.d.ts +1 -0
- package/dist/commands/storage/detach.js +2 -1
- package/dist/commands/storage/detach.js.map +1 -1
- package/dist/commands/storage/list.d.ts +1 -0
- package/dist/commands/storage/list.js +7 -2
- package/dist/commands/storage/list.js.map +1 -1
- package/dist/commands/storage/order.d.ts +3 -0
- package/dist/commands/storage/order.js +101 -18
- package/dist/commands/storage/order.js.map +1 -1
- package/dist/commands/storage/resize.d.ts +1 -0
- package/dist/commands/storage/resize.js +20 -6
- package/dist/commands/storage/resize.js.map +1 -1
- package/dist/commands/team/details.d.ts +1 -0
- package/dist/commands/team/details.js +1 -0
- package/dist/commands/team/details.js.map +1 -1
- package/dist/commands/team/invite.d.ts +1 -0
- package/dist/commands/team/invite.js +1 -0
- package/dist/commands/team/invite.js.map +1 -1
- package/dist/commands/team.d.ts +1 -0
- package/dist/commands/team.js +1 -0
- package/dist/commands/team.js.map +1 -1
- package/dist/commands/tickets/close.d.ts +1 -0
- package/dist/commands/tickets/close.js +1 -0
- package/dist/commands/tickets/close.js.map +1 -1
- package/dist/commands/tickets/create.d.ts +3 -0
- package/dist/commands/tickets/create.js +41 -1
- package/dist/commands/tickets/create.js.map +1 -1
- package/dist/commands/tickets/departments.d.ts +1 -0
- package/dist/commands/tickets/departments.js +1 -0
- package/dist/commands/tickets/departments.js.map +1 -1
- package/dist/commands/tickets/download.d.ts +18 -0
- package/dist/commands/tickets/download.js +138 -0
- package/dist/commands/tickets/download.js.map +1 -0
- package/dist/commands/tickets/list.d.ts +1 -0
- package/dist/commands/tickets/list.js +14 -7
- package/dist/commands/tickets/list.js.map +1 -1
- package/dist/commands/tickets/open.d.ts +1 -0
- package/dist/commands/tickets/open.js +1 -0
- package/dist/commands/tickets/open.js.map +1 -1
- package/dist/commands/tickets/reopen.d.ts +11 -0
- package/dist/commands/tickets/reopen.js +34 -0
- package/dist/commands/tickets/reopen.js.map +1 -0
- package/dist/commands/tickets/reply.d.ts +3 -0
- package/dist/commands/tickets/reply.js +34 -4
- package/dist/commands/tickets/reply.js.map +1 -1
- package/dist/commands/transit.d.ts +1 -0
- package/dist/commands/transit.js +1 -0
- package/dist/commands/transit.js.map +1 -1
- package/dist/commands/tui/index.d.ts +1 -0
- package/dist/commands/tui/index.js +21 -0
- package/dist/commands/tui/index.js.map +1 -1
- package/dist/commands/vds/activity.d.ts +1 -0
- package/dist/commands/vds/activity.js +1 -0
- package/dist/commands/vds/activity.js.map +1 -1
- package/dist/commands/vds/bandwidth.d.ts +1 -0
- package/dist/commands/vds/bandwidth.js +1 -0
- package/dist/commands/vds/bandwidth.js.map +1 -1
- package/dist/commands/vds/boot-order.d.ts +1 -0
- package/dist/commands/vds/boot-order.js +1 -0
- package/dist/commands/vds/boot-order.js.map +1 -1
- package/dist/commands/vds/console.d.ts +1 -0
- package/dist/commands/vds/console.js +1 -0
- package/dist/commands/vds/console.js.map +1 -1
- package/dist/commands/vds/details.d.ts +1 -0
- package/dist/commands/vds/details.js +1 -0
- package/dist/commands/vds/details.js.map +1 -1
- package/dist/commands/vds/index.d.ts +1 -0
- package/dist/commands/vds/index.js +1 -0
- package/dist/commands/vds/index.js.map +1 -1
- package/dist/commands/vds/ip/add.d.ts +1 -0
- package/dist/commands/vds/ip/add.js +1 -0
- package/dist/commands/vds/ip/add.js.map +1 -1
- package/dist/commands/vds/ip/list.d.ts +1 -0
- package/dist/commands/vds/ip/list.js +1 -0
- package/dist/commands/vds/ip/list.js.map +1 -1
- package/dist/commands/vds/list.d.ts +1 -0
- package/dist/commands/vds/list.js +1 -0
- package/dist/commands/vds/list.js.map +1 -1
- package/dist/commands/vds/order.d.ts +1 -0
- package/dist/commands/vds/order.js +73 -7
- package/dist/commands/vds/order.js.map +1 -1
- package/dist/commands/vds/power.d.ts +1 -0
- package/dist/commands/vds/power.js +1 -0
- package/dist/commands/vds/power.js.map +1 -1
- package/dist/commands/vds/reinstall.d.ts +1 -0
- package/dist/commands/vds/reinstall.js +1 -0
- package/dist/commands/vds/reinstall.js.map +1 -1
- package/dist/commands/vds/resize.d.ts +1 -0
- package/dist/commands/vds/resize.js +1 -0
- package/dist/commands/vds/resize.js.map +1 -1
- package/dist/commands/vds/stats.d.ts +1 -0
- package/dist/commands/vds/stats.js +1 -0
- package/dist/commands/vds/stats.js.map +1 -1
- package/dist/commands/vps/activity.d.ts +1 -0
- package/dist/commands/vps/activity.js +1 -0
- package/dist/commands/vps/activity.js.map +1 -1
- package/dist/commands/vps/bandwidth.d.ts +1 -0
- package/dist/commands/vps/bandwidth.js +1 -0
- package/dist/commands/vps/bandwidth.js.map +1 -1
- package/dist/commands/vps/boot-order.d.ts +1 -0
- package/dist/commands/vps/boot-order.js +1 -0
- package/dist/commands/vps/boot-order.js.map +1 -1
- package/dist/commands/vps/console.d.ts +1 -0
- package/dist/commands/vps/console.js +15 -6
- package/dist/commands/vps/console.js.map +1 -1
- package/dist/commands/vps/details.d.ts +1 -0
- package/dist/commands/vps/details.js +8 -1
- package/dist/commands/vps/details.js.map +1 -1
- package/dist/commands/vps/ip/add.d.ts +1 -0
- package/dist/commands/vps/ip/add.js +77 -9
- package/dist/commands/vps/ip/add.js.map +1 -1
- package/dist/commands/vps/ip/list.d.ts +1 -0
- package/dist/commands/vps/ip/list.js +1 -0
- package/dist/commands/vps/ip/list.js.map +1 -1
- package/dist/commands/vps/list.d.ts +1 -0
- package/dist/commands/vps/list.js +14 -4
- package/dist/commands/vps/list.js.map +1 -1
- package/dist/commands/vps/order.d.ts +20 -0
- package/dist/commands/vps/order.js +180 -23
- package/dist/commands/vps/order.js.map +1 -1
- package/dist/commands/vps/power.d.ts +1 -0
- package/dist/commands/vps/power.js +3 -2
- package/dist/commands/vps/power.js.map +1 -1
- package/dist/commands/vps/reinstall.d.ts +1 -0
- package/dist/commands/vps/reinstall.js +3 -2
- package/dist/commands/vps/reinstall.js.map +1 -1
- package/dist/commands/vps/resize.d.ts +1 -0
- package/dist/commands/vps/resize.js +37 -13
- package/dist/commands/vps/resize.js.map +1 -1
- package/dist/commands/vps/stats.d.ts +1 -0
- package/dist/commands/vps/stats.js +1 -0
- package/dist/commands/vps/stats.js.map +1 -1
- package/dist/commands/whoami.d.ts +6 -0
- package/dist/commands/whoami.js +8 -2
- package/dist/commands/whoami.js.map +1 -1
- package/dist/config/paths.d.ts +1 -1
- package/dist/config/paths.js +6 -1
- package/dist/config/paths.js.map +1 -1
- package/dist/config/store.d.ts +58 -0
- package/dist/config/store.js +84 -2
- package/dist/config/store.js.map +1 -1
- package/dist/functions-support/credits.d.ts +64 -0
- package/dist/functions-support/credits.js +181 -0
- package/dist/functions-support/credits.js.map +1 -0
- package/dist/functions-support/cron.d.ts +17 -0
- package/dist/functions-support/cron.js +99 -0
- package/dist/functions-support/cron.js.map +1 -0
- package/dist/functions-support/env.d.ts +23 -0
- package/dist/functions-support/env.js +44 -0
- package/dist/functions-support/env.js.map +1 -0
- package/dist/functions-support/link.d.ts +25 -0
- package/dist/functions-support/link.js +51 -0
- package/dist/functions-support/link.js.map +1 -0
- package/dist/functions-support/poll.d.ts +40 -0
- package/dist/functions-support/poll.js +109 -0
- package/dist/functions-support/poll.js.map +1 -0
- package/dist/functions-support/resolve.d.ts +3 -0
- package/dist/functions-support/resolve.js +31 -0
- package/dist/functions-support/resolve.js.map +1 -0
- package/dist/functions-support/runtime.d.ts +30 -0
- package/dist/functions-support/runtime.js +52 -0
- package/dist/functions-support/runtime.js.map +1 -0
- package/dist/functions-support/source.d.ts +92 -0
- package/dist/functions-support/source.js +343 -0
- package/dist/functions-support/source.js.map +1 -0
- package/dist/help/help-filter.d.ts +10 -0
- package/dist/help/help-filter.js +9 -0
- package/dist/help/help-filter.js.map +1 -0
- package/dist/help/scope-aware-help.d.ts +30 -0
- package/dist/help/scope-aware-help.js +80 -0
- package/dist/help/scope-aware-help.js.map +1 -0
- package/dist/tui/App.js +11 -26
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/components/Menu.d.ts +3 -1
- package/dist/tui/components/Menu.js +7 -3
- package/dist/tui/components/Menu.js.map +1 -1
- package/dist/tui/components/NumberInput.js +1 -1
- package/dist/tui/components/Sparkline.js +1 -1
- package/dist/tui/router.d.ts +1 -1
- package/dist/tui/router.js.map +1 -1
- package/dist/tui/screens/Billing.js +66 -14
- package/dist/tui/screens/Billing.js.map +1 -1
- package/dist/tui/screens/Dashboard.js +8 -7
- package/dist/tui/screens/Dashboard.js.map +1 -1
- package/dist/tui/screens/Deploy.d.ts +2 -0
- package/dist/tui/screens/Deploy.js +912 -0
- package/dist/tui/screens/Deploy.js.map +1 -0
- package/dist/tui/screens/Order.js +385 -52
- package/dist/tui/screens/Order.js.map +1 -1
- package/dist/tui/screens/Resources.js +277 -35
- package/dist/tui/screens/Resources.js.map +1 -1
- package/dist/tui/screens/Tickets.js +47 -26
- package/dist/tui/screens/Tickets.js.map +1 -1
- package/dist/tui/screens/deployPreset.d.ts +20 -0
- package/dist/tui/screens/deployPreset.js +11 -0
- package/dist/tui/screens/deployPreset.js.map +1 -0
- package/dist/tui/screens/resources/AppDetail.d.ts +7 -0
- package/dist/tui/screens/resources/AppDetail.js +810 -0
- package/dist/tui/screens/resources/AppDetail.js.map +1 -0
- package/dist/tui/screens/resources/FunctionDetail.d.ts +7 -0
- package/dist/tui/screens/resources/FunctionDetail.js +751 -0
- package/dist/tui/screens/resources/FunctionDetail.js.map +1 -0
- package/dist/ui/attach.d.ts +15 -0
- package/dist/ui/attach.js +63 -0
- package/dist/ui/attach.js.map +1 -0
- package/dist/ui/baremetal-resolve.d.ts +10 -0
- package/dist/ui/baremetal-resolve.js +50 -0
- package/dist/ui/baremetal-resolve.js.map +1 -0
- package/dist/ui/confirm.js +1 -1
- package/dist/ui/confirm.js.map +1 -1
- package/dist/ui/cycle.d.ts +66 -0
- package/dist/ui/cycle.js +96 -0
- package/dist/ui/cycle.js.map +1 -0
- package/dist/ui/deploy-ui.d.ts +75 -0
- package/dist/ui/deploy-ui.js +243 -0
- package/dist/ui/deploy-ui.js.map +1 -0
- package/dist/ui/order-result.d.ts +4 -0
- package/dist/ui/order-result.js +32 -0
- package/dist/ui/order-result.js.map +1 -0
- package/dist/ui/payment-gate.d.ts +26 -0
- package/dist/ui/payment-gate.js +70 -0
- package/dist/ui/payment-gate.js.map +1 -0
- package/dist/ui/payment.js +10 -3
- package/dist/ui/payment.js.map +1 -1
- package/dist/ui/portal.d.ts +1 -1
- package/dist/ui/portal.js +7 -2
- package/dist/ui/portal.js.map +1 -1
- package/dist/ui/project-resolve.d.ts +25 -0
- package/dist/ui/project-resolve.js +31 -0
- package/dist/ui/project-resolve.js.map +1 -0
- package/dist/ui/render-mode.d.ts +5 -0
- package/dist/ui/render-mode.js +1 -1
- package/dist/ui/render-mode.js.map +1 -1
- package/dist/ui/resource-detail.js +0 -3
- package/dist/ui/resource-detail.js.map +1 -1
- package/dist/ui/resource-resolve.d.ts +9 -2
- package/dist/ui/resource-resolve.js +11 -4
- package/dist/ui/resource-resolve.js.map +1 -1
- package/dist/ui/spinner.d.ts +10 -1
- package/dist/ui/spinner.js +12 -3
- package/dist/ui/spinner.js.map +1 -1
- package/dist/ui/table.d.ts +7 -0
- package/dist/ui/table.js +11 -0
- package/dist/ui/table.js.map +1 -1
- package/dist/ui/tax.d.ts +10 -0
- package/dist/ui/tax.js +31 -0
- package/dist/ui/tax.js.map +1 -0
- package/dist/ui/ticket-resolve.d.ts +9 -1
- package/dist/ui/ticket-resolve.js +13 -2
- package/dist/ui/ticket-resolve.js.map +1 -1
- package/dist/ui/volume-resolve.js +4 -1
- package/dist/ui/volume-resolve.js.map +1 -1
- package/dist/ui/wait.d.ts +4 -0
- package/dist/ui/wait.js +7 -2
- package/dist/ui/wait.js.map +1 -1
- package/dist/ui/wizard.d.ts +2 -1
- package/dist/ui/wizard.js +1 -1
- package/dist/ui/wizard.js.map +1 -1
- package/dist/version-check-bin.d.ts +35 -0
- package/dist/version-check-bin.js +123 -0
- package/dist/version-check-bin.js.map +1 -0
- package/dist/version-check.d.ts +44 -0
- package/dist/version-check.js +153 -0
- package/dist/version-check.js.map +1 -0
- package/package.json +59 -4
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pretty rendering for `synteq deploy` — a live build-progress view and a
|
|
3
|
+
* hero end-state card with a link to the running deployment.
|
|
4
|
+
*
|
|
5
|
+
* Two render layers, same as the rest of the CLI (see ui/render-mode.ts):
|
|
6
|
+
* - TUI on: a clack spinner cycles through the build phases, then a dim
|
|
7
|
+
* hairline card announces the deployment with its URL.
|
|
8
|
+
* - TUI off: clean per-phase lines (one per transition) + a plain summary.
|
|
9
|
+
* Copy-paste friendly for agents / CI logs.
|
|
10
|
+
*
|
|
11
|
+
* The renderer is driven by coarse build statuses — the same enum the backend
|
|
12
|
+
* emits (pending | building | pushing | succeeded | failed) — mapped onto four
|
|
13
|
+
* human phases so the user sees forward motion, not opaque status codes.
|
|
14
|
+
*/
|
|
15
|
+
import * as clack from "@clack/prompts";
|
|
16
|
+
import { isTui } from "./render-mode.js";
|
|
17
|
+
import { G, ok, fail, dim, cyan, bold, green, red, statusColor } from "./glyphs.js";
|
|
18
|
+
import { panel } from "./wizard.js";
|
|
19
|
+
/** Coarse build status → the phase label we show the user. */
|
|
20
|
+
const PHASE_LABEL = {
|
|
21
|
+
pending: "Preparing build environment",
|
|
22
|
+
building: "Building image",
|
|
23
|
+
pushing: "Pushing to registry",
|
|
24
|
+
// The build's own finish line. The release that follows is its own
|
|
25
|
+
// progress (releaseProgress below), not a fourth build phase — a
|
|
26
|
+
// "Deploying release" ✓ used to appear here before the release had
|
|
27
|
+
// started anything.
|
|
28
|
+
succeeded: "Image built",
|
|
29
|
+
failed: "Build failed",
|
|
30
|
+
};
|
|
31
|
+
/** Ordered phases for the "step N of M" progress hint (terminal excluded). */
|
|
32
|
+
const PHASE_ORDER = ["pending", "building", "pushing"];
|
|
33
|
+
/** Release status (the backend's ReleaseStatus) → the rollout phase label.
|
|
34
|
+
* `traffic_flip` and `draining` are one phase to the user: the new
|
|
35
|
+
* instance is taking traffic and the old one is being retired. */
|
|
36
|
+
const RELEASE_PHASE_LABEL = {
|
|
37
|
+
pending: "Scheduling release",
|
|
38
|
+
starting: "Starting instance",
|
|
39
|
+
health_gate: "Health check",
|
|
40
|
+
traffic_flip: "Rolling out",
|
|
41
|
+
draining: "Rolling out",
|
|
42
|
+
live: "Live",
|
|
43
|
+
start_failed: "Instance failed to start",
|
|
44
|
+
health_failed: "Health check failed",
|
|
45
|
+
superseded: "Superseded by a newer deploy",
|
|
46
|
+
};
|
|
47
|
+
/** Ordered rollout phases for the hint (terminal excluded; the two
|
|
48
|
+
* rolling-out statuses share a slot). */
|
|
49
|
+
const RELEASE_PHASE_ORDER = ["starting", "health_gate", "traffic_flip"];
|
|
50
|
+
function phaseHint(status, labels = PHASE_LABEL, order = PHASE_ORDER) {
|
|
51
|
+
const label = labels[status] ?? status;
|
|
52
|
+
// A status that shares a label with an ordered phase (draining → Rolling
|
|
53
|
+
// out) takes that phase's slot.
|
|
54
|
+
const idx = order.findIndex((s) => labels[s] === label);
|
|
55
|
+
if (idx < 0)
|
|
56
|
+
return label;
|
|
57
|
+
return `${label} ${dim(`(${idx + 1}/${order.length})`)}`;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* A live build-progress reporter. Call `.update(status)` on every observed
|
|
61
|
+
* status; it only redraws on an actual change. `.done()` / `.failed()` finalize.
|
|
62
|
+
*
|
|
63
|
+
* In TUI mode this drives a single clack spinner whose message swaps per phase.
|
|
64
|
+
* In plain mode it prints one line per transition (with a ✓ for completed
|
|
65
|
+
* phases) so a scrollback log reads as a clean checklist.
|
|
66
|
+
*/
|
|
67
|
+
export function buildProgress(headline, opts = {}) {
|
|
68
|
+
return phasedProgress(headline, PHASE_LABEL, PHASE_ORDER, "pending", opts.out);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* The rollout that follows a successful build, as its own checklist:
|
|
72
|
+
* Starting instance → Health check → Rolling out → ✓ Live. Driven by the
|
|
73
|
+
* release statuses `waitForReleaseOutcome` observes (starting, health_gate,
|
|
74
|
+
* traffic_flip/draining, live | start_failed | health_failed | superseded).
|
|
75
|
+
* Same two render layers as buildProgress. A phase the poller never sees
|
|
76
|
+
* (a health gate that passed between two polls) is still ticked off when a
|
|
77
|
+
* later phase arrives, so the checklist reads complete either way.
|
|
78
|
+
*/
|
|
79
|
+
export function releaseProgress(headline, opts = {}) {
|
|
80
|
+
const p = phasedProgress(headline, RELEASE_PHASE_LABEL, RELEASE_PHASE_ORDER, "pending", opts.out);
|
|
81
|
+
return {
|
|
82
|
+
update: (status) => {
|
|
83
|
+
if (status)
|
|
84
|
+
p.update(status);
|
|
85
|
+
},
|
|
86
|
+
done: p.done,
|
|
87
|
+
failed: (message) => p.failed(message ?? "Release did not go live"),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function phasedProgress(headline, labels, order, initial, out = process.stdout) {
|
|
91
|
+
let last = "";
|
|
92
|
+
let lastDetail = "";
|
|
93
|
+
const tui = isTui() && out === process.stdout;
|
|
94
|
+
const spinner = tui ? clack.spinner() : null;
|
|
95
|
+
if (spinner)
|
|
96
|
+
spinner.start(phaseHint(initial, labels, order));
|
|
97
|
+
else
|
|
98
|
+
out.write(`${dim(G.arrow)} ${headline}\n`);
|
|
99
|
+
const slotOf = (status) => order.findIndex((s) => labels[s] === labels[status]);
|
|
100
|
+
function markPlainDone(status) {
|
|
101
|
+
// Print a ✓ line for the phase we just left (plain mode only).
|
|
102
|
+
const label = labels[status];
|
|
103
|
+
if (label)
|
|
104
|
+
out.write(` ${ok(label)}\n`);
|
|
105
|
+
}
|
|
106
|
+
const withDetail = (hint, detail) => (detail ? `${hint} ${dim(`— ${detail}`)}` : hint);
|
|
107
|
+
return {
|
|
108
|
+
update(status, detail) {
|
|
109
|
+
const d = detail ?? "";
|
|
110
|
+
if (status === last) {
|
|
111
|
+
// Same phase, new detail (the queue moved, the build VM was
|
|
112
|
+
// assigned): redraw the line, no new phase.
|
|
113
|
+
if (d !== lastDetail) {
|
|
114
|
+
lastDetail = d;
|
|
115
|
+
if (spinner)
|
|
116
|
+
spinner.message(withDetail(phaseHint(status, labels, order), d));
|
|
117
|
+
else if (d)
|
|
118
|
+
out.write(` ${dim(d)}\n`);
|
|
119
|
+
}
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
const from = last ? slotOf(last) : -1;
|
|
123
|
+
const to = slotOf(status);
|
|
124
|
+
// Same slot (traffic_flip → draining): nothing new to say.
|
|
125
|
+
if (from >= 0 && from === to) {
|
|
126
|
+
last = status;
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
// In plain mode, moving on means the previous phase finished — and any
|
|
130
|
+
// phase skipped between polls finished too.
|
|
131
|
+
if (!tui && from >= 0) {
|
|
132
|
+
markPlainDone(last);
|
|
133
|
+
if (to > from + 1)
|
|
134
|
+
for (let i = from + 1; i < to; i++)
|
|
135
|
+
markPlainDone(order[i]);
|
|
136
|
+
}
|
|
137
|
+
last = status;
|
|
138
|
+
lastDetail = d;
|
|
139
|
+
if (spinner)
|
|
140
|
+
spinner.message(withDetail(phaseHint(status, labels, order), d));
|
|
141
|
+
else if (to >= 0)
|
|
142
|
+
out.write(` ${dim(G.dot)} ${withDetail(phaseHint(status, labels, order), d)}\n`);
|
|
143
|
+
},
|
|
144
|
+
done(finalStatus) {
|
|
145
|
+
if (spinner)
|
|
146
|
+
spinner.stop(`${green(G.check)} ${labels[finalStatus] ?? finalStatus}`);
|
|
147
|
+
else {
|
|
148
|
+
// Plain mode: tick the phase we were in, any phase after it, then the
|
|
149
|
+
// finish line itself.
|
|
150
|
+
const from = last ? slotOf(last) : -1;
|
|
151
|
+
if (from >= 0)
|
|
152
|
+
for (let i = from; i < order.length; i++)
|
|
153
|
+
markPlainDone(order[i]);
|
|
154
|
+
out.write(` ${ok(labels[finalStatus] ?? finalStatus)}\n`);
|
|
155
|
+
}
|
|
156
|
+
},
|
|
157
|
+
failed(message) {
|
|
158
|
+
const msg = message ?? labels.failed ?? "Failed";
|
|
159
|
+
if (spinner)
|
|
160
|
+
spinner.stop(`${red(G.cross)} ${msg}`);
|
|
161
|
+
else
|
|
162
|
+
out.write(` ${fail(msg)}\n`);
|
|
163
|
+
},
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
/** Best-effort deployment URL for an app from its hostname. */
|
|
167
|
+
export function deploymentUrl(hostname) {
|
|
168
|
+
if (!hostname)
|
|
169
|
+
return null;
|
|
170
|
+
return /^https?:\/\//.test(hostname) ? hostname : `https://${hostname}`;
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* The hero end-state card shown after a successful deploy. Leads with the live
|
|
174
|
+
* URL so the very next thing the user does is click it, then the build facts
|
|
175
|
+
* and the two most useful follow-up commands.
|
|
176
|
+
*/
|
|
177
|
+
export function deployedCard(opts) {
|
|
178
|
+
const lines = [];
|
|
179
|
+
lines.push("");
|
|
180
|
+
lines.push(panel(`${green(G.check)} Deployed ${bold(opts.appSlug)}`, [
|
|
181
|
+
["Release", opts.release != null ? `#${opts.release}` : "—"],
|
|
182
|
+
["Status", statusColor("live")],
|
|
183
|
+
["Image", opts.digest ? opts.digest.replace(/^sha256:/, "").slice(0, 19) : undefined],
|
|
184
|
+
["Built in", opts.durationMs != null ? fmtDuration(opts.durationMs) : undefined],
|
|
185
|
+
["URL", opts.url ? cyan(opts.url) : dim("no domain yet")],
|
|
186
|
+
["Details", opts.panelUrl ? cyan(opts.panelUrl) : undefined],
|
|
187
|
+
]));
|
|
188
|
+
lines.push("");
|
|
189
|
+
lines.push(dim(" Next:"));
|
|
190
|
+
lines.push(` ${dim("synteq app logs -f")} ${dim(G.bullet)} stream runtime logs`);
|
|
191
|
+
lines.push(` ${dim("synteq status")} ${dim(G.bullet)} health + replicas`);
|
|
192
|
+
return lines.join("\n");
|
|
193
|
+
}
|
|
194
|
+
/** The end-state card for a build that succeeded but whose RELEASE failed its
|
|
195
|
+
* rollout (start_failed / health_failed) — the image is fine, the deploy is
|
|
196
|
+
* not, and saying "Deployed ✓" here was a lie the portal then contradicted. */
|
|
197
|
+
export function deployFailedCard(opts) {
|
|
198
|
+
const lines = [
|
|
199
|
+
"",
|
|
200
|
+
panel(`${red(G.cross)} Deploy failed for ${bold(opts.appSlug)}`, [
|
|
201
|
+
["Release", `#${opts.release}`],
|
|
202
|
+
["Build", statusColor("succeeded")],
|
|
203
|
+
["Rollout", statusColor(opts.status)],
|
|
204
|
+
["Details", opts.panelUrl ? cyan(opts.panelUrl) : undefined],
|
|
205
|
+
]),
|
|
206
|
+
"",
|
|
207
|
+
dim(opts.status === "health_failed"
|
|
208
|
+
? ` The instance started but failed its health check — check the app listens on its configured port and the health path responds.`
|
|
209
|
+
: ` The instance failed to start — open the link above for the release detail.`),
|
|
210
|
+
];
|
|
211
|
+
if (opts.failureReason) {
|
|
212
|
+
lines.push("", dim(" Why it failed:"), ...opts.failureReason.split("\n").map((line) => dim(` ${line}`)));
|
|
213
|
+
}
|
|
214
|
+
return lines.join("\n");
|
|
215
|
+
}
|
|
216
|
+
/** The end-state card for a failed build — points the user at the logs. */
|
|
217
|
+
export function failedCard(opts) {
|
|
218
|
+
const lines = [
|
|
219
|
+
"",
|
|
220
|
+
panel(`${red(G.cross)} Build failed for ${bold(opts.appSlug)}`, [
|
|
221
|
+
["Build", opts.buildId.slice(0, 8)],
|
|
222
|
+
["Status", statusColor("failed")],
|
|
223
|
+
["Logs", opts.panelUrl ? cyan(opts.panelUrl) : undefined],
|
|
224
|
+
]),
|
|
225
|
+
];
|
|
226
|
+
if (opts.failureReason) {
|
|
227
|
+
lines.push("", dim(" Why it failed:"), ...opts.failureReason.split("\n").map((line) => dim(` ${line}`)));
|
|
228
|
+
}
|
|
229
|
+
lines.push("", dim(opts.panelUrl
|
|
230
|
+
? ` Open the link above for the full build log, or re-run with --no-wait then poll.`
|
|
231
|
+
: ` See the full build log in the portal, or re-run with --no-wait then poll.`));
|
|
232
|
+
return lines.join("\n");
|
|
233
|
+
}
|
|
234
|
+
function fmtDuration(ms) {
|
|
235
|
+
if (ms < 1000)
|
|
236
|
+
return `${ms}ms`;
|
|
237
|
+
const s = Math.round(ms / 1000);
|
|
238
|
+
if (s < 60)
|
|
239
|
+
return `${s}s`;
|
|
240
|
+
const m = Math.floor(s / 60);
|
|
241
|
+
return `${m}m ${s % 60}s`;
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=deploy-ui.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy-ui.js","sourceRoot":"","sources":["../../src/ui/deploy-ui.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// QA-21: the order-result closing line, driven by the ORDER STATUS rather
|
|
2
|
+
// than checkout-URL absence. Before this helper, the TUI said "All done" for
|
|
3
|
+
// any result without a checkout URL — including orders that came back
|
|
4
|
+
// awaiting_customer / payment_pending with an unpaid invoice (the backend's
|
|
5
|
+
// BitPay dispatch gap), so the customer walked away believing they had paid.
|
|
6
|
+
/** Statuses where no payment has landed yet — the order needs the customer
|
|
7
|
+
* to pay (or finish the wizard) before anything provisions. */
|
|
8
|
+
const UNPAID_STATUSES = new Set([
|
|
9
|
+
"awaiting_customer",
|
|
10
|
+
"payment_pending",
|
|
11
|
+
"draft",
|
|
12
|
+
]);
|
|
13
|
+
export function orderResultMessage(status, checkoutUrl) {
|
|
14
|
+
if (checkoutUrl) {
|
|
15
|
+
return {
|
|
16
|
+
tone: "success",
|
|
17
|
+
text: "Open the checkout URL in your browser to complete payment.",
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
if (status !== undefined && UNPAID_STATUSES.has(status)) {
|
|
21
|
+
return {
|
|
22
|
+
tone: "warning",
|
|
23
|
+
text: "No payment has been taken yet - pay this order's invoice from " +
|
|
24
|
+
"Billing to start provisioning.",
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return {
|
|
28
|
+
tone: "success",
|
|
29
|
+
text: "All done - see Resources to watch provisioning.",
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=order-result.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"order-result.js","sourceRoot":"","sources":["../../src/ui/order-result.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,6EAA6E;AAC7E,sEAAsE;AACtE,4EAA4E;AAC5E,6EAA6E;AAE7E;+DAC+D;AAC/D,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,mBAAmB;IACnB,iBAAiB;IACjB,OAAO;CACR,CAAC,CAAC;AAEH,MAAM,UAAU,kBAAkB,CAChC,MAA0B,EAC1B,WAAsC;IAEtC,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,4DAA4D;SACnE,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,KAAK,SAAS,IAAI,eAAe,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,OAAO;YACL,IAAI,EAAE,SAAS;YACf,IAAI,EACF,gEAAgE;gBAChE,gCAAgC;SACnC,CAAC;IACJ,CAAC;IACD,OAAO;QACL,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,iDAAiD;KACxD,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ApiClient } from "../api/client.js";
|
|
2
|
+
/** Where the portal takes payment methods. The CLI never collects card data
|
|
3
|
+
* itself — it hands off to the browser and waits. */
|
|
4
|
+
export declare const PAYMENT_METHODS_PATH = "/organization/billing/payment-methods";
|
|
5
|
+
export declare class PaymentMethodRequired extends Error {
|
|
6
|
+
url: string;
|
|
7
|
+
constructor(url: string);
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Make sure the active team has at least one active payment method before a
|
|
11
|
+
* deploy or a create. Every tier is gated, free included.
|
|
12
|
+
*
|
|
13
|
+
* On a TTY with none on file: open the portal's payment-methods page, then
|
|
14
|
+
* ask "added one?" and re-check, up to a few times. Declining stops the
|
|
15
|
+
* command with the URL. Non-interactive runs (`-o json`, pipes, --yes
|
|
16
|
+
* scripts) never wait — they fail at once with the same URL so a CI log says
|
|
17
|
+
* exactly what to do.
|
|
18
|
+
*/
|
|
19
|
+
export declare function ensurePaymentMethod(opts: {
|
|
20
|
+
api: ApiClient;
|
|
21
|
+
apiBaseUrl: string;
|
|
22
|
+
interactive: boolean;
|
|
23
|
+
log: (line: string) => void;
|
|
24
|
+
/** Word for what is about to happen, for the prompt: "deploy" / "create the app". */
|
|
25
|
+
action?: string;
|
|
26
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import open from "open";
|
|
2
|
+
import { portalUrl } from "./portal.js";
|
|
3
|
+
import { confirmAction } from "./wizard.js";
|
|
4
|
+
import { dim, ok } from "./glyphs.js";
|
|
5
|
+
/** Where the portal takes payment methods. The CLI never collects card data
|
|
6
|
+
* itself — it hands off to the browser and waits. */
|
|
7
|
+
export const PAYMENT_METHODS_PATH = "/organization/billing/payment-methods";
|
|
8
|
+
export class PaymentMethodRequired extends Error {
|
|
9
|
+
url;
|
|
10
|
+
constructor(url) {
|
|
11
|
+
super([
|
|
12
|
+
"A saved payment method is required before deploying (free tiers too — it is how we keep the free tier for real people).",
|
|
13
|
+
`Add one here: ${url}`,
|
|
14
|
+
"or run `synteq payments methods add`, then deploy again.",
|
|
15
|
+
].join("\n"));
|
|
16
|
+
this.url = url;
|
|
17
|
+
this.name = "PaymentMethodRequired";
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Make sure the active team has at least one active payment method before a
|
|
22
|
+
* deploy or a create. Every tier is gated, free included.
|
|
23
|
+
*
|
|
24
|
+
* On a TTY with none on file: open the portal's payment-methods page, then
|
|
25
|
+
* ask "added one?" and re-check, up to a few times. Declining stops the
|
|
26
|
+
* command with the URL. Non-interactive runs (`-o json`, pipes, --yes
|
|
27
|
+
* scripts) never wait — they fail at once with the same URL so a CI log says
|
|
28
|
+
* exactly what to do.
|
|
29
|
+
*/
|
|
30
|
+
export async function ensurePaymentMethod(opts) {
|
|
31
|
+
const has = async () => {
|
|
32
|
+
// No `.catch(() => [])`: a 401 / 5xx / network fault must propagate so the
|
|
33
|
+
// command maps it to the right exit code (2 / 3), not be swallowed into a
|
|
34
|
+
// false "no payment method" that fails open on an expired session and
|
|
35
|
+
// prints the wrong fix on a transient outage.
|
|
36
|
+
const methods = await opts.api.payments.methods();
|
|
37
|
+
return methods.some((m) => m.is_active !== false);
|
|
38
|
+
};
|
|
39
|
+
if (await has())
|
|
40
|
+
return;
|
|
41
|
+
const url = portalUrl(opts.apiBaseUrl, PAYMENT_METHODS_PATH);
|
|
42
|
+
if (!opts.interactive)
|
|
43
|
+
throw new PaymentMethodRequired(url);
|
|
44
|
+
opts.log("");
|
|
45
|
+
opts.log(`No payment method on this team yet — one is needed to ${opts.action ?? "deploy"}.`);
|
|
46
|
+
// Ask before taking over the browser: the user sees why first, and a "no"
|
|
47
|
+
// stops the command with the URL instead of a tab they did not want.
|
|
48
|
+
const proceed = await confirmAction("Continue in the browser to add one?", true);
|
|
49
|
+
if (!proceed)
|
|
50
|
+
throw new PaymentMethodRequired(url);
|
|
51
|
+
opts.log(dim(`Opening ${url}`));
|
|
52
|
+
try {
|
|
53
|
+
await open(url);
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
// Headless shell: the URL is printed above; the user can open it by hand.
|
|
57
|
+
}
|
|
58
|
+
for (let attempt = 0; attempt < 5; attempt++) {
|
|
59
|
+
const again = await confirmAction("Added a payment method? Check again", true);
|
|
60
|
+
if (!again)
|
|
61
|
+
throw new PaymentMethodRequired(url);
|
|
62
|
+
if (await has()) {
|
|
63
|
+
opts.log(ok("Payment method on file."));
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
opts.log(dim("Still none on file. Give the portal a second, then confirm again."));
|
|
67
|
+
}
|
|
68
|
+
throw new PaymentMethodRequired(url);
|
|
69
|
+
}
|
|
70
|
+
//# sourceMappingURL=payment-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"payment-gate.js","sourceRoot":"","sources":["../../src/ui/payment-gate.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEtC;sDACsD;AACtD,MAAM,CAAC,MAAM,oBAAoB,GAAG,uCAAuC,CAAC;AAE5E,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC3B;IAAnB,YAAmB,GAAW;QAC5B,KAAK,CACH;YACE,yHAAyH;YACzH,iBAAiB,GAAG,EAAE;YACtB,0DAA0D;SAC3D,CAAC,IAAI,CAAC,IAAI,CAAC,CACb,CAAC;QAPe,QAAG,GAAH,GAAG,CAAQ;QAQ5B,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAOzC;IACC,MAAM,GAAG,GAAG,KAAK,IAAI,EAAE;QACrB,2EAA2E;QAC3E,0EAA0E;QAC1E,sEAAsE;QACtE,8CAA8C;QAC9C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;QAClD,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC;IACpD,CAAC,CAAC;IACF,IAAI,MAAM,GAAG,EAAE;QAAE,OAAO;IAExB,MAAM,GAAG,GAAG,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,oBAAoB,CAAC,CAAC;IAC7D,IAAI,CAAC,IAAI,CAAC,WAAW;QAAE,MAAM,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC;IAE5D,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACb,IAAI,CAAC,GAAG,CAAC,yDAAyD,IAAI,CAAC,MAAM,IAAI,QAAQ,GAAG,CAAC,CAAC;IAC9F,0EAA0E;IAC1E,qEAAqE;IACrE,MAAM,OAAO,GAAG,MAAM,aAAa,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;IACjF,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC;IACnD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,CAAC,CAAC;IAChC,IAAI,CAAC;QACH,MAAM,IAAI,CAAC,GAAG,CAAC,CAAC;IAClB,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;IAED,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7C,MAAM,KAAK,GAAG,MAAM,aAAa,CAAC,qCAAqC,EAAE,IAAI,CAAC,CAAC;QAC/E,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC;YACxC,OAAO;QACT,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC,CAAC;IACrF,CAAC;IACD,MAAM,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC;AACvC,CAAC"}
|
package/dist/ui/payment.js
CHANGED
|
@@ -9,9 +9,13 @@ export async function pickPayment(opts) {
|
|
|
9
9
|
const log = opts.log ?? (() => { });
|
|
10
10
|
const prefill = opts.prefill ?? {};
|
|
11
11
|
const estimatedCost = opts.estimatedCost ?? 0;
|
|
12
|
+
// No blanket `.catch`: on a charge path a swallowed 401 / 5xx / network
|
|
13
|
+
// fault becomes either a false "no methods" (fails open on auth, wrong
|
|
14
|
+
// remediation) or a silent zero balance (credits quietly dropped → a full
|
|
15
|
+
// card charge). Let the typed error propagate so the command maps its exit.
|
|
12
16
|
const [allMethods, balance] = await Promise.all([
|
|
13
|
-
opts.api.payments.methods()
|
|
14
|
-
opts.api.billing.balance()
|
|
17
|
+
opts.api.payments.methods(),
|
|
18
|
+
opts.api.billing.balance(),
|
|
15
19
|
]);
|
|
16
20
|
const creditBalance = readBalance(balance.credit);
|
|
17
21
|
const balanceCurrency = balance.currency ?? "";
|
|
@@ -77,7 +81,10 @@ export async function pickPayment(opts) {
|
|
|
77
81
|
}
|
|
78
82
|
}
|
|
79
83
|
if (opts.noInteractive) {
|
|
80
|
-
|
|
84
|
+
// Shared by every ordering command; only `vps order` has --bitpay, and
|
|
85
|
+
// it names that flag in its own missing-payment error before reaching
|
|
86
|
+
// here.
|
|
87
|
+
throw new PaymentPickerError("Provide --payment-method or --apply-credits.");
|
|
81
88
|
}
|
|
82
89
|
let applyCredits = Boolean(prefill.applyCredits);
|
|
83
90
|
if (opts.flow !== "credits_topup" && !applyCredits && creditBalance > 0) {
|
package/dist/ui/payment.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"payment.js","sourceRoot":"","sources":["../../src/ui/payment.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,eAAe,EACf,WAAW,GACZ,MAAM,aAAa,CAAC;AASrB,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;CACF;AA4BD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAsB;IACtD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;IACnC,MAAM,aAAa,GAAG,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;IAE9C,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE
|
|
1
|
+
{"version":3,"file":"payment.js","sourceRoot":"","sources":["../../src/ui/payment.ts"],"names":[],"mappings":"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"}
|
package/dist/ui/portal.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function portalUrl(apiBaseUrl: string, path?: string): string;
|
|
1
|
+
export declare function portalUrl(apiBaseUrl: string, path?: string, query?: Record<string, string>): string;
|
package/dist/ui/portal.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export function portalUrl(apiBaseUrl, path = "/") {
|
|
1
|
+
export function portalUrl(apiBaseUrl, path = "/", query) {
|
|
2
2
|
let origin;
|
|
3
3
|
try {
|
|
4
4
|
const u = new URL(apiBaseUrl);
|
|
@@ -11,11 +11,16 @@ export function portalUrl(apiBaseUrl, path = "/") {
|
|
|
11
11
|
u.pathname = path.startsWith("/") ? path : `/${path}`;
|
|
12
12
|
u.search = "";
|
|
13
13
|
u.hash = "";
|
|
14
|
+
if (query) {
|
|
15
|
+
for (const [k, v] of Object.entries(query))
|
|
16
|
+
u.searchParams.set(k, v);
|
|
17
|
+
}
|
|
14
18
|
origin = u.toString();
|
|
15
19
|
}
|
|
16
20
|
catch {
|
|
17
21
|
const base = apiBaseUrl.replace(/\/+$/, "");
|
|
18
|
-
|
|
22
|
+
const qs = query ? `?${new URLSearchParams(query).toString()}` : "";
|
|
23
|
+
origin = `${base}${path.startsWith("/") ? path : `/${path}`}${qs}`;
|
|
19
24
|
}
|
|
20
25
|
return origin;
|
|
21
26
|
}
|
package/dist/ui/portal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"portal.js","sourceRoot":"","sources":["../../src/ui/portal.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,
|
|
1
|
+
{"version":3,"file":"portal.js","sourceRoot":"","sources":["../../src/ui/portal.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,SAAS,CACvB,UAAkB,EAClB,IAAI,GAAG,GAAG,EACV,KAA8B;IAE9B,IAAI,MAAc,CAAC;IACnB,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC;QAC9B,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,QAAQ,KAAK,WAAW,IAAI,CAAC,CAAC,QAAQ,KAAK,WAAW,CAAC,EAAE,CAAC;YACpF,CAAC,CAAC,IAAI,GAAG,MAAM,CAAC;QAClB,CAAC;aAAM,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACzC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC/C,CAAC;QACD,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;QACtD,CAAC,CAAC,MAAM,GAAG,EAAE,CAAC;QACd,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC;QACZ,IAAI,KAAK,EAAE,CAAC;YACV,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;gBAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC;QACD,MAAM,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAC5C,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpE,MAAM,GAAG,GAAG,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC;IACrE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ApiClient } from "../api/client.js";
|
|
2
|
+
import type { AuthMode } from "../auth/scope.js";
|
|
3
|
+
import type { Project } from "../api/types.js";
|
|
4
|
+
export interface OrderWizardProjects {
|
|
5
|
+
projects: Project[];
|
|
6
|
+
/** Team id + name to print in the wizard's "Team: …" banner, when known.
|
|
7
|
+
* Only populated under API-key auth — session mode resolves the active
|
|
8
|
+
* team from local config/tokens instead (see callers). */
|
|
9
|
+
team?: {
|
|
10
|
+
id: string;
|
|
11
|
+
name: string;
|
|
12
|
+
};
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Resolve the projects an order wizard should offer to bill against.
|
|
16
|
+
*
|
|
17
|
+
* `GET /account/projects` is session-only (no entry in the backend's
|
|
18
|
+
* `_API_KEY_RULES`, so an API key gets a hard 403 — see
|
|
19
|
+
* `backend/app/dependencies.py::_resolve_api_key`). Under API-key auth we
|
|
20
|
+
* use `GET /organization/api-keys/whoami` instead: it's granted to any
|
|
21
|
+
* valid key regardless of scope (introspection) and already returns the
|
|
22
|
+
* key's addressable projects (narrowed to the key's `api_key_projects`
|
|
23
|
+
* allowlist when it has one, otherwise every project on the key's team).
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveOrderWizardProjects(api: ApiClient, authMode: AuthMode): Promise<OrderWizardProjects>;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the projects an order wizard should offer to bill against.
|
|
3
|
+
*
|
|
4
|
+
* `GET /account/projects` is session-only (no entry in the backend's
|
|
5
|
+
* `_API_KEY_RULES`, so an API key gets a hard 403 — see
|
|
6
|
+
* `backend/app/dependencies.py::_resolve_api_key`). Under API-key auth we
|
|
7
|
+
* use `GET /organization/api-keys/whoami` instead: it's granted to any
|
|
8
|
+
* valid key regardless of scope (introspection) and already returns the
|
|
9
|
+
* key's addressable projects (narrowed to the key's `api_key_projects`
|
|
10
|
+
* allowlist when it has one, otherwise every project on the key's team).
|
|
11
|
+
*/
|
|
12
|
+
export async function resolveOrderWizardProjects(api, authMode) {
|
|
13
|
+
if (authMode === "api_key") {
|
|
14
|
+
const who = await api.auth.apiKeyWhoami();
|
|
15
|
+
const now = new Date().toISOString();
|
|
16
|
+
return {
|
|
17
|
+
projects: who.projects.map((p) => ({
|
|
18
|
+
id: p.id,
|
|
19
|
+
team_id: who.team_id,
|
|
20
|
+
name: p.name,
|
|
21
|
+
description: null,
|
|
22
|
+
is_default: p.is_default,
|
|
23
|
+
created_at: now,
|
|
24
|
+
})),
|
|
25
|
+
team: { id: who.team_id, name: who.team_name },
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
const projects = await api.projects.list();
|
|
29
|
+
return { projects };
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=project-resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project-resolve.js","sourceRoot":"","sources":["../../src/ui/project-resolve.ts"],"names":[],"mappings":"AAYA;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,GAAc,EACd,QAAkB;IAElB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1C,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrC,OAAO;YACL,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gBACjC,EAAE,EAAE,CAAC,CAAC,EAAE;gBACR,OAAO,EAAE,GAAG,CAAC,OAAO;gBACpB,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,UAAU,EAAE,GAAG;aAChB,CAAC,CAAC;YACH,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,SAAS,EAAE;SAC/C,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC3C,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB,CAAC"}
|
package/dist/ui/render-mode.d.ts
CHANGED
|
@@ -5,6 +5,11 @@ export declare function setRenderMode(opts: {
|
|
|
5
5
|
envOverride?: string;
|
|
6
6
|
noColor?: boolean;
|
|
7
7
|
isTty?: boolean;
|
|
8
|
+
/** stdout carries a JSON document (`-o json`, or piped). Chrome — clack
|
|
9
|
+
* spinners and pickers, progress checklists — draws on stdout and would
|
|
10
|
+
* corrupt it, so JSON output forces plain mode whatever the persisted
|
|
11
|
+
* setting or SYNTEQ_TUI says. */
|
|
12
|
+
jsonOutput?: boolean;
|
|
8
13
|
}): RenderMode;
|
|
9
14
|
export declare function getRenderMode(): RenderMode;
|
|
10
15
|
export declare const isTui: () => boolean;
|
package/dist/ui/render-mode.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-mode.js","sourceRoot":"","sources":["../../src/ui/render-mode.ts"],"names":[],"mappings":"AAIA,IAAI,OAAO,GAAe,KAAK,CAAC;AAEhC,MAAM,UAAU,aAAa,CAAC,
|
|
1
|
+
{"version":3,"file":"render-mode.js","sourceRoot":"","sources":["../../src/ui/render-mode.ts"],"names":[],"mappings":"AAIA,IAAI,OAAO,GAAe,KAAK,CAAC;AAEhC,MAAM,UAAU,aAAa,CAAC,IAU7B;IACC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpC,OAAO,GAAG,KAAK,CAAC;QAChB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;QAC5D,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,WAAW,KAAK,GAAG,IAAI,IAAI,CAAC,WAAW,KAAK,OAAO,EAAE,CAAC;QAC7D,OAAO,GAAG,KAAK,CAAC;QAChB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QAC5B,OAAO,GAAG,IAAI,CAAC;QACf,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE,CAAC;QAC7B,OAAO,GAAG,KAAK,CAAC;QAChB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACpC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,CAAC,MAAM,KAAK,GAAG,GAAY,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC"}
|
|
@@ -28,9 +28,6 @@ export function formatResourceDetail(v) {
|
|
|
28
28
|
};
|
|
29
29
|
addPanel(`${v.hostname} — ${statusColor(v.status)}`, [
|
|
30
30
|
["Id", v.id],
|
|
31
|
-
["VMID", v.vmid],
|
|
32
|
-
["Node", v.node],
|
|
33
|
-
["Cluster", v.cluster_id],
|
|
34
31
|
["Location", v.location?.city ?? v.location?.name ?? undefined],
|
|
35
32
|
["Project", v.project_name ?? undefined],
|
|
36
33
|
["Team", v.team_name ?? undefined],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resource-detail.js","sourceRoot":"","sources":["../../src/ui/resource-detail.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,eAAe,CAAC,YAAwB,EAAE,KAAa;IACrE,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAE9B,mEAAmE;IACnE,kEAAkE;IAClE,2DAA2D;IAC3D,MAAM,WAAW,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC;IAEhG,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAC;IACpE,IAAI,OAAO,CAAC,MAAM;QAAE,OAAO,OAAO,CAAC;IAEnC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7E,IAAI,QAAQ,CAAC,MAAM;QAAE,OAAO,QAAQ,CAAC;IAErC,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACrF,IAAI,YAAY,CAAC,MAAM;QAAE,OAAO,YAAY,CAAC;IAE7C,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACtC,CAAC,CAAC,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAC1E,CAAC;IACF,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAW;IAE9C,MAAM,QAAQ,GAAa,EAAE,CAAC;IAC9B,MAAM,QAAQ,GAAG,CAAC,KAAa,EAAE,IAAwB,EAAQ,EAAE;QACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,QAAQ;YAAE,OAAO;QACtB,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACpC,CAAC,CAAC;IAEF,QAAQ,CAAC,GAAG,CAAC,CAAC,QAAQ,MAAM,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE;QACnD,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC;QACZ,CAAC,
|
|
1
|
+
{"version":3,"file":"resource-detail.js","sourceRoot":"","sources":["../../src/ui/resource-detail.ts"],"names":[],"mappings":"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"}
|