@wirebench/engine 2.2.0 → 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,337 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pieces every project file schema is built from: the non-empty string, the authentication
|
|
3
|
+
* schemes, a table row, a request's `scripts` key, the webhook `hook` and `signing` keys, a request
|
|
4
|
+
* tree's `folder.yaml`, and the two guards every reader calls ({@link assertSupportedKind},
|
|
5
|
+
* {@link parseFile}).
|
|
6
|
+
*
|
|
7
|
+
* Its own file, apart from `schema.ts`, because each protocol's file schemas (`soap/files.ts`,
|
|
8
|
+
* `rest/files.ts`, `grpc/files.ts`, `ws/files.ts`) import these pieces while `schema.ts` re-exports
|
|
9
|
+
* those schemas under their old names: were the pieces in `schema.ts`, the two would import each
|
|
10
|
+
* other, and whichever loaded second would read a binding that is not initialised yet.
|
|
11
|
+
*
|
|
12
|
+
* The strictness policy is `schema.ts`'s: every object is `z.looseObject`, and any additive field
|
|
13
|
+
* bumps `formatVersion` (ADR-0003). This file imports no protocol folder but `http/webhook-signature.ts`:
|
|
14
|
+
* the webhook collection is core's until phase 3 of #184.
|
|
15
|
+
*/
|
|
16
|
+
import { z } from 'zod';
|
|
17
|
+
/** A string with at least one character: an id, a slug, a file name. */
|
|
18
|
+
export declare const nonEmpty: z.ZodString;
|
|
19
|
+
/**
|
|
20
|
+
* A committed, human-chosen name for a secret reference — not the secret itself — used to build
|
|
21
|
+
* the environment variable a CI run reads it from (see `secrets/env-names.ts`).
|
|
22
|
+
*/
|
|
23
|
+
export declare const envName: z.ZodOptional<z.ZodString>;
|
|
24
|
+
/**
|
|
25
|
+
* Credentials as persisted: usernames and a `secretRef`, never a password
|
|
26
|
+
* value. Unlike every other schema here, a plaintext `password` key is
|
|
27
|
+
* explicitly rejected rather than merely ignored — secrets must never be
|
|
28
|
+
* written to a project file, in any format.
|
|
29
|
+
*/
|
|
30
|
+
export declare const endpointAuthSchema: z.ZodObject<{
|
|
31
|
+
type: z.ZodEnum<{
|
|
32
|
+
none: "none";
|
|
33
|
+
basic: "basic";
|
|
34
|
+
ntlm: "ntlm";
|
|
35
|
+
}>;
|
|
36
|
+
username: z.ZodOptional<z.ZodString>;
|
|
37
|
+
passwordRef: z.ZodOptional<z.ZodString>;
|
|
38
|
+
passwordEnv: z.ZodOptional<z.ZodString>;
|
|
39
|
+
domain: z.ZodOptional<z.ZodString>;
|
|
40
|
+
workstation: z.ZodOptional<z.ZodString>;
|
|
41
|
+
preemptive: z.ZodOptional<z.ZodBoolean>;
|
|
42
|
+
}, z.core.$loose>;
|
|
43
|
+
/**
|
|
44
|
+
* Authentication as persisted anywhere a project configures it. `endpointAuthSchema` is one arm,
|
|
45
|
+
* so a file written before the REST client — which only ever held `none`/`basic`/`ntlm` — parses
|
|
46
|
+
* unchanged. `inherit` is accepted here and rejected by the SOAP schemas that reuse
|
|
47
|
+
* `endpointAuthSchema` instead, since an interface has nothing to inherit from.
|
|
48
|
+
*/
|
|
49
|
+
export declare const authConfigSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
50
|
+
type: z.ZodEnum<{
|
|
51
|
+
none: "none";
|
|
52
|
+
basic: "basic";
|
|
53
|
+
ntlm: "ntlm";
|
|
54
|
+
}>;
|
|
55
|
+
username: z.ZodOptional<z.ZodString>;
|
|
56
|
+
passwordRef: z.ZodOptional<z.ZodString>;
|
|
57
|
+
passwordEnv: z.ZodOptional<z.ZodString>;
|
|
58
|
+
domain: z.ZodOptional<z.ZodString>;
|
|
59
|
+
workstation: z.ZodOptional<z.ZodString>;
|
|
60
|
+
preemptive: z.ZodOptional<z.ZodBoolean>;
|
|
61
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
62
|
+
type: z.ZodLiteral<"inherit">;
|
|
63
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
64
|
+
type: z.ZodLiteral<"bearer">;
|
|
65
|
+
tokenRef: z.ZodOptional<z.ZodString>;
|
|
66
|
+
tokenEnv: z.ZodOptional<z.ZodString>;
|
|
67
|
+
scheme: z.ZodOptional<z.ZodString>;
|
|
68
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
69
|
+
type: z.ZodLiteral<"api-key">;
|
|
70
|
+
name: z.ZodString;
|
|
71
|
+
valueRef: z.ZodOptional<z.ZodString>;
|
|
72
|
+
valueEnv: z.ZodOptional<z.ZodString>;
|
|
73
|
+
in: z.ZodEnum<{
|
|
74
|
+
header: "header";
|
|
75
|
+
query: "query";
|
|
76
|
+
}>;
|
|
77
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
78
|
+
type: z.ZodLiteral<"oauth2">;
|
|
79
|
+
grant: z.ZodEnum<{
|
|
80
|
+
"client-credentials": "client-credentials";
|
|
81
|
+
"authorization-code": "authorization-code";
|
|
82
|
+
}>;
|
|
83
|
+
tokenUrl: z.ZodString;
|
|
84
|
+
authorizationUrl: z.ZodOptional<z.ZodString>;
|
|
85
|
+
clientId: z.ZodString;
|
|
86
|
+
clientSecretRef: z.ZodOptional<z.ZodString>;
|
|
87
|
+
clientSecretEnv: z.ZodOptional<z.ZodString>;
|
|
88
|
+
scopes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
89
|
+
audience: z.ZodOptional<z.ZodString>;
|
|
90
|
+
clientAuth: z.ZodDefault<z.ZodEnum<{
|
|
91
|
+
basic: "basic";
|
|
92
|
+
body: "body";
|
|
93
|
+
}>>;
|
|
94
|
+
pkce: z.ZodDefault<z.ZodBoolean>;
|
|
95
|
+
refreshTokenRef: z.ZodOptional<z.ZodString>;
|
|
96
|
+
}, z.core.$loose>]>;
|
|
97
|
+
/**
|
|
98
|
+
* What a SOAP interface, endpoint or request may hold: every {@link authConfigSchema} arm except
|
|
99
|
+
* `inherit` — a SOAP owner has no interface-like ancestor above it to inherit from. The REST
|
|
100
|
+
* schemas are reused, not copied, so the plaintext-secret rejection applies to SOAP files too.
|
|
101
|
+
* `endpointAuthSchema` is deliberately not widened in place: it is itself an arm of this union,
|
|
102
|
+
* and widening its enum would let its looser object shape swallow token configs before the
|
|
103
|
+
* stricter arms see them.
|
|
104
|
+
*/
|
|
105
|
+
export declare const soapOwnerAuthSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
106
|
+
type: z.ZodEnum<{
|
|
107
|
+
none: "none";
|
|
108
|
+
basic: "basic";
|
|
109
|
+
ntlm: "ntlm";
|
|
110
|
+
}>;
|
|
111
|
+
username: z.ZodOptional<z.ZodString>;
|
|
112
|
+
passwordRef: z.ZodOptional<z.ZodString>;
|
|
113
|
+
passwordEnv: z.ZodOptional<z.ZodString>;
|
|
114
|
+
domain: z.ZodOptional<z.ZodString>;
|
|
115
|
+
workstation: z.ZodOptional<z.ZodString>;
|
|
116
|
+
preemptive: z.ZodOptional<z.ZodBoolean>;
|
|
117
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
118
|
+
type: z.ZodLiteral<"bearer">;
|
|
119
|
+
tokenRef: z.ZodOptional<z.ZodString>;
|
|
120
|
+
tokenEnv: z.ZodOptional<z.ZodString>;
|
|
121
|
+
scheme: z.ZodOptional<z.ZodString>;
|
|
122
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
123
|
+
type: z.ZodLiteral<"api-key">;
|
|
124
|
+
name: z.ZodString;
|
|
125
|
+
valueRef: z.ZodOptional<z.ZodString>;
|
|
126
|
+
valueEnv: z.ZodOptional<z.ZodString>;
|
|
127
|
+
in: z.ZodEnum<{
|
|
128
|
+
header: "header";
|
|
129
|
+
query: "query";
|
|
130
|
+
}>;
|
|
131
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
132
|
+
type: z.ZodLiteral<"oauth2">;
|
|
133
|
+
grant: z.ZodEnum<{
|
|
134
|
+
"client-credentials": "client-credentials";
|
|
135
|
+
"authorization-code": "authorization-code";
|
|
136
|
+
}>;
|
|
137
|
+
tokenUrl: z.ZodString;
|
|
138
|
+
authorizationUrl: z.ZodOptional<z.ZodString>;
|
|
139
|
+
clientId: z.ZodString;
|
|
140
|
+
clientSecretRef: z.ZodOptional<z.ZodString>;
|
|
141
|
+
clientSecretEnv: z.ZodOptional<z.ZodString>;
|
|
142
|
+
scopes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
143
|
+
audience: z.ZodOptional<z.ZodString>;
|
|
144
|
+
clientAuth: z.ZodDefault<z.ZodEnum<{
|
|
145
|
+
basic: "basic";
|
|
146
|
+
body: "body";
|
|
147
|
+
}>>;
|
|
148
|
+
pkce: z.ZodDefault<z.ZodBoolean>;
|
|
149
|
+
refreshTokenRef: z.ZodOptional<z.ZodString>;
|
|
150
|
+
}, z.core.$loose>]>;
|
|
151
|
+
/**
|
|
152
|
+
* A definition's fetch credentials: Basic, Bearer or API key, each as references only. The Basic arm
|
|
153
|
+
* takes the full plaintext-key rejection too, not only `endpointAuthSchema`'s `password`, so a `token`
|
|
154
|
+
* or `apiKey` written beside `type: basic` is refused rather than ignored.
|
|
155
|
+
*/
|
|
156
|
+
export declare const definitionAuthSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
157
|
+
type: z.ZodEnum<{
|
|
158
|
+
none: "none";
|
|
159
|
+
basic: "basic";
|
|
160
|
+
ntlm: "ntlm";
|
|
161
|
+
}>;
|
|
162
|
+
username: z.ZodOptional<z.ZodString>;
|
|
163
|
+
passwordRef: z.ZodOptional<z.ZodString>;
|
|
164
|
+
passwordEnv: z.ZodOptional<z.ZodString>;
|
|
165
|
+
domain: z.ZodOptional<z.ZodString>;
|
|
166
|
+
workstation: z.ZodOptional<z.ZodString>;
|
|
167
|
+
preemptive: z.ZodOptional<z.ZodBoolean>;
|
|
168
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
169
|
+
type: z.ZodLiteral<"bearer">;
|
|
170
|
+
tokenRef: z.ZodOptional<z.ZodString>;
|
|
171
|
+
tokenEnv: z.ZodOptional<z.ZodString>;
|
|
172
|
+
scheme: z.ZodOptional<z.ZodString>;
|
|
173
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
174
|
+
type: z.ZodLiteral<"api-key">;
|
|
175
|
+
name: z.ZodString;
|
|
176
|
+
valueRef: z.ZodOptional<z.ZodString>;
|
|
177
|
+
valueEnv: z.ZodOptional<z.ZodString>;
|
|
178
|
+
in: z.ZodEnum<{
|
|
179
|
+
header: "header";
|
|
180
|
+
query: "query";
|
|
181
|
+
}>;
|
|
182
|
+
}, z.core.$loose>]>;
|
|
183
|
+
/** Where a file's bytes live: the project's content-addressed cache, or a path on disk. */
|
|
184
|
+
export declare const attachmentSourceSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
185
|
+
kind: z.ZodLiteral<"cache">;
|
|
186
|
+
sha256: z.ZodString;
|
|
187
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
188
|
+
kind: z.ZodLiteral<"path">;
|
|
189
|
+
path: z.ZodString;
|
|
190
|
+
}, z.core.$loose>]>;
|
|
191
|
+
/**
|
|
192
|
+
* A request's `scripts` key (format 6, #63). `pre` and `post` record the script file names for a
|
|
193
|
+
* reader of the YAML; the loader never reads them, and always opens the name derived from the
|
|
194
|
+
* request's slug (`scriptFileName`), so a hand-edited name cannot reach outside the directory.
|
|
195
|
+
*/
|
|
196
|
+
export declare const scriptsSchema: z.ZodObject<{
|
|
197
|
+
pre: z.ZodOptional<z.ZodString>;
|
|
198
|
+
post: z.ZodOptional<z.ZodString>;
|
|
199
|
+
api: z.ZodDefault<z.ZodEnum<{
|
|
200
|
+
wirebench: "wirebench";
|
|
201
|
+
postman: "postman";
|
|
202
|
+
}>>;
|
|
203
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
204
|
+
secrets: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
205
|
+
timeoutMs: z.ZodOptional<z.ZodNumber>;
|
|
206
|
+
}, z.core.$loose>;
|
|
207
|
+
/**
|
|
208
|
+
* One table row as persisted. `enabled` is written only when `false`, so a missing key means
|
|
209
|
+
* enabled; names may repeat and their order is the wire order.
|
|
210
|
+
*/
|
|
211
|
+
export declare const keyValueEntrySchema: z.ZodObject<{
|
|
212
|
+
name: z.ZodString;
|
|
213
|
+
value: z.ZodString;
|
|
214
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
215
|
+
description: z.ZodOptional<z.ZodString>;
|
|
216
|
+
}, z.core.$loose>;
|
|
217
|
+
/** A request's link to the OpenAPI `webhooks`/`callbacks` entry it was imported from. */
|
|
218
|
+
export declare const hookLinkSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
219
|
+
kind: z.ZodLiteral<"webhook">;
|
|
220
|
+
name: z.ZodString;
|
|
221
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
222
|
+
kind: z.ZodLiteral<"callback">;
|
|
223
|
+
operation: z.ZodString;
|
|
224
|
+
name: z.ZodString;
|
|
225
|
+
expression: z.ZodString;
|
|
226
|
+
}, z.core.$loose>], "kind">;
|
|
227
|
+
/**
|
|
228
|
+
* A webhook collection's, folder's or item's `signing` key (webhook-signatures §5.1). References
|
|
229
|
+
* only: a plaintext `secret` is refused outright, as auth refuses its value keys.
|
|
230
|
+
*/
|
|
231
|
+
export declare const webhookSigningSchema: z.ZodUnion<readonly [z.ZodObject<{
|
|
232
|
+
mode: z.ZodLiteral<"none">;
|
|
233
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
234
|
+
mode: z.ZodLiteral<"sign">;
|
|
235
|
+
scheme: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
236
|
+
kind: z.ZodLiteral<"hmac">;
|
|
237
|
+
algorithm: z.ZodEnum<{
|
|
238
|
+
sha256: "sha256";
|
|
239
|
+
sha1: "sha1";
|
|
240
|
+
sha512: "sha512";
|
|
241
|
+
}>;
|
|
242
|
+
encoding: z.ZodEnum<{
|
|
243
|
+
base64: "base64";
|
|
244
|
+
hex: "hex";
|
|
245
|
+
}>;
|
|
246
|
+
header: z.ZodString;
|
|
247
|
+
prefix: z.ZodOptional<z.ZodString>;
|
|
248
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
249
|
+
kind: z.ZodLiteral<"timestamped">;
|
|
250
|
+
header: z.ZodString;
|
|
251
|
+
toleranceSec: z.ZodDefault<z.ZodNumber>;
|
|
252
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
253
|
+
kind: z.ZodLiteral<"standard">;
|
|
254
|
+
toleranceSec: z.ZodDefault<z.ZodNumber>;
|
|
255
|
+
}, z.core.$strip>], "kind">;
|
|
256
|
+
secretRef: z.ZodOptional<z.ZodString>;
|
|
257
|
+
secretEnv: z.ZodOptional<z.ZodString>;
|
|
258
|
+
}, z.core.$loose>]>;
|
|
259
|
+
export type WebhookSigningFile = z.output<typeof webhookSigningSchema>;
|
|
260
|
+
/** `apis/<slug>/requests/[<folder>/…]folder.yaml`. */
|
|
261
|
+
export declare const restFolderFileSchema: z.ZodObject<{
|
|
262
|
+
id: z.ZodString;
|
|
263
|
+
name: z.ZodString;
|
|
264
|
+
order: z.ZodNumber;
|
|
265
|
+
description: z.ZodOptional<z.ZodString>;
|
|
266
|
+
auth: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
|
|
267
|
+
type: z.ZodEnum<{
|
|
268
|
+
none: "none";
|
|
269
|
+
basic: "basic";
|
|
270
|
+
ntlm: "ntlm";
|
|
271
|
+
}>;
|
|
272
|
+
username: z.ZodOptional<z.ZodString>;
|
|
273
|
+
passwordRef: z.ZodOptional<z.ZodString>;
|
|
274
|
+
passwordEnv: z.ZodOptional<z.ZodString>;
|
|
275
|
+
domain: z.ZodOptional<z.ZodString>;
|
|
276
|
+
workstation: z.ZodOptional<z.ZodString>;
|
|
277
|
+
preemptive: z.ZodOptional<z.ZodBoolean>;
|
|
278
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
279
|
+
type: z.ZodLiteral<"inherit">;
|
|
280
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
281
|
+
type: z.ZodLiteral<"bearer">;
|
|
282
|
+
tokenRef: z.ZodOptional<z.ZodString>;
|
|
283
|
+
tokenEnv: z.ZodOptional<z.ZodString>;
|
|
284
|
+
scheme: z.ZodOptional<z.ZodString>;
|
|
285
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
286
|
+
type: z.ZodLiteral<"api-key">;
|
|
287
|
+
name: z.ZodString;
|
|
288
|
+
valueRef: z.ZodOptional<z.ZodString>;
|
|
289
|
+
valueEnv: z.ZodOptional<z.ZodString>;
|
|
290
|
+
in: z.ZodEnum<{
|
|
291
|
+
header: "header";
|
|
292
|
+
query: "query";
|
|
293
|
+
}>;
|
|
294
|
+
}, z.core.$loose>, z.ZodObject<{
|
|
295
|
+
type: z.ZodLiteral<"oauth2">;
|
|
296
|
+
grant: z.ZodEnum<{
|
|
297
|
+
"client-credentials": "client-credentials";
|
|
298
|
+
"authorization-code": "authorization-code";
|
|
299
|
+
}>;
|
|
300
|
+
tokenUrl: z.ZodString;
|
|
301
|
+
authorizationUrl: z.ZodOptional<z.ZodString>;
|
|
302
|
+
clientId: z.ZodString;
|
|
303
|
+
clientSecretRef: z.ZodOptional<z.ZodString>;
|
|
304
|
+
clientSecretEnv: z.ZodOptional<z.ZodString>;
|
|
305
|
+
scopes: z.ZodDefault<z.ZodArray<z.ZodString>>;
|
|
306
|
+
audience: z.ZodOptional<z.ZodString>;
|
|
307
|
+
clientAuth: z.ZodDefault<z.ZodEnum<{
|
|
308
|
+
basic: "basic";
|
|
309
|
+
body: "body";
|
|
310
|
+
}>>;
|
|
311
|
+
pkce: z.ZodDefault<z.ZodBoolean>;
|
|
312
|
+
refreshTokenRef: z.ZodOptional<z.ZodString>;
|
|
313
|
+
}, z.core.$loose>]>>;
|
|
314
|
+
}, z.core.$loose>;
|
|
315
|
+
/**
|
|
316
|
+
* Refuses a document whose `kind` this build does not know how to honour — a protocol a later
|
|
317
|
+
* release adds, or a typo — before schema validation, so the error says what is actually wrong
|
|
318
|
+
* ("this build cannot open a graphql document") instead of "expected 'rest', received 'graphql'",
|
|
319
|
+
* and so a project written by a future build fails loudly rather than losing its requests to a
|
|
320
|
+
* dropped unknown key. `grpc` was the reserved name this guard existed for until the gRPC client
|
|
321
|
+
* arrived; it stays for whatever comes next.
|
|
322
|
+
* Internal since 3.0: a module's request reader calls it; a container of an unknown kind loads
|
|
323
|
+
* as a placeholder instead (`Project.unsupported`), and a host asks `ProtocolRegistry.status`.
|
|
324
|
+
*
|
|
325
|
+
* @throws ProjectError `project-kind-not-supported`
|
|
326
|
+
*/
|
|
327
|
+
export declare function assertSupportedKind(document: unknown, file: string): void;
|
|
328
|
+
/** One table row as persisted (params, query, headers, form fields). */
|
|
329
|
+
export type KeyValueEntryFile = z.infer<typeof keyValueEntrySchema>;
|
|
330
|
+
/** A folder document as persisted. */
|
|
331
|
+
export type RestFolderFile = z.infer<typeof restFolderFileSchema>;
|
|
332
|
+
/**
|
|
333
|
+
* Validates `value` against `schema`, raising
|
|
334
|
+
* `ProjectError('project-file-invalid')` carrying the file path and the
|
|
335
|
+
* individual zod issues when it does not match.
|
|
336
|
+
*/
|
|
337
|
+
export declare function parseFile<T>(schema: z.ZodType<T>, value: unknown, file: string): T;
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pieces every project file schema is built from: the non-empty string, the authentication
|
|
3
|
+
* schemes, a table row, a request's `scripts` key, the webhook `hook` and `signing` keys, a request
|
|
4
|
+
* tree's `folder.yaml`, and the two guards every reader calls ({@link assertSupportedKind},
|
|
5
|
+
* {@link parseFile}).
|
|
6
|
+
*
|
|
7
|
+
* Its own file, apart from `schema.ts`, because each protocol's file schemas (`soap/files.ts`,
|
|
8
|
+
* `rest/files.ts`, `grpc/files.ts`, `ws/files.ts`) import these pieces while `schema.ts` re-exports
|
|
9
|
+
* those schemas under their old names: were the pieces in `schema.ts`, the two would import each
|
|
10
|
+
* other, and whichever loaded second would read a binding that is not initialised yet.
|
|
11
|
+
*
|
|
12
|
+
* The strictness policy is `schema.ts`'s: every object is `z.looseObject`, and any additive field
|
|
13
|
+
* bumps `formatVersion` (ADR-0003). This file imports no protocol folder but `http/webhook-signature.ts`:
|
|
14
|
+
* the webhook collection is core's until phase 3 of #184.
|
|
15
|
+
*/
|
|
16
|
+
import { z } from 'zod';
|
|
17
|
+
import { ProjectError } from '../errors.js';
|
|
18
|
+
import { SECRET_NAME_PATTERN } from '../secrets/secret-token.js';
|
|
19
|
+
import { signatureSchemeSchema } from '../http/webhook-signature.js';
|
|
20
|
+
/** A string with at least one character: an id, a slug, a file name. */
|
|
21
|
+
export const nonEmpty = z.string().min(1);
|
|
22
|
+
/**
|
|
23
|
+
* A committed, human-chosen name for a secret reference — not the secret itself — used to build
|
|
24
|
+
* the environment variable a CI run reads it from (see `secrets/env-names.ts`).
|
|
25
|
+
*/
|
|
26
|
+
export const envName = z
|
|
27
|
+
.string()
|
|
28
|
+
.regex(/^[A-Z][A-Z0-9_]*$/)
|
|
29
|
+
.optional();
|
|
30
|
+
/**
|
|
31
|
+
* Credentials as persisted: usernames and a `secretRef`, never a password
|
|
32
|
+
* value. Unlike every other schema here, a plaintext `password` key is
|
|
33
|
+
* explicitly rejected rather than merely ignored — secrets must never be
|
|
34
|
+
* written to a project file, in any format.
|
|
35
|
+
*/
|
|
36
|
+
export const endpointAuthSchema = z
|
|
37
|
+
.looseObject({
|
|
38
|
+
type: z.enum(['none', 'basic', 'ntlm']),
|
|
39
|
+
username: z.string().optional(),
|
|
40
|
+
passwordRef: z.string().optional(),
|
|
41
|
+
passwordEnv: envName,
|
|
42
|
+
domain: z.string().optional(),
|
|
43
|
+
workstation: z.string().optional(),
|
|
44
|
+
preemptive: z.boolean().optional(),
|
|
45
|
+
})
|
|
46
|
+
.refine((value) => !('password' in value), {
|
|
47
|
+
message: 'endpoint auth must not contain a plaintext "password" field; use passwordRef',
|
|
48
|
+
path: ['password'],
|
|
49
|
+
});
|
|
50
|
+
/**
|
|
51
|
+
* Keys that would hold a credential *value* rather than a reference to one. A project file must
|
|
52
|
+
* never carry one, in any authentication scheme, so they are rejected outright rather than
|
|
53
|
+
* ignored — the same rule `endpointAuthSchema` applies to `password`, stated once for the
|
|
54
|
+
* schemes added with the REST client (ADR-0004).
|
|
55
|
+
*/
|
|
56
|
+
const PLAINTEXT_SECRET_KEYS = [
|
|
57
|
+
'password',
|
|
58
|
+
'token',
|
|
59
|
+
'secret',
|
|
60
|
+
'clientSecret',
|
|
61
|
+
'client_secret',
|
|
62
|
+
'apiKey',
|
|
63
|
+
'refreshToken',
|
|
64
|
+
];
|
|
65
|
+
/** Adds the {@link PLAINTEXT_SECRET_KEYS} rejection to one authentication schema. */
|
|
66
|
+
function refuseSecretValues(schema) {
|
|
67
|
+
return schema.superRefine((value, ctx) => {
|
|
68
|
+
for (const key of PLAINTEXT_SECRET_KEYS) {
|
|
69
|
+
if (key in value) {
|
|
70
|
+
ctx.addIssue({
|
|
71
|
+
code: 'custom',
|
|
72
|
+
path: [key],
|
|
73
|
+
message: `auth must not contain a plaintext "${key}" field; use a secretRef`,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
const inheritAuthSchema = z.looseObject({ type: z.literal('inherit') });
|
|
80
|
+
const bearerAuthSchema = refuseSecretValues(z.looseObject({
|
|
81
|
+
type: z.literal('bearer'),
|
|
82
|
+
tokenRef: z.string().optional(),
|
|
83
|
+
tokenEnv: envName,
|
|
84
|
+
scheme: z.string().optional(),
|
|
85
|
+
}));
|
|
86
|
+
const apiKeyAuthSchema = refuseSecretValues(z.looseObject({
|
|
87
|
+
type: z.literal('api-key'),
|
|
88
|
+
name: z.string(),
|
|
89
|
+
valueRef: z.string().optional(),
|
|
90
|
+
valueEnv: envName,
|
|
91
|
+
in: z.enum(['header', 'query']),
|
|
92
|
+
}));
|
|
93
|
+
const oauth2AuthSchema = refuseSecretValues(z.looseObject({
|
|
94
|
+
type: z.literal('oauth2'),
|
|
95
|
+
grant: z.enum(['client-credentials', 'authorization-code']),
|
|
96
|
+
tokenUrl: z.string(),
|
|
97
|
+
authorizationUrl: z.string().optional(),
|
|
98
|
+
clientId: z.string(),
|
|
99
|
+
clientSecretRef: z.string().optional(),
|
|
100
|
+
clientSecretEnv: envName,
|
|
101
|
+
scopes: z.array(z.string()).default([]),
|
|
102
|
+
audience: z.string().optional(),
|
|
103
|
+
clientAuth: z.enum(['basic', 'body']).default('basic'),
|
|
104
|
+
pkce: z.boolean().default(true),
|
|
105
|
+
refreshTokenRef: z.string().optional(),
|
|
106
|
+
}));
|
|
107
|
+
/**
|
|
108
|
+
* Authentication as persisted anywhere a project configures it. `endpointAuthSchema` is one arm,
|
|
109
|
+
* so a file written before the REST client — which only ever held `none`/`basic`/`ntlm` — parses
|
|
110
|
+
* unchanged. `inherit` is accepted here and rejected by the SOAP schemas that reuse
|
|
111
|
+
* `endpointAuthSchema` instead, since an interface has nothing to inherit from.
|
|
112
|
+
*/
|
|
113
|
+
export const authConfigSchema = z.union([
|
|
114
|
+
endpointAuthSchema,
|
|
115
|
+
inheritAuthSchema,
|
|
116
|
+
bearerAuthSchema,
|
|
117
|
+
apiKeyAuthSchema,
|
|
118
|
+
oauth2AuthSchema,
|
|
119
|
+
]);
|
|
120
|
+
/**
|
|
121
|
+
* What a SOAP interface, endpoint or request may hold: every {@link authConfigSchema} arm except
|
|
122
|
+
* `inherit` — a SOAP owner has no interface-like ancestor above it to inherit from. The REST
|
|
123
|
+
* schemas are reused, not copied, so the plaintext-secret rejection applies to SOAP files too.
|
|
124
|
+
* `endpointAuthSchema` is deliberately not widened in place: it is itself an arm of this union,
|
|
125
|
+
* and widening its enum would let its looser object shape swallow token configs before the
|
|
126
|
+
* stricter arms see them.
|
|
127
|
+
*/
|
|
128
|
+
export const soapOwnerAuthSchema = z.union([endpointAuthSchema, bearerAuthSchema, apiKeyAuthSchema, oauth2AuthSchema]);
|
|
129
|
+
/**
|
|
130
|
+
* A definition's fetch credentials: Basic, Bearer or API key, each as references only. The Basic arm
|
|
131
|
+
* takes the full plaintext-key rejection too, not only `endpointAuthSchema`'s `password`, so a `token`
|
|
132
|
+
* or `apiKey` written beside `type: basic` is refused rather than ignored.
|
|
133
|
+
*/
|
|
134
|
+
export const definitionAuthSchema = z.union([
|
|
135
|
+
refuseSecretValues(endpointAuthSchema).refine((auth) => auth.type === 'basic', {
|
|
136
|
+
message: 'a definition supports Basic, not NTLM',
|
|
137
|
+
}),
|
|
138
|
+
bearerAuthSchema,
|
|
139
|
+
apiKeyAuthSchema,
|
|
140
|
+
]);
|
|
141
|
+
/** Where a file's bytes live: the project's content-addressed cache, or a path on disk. */
|
|
142
|
+
export const attachmentSourceSchema = z.union([
|
|
143
|
+
z.looseObject({ kind: z.literal('cache'), sha256: nonEmpty }),
|
|
144
|
+
z.looseObject({ kind: z.literal('path'), path: nonEmpty }),
|
|
145
|
+
]);
|
|
146
|
+
/**
|
|
147
|
+
* A request's `scripts` key (format 6, #63). `pre` and `post` record the script file names for a
|
|
148
|
+
* reader of the YAML; the loader never reads them, and always opens the name derived from the
|
|
149
|
+
* request's slug (`scriptFileName`), so a hand-edited name cannot reach outside the directory.
|
|
150
|
+
*/
|
|
151
|
+
export const scriptsSchema = z.looseObject({
|
|
152
|
+
pre: nonEmpty.optional(),
|
|
153
|
+
post: nonEmpty.optional(),
|
|
154
|
+
api: z.enum(['wirebench', 'postman']).default('wirebench'),
|
|
155
|
+
enabled: z.boolean().default(true),
|
|
156
|
+
secrets: z.array(z.string().regex(SECRET_NAME_PATTERN)).default([]),
|
|
157
|
+
timeoutMs: z.number().int().positive().max(10_000).optional(),
|
|
158
|
+
});
|
|
159
|
+
/**
|
|
160
|
+
* One table row as persisted. `enabled` is written only when `false`, so a missing key means
|
|
161
|
+
* enabled; names may repeat and their order is the wire order.
|
|
162
|
+
*/
|
|
163
|
+
export const keyValueEntrySchema = z.looseObject({
|
|
164
|
+
name: z.string(),
|
|
165
|
+
value: z.string(),
|
|
166
|
+
enabled: z.boolean().default(true),
|
|
167
|
+
description: z.string().optional(),
|
|
168
|
+
});
|
|
169
|
+
/** A request's link to the OpenAPI `webhooks`/`callbacks` entry it was imported from. */
|
|
170
|
+
export const hookLinkSchema = z.discriminatedUnion('kind', [
|
|
171
|
+
z.looseObject({ kind: z.literal('webhook'), name: nonEmpty }),
|
|
172
|
+
z.looseObject({
|
|
173
|
+
kind: z.literal('callback'),
|
|
174
|
+
operation: nonEmpty,
|
|
175
|
+
name: nonEmpty,
|
|
176
|
+
expression: z.string(),
|
|
177
|
+
}),
|
|
178
|
+
]);
|
|
179
|
+
/**
|
|
180
|
+
* A webhook collection's, folder's or item's `signing` key (webhook-signatures §5.1). References
|
|
181
|
+
* only: a plaintext `secret` is refused outright, as auth refuses its value keys.
|
|
182
|
+
*/
|
|
183
|
+
export const webhookSigningSchema = z.union([
|
|
184
|
+
z.looseObject({ mode: z.literal('none') }),
|
|
185
|
+
z
|
|
186
|
+
.looseObject({
|
|
187
|
+
mode: z.literal('sign'),
|
|
188
|
+
scheme: signatureSchemeSchema,
|
|
189
|
+
secretRef: z.string().optional(),
|
|
190
|
+
secretEnv: envName,
|
|
191
|
+
})
|
|
192
|
+
.refine((value) => !('secret' in value), {
|
|
193
|
+
message: 'signing must not contain a plaintext "secret" field; use secretRef',
|
|
194
|
+
path: ['secret'],
|
|
195
|
+
}),
|
|
196
|
+
]);
|
|
197
|
+
/** `apis/<slug>/requests/[<folder>/…]folder.yaml`. */
|
|
198
|
+
export const restFolderFileSchema = z.looseObject({
|
|
199
|
+
id: nonEmpty,
|
|
200
|
+
name: z.string(),
|
|
201
|
+
order: z.number().int(),
|
|
202
|
+
description: z.string().optional(),
|
|
203
|
+
auth: authConfigSchema.optional(),
|
|
204
|
+
});
|
|
205
|
+
/** Every protocol this build can load. A `kind` outside this list is refused by name, never guessed at. */
|
|
206
|
+
const SUPPORTED_KINDS = ['soap', 'rest', 'grpc', 'websocket'];
|
|
207
|
+
/**
|
|
208
|
+
* Refuses a document whose `kind` this build does not know how to honour — a protocol a later
|
|
209
|
+
* release adds, or a typo — before schema validation, so the error says what is actually wrong
|
|
210
|
+
* ("this build cannot open a graphql document") instead of "expected 'rest', received 'graphql'",
|
|
211
|
+
* and so a project written by a future build fails loudly rather than losing its requests to a
|
|
212
|
+
* dropped unknown key. `grpc` was the reserved name this guard existed for until the gRPC client
|
|
213
|
+
* arrived; it stays for whatever comes next.
|
|
214
|
+
* Internal since 3.0: a module's request reader calls it; a container of an unknown kind loads
|
|
215
|
+
* as a placeholder instead (`Project.unsupported`), and a host asks `ProtocolRegistry.status`.
|
|
216
|
+
*
|
|
217
|
+
* @throws ProjectError `project-kind-not-supported`
|
|
218
|
+
*/
|
|
219
|
+
export function assertSupportedKind(document, file) {
|
|
220
|
+
if (typeof document !== 'object' || document === null || Array.isArray(document)) {
|
|
221
|
+
return;
|
|
222
|
+
}
|
|
223
|
+
const kind = document['kind'];
|
|
224
|
+
if (typeof kind !== 'string' || SUPPORTED_KINDS.includes(kind)) {
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
throw new ProjectError('project-kind-not-supported', `${file} is a "${kind}" document, which this build cannot open`, {
|
|
228
|
+
details: { file, kind, supported: SUPPORTED_KINDS },
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Validates `value` against `schema`, raising
|
|
233
|
+
* `ProjectError('project-file-invalid')` carrying the file path and the
|
|
234
|
+
* individual zod issues when it does not match.
|
|
235
|
+
*/
|
|
236
|
+
export function parseFile(schema, value, file) {
|
|
237
|
+
const result = schema.safeParse(value);
|
|
238
|
+
if (result.success) {
|
|
239
|
+
return result.data;
|
|
240
|
+
}
|
|
241
|
+
const issues = result.error.issues.map((issue) => ({
|
|
242
|
+
path: issue.path.join('.'),
|
|
243
|
+
message: issue.message,
|
|
244
|
+
}));
|
|
245
|
+
throw new ProjectError('project-file-invalid', `Invalid project file ${file}`, {
|
|
246
|
+
details: { file, issues },
|
|
247
|
+
});
|
|
248
|
+
}
|