@wirebench/engine 2.1.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/LICENSE +201 -0
- package/README.md +3 -0
- package/dist/assert/contract.d.ts +3 -0
- package/dist/assert/contract.js +17 -0
- package/dist/assert/index.d.ts +4 -0
- package/dist/assert/index.js +27 -0
- package/dist/assert/match.d.ts +3 -0
- package/dist/assert/match.js +58 -0
- package/dist/assert/model.d.ts +73 -0
- package/dist/assert/model.js +8 -0
- package/dist/assert/schema.d.ts +34 -0
- package/dist/assert/schema.js +46 -0
- package/dist/assert/sla.d.ts +3 -0
- package/dist/assert/sla.js +8 -0
- package/dist/assert/soap-fault.d.ts +3 -0
- package/dist/assert/soap-fault.js +20 -0
- package/dist/assert/status.d.ts +3 -0
- package/dist/assert/status.js +14 -0
- package/dist/errors.d.ts +77 -0
- package/dist/errors.js +121 -0
- package/dist/fs.d.ts +35 -0
- package/dist/fs.js +64 -0
- package/dist/generate.d.ts +12 -0
- package/dist/generate.js +14 -0
- package/dist/grpc/browser.d.ts +11 -0
- package/dist/grpc/browser.js +9 -0
- package/dist/grpc/cache.d.ts +113 -0
- package/dist/grpc/cache.js +244 -0
- package/dist/grpc/call.d.ts +64 -0
- package/dist/grpc/call.js +72 -0
- package/dist/grpc/codec.d.ts +29 -0
- package/dist/grpc/codec.js +416 -0
- package/dist/grpc/command.d.ts +23 -0
- package/dist/grpc/command.js +91 -0
- package/dist/grpc/expand.d.ts +25 -0
- package/dist/grpc/expand.js +52 -0
- package/dist/grpc/framing.d.ts +28 -0
- package/dist/grpc/framing.js +61 -0
- package/dist/grpc/import.d.ts +47 -0
- package/dist/grpc/import.js +88 -0
- package/dist/grpc/model.d.ts +179 -0
- package/dist/grpc/model.js +91 -0
- package/dist/grpc/proto/describe.d.ts +92 -0
- package/dist/grpc/proto/describe.js +205 -0
- package/dist/grpc/proto/load.d.ts +35 -0
- package/dist/grpc/proto/load.js +112 -0
- package/dist/grpc/proto/sample.d.ts +21 -0
- package/dist/grpc/proto/sample.js +79 -0
- package/dist/grpc/proto/well-known.d.ts +42 -0
- package/dist/grpc/proto/well-known.js +143 -0
- package/dist/grpc/reconcile.d.ts +42 -0
- package/dist/grpc/reconcile.js +153 -0
- package/dist/grpc/reflection/client.d.ts +70 -0
- package/dist/grpc/reflection/client.js +197 -0
- package/dist/grpc/reflection/descriptors.d.ts +69 -0
- package/dist/grpc/reflection/descriptors.js +140 -0
- package/dist/grpc/reflection/proto.d.ts +33 -0
- package/dist/grpc/reflection/proto.js +144 -0
- package/dist/grpc/send.d.ts +132 -0
- package/dist/grpc/send.js +435 -0
- package/dist/grpc/shape.d.ts +29 -0
- package/dist/grpc/shape.js +36 -0
- package/dist/grpc/status.d.ts +21 -0
- package/dist/grpc/status.js +62 -0
- package/dist/grpc/target.d.ts +21 -0
- package/dist/grpc/target.js +66 -0
- package/dist/http/auth/apply.d.ts +37 -0
- package/dist/http/auth/apply.js +74 -0
- package/dist/http/auth/basic.d.ts +36 -0
- package/dist/http/auth/basic.js +69 -0
- package/dist/http/auth/md4.d.ts +13 -0
- package/dist/http/auth/md4.js +81 -0
- package/dist/http/auth/ntlm-transport.d.ts +61 -0
- package/dist/http/auth/ntlm-transport.js +97 -0
- package/dist/http/auth/ntlm.d.ts +190 -0
- package/dist/http/auth/ntlm.js +377 -0
- package/dist/http/client.d.ts +73 -0
- package/dist/http/client.js +403 -0
- package/dist/http/curl-flags.d.ts +15 -0
- package/dist/http/curl-flags.js +95 -0
- package/dist/http/curl.d.ts +94 -0
- package/dist/http/curl.js +245 -0
- package/dist/http/decompress.d.ts +7 -0
- package/dist/http/decompress.js +22 -0
- package/dist/http/errors.d.ts +22 -0
- package/dist/http/errors.js +144 -0
- package/dist/http/failed-request.d.ts +27 -0
- package/dist/http/failed-request.js +48 -0
- package/dist/http/headers.d.ts +15 -0
- package/dist/http/headers.js +50 -0
- package/dist/http/heredoc.d.ts +25 -0
- package/dist/http/heredoc.js +74 -0
- package/dist/http/proxy.d.ts +103 -0
- package/dist/http/proxy.js +168 -0
- package/dist/http/raw-capture.d.ts +23 -0
- package/dist/http/raw-capture.js +57 -0
- package/dist/http/timings.d.ts +79 -0
- package/dist/http/timings.js +212 -0
- package/dist/http/tls.d.ts +111 -0
- package/dist/http/tls.js +167 -0
- package/dist/http/types.d.ts +125 -0
- package/dist/http/types.js +6 -0
- package/dist/import-detect.d.ts +26 -0
- package/dist/import-detect.js +169 -0
- package/dist/import.d.ts +20 -0
- package/dist/import.js +163 -0
- package/dist/index.d.ts +272 -0
- package/dist/index.js +157 -0
- package/dist/json/cursor.d.ts +43 -0
- package/dist/json/cursor.js +168 -0
- package/dist/operations.d.ts +12 -0
- package/dist/operations.js +52 -0
- package/dist/project/attachments-cache.d.ts +80 -0
- package/dist/project/attachments-cache.js +186 -0
- package/dist/project/endpoints.d.ts +23 -0
- package/dist/project/endpoints.js +47 -0
- package/dist/project/environments.d.ts +68 -0
- package/dist/project/environments.js +124 -0
- package/dist/project/fs.d.ts +45 -0
- package/dist/project/fs.js +78 -0
- package/dist/project/history.d.ts +171 -0
- package/dist/project/history.js +179 -0
- package/dist/project/keystores.d.ts +24 -0
- package/dist/project/keystores.js +66 -0
- package/dist/project/load.d.ts +44 -0
- package/dist/project/load.js +634 -0
- package/dist/project/migrate.d.ts +27 -0
- package/dist/project/migrate.js +46 -0
- package/dist/project/model.d.ts +401 -0
- package/dist/project/model.js +126 -0
- package/dist/project/paths.d.ts +134 -0
- package/dist/project/paths.js +259 -0
- package/dist/project/preferences.d.ts +318 -0
- package/dist/project/preferences.js +239 -0
- package/dist/project/properties.d.ts +97 -0
- package/dist/project/properties.js +356 -0
- package/dist/project/save.d.ts +65 -0
- package/dist/project/save.js +295 -0
- package/dist/project/schema.d.ts +1329 -0
- package/dist/project/schema.js +737 -0
- package/dist/project/serialize.d.ts +42 -0
- package/dist/project/serialize.js +385 -0
- package/dist/project/wss-configs.d.ts +40 -0
- package/dist/project/wss-configs.js +142 -0
- package/dist/project/yaml.d.ts +17 -0
- package/dist/project/yaml.js +39 -0
- package/dist/redact/index.d.ts +77 -0
- package/dist/redact/index.js +328 -0
- package/dist/redact/literal.d.ts +12 -0
- package/dist/redact/literal.js +68 -0
- package/dist/rest/auth.d.ts +53 -0
- package/dist/rest/auth.js +80 -0
- package/dist/rest/body.d.ts +61 -0
- package/dist/rest/body.js +184 -0
- package/dist/rest/browser.d.ts +12 -0
- package/dist/rest/browser.js +11 -0
- package/dist/rest/cookies.d.ts +41 -0
- package/dist/rest/cookies.js +102 -0
- package/dist/rest/curl.d.ts +75 -0
- package/dist/rest/curl.js +417 -0
- package/dist/rest/expand.d.ts +35 -0
- package/dist/rest/expand.js +104 -0
- package/dist/rest/model.d.ts +247 -0
- package/dist/rest/model.js +118 -0
- package/dist/rest/oauth2.d.ts +118 -0
- package/dist/rest/oauth2.js +212 -0
- package/dist/rest/openapi/cache.d.ts +54 -0
- package/dist/rest/openapi/cache.js +128 -0
- package/dist/rest/openapi/import.d.ts +67 -0
- package/dist/rest/openapi/import.js +91 -0
- package/dist/rest/openapi/map.d.ts +102 -0
- package/dist/rest/openapi/map.js +477 -0
- package/dist/rest/openapi/model.d.ts +203 -0
- package/dist/rest/openapi/model.js +37 -0
- package/dist/rest/openapi/parse.d.ts +44 -0
- package/dist/rest/openapi/parse.js +1530 -0
- package/dist/rest/openapi/refs.d.ts +63 -0
- package/dist/rest/openapi/refs.js +258 -0
- package/dist/rest/openapi/sample.d.ts +68 -0
- package/dist/rest/openapi/sample.js +336 -0
- package/dist/rest/postman/import.d.ts +21 -0
- package/dist/rest/postman/import.js +47 -0
- package/dist/rest/postman/index.d.ts +7 -0
- package/dist/rest/postman/index.js +7 -0
- package/dist/rest/postman/map.d.ts +28 -0
- package/dist/rest/postman/map.js +427 -0
- package/dist/rest/postman/model.d.ts +118 -0
- package/dist/rest/postman/model.js +7 -0
- package/dist/rest/postman/parse.d.ts +29 -0
- package/dist/rest/postman/parse.js +518 -0
- package/dist/rest/response.d.ts +72 -0
- package/dist/rest/response.js +221 -0
- package/dist/rest/send.d.ts +102 -0
- package/dist/rest/send.js +148 -0
- package/dist/rest/url.d.ts +92 -0
- package/dist/rest/url.js +213 -0
- package/dist/run/effective-auth.d.ts +10 -0
- package/dist/run/effective-auth.js +19 -0
- package/dist/run/index.d.ts +8 -0
- package/dist/run/index.js +4 -0
- package/dist/run/prepare.d.ts +43 -0
- package/dist/run/prepare.js +280 -0
- package/dist/run/run.d.ts +53 -0
- package/dist/run/run.js +223 -0
- package/dist/run/secret-needs.d.ts +13 -0
- package/dist/run/secret-needs.js +125 -0
- package/dist/run/select.d.ts +34 -0
- package/dist/run/select.js +76 -0
- package/dist/secrets/env-names.d.ts +27 -0
- package/dist/secrets/env-names.js +40 -0
- package/dist/secrets/resolve.d.ts +58 -0
- package/dist/secrets/resolve.js +136 -0
- package/dist/send-options.d.ts +141 -0
- package/dist/send-options.js +228 -0
- package/dist/send.d.ts +53 -0
- package/dist/send.js +210 -0
- package/dist/soap/body-builder.d.ts +38 -0
- package/dist/soap/body-builder.js +250 -0
- package/dist/soap/build-problems.d.ts +12 -0
- package/dist/soap/build-problems.js +2 -0
- package/dist/soap/charset.d.ts +23 -0
- package/dist/soap/charset.js +47 -0
- package/dist/soap/envelope.d.ts +44 -0
- package/dist/soap/envelope.js +76 -0
- package/dist/soap/fault.d.ts +46 -0
- package/dist/soap/fault.js +129 -0
- package/dist/soap/form-request.d.ts +34 -0
- package/dist/soap/form-request.js +251 -0
- package/dist/soap/legacy-project/definition-fetcher.d.ts +21 -0
- package/dist/soap/legacy-project/definition-fetcher.js +43 -0
- package/dist/soap/legacy-project/format.d.ts +18 -0
- package/dist/soap/legacy-project/format.js +24 -0
- package/dist/soap/legacy-project/import.d.ts +21 -0
- package/dist/soap/legacy-project/import.js +46 -0
- package/dist/soap/legacy-project/index.d.ts +9 -0
- package/dist/soap/legacy-project/index.js +5 -0
- package/dist/soap/legacy-project/map.d.ts +91 -0
- package/dist/soap/legacy-project/map.js +290 -0
- package/dist/soap/legacy-project/model.d.ts +98 -0
- package/dist/soap/legacy-project/model.js +5 -0
- package/dist/soap/legacy-project/parse.d.ts +16 -0
- package/dist/soap/legacy-project/parse.js +325 -0
- package/dist/soap/mime/cid-scan.d.ts +36 -0
- package/dist/soap/mime/cid-scan.js +52 -0
- package/dist/soap/mime/inline-files.d.ts +39 -0
- package/dist/soap/mime/inline-files.js +71 -0
- package/dist/soap/mime/mtom.d.ts +74 -0
- package/dist/soap/mime/mtom.js +134 -0
- package/dist/soap/mime/multipart.d.ts +66 -0
- package/dist/soap/mime/multipart.js +329 -0
- package/dist/soap/mime/send-pipeline.d.ts +61 -0
- package/dist/soap/mime/send-pipeline.js +145 -0
- package/dist/soap/mime/swa.d.ts +45 -0
- package/dist/soap/mime/swa.js +62 -0
- package/dist/soap/mime/types.d.ts +69 -0
- package/dist/soap/mime/types.js +10 -0
- package/dist/soap/namespace-scope.d.ts +32 -0
- package/dist/soap/namespace-scope.js +85 -0
- package/dist/soap/prefixes.d.ts +24 -0
- package/dist/soap/prefixes.js +70 -0
- package/dist/soap/recreate.d.ts +28 -0
- package/dist/soap/recreate.js +168 -0
- package/dist/soap/request-builder.d.ts +63 -0
- package/dist/soap/request-builder.js +161 -0
- package/dist/soap/response-parser.d.ts +29 -0
- package/dist/soap/response-parser.js +71 -0
- package/dist/soap/soap-action.d.ts +31 -0
- package/dist/soap/soap-action.js +28 -0
- package/dist/soap/transforms.d.ts +52 -0
- package/dist/soap/transforms.js +164 -0
- package/dist/types.d.ts +307 -0
- package/dist/types.js +6 -0
- package/dist/validate/index.d.ts +61 -0
- package/dist/validate/index.js +72 -0
- package/dist/validate/schema-file-set.d.ts +51 -0
- package/dist/validate/schema-file-set.js +288 -0
- package/dist/validate/schema-validator.d.ts +53 -0
- package/dist/validate/schema-validator.js +251 -0
- package/dist/validate/soap-structure.d.ts +34 -0
- package/dist/validate/soap-structure.js +255 -0
- package/dist/validate/types.d.ts +47 -0
- package/dist/validate/types.js +8 -0
- package/dist/validate/wsi/assertions/helpers.d.ts +145 -0
- package/dist/validate/wsi/assertions/helpers.js +387 -0
- package/dist/validate/wsi/assertions/index.d.ts +44 -0
- package/dist/validate/wsi/assertions/index.js +77 -0
- package/dist/validate/wsi/assertions/message/helpers.d.ts +63 -0
- package/dist/validate/wsi/assertions/message/helpers.js +168 -0
- package/dist/validate/wsi/assertions/message/index.d.ts +39 -0
- package/dist/validate/wsi/assertions/message/index.js +62 -0
- package/dist/validate/wsi/assertions/message/r1001.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1001.js +38 -0
- package/dist/validate/wsi/assertions/message/r1003.d.ts +14 -0
- package/dist/validate/wsi/assertions/message/r1003.js +45 -0
- package/dist/validate/wsi/assertions/message/r1005.d.ts +12 -0
- package/dist/validate/wsi/assertions/message/r1005.js +37 -0
- package/dist/validate/wsi/assertions/message/r1006.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1006.js +49 -0
- package/dist/validate/wsi/assertions/message/r1007.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1007.js +30 -0
- package/dist/validate/wsi/assertions/message/r1011.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1011.js +33 -0
- package/dist/validate/wsi/assertions/message/r1012.d.ts +13 -0
- package/dist/validate/wsi/assertions/message/r1012.js +37 -0
- package/dist/validate/wsi/assertions/message/r1013.d.ts +9 -0
- package/dist/validate/wsi/assertions/message/r1013.js +42 -0
- package/dist/validate/wsi/assertions/message/r1014.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1014.js +30 -0
- package/dist/validate/wsi/assertions/message/r1015.d.ts +12 -0
- package/dist/validate/wsi/assertions/message/r1015.js +36 -0
- package/dist/validate/wsi/assertions/message/r1017.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1017.js +30 -0
- package/dist/validate/wsi/assertions/message/r1100.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1100.js +39 -0
- package/dist/validate/wsi/assertions/message/r1101.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1101.js +37 -0
- package/dist/validate/wsi/assertions/message/r1102.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1102.js +41 -0
- package/dist/validate/wsi/assertions/message/r1103.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1103.js +28 -0
- package/dist/validate/wsi/assertions/message/r1107.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1107.js +38 -0
- package/dist/validate/wsi/assertions/message/r1109.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1109.js +32 -0
- package/dist/validate/wsi/assertions/message/r1124.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1124.js +31 -0
- package/dist/validate/wsi/assertions/message/r1132.d.ts +9 -0
- package/dist/validate/wsi/assertions/message/r1132.js +23 -0
- package/dist/validate/wsi/assertions/message/r1140.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1140.js +42 -0
- package/dist/validate/wsi/assertions/message/r1141.d.ts +10 -0
- package/dist/validate/wsi/assertions/message/r1141.js +32 -0
- package/dist/validate/wsi/assertions/message/r2113.d.ts +11 -0
- package/dist/validate/wsi/assertions/message/r2113.js +33 -0
- package/dist/validate/wsi/assertions/message/r2211.d.ts +7 -0
- package/dist/validate/wsi/assertions/message/r2211.js +42 -0
- package/dist/validate/wsi/assertions/r2001.d.ts +15 -0
- package/dist/validate/wsi/assertions/r2001.js +47 -0
- package/dist/validate/wsi/assertions/r2002.d.ts +11 -0
- package/dist/validate/wsi/assertions/r2002.js +38 -0
- package/dist/validate/wsi/assertions/r2003.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2003.js +32 -0
- package/dist/validate/wsi/assertions/r2005.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2005.js +40 -0
- package/dist/validate/wsi/assertions/r2101.d.ts +14 -0
- package/dist/validate/wsi/assertions/r2101.js +65 -0
- package/dist/validate/wsi/assertions/r2102.d.ts +10 -0
- package/dist/validate/wsi/assertions/r2102.js +41 -0
- package/dist/validate/wsi/assertions/r2105.d.ts +8 -0
- package/dist/validate/wsi/assertions/r2105.js +39 -0
- package/dist/validate/wsi/assertions/r2110.d.ts +8 -0
- package/dist/validate/wsi/assertions/r2110.js +38 -0
- package/dist/validate/wsi/assertions/r2111.d.ts +6 -0
- package/dist/validate/wsi/assertions/r2111.js +30 -0
- package/dist/validate/wsi/assertions/r2112.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2112.js +35 -0
- package/dist/validate/wsi/assertions/r2201.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2201.js +28 -0
- package/dist/validate/wsi/assertions/r2203.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2203.js +30 -0
- package/dist/validate/wsi/assertions/r2204.d.ts +6 -0
- package/dist/validate/wsi/assertions/r2204.js +29 -0
- package/dist/validate/wsi/assertions/r2205.d.ts +8 -0
- package/dist/validate/wsi/assertions/r2205.js +46 -0
- package/dist/validate/wsi/assertions/r2206.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2206.js +36 -0
- package/dist/validate/wsi/assertions/r2209.d.ts +12 -0
- package/dist/validate/wsi/assertions/r2209.js +37 -0
- package/dist/validate/wsi/assertions/r2210.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2210.js +30 -0
- package/dist/validate/wsi/assertions/r2303.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2303.js +44 -0
- package/dist/validate/wsi/assertions/r2304.d.ts +6 -0
- package/dist/validate/wsi/assertions/r2304.js +32 -0
- package/dist/validate/wsi/assertions/r2401.d.ts +12 -0
- package/dist/validate/wsi/assertions/r2401.js +31 -0
- package/dist/validate/wsi/assertions/r2701.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2701.js +28 -0
- package/dist/validate/wsi/assertions/r2702.d.ts +6 -0
- package/dist/validate/wsi/assertions/r2702.js +26 -0
- package/dist/validate/wsi/assertions/r2705.d.ts +11 -0
- package/dist/validate/wsi/assertions/r2705.js +31 -0
- package/dist/validate/wsi/assertions/r2706.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2706.js +29 -0
- package/dist/validate/wsi/assertions/r2710.d.ts +13 -0
- package/dist/validate/wsi/assertions/r2710.js +37 -0
- package/dist/validate/wsi/assertions/r2716.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2716.js +29 -0
- package/dist/validate/wsi/assertions/r2717.d.ts +9 -0
- package/dist/validate/wsi/assertions/r2717.js +31 -0
- package/dist/validate/wsi/assertions/r2718.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2718.js +41 -0
- package/dist/validate/wsi/assertions/r2720.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2720.js +29 -0
- package/dist/validate/wsi/assertions/r2721.d.ts +6 -0
- package/dist/validate/wsi/assertions/r2721.js +27 -0
- package/dist/validate/wsi/assertions/r2722.d.ts +6 -0
- package/dist/validate/wsi/assertions/r2722.js +29 -0
- package/dist/validate/wsi/assertions/r2801.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2801.js +39 -0
- package/dist/validate/wsi/assertions/r2803.d.ts +7 -0
- package/dist/validate/wsi/assertions/r2803.js +29 -0
- package/dist/validate/wsi/docs.d.ts +29 -0
- package/dist/validate/wsi/docs.js +167 -0
- package/dist/validate/wsi/index.d.ts +16 -0
- package/dist/validate/wsi/index.js +11 -0
- package/dist/validate/wsi/report-html.d.ts +36 -0
- package/dist/validate/wsi/report-html.js +135 -0
- package/dist/validate/wsi/run-message.d.ts +50 -0
- package/dist/validate/wsi/run-message.js +190 -0
- package/dist/validate/wsi/run-wsdl.d.ts +48 -0
- package/dist/validate/wsi/run-wsdl.js +99 -0
- package/dist/validate/wsi/types.d.ts +173 -0
- package/dist/validate/wsi/types.js +17 -0
- package/dist/workspace/commit-message.d.ts +47 -0
- package/dist/workspace/commit-message.js +195 -0
- package/dist/workspace/environments.d.ts +79 -0
- package/dist/workspace/environments.js +115 -0
- package/dist/workspace/index.d.ts +28 -0
- package/dist/workspace/index.js +19 -0
- package/dist/workspace/load.d.ts +45 -0
- package/dist/workspace/load.js +155 -0
- package/dist/workspace/local-state.d.ts +37 -0
- package/dist/workspace/local-state.js +59 -0
- package/dist/workspace/migrate.d.ts +38 -0
- package/dist/workspace/migrate.js +50 -0
- package/dist/workspace/model.d.ts +86 -0
- package/dist/workspace/model.js +54 -0
- package/dist/workspace/paths.d.ts +64 -0
- package/dist/workspace/paths.js +97 -0
- package/dist/workspace/reidentify.d.ts +22 -0
- package/dist/workspace/reidentify.js +122 -0
- package/dist/workspace/save.d.ts +31 -0
- package/dist/workspace/save.js +84 -0
- package/dist/workspace/schema.d.ts +93 -0
- package/dist/workspace/schema.js +115 -0
- package/dist/workspace/serialize.d.ts +24 -0
- package/dist/workspace/serialize.js +60 -0
- package/dist/workspace/share.d.ts +52 -0
- package/dist/workspace/share.js +89 -0
- package/dist/ws/browser.d.ts +13 -0
- package/dist/ws/browser.js +11 -0
- package/dist/ws/call.d.ts +53 -0
- package/dist/ws/call.js +106 -0
- package/dist/ws/command.d.ts +19 -0
- package/dist/ws/command.js +28 -0
- package/dist/ws/expand.d.ts +38 -0
- package/dist/ws/expand.js +76 -0
- package/dist/ws/model.d.ts +191 -0
- package/dist/ws/model.js +83 -0
- package/dist/ws/pretty.d.ts +12 -0
- package/dist/ws/pretty.js +25 -0
- package/dist/ws/session.d.ts +50 -0
- package/dist/ws/session.js +333 -0
- package/dist/ws/shape.d.ts +18 -0
- package/dist/ws/shape.js +28 -0
- package/dist/ws/transcript.d.ts +14 -0
- package/dist/ws/transcript.js +29 -0
- package/dist/ws/url.d.ts +3 -0
- package/dist/ws/url.js +44 -0
- package/dist/wsa/headers.d.ts +78 -0
- package/dist/wsa/headers.js +244 -0
- package/dist/wsa/model.d.ts +66 -0
- package/dist/wsa/model.js +52 -0
- package/dist/wsa/policy-detect.d.ts +81 -0
- package/dist/wsa/policy-detect.js +245 -0
- package/dist/wsdl/cache-naming.d.ts +39 -0
- package/dist/wsdl/cache-naming.js +90 -0
- package/dist/wsdl/cache.d.ts +48 -0
- package/dist/wsdl/cache.js +141 -0
- package/dist/wsdl/docs-generator.d.ts +47 -0
- package/dist/wsdl/docs-generator.js +439 -0
- package/dist/wsdl/dom-utils.d.ts +15 -0
- package/dist/wsdl/dom-utils.js +50 -0
- package/dist/wsdl/export-definition.d.ts +38 -0
- package/dist/wsdl/export-definition.js +100 -0
- package/dist/wsdl/fetch.d.ts +13 -0
- package/dist/wsdl/fetch.js +60 -0
- package/dist/wsdl/merge.d.ts +17 -0
- package/dist/wsdl/merge.js +57 -0
- package/dist/wsdl/model.d.ts +176 -0
- package/dist/wsdl/model.js +17 -0
- package/dist/wsdl/parse-binding.d.ts +6 -0
- package/dist/wsdl/parse-binding.js +150 -0
- package/dist/wsdl/parse-wsdl.d.ts +47 -0
- package/dist/wsdl/parse-wsdl.js +161 -0
- package/dist/wsdl/qname.d.ts +28 -0
- package/dist/wsdl/qname.js +41 -0
- package/dist/wsdl/ref-policy.d.ts +54 -0
- package/dist/wsdl/ref-policy.js +87 -0
- package/dist/wsdl/resolver.d.ts +81 -0
- package/dist/wsdl/resolver.js +276 -0
- package/dist/wsdl/update-definition.d.ts +106 -0
- package/dist/wsdl/update-definition.js +314 -0
- package/dist/wss/apply.d.ts +40 -0
- package/dist/wss/apply.js +212 -0
- package/dist/wss/c14n-prefixes.d.ts +27 -0
- package/dist/wss/c14n-prefixes.js +95 -0
- package/dist/wss/incoming/decrypt.d.ts +35 -0
- package/dist/wss/incoming/decrypt.js +57 -0
- package/dist/wss/incoming/index.d.ts +56 -0
- package/dist/wss/incoming/index.js +189 -0
- package/dist/wss/incoming/verify.d.ts +74 -0
- package/dist/wss/incoming/verify.js +440 -0
- package/dist/wss/key-identifiers.d.ts +76 -0
- package/dist/wss/key-identifiers.js +139 -0
- package/dist/wss/keystore/certificate.d.ts +45 -0
- package/dist/wss/keystore/certificate.js +134 -0
- package/dist/wss/keystore/index.d.ts +50 -0
- package/dist/wss/keystore/index.js +80 -0
- package/dist/wss/keystore/model.d.ts +83 -0
- package/dist/wss/keystore/model.js +27 -0
- package/dist/wss/keystore/pem.d.ts +21 -0
- package/dist/wss/keystore/pem.js +140 -0
- package/dist/wss/keystore/pkcs12.d.ts +21 -0
- package/dist/wss/keystore/pkcs12.js +125 -0
- package/dist/wss/model.d.ts +160 -0
- package/dist/wss/model.js +37 -0
- package/dist/wss/outgoing/encryption.d.ts +76 -0
- package/dist/wss/outgoing/encryption.js +618 -0
- package/dist/wss/outgoing/signature.d.ts +73 -0
- package/dist/wss/outgoing/signature.js +239 -0
- package/dist/wss/outgoing/timestamp.d.ts +29 -0
- package/dist/wss/outgoing/timestamp.js +39 -0
- package/dist/wss/outgoing/username-token.d.ts +36 -0
- package/dist/wss/outgoing/username-token.js +68 -0
- package/dist/wss/security-header.d.ts +31 -0
- package/dist/wss/security-header.js +83 -0
- package/dist/xml/index.d.ts +7 -0
- package/dist/xml/index.js +7 -0
- package/dist/xml/namespaces.d.ts +36 -0
- package/dist/xml/namespaces.js +60 -0
- package/dist/xml/parse.d.ts +79 -0
- package/dist/xml/parse.js +109 -0
- package/dist/xml/positions.d.ts +26 -0
- package/dist/xml/positions.js +71 -0
- package/dist/xml/pretty.d.ts +37 -0
- package/dist/xml/pretty.js +137 -0
- package/dist/xml/serialize.d.ts +6 -0
- package/dist/xml/serialize.js +8 -0
- package/dist/xml/tolerant-tree.d.ts +56 -0
- package/dist/xml/tolerant-tree.js +134 -0
- package/dist/xpath/evaluate-async.d.ts +31 -0
- package/dist/xpath/evaluate-async.js +81 -0
- package/dist/xpath/evaluate.d.ts +98 -0
- package/dist/xpath/evaluate.js +340 -0
- package/dist/xpath/jsonpath.d.ts +40 -0
- package/dist/xpath/jsonpath.js +109 -0
- package/dist/xpath/namespaces.d.ts +29 -0
- package/dist/xpath/namespaces.js +101 -0
- package/dist/xpath/worker.d.ts +7 -0
- package/dist/xpath/worker.js +26 -0
- package/dist/xsd/builtins.d.ts +36 -0
- package/dist/xsd/builtins.js +108 -0
- package/dist/xsd/check-references.d.ts +25 -0
- package/dist/xsd/check-references.js +145 -0
- package/dist/xsd/form-edits.d.ts +57 -0
- package/dist/xsd/form-edits.js +153 -0
- package/dist/xsd/form-model.d.ts +153 -0
- package/dist/xsd/form-model.js +691 -0
- package/dist/xsd/locate.d.ts +42 -0
- package/dist/xsd/locate.js +249 -0
- package/dist/xsd/model.d.ts +249 -0
- package/dist/xsd/model.js +1 -0
- package/dist/xsd/parse-particles.d.ts +48 -0
- package/dist/xsd/parse-particles.js +320 -0
- package/dist/xsd/parse-schema.d.ts +21 -0
- package/dist/xsd/parse-schema.js +143 -0
- package/dist/xsd/resolve-content.d.ts +18 -0
- package/dist/xsd/resolve-content.js +242 -0
- package/dist/xsd/sample-generator.d.ts +51 -0
- package/dist/xsd/sample-generator.js +291 -0
- package/dist/xsd/sample-types.d.ts +21 -0
- package/dist/xsd/sample-types.js +69 -0
- package/dist/xsd/sample-values.d.ts +54 -0
- package/dist/xsd/sample-values.js +267 -0
- package/dist/xsd/schema-set.d.ts +51 -0
- package/dist/xsd/schema-set.js +203 -0
- package/dist/xsd/xml-scan.d.ts +64 -0
- package/dist/xsd/xml-scan.js +286 -0
- package/dist/xsd/xml-writer.d.ts +56 -0
- package/dist/xsd/xml-writer.js +103 -0
- package/package.json +69 -0
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves an `EndpointAuth` (which only ever carries a `passwordRef`) into the plaintext shape
|
|
3
|
+
* the engine's `importDefinition`/send path expects. Kept pure — the secret getter is injected —
|
|
4
|
+
* so it needs no Electron and is trivially testable without a real `SecretStore`.
|
|
5
|
+
*/
|
|
6
|
+
import { WirebenchError } from '../errors.js';
|
|
7
|
+
/**
|
|
8
|
+
* The message for a `secret-missing` error: in a shared workspace, secret refs travel with the
|
|
9
|
+
* project but values stay in each member's local keychain-backed store, so a teammate who joins
|
|
10
|
+
* sees a ref with nothing behind it on their machine. Named by username when one is known,
|
|
11
|
+
* otherwise a generic fallback — either way it tells the user where to act instead of merely
|
|
12
|
+
* naming the dangling ref.
|
|
13
|
+
*/
|
|
14
|
+
export function secretMissingMessage(username) {
|
|
15
|
+
return username !== undefined
|
|
16
|
+
? `The password for "${username}" is not on this machine — enter it in the authentication settings.`
|
|
17
|
+
: 'A saved password is not on this machine — enter it in the authentication settings.';
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Looks up `auth.passwordRef` via `getSecret` and returns the resolved auth. Returns `undefined`
|
|
21
|
+
* when `auth` itself is `undefined` (nothing to resolve). Throws a `secret-missing`
|
|
22
|
+
* `WirebenchError` when a `passwordRef` is set but the store has no value for it — a dangling
|
|
23
|
+
* reference must fail loudly rather than silently sending no credentials.
|
|
24
|
+
*/
|
|
25
|
+
export async function resolveEndpointAuth(auth, getSecret) {
|
|
26
|
+
if (!auth) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const resolved = {
|
|
30
|
+
type: auth.type,
|
|
31
|
+
...(auth.username !== undefined ? { username: auth.username } : {}),
|
|
32
|
+
...(auth.domain !== undefined ? { domain: auth.domain } : {}),
|
|
33
|
+
...(auth.workstation !== undefined ? { workstation: auth.workstation } : {}),
|
|
34
|
+
...(auth.preemptive !== undefined ? { preemptive: auth.preemptive } : {}),
|
|
35
|
+
};
|
|
36
|
+
if (auth.passwordRef === undefined) {
|
|
37
|
+
return resolved;
|
|
38
|
+
}
|
|
39
|
+
const password = await getSecret(auth.passwordRef);
|
|
40
|
+
if (password === undefined) {
|
|
41
|
+
throw new WirebenchError('secret-missing', secretMissingMessage(auth.username), {
|
|
42
|
+
details: { ref: auth.passwordRef },
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
return { ...resolved, password };
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Converts resolved endpoint credentials into the engine's `SendAuth`, or `undefined` when there
|
|
49
|
+
* is nothing to send (no auth configured, `type: 'none'`, or an incomplete pair). Basic defaults
|
|
50
|
+
* to preemptive; a non-preemptive send waits for the 401 challenge. Shared by every host so a
|
|
51
|
+
* SOAP request authenticates the same way from the app and from a pipeline.
|
|
52
|
+
*/
|
|
53
|
+
export function toSendAuth(auth) {
|
|
54
|
+
if (auth === undefined || auth.type === 'none') {
|
|
55
|
+
return undefined;
|
|
56
|
+
}
|
|
57
|
+
if (auth.username === undefined || auth.password === undefined) {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
if (auth.type === 'ntlm') {
|
|
61
|
+
return {
|
|
62
|
+
type: 'ntlm',
|
|
63
|
+
username: auth.username,
|
|
64
|
+
password: auth.password,
|
|
65
|
+
...(auth.domain !== undefined ? { domain: auth.domain } : {}),
|
|
66
|
+
...(auth.workstation !== undefined ? { workstation: auth.workstation } : {}),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return { type: 'basic', username: auth.username, password: auth.password, preemptive: auth.preemptive !== false };
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Resolves any {@link AuthConfig} into the engine's `SendAuth` — the shape that carries values
|
|
73
|
+
* rather than references.
|
|
74
|
+
*
|
|
75
|
+
* The token-bearing schemes are resolved here; OAuth2 is not, because obtaining a token is a
|
|
76
|
+
* network exchange with its own cache and its own browser flow. The caller passes `accessToken`
|
|
77
|
+
* for an OAuth2 configuration, having got it from `oauth2.ts`.
|
|
78
|
+
*
|
|
79
|
+
* `inherit` and `none` resolve to no credentials at all: `inherit` should already have been
|
|
80
|
+
* resolved by `resolveAuthChain` before this is called, and reaching here means nothing in the
|
|
81
|
+
* chain configured anything.
|
|
82
|
+
*
|
|
83
|
+
* @throws WirebenchError `secret-missing` when a reference is set but the store has no value for
|
|
84
|
+
* it — a dangling reference must fail loudly rather than quietly sending no credentials.
|
|
85
|
+
*/
|
|
86
|
+
export async function resolveAuthConfig(auth, getSecret, options = {}) {
|
|
87
|
+
if (auth === undefined) {
|
|
88
|
+
return undefined;
|
|
89
|
+
}
|
|
90
|
+
switch (auth.type) {
|
|
91
|
+
case 'basic':
|
|
92
|
+
case 'ntlm': {
|
|
93
|
+
const resolved = await resolveEndpointAuth(auth, getSecret);
|
|
94
|
+
if (resolved === undefined || resolved.type === 'none') {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
const password = resolved.password ?? '';
|
|
98
|
+
return resolved.type === 'basic'
|
|
99
|
+
? { type: 'basic', username: resolved.username ?? '', password, preemptive: resolved.preemptive ?? true }
|
|
100
|
+
: {
|
|
101
|
+
type: 'ntlm',
|
|
102
|
+
username: resolved.username ?? '',
|
|
103
|
+
password,
|
|
104
|
+
...(resolved.domain !== undefined ? { domain: resolved.domain } : {}),
|
|
105
|
+
...(resolved.workstation !== undefined ? { workstation: resolved.workstation } : {}),
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
case 'bearer': {
|
|
109
|
+
const token = await requireSecret(auth.tokenRef, getSecret);
|
|
110
|
+
return token === undefined
|
|
111
|
+
? undefined
|
|
112
|
+
: { type: 'bearer', token, ...(auth.scheme !== undefined ? { scheme: auth.scheme } : {}) };
|
|
113
|
+
}
|
|
114
|
+
case 'api-key': {
|
|
115
|
+
const value = await requireSecret(auth.valueRef, getSecret);
|
|
116
|
+
return value === undefined ? undefined : { type: 'api-key', name: auth.name, value, in: auth.in };
|
|
117
|
+
}
|
|
118
|
+
case 'oauth2':
|
|
119
|
+
return options.accessToken === undefined ? undefined : { type: 'oauth2', accessToken: options.accessToken };
|
|
120
|
+
default:
|
|
121
|
+
return undefined;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/** One reference resolved, or `undefined` when the scheme has none configured yet. */
|
|
125
|
+
async function requireSecret(ref, getSecret) {
|
|
126
|
+
if (ref === undefined || ref === '') {
|
|
127
|
+
return undefined;
|
|
128
|
+
}
|
|
129
|
+
const value = await getSecret(ref);
|
|
130
|
+
if (value === undefined) {
|
|
131
|
+
throw new WirebenchError('secret-missing', `Secret ${ref} was not found in the secret store.`, {
|
|
132
|
+
details: { ref },
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
return value;
|
|
136
|
+
}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turns a saved request plus the settings around it into the {@link SoapSendInput} the
|
|
3
|
+
* transport actually receives.
|
|
4
|
+
*
|
|
5
|
+
* This is the single place the three layers of configuration meet, and the precedence between
|
|
6
|
+
* them is fixed here rather than in the desktop app: the request's own property wins, then the
|
|
7
|
+
* project's setting, then the user's preference (which is also the engine default). A property
|
|
8
|
+
* left unset in the request is therefore never "off" — it is "inherit".
|
|
9
|
+
*/
|
|
10
|
+
import type { Preferences } from './project/preferences.js';
|
|
11
|
+
import type { Attachment, HeaderEntry, ProjectSettings, RequestProperties } from './project/model.js';
|
|
12
|
+
import type { AttachmentResolver } from './soap/mime/types.js';
|
|
13
|
+
import type { SendAuth, SoapSendInput } from './types.js';
|
|
14
|
+
import type { ProxyOptions, TlsOptions } from './http/types.js';
|
|
15
|
+
import type { FileResolver } from './rest/body.js';
|
|
16
|
+
import type { KeyValueEntry, RestBody, RestMethod, RestRequestSettings } from './rest/model.js';
|
|
17
|
+
import type { Cookie } from './rest/response.js';
|
|
18
|
+
import type { RestSendInput } from './rest/send.js';
|
|
19
|
+
import type { GrpcMethodKind, GrpcRequestSettings } from './grpc/model.js';
|
|
20
|
+
import type { GrpcSendInput } from './grpc/send.js';
|
|
21
|
+
/** The parts of a request {@link toSendInput} reads. */
|
|
22
|
+
export interface SendRequestInput {
|
|
23
|
+
readonly properties: RequestProperties;
|
|
24
|
+
readonly soapVersion: '1.1' | '1.2';
|
|
25
|
+
readonly soapAction?: string;
|
|
26
|
+
readonly headers: readonly HeaderEntry[];
|
|
27
|
+
readonly envelopeXml: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* How the send is to read attachment and inline-file bytes. The engine never opens a file
|
|
31
|
+
* on its own, so without this the request's attachments (and its inline-file property) are
|
|
32
|
+
* left inert; the desktop main process supplies `createFileAttachmentResolver`.
|
|
33
|
+
*/
|
|
34
|
+
export interface AttachmentResolvers {
|
|
35
|
+
readonly resolver: AttachmentResolver;
|
|
36
|
+
/** Reads one file for "Enable Inline Files". */
|
|
37
|
+
readonly resolveFile?: (path: string) => Promise<Uint8Array>;
|
|
38
|
+
/** The project's resource root, for relative inline-file references. */
|
|
39
|
+
readonly resourceRoot?: string;
|
|
40
|
+
}
|
|
41
|
+
/** Everything {@link toSendInput} needs beyond the request itself. */
|
|
42
|
+
export interface ToSendInputArgs {
|
|
43
|
+
readonly request: SendRequestInput;
|
|
44
|
+
/** The already-resolved endpoint URL (environment overrides applied). */
|
|
45
|
+
readonly endpoint: string;
|
|
46
|
+
readonly preferences?: Preferences;
|
|
47
|
+
readonly projectSettings?: Pick<ProjectSettings, 'defaultTimeoutMs'>;
|
|
48
|
+
/** The request's attachments; only acted on together with {@link attachmentResolvers}. */
|
|
49
|
+
readonly attachments?: readonly Attachment[];
|
|
50
|
+
readonly attachmentResolvers?: AttachmentResolvers;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Builds the send input for one request.
|
|
54
|
+
*
|
|
55
|
+
* Timeout precedence is request > project > preference. The TLS floor (`ssl.minVersion`) and
|
|
56
|
+
* the HTTP/2 offer come from preferences alone. Headers are the request's own, plus a
|
|
57
|
+
* `User-Agent` from preferences when the request does not set one, plus `Accept-Encoding` when
|
|
58
|
+
* response compression is enabled and `Connection: close` when connection reuse is disabled.
|
|
59
|
+
* Request-body gzip is requested via `compressBody`; the transport does the compressing so the
|
|
60
|
+
* `Content-Length` it computes describes the bytes that are actually sent.
|
|
61
|
+
*
|
|
62
|
+
* The MTOM/attachment properties are mapped only when `attachmentResolvers` says how bytes
|
|
63
|
+
* can be read; without a resolver there is nothing the transport could do with them, and a
|
|
64
|
+
* half-configured send would silently drop parts.
|
|
65
|
+
*
|
|
66
|
+
* @param args the request, its resolved endpoint, and the preferences/project settings around it
|
|
67
|
+
*/
|
|
68
|
+
export declare function toSendInput(args: ToSendInputArgs): SoapSendInput;
|
|
69
|
+
/** The parts of a REST request {@link toRestSendInput} reads. */
|
|
70
|
+
export interface RestSendRequestInput {
|
|
71
|
+
readonly method: RestMethod;
|
|
72
|
+
readonly url: string;
|
|
73
|
+
readonly pathParams: readonly KeyValueEntry[];
|
|
74
|
+
readonly query: readonly KeyValueEntry[];
|
|
75
|
+
readonly headers: readonly KeyValueEntry[];
|
|
76
|
+
readonly body: RestBody;
|
|
77
|
+
readonly settings: RestRequestSettings;
|
|
78
|
+
}
|
|
79
|
+
/** Everything {@link toRestSendInput} needs beyond the request itself. */
|
|
80
|
+
export interface ToRestSendInputArgs {
|
|
81
|
+
readonly request: RestSendRequestInput;
|
|
82
|
+
/** The API's effective base URL, environment override applied and properties expanded. */
|
|
83
|
+
readonly baseUrl: string;
|
|
84
|
+
/** The API's own settings, which a request inherits where it sets nothing. */
|
|
85
|
+
readonly apiSettings?: RestRequestSettings;
|
|
86
|
+
readonly preferences?: Preferences;
|
|
87
|
+
readonly projectSettings?: Pick<ProjectSettings, 'defaultTimeoutMs'>;
|
|
88
|
+
/** Resolved credentials; the host turns `secretRef`s into values and tokens into `oauth2`. */
|
|
89
|
+
readonly auth?: SendAuth;
|
|
90
|
+
/** Cookies already matched against the URL, when the request asks for them. */
|
|
91
|
+
readonly cookies?: readonly Cookie[];
|
|
92
|
+
/** How a multipart file part or a binary body is read. */
|
|
93
|
+
readonly resolveFile?: FileResolver;
|
|
94
|
+
readonly tls?: TlsOptions;
|
|
95
|
+
readonly proxy?: ProxyOptions;
|
|
96
|
+
readonly signal?: AbortSignal;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Builds the send input for one REST request.
|
|
100
|
+
*
|
|
101
|
+
* Precedence is request → API → project → preference, the same ladder a SOAP request's properties
|
|
102
|
+
* climb, and for the same reason: a setting the request leaves unset means *inherit*, never *off*.
|
|
103
|
+
* The headers the host adds on the request's behalf — `User-Agent`, `Accept-Encoding`, `Connection`,
|
|
104
|
+
* a default `Accept` — are passed separately from the request's own, so `rest/send.ts` can let the
|
|
105
|
+
* user's typed header win without having to guess which came from where.
|
|
106
|
+
*/
|
|
107
|
+
export declare function toRestSendInput(args: ToRestSendInputArgs): RestSendInput;
|
|
108
|
+
/** The parts of a gRPC request {@link toGrpcSendInput} reads. */
|
|
109
|
+
export interface GrpcSendRequestInput {
|
|
110
|
+
readonly service: string;
|
|
111
|
+
readonly method: string;
|
|
112
|
+
readonly methodKind: GrpcMethodKind;
|
|
113
|
+
readonly metadata: readonly KeyValueEntry[];
|
|
114
|
+
readonly settings: GrpcRequestSettings;
|
|
115
|
+
}
|
|
116
|
+
/** Everything {@link toGrpcSendInput} needs beyond the request itself. */
|
|
117
|
+
export interface ToGrpcSendInputArgs {
|
|
118
|
+
readonly request: GrpcSendRequestInput;
|
|
119
|
+
/** The API's effective target, environment override applied and properties expanded. */
|
|
120
|
+
readonly target: string;
|
|
121
|
+
readonly tls: boolean;
|
|
122
|
+
/** The API's own metadata rows, which a request row of the same key overrides. */
|
|
123
|
+
readonly apiMetadata?: readonly KeyValueEntry[];
|
|
124
|
+
/** The API's own settings, which a request inherits where it sets nothing. */
|
|
125
|
+
readonly apiSettings?: GrpcRequestSettings;
|
|
126
|
+
readonly preferences?: Preferences;
|
|
127
|
+
readonly projectSettings?: Pick<ProjectSettings, 'defaultTimeoutMs'>;
|
|
128
|
+
/** Resolved credentials; the host turns `secretRef`s into values and tokens into `oauth2`. */
|
|
129
|
+
readonly auth?: SendAuth;
|
|
130
|
+
readonly tlsOptions?: TlsOptions;
|
|
131
|
+
readonly signal?: AbortSignal;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Builds the transport input for one gRPC call, everything but the encoded messages.
|
|
135
|
+
*
|
|
136
|
+
* The same request → API → project → preference ladder as a REST request, and the same TLS rule:
|
|
137
|
+
* the floor comes from preferences, and the host merges trust anchors, the client identity and the
|
|
138
|
+
* per-request trust decision on top. Metadata rows are the API's first and then the request's, so
|
|
139
|
+
* a repeated key resolves to the request's value on the wire.
|
|
140
|
+
*/
|
|
141
|
+
export declare function toGrpcSendInput(args: ToGrpcSendInputArgs): Omit<GrpcSendInput, 'messages'>;
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turns a saved request plus the settings around it into the {@link SoapSendInput} the
|
|
3
|
+
* transport actually receives.
|
|
4
|
+
*
|
|
5
|
+
* This is the single place the three layers of configuration meet, and the precedence between
|
|
6
|
+
* them is fixed here rather than in the desktop app: the request's own property wins, then the
|
|
7
|
+
* project's setting, then the user's preference (which is also the engine default). A property
|
|
8
|
+
* left unset in the request is therefore never "off" — it is "inherit".
|
|
9
|
+
*/
|
|
10
|
+
import { DEFAULT_PREFERENCES } from './project/preferences.js';
|
|
11
|
+
import { soapActionHeaders } from './soap/soap-action.js';
|
|
12
|
+
import { prettyPrint, removeEmptyContent, stripWhitespaces } from './soap/transforms.js';
|
|
13
|
+
/** Case-insensitive lookup over a header map. */
|
|
14
|
+
function hasHeader(headers, name) {
|
|
15
|
+
const lower = name.toLowerCase();
|
|
16
|
+
return Object.keys(headers).some((key) => key.toLowerCase() === lower);
|
|
17
|
+
}
|
|
18
|
+
/** Whether `encoding` is (a spelling of) the transport's own default, so nothing needs reflecting. */
|
|
19
|
+
function isDefaultEncoding(encoding) {
|
|
20
|
+
const normalized = encoding.trim().toLowerCase();
|
|
21
|
+
return normalized.length === 0 || normalized === 'utf-8' || normalized === 'utf8';
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Applies the envelope transforms a request asks for, in a fixed order: content removal
|
|
25
|
+
* first (so whitespace and formatting decisions see the final element set), then whitespace
|
|
26
|
+
* stripping, then pretty printing. Entitizing is not here — it happens during property
|
|
27
|
+
* expansion; see `soap/transforms.ts`.
|
|
28
|
+
*/
|
|
29
|
+
function transformEnvelope(xml, properties, indentWidth) {
|
|
30
|
+
let out = xml;
|
|
31
|
+
if (properties.removeEmptyContent) {
|
|
32
|
+
out = removeEmptyContent(out);
|
|
33
|
+
}
|
|
34
|
+
if (properties.stripWhitespaces) {
|
|
35
|
+
out = stripWhitespaces(out);
|
|
36
|
+
}
|
|
37
|
+
if (properties.prettyPrint) {
|
|
38
|
+
out = prettyPrint(out, indentWidth);
|
|
39
|
+
}
|
|
40
|
+
return out;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Builds the send input for one request.
|
|
44
|
+
*
|
|
45
|
+
* Timeout precedence is request > project > preference. The TLS floor (`ssl.minVersion`) and
|
|
46
|
+
* the HTTP/2 offer come from preferences alone. Headers are the request's own, plus a
|
|
47
|
+
* `User-Agent` from preferences when the request does not set one, plus `Accept-Encoding` when
|
|
48
|
+
* response compression is enabled and `Connection: close` when connection reuse is disabled.
|
|
49
|
+
* Request-body gzip is requested via `compressBody`; the transport does the compressing so the
|
|
50
|
+
* `Content-Length` it computes describes the bytes that are actually sent.
|
|
51
|
+
*
|
|
52
|
+
* The MTOM/attachment properties are mapped only when `attachmentResolvers` says how bytes
|
|
53
|
+
* can be read; without a resolver there is nothing the transport could do with them, and a
|
|
54
|
+
* half-configured send would silently drop parts.
|
|
55
|
+
*
|
|
56
|
+
* @param args the request, its resolved endpoint, and the preferences/project settings around it
|
|
57
|
+
*/
|
|
58
|
+
export function toSendInput(args) {
|
|
59
|
+
const preferences = args.preferences ?? DEFAULT_PREFERENCES;
|
|
60
|
+
const { properties } = args.request;
|
|
61
|
+
const headers = {};
|
|
62
|
+
for (const header of args.request.headers) {
|
|
63
|
+
headers[header.name] = header.value;
|
|
64
|
+
}
|
|
65
|
+
if (!hasHeader(headers, 'user-agent') && preferences.http.userAgent.length > 0) {
|
|
66
|
+
headers['User-Agent'] = preferences.http.userAgent;
|
|
67
|
+
}
|
|
68
|
+
if (preferences.http.responseCompression && !hasHeader(headers, 'accept-encoding')) {
|
|
69
|
+
headers['Accept-Encoding'] = 'gzip, deflate';
|
|
70
|
+
}
|
|
71
|
+
if (preferences.http.closeConnections && !hasHeader(headers, 'connection')) {
|
|
72
|
+
headers['Connection'] = 'close';
|
|
73
|
+
}
|
|
74
|
+
// A non-default `encoding` property changes what bytes actually go on the wire (see
|
|
75
|
+
// `encodeBody` in `send.ts`), so the `Content-Type` charset must say the same thing — a
|
|
76
|
+
// request sent as ISO-8859-1 but declared UTF-8 would decode wrong at the far end. This is
|
|
77
|
+
// skipped for the default encoding so a request with no opinion keeps getting the transport's
|
|
78
|
+
// own `UTF-8` charset, computed downstream exactly as it always has been.
|
|
79
|
+
if (!isDefaultEncoding(properties.encoding) && !hasHeader(headers, 'content-type')) {
|
|
80
|
+
headers['Content-Type'] = soapActionHeaders(args.request.soapVersion, args.request.soapAction, {
|
|
81
|
+
...(properties.skipSoapAction !== undefined ? { skipSoapAction: properties.skipSoapAction } : {}),
|
|
82
|
+
charset: properties.encoding,
|
|
83
|
+
}).contentType;
|
|
84
|
+
}
|
|
85
|
+
const timeoutMs = properties.timeoutMs ?? args.projectSettings?.defaultTimeoutMs ?? preferences.http.socketTimeoutMs;
|
|
86
|
+
const resolvers = args.attachmentResolvers;
|
|
87
|
+
const attachmentOptions = resolvers === undefined
|
|
88
|
+
? undefined
|
|
89
|
+
: {
|
|
90
|
+
enableMtom: properties.enableMtom,
|
|
91
|
+
forceMtom: properties.forceMtom,
|
|
92
|
+
disableMultiparts: properties.disableMultiparts,
|
|
93
|
+
encodeAttachments: properties.encodeAttachments,
|
|
94
|
+
enableInlineFiles: properties.enableInlineFiles,
|
|
95
|
+
inlineResponseAttachments: properties.inlineResponseAttachments,
|
|
96
|
+
expandMtomAttachments: properties.expandMtomAttachments,
|
|
97
|
+
resolver: resolvers.resolver,
|
|
98
|
+
...(resolvers.resolveFile !== undefined ? { resolveFile: resolvers.resolveFile } : {}),
|
|
99
|
+
...(resolvers.resourceRoot !== undefined ? { resourceRoot: resolvers.resourceRoot } : {}),
|
|
100
|
+
};
|
|
101
|
+
return {
|
|
102
|
+
endpoint: args.endpoint,
|
|
103
|
+
envelopeXml: transformEnvelope(args.request.envelopeXml, properties, preferences.editor.tabSize),
|
|
104
|
+
soapVersion: args.request.soapVersion,
|
|
105
|
+
...(args.request.soapAction !== undefined ? { soapAction: args.request.soapAction } : {}),
|
|
106
|
+
headers,
|
|
107
|
+
timeoutMs,
|
|
108
|
+
encoding: properties.encoding,
|
|
109
|
+
followRedirects: properties.followRedirects,
|
|
110
|
+
skipSoapAction: properties.skipSoapAction,
|
|
111
|
+
...(properties.maxSizeBytes !== undefined ? { maxSizeBytes: properties.maxSizeBytes } : {}),
|
|
112
|
+
...(properties.bindAddress !== undefined && properties.bindAddress.length > 0
|
|
113
|
+
? { localAddress: properties.bindAddress }
|
|
114
|
+
: {}),
|
|
115
|
+
...(preferences.http.requestCompression === 'gzip' ? { compressBody: 'gzip' } : {}),
|
|
116
|
+
...(preferences.http.allowH2 ? { allowH2: true } : {}),
|
|
117
|
+
// The minimum protocol version is a floor the user sets once; everything else in `tls`
|
|
118
|
+
// (trust anchors, the client identity, a per-endpoint trust decision) is resolved in the
|
|
119
|
+
// desktop's main process, which reads files and secrets, and merged onto this.
|
|
120
|
+
tls: { minVersion: preferences.ssl.minVersion },
|
|
121
|
+
...(properties.entitizeProperties ? { entitize: true } : {}),
|
|
122
|
+
...(attachmentOptions !== undefined ? { attachments: args.attachments ?? [], attachmentOptions } : {}),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
/** The first of `values` that is not `undefined`, which is what "inherit" means. */
|
|
126
|
+
function inherited(...values) {
|
|
127
|
+
return values.find((value) => value !== undefined);
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* Builds the send input for one REST request.
|
|
131
|
+
*
|
|
132
|
+
* Precedence is request → API → project → preference, the same ladder a SOAP request's properties
|
|
133
|
+
* climb, and for the same reason: a setting the request leaves unset means *inherit*, never *off*.
|
|
134
|
+
* The headers the host adds on the request's behalf — `User-Agent`, `Accept-Encoding`, `Connection`,
|
|
135
|
+
* a default `Accept` — are passed separately from the request's own, so `rest/send.ts` can let the
|
|
136
|
+
* user's typed header win without having to guess which came from where.
|
|
137
|
+
*/
|
|
138
|
+
export function toRestSendInput(args) {
|
|
139
|
+
const preferences = args.preferences ?? DEFAULT_PREFERENCES;
|
|
140
|
+
const request = args.request;
|
|
141
|
+
const api = args.apiSettings ?? {};
|
|
142
|
+
const defaultHeaders = {};
|
|
143
|
+
if (preferences.http.userAgent.length > 0) {
|
|
144
|
+
defaultHeaders['User-Agent'] = preferences.http.userAgent;
|
|
145
|
+
}
|
|
146
|
+
if (preferences.http.responseCompression) {
|
|
147
|
+
defaultHeaders['Accept-Encoding'] = 'gzip, deflate, br';
|
|
148
|
+
}
|
|
149
|
+
if (preferences.http.closeConnections) {
|
|
150
|
+
defaultHeaders.Connection = 'close';
|
|
151
|
+
}
|
|
152
|
+
if (preferences.rest.defaultAccept.length > 0) {
|
|
153
|
+
defaultHeaders.Accept = preferences.rest.defaultAccept;
|
|
154
|
+
}
|
|
155
|
+
const timeoutMs = inherited(request.settings.timeoutMs, api.timeoutMs, args.projectSettings?.defaultTimeoutMs) ??
|
|
156
|
+
preferences.http.socketTimeoutMs;
|
|
157
|
+
const followRedirects = inherited(request.settings.followRedirects, api.followRedirects) ?? preferences.rest.followRedirects;
|
|
158
|
+
const maxRedirects = inherited(request.settings.maxRedirects, api.maxRedirects) ?? preferences.rest.maxRedirects;
|
|
159
|
+
const keepBodyOnRedirect = inherited(request.settings.keepBodyOnRedirect, api.keepBodyOnRedirect);
|
|
160
|
+
const encodeUrl = inherited(request.settings.encodeUrl, api.encodeUrl);
|
|
161
|
+
const maxSizeBytes = inherited(request.settings.maxSizeBytes, api.maxSizeBytes);
|
|
162
|
+
const bindAddress = inherited(request.settings.bindAddress, api.bindAddress);
|
|
163
|
+
return {
|
|
164
|
+
baseUrl: args.baseUrl,
|
|
165
|
+
request: {
|
|
166
|
+
method: request.method,
|
|
167
|
+
url: request.url,
|
|
168
|
+
pathParams: request.pathParams,
|
|
169
|
+
query: request.query,
|
|
170
|
+
headers: request.headers,
|
|
171
|
+
body: request.body,
|
|
172
|
+
},
|
|
173
|
+
settings: {
|
|
174
|
+
timeoutMs,
|
|
175
|
+
followRedirects,
|
|
176
|
+
maxRedirects,
|
|
177
|
+
...(keepBodyOnRedirect !== undefined ? { keepBodyOnRedirect } : {}),
|
|
178
|
+
...(encodeUrl !== undefined ? { encodeUrl } : {}),
|
|
179
|
+
...(maxSizeBytes !== undefined ? { maxSizeBytes } : {}),
|
|
180
|
+
...(bindAddress !== undefined && bindAddress.length > 0 ? { localAddress: bindAddress } : {}),
|
|
181
|
+
...(preferences.http.allowH2 ? { allowH2: true } : {}),
|
|
182
|
+
},
|
|
183
|
+
defaultHeaders,
|
|
184
|
+
...(args.auth !== undefined ? { auth: args.auth } : {}),
|
|
185
|
+
...(args.cookies !== undefined ? { cookies: args.cookies } : {}),
|
|
186
|
+
// As for SOAP: the TLS floor is the user's one-off choice, and everything else in `tls` is
|
|
187
|
+
// resolved by the host, which reads files and secrets, and merged onto this.
|
|
188
|
+
tls: { minVersion: preferences.ssl.minVersion, ...args.tls },
|
|
189
|
+
...(args.proxy !== undefined ? { proxy: args.proxy } : {}),
|
|
190
|
+
...(args.resolveFile !== undefined ? { resolveFile: args.resolveFile } : {}),
|
|
191
|
+
...(args.signal !== undefined ? { signal: args.signal } : {}),
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Builds the transport input for one gRPC call, everything but the encoded messages.
|
|
196
|
+
*
|
|
197
|
+
* The same request → API → project → preference ladder as a REST request, and the same TLS rule:
|
|
198
|
+
* the floor comes from preferences, and the host merges trust anchors, the client identity and the
|
|
199
|
+
* per-request trust decision on top. Metadata rows are the API's first and then the request's, so
|
|
200
|
+
* a repeated key resolves to the request's value on the wire.
|
|
201
|
+
*/
|
|
202
|
+
export function toGrpcSendInput(args) {
|
|
203
|
+
const preferences = args.preferences ?? DEFAULT_PREFERENCES;
|
|
204
|
+
const request = args.request;
|
|
205
|
+
const api = args.apiSettings ?? {};
|
|
206
|
+
const defaultMetadata = {};
|
|
207
|
+
if (preferences.http.userAgent.length > 0) {
|
|
208
|
+
defaultMetadata['user-agent'] = preferences.http.userAgent;
|
|
209
|
+
}
|
|
210
|
+
const timeoutMs = inherited(request.settings.timeoutMs, api.timeoutMs, args.projectSettings?.defaultTimeoutMs) ??
|
|
211
|
+
preferences.http.socketTimeoutMs;
|
|
212
|
+
const maxSizeBytes = inherited(request.settings.maxSizeBytes, api.maxSizeBytes);
|
|
213
|
+
const bindAddress = inherited(request.settings.bindAddress, api.bindAddress);
|
|
214
|
+
return {
|
|
215
|
+
target: args.target,
|
|
216
|
+
tls: args.tls,
|
|
217
|
+
service: request.service,
|
|
218
|
+
method: request.method,
|
|
219
|
+
metadata: [...(args.apiMetadata ?? []), ...request.metadata],
|
|
220
|
+
defaultMetadata,
|
|
221
|
+
timeoutMs,
|
|
222
|
+
...(maxSizeBytes !== undefined ? { maxSizeBytes } : {}),
|
|
223
|
+
...(bindAddress !== undefined && bindAddress.length > 0 ? { localAddress: bindAddress } : {}),
|
|
224
|
+
...(args.auth !== undefined ? { auth: args.auth } : {}),
|
|
225
|
+
tlsOptions: { minVersion: preferences.ssl.minVersion, ...args.tlsOptions },
|
|
226
|
+
...(args.signal !== undefined ? { signal: args.signal } : {}),
|
|
227
|
+
};
|
|
228
|
+
}
|
package/dist/send.d.ts
ADDED
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Sends an already-built SOAP envelope over HTTP and structurally parses the
|
|
3
|
+
* response: SOAP version, fault, or "not actually SOAP" detection.
|
|
4
|
+
*/
|
|
5
|
+
import type { Dispatcher } from 'undici';
|
|
6
|
+
import type { PropertyScopes } from './project/properties.js';
|
|
7
|
+
import type { SoapExchange, SoapSendInput } from './types.js';
|
|
8
|
+
/**
|
|
9
|
+
* Sends `input.envelopeXml` to `input.endpoint` over HTTP, computing the
|
|
10
|
+
* `Content-Type`/`SOAPAction` headers for `input.soapVersion` and merging in
|
|
11
|
+
* any caller-supplied `input.headers`, which override the computed ones.
|
|
12
|
+
*
|
|
13
|
+
* HTTP-layer failures (timeout, abort, DNS, TLS, ...) propagate as
|
|
14
|
+
* {@link HttpError}; a non-2xx HTTP status is not an error and is returned
|
|
15
|
+
* as a normal exchange for the caller to inspect.
|
|
16
|
+
*
|
|
17
|
+
* When `input.attachmentOptions` is given, the envelope additionally goes through the
|
|
18
|
+
* attachment pipeline. Its stages are split across the send: inline `file:` references are
|
|
19
|
+
* substituted up front, with property expansion (they are envelope text, and WS-Security must
|
|
20
|
+
* sign what is actually sent), while MTOM and then SwA package the finished envelope after the
|
|
21
|
+
* WS-Addressing and WS-Security rewrites. A `multipart/related` response is unwrapped into its
|
|
22
|
+
* envelope plus `response.attachments`. See `soap/mime/send-pipeline.ts`.
|
|
23
|
+
*
|
|
24
|
+
* The full request order is: property expansion → inline files → WS-Addressing → WS-Security →
|
|
25
|
+
* MTOM → SwA → gzip.
|
|
26
|
+
*
|
|
27
|
+
* When `options.scopes` is given, `input.endpoint`, `input.envelopeXml`,
|
|
28
|
+
* `input.soapAction` and every header name/value are first passed through
|
|
29
|
+
* {@link expandSendInput}; any expressions that could not be resolved are
|
|
30
|
+
* left verbatim in the sent request and reported on the returned exchange's
|
|
31
|
+
* `unresolved` field, rather than failing the send.
|
|
32
|
+
*
|
|
33
|
+
* When `input.auth` is Basic, the `Authorization` header is either sent up front
|
|
34
|
+
* (`preemptive`) or added on a single retry after the server answers the first attempt
|
|
35
|
+
* with a 401 `Basic` challenge; both attempts share the one `timeoutMs` budget (if the first
|
|
36
|
+
* attempt already used it all, the challenge is reported as-is, `attempts: 1`, rather than
|
|
37
|
+
* firing a retry doomed to time out immediately) and the returned exchange is the final attempt
|
|
38
|
+
* actually made. A caller-supplied `Authorization` header always wins.
|
|
39
|
+
*
|
|
40
|
+
* When `input.auth` is NTLM, the send instead runs the three-leg NTLMv2 handshake over one
|
|
41
|
+
* dedicated connection (`http/auth/ntlm-transport.ts`): a bare bodyless leg, the Type 1
|
|
42
|
+
* message, then the Type 3 message carrying the real body. The returned exchange is the
|
|
43
|
+
* final leg, `durationMs` sums every leg, and a server that never challenges short-circuits
|
|
44
|
+
* after the first (`attempts: 1`).
|
|
45
|
+
*
|
|
46
|
+
* @param input the endpoint, envelope and transport options to send
|
|
47
|
+
* @param options an injected `dispatcher` (tests), `now` clock, and/or property `scopes`
|
|
48
|
+
*/
|
|
49
|
+
export declare function sendSoapRequest(input: SoapSendInput, options?: {
|
|
50
|
+
readonly dispatcher?: Dispatcher;
|
|
51
|
+
readonly now?: () => number;
|
|
52
|
+
readonly scopes?: PropertyScopes;
|
|
53
|
+
}): Promise<SoapExchange>;
|