@wirebench/engine 2.2.1 → 3.1.0-rc.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/README.md +134 -1
- package/dist/account/schema.d.ts +34 -0
- package/dist/account/schema.js +29 -0
- package/dist/assert/callback.d.ts +76 -0
- package/dist/assert/callback.js +320 -0
- package/dist/assert/capture-source.d.ts +50 -0
- package/dist/assert/capture-source.js +89 -0
- package/dist/assert/check.d.ts +8 -0
- package/dist/assert/check.js +18 -0
- package/dist/assert/header.d.ts +5 -0
- package/dist/assert/header.js +48 -0
- package/dist/assert/index.d.ts +2 -2
- package/dist/assert/index.js +12 -0
- package/dist/assert/match.d.ts +6 -0
- package/dist/assert/match.js +13 -4
- package/dist/assert/model.d.ts +110 -3
- package/dist/assert/model.js +16 -1
- package/dist/assert/schema.d.ts +194 -1
- package/dist/assert/schema.js +154 -12
- package/dist/assert/status-names.d.ts +9 -0
- package/dist/assert/status-names.js +27 -0
- package/dist/assert/status.d.ts +4 -1
- package/dist/assert/status.js +27 -3
- package/dist/asyncapi/browser.d.ts +7 -0
- package/dist/asyncapi/browser.js +6 -0
- package/dist/asyncapi/frame-check-worker-host.d.ts +44 -0
- package/dist/asyncapi/frame-check-worker-host.js +175 -0
- package/dist/asyncapi/frame-check-worker.d.ts +12 -0
- package/dist/asyncapi/frame-check-worker.js +25 -0
- package/dist/asyncapi/frame-check.d.ts +25 -0
- package/dist/asyncapi/frame-check.js +78 -0
- package/dist/asyncapi/import.d.ts +25 -0
- package/dist/asyncapi/import.js +34 -0
- package/dist/asyncapi/map.d.ts +40 -0
- package/dist/asyncapi/map.js +230 -0
- package/dist/asyncapi/model.d.ts +84 -0
- package/dist/asyncapi/model.js +7 -0
- package/dist/asyncapi/normalise-2.d.ts +13 -0
- package/dist/asyncapi/normalise-2.js +113 -0
- package/dist/asyncapi/normalise-3.d.ts +14 -0
- package/dist/asyncapi/normalise-3.js +133 -0
- package/dist/asyncapi/parse.d.ts +31 -0
- package/dist/asyncapi/parse.js +85 -0
- package/dist/asyncapi/read.d.ts +35 -0
- package/dist/asyncapi/read.js +186 -0
- package/dist/asyncapi/security.d.ts +14 -0
- package/dist/asyncapi/security.js +55 -0
- package/dist/asyncapi/update.d.ts +53 -0
- package/dist/asyncapi/update.js +220 -0
- package/dist/errors.d.ts +16 -0
- package/dist/errors.js +22 -0
- package/dist/grpc/events.d.ts +22 -0
- package/dist/grpc/events.js +1 -0
- package/dist/grpc/expand.d.ts +1 -1
- package/dist/grpc/expand.js +15 -5
- package/dist/grpc/files.d.ts +271 -0
- package/dist/grpc/files.js +62 -0
- package/dist/grpc/model.d.ts +11 -1
- package/dist/grpc/module.d.ts +2 -0
- package/dist/grpc/module.js +13 -0
- package/dist/grpc/run.d.ts +73 -0
- package/dist/grpc/run.js +407 -0
- package/dist/grpc/script-types.d.ts +8 -0
- package/dist/grpc/script-types.js +149 -0
- package/dist/grpc/scripting.d.ts +34 -0
- package/dist/grpc/scripting.js +147 -0
- package/dist/grpc/send-input.d.ts +46 -0
- package/dist/grpc/send-input.js +42 -0
- package/dist/grpc/send.d.ts +2 -2
- package/dist/grpc/status.d.ts +9 -2
- package/dist/grpc/status.js +11 -24
- package/dist/grpc/storage.d.ts +9 -0
- package/dist/grpc/storage.js +167 -0
- package/dist/{rest/auth.d.ts → http/auth/apply-auth.d.ts} +4 -4
- package/dist/{rest/auth.js → http/auth/apply-auth.js} +1 -1
- package/dist/http/auth/apply.d.ts +1 -1
- package/dist/{rest → http/auth}/oauth2.d.ts +2 -2
- package/dist/{rest → http/auth}/oauth2.js +1 -1
- package/dist/http/auth/send-auth.d.ts +57 -0
- package/dist/http/auth/send-auth.js +7 -0
- package/dist/http/client.js +150 -8
- package/dist/http/cookies.d.ts +79 -0
- package/dist/http/cookies.js +81 -0
- package/dist/http/curl.d.ts +4 -14
- package/dist/http/curl.js +4 -154
- package/dist/http/decompress.d.ts +7 -0
- package/dist/http/decompress.js +23 -1
- package/dist/http/document-fetch.d.ts +42 -0
- package/dist/http/document-fetch.js +207 -0
- package/dist/http/entries.d.ts +27 -0
- package/dist/http/entries.js +16 -0
- package/dist/http/escape.d.ts +18 -0
- package/dist/http/escape.js +30 -0
- package/dist/http/fetch-document.d.ts +28 -0
- package/dist/{wsdl/fetch.js → http/fetch-document.js} +8 -16
- package/dist/http/media-type.d.ts +9 -0
- package/dist/http/media-type.js +12 -0
- package/dist/http/transcript-cap.d.ts +26 -0
- package/dist/http/transcript-cap.js +36 -0
- package/dist/http/types.d.ts +59 -0
- package/dist/http/webhook-signature.d.ts +81 -0
- package/dist/http/webhook-signature.js +227 -0
- package/dist/import-detect.d.ts +2 -2
- package/dist/import-detect.js +10 -1
- package/dist/index.d.ts +207 -55
- package/dist/index.js +129 -32
- package/dist/json/cursor.d.ts +2 -0
- package/dist/json/cursor.js +1 -0
- package/dist/json/pointer-range.d.ts +18 -0
- package/dist/json/pointer-range.js +157 -0
- package/dist/json/schema/model.d.ts +59 -0
- package/dist/json/schema/model.js +8 -0
- package/dist/json/schema/parse-text.d.ts +16 -0
- package/dist/json/schema/parse-text.js +37 -0
- package/dist/{rest/openapi → json/schema}/refs.d.ts +2 -2
- package/dist/{rest/openapi → json/schema}/refs.js +3 -3
- package/dist/{rest/openapi → json/schema}/sample.d.ts +4 -0
- package/dist/{rest/openapi → json/schema}/sample.js +2 -2
- package/dist/json/schema/source.d.ts +21 -0
- package/dist/json/schema/source.js +8 -0
- package/dist/json/schema-validate.d.ts +49 -0
- package/dist/json/schema-validate.js +557 -0
- package/dist/{wss/keystore → keystore}/index.js +1 -1
- package/dist/{wss/keystore → keystore}/pem.js +1 -1
- package/dist/{wss/keystore → keystore}/pkcs12.js +1 -1
- package/dist/project/attachments-cache.d.ts +3 -1
- package/dist/{wsdl → project}/cache-naming.js +1 -1
- package/dist/project/endpoints.d.ts +18 -8
- package/dist/project/endpoints.js +21 -6
- package/dist/project/environments.d.ts +7 -5
- package/dist/project/history.d.ts +105 -9
- package/dist/project/history.js +195 -23
- package/dist/project/inherit.d.ts +7 -0
- package/dist/project/inherit.js +9 -0
- package/dist/project/keystores.d.ts +1 -1
- package/dist/project/load-helpers.d.ts +89 -0
- package/dist/project/load-helpers.js +177 -0
- package/dist/project/load.d.ts +30 -4
- package/dist/project/load.js +168 -545
- package/dist/project/managed-files.d.ts +36 -0
- package/dist/project/managed-files.js +97 -0
- package/dist/project/migrate.d.ts +2 -2
- package/dist/project/migrate.js +2 -2
- package/dist/project/model.d.ts +92 -14
- package/dist/project/model.js +50 -4
- package/dist/project/paths.d.ts +10 -1
- package/dist/project/paths.js +10 -1
- package/dist/project/preferences.d.ts +11 -2
- package/dist/project/preferences.js +5 -1
- package/dist/project/properties.d.ts +31 -17
- package/dist/project/properties.js +89 -70
- package/dist/project/request-location.d.ts +20 -0
- package/dist/project/request-location.js +62 -0
- package/dist/project/save.d.ts +12 -2
- package/dist/project/save.js +186 -141
- package/dist/project/schema-parts.d.ts +337 -0
- package/dist/project/schema-parts.js +248 -0
- package/dist/project/schema.d.ts +72 -928
- package/dist/project/schema.js +17 -466
- package/dist/project/sequence-guards.d.ts +43 -0
- package/dist/project/sequence-guards.js +109 -0
- package/dist/project/serialize-helpers.d.ts +60 -0
- package/dist/project/serialize-helpers.js +108 -0
- package/dist/project/serialize.d.ts +7 -8
- package/dist/project/serialize.js +34 -293
- package/dist/protocol/features.d.ts +51 -0
- package/dist/protocol/features.js +64 -0
- package/dist/protocol/index.d.ts +7 -0
- package/dist/protocol/index.js +4 -0
- package/dist/protocol/module.d.ts +247 -0
- package/dist/protocol/module.js +48 -0
- package/dist/protocol/registry.d.ts +42 -0
- package/dist/protocol/registry.js +47 -0
- package/dist/protocols.d.ts +77 -0
- package/dist/protocols.js +40 -0
- package/dist/redact/index.d.ts +12 -1
- package/dist/redact/index.js +55 -7
- package/dist/redact/literal.d.ts +10 -0
- package/dist/redact/literal.js +110 -12
- package/dist/rest/body.d.ts +2 -10
- package/dist/rest/body.js +3 -25
- package/dist/rest/browser.d.ts +4 -0
- package/dist/rest/browser.js +5 -0
- package/dist/rest/contract-check-worker-host.d.ts +36 -0
- package/dist/rest/contract-check-worker-host.js +158 -0
- package/dist/rest/contract-check-worker.d.ts +7 -0
- package/dist/rest/contract-check-worker.js +28 -0
- package/dist/rest/contract-check.d.ts +43 -0
- package/dist/rest/contract-check.js +217 -0
- package/dist/rest/cookie-jar.d.ts +62 -0
- package/dist/rest/cookie-jar.js +262 -0
- package/dist/rest/cookies.d.ts +6 -22
- package/dist/rest/cookies.js +6 -42
- package/dist/rest/curl.js +5 -1
- package/dist/rest/events.d.ts +12 -0
- package/dist/rest/events.js +1 -0
- package/dist/rest/expand.d.ts +6 -1
- package/dist/rest/expand.js +29 -11
- package/dist/rest/files.d.ts +439 -0
- package/dist/rest/files.js +107 -0
- package/dist/rest/json-form.d.ts +97 -0
- package/dist/rest/json-form.js +396 -0
- package/dist/rest/model.d.ts +35 -24
- package/dist/rest/model.js +6 -9
- package/dist/rest/module.d.ts +2 -0
- package/dist/rest/module.js +13 -0
- package/dist/rest/openapi/cache.d.ts +7 -2
- package/dist/rest/openapi/cache.js +2 -2
- package/dist/rest/openapi/import.d.ts +11 -16
- package/dist/rest/openapi/import.js +6 -2
- package/dist/rest/openapi/map.d.ts +38 -1
- package/dist/rest/openapi/map.js +151 -41
- package/dist/rest/openapi/match.d.ts +20 -0
- package/dist/rest/openapi/match.js +117 -0
- package/dist/rest/openapi/model.d.ts +33 -45
- package/dist/rest/openapi/parse.d.ts +3 -12
- package/dist/rest/openapi/parse.js +138 -67
- package/dist/rest/openapi/responses.d.ts +23 -0
- package/dist/rest/openapi/responses.js +59 -0
- package/dist/rest/openapi/runtime-expression.d.ts +69 -0
- package/dist/rest/openapi/runtime-expression.js +213 -0
- package/dist/rest/openapi/update.d.ts +116 -0
- package/dist/rest/openapi/update.js +456 -0
- package/dist/rest/postman/map.d.ts +1 -0
- package/dist/rest/postman/map.js +66 -4
- package/dist/rest/postman/model.d.ts +9 -0
- package/dist/rest/postman/parse.js +33 -10
- package/dist/rest/response.d.ts +2 -23
- package/dist/rest/response.js +3 -75
- package/dist/rest/run.d.ts +56 -0
- package/dist/rest/run.js +395 -0
- package/dist/rest/script-types.d.ts +7 -0
- package/dist/rest/script-types.js +83 -0
- package/dist/rest/scripting.d.ts +38 -0
- package/dist/rest/scripting.js +282 -0
- package/dist/rest/send-input.d.ts +54 -0
- package/dist/rest/send-input.js +73 -0
- package/dist/rest/send.d.ts +77 -4
- package/dist/rest/send.js +128 -7
- package/dist/rest/sse-transcript.d.ts +25 -0
- package/dist/rest/sse-transcript.js +95 -0
- package/dist/rest/sse.d.ts +43 -0
- package/dist/rest/sse.js +195 -0
- package/dist/rest/storage.d.ts +26 -0
- package/dist/rest/storage.js +262 -0
- package/dist/rest/url.d.ts +10 -4
- package/dist/rest/url.js +38 -5
- package/dist/run/baseline-update.d.ts +35 -0
- package/dist/run/baseline-update.js +97 -0
- package/dist/run/baseline.d.ts +42 -0
- package/dist/run/baseline.js +93 -0
- package/dist/run/context.d.ts +86 -0
- package/dist/run/context.js +31 -0
- package/dist/run/current-values.d.ts +32 -0
- package/dist/run/current-values.js +43 -0
- package/dist/run/event-queue.d.ts +14 -0
- package/dist/run/event-queue.js +46 -0
- package/dist/run/exchange.d.ts +62 -0
- package/dist/run/exchange.js +65 -0
- package/dist/run/host.d.ts +89 -0
- package/dist/run/host.js +1 -0
- package/dist/run/index.d.ts +20 -7
- package/dist/run/index.js +12 -4
- package/dist/run/oauth2-token.d.ts +42 -0
- package/dist/run/oauth2-token.js +92 -0
- package/dist/run/open.d.ts +12 -0
- package/dist/run/open.js +16 -0
- package/dist/run/run.d.ts +124 -4
- package/dist/run/run.js +293 -134
- package/dist/run/scope.d.ts +11 -0
- package/dist/run/scope.js +26 -0
- package/dist/run/script-support.d.ts +53 -0
- package/dist/run/script-support.js +68 -0
- package/dist/run/secret-needs.d.ts +11 -4
- package/dist/run/secret-needs.js +48 -96
- package/dist/run/select.d.ts +34 -25
- package/dist/run/select.js +45 -54
- package/dist/run/send-helpers.d.ts +93 -0
- package/dist/run/send-helpers.js +255 -0
- package/dist/run/tree.d.ts +50 -0
- package/dist/run/tree.js +54 -0
- package/dist/script/api/postman.d.ts +10 -0
- package/dist/script/api/postman.js +264 -0
- package/dist/script/api/prelude.d.ts +20 -0
- package/dist/script/api/prelude.js +215 -0
- package/dist/script/apply.d.ts +44 -0
- package/dist/script/apply.js +120 -0
- package/dist/script/check/host.d.ts +41 -0
- package/dist/script/check/host.js +143 -0
- package/dist/script/check/service.d.ts +52 -0
- package/dist/script/check/service.js +195 -0
- package/dist/script/check/worker.d.ts +1 -0
- package/dist/script/check/worker.js +40 -0
- package/dist/script/index.d.ts +16 -0
- package/dist/script/index.js +10 -0
- package/dist/script/lookup.d.ts +10 -0
- package/dist/script/lookup.js +23 -0
- package/dist/script/model.d.ts +82 -0
- package/dist/script/model.js +18 -0
- package/dist/script/props.d.ts +8 -0
- package/dist/script/props.js +28 -0
- package/dist/script/request-scripts.d.ts +83 -0
- package/dist/script/request-scripts.js +160 -0
- package/dist/script/run.d.ts +47 -0
- package/dist/script/run.js +146 -0
- package/dist/script/sandbox/execute.d.ts +26 -0
- package/dist/script/sandbox/execute.js +212 -0
- package/dist/script/sandbox/host-api.d.ts +27 -0
- package/dist/script/sandbox/host-api.js +101 -0
- package/dist/script/sandbox/host.d.ts +18 -0
- package/dist/script/sandbox/host.js +172 -0
- package/dist/script/sandbox/model.d.ts +69 -0
- package/dist/script/sandbox/model.js +24 -0
- package/dist/script/sandbox/worker.d.ts +1 -0
- package/dist/script/sandbox/worker.js +20 -0
- package/dist/script/send.d.ts +27 -0
- package/dist/script/send.js +76 -0
- package/dist/script/strip.d.ts +5 -0
- package/dist/script/strip.js +43 -0
- package/dist/script/types/api.d.ts +38 -0
- package/dist/script/types/api.js +113 -0
- package/dist/script/types/json-schema.d.ts +26 -0
- package/dist/script/types/json-schema.js +206 -0
- package/dist/secrets/env-names.d.ts +9 -1
- package/dist/secrets/env-names.js +17 -1
- package/dist/secrets/resolve.d.ts +44 -4
- package/dist/secrets/resolve.js +58 -1
- package/dist/secrets/scan/apply.d.ts +36 -0
- package/dist/secrets/scan/apply.js +194 -0
- package/dist/secrets/scan/rules.d.ts +32 -0
- package/dist/secrets/scan/rules.js +346 -0
- package/dist/secrets/scan/scan.d.ts +6 -0
- package/dist/secrets/scan/scan.js +57 -0
- package/dist/secrets/scan/walk.d.ts +70 -0
- package/dist/secrets/scan/walk.js +156 -0
- package/dist/secrets/secret-refs.d.ts +8 -0
- package/dist/secrets/secret-refs.js +25 -0
- package/dist/secrets/secret-token.d.ts +17 -0
- package/dist/secrets/secret-token.js +25 -0
- package/dist/sequence/file.d.ts +169 -0
- package/dist/sequence/file.js +237 -0
- package/dist/sequence/index.d.ts +7 -0
- package/dist/sequence/index.js +5 -0
- package/dist/sequence/load.d.ts +32 -0
- package/dist/sequence/load.js +56 -0
- package/dist/sequence/model.d.ts +115 -0
- package/dist/sequence/model.js +53 -0
- package/dist/sequence/run.d.ts +131 -0
- package/dist/sequence/run.js +191 -0
- package/dist/sequence/transfer.d.ts +24 -0
- package/dist/sequence/transfer.js +75 -0
- package/dist/server-api/audit.d.ts +455 -0
- package/dist/server-api/audit.js +186 -0
- package/dist/server-api/ci-tokens.d.ts +50 -0
- package/dist/server-api/ci-tokens.js +35 -0
- package/dist/server-api/hooks.d.ts +337 -0
- package/dist/server-api/hooks.js +152 -0
- package/dist/server-api/identity.d.ts +210 -0
- package/dist/server-api/identity.js +115 -0
- package/dist/server-api/licensing.d.ts +80 -0
- package/dist/server-api/licensing.js +53 -0
- package/dist/server-api/live.d.ts +132 -0
- package/dist/server-api/live.js +102 -0
- package/dist/server-api/meta.d.ts +31 -0
- package/dist/server-api/meta.js +21 -0
- package/dist/server-api/sync.d.ts +179 -0
- package/dist/server-api/sync.js +124 -0
- package/dist/server-api/teams.d.ts +306 -0
- package/dist/server-api/teams.js +113 -0
- package/dist/snapshot/diff.d.ts +30 -0
- package/dist/snapshot/diff.js +75 -0
- package/dist/snapshot/format.d.ts +17 -0
- package/dist/snapshot/format.js +40 -0
- package/dist/snapshot/golden-file.d.ts +45 -0
- package/dist/snapshot/golden-file.js +173 -0
- package/dist/snapshot/ignore.d.ts +14 -0
- package/dist/snapshot/ignore.js +79 -0
- package/dist/snapshot/index.d.ts +9 -0
- package/dist/snapshot/index.js +9 -0
- package/dist/snapshot/json-diff.d.ts +3 -0
- package/dist/snapshot/json-diff.js +93 -0
- package/dist/snapshot/xml-diff.d.ts +10 -0
- package/dist/snapshot/xml-diff.js +194 -0
- package/dist/soap/auth.d.ts +26 -0
- package/dist/soap/auth.js +54 -0
- package/dist/soap/curl.d.ts +20 -0
- package/dist/soap/curl.js +161 -0
- package/dist/soap/expand.d.ts +24 -0
- package/dist/soap/expand.js +95 -0
- package/dist/soap/files.d.ts +384 -0
- package/dist/soap/files.js +114 -0
- package/dist/soap/form-request.d.ts +13 -0
- package/dist/soap/form-request.js +2 -2
- package/dist/soap/generate.d.ts +12 -0
- package/dist/{generate.js → soap/generate.js} +4 -4
- package/dist/{import.d.ts → soap/import.d.ts} +4 -4
- package/dist/{import.js → soap/import.js} +13 -13
- package/dist/soap/json-operation.d.ts +35 -0
- package/dist/soap/json-operation.js +225 -0
- package/dist/soap/legacy-project/env-refs.d.ts +19 -0
- package/dist/soap/legacy-project/env-refs.js +105 -0
- package/dist/soap/legacy-project/map.d.ts +2 -2
- package/dist/soap/legacy-project/map.js +6 -0
- package/dist/soap/mime/multipart.d.ts +2 -2
- package/dist/soap/mime/multipart.js +2 -5
- package/dist/soap/mime/send-pipeline.d.ts +1 -1
- package/dist/soap/mime/send-pipeline.js +1 -1
- package/dist/soap/mime/types.d.ts +1 -3
- package/dist/soap/module.d.ts +2 -0
- package/dist/soap/module.js +13 -0
- package/dist/soap/namespace-scope.js +1 -1
- package/dist/soap/operations.d.ts +12 -0
- package/dist/{operations.js → soap/operations.js} +4 -4
- package/dist/soap/run.d.ts +70 -0
- package/dist/soap/run.js +549 -0
- package/dist/soap/script-types.d.ts +65 -0
- package/dist/soap/script-types.js +379 -0
- package/dist/soap/scripting.d.ts +45 -0
- package/dist/soap/scripting.js +221 -0
- package/dist/soap/send-input.d.ts +61 -0
- package/dist/{send-options.js → soap/send-input.js} +5 -109
- package/dist/{send.d.ts → soap/send.d.ts} +1 -1
- package/dist/{send.js → soap/send.js} +28 -12
- package/dist/soap/storage.d.ts +9 -0
- package/dist/soap/storage.js +237 -0
- package/dist/soap/transforms.d.ts +3 -12
- package/dist/soap/transforms.js +3 -14
- package/dist/{types.d.ts → soap/types.d.ts} +34 -84
- package/dist/sync/git-cli.d.ts +202 -0
- package/dist/sync/git-cli.js +684 -0
- package/dist/sync/three-way-merge.d.ts +41 -0
- package/dist/sync/three-way-merge.js +85 -0
- package/dist/sync/tree-paths.d.ts +34 -0
- package/dist/sync/tree-paths.js +131 -0
- package/dist/team-secrets/envelope.d.ts +10 -0
- package/dist/team-secrets/envelope.js +121 -0
- package/dist/team-secrets/errors.d.ts +26 -0
- package/dist/team-secrets/errors.js +27 -0
- package/dist/team-secrets/index.d.ts +14 -0
- package/dist/team-secrets/index.js +8 -0
- package/dist/team-secrets/keys.d.ts +52 -0
- package/dist/team-secrets/keys.js +158 -0
- package/dist/team-secrets/log.d.ts +48 -0
- package/dist/team-secrets/log.js +175 -0
- package/dist/team-secrets/resolve-conflict.d.ts +7 -0
- package/dist/team-secrets/resolve-conflict.js +14 -0
- package/dist/team-secrets/schema.d.ts +97 -0
- package/dist/team-secrets/schema.js +157 -0
- package/dist/team-secrets/sign.d.ts +24 -0
- package/dist/team-secrets/sign.js +71 -0
- package/dist/team-secrets/vault.d.ts +49 -0
- package/dist/team-secrets/vault.js +148 -0
- package/dist/validate/wsi/run-message.d.ts +2 -2
- package/dist/validate/wsi/run-message.js +1 -1
- package/dist/validate/wsi/run-wsdl.d.ts +2 -2
- package/dist/validate/wsi/run-wsdl.js +1 -1
- package/dist/validate/wsi/types.d.ts +1 -1
- package/dist/webhooks/model.d.ts +138 -0
- package/dist/webhooks/model.js +150 -0
- package/dist/workspace/commit-message.d.ts +1 -1
- package/dist/workspace/commit-message.js +6 -1
- package/dist/workspace/environments.d.ts +11 -4
- package/dist/workspace/environments.js +12 -0
- package/dist/workspace/index.d.ts +3 -3
- package/dist/workspace/index.js +2 -2
- package/dist/workspace/paths.d.ts +5 -2
- package/dist/workspace/paths.js +5 -2
- package/dist/workspace/schema.d.ts +7 -3
- package/dist/workspace/schema.js +24 -3
- package/dist/workspace/share.d.ts +30 -11
- package/dist/workspace/share.js +32 -6
- package/dist/ws/call.d.ts +1 -1
- package/dist/ws/call.js +2 -2
- package/dist/ws/connect.d.ts +60 -0
- package/dist/ws/connect.js +131 -0
- package/dist/ws/events.d.ts +17 -0
- package/dist/ws/events.js +1 -0
- package/dist/ws/expand.d.ts +1 -1
- package/dist/ws/expand.js +1 -1
- package/dist/ws/files.d.ts +284 -0
- package/dist/ws/files.js +71 -0
- package/dist/ws/history-entry.d.ts +44 -0
- package/dist/ws/history-entry.js +93 -0
- package/dist/ws/model.d.ts +44 -3
- package/dist/ws/model.js +3 -0
- package/dist/ws/module.d.ts +2 -0
- package/dist/ws/module.js +11 -0
- package/dist/ws/run.d.ts +63 -0
- package/dist/ws/run.js +470 -0
- package/dist/ws/session.d.ts +18 -0
- package/dist/ws/session.js +52 -25
- package/dist/ws/storage.d.ts +9 -0
- package/dist/ws/storage.js +176 -0
- package/dist/ws/transcript.d.ts +3 -4
- package/dist/ws/transcript.js +26 -17
- package/dist/ws/url.d.ts +1 -1
- package/dist/wsdl/cache.js +1 -1
- package/dist/wsdl/docs-generator.d.ts +3 -3
- package/dist/wsdl/docs-generator.js +1 -1
- package/dist/wsdl/export-definition.js +1 -1
- package/dist/wsdl/qname.d.ts +2 -5
- package/dist/wsdl/resolver.d.ts +4 -11
- package/dist/wsdl/resolver.js +3 -3
- package/dist/wsdl/update-definition.d.ts +5 -5
- package/dist/wsdl/update-definition.js +6 -6
- package/dist/wss/apply.js +1 -1
- package/dist/{project/wss-configs.d.ts → wss/configs.d.ts} +2 -2
- package/dist/{project/wss-configs.js → wss/configs.js} +2 -2
- package/dist/wss/incoming/decrypt.d.ts +1 -1
- package/dist/wss/incoming/index.js +1 -1
- package/dist/wss/incoming/verify.d.ts +1 -1
- package/dist/wss/incoming/verify.js +1 -1
- package/dist/wss/key-identifiers.js +1 -1
- package/dist/wss/model.d.ts +1 -1
- package/dist/wss/outgoing/encryption.d.ts +1 -1
- package/dist/wss/outgoing/signature.d.ts +1 -1
- package/dist/xml/decode.d.ts +15 -0
- package/dist/xml/decode.js +22 -0
- package/dist/xml/entitize.d.ts +17 -0
- package/dist/xml/entitize.js +19 -0
- package/dist/xml/index.d.ts +1 -1
- package/dist/xml/index.js +1 -1
- package/dist/xml/locate.d.ts +39 -0
- package/dist/xml/locate.js +117 -0
- package/dist/xml/qname.d.ts +12 -0
- package/dist/xml/qname.js +8 -0
- package/dist/xpath/evaluate-async.d.ts +19 -0
- package/dist/xpath/evaluate-async.js +31 -11
- package/dist/xpath/evaluate.d.ts +1 -1
- package/dist/xpath/namespaces.js +1 -1
- package/dist/xpath/worker.d.ts +11 -5
- package/dist/xpath/worker.js +24 -7
- package/dist/xsd/form-model.d.ts +19 -2
- package/dist/xsd/form-model.js +14 -2
- package/dist/xsd/json-bridge.d.ts +152 -0
- package/dist/xsd/json-bridge.js +1213 -0
- package/dist/xsd/locate.d.ts +2 -30
- package/dist/xsd/locate.js +1 -109
- package/dist/xsd/xml-scan.d.ts +2 -0
- package/dist/xsd/xml-scan.js +1 -1
- package/dist/xsd/xml-writer.d.ts +2 -0
- package/dist/xsd/xml-writer.js +4 -0
- package/package.json +12 -1
- package/dist/generate.d.ts +0 -12
- package/dist/operations.d.ts +0 -12
- package/dist/run/effective-auth.d.ts +0 -10
- package/dist/run/effective-auth.js +0 -19
- package/dist/run/prepare.d.ts +0 -43
- package/dist/run/prepare.js +0 -280
- package/dist/send-options.d.ts +0 -141
- package/dist/wsdl/fetch.d.ts +0 -13
- /package/dist/{soap → http}/charset.d.ts +0 -0
- /package/dist/{soap → http}/charset.js +0 -0
- /package/dist/{wsdl → http}/ref-policy.d.ts +0 -0
- /package/dist/{wsdl → http}/ref-policy.js +0 -0
- /package/dist/{wss/keystore → keystore}/certificate.d.ts +0 -0
- /package/dist/{wss/keystore → keystore}/certificate.js +0 -0
- /package/dist/{wss/keystore → keystore}/index.d.ts +0 -0
- /package/dist/{wss/keystore → keystore}/model.d.ts +0 -0
- /package/dist/{wss/keystore → keystore}/model.js +0 -0
- /package/dist/{wss/keystore → keystore}/pem.d.ts +0 -0
- /package/dist/{wss/keystore → keystore}/pkcs12.d.ts +0 -0
- /package/dist/{wsdl → project}/cache-naming.d.ts +0 -0
- /package/dist/{types.js → soap/types.js} +0 -0
- /package/dist/{soap → xml}/prefixes.d.ts +0 -0
- /package/dist/{soap → xml}/prefixes.js +0 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { resolveSecretTokens } from '../secrets/resolve.js';
|
|
2
|
+
import { scriptError, } from '../script/request-scripts.js';
|
|
3
|
+
/** The values of the secrets a request's scripts list. */
|
|
4
|
+
export async function listedSecrets(names, getSecret) {
|
|
5
|
+
return names.length === 0 ? {} : resolveSecretTokens(names, getSecret);
|
|
6
|
+
}
|
|
7
|
+
/** A script's tests as a report's assertions. */
|
|
8
|
+
export function scriptAssertions(tests) {
|
|
9
|
+
return tests.map((test) => ({
|
|
10
|
+
type: 'script',
|
|
11
|
+
label: test.name,
|
|
12
|
+
outcome: test.passed ? 'passed' : 'failed',
|
|
13
|
+
...(test.message !== undefined ? { message: test.message } : {}),
|
|
14
|
+
}));
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Adds a script's values to a run's values. A value marked secret, or holding a credential the run
|
|
18
|
+
* knows, is reported for masking first (ADR-0015).
|
|
19
|
+
*/
|
|
20
|
+
export function mergeScriptValues(target, values, onSecretValue, containsKnownSecret) {
|
|
21
|
+
for (const { name, value, secret } of values) {
|
|
22
|
+
if (secret || containsKnownSecret?.(value) === true)
|
|
23
|
+
onSecretValue?.(value);
|
|
24
|
+
target.set(name, value);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* The scripts of one send of `scripted`. The run and the app both send through this, so a value a
|
|
29
|
+
* script marks secret is masked before anything about the send is shown, in either.
|
|
30
|
+
*/
|
|
31
|
+
export function scriptSession(scripting, scripted, values, options = {}) {
|
|
32
|
+
const tests = [];
|
|
33
|
+
const set = [];
|
|
34
|
+
const lines = [];
|
|
35
|
+
let truncated = false;
|
|
36
|
+
const collect = (outcome) => {
|
|
37
|
+
tests.push(...outcome.tests);
|
|
38
|
+
set.push(...outcome.values);
|
|
39
|
+
lines.push(...outcome.log.lines);
|
|
40
|
+
truncated ||= outcome.log.truncated;
|
|
41
|
+
for (const { value, secret } of outcome.values) {
|
|
42
|
+
if (secret || options.containsKnownSecret?.(value) === true)
|
|
43
|
+
options.onSecretValue?.(value);
|
|
44
|
+
}
|
|
45
|
+
};
|
|
46
|
+
return {
|
|
47
|
+
pre: async (before) => {
|
|
48
|
+
if (scripted.scripts.pre === undefined)
|
|
49
|
+
return before;
|
|
50
|
+
const outcome = await scripting.pre(scripted, before, values);
|
|
51
|
+
collect(outcome);
|
|
52
|
+
return (outcome.request ?? before);
|
|
53
|
+
},
|
|
54
|
+
post: async (sent, response) => {
|
|
55
|
+
let error;
|
|
56
|
+
if (scripted.scripts.post !== undefined) {
|
|
57
|
+
const later = { ...values, vars: { ...values.vars, ...Object.fromEntries(set.map((v) => [v.name, v.value])) } };
|
|
58
|
+
const outcome = await scripting.post(scripted, sent, response, later);
|
|
59
|
+
collect(outcome);
|
|
60
|
+
if (!outcome.ok) {
|
|
61
|
+
const thrown = scriptError(outcome.error, scripting.fileOf(scripted, 'post'));
|
|
62
|
+
error = { code: thrown.code, message: thrown.message };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
return { tests, values: set, log: { lines, truncated }, ...(error !== undefined ? { error } : {}) };
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
-
import type { Project } from '../project/model.js';
|
|
1
|
+
import type { Project, PropertyMap } from '../project/model.js';
|
|
2
|
+
import type { ProtocolRegistry } from '../protocol/registry.js';
|
|
3
|
+
import type { SelectedRequest } from '../protocols.js';
|
|
2
4
|
import type { SecretNeed } from '../secrets/env-names.js';
|
|
3
|
-
import type {
|
|
5
|
+
import type { Workspace } from '../workspace/model.js';
|
|
6
|
+
export { secretNamesInValue } from './send-helpers.js';
|
|
4
7
|
/** One secret a run needs, and which requests need it. */
|
|
5
8
|
export interface LocatedSecretNeed extends SecretNeed {
|
|
6
9
|
/** Display paths of the requests that need it. */
|
|
@@ -8,6 +11,10 @@ export interface LocatedSecretNeed extends SecretNeed {
|
|
|
8
11
|
}
|
|
9
12
|
/**
|
|
10
13
|
* The secrets `selected` needs, one entry per ref in first-use order, each with every request
|
|
11
|
-
* that uses it. The first declaration of a ref supplies its name and purpose.
|
|
14
|
+
* that uses it. The first declaration of a ref supplies its name and purpose. `overrides` are the
|
|
15
|
+
* run's `--var` properties, laid over the environment's as a send lays them. With a `workspace`
|
|
16
|
+
* the scopes are the ones a send inside it expands against: the workspace's properties, and each
|
|
17
|
+
* workspace environment with its linked project environment. `registry` is the set of protocol
|
|
18
|
+
* modules asked for their needs; the built-in ones by default.
|
|
12
19
|
*/
|
|
13
|
-
export declare function secretNeedsOf(selected: readonly SelectedRequest[], project: Project): LocatedSecretNeed[];
|
|
20
|
+
export declare function secretNeedsOf(selected: readonly SelectedRequest[], project: Project, overrides?: PropertyMap, workspace?: Workspace, registry?: ProtocolRegistry): LocatedSecretNeed[];
|
package/dist/run/secret-needs.js
CHANGED
|
@@ -1,112 +1,64 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Every secret a selection of requests will ask for, found before anything is sent, so a pipeline
|
|
3
3
|
* can be told which variables to set (`wirebench secrets list`) and a run knows which names to
|
|
4
|
-
* read.
|
|
5
|
-
*
|
|
4
|
+
* read. The generic part is here: every `${secret:name}` the request's own text reaches, and the
|
|
5
|
+
* secrets its scripts list. What a protocol's configuration needs (effective auth, the request's
|
|
6
|
+
* keystore, signing, WS-Security) is its module's answer, walking the same sources its send resolves.
|
|
6
7
|
*/
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
try {
|
|
22
|
-
const def = toKeystoreDef(ref);
|
|
23
|
-
return present(def.passwordSecretRef)
|
|
24
|
-
? [
|
|
25
|
-
{
|
|
26
|
-
ref: def.passwordSecretRef,
|
|
27
|
-
...(def.passwordEnv !== undefined ? { envName: def.passwordEnv } : {}),
|
|
28
|
-
purpose: `keystore password for "${def.name}"`,
|
|
29
|
-
},
|
|
30
|
-
]
|
|
31
|
-
: [];
|
|
32
|
-
}
|
|
33
|
-
catch {
|
|
34
|
-
// `prepareSend` refuses such a request with its own error; it needs no secret before then.
|
|
35
|
-
return [];
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
/** Parses a WS-Security configuration by id; missing or unreadable is prepare's error, not a need. */
|
|
39
|
-
function findConfig(refs, id, convert) {
|
|
40
|
-
if (!present(id)) {
|
|
41
|
-
return undefined;
|
|
42
|
-
}
|
|
43
|
-
const ref = refs.find((candidate) => candidate.id === id);
|
|
44
|
-
if (ref === undefined) {
|
|
45
|
-
return undefined;
|
|
46
|
-
}
|
|
47
|
-
try {
|
|
48
|
-
return convert(ref);
|
|
49
|
-
}
|
|
50
|
-
catch {
|
|
51
|
-
return undefined;
|
|
8
|
+
import { resolveScopes } from '../project/environments.js';
|
|
9
|
+
import { defaultRegistry } from '../protocols.js';
|
|
10
|
+
import { activeScripts } from '../script/request-scripts.js';
|
|
11
|
+
import { secretEnvName, secretPseudoRef } from '../secrets/secret-token.js';
|
|
12
|
+
import { resolveWorkspaceScopes, withActiveEnvironment } from '../workspace/environments.js';
|
|
13
|
+
import { secretNamesInValue } from './send-helpers.js';
|
|
14
|
+
export { secretNamesInValue } from './send-helpers.js';
|
|
15
|
+
function tokenNeeds(selected, scopeSets) {
|
|
16
|
+
// A script's own text is code, not a template: nothing in it is a reference. The secrets its
|
|
17
|
+
// request lists for `secrets.get` are needed instead (#63).
|
|
18
|
+
const { scripts, ...request } = selected.request;
|
|
19
|
+
const names = new Set(scopeSets.flatMap((scopes) => secretNamesInValue(request, scopes)));
|
|
20
|
+
for (const name of activeScripts(scripts)?.secrets ?? []) {
|
|
21
|
+
names.add(name);
|
|
52
22
|
}
|
|
23
|
+
return [...names].map((name) => ({
|
|
24
|
+
ref: secretPseudoRef(name),
|
|
25
|
+
envName: secretEnvName(name),
|
|
26
|
+
purpose: `secret "${name}"`,
|
|
27
|
+
}));
|
|
53
28
|
}
|
|
54
|
-
/**
|
|
55
|
-
function
|
|
56
|
-
const
|
|
57
|
-
|
|
58
|
-
if (entry.kind === 'username-token') {
|
|
59
|
-
const ref = entry.passwordRef ?? config.defaultPasswordRef;
|
|
60
|
-
if (entry.passwordType !== 'none' && present(ref)) {
|
|
61
|
-
needs.push({ ref, purpose: `WS-Security password for "${entry.username}"` });
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
else if (entry.kind === 'signature') {
|
|
65
|
-
needs.push(...keystoreNeeds(project, entry.keystoreRef));
|
|
66
|
-
if (present(entry.keyPasswordRef)) {
|
|
67
|
-
needs.push({ ref: entry.keyPasswordRef, purpose: `WS-Security signing key password ("${config.name}")` });
|
|
68
|
-
}
|
|
69
|
-
}
|
|
70
|
-
else if (entry.kind === 'encryption') {
|
|
71
|
-
needs.push(...keystoreNeeds(project, entry.keystoreRef));
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
return needs;
|
|
29
|
+
/** The generic needs of `selected`, then what its protocol's configuration needs. */
|
|
30
|
+
function needsOf(selected, project, scopeSets, registry) {
|
|
31
|
+
const run = registry.find(selected.kind)?.run;
|
|
32
|
+
return [...tokenNeeds(selected, scopeSets), ...(run !== undefined ? run.secretNeeds(selected, project) : [])];
|
|
75
33
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
...(present(config.decryptKeyPasswordRef)
|
|
80
|
-
? [{ ref: config.decryptKeyPasswordRef, purpose: `WS-Security decryption key password ("${config.name}")` }]
|
|
81
|
-
: []),
|
|
82
|
-
...keystoreNeeds(project, config.signatureKeystoreRef),
|
|
83
|
-
];
|
|
84
|
-
}
|
|
85
|
-
function needsOf(selected, project) {
|
|
86
|
-
if (selected.kind === 'rest') {
|
|
87
|
-
return [
|
|
88
|
-
...secretNeedsOfAuth(restEffectiveAuth(selected)),
|
|
89
|
-
...keystoreNeeds(project, selected.request.settings.sslKeystoreRef),
|
|
90
|
-
];
|
|
91
|
-
}
|
|
92
|
-
const { request } = selected;
|
|
93
|
-
const outgoing = findConfig(project.wss.outgoing, request.wssOutgoingRef, toWssOutgoingConfig);
|
|
94
|
-
const incoming = findConfig(project.wss.incoming, request.wssIncomingRef, toWssIncomingConfig);
|
|
95
|
-
return [
|
|
96
|
-
...secretNeedsOfAuth(soapEffectiveAuth(selected)),
|
|
97
|
-
...keystoreNeeds(project, request.properties.sslKeystoreRef),
|
|
98
|
-
...(outgoing !== undefined ? outgoingNeeds(project, outgoing) : []),
|
|
99
|
-
...(incoming !== undefined ? incomingNeeds(project, incoming) : []),
|
|
100
|
-
];
|
|
34
|
+
/** A workspace's scopes with no environment active, then under each of its environments in turn. */
|
|
35
|
+
function workspaceScopeSets(workspace, project) {
|
|
36
|
+
return [undefined, ...workspace.environments.map((environment) => environment.id)].map((environmentId) => resolveWorkspaceScopes({ workspace: withActiveEnvironment(workspace, environmentId), project, globals: {} }));
|
|
101
37
|
}
|
|
102
38
|
/**
|
|
103
39
|
* The secrets `selected` needs, one entry per ref in first-use order, each with every request
|
|
104
|
-
* that uses it. The first declaration of a ref supplies its name and purpose.
|
|
40
|
+
* that uses it. The first declaration of a ref supplies its name and purpose. `overrides` are the
|
|
41
|
+
* run's `--var` properties, laid over the environment's as a send lays them. With a `workspace`
|
|
42
|
+
* the scopes are the ones a send inside it expands against: the workspace's properties, and each
|
|
43
|
+
* workspace environment with its linked project environment. `registry` is the set of protocol
|
|
44
|
+
* modules asked for their needs; the built-in ones by default.
|
|
105
45
|
*/
|
|
106
|
-
export function secretNeedsOf(selected, project) {
|
|
46
|
+
export function secretNeedsOf(selected, project, overrides = {}, workspace, registry = defaultRegistry()) {
|
|
107
47
|
const byRef = new Map();
|
|
48
|
+
// A token a property holds counts whichever environment a run picks: project properties alone,
|
|
49
|
+
// then each environment laid over them. No process environment, so this stays pure.
|
|
50
|
+
const withOverrides = (scopes) => ({
|
|
51
|
+
...scopes,
|
|
52
|
+
env: { ...(scopes.env ?? {}), ...overrides },
|
|
53
|
+
});
|
|
54
|
+
const scopeSets = (workspace === undefined
|
|
55
|
+
? [
|
|
56
|
+
resolveScopes(project, undefined, {}, {}),
|
|
57
|
+
...project.environments.map((environment) => resolveScopes(project, environment.id, {}, {})),
|
|
58
|
+
]
|
|
59
|
+
: workspaceScopeSets(workspace, project)).map(withOverrides);
|
|
108
60
|
for (const item of selected) {
|
|
109
|
-
for (const need of needsOf(item, project)) {
|
|
61
|
+
for (const need of needsOf(item, project, scopeSets, registry)) {
|
|
110
62
|
const known = byRef.get(need.ref);
|
|
111
63
|
if (known === undefined) {
|
|
112
64
|
byRef.set(need.ref, { need, usedBy: [item.path] });
|
package/dist/run/select.d.ts
CHANGED
|
@@ -1,34 +1,43 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Which requests a run covers, and in what order: the order the explorer shows, so a report reads
|
|
3
|
-
* like the project.
|
|
3
|
+
* like the project. Every container shares one ordering space (see `Project.apis`). The requests
|
|
4
|
+
* themselves come from the protocol modules: nothing here names a protocol.
|
|
4
5
|
*/
|
|
5
|
-
import type {
|
|
6
|
-
import type {
|
|
7
|
-
|
|
8
|
-
export type SelectedRequest
|
|
9
|
-
readonly kind: 'soap';
|
|
10
|
-
readonly path: string;
|
|
11
|
-
readonly group: string;
|
|
12
|
-
readonly iface: Interface;
|
|
13
|
-
readonly operation: OperationDef;
|
|
14
|
-
readonly request: SoapRequestDef;
|
|
15
|
-
} | {
|
|
16
|
-
readonly kind: 'rest';
|
|
17
|
-
readonly path: string;
|
|
18
|
-
readonly group: string;
|
|
19
|
-
readonly api: RestApi;
|
|
20
|
-
readonly chain: readonly RestFolder[];
|
|
21
|
-
readonly request: RestRequestDef;
|
|
22
|
-
};
|
|
6
|
+
import type { Project } from '../project/model.js';
|
|
7
|
+
import type { ProtocolRegistry } from '../protocol/registry.js';
|
|
8
|
+
import type { SelectedRequest } from '../protocols.js';
|
|
9
|
+
export type { SelectedRequest } from '../protocols.js';
|
|
23
10
|
/**
|
|
24
11
|
* Resolves `selectors` (display paths or on-disk paths, matched at a `/` boundary) against the
|
|
25
|
-
* project's requests, in explorer order. An empty `selectors` list selects everything
|
|
26
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
12
|
+
* project's requests, in explorer order. An empty `selectors` list selects everything but the webhook
|
|
13
|
+
* items: those deliver to a receiver rather than test an API, so a run sends one only when a selector
|
|
14
|
+
* covers it (`Webhooks/…` or `webhooks/requests/…`). A gRPC request that streams, and a request its
|
|
15
|
+
* contract no longer has, are skipped: neither is runnable from the command line yet, and there is no
|
|
16
|
+
* per-selector reason to report — a selector naming one simply matches nothing and surfaces through
|
|
17
|
+
* `unmatched`, same as a typo would. `unmatched` lists every selector that covered no request, so the
|
|
18
|
+
* runner can refuse the run rather than quietly test nothing.
|
|
19
|
+
*
|
|
20
|
+
* `registry` is the set of protocol modules asked for their requests; the built-in ones by default.
|
|
30
21
|
*/
|
|
31
|
-
export declare function selectRequests(project: Project, selectors: readonly string[]): {
|
|
22
|
+
export declare function selectRequests(project: Project, selectors: readonly string[], registry?: ProtocolRegistry): {
|
|
32
23
|
selected: SelectedRequest[];
|
|
33
24
|
unmatched: string[];
|
|
34
25
|
};
|
|
26
|
+
/** Where a sequence step's request id leads. */
|
|
27
|
+
export type StepRequestLookup = {
|
|
28
|
+
readonly kind: 'found';
|
|
29
|
+
readonly selected: SelectedRequest;
|
|
30
|
+
} | {
|
|
31
|
+
readonly kind: 'missing';
|
|
32
|
+
} | {
|
|
33
|
+
readonly kind: 'unsupported';
|
|
34
|
+
readonly reason: string;
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Finds the request a sequence step names by id, among the requests a run can send, with the same
|
|
38
|
+
* context `selectRequests` gives. A request that exists but cannot run (a webhook item, a streaming
|
|
39
|
+
* gRPC call, one orphaned by its contract) says why, so the step errors with a reason rather than as
|
|
40
|
+
* missing. Every module is asked for a reason before any candidate is looked
|
|
41
|
+
* at: a webhook item is a candidate of a run, and still not a step.
|
|
42
|
+
*/
|
|
43
|
+
export declare function findStepRequest(project: Project, requestId: string, registry?: ProtocolRegistry): StepRequestLookup;
|
package/dist/run/select.js
CHANGED
|
@@ -1,48 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
item: { kind: 'rest', path: `${group}/${child.request.name}`, group, api, chain, request: child.request },
|
|
17
|
-
diskPath: `${diskDir}/${child.request.slug}`,
|
|
18
|
-
});
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
walkRest(api, [...chain, child.folder], child.folder, `${group}/${child.folder.name}`, `${diskDir}/${child.folder.slug}`, out);
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
}
|
|
26
|
-
function candidates(project) {
|
|
27
|
-
const out = [];
|
|
28
|
-
for (const container of [...project.interfaces, ...project.apis].sort(byOrder)) {
|
|
29
|
-
if (container.kind === 'rest') {
|
|
30
|
-
walkRest(container, [], container, container.name, `apis/${container.slug}/requests`, out);
|
|
31
|
-
continue;
|
|
32
|
-
}
|
|
33
|
-
for (const operation of [...container.operations].sort(byOrder)) {
|
|
34
|
-
const group = `${container.name}/${operation.name}`;
|
|
35
|
-
for (const request of [...operation.requests].sort(byOrder)) {
|
|
36
|
-
if (request.orphaned !== true) {
|
|
37
|
-
out.push({
|
|
38
|
-
item: { kind: 'soap', path: `${group}/${request.name}`, group, iface: container, operation, request },
|
|
39
|
-
diskPath: `interfaces/${container.slug}/operations/${operation.slug}/${request.slug}`,
|
|
40
|
-
});
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
}
|
|
45
|
-
return out;
|
|
1
|
+
import { defaultRegistry } from '../protocols.js';
|
|
2
|
+
import { byOrder } from './tree.js';
|
|
3
|
+
/**
|
|
4
|
+
* A module's selection under the built-in union. A registry may hold a module that is not built in;
|
|
5
|
+
* its items travel under this type too, and a caller that narrows on `kind` simply never matches them.
|
|
6
|
+
*/
|
|
7
|
+
const asSelected = (item) => item;
|
|
8
|
+
/** Every runnable request, container by container in explorer order, `explicitOnly` groups last. */
|
|
9
|
+
function candidates(project, registry) {
|
|
10
|
+
const groups = registry.modules.flatMap((module) => module.run?.groups(project) ?? []);
|
|
11
|
+
const inOrder = [
|
|
12
|
+
...groups.filter((group) => group.explicitOnly !== true).sort(byOrder),
|
|
13
|
+
...groups.filter((group) => group.explicitOnly === true).sort(byOrder),
|
|
14
|
+
];
|
|
15
|
+
return inOrder.flatMap((group) => group.candidates.map(({ item, diskPath }) => ({ item, diskPath, explicitOnly: group.explicitOnly === true })));
|
|
46
16
|
}
|
|
47
17
|
function normalise(selector) {
|
|
48
18
|
return selector
|
|
@@ -54,23 +24,44 @@ function normalise(selector) {
|
|
|
54
24
|
const covers = (selector, candidate) => candidate === selector || candidate.startsWith(`${selector}/`);
|
|
55
25
|
/**
|
|
56
26
|
* Resolves `selectors` (display paths or on-disk paths, matched at a `/` boundary) against the
|
|
57
|
-
* project's requests, in explorer order. An empty `selectors` list selects everything
|
|
58
|
-
*
|
|
59
|
-
*
|
|
60
|
-
*
|
|
61
|
-
*
|
|
27
|
+
* project's requests, in explorer order. An empty `selectors` list selects everything but the webhook
|
|
28
|
+
* items: those deliver to a receiver rather than test an API, so a run sends one only when a selector
|
|
29
|
+
* covers it (`Webhooks/…` or `webhooks/requests/…`). A gRPC request that streams, and a request its
|
|
30
|
+
* contract no longer has, are skipped: neither is runnable from the command line yet, and there is no
|
|
31
|
+
* per-selector reason to report — a selector naming one simply matches nothing and surfaces through
|
|
32
|
+
* `unmatched`, same as a typo would. `unmatched` lists every selector that covered no request, so the
|
|
33
|
+
* runner can refuse the run rather than quietly test nothing.
|
|
34
|
+
*
|
|
35
|
+
* `registry` is the set of protocol modules asked for their requests; the built-in ones by default.
|
|
62
36
|
*/
|
|
63
|
-
export function selectRequests(project, selectors) {
|
|
64
|
-
const all = candidates(project);
|
|
37
|
+
export function selectRequests(project, selectors, registry = defaultRegistry()) {
|
|
38
|
+
const all = candidates(project, registry);
|
|
65
39
|
if (selectors.length === 0) {
|
|
66
|
-
return { selected: all.map((c) => c.item), unmatched: [] };
|
|
40
|
+
return { selected: all.filter((c) => !c.explicitOnly).map((c) => asSelected(c.item)), unmatched: [] };
|
|
67
41
|
}
|
|
68
42
|
const matches = (selector, c) => {
|
|
69
43
|
const s = normalise(selector);
|
|
70
44
|
return covers(s, c.item.path) || covers(s, c.diskPath);
|
|
71
45
|
};
|
|
72
46
|
return {
|
|
73
|
-
selected: all.filter((c) => selectors.some((s) => matches(s, c))).map((c) => c.item),
|
|
47
|
+
selected: all.filter((c) => selectors.some((s) => matches(s, c))).map((c) => asSelected(c.item)),
|
|
74
48
|
unmatched: selectors.filter((s) => !all.some((c) => matches(s, c))),
|
|
75
49
|
};
|
|
76
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* Finds the request a sequence step names by id, among the requests a run can send, with the same
|
|
53
|
+
* context `selectRequests` gives. A request that exists but cannot run (a webhook item, a streaming
|
|
54
|
+
* gRPC call, one orphaned by its contract) says why, so the step errors with a reason rather than as
|
|
55
|
+
* missing. Every module is asked for a reason before any candidate is looked
|
|
56
|
+
* at: a webhook item is a candidate of a run, and still not a step.
|
|
57
|
+
*/
|
|
58
|
+
export function findStepRequest(project, requestId, registry = defaultRegistry()) {
|
|
59
|
+
for (const module of registry.modules) {
|
|
60
|
+
const reason = module.run?.whyNotRunnable(project, requestId);
|
|
61
|
+
if (reason !== undefined) {
|
|
62
|
+
return { kind: 'unsupported', reason };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const runnable = candidates(project, registry).find((candidate) => candidate.item.request.id === requestId);
|
|
66
|
+
return runnable !== undefined ? { kind: 'found', selected: asSelected(runnable.item) } : { kind: 'missing' };
|
|
67
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { WirebenchError } from '../errors.js';
|
|
2
|
+
import type { TlsOptions } from '../http/types.js';
|
|
3
|
+
import type { BaseUrlSource } from '../project/environments.js';
|
|
4
|
+
import type { AuthConfig, Project } from '../project/model.js';
|
|
5
|
+
import type { PropertyScopes, UnresolvedRef } from '../project/properties.js';
|
|
6
|
+
import type { SecretPlaceholders } from '../script/send.js';
|
|
7
|
+
import type { SecretNeed } from '../secrets/env-names.js';
|
|
8
|
+
import { resolveAuthConfig } from '../secrets/resolve.js';
|
|
9
|
+
import type { GetSecret } from '../secrets/resolve.js';
|
|
10
|
+
import type { SendAuth } from '../http/auth/send-auth.js';
|
|
11
|
+
import type { Keystore } from '../keystore/index.js';
|
|
12
|
+
import type { RunContext } from './context.js';
|
|
13
|
+
import type { RunTokenSource } from './oauth2-token.js';
|
|
14
|
+
/**
|
|
15
|
+
* The `${secret:name}` names anywhere in `value`'s strings — a send input or a saved request —
|
|
16
|
+
* following property values through `scopes`, in first-use order. Binary data is skipped.
|
|
17
|
+
*/
|
|
18
|
+
export declare function secretNamesInValue(value: unknown, scopes?: PropertyScopes): string[];
|
|
19
|
+
/**
|
|
20
|
+
* `scopes` with the value of every `${secret:name}` token `input` reaches. Each value comes from
|
|
21
|
+
* `getSecret`, so a host that masks what it hands out (the CLI's `createEnvSecrets`) masks these too.
|
|
22
|
+
*/
|
|
23
|
+
export declare function withSecrets(input: unknown, scopes: PropertyScopes, getSecret: GetSecret, placeholders?: SecretPlaceholders): Promise<PropertyScopes>;
|
|
24
|
+
/** A send resolved (spec §3.4): what it would send, and the references nothing resolves in it. */
|
|
25
|
+
export interface Resolved<I> {
|
|
26
|
+
readonly input: I;
|
|
27
|
+
readonly unresolved: readonly UnresolvedRef[];
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* The refusal for a request whose text holds property references nothing resolves, under the code
|
|
31
|
+
* its protocol raises (spec §8).
|
|
32
|
+
*/
|
|
33
|
+
export declare function unresolvedError(code: string, path: string, unresolved: readonly UnresolvedRef[]): WirebenchError;
|
|
34
|
+
/**
|
|
35
|
+
* `path` resolved against the project folder, refused when it lands outside it. The app also
|
|
36
|
+
* accepts a file its user picked through a dialog; a pipeline has no such user, so the project
|
|
37
|
+
* folder is the whole boundary.
|
|
38
|
+
*/
|
|
39
|
+
export declare function insideProject(context: RunContext, path: string, code: string, name: string): Promise<string>;
|
|
40
|
+
/** A keystore by its entry id: through the host's loader when it lends one, else from the project folder. */
|
|
41
|
+
export declare function keystoreFor(context: RunContext, keystoreId: string): Promise<Keystore | undefined>;
|
|
42
|
+
/** The `cert`/`key` a request's own keystore presents; there is no global keystore in a run. */
|
|
43
|
+
export declare function clientIdentityFor(context: RunContext, keystoreId: string | undefined): Promise<TlsOptions | undefined>;
|
|
44
|
+
/** Identity, then the only two trust opt-outs a run honours: `--insecure` and the file's own flag. */
|
|
45
|
+
export declare function tlsFor(context: RunContext, keystoreId: string | undefined, trustInvalid: boolean): Promise<TlsOptions | undefined>;
|
|
46
|
+
/** The run's shared token source, or a fresh one for a send outside a run. */
|
|
47
|
+
export declare function tokenSourceOf(context: RunContext): RunTokenSource;
|
|
48
|
+
/**
|
|
49
|
+
* A request's effective auth with its secrets resolved. OAuth2 client credentials obtains a token
|
|
50
|
+
* (the token request uses the request's own TLS, the proxy for the token URL and the run's
|
|
51
|
+
* timeout); the authorization-code grant needs a browser a pipeline does not have, and is refused.
|
|
52
|
+
*
|
|
53
|
+
* @throws WirebenchError `auth-grant-unsupported` | `secret-missing` | `unresolved-properties` |
|
|
54
|
+
* `oauth2-token-error` | `oauth2-token-malformed`
|
|
55
|
+
*/
|
|
56
|
+
export declare function authFor(configured: AuthConfig, path: string, context: RunContext, tls: TlsOptions | undefined): Promise<Awaited<ReturnType<typeof resolveAuthConfig>>>;
|
|
57
|
+
/**
|
|
58
|
+
* Tells the host each credential a resolved auth puts on the wire, in the form it travels there,
|
|
59
|
+
* so a server that echoes one back has it masked: an API key's value, a bearer or OAuth2 access
|
|
60
|
+
* token, and Basic's `base64(user:password)`. A password is never reported bare — people choose
|
|
61
|
+
* them, so one is often ordinary text — and NTLM's password never travels at all.
|
|
62
|
+
*/
|
|
63
|
+
export declare function reportedAuth(auth: SendAuth | undefined, context: RunContext): SendAuth | undefined;
|
|
64
|
+
/**
|
|
65
|
+
* An API's base URL (or target) and where it came from, through the workspace's environment when
|
|
66
|
+
* the run has a workspace: what a preview reports beside the URL.
|
|
67
|
+
*/
|
|
68
|
+
export declare function resolvedBaseUrl(context: Pick<RunContext, 'project' | 'environmentId' | 'workspace'>, api: {
|
|
69
|
+
readonly slug: string;
|
|
70
|
+
readonly baseUrl: string;
|
|
71
|
+
}): {
|
|
72
|
+
readonly url: string;
|
|
73
|
+
readonly source: BaseUrlSource;
|
|
74
|
+
};
|
|
75
|
+
/** An API's base URL (or target), through the workspace's environment likewise. */
|
|
76
|
+
export declare function baseUrlFor(context: RunContext, api: {
|
|
77
|
+
readonly slug: string;
|
|
78
|
+
readonly baseUrl: string;
|
|
79
|
+
}): string;
|
|
80
|
+
/**
|
|
81
|
+
* After a server refused the credentials a send carried, drops the run's OAuth2 token among them,
|
|
82
|
+
* so the next request behind that configuration fetches a new one instead of repeating the refusal.
|
|
83
|
+
* The refused request itself is never sent again.
|
|
84
|
+
*/
|
|
85
|
+
export declare function dropRefusedToken(context: RunContext, auth: SendAuth | undefined, refused: boolean): void;
|
|
86
|
+
/** The origin a request went to, as a sent request reports it; nothing for a URL without one. */
|
|
87
|
+
export declare function originOf(url: string): {
|
|
88
|
+
readonly origin?: string;
|
|
89
|
+
};
|
|
90
|
+
/** True for a reference that is set: neither absent nor empty. */
|
|
91
|
+
export declare const present: (id: string | undefined) => id is string;
|
|
92
|
+
/** A keystore's password, when the registry entry has one; an unreadable entry needs nothing here. */
|
|
93
|
+
export declare function keystoreNeeds(project: Project, keystoreId: string | undefined): SecretNeed[];
|