@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,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which files of a request tree a save manages, and so may delete when it no longer writes them:
|
|
3
|
+
* the part of `save.ts` that every protocol keeping its requests under `apis/<slug>/requests/`
|
|
4
|
+
* shares, and that the webhook collection's tree uses too.
|
|
5
|
+
*
|
|
6
|
+
* One lister claims every sibling convention (`.body.<ext>`, `.msg-<slug>.<ext>`, the script
|
|
7
|
+
* files) whatever the API's protocol, exactly as it did when `save.ts` walked `apis/` itself.
|
|
8
|
+
*/
|
|
9
|
+
import type { FsLike } from './fs.js';
|
|
10
|
+
/** The absolute path of a `/`-separated path relative to the project root. */
|
|
11
|
+
export declare function toAbsolute(root: string, relative: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* True when `name` is a WebSocket request's saved-message sibling for `requestSlug`:
|
|
14
|
+
* `<requestSlug>.msg-<message-slug>.<ext>`, where `<ext>` is one `[A-Za-z0-9]+` run at the very
|
|
15
|
+
* end. Matched by trying the known `requestSlug` as a literal prefix — never by a greedy regex
|
|
16
|
+
* capture across the whole name — so a request slug that itself contains a dot or the literal text
|
|
17
|
+
* `.msg-` cannot be mis-split from the message slug that follows it.
|
|
18
|
+
*/
|
|
19
|
+
export declare function isWsMessageSibling(name: string, requestSlug: string): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Lists the managed files inside one directory of an API's request tree: its `folder.yaml`, every
|
|
22
|
+
* `*.request.yaml`, and two conventions of per-request sibling file, each claimed only when it
|
|
23
|
+
* belongs to a request slug actually present in this directory:
|
|
24
|
+
*
|
|
25
|
+
* - `<slug>.body.<ext>` — a REST raw body or a gRPC message, one file for the whole request.
|
|
26
|
+
* - `<slug>.msg-<message-slug>.<ext>` — one WebSocket saved message, one file per message
|
|
27
|
+
* ({@link isWsMessageSibling}).
|
|
28
|
+
* - `<slug>.pre.ts`, `<slug>.post.ts`, `<slug>.pre.js`, `<slug>.post.js` — a request's scripts (#63).
|
|
29
|
+
*
|
|
30
|
+
* Claiming only a sibling of a *known* request slug (rather than every file matching either
|
|
31
|
+
* pattern) means a hand-placed file — notes, a `.body.json` or `.msg-x.txt` with no matching
|
|
32
|
+
* request — is foreign and never a deletion candidate, exactly as in an operation folder.
|
|
33
|
+
*/
|
|
34
|
+
export declare function listApiTreeFiles(fs: FsLike, root: string, dir: string): Promise<string[]>;
|
|
35
|
+
/** The managed files of one `apis/<slug>/`: its `api.yaml` when it is there, and its request tree. */
|
|
36
|
+
export declare function apiManagedFiles(fs: FsLike, root: string, slug: string): Promise<string[]>;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which files of a request tree a save manages, and so may delete when it no longer writes them:
|
|
3
|
+
* the part of `save.ts` that every protocol keeping its requests under `apis/<slug>/requests/`
|
|
4
|
+
* shares, and that the webhook collection's tree uses too.
|
|
5
|
+
*
|
|
6
|
+
* One lister claims every sibling convention (`.body.<ext>`, `.msg-<slug>.<ext>`, the script
|
|
7
|
+
* files) whatever the API's protocol, exactly as it did when `save.ts` walked `apis/` itself.
|
|
8
|
+
*/
|
|
9
|
+
import { join } from 'node:path';
|
|
10
|
+
import { isScriptFileOf } from '../script/model.js';
|
|
11
|
+
import { readFileIfExists, readdirIfExists } from './fs.js';
|
|
12
|
+
import { API_FILE, APIS_DIR, FOLDER_FILE, REQUEST_SUFFIX, REQUESTS_DIR } from './paths.js';
|
|
13
|
+
/** The absolute path of a `/`-separated path relative to the project root. */
|
|
14
|
+
export function toAbsolute(root, relative) {
|
|
15
|
+
return join(root, ...relative.split('/'));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* True when `name` is a WebSocket request's saved-message sibling for `requestSlug`:
|
|
19
|
+
* `<requestSlug>.msg-<message-slug>.<ext>`, where `<ext>` is one `[A-Za-z0-9]+` run at the very
|
|
20
|
+
* end. Matched by trying the known `requestSlug` as a literal prefix — never by a greedy regex
|
|
21
|
+
* capture across the whole name — so a request slug that itself contains a dot or the literal text
|
|
22
|
+
* `.msg-` cannot be mis-split from the message slug that follows it.
|
|
23
|
+
*/
|
|
24
|
+
export function isWsMessageSibling(name, requestSlug) {
|
|
25
|
+
const prefix = `${requestSlug}.msg-`;
|
|
26
|
+
if (!name.startsWith(prefix)) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const rest = name.slice(prefix.length);
|
|
30
|
+
const dot = rest.lastIndexOf('.');
|
|
31
|
+
// dot > 0 requires a non-empty message slug before the extension.
|
|
32
|
+
return dot > 0 && /^[A-Za-z0-9]+$/.test(rest.slice(dot + 1));
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Lists the managed files inside one directory of an API's request tree: its `folder.yaml`, every
|
|
36
|
+
* `*.request.yaml`, and two conventions of per-request sibling file, each claimed only when it
|
|
37
|
+
* belongs to a request slug actually present in this directory:
|
|
38
|
+
*
|
|
39
|
+
* - `<slug>.body.<ext>` — a REST raw body or a gRPC message, one file for the whole request.
|
|
40
|
+
* - `<slug>.msg-<message-slug>.<ext>` — one WebSocket saved message, one file per message
|
|
41
|
+
* ({@link isWsMessageSibling}).
|
|
42
|
+
* - `<slug>.pre.ts`, `<slug>.post.ts`, `<slug>.pre.js`, `<slug>.post.js` — a request's scripts (#63).
|
|
43
|
+
*
|
|
44
|
+
* Claiming only a sibling of a *known* request slug (rather than every file matching either
|
|
45
|
+
* pattern) means a hand-placed file — notes, a `.body.json` or `.msg-x.txt` with no matching
|
|
46
|
+
* request — is foreign and never a deletion candidate, exactly as in an operation folder.
|
|
47
|
+
*/
|
|
48
|
+
export async function listApiTreeFiles(fs, root, dir) {
|
|
49
|
+
const managed = [];
|
|
50
|
+
const entries = await readdirIfExists(fs, toAbsolute(root, dir));
|
|
51
|
+
const requestSlugs = new Set();
|
|
52
|
+
for (const entry of entries) {
|
|
53
|
+
if (!entry.isFile) {
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (entry.name === FOLDER_FILE) {
|
|
57
|
+
managed.push(`${dir}/${entry.name}`);
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
if (entry.name.endsWith(REQUEST_SUFFIX)) {
|
|
61
|
+
requestSlugs.add(entry.name.slice(0, -REQUEST_SUFFIX.length));
|
|
62
|
+
managed.push(`${dir}/${entry.name}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
for (const entry of entries) {
|
|
66
|
+
if (!entry.isFile) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
const body = /^(.*)\.body\.[A-Za-z0-9]+$/.exec(entry.name);
|
|
70
|
+
if (body !== null && requestSlugs.has(body[1])) {
|
|
71
|
+
managed.push(`${dir}/${entry.name}`);
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
for (const slug of requestSlugs) {
|
|
75
|
+
if (isWsMessageSibling(entry.name, slug) || isScriptFileOf(entry.name, slug)) {
|
|
76
|
+
managed.push(`${dir}/${entry.name}`);
|
|
77
|
+
break;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
for (const entry of entries) {
|
|
82
|
+
if (entry.isDirectory) {
|
|
83
|
+
managed.push(...(await listApiTreeFiles(fs, root, `${dir}/${entry.name}`)));
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
return managed;
|
|
87
|
+
}
|
|
88
|
+
/** The managed files of one `apis/<slug>/`: its `api.yaml` when it is there, and its request tree. */
|
|
89
|
+
export async function apiManagedFiles(fs, root, slug) {
|
|
90
|
+
const base = `${APIS_DIR}/${slug}`;
|
|
91
|
+
const managed = [];
|
|
92
|
+
if ((await readFileIfExists(fs, toAbsolute(root, `${base}/${API_FILE}`))) !== undefined) {
|
|
93
|
+
managed.push(`${base}/${API_FILE}`);
|
|
94
|
+
}
|
|
95
|
+
managed.push(...(await listApiTreeFiles(fs, root, `${base}/${REQUESTS_DIR}`)));
|
|
96
|
+
return managed;
|
|
97
|
+
}
|
|
@@ -16,8 +16,8 @@ type RawManifest = Record<string, unknown>;
|
|
|
16
16
|
* with the current `formatVersion` so schema validation (which pins
|
|
17
17
|
* `formatVersion` to a literal) accepts a document written by an older build.
|
|
18
18
|
* The next save then writes the file back at the current version. Versions
|
|
19
|
-
* 2 → 3 → 4 are the same kind of step: fields an older file simply
|
|
20
|
-
* which the loader defaults.
|
|
19
|
+
* 2 → 3 → 4 → 5 → 6 are the same kind of step: fields an older file simply
|
|
20
|
+
* lacks, which the loader defaults.
|
|
21
21
|
*
|
|
22
22
|
* @throws ProjectError `project-format-too-new` when the file was written by a
|
|
23
23
|
* newer Wirebench, `project-file-invalid` when `formatVersion` is missing,
|
package/dist/project/migrate.js
CHANGED
|
@@ -16,8 +16,8 @@ import { FORMAT_VERSION } from './model.js';
|
|
|
16
16
|
* with the current `formatVersion` so schema validation (which pins
|
|
17
17
|
* `formatVersion` to a literal) accepts a document written by an older build.
|
|
18
18
|
* The next save then writes the file back at the current version. Versions
|
|
19
|
-
* 2 → 3 → 4 are the same kind of step: fields an older file simply
|
|
20
|
-
* which the loader defaults.
|
|
19
|
+
* 2 → 3 → 4 → 5 → 6 are the same kind of step: fields an older file simply
|
|
20
|
+
* lacks, which the loader defaults.
|
|
21
21
|
*
|
|
22
22
|
* @throws ProjectError `project-format-too-new` when the file was written by a
|
|
23
23
|
* newer Wirebench, `project-file-invalid` when `formatVersion` is missing,
|
package/dist/project/model.d.ts
CHANGED
|
@@ -16,15 +16,24 @@ import type { WsaConfig } from '../wsa/model.js';
|
|
|
16
16
|
import type { GrpcApi, GrpcRequestDef } from '../grpc/model.js';
|
|
17
17
|
import type { RestApi, RestRequestDef } from '../rest/model.js';
|
|
18
18
|
import type { WsApi, WsRequestDef } from '../ws/model.js';
|
|
19
|
+
import type { SequenceDef } from '../sequence/model.js';
|
|
20
|
+
import type { WebhookCollection } from '../webhooks/model.js';
|
|
21
|
+
import type { ContainerBase, ContainerDir } from '../protocol/module.js';
|
|
22
|
+
import type { RequestScripts } from '../script/model.js';
|
|
19
23
|
export type { WsaConfig, WsaConfigPatch, WsaMustUnderstand, WsaVersion } from '../wsa/model.js';
|
|
20
24
|
/**
|
|
21
25
|
* The on-disk format version written to (and required by) `wirebench.yaml`.
|
|
22
26
|
*
|
|
23
|
-
* 4 added `assertions` on a request and the `…Env` name beside each secret reference.
|
|
24
|
-
*
|
|
25
|
-
*
|
|
27
|
+
* 4 added `assertions` on a request and the `…Env` name beside each secret reference. 5 let a SOAP
|
|
28
|
+
* interface, endpoint or request carry `bearer`, `api-key` and `oauth2` auth (previously
|
|
29
|
+
* REST-only) — new keys and new enum values on an existing field. 6 added `scripts` on a SOAP, REST or
|
|
30
|
+
* gRPC request (#63), the project's webhook collection under `webhooks/`, `hook` on a request, `signing` on the
|
|
31
|
+
* collection, its folders and its items, the `callback` assertion kind (callback-assertion spec §2.1), and `assertions` on a WebSocket request (#192).
|
|
32
|
+
* 6 is not yet released, so these share it.
|
|
33
|
+
* All are additive; this format does not round-trip unknown keys, so an older build would delete them on
|
|
34
|
+
* its next save (see `schema.ts` and ADR-0003) — and would meanwhile send a request without its scripts.
|
|
26
35
|
*/
|
|
27
|
-
export declare const FORMAT_VERSION =
|
|
36
|
+
export declare const FORMAT_VERSION = 6;
|
|
28
37
|
/** A flat, ordered map of property name to value (project- or environment-scoped). */
|
|
29
38
|
export type PropertyMap = Readonly<Record<string, string>>;
|
|
30
39
|
/**
|
|
@@ -53,7 +62,7 @@ export interface EndpointAuth {
|
|
|
53
62
|
/**
|
|
54
63
|
* "Whatever the thing above me uses." Only a REST request or folder may say this; resolution
|
|
55
64
|
* walks request → folder chain → API and takes the first configuration that is not `inherit`
|
|
56
|
-
* (see `
|
|
65
|
+
* (see `http/auth/apply-auth.ts`).
|
|
57
66
|
*/
|
|
58
67
|
export interface InheritAuth {
|
|
59
68
|
readonly type: 'inherit';
|
|
@@ -116,6 +125,19 @@ export interface OAuth2Auth {
|
|
|
116
125
|
* protocols.
|
|
117
126
|
*/
|
|
118
127
|
export type AuthConfig = InheritAuth | EndpointAuth | BearerAuth | ApiKeyAuth | OAuth2Auth;
|
|
128
|
+
/**
|
|
129
|
+
* What a SOAP interface, endpoint or request may hold: every {@link AuthConfig} arm except
|
|
130
|
+
* {@link InheritAuth} — a SOAP owner has no interface-like ancestor to inherit from, so the SOAP
|
|
131
|
+
* chain stays request → endpoint (override/complement) → interface.
|
|
132
|
+
*/
|
|
133
|
+
export type SoapOwnerAuth = Exclude<AuthConfig, InheritAuth>;
|
|
134
|
+
/**
|
|
135
|
+
* How a definition document is fetched: Basic, a bearer token or an API key. Secrets are keychain
|
|
136
|
+
* references, as everywhere else. Separate from the API's own `auth`, which is what its requests send.
|
|
137
|
+
*/
|
|
138
|
+
export type DefinitionAuth = (EndpointAuth & {
|
|
139
|
+
readonly type: 'basic';
|
|
140
|
+
}) | BearerAuth | ApiKeyAuth;
|
|
119
141
|
/** The OAuth2 fields a freshly configured entry starts with. */
|
|
120
142
|
export declare const DEFAULT_OAUTH2_AUTH: OAuth2Auth;
|
|
121
143
|
/** One addressable endpoint (URL + optional credentials) of an interface. */
|
|
@@ -123,7 +145,7 @@ export interface Endpoint {
|
|
|
123
145
|
readonly id: string;
|
|
124
146
|
readonly name: string;
|
|
125
147
|
readonly url: string;
|
|
126
|
-
readonly auth?:
|
|
148
|
+
readonly auth?: SoapOwnerAuth;
|
|
127
149
|
/** `override` replaces request credentials, `complement` only fills in blanks. */
|
|
128
150
|
readonly authMode: 'override' | 'complement';
|
|
129
151
|
/**
|
|
@@ -225,7 +247,7 @@ export interface SoapRequestDef {
|
|
|
225
247
|
readonly soapAction?: string;
|
|
226
248
|
readonly headers: readonly HeaderEntry[];
|
|
227
249
|
readonly attachments: readonly Attachment[];
|
|
228
|
-
readonly auth?:
|
|
250
|
+
readonly auth?: SoapOwnerAuth;
|
|
229
251
|
readonly wsa?: WsaConfig;
|
|
230
252
|
/** Name of a `wss/outgoing/<name>.yaml` configuration. */
|
|
231
253
|
readonly wssOutgoingRef?: string;
|
|
@@ -241,14 +263,11 @@ export interface SoapRequestDef {
|
|
|
241
263
|
* brings the operation back does.
|
|
242
264
|
*/
|
|
243
265
|
readonly orphaned?: boolean;
|
|
266
|
+
/** Pre-request and post-response scripts, in files beside the request (#63). */
|
|
267
|
+
readonly scripts?: RequestScripts;
|
|
244
268
|
/** Stored verbatim in the sibling `.xml` file, byte for byte. */
|
|
245
269
|
readonly envelopeXml: string;
|
|
246
270
|
}
|
|
247
|
-
/**
|
|
248
|
-
* The name this type had before REST requests existed, kept as an alias for one release so
|
|
249
|
-
* callers that only ever mean a SOAP request need not be touched. Prefer {@link SoapRequestDef}.
|
|
250
|
-
*/
|
|
251
|
-
export type RequestDef = SoapRequestDef;
|
|
252
271
|
/**
|
|
253
272
|
* A saved request of either protocol, which is what a lookup by request id can return: the id
|
|
254
273
|
* space is one (ULIDs), so `kind` is how a caller finds out what it has.
|
|
@@ -278,7 +297,7 @@ export interface Interface {
|
|
|
278
297
|
readonly defaultEndpointId?: string;
|
|
279
298
|
readonly wsa: WsaConfig;
|
|
280
299
|
/** Interface-level default credentials, overridable per endpoint and per request. */
|
|
281
|
-
readonly auth?:
|
|
300
|
+
readonly auth?: SoapOwnerAuth;
|
|
282
301
|
readonly operations: readonly OperationDef[];
|
|
283
302
|
}
|
|
284
303
|
/** A named set of per-interface endpoint overrides and property values. */
|
|
@@ -325,6 +344,21 @@ export interface ProjectSettings {
|
|
|
325
344
|
}
|
|
326
345
|
/** The settings a new project starts with. */
|
|
327
346
|
export declare const DEFAULT_PROJECT_SETTINGS: ProjectSettings;
|
|
347
|
+
/**
|
|
348
|
+
* A container whose kind has no enabled module: kept on disk exactly as it is (spec §6).
|
|
349
|
+
*
|
|
350
|
+
* @internal Exported for the engine's own hosts; not yet a plugin API (ADR-0017).
|
|
351
|
+
*/
|
|
352
|
+
export interface UnsupportedContainer {
|
|
353
|
+
readonly dir: 'interfaces' | 'apis';
|
|
354
|
+
readonly slug: string;
|
|
355
|
+
/** As written in the container file. */
|
|
356
|
+
readonly kind: string;
|
|
357
|
+
readonly reason: 'unknown-kind' | 'feature-disabled';
|
|
358
|
+
/** Read from the container file when present, for a placeholder row. */
|
|
359
|
+
readonly name?: string;
|
|
360
|
+
readonly order?: number;
|
|
361
|
+
}
|
|
328
362
|
/** A whole Wirebench project, as loaded from (or saved to) a project folder. */
|
|
329
363
|
export interface Project {
|
|
330
364
|
readonly formatVersion: typeof FORMAT_VERSION;
|
|
@@ -354,6 +388,29 @@ export interface Project {
|
|
|
354
388
|
* `order` is shared with all three.
|
|
355
389
|
*/
|
|
356
390
|
readonly wsApis: readonly WsApi[];
|
|
391
|
+
/**
|
|
392
|
+
* Containers of a kind that has no list of its own above, keyed by kind. Absent means none.
|
|
393
|
+
* Read with {@link extraContainersOf}.
|
|
394
|
+
*
|
|
395
|
+
* @internal Exported for the engine's own hosts; not yet a plugin API (ADR-0017).
|
|
396
|
+
*/
|
|
397
|
+
readonly extraContainers?: Readonly<Record<string, readonly ContainerBase[]>>;
|
|
398
|
+
/**
|
|
399
|
+
* Containers this build could not load and left untouched on disk. Absent means none.
|
|
400
|
+
*
|
|
401
|
+
* @internal Exported for the engine's own hosts; not yet a plugin API (ADR-0017).
|
|
402
|
+
*/
|
|
403
|
+
readonly unsupported?: readonly UnsupportedContainer[];
|
|
404
|
+
/**
|
|
405
|
+
* The project's sequences, one file each under `sequences/`. Not a container like the four above: a
|
|
406
|
+
* sequence holds no requests of its own, only references to theirs by id.
|
|
407
|
+
*/
|
|
408
|
+
readonly sequences: readonly SequenceDef[];
|
|
409
|
+
/**
|
|
410
|
+
* The project's webhook collection (spec `…-openapi-webhooks-import-design.md`), absent until the
|
|
411
|
+
* first webhook is created or imported. Not a list like the API containers: one per project.
|
|
412
|
+
*/
|
|
413
|
+
readonly webhooks?: WebhookCollection;
|
|
357
414
|
readonly environments: readonly Environment[];
|
|
358
415
|
/** Id of the environment currently active for this project, if any. */
|
|
359
416
|
readonly activeEnvironmentId?: string;
|
|
@@ -363,6 +420,27 @@ export interface Project {
|
|
|
363
420
|
readonly keystores: readonly WssRef[];
|
|
364
421
|
};
|
|
365
422
|
}
|
|
423
|
+
/**
|
|
424
|
+
* The project's placeholders; empty when it has none.
|
|
425
|
+
*
|
|
426
|
+
* @internal Exported for the engine's own hosts; not yet a plugin API (ADR-0017).
|
|
427
|
+
*/
|
|
428
|
+
export declare function unsupportedOf(project: Project): readonly UnsupportedContainer[];
|
|
429
|
+
/**
|
|
430
|
+
* The project's containers of `kind` kept in {@link Project.extraContainers}.
|
|
431
|
+
*
|
|
432
|
+
* @internal Exported for the engine's own hosts; not yet a plugin API (ADR-0017).
|
|
433
|
+
*/
|
|
434
|
+
export declare function extraContainersOf(project: Project, kind: string): readonly ContainerBase[];
|
|
435
|
+
/**
|
|
436
|
+
* Every slug in use under one of the two container directories: the containers the project holds
|
|
437
|
+
* there, and the placeholders (spec §6). A save keeps exactly these directories, whatever its
|
|
438
|
+
* registry can write. Hand it to `uniqueSlug` when naming a new container, so a save never has to
|
|
439
|
+
* refuse it with `container-slug-conflict`.
|
|
440
|
+
*
|
|
441
|
+
* @internal Exported for the engine's own hosts; not yet a plugin API (ADR-0017).
|
|
442
|
+
*/
|
|
443
|
+
export declare function takenContainerSlugs(project: Project, dir: ContainerDir): ReadonlySet<string>;
|
|
366
444
|
/** Generates entity ids; injectable so tests can produce deterministic projects. */
|
|
367
445
|
export type IdGenerator = () => string;
|
|
368
446
|
/** The default {@link IdGenerator}: a lexicographically sortable ULID. */
|
|
@@ -398,4 +476,4 @@ export interface CreateRequestInput extends CreateOptions {
|
|
|
398
476
|
readonly properties?: Partial<RequestProperties>;
|
|
399
477
|
}
|
|
400
478
|
/** Creates a request with the default request properties applied. */
|
|
401
|
-
export declare function createRequest(name: string, input: CreateRequestInput):
|
|
479
|
+
export declare function createRequest(name: string, input: CreateRequestInput): SoapRequestDef;
|
package/dist/project/model.js
CHANGED
|
@@ -17,11 +17,16 @@ import { DEFAULT_WSA_CONFIG } from '../wsa/model.js';
|
|
|
17
17
|
/**
|
|
18
18
|
* The on-disk format version written to (and required by) `wirebench.yaml`.
|
|
19
19
|
*
|
|
20
|
-
* 4 added `assertions` on a request and the `…Env` name beside each secret reference.
|
|
21
|
-
*
|
|
22
|
-
*
|
|
20
|
+
* 4 added `assertions` on a request and the `…Env` name beside each secret reference. 5 let a SOAP
|
|
21
|
+
* interface, endpoint or request carry `bearer`, `api-key` and `oauth2` auth (previously
|
|
22
|
+
* REST-only) — new keys and new enum values on an existing field. 6 added `scripts` on a SOAP, REST or
|
|
23
|
+
* gRPC request (#63), the project's webhook collection under `webhooks/`, `hook` on a request, `signing` on the
|
|
24
|
+
* collection, its folders and its items, the `callback` assertion kind (callback-assertion spec §2.1), and `assertions` on a WebSocket request (#192).
|
|
25
|
+
* 6 is not yet released, so these share it.
|
|
26
|
+
* All are additive; this format does not round-trip unknown keys, so an older build would delete them on
|
|
27
|
+
* its next save (see `schema.ts` and ADR-0003) — and would meanwhile send a request without its scripts.
|
|
23
28
|
*/
|
|
24
|
-
export const FORMAT_VERSION =
|
|
29
|
+
export const FORMAT_VERSION = 6;
|
|
25
30
|
/** The OAuth2 fields a freshly configured entry starts with. */
|
|
26
31
|
export const DEFAULT_OAUTH2_AUTH = Object.freeze({
|
|
27
32
|
type: 'oauth2',
|
|
@@ -62,6 +67,46 @@ export const DEFAULT_PROJECT_SETTINGS = Object.freeze({
|
|
|
62
67
|
defaultTimeoutMs: 60_000,
|
|
63
68
|
prettyPrintResponses: true,
|
|
64
69
|
});
|
|
70
|
+
/**
|
|
71
|
+
* The project's placeholders; empty when it has none.
|
|
72
|
+
*
|
|
73
|
+
* @internal Exported for the engine's own hosts; not yet a plugin API (ADR-0017).
|
|
74
|
+
*/
|
|
75
|
+
export function unsupportedOf(project) {
|
|
76
|
+
return project.unsupported ?? [];
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* The project's containers of `kind` kept in {@link Project.extraContainers}.
|
|
80
|
+
*
|
|
81
|
+
* @internal Exported for the engine's own hosts; not yet a plugin API (ADR-0017).
|
|
82
|
+
*/
|
|
83
|
+
export function extraContainersOf(project, kind) {
|
|
84
|
+
return project.extraContainers?.[kind] ?? [];
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Every slug in use under one of the two container directories: the containers the project holds
|
|
88
|
+
* there, and the placeholders (spec §6). A save keeps exactly these directories, whatever its
|
|
89
|
+
* registry can write. Hand it to `uniqueSlug` when naming a new container, so a save never has to
|
|
90
|
+
* refuse it with `container-slug-conflict`.
|
|
91
|
+
*
|
|
92
|
+
* @internal Exported for the engine's own hosts; not yet a plugin API (ADR-0017).
|
|
93
|
+
*/
|
|
94
|
+
export function takenContainerSlugs(project, dir) {
|
|
95
|
+
const containers = dir === 'interfaces'
|
|
96
|
+
? project.interfaces
|
|
97
|
+
: [
|
|
98
|
+
...project.apis,
|
|
99
|
+
...project.grpcApis,
|
|
100
|
+
...project.wsApis,
|
|
101
|
+
...Object.values(project.extraContainers ?? {}).flat(),
|
|
102
|
+
];
|
|
103
|
+
return new Set([
|
|
104
|
+
...containers.map((container) => container.slug),
|
|
105
|
+
...unsupportedOf(project)
|
|
106
|
+
.filter((placeholder) => placeholder.dir === dir)
|
|
107
|
+
.map((placeholder) => placeholder.slug),
|
|
108
|
+
]);
|
|
109
|
+
}
|
|
65
110
|
/** The default {@link IdGenerator}: a lexicographically sortable ULID. */
|
|
66
111
|
export const generateId = () => ulid();
|
|
67
112
|
function idOf(options) {
|
|
@@ -80,6 +125,7 @@ export function createProject(name, options) {
|
|
|
80
125
|
apis: [],
|
|
81
126
|
grpcApis: [],
|
|
82
127
|
wsApis: [],
|
|
128
|
+
sequences: [],
|
|
83
129
|
environments: [],
|
|
84
130
|
wss: { outgoing: [], incoming: [], keystores: [] },
|
|
85
131
|
};
|
package/dist/project/paths.d.ts
CHANGED
|
@@ -69,6 +69,15 @@ export declare const ATTACHMENTS_DIR = "attachments";
|
|
|
69
69
|
export declare const REQUEST_SUFFIX = ".request.yaml";
|
|
70
70
|
/** Directory holding every REST API, beside `interfaces/`. */
|
|
71
71
|
export declare const APIS_DIR = "apis";
|
|
72
|
+
/** Directory holding the project's webhook collection (`webhooks.yaml` and a `requests/` tree). */
|
|
73
|
+
export declare const WEBHOOKS_DIR = "webhooks";
|
|
74
|
+
/** File describing the webhook collection: its target and default credentials. */
|
|
75
|
+
export declare const WEBHOOKS_FILE = "webhooks.yaml";
|
|
76
|
+
/**
|
|
77
|
+
* The feature that also switches the webhook collection: it is REST requests in a tree of its own,
|
|
78
|
+
* so it is loaded and saved only while `rest` is on (spec §3.2).
|
|
79
|
+
*/
|
|
80
|
+
export declare const WEBHOOKS_FEATURE = "rest";
|
|
72
81
|
/** Per-API directory holding the request tree: request files and folder directories. */
|
|
73
82
|
export declare const REQUESTS_DIR = "requests";
|
|
74
83
|
/** File naming a folder inside an API's request tree. */
|
|
@@ -94,7 +103,7 @@ export declare function interfaceFile(root: string, interfaceSlug: string): stri
|
|
|
94
103
|
export declare function definitionDir(root: string, interfaceSlug: string): string;
|
|
95
104
|
/**
|
|
96
105
|
* Alias of {@link definitionDir} under the name the desktop facade (Task 21)
|
|
97
|
-
* calls it by: the directory passed as `cache.dir` to `
|
|
106
|
+
* calls it by: the directory passed as `cache.dir` to `importWsdl`.
|
|
98
107
|
*/
|
|
99
108
|
export declare const definitionCacheDir: typeof definitionDir;
|
|
100
109
|
/** Absolute path of an operation's directory. */
|
package/dist/project/paths.js
CHANGED
|
@@ -163,6 +163,15 @@ export const ATTACHMENTS_DIR = 'attachments';
|
|
|
163
163
|
export const REQUEST_SUFFIX = '.request.yaml';
|
|
164
164
|
/** Directory holding every REST API, beside `interfaces/`. */
|
|
165
165
|
export const APIS_DIR = 'apis';
|
|
166
|
+
/** Directory holding the project's webhook collection (`webhooks.yaml` and a `requests/` tree). */
|
|
167
|
+
export const WEBHOOKS_DIR = 'webhooks';
|
|
168
|
+
/** File describing the webhook collection: its target and default credentials. */
|
|
169
|
+
export const WEBHOOKS_FILE = 'webhooks.yaml';
|
|
170
|
+
/**
|
|
171
|
+
* The feature that also switches the webhook collection: it is REST requests in a tree of its own,
|
|
172
|
+
* so it is loaded and saved only while `rest` is on (spec §3.2).
|
|
173
|
+
*/
|
|
174
|
+
export const WEBHOOKS_FEATURE = 'rest';
|
|
166
175
|
/** Per-API directory holding the request tree: request files and folder directories. */
|
|
167
176
|
export const REQUESTS_DIR = 'requests';
|
|
168
177
|
/** File naming a folder inside an API's request tree. */
|
|
@@ -196,7 +205,7 @@ export function definitionDir(root, interfaceSlug) {
|
|
|
196
205
|
}
|
|
197
206
|
/**
|
|
198
207
|
* Alias of {@link definitionDir} under the name the desktop facade (Task 21)
|
|
199
|
-
* calls it by: the directory passed as `cache.dir` to `
|
|
208
|
+
* calls it by: the directory passed as `cache.dir` to `importWsdl`.
|
|
200
209
|
*/
|
|
201
210
|
export const definitionCacheDir = definitionDir;
|
|
202
211
|
/** Absolute path of an operation's directory. */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Everything here is deliberately plain data — the engine never reads a file for it. The
|
|
6
6
|
* desktop's `PreferencesService` loads/merges/persists a document; the engine consumes the
|
|
7
|
-
* merged object (see `send-
|
|
7
|
+
* merged object (see `soap/send-input.ts`).
|
|
8
8
|
*
|
|
9
9
|
* Some sections are persisted and shown before they are wired to behaviour: `proxy` and `ssl`
|
|
10
10
|
* become effective with the connection settings task.
|
|
@@ -173,6 +173,11 @@ export interface UpdatePreferences {
|
|
|
173
173
|
/** Check GitHub Releases for a newer version once, shortly after the app starts. */
|
|
174
174
|
readonly checkOnLaunch: boolean;
|
|
175
175
|
}
|
|
176
|
+
/** Account-related preferences. The account list itself lives elsewhere; this is display-only. */
|
|
177
|
+
export interface AccountPreferences {
|
|
178
|
+
/** Whether the status bar shows the account item once a server is known. */
|
|
179
|
+
readonly showInStatusBar: boolean;
|
|
180
|
+
}
|
|
176
181
|
/** The whole preferences document. */
|
|
177
182
|
export interface Preferences {
|
|
178
183
|
readonly http: HttpPreferences;
|
|
@@ -185,6 +190,7 @@ export interface Preferences {
|
|
|
185
190
|
readonly editor: EditorPreferences;
|
|
186
191
|
readonly ui: UiPreferences;
|
|
187
192
|
readonly updates: UpdatePreferences;
|
|
193
|
+
readonly accounts: AccountPreferences;
|
|
188
194
|
/**
|
|
189
195
|
* Keybinding overrides, keyed by command id: the chord that runs it, or `''` when the user
|
|
190
196
|
* unbound it. Empty by default — a command with no entry uses its registered chord. Written
|
|
@@ -218,8 +224,8 @@ export declare const preferencesSchema: z.ZodObject<{
|
|
|
218
224
|
proxy: z.ZodOptional<z.ZodObject<{
|
|
219
225
|
mode: z.ZodOptional<z.ZodEnum<{
|
|
220
226
|
none: "none";
|
|
221
|
-
manual: "manual";
|
|
222
227
|
system: "system";
|
|
228
|
+
manual: "manual";
|
|
223
229
|
}>>;
|
|
224
230
|
host: z.ZodOptional<z.ZodString>;
|
|
225
231
|
port: z.ZodOptional<z.ZodNumber>;
|
|
@@ -294,6 +300,9 @@ export declare const preferencesSchema: z.ZodObject<{
|
|
|
294
300
|
updates: z.ZodOptional<z.ZodObject<{
|
|
295
301
|
checkOnLaunch: z.ZodOptional<z.ZodBoolean>;
|
|
296
302
|
}, z.core.$strip>>;
|
|
303
|
+
accounts: z.ZodOptional<z.ZodObject<{
|
|
304
|
+
showInStatusBar: z.ZodOptional<z.ZodBoolean>;
|
|
305
|
+
}, z.core.$strip>>;
|
|
297
306
|
shortcuts: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
|
|
298
307
|
}, z.core.$strip>;
|
|
299
308
|
/** A partial preferences document, as accepted by {@link mergePreferences}. */
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
*
|
|
5
5
|
* Everything here is deliberately plain data — the engine never reads a file for it. The
|
|
6
6
|
* desktop's `PreferencesService` loads/merges/persists a document; the engine consumes the
|
|
7
|
-
* merged object (see `send-
|
|
7
|
+
* merged object (see `soap/send-input.ts`).
|
|
8
8
|
*
|
|
9
9
|
* Some sections are persisted and shown before they are wired to behaviour: `proxy` and `ssl`
|
|
10
10
|
* become effective with the connection settings task.
|
|
@@ -68,6 +68,7 @@ export const DEFAULT_PREFERENCES = Object.freeze({
|
|
|
68
68
|
logSize: 500,
|
|
69
69
|
}),
|
|
70
70
|
updates: Object.freeze({ checkOnLaunch: false }),
|
|
71
|
+
accounts: Object.freeze({ showInStatusBar: true }),
|
|
71
72
|
shortcuts: Object.freeze({}),
|
|
72
73
|
});
|
|
73
74
|
/**
|
|
@@ -158,6 +159,7 @@ export const preferencesSchema = z.object({
|
|
|
158
159
|
})
|
|
159
160
|
.optional(),
|
|
160
161
|
updates: z.object({ checkOnLaunch: z.boolean().optional() }).optional(),
|
|
162
|
+
accounts: z.object({ showInStatusBar: z.boolean().optional() }).optional(),
|
|
161
163
|
shortcuts: z.record(z.string(), z.string()).optional(),
|
|
162
164
|
});
|
|
163
165
|
/** Drops every `undefined` value so a patch never overwrites a default with nothing. */
|
|
@@ -210,6 +212,7 @@ export function mergePreferences(patch, base = DEFAULT_PREFERENCES) {
|
|
|
210
212
|
editor: parseSection(shape.editor, root['editor']),
|
|
211
213
|
ui: parseSection(shape.ui, root['ui']),
|
|
212
214
|
updates: parseSection(shape.updates, root['updates']),
|
|
215
|
+
accounts: parseSection(shape.accounts, root['accounts']),
|
|
213
216
|
shortcuts: parseSection(shape.shortcuts, root['shortcuts']),
|
|
214
217
|
};
|
|
215
218
|
return {
|
|
@@ -227,6 +230,7 @@ export function mergePreferences(patch, base = DEFAULT_PREFERENCES) {
|
|
|
227
230
|
defaultLayout: mergeSection(base.ui.defaultLayout, value.ui?.defaultLayout),
|
|
228
231
|
},
|
|
229
232
|
updates: mergeSection(base.updates, value.updates),
|
|
233
|
+
accounts: mergeSection(base.accounts, value.accounts),
|
|
230
234
|
shortcuts: { ...base.shortcuts, ...(value.shortcuts ?? {}) },
|
|
231
235
|
};
|
|
232
236
|
}
|
|
@@ -7,11 +7,14 @@
|
|
|
7
7
|
* unresolved expressions are left verbatim in the output and reported via
|
|
8
8
|
* `unresolved`.
|
|
9
9
|
*
|
|
10
|
+
* `${#Sequence#name}` is the exception: its values come from responses, so
|
|
11
|
+
* they are never expanded again, never reached by the shorthand, and never
|
|
12
|
+
* allowed to form another reference's name (ADR-0015).
|
|
13
|
+
*
|
|
10
14
|
* Pure module: no I/O beyond reading the `scopes.system` map the caller
|
|
11
15
|
* passes in (default `process.env`).
|
|
12
16
|
*/
|
|
13
17
|
import type { PropertyMap } from './model.js';
|
|
14
|
-
import type { SoapSendInput } from '../types.js';
|
|
15
18
|
/** The property lookup scopes available to {@link expand}. */
|
|
16
19
|
export interface PropertyScopes {
|
|
17
20
|
readonly project: PropertyMap;
|
|
@@ -27,6 +30,19 @@ export interface PropertyScopes {
|
|
|
27
30
|
readonly global: PropertyMap;
|
|
28
31
|
/** Defaults to `process.env` when omitted. */
|
|
29
32
|
readonly system?: Readonly<Record<string, string | undefined>>;
|
|
33
|
+
/**
|
|
34
|
+
* Secret values keyed by name, for the `${secret:name}` token. Resolved by the caller (main
|
|
35
|
+
* from the keychain-backed store, the CLI from `WIREBENCH_SECRET_<NAME>`) and injected here so
|
|
36
|
+
* expansion itself stays synchronous and pure.
|
|
37
|
+
*/
|
|
38
|
+
readonly secrets?: Readonly<Record<string, string>>;
|
|
39
|
+
/**
|
|
40
|
+
* Values a running sequence lifted out of earlier responses, for `${#Sequence#name}`. Text a
|
|
41
|
+
* server chose, so it is held to ADR-0015: substituted literally (never expanded again), reachable
|
|
42
|
+
* only by the explicit form (never by the `${name}` shorthand), and never allowed to name another
|
|
43
|
+
* reference.
|
|
44
|
+
*/
|
|
45
|
+
readonly sequence?: PropertyMap;
|
|
30
46
|
}
|
|
31
47
|
/**
|
|
32
48
|
* Filters `map` down to the entries not listed in `disabled`, preserving the map's key order.
|
|
@@ -44,7 +60,11 @@ export interface UnresolvedRef {
|
|
|
44
60
|
readonly expr: string;
|
|
45
61
|
readonly scope?: string;
|
|
46
62
|
readonly name?: string;
|
|
47
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Why the reference stayed unexpanded. `name-from-response`: the reference's own name was built
|
|
65
|
+
* from a `${#Sequence#…}` value, so a server would be choosing which property (or secret) is read.
|
|
66
|
+
*/
|
|
67
|
+
readonly code: 'missing' | 'unknown-scope' | 'cycle' | 'too-deep' | 'malformed' | 'name-from-response';
|
|
48
68
|
/**
|
|
49
69
|
* Offsets into the original text of the *outermost* `${...}` reference the user can see. When
|
|
50
70
|
* this ref was discovered while recursively expanding a property's value (not the original
|
|
@@ -68,7 +88,7 @@ export interface ExpandResult {
|
|
|
68
88
|
name: string;
|
|
69
89
|
}[];
|
|
70
90
|
}
|
|
71
|
-
/** Options accepted by {@link expand} and
|
|
91
|
+
/** Options accepted by {@link expand} and by `expandSendInput` in `soap/expand.ts`. */
|
|
72
92
|
export interface ExpandOptions {
|
|
73
93
|
readonly maxDepth?: number;
|
|
74
94
|
/**
|
|
@@ -79,19 +99,13 @@ export interface ExpandOptions {
|
|
|
79
99
|
}
|
|
80
100
|
/** Expands every `${...}` property reference in `text` against `scopes`. */
|
|
81
101
|
export declare function expand(text: string, scopes: PropertyScopes, options?: ExpandOptions): ExpandResult;
|
|
82
|
-
/** True when `text` contains at least one (non-escaped) `${` sequence. */
|
|
83
|
-
export declare function hasExpansions(text: string): boolean;
|
|
84
102
|
/**
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* Attachments are expanded as well, in the two places a property can reasonably appear: the
|
|
91
|
-
* display/file name that ends up in `Content-Disposition`, and the path of a file-backed
|
|
92
|
-
* attachment. Content-IDs are left alone — they are generated, not authored.
|
|
103
|
+
* The `secret:name` values reached from `text`: every `${secret:name}` token found directly, plus
|
|
104
|
+
* any reached by following `${name}` and `${#Scope#name}` property references whose stored value
|
|
105
|
+
* itself expands (or is) a secret token. Reuses the same tokenizer/lookup helpers as {@link expand},
|
|
106
|
+
* and is cycle-safe the same way (a visited `scope#name` is never revisited on a given path).
|
|
107
|
+
* `scopes` is optional — with none given, only literal `${secret:name}` tokens in `text` are found.
|
|
93
108
|
*/
|
|
94
|
-
export declare function
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
};
|
|
109
|
+
export declare function secretNamesIn(text: string, scopes?: PropertyScopes): string[];
|
|
110
|
+
/** True when `text` contains at least one (non-escaped) `${` sequence. */
|
|
111
|
+
export declare function hasExpansions(text: string): boolean;
|