@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,306 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The teams-access module's wire shapes (teams-access spec §3.2, §4.2). The server's routes
|
|
3
|
+
* validate with them (through `jsonSchema()`) and the desktop's `ServerClient` parses answers with
|
|
4
|
+
* them, so a drift between the two fails typecheck.
|
|
5
|
+
*
|
|
6
|
+
* Names arrive untrimmed: Fastify validates the JSON Schema rendering, which cannot carry a
|
|
7
|
+
* transform, so the handler trims and re-checks the length (`teams-name-invalid`).
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
/**
|
|
11
|
+
* Crockford base32 ULID, upper case, 26 characters: what `ulidx` mints and what the server's
|
|
12
|
+
* `RepoStore` accepts. `identityIdSchema` only checks length; every teams route parameter is this.
|
|
13
|
+
*/
|
|
14
|
+
export declare const TEAMS_ID_PATTERN: RegExp;
|
|
15
|
+
/** §6: team and workspace names, after trimming. */
|
|
16
|
+
export declare const MAX_TEAMS_NAME_LENGTH = 80;
|
|
17
|
+
export declare const teamsIdSchema: z.ZodString;
|
|
18
|
+
export declare const teamsNameSchema: z.ZodString;
|
|
19
|
+
export declare const teamRoleSchema: z.ZodEnum<{
|
|
20
|
+
member: "member";
|
|
21
|
+
admin: "admin";
|
|
22
|
+
}>;
|
|
23
|
+
export type TeamRole = z.infer<typeof teamRoleSchema>;
|
|
24
|
+
export declare const workspaceRoleSchema: z.ZodEnum<{
|
|
25
|
+
editor: "editor";
|
|
26
|
+
admin: "admin";
|
|
27
|
+
viewer: "viewer";
|
|
28
|
+
}>;
|
|
29
|
+
export type WorkspaceRole = z.infer<typeof workspaceRoleSchema>;
|
|
30
|
+
/** What a team member gets without a grant; `none` hides the workspace from them (§3.1). */
|
|
31
|
+
export declare const defaultRoleSchema: z.ZodEnum<{
|
|
32
|
+
none: "none";
|
|
33
|
+
editor: "editor";
|
|
34
|
+
viewer: "viewer";
|
|
35
|
+
}>;
|
|
36
|
+
export type DefaultRole = z.infer<typeof defaultRoleSchema>;
|
|
37
|
+
export declare const roleSourceSchema: z.ZodEnum<{
|
|
38
|
+
default: "default";
|
|
39
|
+
grant: "grant";
|
|
40
|
+
"server-admin": "server-admin";
|
|
41
|
+
"team-admin": "team-admin";
|
|
42
|
+
}>;
|
|
43
|
+
export type RoleSource = z.infer<typeof roleSourceSchema>;
|
|
44
|
+
/** A role as the access list shows it: a team member may have `none`. */
|
|
45
|
+
export declare const effectiveRoleSchema: z.ZodEnum<{
|
|
46
|
+
none: "none";
|
|
47
|
+
editor: "editor";
|
|
48
|
+
admin: "admin";
|
|
49
|
+
viewer: "viewer";
|
|
50
|
+
}>;
|
|
51
|
+
export type EffectiveRole = z.infer<typeof effectiveRoleSchema>;
|
|
52
|
+
export declare const teamSchema: z.ZodObject<{
|
|
53
|
+
id: z.ZodString;
|
|
54
|
+
name: z.ZodString;
|
|
55
|
+
myRole: z.ZodEnum<{
|
|
56
|
+
member: "member";
|
|
57
|
+
admin: "admin";
|
|
58
|
+
}>;
|
|
59
|
+
createdAt: z.ZodString;
|
|
60
|
+
}, z.core.$strip>;
|
|
61
|
+
export type Team = z.infer<typeof teamSchema>;
|
|
62
|
+
export declare const teamsResponseSchema: z.ZodArray<z.ZodObject<{
|
|
63
|
+
id: z.ZodString;
|
|
64
|
+
name: z.ZodString;
|
|
65
|
+
myRole: z.ZodEnum<{
|
|
66
|
+
member: "member";
|
|
67
|
+
admin: "admin";
|
|
68
|
+
}>;
|
|
69
|
+
createdAt: z.ZodString;
|
|
70
|
+
}, z.core.$strip>>;
|
|
71
|
+
export declare const teamNameRequestSchema: z.ZodObject<{
|
|
72
|
+
name: z.ZodString;
|
|
73
|
+
}, z.core.$strip>;
|
|
74
|
+
export type TeamNameRequest = z.infer<typeof teamNameRequestSchema>;
|
|
75
|
+
export declare const teamParamsSchema: z.ZodObject<{
|
|
76
|
+
teamId: z.ZodString;
|
|
77
|
+
}, z.core.$strip>;
|
|
78
|
+
export declare const teamMemberSchema: z.ZodObject<{
|
|
79
|
+
userId: z.ZodString;
|
|
80
|
+
email: z.ZodString;
|
|
81
|
+
displayName: z.ZodString;
|
|
82
|
+
role: z.ZodEnum<{
|
|
83
|
+
member: "member";
|
|
84
|
+
admin: "admin";
|
|
85
|
+
}>;
|
|
86
|
+
disabled: z.ZodBoolean;
|
|
87
|
+
addedAt: z.ZodString;
|
|
88
|
+
}, z.core.$strip>;
|
|
89
|
+
export type TeamMember = z.infer<typeof teamMemberSchema>;
|
|
90
|
+
export declare const teamMembersResponseSchema: z.ZodArray<z.ZodObject<{
|
|
91
|
+
userId: z.ZodString;
|
|
92
|
+
email: z.ZodString;
|
|
93
|
+
displayName: z.ZodString;
|
|
94
|
+
role: z.ZodEnum<{
|
|
95
|
+
member: "member";
|
|
96
|
+
admin: "admin";
|
|
97
|
+
}>;
|
|
98
|
+
disabled: z.ZodBoolean;
|
|
99
|
+
addedAt: z.ZodString;
|
|
100
|
+
}, z.core.$strip>>;
|
|
101
|
+
export declare const memberAddRequestSchema: z.ZodObject<{
|
|
102
|
+
email: z.ZodString;
|
|
103
|
+
role: z.ZodEnum<{
|
|
104
|
+
member: "member";
|
|
105
|
+
admin: "admin";
|
|
106
|
+
}>;
|
|
107
|
+
}, z.core.$strip>;
|
|
108
|
+
export type MemberAddRequest = z.infer<typeof memberAddRequestSchema>;
|
|
109
|
+
export declare const memberRoleRequestSchema: z.ZodObject<{
|
|
110
|
+
role: z.ZodEnum<{
|
|
111
|
+
member: "member";
|
|
112
|
+
admin: "admin";
|
|
113
|
+
}>;
|
|
114
|
+
}, z.core.$strip>;
|
|
115
|
+
export type MemberRoleRequest = z.infer<typeof memberRoleRequestSchema>;
|
|
116
|
+
export declare const memberParamsSchema: z.ZodObject<{
|
|
117
|
+
teamId: z.ZodString;
|
|
118
|
+
userId: z.ZodString;
|
|
119
|
+
}, z.core.$strip>;
|
|
120
|
+
export declare const teamInvitationSchema: z.ZodObject<{
|
|
121
|
+
id: z.ZodString;
|
|
122
|
+
email: z.ZodString;
|
|
123
|
+
role: z.ZodEnum<{
|
|
124
|
+
member: "member";
|
|
125
|
+
admin: "admin";
|
|
126
|
+
}>;
|
|
127
|
+
createdBy: z.ZodNullable<z.ZodString>;
|
|
128
|
+
createdAt: z.ZodString;
|
|
129
|
+
expiresAt: z.ZodString;
|
|
130
|
+
}, z.core.$strip>;
|
|
131
|
+
export type TeamInvitation = z.infer<typeof teamInvitationSchema>;
|
|
132
|
+
export declare const teamInvitationsResponseSchema: z.ZodArray<z.ZodObject<{
|
|
133
|
+
id: z.ZodString;
|
|
134
|
+
email: z.ZodString;
|
|
135
|
+
role: z.ZodEnum<{
|
|
136
|
+
member: "member";
|
|
137
|
+
admin: "admin";
|
|
138
|
+
}>;
|
|
139
|
+
createdBy: z.ZodNullable<z.ZodString>;
|
|
140
|
+
createdAt: z.ZodString;
|
|
141
|
+
expiresAt: z.ZodString;
|
|
142
|
+
}, z.core.$strip>>;
|
|
143
|
+
export declare const teamInvitationCreateRequestSchema: z.ZodObject<{
|
|
144
|
+
email: z.ZodString;
|
|
145
|
+
role: z.ZodEnum<{
|
|
146
|
+
member: "member";
|
|
147
|
+
admin: "admin";
|
|
148
|
+
}>;
|
|
149
|
+
}, z.core.$strip>;
|
|
150
|
+
export type TeamInvitationCreateRequest = z.infer<typeof teamInvitationCreateRequestSchema>;
|
|
151
|
+
/** The link is in this answer and nowhere else: the server stores only the secret's hash. */
|
|
152
|
+
export declare const teamInvitationCreatedSchema: z.ZodObject<{
|
|
153
|
+
id: z.ZodString;
|
|
154
|
+
email: z.ZodString;
|
|
155
|
+
role: z.ZodEnum<{
|
|
156
|
+
member: "member";
|
|
157
|
+
admin: "admin";
|
|
158
|
+
}>;
|
|
159
|
+
url: z.ZodString;
|
|
160
|
+
expiresAt: z.ZodString;
|
|
161
|
+
}, z.core.$strip>;
|
|
162
|
+
export type TeamInvitationCreated = z.infer<typeof teamInvitationCreatedSchema>;
|
|
163
|
+
export declare const teamInvitationParamsSchema: z.ZodObject<{
|
|
164
|
+
teamId: z.ZodString;
|
|
165
|
+
id: z.ZodString;
|
|
166
|
+
}, z.core.$strip>;
|
|
167
|
+
export declare const teamWorkspaceSchema: z.ZodObject<{
|
|
168
|
+
id: z.ZodString;
|
|
169
|
+
name: z.ZodString;
|
|
170
|
+
teamId: z.ZodString;
|
|
171
|
+
teamName: z.ZodString;
|
|
172
|
+
defaultRole: z.ZodEnum<{
|
|
173
|
+
none: "none";
|
|
174
|
+
editor: "editor";
|
|
175
|
+
viewer: "viewer";
|
|
176
|
+
}>;
|
|
177
|
+
myRole: z.ZodEnum<{
|
|
178
|
+
editor: "editor";
|
|
179
|
+
admin: "admin";
|
|
180
|
+
viewer: "viewer";
|
|
181
|
+
}>;
|
|
182
|
+
source: z.ZodEnum<{
|
|
183
|
+
default: "default";
|
|
184
|
+
grant: "grant";
|
|
185
|
+
"server-admin": "server-admin";
|
|
186
|
+
"team-admin": "team-admin";
|
|
187
|
+
}>;
|
|
188
|
+
recordDesktopActivity: z.ZodDefault<z.ZodBoolean>;
|
|
189
|
+
createdAt: z.ZodString;
|
|
190
|
+
}, z.core.$strip>;
|
|
191
|
+
export type TeamWorkspace = z.infer<typeof teamWorkspaceSchema>;
|
|
192
|
+
export declare const teamWorkspacesResponseSchema: z.ZodArray<z.ZodObject<{
|
|
193
|
+
id: z.ZodString;
|
|
194
|
+
name: z.ZodString;
|
|
195
|
+
teamId: z.ZodString;
|
|
196
|
+
teamName: z.ZodString;
|
|
197
|
+
defaultRole: z.ZodEnum<{
|
|
198
|
+
none: "none";
|
|
199
|
+
editor: "editor";
|
|
200
|
+
viewer: "viewer";
|
|
201
|
+
}>;
|
|
202
|
+
myRole: z.ZodEnum<{
|
|
203
|
+
editor: "editor";
|
|
204
|
+
admin: "admin";
|
|
205
|
+
viewer: "viewer";
|
|
206
|
+
}>;
|
|
207
|
+
source: z.ZodEnum<{
|
|
208
|
+
default: "default";
|
|
209
|
+
grant: "grant";
|
|
210
|
+
"server-admin": "server-admin";
|
|
211
|
+
"team-admin": "team-admin";
|
|
212
|
+
}>;
|
|
213
|
+
recordDesktopActivity: z.ZodDefault<z.ZodBoolean>;
|
|
214
|
+
createdAt: z.ZodString;
|
|
215
|
+
}, z.core.$strip>>;
|
|
216
|
+
export declare const teamWorkspaceCreateRequestSchema: z.ZodObject<{
|
|
217
|
+
id: z.ZodOptional<z.ZodString>;
|
|
218
|
+
name: z.ZodString;
|
|
219
|
+
defaultRole: z.ZodOptional<z.ZodEnum<{
|
|
220
|
+
none: "none";
|
|
221
|
+
editor: "editor";
|
|
222
|
+
viewer: "viewer";
|
|
223
|
+
}>>;
|
|
224
|
+
}, z.core.$strip>;
|
|
225
|
+
export type TeamWorkspaceCreateRequest = z.infer<typeof teamWorkspaceCreateRequestSchema>;
|
|
226
|
+
export declare const teamWorkspaceUpdateRequestSchema: z.ZodObject<{
|
|
227
|
+
name: z.ZodOptional<z.ZodString>;
|
|
228
|
+
defaultRole: z.ZodOptional<z.ZodEnum<{
|
|
229
|
+
none: "none";
|
|
230
|
+
editor: "editor";
|
|
231
|
+
viewer: "viewer";
|
|
232
|
+
}>>;
|
|
233
|
+
recordDesktopActivity: z.ZodOptional<z.ZodBoolean>;
|
|
234
|
+
}, z.core.$strip>;
|
|
235
|
+
export type TeamWorkspaceUpdateRequest = z.infer<typeof teamWorkspaceUpdateRequestSchema>;
|
|
236
|
+
export declare const teamWorkspaceParamsSchema: z.ZodObject<{
|
|
237
|
+
workspaceId: z.ZodString;
|
|
238
|
+
}, z.core.$strip>;
|
|
239
|
+
/** One team member as a workspace admin sees them: what they can do, why, and any grant. */
|
|
240
|
+
export declare const accessEntrySchema: z.ZodObject<{
|
|
241
|
+
userId: z.ZodString;
|
|
242
|
+
email: z.ZodString;
|
|
243
|
+
displayName: z.ZodString;
|
|
244
|
+
teamRole: z.ZodEnum<{
|
|
245
|
+
member: "member";
|
|
246
|
+
admin: "admin";
|
|
247
|
+
}>;
|
|
248
|
+
disabled: z.ZodBoolean;
|
|
249
|
+
effectiveRole: z.ZodEnum<{
|
|
250
|
+
none: "none";
|
|
251
|
+
editor: "editor";
|
|
252
|
+
admin: "admin";
|
|
253
|
+
viewer: "viewer";
|
|
254
|
+
}>;
|
|
255
|
+
source: z.ZodOptional<z.ZodEnum<{
|
|
256
|
+
default: "default";
|
|
257
|
+
grant: "grant";
|
|
258
|
+
"server-admin": "server-admin";
|
|
259
|
+
"team-admin": "team-admin";
|
|
260
|
+
}>>;
|
|
261
|
+
grant: z.ZodOptional<z.ZodEnum<{
|
|
262
|
+
editor: "editor";
|
|
263
|
+
admin: "admin";
|
|
264
|
+
viewer: "viewer";
|
|
265
|
+
}>>;
|
|
266
|
+
}, z.core.$strip>;
|
|
267
|
+
export type AccessEntry = z.infer<typeof accessEntrySchema>;
|
|
268
|
+
export declare const accessResponseSchema: z.ZodArray<z.ZodObject<{
|
|
269
|
+
userId: z.ZodString;
|
|
270
|
+
email: z.ZodString;
|
|
271
|
+
displayName: z.ZodString;
|
|
272
|
+
teamRole: z.ZodEnum<{
|
|
273
|
+
member: "member";
|
|
274
|
+
admin: "admin";
|
|
275
|
+
}>;
|
|
276
|
+
disabled: z.ZodBoolean;
|
|
277
|
+
effectiveRole: z.ZodEnum<{
|
|
278
|
+
none: "none";
|
|
279
|
+
editor: "editor";
|
|
280
|
+
admin: "admin";
|
|
281
|
+
viewer: "viewer";
|
|
282
|
+
}>;
|
|
283
|
+
source: z.ZodOptional<z.ZodEnum<{
|
|
284
|
+
default: "default";
|
|
285
|
+
grant: "grant";
|
|
286
|
+
"server-admin": "server-admin";
|
|
287
|
+
"team-admin": "team-admin";
|
|
288
|
+
}>>;
|
|
289
|
+
grant: z.ZodOptional<z.ZodEnum<{
|
|
290
|
+
editor: "editor";
|
|
291
|
+
admin: "admin";
|
|
292
|
+
viewer: "viewer";
|
|
293
|
+
}>>;
|
|
294
|
+
}, z.core.$strip>>;
|
|
295
|
+
export declare const accessParamsSchema: z.ZodObject<{
|
|
296
|
+
workspaceId: z.ZodString;
|
|
297
|
+
userId: z.ZodString;
|
|
298
|
+
}, z.core.$strip>;
|
|
299
|
+
export declare const setAccessRequestSchema: z.ZodObject<{
|
|
300
|
+
role: z.ZodEnum<{
|
|
301
|
+
editor: "editor";
|
|
302
|
+
admin: "admin";
|
|
303
|
+
viewer: "viewer";
|
|
304
|
+
}>;
|
|
305
|
+
}, z.core.$strip>;
|
|
306
|
+
export type SetAccessRequest = z.infer<typeof setAccessRequestSchema>;
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The teams-access module's wire shapes (teams-access spec §3.2, §4.2). The server's routes
|
|
3
|
+
* validate with them (through `jsonSchema()`) and the desktop's `ServerClient` parses answers with
|
|
4
|
+
* them, so a drift between the two fails typecheck.
|
|
5
|
+
*
|
|
6
|
+
* Names arrive untrimmed: Fastify validates the JSON Schema rendering, which cannot carry a
|
|
7
|
+
* transform, so the handler trims and re-checks the length (`teams-name-invalid`).
|
|
8
|
+
*/
|
|
9
|
+
import { z } from 'zod';
|
|
10
|
+
import { emailSchema } from './identity.js';
|
|
11
|
+
/**
|
|
12
|
+
* Crockford base32 ULID, upper case, 26 characters: what `ulidx` mints and what the server's
|
|
13
|
+
* `RepoStore` accepts. `identityIdSchema` only checks length; every teams route parameter is this.
|
|
14
|
+
*/
|
|
15
|
+
export const TEAMS_ID_PATTERN = /^[0-9A-HJKMNP-TV-Z]{26}$/;
|
|
16
|
+
/** §6: team and workspace names, after trimming. */
|
|
17
|
+
export const MAX_TEAMS_NAME_LENGTH = 80;
|
|
18
|
+
export const teamsIdSchema = z.string().regex(TEAMS_ID_PATTERN);
|
|
19
|
+
export const teamsNameSchema = z.string().min(1).max(MAX_TEAMS_NAME_LENGTH);
|
|
20
|
+
export const teamRoleSchema = z.enum(['member', 'admin']);
|
|
21
|
+
export const workspaceRoleSchema = z.enum(['viewer', 'editor', 'admin']);
|
|
22
|
+
/** What a team member gets without a grant; `none` hides the workspace from them (§3.1). */
|
|
23
|
+
export const defaultRoleSchema = z.enum(['none', 'viewer', 'editor']);
|
|
24
|
+
export const roleSourceSchema = z.enum(['server-admin', 'team-admin', 'grant', 'default']);
|
|
25
|
+
/** A role as the access list shows it: a team member may have `none`. */
|
|
26
|
+
export const effectiveRoleSchema = z.enum(['none', 'viewer', 'editor', 'admin']);
|
|
27
|
+
// ---- teams -------------------------------------------------------------------------------
|
|
28
|
+
export const teamSchema = z.object({
|
|
29
|
+
id: z.string(),
|
|
30
|
+
name: z.string(),
|
|
31
|
+
/** A server admin sees every team as `admin`. */
|
|
32
|
+
myRole: teamRoleSchema,
|
|
33
|
+
createdAt: z.string(),
|
|
34
|
+
});
|
|
35
|
+
export const teamsResponseSchema = z.array(teamSchema);
|
|
36
|
+
export const teamNameRequestSchema = z.object({ name: teamsNameSchema });
|
|
37
|
+
export const teamParamsSchema = z.object({ teamId: teamsIdSchema });
|
|
38
|
+
// ---- members -----------------------------------------------------------------------------
|
|
39
|
+
export const teamMemberSchema = z.object({
|
|
40
|
+
userId: z.string(),
|
|
41
|
+
email: z.string(),
|
|
42
|
+
displayName: z.string(),
|
|
43
|
+
role: teamRoleSchema,
|
|
44
|
+
/** §16 question 4: a disabled user stays listed, marked, and removable. */
|
|
45
|
+
disabled: z.boolean(),
|
|
46
|
+
addedAt: z.string(),
|
|
47
|
+
});
|
|
48
|
+
export const teamMembersResponseSchema = z.array(teamMemberSchema);
|
|
49
|
+
export const memberAddRequestSchema = z.object({ email: emailSchema, role: teamRoleSchema });
|
|
50
|
+
export const memberRoleRequestSchema = z.object({ role: teamRoleSchema });
|
|
51
|
+
export const memberParamsSchema = z.object({ teamId: teamsIdSchema, userId: teamsIdSchema });
|
|
52
|
+
// ---- invitations -------------------------------------------------------------------------
|
|
53
|
+
export const teamInvitationSchema = z.object({
|
|
54
|
+
id: z.string(),
|
|
55
|
+
email: z.string(),
|
|
56
|
+
role: teamRoleSchema,
|
|
57
|
+
createdBy: z.string().nullable(),
|
|
58
|
+
createdAt: z.string(),
|
|
59
|
+
expiresAt: z.string(),
|
|
60
|
+
});
|
|
61
|
+
export const teamInvitationsResponseSchema = z.array(teamInvitationSchema);
|
|
62
|
+
export const teamInvitationCreateRequestSchema = z.object({ email: emailSchema, role: teamRoleSchema });
|
|
63
|
+
/** The link is in this answer and nowhere else: the server stores only the secret's hash. */
|
|
64
|
+
export const teamInvitationCreatedSchema = z.object({
|
|
65
|
+
id: z.string(),
|
|
66
|
+
email: z.string(),
|
|
67
|
+
role: teamRoleSchema,
|
|
68
|
+
url: z.string().url(),
|
|
69
|
+
expiresAt: z.string(),
|
|
70
|
+
});
|
|
71
|
+
export const teamInvitationParamsSchema = z.object({ teamId: teamsIdSchema, id: teamsIdSchema });
|
|
72
|
+
// ---- workspaces --------------------------------------------------------------------------
|
|
73
|
+
export const teamWorkspaceSchema = z.object({
|
|
74
|
+
id: z.string(),
|
|
75
|
+
name: z.string(),
|
|
76
|
+
teamId: z.string(),
|
|
77
|
+
teamName: z.string(),
|
|
78
|
+
defaultRole: defaultRoleSchema,
|
|
79
|
+
myRole: workspaceRoleSchema,
|
|
80
|
+
source: roleSourceSchema,
|
|
81
|
+
/** Whether the desktop uploads request and run metadata for this workspace to the audit log. */
|
|
82
|
+
recordDesktopActivity: z.boolean().default(false),
|
|
83
|
+
createdAt: z.string(),
|
|
84
|
+
});
|
|
85
|
+
export const teamWorkspacesResponseSchema = z.array(teamWorkspaceSchema);
|
|
86
|
+
export const teamWorkspaceCreateRequestSchema = z.object({
|
|
87
|
+
/** The workspace manifest's ULID, so the server id equals the local one (server-sync §3.2). */
|
|
88
|
+
id: teamsIdSchema.optional(),
|
|
89
|
+
name: teamsNameSchema,
|
|
90
|
+
defaultRole: defaultRoleSchema.optional(),
|
|
91
|
+
});
|
|
92
|
+
export const teamWorkspaceUpdateRequestSchema = z.object({
|
|
93
|
+
name: teamsNameSchema.optional(),
|
|
94
|
+
defaultRole: defaultRoleSchema.optional(),
|
|
95
|
+
recordDesktopActivity: z.boolean().optional(),
|
|
96
|
+
});
|
|
97
|
+
export const teamWorkspaceParamsSchema = z.object({ workspaceId: teamsIdSchema });
|
|
98
|
+
// ---- access ------------------------------------------------------------------------------
|
|
99
|
+
/** One team member as a workspace admin sees them: what they can do, why, and any grant. */
|
|
100
|
+
export const accessEntrySchema = z.object({
|
|
101
|
+
userId: z.string(),
|
|
102
|
+
email: z.string(),
|
|
103
|
+
displayName: z.string(),
|
|
104
|
+
teamRole: teamRoleSchema,
|
|
105
|
+
disabled: z.boolean(),
|
|
106
|
+
effectiveRole: effectiveRoleSchema,
|
|
107
|
+
/** Absent exactly when `effectiveRole` is `none`. */
|
|
108
|
+
source: roleSourceSchema.optional(),
|
|
109
|
+
grant: workspaceRoleSchema.optional(),
|
|
110
|
+
});
|
|
111
|
+
export const accessResponseSchema = z.array(accessEntrySchema);
|
|
112
|
+
export const accessParamsSchema = z.object({ workspaceId: teamsIdSchema, userId: teamsIdSchema });
|
|
113
|
+
export const setAccessRequestSchema = z.object({ role: workspaceRoleSchema });
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** How a snapshot body is compared: semantically for `json`/`xml`, exactly for `text`. */
|
|
2
|
+
export type SnapshotFormat = 'json' | 'xml' | 'text';
|
|
3
|
+
/** One difference {@link diffSnapshot} found between the golden and the actual body. */
|
|
4
|
+
export interface SnapshotChange {
|
|
5
|
+
readonly kind: 'added' | 'removed' | 'changed';
|
|
6
|
+
readonly path: string;
|
|
7
|
+
readonly expected?: string;
|
|
8
|
+
readonly actual?: string;
|
|
9
|
+
}
|
|
10
|
+
/** The result of comparing a golden body against a newly received one. */
|
|
11
|
+
export interface SnapshotDiff {
|
|
12
|
+
readonly format: SnapshotFormat;
|
|
13
|
+
readonly changes: readonly SnapshotChange[];
|
|
14
|
+
readonly ignored: number;
|
|
15
|
+
readonly error?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Semantically compares a golden body against a newly received one. JSON
|
|
19
|
+
* and XML are compared structurally (see {@link diffJson} and
|
|
20
|
+
* {@link diffXml}); anything else, or a body that fails to parse in its
|
|
21
|
+
* declared format, falls back to an exact text comparison and — for the
|
|
22
|
+
* parse-failure case — sets `error`.
|
|
23
|
+
*
|
|
24
|
+
* Changes that a rule in `options.ignore` covers are dropped from the
|
|
25
|
+
* result and counted in `ignored` instead.
|
|
26
|
+
*/
|
|
27
|
+
export declare function diffSnapshot(golden: string, actual: string, options: {
|
|
28
|
+
format: SnapshotFormat;
|
|
29
|
+
ignore: readonly string[];
|
|
30
|
+
}): SnapshotDiff;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { isWirebenchError } from '../errors.js';
|
|
2
|
+
import { truncateValue } from './format.js';
|
|
3
|
+
import { diffJson } from './json-diff.js';
|
|
4
|
+
import { diffXml } from './xml-diff.js';
|
|
5
|
+
import { matchesIgnoreRule } from './ignore.js';
|
|
6
|
+
/** Normalises line endings before an exact text comparison. */
|
|
7
|
+
function normalizeLineEndings(text) {
|
|
8
|
+
return text.replace(/\r\n/g, '\n');
|
|
9
|
+
}
|
|
10
|
+
function diffText(golden, actual) {
|
|
11
|
+
const normalizedGolden = normalizeLineEndings(golden);
|
|
12
|
+
const normalizedActual = normalizeLineEndings(actual);
|
|
13
|
+
if (normalizedGolden === normalizedActual) {
|
|
14
|
+
return [];
|
|
15
|
+
}
|
|
16
|
+
return [
|
|
17
|
+
{
|
|
18
|
+
kind: 'changed',
|
|
19
|
+
path: '/',
|
|
20
|
+
expected: truncateValue(normalizedGolden),
|
|
21
|
+
actual: truncateValue(normalizedActual),
|
|
22
|
+
},
|
|
23
|
+
];
|
|
24
|
+
}
|
|
25
|
+
/** Applies every truncation the spec asks for to a change's `expected`/`actual` values. */
|
|
26
|
+
function truncateChange(change) {
|
|
27
|
+
return {
|
|
28
|
+
...change,
|
|
29
|
+
...(change.expected !== undefined ? { expected: truncateValue(change.expected) } : {}),
|
|
30
|
+
...(change.actual !== undefined ? { actual: truncateValue(change.actual) } : {}),
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Semantically compares a golden body against a newly received one. JSON
|
|
35
|
+
* and XML are compared structurally (see {@link diffJson} and
|
|
36
|
+
* {@link diffXml}); anything else, or a body that fails to parse in its
|
|
37
|
+
* declared format, falls back to an exact text comparison and — for the
|
|
38
|
+
* parse-failure case — sets `error`.
|
|
39
|
+
*
|
|
40
|
+
* Changes that a rule in `options.ignore` covers are dropped from the
|
|
41
|
+
* result and counted in `ignored` instead.
|
|
42
|
+
*/
|
|
43
|
+
export function diffSnapshot(golden, actual, options) {
|
|
44
|
+
let format = options.format;
|
|
45
|
+
let changes;
|
|
46
|
+
let error;
|
|
47
|
+
try {
|
|
48
|
+
switch (format) {
|
|
49
|
+
case 'json':
|
|
50
|
+
changes = diffJson(JSON.parse(golden), JSON.parse(actual));
|
|
51
|
+
break;
|
|
52
|
+
case 'xml':
|
|
53
|
+
changes = diffXml(golden, actual);
|
|
54
|
+
break;
|
|
55
|
+
default:
|
|
56
|
+
changes = diffText(golden, actual);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
catch (cause) {
|
|
60
|
+
format = 'text';
|
|
61
|
+
error = isWirebenchError(cause) || cause instanceof Error ? cause.message : String(cause);
|
|
62
|
+
changes = diffText(golden, actual);
|
|
63
|
+
}
|
|
64
|
+
let ignored = 0;
|
|
65
|
+
const kept = [];
|
|
66
|
+
for (const change of changes) {
|
|
67
|
+
if (options.ignore.some((rule) => matchesIgnoreRule(change.path, rule))) {
|
|
68
|
+
ignored += 1;
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
kept.push(truncateChange(change));
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return { format, changes: kept, ignored, ...(error !== undefined ? { error } : {}) };
|
|
75
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { SnapshotFormat } from './diff.js';
|
|
2
|
+
/** Values truncate to this many characters when shown in a {@link SnapshotChange}. */
|
|
3
|
+
export declare const MAX_VALUE_LENGTH = 200;
|
|
4
|
+
/**
|
|
5
|
+
* Truncates `value` to at most {@link MAX_VALUE_LENGTH} characters, the
|
|
6
|
+
* ellipsis that marks a cut included. Used for every `expected`/`actual`
|
|
7
|
+
* value a snapshot diff reports, so a large body never balloons the diff
|
|
8
|
+
* output.
|
|
9
|
+
*/
|
|
10
|
+
export declare function truncateValue(value: string): string;
|
|
11
|
+
/**
|
|
12
|
+
* Decides whether a snapshot body should be compared as JSON, XML or plain
|
|
13
|
+
* text. `contentType` (when given) takes priority, since it's the type
|
|
14
|
+
* recorded alongside the golden; otherwise the trimmed body's first
|
|
15
|
+
* character decides.
|
|
16
|
+
*/
|
|
17
|
+
export declare function detectSnapshotFormat(body: string, contentType?: string): SnapshotFormat;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** Values truncate to this many characters when shown in a {@link SnapshotChange}. */
|
|
2
|
+
export const MAX_VALUE_LENGTH = 200;
|
|
3
|
+
/**
|
|
4
|
+
* Truncates `value` to at most {@link MAX_VALUE_LENGTH} characters, the
|
|
5
|
+
* ellipsis that marks a cut included. Used for every `expected`/`actual`
|
|
6
|
+
* value a snapshot diff reports, so a large body never balloons the diff
|
|
7
|
+
* output.
|
|
8
|
+
*/
|
|
9
|
+
export function truncateValue(value) {
|
|
10
|
+
if (value.length <= MAX_VALUE_LENGTH) {
|
|
11
|
+
return value;
|
|
12
|
+
}
|
|
13
|
+
return `${value.slice(0, MAX_VALUE_LENGTH - 1)}…`;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Decides whether a snapshot body should be compared as JSON, XML or plain
|
|
17
|
+
* text. `contentType` (when given) takes priority, since it's the type
|
|
18
|
+
* recorded alongside the golden; otherwise the trimmed body's first
|
|
19
|
+
* character decides.
|
|
20
|
+
*/
|
|
21
|
+
export function detectSnapshotFormat(body, contentType) {
|
|
22
|
+
if (contentType !== undefined) {
|
|
23
|
+
// Media types are case-insensitive (RFC 9110 §8.3.1).
|
|
24
|
+
const type = contentType.toLowerCase();
|
|
25
|
+
if (type.includes('json')) {
|
|
26
|
+
return 'json';
|
|
27
|
+
}
|
|
28
|
+
if (type.includes('xml')) {
|
|
29
|
+
return 'xml';
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const trimmed = body.trim();
|
|
33
|
+
if (trimmed.startsWith('{') || trimmed.startsWith('[')) {
|
|
34
|
+
return 'json';
|
|
35
|
+
}
|
|
36
|
+
if (trimmed.startsWith('<')) {
|
|
37
|
+
return 'xml';
|
|
38
|
+
}
|
|
39
|
+
return 'text';
|
|
40
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads and writes a request's golden response: the `<slug>.golden.yaml` sidecar beside its request
|
|
3
|
+
* file (snapshot regression, #34). Shared by the desktop's Snapshot tab and the runner's `--baseline`
|
|
4
|
+
* (#36) and `--update-baseline` (#217), so the file is read and written one way. Uses `node:fs`, so it is exported from the main entry only —
|
|
5
|
+
* never from the `@wirebench/engine/snapshot` subpath, which the renderer imports.
|
|
6
|
+
*
|
|
7
|
+
* An ancestor folder swapped for a symlink between the containment check and the rename is not
|
|
8
|
+
* guarded: Node has no `openat` (#219).
|
|
9
|
+
*/
|
|
10
|
+
import type { Project } from '../project/model.js';
|
|
11
|
+
export interface GoldenFile {
|
|
12
|
+
readonly contentType?: string;
|
|
13
|
+
readonly savedAt: string;
|
|
14
|
+
readonly ignore: readonly string[];
|
|
15
|
+
readonly body: string;
|
|
16
|
+
}
|
|
17
|
+
export type GoldenRead = {
|
|
18
|
+
readonly status: 'none';
|
|
19
|
+
} | {
|
|
20
|
+
readonly status: 'present';
|
|
21
|
+
readonly golden: GoldenFile;
|
|
22
|
+
} | {
|
|
23
|
+
readonly status: 'unreadable';
|
|
24
|
+
readonly reason: 'not-a-file' | 'malformed';
|
|
25
|
+
};
|
|
26
|
+
/**
|
|
27
|
+
* The golden saved for `requestId` in the project saved at `projectDir`. `none` when the request
|
|
28
|
+
* has no file location, its folder leaves the project, its `*.request.yaml` is not on disk, or no
|
|
29
|
+
* sidecar exists. The sidecar's own name is checked with `lstat`, never followed, and read through
|
|
30
|
+
* the one handle that was checked.
|
|
31
|
+
*/
|
|
32
|
+
export declare function readGoldenFile(projectDir: string, project: Project, requestId: string): Promise<GoldenRead>;
|
|
33
|
+
export type GoldenWrite = {
|
|
34
|
+
readonly status: 'written';
|
|
35
|
+
readonly file: string;
|
|
36
|
+
} | {
|
|
37
|
+
readonly status: 'refused';
|
|
38
|
+
readonly reason: 'unsaved' | 'not-a-file';
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Saves `golden` as `requestId`'s sidecar, atomically: a uniquely named temp file, then a rename
|
|
42
|
+
* over it. Refuses an unsaved request, and a sidecar path that holds a symlink, a folder or
|
|
43
|
+
* anything but a regular file (it is never followed). A failed write removes the temp file and throws.
|
|
44
|
+
*/
|
|
45
|
+
export declare function writeGoldenFile(projectDir: string, project: Project, requestId: string, golden: GoldenFile): Promise<GoldenWrite>;
|