@seamapi/cli 0.18.2 → 0.20.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 +4 -4
- package/bin/cli.js +73 -249
- package/bin/cli.js.map +1 -1
- package/lib/args/coerce.d.ts +28 -0
- package/lib/args/coerce.js +131 -0
- package/lib/args/coerce.js.map +1 -0
- package/lib/{util/cli-args.d.ts → args/parse.d.ts} +12 -15
- package/lib/{util/cli-args.js → args/parse.js} +21 -24
- package/lib/args/parse.js.map +1 -0
- package/lib/args/validate.d.ts +23 -0
- package/lib/args/validate.js +42 -0
- package/lib/args/validate.js.map +1 -0
- package/lib/auth/operations.d.ts +54 -0
- package/lib/auth/operations.js +122 -0
- package/lib/auth/operations.js.map +1 -0
- package/lib/{validate-token.js → auth/validate-token.js} +2 -2
- package/lib/auth/validate-token.js.map +1 -0
- package/lib/blueprint/cache.d.ts +16 -0
- package/lib/blueprint/cache.js +73 -0
- package/lib/blueprint/cache.js.map +1 -0
- package/lib/blueprint/endpoint.d.ts +14 -0
- package/lib/{get-response-key.js → blueprint/endpoint.js} +11 -2
- package/lib/blueprint/endpoint.js.map +1 -0
- package/lib/blueprint/index.d.ts +12 -0
- package/lib/blueprint/index.js +10 -0
- package/lib/blueprint/index.js.map +1 -0
- package/lib/blueprint/source-npm.d.ts +10 -0
- package/lib/{blueprint.js → blueprint/source-npm.js} +20 -74
- package/lib/blueprint/source-npm.js.map +1 -0
- package/lib/blueprint/source-remote.d.ts +6 -0
- package/lib/blueprint/source-remote.js +14 -0
- package/lib/blueprint/source-remote.js.map +1 -0
- package/lib/commands/api-command.d.ts +8 -0
- package/lib/commands/api-command.js +71 -0
- package/lib/commands/api-command.js.map +1 -0
- package/lib/commands/local/completion.d.ts +18 -0
- package/lib/commands/local/completion.js +35 -0
- package/lib/commands/local/completion.js.map +1 -0
- package/lib/commands/local/config-reveal-location.d.ts +2 -0
- package/lib/commands/local/config-reveal-location.js +15 -0
- package/lib/commands/local/config-reveal-location.js.map +1 -0
- package/lib/commands/local/config-use-remote-api-defs.d.ts +2 -0
- package/lib/commands/local/config-use-remote-api-defs.js +20 -0
- package/lib/commands/local/config-use-remote-api-defs.js.map +1 -0
- package/lib/commands/local/health.d.ts +2 -0
- package/lib/commands/local/health.js +18 -0
- package/lib/commands/local/health.js.map +1 -0
- package/lib/commands/local/login.d.ts +2 -0
- package/lib/commands/local/login.js +35 -0
- package/lib/commands/local/login.js.map +1 -0
- package/lib/commands/local/logout.d.ts +2 -0
- package/lib/commands/local/logout.js +17 -0
- package/lib/commands/local/logout.js.map +1 -0
- package/lib/commands/local/select-endpoint.d.ts +2 -0
- package/lib/commands/local/select-endpoint.js +27 -0
- package/lib/commands/local/select-endpoint.js.map +1 -0
- package/lib/commands/local/select-workspace.d.ts +2 -0
- package/lib/commands/local/select-workspace.js +22 -0
- package/lib/commands/local/select-workspace.js.map +1 -0
- package/lib/commands/local/wizard.d.ts +9 -0
- package/lib/commands/local/wizard.js +28 -0
- package/lib/commands/local/wizard.js.map +1 -0
- package/lib/commands/registry.d.ts +54 -0
- package/lib/commands/registry.js +62 -0
- package/lib/commands/registry.js.map +1 -0
- package/lib/{command-spec.d.ts → commands/spec.d.ts} +8 -12
- package/lib/{command-spec.js → commands/spec.js} +27 -120
- package/lib/commands/spec.js.map +1 -0
- package/lib/config/config-store.d.ts +23 -8
- package/lib/config/config-store.js +16 -42
- package/lib/config/config-store.js.map +1 -1
- package/lib/config/index.d.ts +2 -1
- package/lib/config/index.js +2 -1
- package/lib/config/index.js.map +1 -1
- package/lib/config/memory-config-store.d.ts +21 -0
- package/lib/config/memory-config-store.js +48 -0
- package/lib/config/memory-config-store.js.map +1 -0
- package/lib/config/migrate.js +1 -1
- package/lib/config/migrate.js.map +1 -1
- package/lib/config/values.d.ts +12 -0
- package/lib/config/values.js +50 -0
- package/lib/config/values.js.map +1 -0
- package/lib/context.d.ts +37 -0
- package/lib/context.js +33 -0
- package/lib/context.js.map +1 -0
- package/lib/env.d.ts +7 -2
- package/lib/env.js +7 -2
- package/lib/env.js.map +1 -1
- package/lib/errors.d.ts +31 -0
- package/lib/errors.js +58 -0
- package/lib/errors.js.map +1 -0
- package/lib/http/api.d.ts +37 -0
- package/lib/http/api.js +20 -0
- package/lib/http/api.js.map +1 -0
- package/lib/http/client.d.ts +4 -0
- package/lib/{get-seam.js → http/client.js} +16 -17
- package/lib/http/client.js.map +1 -0
- package/lib/http/follow-ups.d.ts +6 -0
- package/lib/http/follow-ups.js +30 -0
- package/lib/http/follow-ups.js.map +1 -0
- package/lib/http/memory-seam-api.d.ts +22 -0
- package/lib/http/memory-seam-api.js +41 -0
- package/lib/http/memory-seam-api.js.map +1 -0
- package/lib/http/request.d.ts +19 -0
- package/lib/http/request.js +39 -0
- package/lib/http/request.js.map +1 -0
- package/lib/{interact-for-access-code.js → interactions/access-code.js} +4 -4
- package/lib/interactions/access-code.js.map +1 -0
- package/lib/{interact-for-acs-entrance.js → interactions/acs-entrance.js} +3 -3
- package/lib/interactions/acs-entrance.js.map +1 -0
- package/lib/{interact-for-acs-system.js → interactions/acs-system.js} +3 -3
- package/lib/interactions/acs-system.js.map +1 -0
- package/lib/{interact-for-acs-user.js → interactions/acs-user.js} +4 -4
- package/lib/interactions/acs-user.js.map +1 -0
- package/lib/{interact-for-action-attempt-poll.js → interactions/action-attempt-poll.js} +5 -5
- package/lib/interactions/action-attempt-poll.js.map +1 -0
- package/lib/{interact-for-array.js → interactions/array.js} +4 -3
- package/lib/interactions/array.js.map +1 -0
- package/lib/{interact-for-blueprint-object.d.ts → interactions/blueprint-object.d.ts} +3 -2
- package/lib/{interact-for-blueprint-object.js → interactions/blueprint-object.js} +49 -20
- package/lib/interactions/blueprint-object.js.map +1 -0
- package/lib/{interact-for-command-params.d.ts → interactions/command-params.d.ts} +2 -2
- package/lib/{interact-for-command-params.js → interactions/command-params.js} +4 -3
- package/lib/interactions/command-params.js.map +1 -0
- package/lib/interactions/command-selection.d.ts +10 -0
- package/lib/{interact-for-command-selection.js → interactions/command-selection.js} +9 -15
- package/lib/interactions/command-selection.js.map +1 -0
- package/lib/{interact-for-connected-account.js → interactions/connected-account.js} +3 -3
- package/lib/interactions/connected-account.js.map +1 -0
- package/lib/{interact-for-custom-metadata.js → interactions/custom-metadata.js} +4 -3
- package/lib/interactions/custom-metadata.js.map +1 -0
- package/lib/{interact-for-device.js → interactions/device.js} +3 -3
- package/lib/interactions/device.js.map +1 -0
- package/lib/interactions/endpoint-selection.d.ts +1 -0
- package/lib/interactions/endpoint-selection.js +39 -0
- package/lib/interactions/endpoint-selection.js.map +1 -0
- package/lib/interactions/index.d.ts +19 -0
- package/lib/interactions/index.js +20 -0
- package/lib/interactions/index.js.map +1 -0
- package/lib/{interact-for-login.js → interactions/login.js} +16 -14
- package/lib/interactions/login.js.map +1 -0
- package/lib/{interact-for-resource.js → interactions/resource.js} +3 -3
- package/lib/interactions/resource.js.map +1 -0
- package/lib/{interact-for-timestamp.js → interactions/timestamp.js} +2 -2
- package/lib/interactions/timestamp.js.map +1 -0
- package/lib/{interact-for-use-remote-api-defs.js → interactions/use-remote-api-defs.js} +5 -6
- package/lib/interactions/use-remote-api-defs.js.map +1 -0
- package/lib/{interact-for-user-identity.js → interactions/user-identity.js} +3 -3
- package/lib/interactions/user-identity.js.map +1 -0
- package/lib/{interact-for-workspace-id.js → interactions/workspace-id.js} +11 -10
- package/lib/interactions/workspace-id.js.map +1 -0
- package/lib/memory-prompt.d.ts +32 -0
- package/lib/memory-prompt.js +41 -0
- package/lib/memory-prompt.js.map +1 -0
- package/lib/output/get-output.d.ts +1 -1
- package/lib/output/get-output.js +1 -1
- package/lib/output/get-output.js.map +1 -1
- package/lib/output/{create-memory-output.d.ts → memory-output.d.ts} +1 -1
- package/lib/output/{create-memory-output.js → memory-output.js} +2 -2
- package/lib/output/memory-output.js.map +1 -0
- package/lib/output/{create-output.d.ts → output.d.ts} +18 -1
- package/lib/output/output.js +46 -0
- package/lib/output/output.js.map +1 -0
- package/lib/output/read-stdin-json.js.map +1 -0
- package/lib/output/resolve-output-format.d.ts +1 -1
- package/lib/{util → output}/with-loading.js +1 -1
- package/lib/output/with-loading.js.map +1 -0
- package/lib/prompt.d.ts +101 -0
- package/lib/{util/prompt.js → prompt.js} +83 -56
- package/lib/prompt.js.map +1 -0
- package/lib/{completion → render/completion}/describe.js +1 -2
- package/lib/render/completion/describe.js.map +1 -0
- package/lib/{completion → render/completion}/index.d.ts +2 -2
- package/lib/{completion → render/completion}/index.js +1 -2
- package/lib/render/completion/index.js.map +1 -0
- package/lib/{completion → render/completion}/render-bash.d.ts +1 -1
- package/lib/{completion → render/completion}/render-bash.js +1 -1
- package/lib/render/completion/render-bash.js.map +1 -0
- package/lib/{completion → render/completion}/render-fish.d.ts +1 -1
- package/lib/render/completion/render-fish.js.map +1 -0
- package/lib/{completion → render/completion}/render-zsh.d.ts +1 -1
- package/lib/{completion → render/completion}/render-zsh.js +1 -1
- package/lib/render/completion/render-zsh.js.map +1 -0
- package/lib/{render-help.d.ts → render/help.d.ts} +1 -1
- package/lib/{render-help.js → render/help.js} +2 -2
- package/lib/render/help.js.map +1 -0
- package/lib/render/text.d.ts +4 -0
- package/lib/render/text.js +16 -0
- package/lib/render/text.js.map +1 -0
- package/lib/version.d.ts +2 -2
- package/lib/version.js +2 -2
- package/package.json +4 -3
- package/src/bin/cli.ts +91 -332
- package/src/lib/args/coerce.ts +164 -0
- package/src/lib/{util/cli-args.ts → args/parse.ts} +30 -25
- package/src/lib/args/validate.ts +73 -0
- package/src/lib/auth/operations.ts +177 -0
- package/src/lib/{validate-token.ts → auth/validate-token.ts} +2 -2
- package/src/lib/blueprint/cache.ts +97 -0
- package/src/lib/{get-response-key.ts → blueprint/endpoint.ts} +17 -3
- package/src/lib/blueprint/index.ts +27 -0
- package/src/lib/{blueprint.ts → blueprint/source-npm.ts} +27 -99
- package/src/lib/blueprint/source-remote.ts +17 -0
- package/src/lib/commands/api-command.ts +109 -0
- package/src/lib/commands/local/completion.ts +51 -0
- package/src/lib/commands/local/config-reveal-location.ts +16 -0
- package/src/lib/commands/local/config-use-remote-api-defs.ts +23 -0
- package/src/lib/commands/local/health.ts +22 -0
- package/src/lib/commands/local/login.ts +42 -0
- package/src/lib/commands/local/logout.ts +18 -0
- package/src/lib/commands/local/select-endpoint.ts +30 -0
- package/src/lib/commands/local/select-workspace.ts +25 -0
- package/src/lib/commands/local/wizard.ts +31 -0
- package/src/lib/commands/registry.ts +125 -0
- package/src/lib/{command-spec.ts → commands/spec.ts} +30 -131
- package/src/lib/config/config-store.ts +39 -64
- package/src/lib/config/index.ts +8 -1
- package/src/lib/config/memory-config-store.ts +62 -0
- package/src/lib/config/migrate.ts +1 -1
- package/src/lib/config/values.ts +72 -0
- package/src/lib/context.ts +88 -0
- package/src/lib/env.ts +11 -4
- package/src/lib/errors.ts +67 -0
- package/src/lib/http/api.ts +61 -0
- package/src/lib/{get-seam.ts → http/client.ts} +19 -18
- package/src/lib/http/follow-ups.ts +42 -0
- package/src/lib/http/memory-seam-api.ts +57 -0
- package/src/lib/http/request.ts +69 -0
- package/src/lib/{interact-for-access-code.ts → interactions/access-code.ts} +4 -3
- package/src/lib/{interact-for-acs-entrance.ts → interactions/acs-entrance.ts} +3 -2
- package/src/lib/{interact-for-acs-system.ts → interactions/acs-system.ts} +3 -2
- package/src/lib/{interact-for-acs-user.ts → interactions/acs-user.ts} +4 -3
- package/src/lib/{interact-for-action-attempt-poll.ts → interactions/action-attempt-poll.ts} +4 -4
- package/src/lib/{interact-for-array.ts → interactions/array.ts} +3 -3
- package/src/lib/{interact-for-blueprint-object.ts → interactions/blueprint-object.ts} +57 -24
- package/src/lib/{interact-for-command-params.ts → interactions/command-params.ts} +6 -4
- package/src/lib/{interact-for-command-selection.ts → interactions/command-selection.ts} +11 -23
- package/src/lib/{interact-for-connected-account.ts → interactions/connected-account.ts} +3 -2
- package/src/lib/{interact-for-custom-metadata.ts → interactions/custom-metadata.ts} +3 -7
- package/src/lib/{interact-for-device.ts → interactions/device.ts} +3 -2
- package/src/lib/interactions/endpoint-selection.ts +48 -0
- package/src/lib/interactions/index.ts +19 -0
- package/src/lib/{interact-for-login.ts → interactions/login.ts} +16 -13
- package/src/lib/{interact-for-resource.ts → interactions/resource.ts} +2 -2
- package/src/lib/{interact-for-timestamp.ts → interactions/timestamp.ts} +1 -1
- package/src/lib/{interact-for-use-remote-api-defs.ts → interactions/use-remote-api-defs.ts} +4 -5
- package/src/lib/{interact-for-user-identity.ts → interactions/user-identity.ts} +3 -2
- package/src/lib/{interact-for-workspace-id.ts → interactions/workspace-id.ts} +10 -17
- package/src/lib/memory-prompt.ts +89 -0
- package/src/lib/output/get-output.ts +1 -1
- package/src/lib/output/{create-memory-output.ts → memory-output.ts} +1 -1
- package/src/lib/output/{create-output.ts → output.ts} +47 -32
- package/src/lib/output/resolve-output-format.ts +1 -1
- package/src/lib/{util → output}/with-loading.ts +1 -1
- package/src/lib/prompt.ts +306 -0
- package/src/lib/{completion → render/completion}/describe.ts +1 -2
- package/src/lib/{completion → render/completion}/index.ts +3 -4
- package/src/lib/{completion → render/completion}/render-bash.ts +1 -1
- package/src/lib/{completion → render/completion}/render-fish.ts +2 -1
- package/src/lib/{completion → render/completion}/render-zsh.ts +2 -1
- package/src/lib/{render-help.ts → render/help.ts} +1 -1
- package/src/lib/render/text.ts +17 -0
- package/src/lib/version.ts +2 -2
- package/lib/blueprint.d.ts +0 -7
- package/lib/blueprint.js.map +0 -1
- package/lib/command-spec.js.map +0 -1
- package/lib/completion/describe.js.map +0 -1
- package/lib/completion/index.js.map +0 -1
- package/lib/completion/render-bash.js.map +0 -1
- package/lib/completion/render-fish.js.map +0 -1
- package/lib/completion/render-zsh.js.map +0 -1
- package/lib/get-api-blueprint.d.ts +0 -6
- package/lib/get-api-blueprint.js +0 -18
- package/lib/get-api-blueprint.js.map +0 -1
- package/lib/get-command-blueprint-def.d.ts +0 -2
- package/lib/get-command-blueprint-def.js +0 -11
- package/lib/get-command-blueprint-def.js.map +0 -1
- package/lib/get-credentials.d.ts +0 -15
- package/lib/get-credentials.js +0 -35
- package/lib/get-credentials.js.map +0 -1
- package/lib/get-current-workspace-id.d.ts +0 -1
- package/lib/get-current-workspace-id.js +0 -9
- package/lib/get-current-workspace-id.js.map +0 -1
- package/lib/get-response-key.d.ts +0 -9
- package/lib/get-response-key.js.map +0 -1
- package/lib/get-seam.d.ts +0 -3
- package/lib/get-seam.js.map +0 -1
- package/lib/get-server.d.ts +0 -6
- package/lib/get-server.js +0 -17
- package/lib/get-server.js.map +0 -1
- package/lib/interact-for-access-code.js.map +0 -1
- package/lib/interact-for-acs-entrance.js.map +0 -1
- package/lib/interact-for-acs-system.js.map +0 -1
- package/lib/interact-for-acs-user.js.map +0 -1
- package/lib/interact-for-action-attempt-poll.js.map +0 -1
- package/lib/interact-for-array.js.map +0 -1
- package/lib/interact-for-blueprint-object.js.map +0 -1
- package/lib/interact-for-command-params.js.map +0 -1
- package/lib/interact-for-command-selection.d.ts +0 -2
- package/lib/interact-for-command-selection.js.map +0 -1
- package/lib/interact-for-connected-account.js.map +0 -1
- package/lib/interact-for-custom-metadata.js.map +0 -1
- package/lib/interact-for-device.js.map +0 -1
- package/lib/interact-for-login.js.map +0 -1
- package/lib/interact-for-resource.js.map +0 -1
- package/lib/interact-for-server-selection.d.ts +0 -1
- package/lib/interact-for-server-selection.js +0 -39
- package/lib/interact-for-server-selection.js.map +0 -1
- package/lib/interact-for-timestamp.js.map +0 -1
- package/lib/interact-for-use-remote-api-defs.js.map +0 -1
- package/lib/interact-for-user-identity.js.map +0 -1
- package/lib/interact-for-workspace-id.js.map +0 -1
- package/lib/output/create-memory-output.js.map +0 -1
- package/lib/output/create-output.js +0 -34
- package/lib/output/create-output.js.map +0 -1
- package/lib/render-help.js.map +0 -1
- package/lib/types.d.ts +0 -6
- package/lib/types.js +0 -2
- package/lib/types.js.map +0 -1
- package/lib/util/cli-args.js.map +0 -1
- package/lib/util/ellipsis.d.ts +0 -1
- package/lib/util/ellipsis.js +0 -6
- package/lib/util/ellipsis.js.map +0 -1
- package/lib/util/prompt.d.ts +0 -80
- package/lib/util/prompt.js.map +0 -1
- package/lib/util/read-stdin-json.js.map +0 -1
- package/lib/util/request-seam-api.d.ts +0 -7
- package/lib/util/request-seam-api.js +0 -26
- package/lib/util/request-seam-api.js.map +0 -1
- package/lib/util/with-loading.js.map +0 -1
- package/lib/validate-token.js.map +0 -1
- package/src/lib/get-api-blueprint.ts +0 -31
- package/src/lib/get-command-blueprint-def.ts +0 -15
- package/src/lib/get-credentials.ts +0 -38
- package/src/lib/get-current-workspace-id.ts +0 -9
- package/src/lib/get-server.ts +0 -20
- package/src/lib/interact-for-server-selection.ts +0 -50
- package/src/lib/types.ts +0 -7
- package/src/lib/util/ellipsis.ts +0 -4
- package/src/lib/util/prompt.ts +0 -229
- package/src/lib/util/request-seam-api.ts +0 -47
- /package/lib/{validate-token.d.ts → auth/validate-token.d.ts} +0 -0
- /package/lib/{interact-for-access-code.d.ts → interactions/access-code.d.ts} +0 -0
- /package/lib/{interact-for-acs-entrance.d.ts → interactions/acs-entrance.d.ts} +0 -0
- /package/lib/{interact-for-acs-system.d.ts → interactions/acs-system.d.ts} +0 -0
- /package/lib/{interact-for-acs-user.d.ts → interactions/acs-user.d.ts} +0 -0
- /package/lib/{interact-for-action-attempt-poll.d.ts → interactions/action-attempt-poll.d.ts} +0 -0
- /package/lib/{interact-for-array.d.ts → interactions/array.d.ts} +0 -0
- /package/lib/{interact-for-connected-account.d.ts → interactions/connected-account.d.ts} +0 -0
- /package/lib/{interact-for-custom-metadata.d.ts → interactions/custom-metadata.d.ts} +0 -0
- /package/lib/{interact-for-device.d.ts → interactions/device.d.ts} +0 -0
- /package/lib/{interact-for-login.d.ts → interactions/login.d.ts} +0 -0
- /package/lib/{interact-for-resource.d.ts → interactions/resource.d.ts} +0 -0
- /package/lib/{interact-for-timestamp.d.ts → interactions/timestamp.d.ts} +0 -0
- /package/lib/{interact-for-use-remote-api-defs.d.ts → interactions/use-remote-api-defs.d.ts} +0 -0
- /package/lib/{interact-for-user-identity.d.ts → interactions/user-identity.d.ts} +0 -0
- /package/lib/{interact-for-workspace-id.d.ts → interactions/workspace-id.d.ts} +0 -0
- /package/lib/{util → output}/read-stdin-json.d.ts +0 -0
- /package/lib/{util → output}/read-stdin-json.js +0 -0
- /package/lib/{util → output}/with-loading.d.ts +0 -0
- /package/lib/{completion → render/completion}/describe.d.ts +0 -0
- /package/lib/{completion → render/completion}/render-fish.js +0 -0
- /package/src/lib/{util → output}/read-stdin-json.ts +0 -0
package/README.md
CHANGED
|
@@ -183,12 +183,12 @@ so it can be inspected from a pipe; anything else is written to stderr only.
|
|
|
183
183
|
|
|
184
184
|
### Environment variables
|
|
185
185
|
|
|
186
|
-
Everything `seam login`, `seam select workspace`, and `seam select
|
|
186
|
+
Everything `seam login`, `seam select workspace`, and `seam select endpoint`
|
|
187
187
|
store may be given in the environment instead:
|
|
188
188
|
|
|
189
189
|
- `SEAM_CLI_TOKEN`: a Personal Access Token or API Key,
|
|
190
190
|
- `SEAM_CLI_WORKSPACE_ID`: the workspace requests are made against,
|
|
191
|
-
- `SEAM_CLI_ENDPOINT`: the Seam API
|
|
191
|
+
- `SEAM_CLI_ENDPOINT`: the Seam API endpoint requests are made to.
|
|
192
192
|
|
|
193
193
|
Any of them, all of them, or none of them may be set. Each one wins over the
|
|
194
194
|
corresponding stored value, which makes them useful for CI, for a single
|
|
@@ -213,7 +213,7 @@ Personal Access Token works across workspaces, so it needs one from either
|
|
|
213
213
|
The command that would store an overridden value fails rather than storing
|
|
214
214
|
something the environment ignores: `seam login` and `seam logout` while
|
|
215
215
|
`SEAM_CLI_TOKEN` is set, `seam select workspace` while
|
|
216
|
-
`SEAM_CLI_WORKSPACE_ID` is set, and `seam select
|
|
216
|
+
`SEAM_CLI_WORKSPACE_ID` is set, and `seam select endpoint` while
|
|
217
217
|
`SEAM_CLI_ENDPOINT` is set. Unset the variable to use those commands.
|
|
218
218
|
|
|
219
219
|
```bash
|
|
@@ -278,7 +278,7 @@ the loaders for all three shells.
|
|
|
278
278
|
Completions are generated from the cached Seam API definitions, so they may
|
|
279
279
|
briefly lag a newly released API. Pass `--update` to refresh the cache first,
|
|
280
280
|
e.g., `seam completion bash --update`. They do not reflect definitions served
|
|
281
|
-
by another Seam API
|
|
281
|
+
by another Seam API endpoint when `seam config use-remote-api-defs` is enabled.
|
|
282
282
|
|
|
283
283
|
If completions do not appear after installing them system wide:
|
|
284
284
|
|
package/bin/cli.js
CHANGED
|
@@ -1,34 +1,27 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { randomBytes } from 'node:crypto';
|
|
3
2
|
import { isDeepStrictEqual as isEqual } from 'node:util';
|
|
4
3
|
import chalk from 'chalk';
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { cliFlags, getInteractivity, parseCliArgs, toParameterName, } from '../lib/args/parse.js';
|
|
5
|
+
import { assertKnownArgs } from '../lib/args/validate.js';
|
|
6
|
+
import { getApiBlueprint } from '../lib/blueprint/index.js';
|
|
7
|
+
import { printCompletion } from '../lib/commands/local/completion.js';
|
|
8
|
+
import { runWizard } from '../lib/commands/local/wizard.js';
|
|
9
|
+
import { acceptedParamsOf, buildRegistry, findLocalCommand, } from '../lib/commands/registry.js';
|
|
7
10
|
import { getConfigStore } from '../lib/config/index.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { getServer } from '../lib/get-server.js';
|
|
14
|
-
import { interactForActionAttemptPoll } from '../lib/interact-for-action-attempt-poll.js';
|
|
15
|
-
import { interactForCommandParams } from '../lib/interact-for-command-params.js';
|
|
16
|
-
import { interactForCommandSelection } from '../lib/interact-for-command-selection.js';
|
|
17
|
-
import { interactForLogin } from '../lib/interact-for-login.js';
|
|
18
|
-
import { interactForServerSelection } from '../lib/interact-for-server-selection.js';
|
|
19
|
-
import { interactForUseRemoteApiDefs } from '../lib/interact-for-use-remote-api-defs.js';
|
|
20
|
-
import { interactForWorkspaceId } from '../lib/interact-for-workspace-id.js';
|
|
21
|
-
import { createOutput } from '../lib/output/create-output.js';
|
|
11
|
+
import { resolveAuth } from '../lib/context.js';
|
|
12
|
+
import { tokenEnvVar } from '../lib/env.js';
|
|
13
|
+
import { reportErrorAndExit } from '../lib/errors.js';
|
|
14
|
+
import { createSeamApi } from '../lib/http/api.js';
|
|
15
|
+
import { interactForCommandSelection } from '../lib/interactions/index.js';
|
|
22
16
|
import { getOutput, setOutput } from '../lib/output/get-output.js';
|
|
17
|
+
import { createOutput } from '../lib/output/output.js';
|
|
18
|
+
import { readStdinJson } from '../lib/output/read-stdin-json.js';
|
|
23
19
|
import { resolveOutputFormat } from '../lib/output/resolve-output-format.js';
|
|
24
|
-
import {
|
|
25
|
-
import {
|
|
26
|
-
import {
|
|
27
|
-
import { readStdinJson } from '../lib/util/read-stdin-json.js';
|
|
28
|
-
import { RequestSeamApi } from '../lib/util/request-seam-api.js';
|
|
29
|
-
import { validateToken } from '../lib/validate-token.js';
|
|
20
|
+
import { canPrompt } from '../lib/prompt.js';
|
|
21
|
+
import { completionShells, isCompletionShell, } from '../lib/render/completion/index.js';
|
|
22
|
+
import { renderHelp } from '../lib/render/help.js';
|
|
30
23
|
import seamapiCliVersion from '../lib/version.js';
|
|
31
|
-
async function cli(args) {
|
|
24
|
+
async function cli(args, argv) {
|
|
32
25
|
const config = getConfigStore();
|
|
33
26
|
const output = getOutput();
|
|
34
27
|
const update = args['update'] === true;
|
|
@@ -36,7 +29,8 @@ async function cli(args) {
|
|
|
36
29
|
if (helpFlag != null) {
|
|
37
30
|
// Help comes from the cached API definitions so that it works without
|
|
38
31
|
// logging in, and offline once the cache is warm.
|
|
39
|
-
const
|
|
32
|
+
const cachedBlueprint = await getApiBlueprint({ update });
|
|
33
|
+
const { spec } = buildRegistry(cachedBlueprint);
|
|
40
34
|
// minimist reads the word after --help as its value, so 'seam --help
|
|
41
35
|
// devices' asks about devices just as 'seam devices --help' does.
|
|
42
36
|
const commandPath = [
|
|
@@ -88,231 +82,80 @@ async function cli(args) {
|
|
|
88
82
|
process.exitCode = 1;
|
|
89
83
|
return;
|
|
90
84
|
}
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
output.info(`PAT set to use fakeseamconnect with "seam_apikey1_token"`);
|
|
109
|
-
return;
|
|
110
|
-
}
|
|
111
|
-
if (getToken() == null &&
|
|
112
|
-
args._[0] !== 'login' &&
|
|
113
|
-
!isEqual(args._, ['select', 'server'])) {
|
|
85
|
+
const command = findLocalCommand(['completion', shell]);
|
|
86
|
+
assertKnownArgs(argParams, ['completion', shell], {
|
|
87
|
+
accepted: command == null ? new Set() : acceptedParamsOf(command.definition),
|
|
88
|
+
isLocal: true,
|
|
89
|
+
});
|
|
90
|
+
const cachedBlueprint = await getApiBlueprint({ update });
|
|
91
|
+
printCompletion(shell, buildRegistry(cachedBlueprint).spec);
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
const localCommand = findLocalCommand(args._);
|
|
95
|
+
// Commands declared not to need a token bypass the login gate. A partial
|
|
96
|
+
// path keeps the historical rule: only login and select endpoint may be
|
|
97
|
+
// reached logged out.
|
|
98
|
+
const requiresAuth = localCommand != null
|
|
99
|
+
? localCommand.requiresAuth
|
|
100
|
+
: !(args._[0] === 'login' || isEqual(args._, ['select', 'endpoint']));
|
|
101
|
+
if (requiresAuth && resolveAuth(config).token == null) {
|
|
114
102
|
output.error(`Not logged in. Please run "seam login" or set ${tokenEnvVar}`);
|
|
115
103
|
process.exitCode = 1;
|
|
116
104
|
return;
|
|
117
105
|
}
|
|
118
106
|
const useRemoteApiDefs = args['remote_api_defs'] ?? config.get('use_remote_api_defs');
|
|
119
|
-
const blueprint = await getApiBlueprint(
|
|
107
|
+
const blueprint = await getApiBlueprint({
|
|
108
|
+
useRemoteDefinitions: useRemoteApiDefs ?? false,
|
|
120
109
|
update,
|
|
121
110
|
});
|
|
111
|
+
const registry = buildRegistry(blueprint);
|
|
122
112
|
// Params piped or redirected in, e.g., `seam devices list < params.json`.
|
|
123
|
-
|
|
124
|
-
const
|
|
113
|
+
const pipedParams = await readStdinJson();
|
|
114
|
+
const stdinParams = { ...pipedParams };
|
|
115
|
+
const auth = resolveAuth(config);
|
|
116
|
+
let seamApi = null;
|
|
125
117
|
const ctx = {
|
|
118
|
+
config,
|
|
119
|
+
auth,
|
|
120
|
+
output,
|
|
126
121
|
blueprint,
|
|
127
122
|
interactivity: getInteractivity(args, { canPrompt: canPrompt() }),
|
|
123
|
+
api: async () => await (seamApi ??= createSeamApi(auth)),
|
|
128
124
|
};
|
|
129
|
-
const
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
...args,
|
|
136
|
-
_: [],
|
|
125
|
+
const selectableCommands = registry.spec.commands.map(({ path }) => path);
|
|
126
|
+
let commandPath = args._;
|
|
127
|
+
while (true) {
|
|
128
|
+
const selectedCommand = await interactForCommandSelection(commandPath, {
|
|
129
|
+
commands: selectableCommands,
|
|
130
|
+
interactivity: ctx.interactivity,
|
|
137
131
|
});
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
if (isEqual(selectedCommand, ['login'])) {
|
|
143
|
-
// Nothing is stored while the environment overrides it, so refuse before
|
|
144
|
-
// storing anything rather than part way through.
|
|
145
|
-
assertEnvVarUnset(tokenEnvVar, getTokenFromEnv(), 'log in');
|
|
146
|
-
if (args['server']) {
|
|
147
|
-
assertEnvVarUnset(endpointEnvVar, getEndpointFromEnv(), 'select a server');
|
|
148
|
-
}
|
|
149
|
-
if (args['workspace_id']) {
|
|
150
|
-
assertEnvVarUnset(workspaceIdEnvVar, getWorkspaceIdFromEnv(), 'select a workspace');
|
|
151
|
-
}
|
|
152
|
-
if (args['server']) {
|
|
153
|
-
config.set('server', args['server']);
|
|
154
|
-
config.delete('current_workspace_id');
|
|
155
|
-
}
|
|
156
|
-
if (args['token']) {
|
|
157
|
-
const token = String(args['token']).trim();
|
|
158
|
-
await validateToken(token, args['workspace_id']);
|
|
159
|
-
config.set(`${getServer()}.pat`, token);
|
|
160
|
-
config.delete('current_workspace_id');
|
|
161
|
-
}
|
|
162
|
-
if (args['workspace_id']) {
|
|
163
|
-
config.set(`current_workspace_id`, args['workspace_id']);
|
|
164
|
-
}
|
|
165
|
-
if (args['token'] || args['workspace_id'] || args['server']) {
|
|
166
|
-
return;
|
|
167
|
-
}
|
|
168
|
-
if (isNonInteractive) {
|
|
169
|
-
throw new NonInteractiveError('Missing required parameter for login: --token');
|
|
170
|
-
}
|
|
171
|
-
await interactForLogin();
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
else if (isEqual(selectedCommand, ['logout'])) {
|
|
175
|
-
assertEnvVarUnset(tokenEnvVar, getTokenFromEnv(), 'log out');
|
|
176
|
-
config.delete(`${getServer()}.pat`);
|
|
177
|
-
config.delete('current_workspace_id');
|
|
178
|
-
output.info('Logged out!');
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
else if (isEqual(selectedCommand, ['config', 'reveal-location'])) {
|
|
182
|
-
output.text(config.path);
|
|
183
|
-
return;
|
|
184
|
-
}
|
|
185
|
-
else if (isEqual(selectedCommand, ['config', 'use-remote-api-defs'])) {
|
|
186
|
-
if (isNonInteractive) {
|
|
187
|
-
throw new NonInteractiveError('Cannot select whether to use remote API definitions in non-interactive mode');
|
|
188
|
-
}
|
|
189
|
-
await interactForUseRemoteApiDefs();
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
else if (isEqual(selectedCommand, ['select', 'workspace'])) {
|
|
193
|
-
assertEnvVarUnset(workspaceIdEnvVar, getWorkspaceIdFromEnv(), 'select a workspace');
|
|
194
|
-
if (isNonInteractive) {
|
|
195
|
-
throw new NonInteractiveError('Cannot select a workspace in non-interactive mode: pass --workspace-id to "seam login"');
|
|
196
|
-
}
|
|
197
|
-
await interactForWorkspaceId();
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
else if (isEqual(selectedCommand, ['events', 'list'])) {
|
|
201
|
-
if (!commandParams['since']) {
|
|
202
|
-
const date = new Date();
|
|
203
|
-
date.setMonth(date.getMonth() - 1);
|
|
204
|
-
commandParams['since'] = date.toISOString();
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
else if (isEqual(selectedCommand, ['select', 'server'])) {
|
|
208
|
-
assertEnvVarUnset(endpointEnvVar, getEndpointFromEnv(), 'select a server');
|
|
209
|
-
if (args['server']) {
|
|
210
|
-
config.set('server', args['server']);
|
|
211
|
-
config.delete('current_workspace_id');
|
|
212
|
-
return;
|
|
132
|
+
// Hit 'back' on a top-level command path, so we start again
|
|
133
|
+
if (selectedCommand.at(-1) === '[Back]') {
|
|
134
|
+
commandPath = [];
|
|
135
|
+
continue;
|
|
213
136
|
}
|
|
214
|
-
|
|
215
|
-
|
|
137
|
+
const command = registry.find(selectedCommand);
|
|
138
|
+
if (command == null) {
|
|
139
|
+
throw new Error(`No definition for command seam ${selectedCommand.join(' ')}`);
|
|
216
140
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
path: '/health/get_health',
|
|
223
|
-
params: {},
|
|
141
|
+
// Check the arguments before the command acts on any of them, so a
|
|
142
|
+
// mistake is reported rather than half applied.
|
|
143
|
+
assertKnownArgs(argParams, selectedCommand, {
|
|
144
|
+
accepted: acceptedParamsOf(command.definition),
|
|
145
|
+
isLocal: findLocalCommand(selectedCommand) != null,
|
|
224
146
|
});
|
|
147
|
+
const result = await command.execute({ path: selectedCommand, argParams, stdinParams, args, argv }, ctx);
|
|
148
|
+
if (result.kind === 'back') {
|
|
149
|
+
commandPath = result.toPath;
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
225
152
|
return;
|
|
226
153
|
}
|
|
227
|
-
// TODO - do this using the OpenAPI spec for the command rather than
|
|
228
|
-
// explicitly encoding the property names
|
|
229
|
-
if (commandParams['accepted_providers']) {
|
|
230
|
-
commandParams['accepted_providers'] =
|
|
231
|
-
commandParams['accepted_providers'].split(',');
|
|
232
|
-
}
|
|
233
|
-
const apiPath = `/${selectedCommand.join('/').replace(/-/g, '_')}`;
|
|
234
|
-
const params = await interactForCommandParams({ command: selectedCommand, params: commandParams }, ctx);
|
|
235
|
-
if (params === '[Back]') {
|
|
236
|
-
const previousCommands = [...selectedCommand];
|
|
237
|
-
previousCommands.pop();
|
|
238
|
-
return await cli({
|
|
239
|
-
...args,
|
|
240
|
-
_: previousCommands,
|
|
241
|
-
});
|
|
242
|
-
}
|
|
243
|
-
if (apiPath.includes('/events/list') && params.between) {
|
|
244
|
-
delete params.since;
|
|
245
|
-
}
|
|
246
|
-
const response = await RequestSeamApi({
|
|
247
|
-
path: apiPath,
|
|
248
|
-
params,
|
|
249
|
-
responseKey: getResponseKey(selectedCommand, ctx),
|
|
250
|
-
});
|
|
251
|
-
if (response.data?.connect_webview) {
|
|
252
|
-
await handleConnectWebviewResponse(response.data.connect_webview, ctx.interactivity);
|
|
253
|
-
}
|
|
254
|
-
if (response.data?.action_attempt && !isNonInteractive) {
|
|
255
|
-
await interactForActionAttemptPoll(response.data.action_attempt);
|
|
256
|
-
}
|
|
257
154
|
}
|
|
258
155
|
const toCommandWord = (arg) => arg.toLowerCase().replace(/_/g, '-');
|
|
259
|
-
/**
|
|
260
|
-
* Report any argument the command does not accept, rather than acting on it.
|
|
261
|
-
* An unrecognized argument is a mistake: forwarded to the API it would fail
|
|
262
|
-
* somewhere less obvious or be quietly ignored, and on a command the CLI
|
|
263
|
-
* handles itself it would go nowhere at all.
|
|
264
|
-
*
|
|
265
|
-
* Only arguments are checked. Params read from stdin are passed through as
|
|
266
|
-
* given, so a caller may send whatever the API itself accepts.
|
|
267
|
-
*
|
|
268
|
-
* `ctx` is only needed to look up an endpoint's parameters, so commands the
|
|
269
|
-
* CLI declares itself can be checked before any blueprint is loaded.
|
|
270
|
-
*/
|
|
271
|
-
const assertKnownArgs = (argParams, command, ctx) => {
|
|
272
|
-
const local = findLocalCommand(command);
|
|
273
|
-
let accepted;
|
|
274
|
-
if (local != null) {
|
|
275
|
-
accepted = new Set(local.flags.flatMap(({ long }) => long == null ? [] : [toParameterName(long)]));
|
|
276
|
-
}
|
|
277
|
-
else if (ctx != null) {
|
|
278
|
-
accepted = new Set(getCommandBlueprintDef(command, ctx).request.parameters.map(({ name }) => name));
|
|
279
|
-
}
|
|
280
|
-
else {
|
|
281
|
-
throw new Error(`No definition for command seam ${command.join(' ')}`);
|
|
282
|
-
}
|
|
283
|
-
const unknown = Object.keys(argParams).filter((key) => !accepted.has(key));
|
|
284
|
-
if (unknown.length === 0)
|
|
285
|
-
return;
|
|
286
|
-
// Name an endpoint command by its path, as missing params are named, and a
|
|
287
|
-
// command the CLI handles itself by the words that run it.
|
|
288
|
-
const target = local == null
|
|
289
|
-
? `/${command.join('/').replace(/-/g, '_')}`
|
|
290
|
-
: command.join(' ');
|
|
291
|
-
throw new UsageError(`Unknown ${unknown.length === 1 ? 'parameter' : 'parameters'} for ${target}: ${unknown.map(toGivenArgName).join(' ')}`, {
|
|
292
|
-
hint: `Run 'seam ${command.join(' ')} --help' to see what it accepts.`,
|
|
293
|
-
});
|
|
294
|
-
};
|
|
295
|
-
const handleConnectWebviewResponse = async (connectWebview, interactivity) => {
|
|
296
|
-
const url = connectWebview.url;
|
|
297
|
-
if (interactivity !== 'non-interactive' &&
|
|
298
|
-
process.env['INSIDE_WEB_BROWSER'] !== '1') {
|
|
299
|
-
const action = await promptConfirm({
|
|
300
|
-
message: 'Would you like to open the webview in your browser?',
|
|
301
|
-
initialValue: false,
|
|
302
|
-
});
|
|
303
|
-
if (action) {
|
|
304
|
-
const { default: open } = await import('open');
|
|
305
|
-
await open(url);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
};
|
|
309
156
|
const run = async (argv) => {
|
|
310
157
|
if (argv[0] === 'wizard') {
|
|
311
|
-
|
|
312
|
-
await wizard({
|
|
313
|
-
argv: argv.slice(1),
|
|
314
|
-
commandName: 'seam wizard',
|
|
315
|
-
});
|
|
158
|
+
await runWizard(argv.slice(1));
|
|
316
159
|
return;
|
|
317
160
|
}
|
|
318
161
|
const args = parseCliArgs(argv);
|
|
@@ -321,28 +164,9 @@ const run = async (argv) => {
|
|
|
321
164
|
format: resolveOutputFormat(argv, { isTty }),
|
|
322
165
|
colors: isTty,
|
|
323
166
|
}));
|
|
324
|
-
await cli(args);
|
|
167
|
+
await cli(args, argv);
|
|
325
168
|
};
|
|
326
169
|
run(process.argv.slice(2)).catch((e) => {
|
|
327
|
-
|
|
328
|
-
process.exitCode = 1;
|
|
329
|
-
if (e instanceof UsageError) {
|
|
330
|
-
output.error(chalk.red(e.message));
|
|
331
|
-
if (e.hint !== '')
|
|
332
|
-
output.error(e.hint);
|
|
333
|
-
return;
|
|
334
|
-
}
|
|
335
|
-
if (e instanceof NonInteractiveError || e instanceof EnvVarOverrideError) {
|
|
336
|
-
output.error(chalk.red(e.message));
|
|
337
|
-
return;
|
|
338
|
-
}
|
|
339
|
-
if (e instanceof PromptCancelledError) {
|
|
340
|
-
output.error(chalk.gray(e.message));
|
|
341
|
-
return;
|
|
342
|
-
}
|
|
343
|
-
const error = e instanceof Error ? e : new Error(String(e));
|
|
344
|
-
output.error(chalk.red(`CLI Error: ${error.message}`));
|
|
345
|
-
if (error.stack != null)
|
|
346
|
-
output.error(chalk.gray(error.stack));
|
|
170
|
+
reportErrorAndExit(e, getOutput());
|
|
347
171
|
});
|
|
348
172
|
//# sourceMappingURL=cli.js.map
|
package/bin/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/bin/cli.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/bin/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Parameter } from '@seamapi/blueprint';
|
|
2
|
+
/** An argument whose value does not fit the parameter's documented format. */
|
|
3
|
+
export interface CoercionIssue {
|
|
4
|
+
name: string;
|
|
5
|
+
given: unknown;
|
|
6
|
+
/** What the parameter takes, e.g., `a number`. */
|
|
7
|
+
expected: string;
|
|
8
|
+
}
|
|
9
|
+
type Coerced = {
|
|
10
|
+
value: unknown;
|
|
11
|
+
} | {
|
|
12
|
+
issue: string;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Read each argument as the JSON value its parameter documents: booleans and
|
|
16
|
+
* numbers become real booleans and numbers, lists split on commas, objects
|
|
17
|
+
* parse as JSON. The request body is then the same whether a value arrived
|
|
18
|
+
* as an argument, over stdin, or interactively.
|
|
19
|
+
*
|
|
20
|
+
* An argument naming no parameter passes through unchanged: unknown
|
|
21
|
+
* arguments are reported by `assertKnownArgs`, not silently dropped here.
|
|
22
|
+
*/
|
|
23
|
+
export declare const coerceArgParams: (parameters: Parameter[], argParams: Record<string, unknown>) => {
|
|
24
|
+
params: Record<string, unknown>;
|
|
25
|
+
issues: CoercionIssue[];
|
|
26
|
+
};
|
|
27
|
+
export declare const coerceParam: (parameter: Parameter, given: unknown) => Coerced;
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Read each argument as the JSON value its parameter documents: booleans and
|
|
3
|
+
* numbers become real booleans and numbers, lists split on commas, objects
|
|
4
|
+
* parse as JSON. The request body is then the same whether a value arrived
|
|
5
|
+
* as an argument, over stdin, or interactively.
|
|
6
|
+
*
|
|
7
|
+
* An argument naming no parameter passes through unchanged: unknown
|
|
8
|
+
* arguments are reported by `assertKnownArgs`, not silently dropped here.
|
|
9
|
+
*/
|
|
10
|
+
export const coerceArgParams = (parameters, argParams) => {
|
|
11
|
+
const byName = new Map(parameters.map((parameter) => [parameter.name, parameter]));
|
|
12
|
+
const params = {};
|
|
13
|
+
const issues = [];
|
|
14
|
+
for (const [name, given] of Object.entries(argParams)) {
|
|
15
|
+
const parameter = byName.get(name);
|
|
16
|
+
if (parameter == null) {
|
|
17
|
+
params[name] = given;
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
const coerced = coerceParam(parameter, given);
|
|
21
|
+
if ('issue' in coerced) {
|
|
22
|
+
issues.push({ name, given, expected: coerced.issue });
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
params[name] = coerced.value;
|
|
26
|
+
}
|
|
27
|
+
return { params, issues };
|
|
28
|
+
};
|
|
29
|
+
export const coerceParam = (parameter, given) => {
|
|
30
|
+
// `null` is an explicit JSON value for nullable parameters, not the string
|
|
31
|
+
// "null" (or a one-item list containing it).
|
|
32
|
+
if (parameter.isNullable && (given === null || given === 'null')) {
|
|
33
|
+
return { value: null };
|
|
34
|
+
}
|
|
35
|
+
if (parameter.format === 'list')
|
|
36
|
+
return coerceList(parameter, given);
|
|
37
|
+
// A repeated argument parses as an array, which only a list accepts.
|
|
38
|
+
if (Array.isArray(given))
|
|
39
|
+
return { issue: 'a single value' };
|
|
40
|
+
switch (parameter.format) {
|
|
41
|
+
case 'boolean':
|
|
42
|
+
return coerceBoolean(given);
|
|
43
|
+
case 'number':
|
|
44
|
+
return coerceNumber(given);
|
|
45
|
+
case 'enum':
|
|
46
|
+
return coerceEnum(parameter, given);
|
|
47
|
+
case 'object':
|
|
48
|
+
return coerceObject(given);
|
|
49
|
+
default:
|
|
50
|
+
return { value: String(given) };
|
|
51
|
+
}
|
|
52
|
+
};
|
|
53
|
+
const coerceBoolean = (given) => {
|
|
54
|
+
if (given === true || given === 'true' || given === '1' || given === 1) {
|
|
55
|
+
return { value: true };
|
|
56
|
+
}
|
|
57
|
+
if (given === false || given === 'false' || given === '0' || given === 0) {
|
|
58
|
+
return { value: false };
|
|
59
|
+
}
|
|
60
|
+
return { issue: 'true or false' };
|
|
61
|
+
};
|
|
62
|
+
const coerceNumber = (given) => {
|
|
63
|
+
if (typeof given === 'number')
|
|
64
|
+
return { value: given };
|
|
65
|
+
if (typeof given === 'string' && given.trim() !== '') {
|
|
66
|
+
const value = Number(given);
|
|
67
|
+
if (!Number.isNaN(value))
|
|
68
|
+
return { value };
|
|
69
|
+
}
|
|
70
|
+
return { issue: 'a number' };
|
|
71
|
+
};
|
|
72
|
+
const coerceEnum = (parameter, given) => {
|
|
73
|
+
const value = String(given);
|
|
74
|
+
const names = parameter.values.map(({ name }) => name);
|
|
75
|
+
if (!names.includes(value))
|
|
76
|
+
return { issue: `one of ${names.join(', ')}` };
|
|
77
|
+
return { value };
|
|
78
|
+
};
|
|
79
|
+
const coerceObject = (given) => {
|
|
80
|
+
if (typeof given !== 'string')
|
|
81
|
+
return { issue: 'a JSON object' };
|
|
82
|
+
try {
|
|
83
|
+
const value = JSON.parse(given);
|
|
84
|
+
if (value == null || typeof value !== 'object' || Array.isArray(value)) {
|
|
85
|
+
return { issue: 'a JSON object' };
|
|
86
|
+
}
|
|
87
|
+
return { value };
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return { issue: 'a JSON object' };
|
|
91
|
+
}
|
|
92
|
+
};
|
|
93
|
+
const coerceList = (parameter, given) => {
|
|
94
|
+
const items = Array.isArray(given)
|
|
95
|
+
? given
|
|
96
|
+
: typeof given === 'string'
|
|
97
|
+
? given.split(',')
|
|
98
|
+
: [given];
|
|
99
|
+
const values = [];
|
|
100
|
+
for (const item of items) {
|
|
101
|
+
const coerced = coerceListItem(parameter, item);
|
|
102
|
+
if ('issue' in coerced)
|
|
103
|
+
return coerced;
|
|
104
|
+
values.push(coerced.value);
|
|
105
|
+
}
|
|
106
|
+
return { value: values };
|
|
107
|
+
};
|
|
108
|
+
const coerceListItem = (parameter, item) => {
|
|
109
|
+
if (parameter.itemFormat === 'number') {
|
|
110
|
+
const coerced = coerceNumber(item);
|
|
111
|
+
if ('issue' in coerced)
|
|
112
|
+
return { issue: 'a list of numbers' };
|
|
113
|
+
return coerced;
|
|
114
|
+
}
|
|
115
|
+
if (parameter.itemFormat === 'boolean') {
|
|
116
|
+
const coerced = coerceBoolean(item);
|
|
117
|
+
if ('issue' in coerced)
|
|
118
|
+
return { issue: 'a list of true or false' };
|
|
119
|
+
return coerced;
|
|
120
|
+
}
|
|
121
|
+
if (parameter.itemFormat === 'enum') {
|
|
122
|
+
const value = String(item);
|
|
123
|
+
const names = parameter.itemEnumValues.map(({ name }) => name);
|
|
124
|
+
if (!names.includes(value)) {
|
|
125
|
+
return { issue: `a list of ${names.join(', ')}` };
|
|
126
|
+
}
|
|
127
|
+
return { value };
|
|
128
|
+
}
|
|
129
|
+
return { value: String(item) };
|
|
130
|
+
};
|
|
131
|
+
//# sourceMappingURL=coerce.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coerce.js","sourceRoot":"","sources":["../../src/lib/args/coerce.ts"],"names":[],"mappings":"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"}
|