@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,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The attachment stages of a send: what happens to the envelope on the way out, and how a
|
|
3
|
+
* `multipart/related` response is unwrapped on the way back in.
|
|
4
|
+
*
|
|
5
|
+
* Kept beside the MIME modules rather than in `send.ts` so the ordering rules live next to
|
|
6
|
+
* the code that implements them.
|
|
7
|
+
*/
|
|
8
|
+
import { headerValue, setHeader } from '../../http/headers.js';
|
|
9
|
+
import { decodeBody, encodeBody } from '../charset.js';
|
|
10
|
+
import { inlineFiles } from './inline-files.js';
|
|
11
|
+
import { expandMtomResponse, prepareMtomRequest, xopContentType } from './mtom.js';
|
|
12
|
+
import { DEFAULT_ROOT_CONTENT_ID, buildMultipartRelated, mediaTypeOf, parseMultipartRelated } from './multipart.js';
|
|
13
|
+
import { prepareSwaRequest } from './swa.js';
|
|
14
|
+
/**
|
|
15
|
+
* Substitutes every `file:` reference in the envelope with the file's base64 bytes.
|
|
16
|
+
*
|
|
17
|
+
* This is envelope *text preparation*, exactly like property expansion, so it runs before the
|
|
18
|
+
* envelope transforms rather than with the attachment packaging that follows them (see
|
|
19
|
+
* `send.ts`): a WS-Security signature must cover the bytes that actually go on the wire, and
|
|
20
|
+
* signing the literal `file:/…` text and then replacing it would produce a signature no
|
|
21
|
+
* receiver can verify.
|
|
22
|
+
*
|
|
23
|
+
* A missing file is a problem, not a failure: the reference is left verbatim and the send
|
|
24
|
+
* continues, since the server's own error is usually more informative than a client-side abort.
|
|
25
|
+
* Without a `resolveFile` there is no way to read anything, so the property is inert.
|
|
26
|
+
*
|
|
27
|
+
* @param input the (already expanded) send input
|
|
28
|
+
* @param problems collects non-fatal issues, e.g. an inline file that is missing
|
|
29
|
+
* @returns the envelope with every readable `file:` reference replaced
|
|
30
|
+
*/
|
|
31
|
+
export async function substituteInlineFiles(input, problems) {
|
|
32
|
+
const options = input.attachmentOptions;
|
|
33
|
+
if (options === undefined || !options.enableInlineFiles || options.resolveFile === undefined) {
|
|
34
|
+
return input.envelopeXml;
|
|
35
|
+
}
|
|
36
|
+
const inlined = await inlineFiles(input.envelopeXml, {
|
|
37
|
+
enabled: true,
|
|
38
|
+
resolveFile: options.resolveFile,
|
|
39
|
+
...(options.resourceRoot !== undefined ? { resourceRoot: options.resourceRoot } : {}),
|
|
40
|
+
});
|
|
41
|
+
for (const problem of inlined.problems) {
|
|
42
|
+
problems.push({ code: problem.code, message: problem.message });
|
|
43
|
+
}
|
|
44
|
+
return inlined.envelopeXml;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Runs the request-side attachment pipeline and returns the bytes to send.
|
|
48
|
+
*
|
|
49
|
+
* The order is fixed: property expansion, inline-file substitution
|
|
50
|
+
* ({@link substituteInlineFiles}) and the envelope transforms have already happened, then
|
|
51
|
+
* MTOM claims the attachments its `cid:` references name, then everything left over rides
|
|
52
|
+
* along as SwA. Only when something is actually packaged is the `Content-Type` replaced by
|
|
53
|
+
* the multipart's — the caller's own content type (charset and all) becomes the root part's,
|
|
54
|
+
* so a request that sets one still gets what it asked for where it matters.
|
|
55
|
+
*
|
|
56
|
+
* "Disable Multiparts" short-circuits the whole stage, MTOM included: rewriting a `cid:`
|
|
57
|
+
* reference into an `xop:Include` whose part is then not sent would produce a message no
|
|
58
|
+
* server can read.
|
|
59
|
+
*
|
|
60
|
+
* @param input the (already expanded, already inlined) send input
|
|
61
|
+
* @param headers the request headers, mutated when a multipart Content-Type takes over
|
|
62
|
+
*/
|
|
63
|
+
export async function packageRequestBody(input, headers) {
|
|
64
|
+
const options = input.attachmentOptions;
|
|
65
|
+
if (options === undefined) {
|
|
66
|
+
return encodeBody(input.envelopeXml, input.encoding);
|
|
67
|
+
}
|
|
68
|
+
// Inline files were already substituted, before the envelope transforms — see
|
|
69
|
+
// {@link substituteInlineFiles} and the pipeline order in `send.ts`.
|
|
70
|
+
let envelopeXml = input.envelopeXml;
|
|
71
|
+
const attachments = input.attachments ?? [];
|
|
72
|
+
const parts = [];
|
|
73
|
+
let mtom = false;
|
|
74
|
+
if (!options.disableMultiparts) {
|
|
75
|
+
let remaining = attachments;
|
|
76
|
+
if (options.enableMtom || options.forceMtom) {
|
|
77
|
+
const prepared = await prepareMtomRequest(envelopeXml, attachments, {
|
|
78
|
+
force: options.forceMtom,
|
|
79
|
+
resolver: options.resolver,
|
|
80
|
+
});
|
|
81
|
+
envelopeXml = prepared.envelopeXml;
|
|
82
|
+
parts.push(...prepared.parts);
|
|
83
|
+
mtom = prepared.used;
|
|
84
|
+
remaining = attachments.filter((attachment) => !prepared.consumedIds.includes(attachment.id));
|
|
85
|
+
}
|
|
86
|
+
const swa = await prepareSwaRequest(envelopeXml, remaining, {
|
|
87
|
+
resolver: options.resolver,
|
|
88
|
+
encodeAttachments: options.encodeAttachments,
|
|
89
|
+
});
|
|
90
|
+
parts.push(...swa.parts);
|
|
91
|
+
}
|
|
92
|
+
const encoded = encodeBody(envelopeXml, input.encoding);
|
|
93
|
+
if (parts.length === 0 && !mtom) {
|
|
94
|
+
return encoded;
|
|
95
|
+
}
|
|
96
|
+
const soapContentType = headerValue(headers, 'content-type') ?? 'text/xml;charset=UTF-8';
|
|
97
|
+
const built = buildMultipartRelated({
|
|
98
|
+
root: {
|
|
99
|
+
contentType: mtom ? xopContentType(soapContentType) : soapContentType,
|
|
100
|
+
contentId: DEFAULT_ROOT_CONTENT_ID,
|
|
101
|
+
bytes: encoded,
|
|
102
|
+
},
|
|
103
|
+
parts,
|
|
104
|
+
...(mtom ? { mtom: true } : {}),
|
|
105
|
+
});
|
|
106
|
+
setHeader(headers, 'content-type', built.contentType);
|
|
107
|
+
return built.body;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Reads the response body as an envelope, unwrapping a `multipart/related` response into
|
|
111
|
+
* its root part plus attachments.
|
|
112
|
+
*
|
|
113
|
+
* A response is unwrapped whether or not the request asked for attachments — a server may
|
|
114
|
+
* answer with MTOM regardless — but the two response knobs only apply when the request
|
|
115
|
+
* carried them: `expandMtomAttachments` writes each referenced part back into the envelope
|
|
116
|
+
* as base64, and `inlineResponseAttachments` decides whether those parts stay listed
|
|
117
|
+
* afterwards.
|
|
118
|
+
*/
|
|
119
|
+
export function readResponseBody(body, contentType, options, problems) {
|
|
120
|
+
const isMultipart = contentType !== undefined && mediaTypeOf(contentType).toLowerCase().startsWith('multipart/');
|
|
121
|
+
if (!isMultipart) {
|
|
122
|
+
const decoded = decodeBody(body, contentType);
|
|
123
|
+
if (decoded.problem !== undefined) {
|
|
124
|
+
problems.push(decoded.problem);
|
|
125
|
+
}
|
|
126
|
+
return { envelopeXml: decoded.text };
|
|
127
|
+
}
|
|
128
|
+
const parsed = parseMultipartRelated(body, contentType);
|
|
129
|
+
for (const problem of parsed.problems) {
|
|
130
|
+
problems.push({ code: 'mime-parse', message: `Response multipart: ${problem}` });
|
|
131
|
+
}
|
|
132
|
+
// A root part with no Content-Type of its own still inherits the multipart's charset.
|
|
133
|
+
const decoded = decodeBody(parsed.root.bytes, parsed.root.headers['content-type'] ?? contentType);
|
|
134
|
+
if (decoded.problem !== undefined) {
|
|
135
|
+
problems.push(decoded.problem);
|
|
136
|
+
}
|
|
137
|
+
const expanded = expandMtomResponse(parsed, {
|
|
138
|
+
inline: options?.expandMtomAttachments === true,
|
|
139
|
+
envelopeXml: decoded.text,
|
|
140
|
+
});
|
|
141
|
+
const attachments = options?.inlineResponseAttachments === true
|
|
142
|
+
? expanded.attachments
|
|
143
|
+
: expanded.attachments.filter((attachment) => !expanded.inlinedContentIds.includes(attachment.contentId));
|
|
144
|
+
return { envelopeXml: expanded.envelopeXml, attachments };
|
|
145
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SOAP with Attachments (SwA), including swaRef per WS-I Attachments Profile 1.0.
|
|
3
|
+
*
|
|
4
|
+
* SwA is the plain case: the envelope is sent untouched as the root part and every
|
|
5
|
+
* attachment rides along beside it. A `ref:swaRef`-typed element already contains the
|
|
6
|
+
* `cid:` reference the profile asks for, so — unlike MTOM — nothing in the body is
|
|
7
|
+
* rewritten; the reference simply has to name a part that is actually there.
|
|
8
|
+
*/
|
|
9
|
+
import type { Attachment } from '../../project/model.js';
|
|
10
|
+
import type { ParsedMultipart } from './multipart.js';
|
|
11
|
+
import type { AttachmentResolver, MultipartPart, ResponseAttachment } from './types.js';
|
|
12
|
+
/** Knobs for {@link prepareSwaRequest}. */
|
|
13
|
+
export interface SwaOptions {
|
|
14
|
+
readonly resolver: AttachmentResolver;
|
|
15
|
+
/** "Encode Attachments": base64 transfer encoding instead of binary. */
|
|
16
|
+
readonly encodeAttachments: boolean;
|
|
17
|
+
/** "Disable Multiparts": send the envelope alone and ignore every attachment. */
|
|
18
|
+
readonly disableMultiparts?: boolean;
|
|
19
|
+
}
|
|
20
|
+
/** What {@link prepareSwaRequest} produced. */
|
|
21
|
+
export interface PreparedSwa {
|
|
22
|
+
readonly parts: readonly MultipartPart[];
|
|
23
|
+
/** False when nothing is to be sent as a multipart (no attachments, or multiparts disabled). */
|
|
24
|
+
readonly used: boolean;
|
|
25
|
+
/** Content-IDs the envelope actually references with `cid:` (swaRef and friends). */
|
|
26
|
+
readonly referencedContentIds: readonly string[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Builds the SwA parts for `attachments` — every attachment MTOM did not already consume.
|
|
30
|
+
*
|
|
31
|
+
* The envelope is never modified; it is only scanned, so the caller can tell which
|
|
32
|
+
* attachments a `cid:` reference in the body actually points at (an unreferenced
|
|
33
|
+
* attachment is still sent, which is what "anonymous" MIME parts are for).
|
|
34
|
+
*
|
|
35
|
+
* @param envelopeXml the envelope as it will be sent
|
|
36
|
+
* @param attachments the attachments to package
|
|
37
|
+
* @param options the resolver plus the request's encode/disable flags
|
|
38
|
+
*/
|
|
39
|
+
export declare function prepareSwaRequest(envelopeXml: string, attachments: readonly Attachment[], options: SwaOptions): Promise<PreparedSwa>;
|
|
40
|
+
/**
|
|
41
|
+
* Describes every non-root part of a parsed response as a {@link ResponseAttachment}.
|
|
42
|
+
*
|
|
43
|
+
* @param parsed the parsed `multipart/related` response
|
|
44
|
+
*/
|
|
45
|
+
export declare function collectResponseAttachments(parsed: ParsedMultipart): readonly ResponseAttachment[];
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SOAP with Attachments (SwA), including swaRef per WS-I Attachments Profile 1.0.
|
|
3
|
+
*
|
|
4
|
+
* SwA is the plain case: the envelope is sent untouched as the root part and every
|
|
5
|
+
* attachment rides along beside it. A `ref:swaRef`-typed element already contains the
|
|
6
|
+
* `cid:` reference the profile asks for, so — unlike MTOM — nothing in the body is
|
|
7
|
+
* rewritten; the reference simply has to name a part that is actually there.
|
|
8
|
+
*/
|
|
9
|
+
import { findCidReferences } from './cid-scan.js';
|
|
10
|
+
/** The Content-ID an attachment goes out with: its own, or its id as a fallback. */
|
|
11
|
+
function contentIdOf(attachment) {
|
|
12
|
+
return attachment.contentId.length > 0 ? attachment.contentId : `${attachment.id}@wirebench`;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Builds the SwA parts for `attachments` — every attachment MTOM did not already consume.
|
|
16
|
+
*
|
|
17
|
+
* The envelope is never modified; it is only scanned, so the caller can tell which
|
|
18
|
+
* attachments a `cid:` reference in the body actually points at (an unreferenced
|
|
19
|
+
* attachment is still sent, which is what "anonymous" MIME parts are for).
|
|
20
|
+
*
|
|
21
|
+
* @param envelopeXml the envelope as it will be sent
|
|
22
|
+
* @param attachments the attachments to package
|
|
23
|
+
* @param options the resolver plus the request's encode/disable flags
|
|
24
|
+
*/
|
|
25
|
+
export async function prepareSwaRequest(envelopeXml, attachments, options) {
|
|
26
|
+
if (options.disableMultiparts === true || attachments.length === 0) {
|
|
27
|
+
return { parts: [], used: false, referencedContentIds: [] };
|
|
28
|
+
}
|
|
29
|
+
const referenced = new Set(findCidReferences(envelopeXml).references.map((reference) => reference.cid));
|
|
30
|
+
const parts = [];
|
|
31
|
+
const referencedContentIds = [];
|
|
32
|
+
for (const attachment of attachments) {
|
|
33
|
+
const contentId = contentIdOf(attachment);
|
|
34
|
+
if (referenced.has(contentId) || referenced.has(attachment.id)) {
|
|
35
|
+
referencedContentIds.push(contentId);
|
|
36
|
+
}
|
|
37
|
+
parts.push({
|
|
38
|
+
contentId,
|
|
39
|
+
contentType: attachment.contentType,
|
|
40
|
+
bytes: await options.resolver(attachment),
|
|
41
|
+
transferEncoding: options.encodeAttachments ? 'base64' : 'binary',
|
|
42
|
+
...(attachment.name.length > 0 ? { fileName: attachment.name } : {}),
|
|
43
|
+
...(attachment.part !== undefined && attachment.part.length > 0 ? { partName: attachment.part } : {}),
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
return { parts, used: parts.length > 0, referencedContentIds };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Describes every non-root part of a parsed response as a {@link ResponseAttachment}.
|
|
50
|
+
*
|
|
51
|
+
* @param parsed the parsed `multipart/related` response
|
|
52
|
+
*/
|
|
53
|
+
export function collectResponseAttachments(parsed) {
|
|
54
|
+
return parsed.parts.map((part) => ({
|
|
55
|
+
contentId: part.contentId ?? '',
|
|
56
|
+
contentType: part.contentType,
|
|
57
|
+
size: part.bytes.length,
|
|
58
|
+
bytes: part.bytes,
|
|
59
|
+
...(part.fileName !== undefined ? { name: part.fileName } : {}),
|
|
60
|
+
...(part.transferEncoding !== undefined ? { transferEncoding: part.transferEncoding } : {}),
|
|
61
|
+
}));
|
|
62
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for the MIME layer: what goes into a `multipart/related` body,
|
|
3
|
+
* what comes back out of one, and how an {@link Attachment}'s bytes are obtained.
|
|
4
|
+
*
|
|
5
|
+
* The engine never reads an attachment from disk on its own: the send path is
|
|
6
|
+
* handed an {@link AttachmentResolver} so the desktop main process (which owns the
|
|
7
|
+
* project directory and its cache) decides where bytes come from. See
|
|
8
|
+
* `project/attachments-cache.ts` for the file-backed implementation.
|
|
9
|
+
*/
|
|
10
|
+
import type { Attachment } from '../../project/model.js';
|
|
11
|
+
/** Resolves one attachment's bytes. Rejects when the attachment cannot be read. */
|
|
12
|
+
export type AttachmentResolver = (attachment: Attachment) => Promise<Uint8Array>;
|
|
13
|
+
/** Content transfer encodings this layer writes or understands. */
|
|
14
|
+
export type TransferEncoding = 'binary' | 'base64' | '8bit' | '7bit' | 'quoted-printable';
|
|
15
|
+
/**
|
|
16
|
+
* Transfer encodings {@link buildMultipartRelated} can actually produce: `quoted-printable`
|
|
17
|
+
* is understood on parse but this layer never writes it, so it is left out of the build-side
|
|
18
|
+
* type rather than silently passed through as if it were `binary`.
|
|
19
|
+
*/
|
|
20
|
+
export type BuildTransferEncoding = 'binary' | 'base64' | '8bit' | '7bit';
|
|
21
|
+
/** One part to write into a `multipart/related` body. */
|
|
22
|
+
export interface MultipartPart {
|
|
23
|
+
/** Content-ID without the angle brackets; they are added on the wire. */
|
|
24
|
+
readonly contentId: string;
|
|
25
|
+
readonly contentType: string;
|
|
26
|
+
readonly bytes: Uint8Array;
|
|
27
|
+
/** Defaults to `binary`; `base64` re-encodes the bytes and wraps at 76 columns. */
|
|
28
|
+
readonly transferEncoding?: BuildTransferEncoding;
|
|
29
|
+
/** File name for `Content-Disposition: attachment; filename="..."`. */
|
|
30
|
+
readonly fileName?: string;
|
|
31
|
+
/** WSDL `mime:part` name for `Content-Disposition: attachment; name="..."`. */
|
|
32
|
+
readonly partName?: string;
|
|
33
|
+
}
|
|
34
|
+
/** The root (SOAP envelope) part of a `multipart/related` body. */
|
|
35
|
+
export interface MultipartRoot {
|
|
36
|
+
readonly contentType: string;
|
|
37
|
+
/** Content-ID without the angle brackets; defaults to `rootpart@wirebench`. */
|
|
38
|
+
readonly contentId?: string;
|
|
39
|
+
readonly bytes: Uint8Array;
|
|
40
|
+
}
|
|
41
|
+
/** One part read back out of a `multipart/related` body. */
|
|
42
|
+
export interface MimePart {
|
|
43
|
+
/** Header names lower-cased, values unfolded and trimmed; duplicates keep the first. */
|
|
44
|
+
readonly headers: Readonly<Record<string, string>>;
|
|
45
|
+
/** Content-ID with the angle brackets stripped, when the part carried one. */
|
|
46
|
+
readonly contentId?: string;
|
|
47
|
+
/** `application/octet-stream` when the part declared no `Content-Type`. */
|
|
48
|
+
readonly contentType: string;
|
|
49
|
+
readonly transferEncoding?: TransferEncoding;
|
|
50
|
+
/** Part body, decoded when the transfer encoding was `base64`/`quoted-printable`. */
|
|
51
|
+
readonly bytes: Uint8Array;
|
|
52
|
+
/** Part body exactly as it appeared on the wire, still encoded. */
|
|
53
|
+
readonly raw: Uint8Array;
|
|
54
|
+
/** `filename` from `Content-Disposition`, or the last segment of `Content-Location`. */
|
|
55
|
+
readonly fileName?: string;
|
|
56
|
+
/** `name` from `Content-Disposition`. */
|
|
57
|
+
readonly partName?: string;
|
|
58
|
+
}
|
|
59
|
+
/** One attachment received on a response. */
|
|
60
|
+
export interface ResponseAttachment {
|
|
61
|
+
/** Content-ID without the angle brackets; empty when the part carried none. */
|
|
62
|
+
readonly contentId: string;
|
|
63
|
+
readonly contentType: string;
|
|
64
|
+
readonly size: number;
|
|
65
|
+
readonly bytes: Uint8Array;
|
|
66
|
+
/** File name, when the part declared one. */
|
|
67
|
+
readonly name?: string;
|
|
68
|
+
readonly transferEncoding?: TransferEncoding;
|
|
69
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared types for the MIME layer: what goes into a `multipart/related` body,
|
|
3
|
+
* what comes back out of one, and how an {@link Attachment}'s bytes are obtained.
|
|
4
|
+
*
|
|
5
|
+
* The engine never reads an attachment from disk on its own: the send path is
|
|
6
|
+
* handed an {@link AttachmentResolver} so the desktop main process (which owns the
|
|
7
|
+
* project directory and its cache) decides where bytes come from. See
|
|
8
|
+
* `project/attachments-cache.ts` for the file-backed implementation.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One namespace/prefix table shared by every fragment of a single envelope.
|
|
3
|
+
*
|
|
4
|
+
* The sample generator declares namespaces on each fragment's own root; an
|
|
5
|
+
* envelope reads much better with every declaration hoisted onto
|
|
6
|
+
* `soapenv:Envelope` instead. Sharing one scope across all fragments is what
|
|
7
|
+
* makes that safe: a namespace gets the same prefix everywhere, so hoisting
|
|
8
|
+
* cannot change any name's meaning.
|
|
9
|
+
*/
|
|
10
|
+
/** Assigns one prefix per namespace URI and records which ones were actually used. */
|
|
11
|
+
export declare class NamespaceScope {
|
|
12
|
+
private readonly byUri;
|
|
13
|
+
private readonly taken;
|
|
14
|
+
private readonly used;
|
|
15
|
+
/**
|
|
16
|
+
* @param seedUris namespaces to name up-front, so mnemonics are assigned in a
|
|
17
|
+
* stable order rather than in whatever order fragments happen to use them
|
|
18
|
+
* @param overrides caller-supplied namespace URI → prefix, which always wins
|
|
19
|
+
*/
|
|
20
|
+
constructor(seedUris: readonly string[], overrides?: Readonly<Record<string, string>>);
|
|
21
|
+
private assign;
|
|
22
|
+
/** Namespace URI → prefix for every namespace named so far; the generator's `prefixes` map. */
|
|
23
|
+
prefixes(): Record<string, string>;
|
|
24
|
+
/** The prefix for `uri`, allocating one if needed, and marks it as used. The empty namespace has none. */
|
|
25
|
+
use(uri: string): string;
|
|
26
|
+
/** Records the prefix → URI bindings a generated fragment declared on its own root. */
|
|
27
|
+
markUsed(namespaces: Readonly<Record<string, string>>): void;
|
|
28
|
+
/** Prefix → URI for every namespace actually used, in first-use order: the envelope's declarations. */
|
|
29
|
+
declarations(): Record<string, string>;
|
|
30
|
+
/** True when `prefix` is declared on the envelope bound to `uri`. */
|
|
31
|
+
declares(prefix: string, uri: string): boolean;
|
|
32
|
+
}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One namespace/prefix table shared by every fragment of a single envelope.
|
|
3
|
+
*
|
|
4
|
+
* The sample generator declares namespaces on each fragment's own root; an
|
|
5
|
+
* envelope reads much better with every declaration hoisted onto
|
|
6
|
+
* `soapenv:Envelope` instead. Sharing one scope across all fragments is what
|
|
7
|
+
* makes that safe: a namespace gets the same prefix everywhere, so hoisting
|
|
8
|
+
* cannot change any name's meaning.
|
|
9
|
+
*/
|
|
10
|
+
import { NS } from '../xml/namespaces.js';
|
|
11
|
+
import { prefixForNamespace, RESERVED_PREFIXES } from './prefixes.js';
|
|
12
|
+
/** Prefixes the envelope pins regardless of what a mnemonic would suggest. */
|
|
13
|
+
const PINNED = [
|
|
14
|
+
[NS.XSD, 'xsd'],
|
|
15
|
+
[NS.XSI, 'xsi'],
|
|
16
|
+
[NS.SOAP11_ENC, 'soapenc'],
|
|
17
|
+
];
|
|
18
|
+
/** Assigns one prefix per namespace URI and records which ones were actually used. */
|
|
19
|
+
export class NamespaceScope {
|
|
20
|
+
byUri = new Map();
|
|
21
|
+
taken = new Set(RESERVED_PREFIXES);
|
|
22
|
+
used = new Map();
|
|
23
|
+
/**
|
|
24
|
+
* @param seedUris namespaces to name up-front, so mnemonics are assigned in a
|
|
25
|
+
* stable order rather than in whatever order fragments happen to use them
|
|
26
|
+
* @param overrides caller-supplied namespace URI → prefix, which always wins
|
|
27
|
+
*/
|
|
28
|
+
constructor(seedUris, overrides = {}) {
|
|
29
|
+
const overridden = new Set();
|
|
30
|
+
for (const [uri, prefix] of Object.entries(overrides)) {
|
|
31
|
+
this.byUri.set(uri, prefix);
|
|
32
|
+
this.taken.add(prefix);
|
|
33
|
+
overridden.add(prefix);
|
|
34
|
+
}
|
|
35
|
+
// Pinned prefixes are reserved *for* these namespaces, so `taken` (which
|
|
36
|
+
// holds every reserved prefix) must not block them — only an explicit
|
|
37
|
+
// caller override can.
|
|
38
|
+
for (const [uri, prefix] of PINNED) {
|
|
39
|
+
if (!this.byUri.has(uri) && !overridden.has(prefix)) {
|
|
40
|
+
this.assign(uri, prefix);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
for (const uri of seedUris) {
|
|
44
|
+
if (uri !== '' && !this.byUri.has(uri)) {
|
|
45
|
+
this.assign(uri, prefixForNamespace(uri, this.taken));
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
assign(uri, prefix) {
|
|
50
|
+
this.byUri.set(uri, prefix);
|
|
51
|
+
this.taken.add(prefix);
|
|
52
|
+
}
|
|
53
|
+
/** Namespace URI → prefix for every namespace named so far; the generator's `prefixes` map. */
|
|
54
|
+
prefixes() {
|
|
55
|
+
return Object.fromEntries(this.byUri);
|
|
56
|
+
}
|
|
57
|
+
/** The prefix for `uri`, allocating one if needed, and marks it as used. The empty namespace has none. */
|
|
58
|
+
use(uri) {
|
|
59
|
+
if (uri === '') {
|
|
60
|
+
return '';
|
|
61
|
+
}
|
|
62
|
+
let prefix = this.byUri.get(uri);
|
|
63
|
+
if (prefix === undefined) {
|
|
64
|
+
prefix = prefixForNamespace(uri, this.taken);
|
|
65
|
+
this.assign(uri, prefix);
|
|
66
|
+
}
|
|
67
|
+
this.used.set(prefix, uri);
|
|
68
|
+
return prefix;
|
|
69
|
+
}
|
|
70
|
+
/** Records the prefix → URI bindings a generated fragment declared on its own root. */
|
|
71
|
+
markUsed(namespaces) {
|
|
72
|
+
for (const [prefix, uri] of Object.entries(namespaces)) {
|
|
73
|
+
this.assign(uri, prefix);
|
|
74
|
+
this.used.set(prefix, uri);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
/** Prefix → URI for every namespace actually used, in first-use order: the envelope's declarations. */
|
|
78
|
+
declarations() {
|
|
79
|
+
return Object.fromEntries(this.used);
|
|
80
|
+
}
|
|
81
|
+
/** True when `prefix` is declared on the envelope bound to `uri`. */
|
|
82
|
+
declares(prefix, uri) {
|
|
83
|
+
return this.used.get(prefix) === uri;
|
|
84
|
+
}
|
|
85
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic, readable namespace prefixes for generated SOAP envelopes.
|
|
3
|
+
*
|
|
4
|
+
* The established convention names a namespace after a short mnemonic taken from its URI
|
|
5
|
+
* (`http://tempuri.org/` → `tem`), which reads far better in a hand-edited
|
|
6
|
+
* request than `ns1`. This module reproduces that convention from the URI
|
|
7
|
+
* alone, without ever colliding with the prefixes the envelope reserves.
|
|
8
|
+
*/
|
|
9
|
+
/** Prefixes an envelope always owns; a mnemonic never takes one of these. */
|
|
10
|
+
export declare const RESERVED_PREFIXES: readonly string[];
|
|
11
|
+
/**
|
|
12
|
+
* Derives a short, readable prefix for `uri` that is not already in `taken`.
|
|
13
|
+
*
|
|
14
|
+
* The mnemonic is the first three letters of the URI's most meaningful token
|
|
15
|
+
* (`http://tempuri.org/` → `tem`, `http://www.dataaccess.com/webservicesserver/`
|
|
16
|
+
* → `web`, `urn:wb:common` → `com`). A mnemonic that is empty, or that would
|
|
17
|
+
* collide with a reserved or already-taken prefix, is disambiguated with a
|
|
18
|
+
* numeric suffix (`web`, `web1`, `web2`, …). `ns1`, `ns2`, … is the fallback
|
|
19
|
+
* when no mnemonic can be derived at all.
|
|
20
|
+
*
|
|
21
|
+
* Pure and deterministic: the same URI and `taken` set always yield the same
|
|
22
|
+
* prefix. The returned prefix is **not** added to `taken`; callers own that.
|
|
23
|
+
*/
|
|
24
|
+
export declare function prefixForNamespace(uri: string, taken: ReadonlySet<string>): string;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Deterministic, readable namespace prefixes for generated SOAP envelopes.
|
|
3
|
+
*
|
|
4
|
+
* The established convention names a namespace after a short mnemonic taken from its URI
|
|
5
|
+
* (`http://tempuri.org/` → `tem`), which reads far better in a hand-edited
|
|
6
|
+
* request than `ns1`. This module reproduces that convention from the URI
|
|
7
|
+
* alone, without ever colliding with the prefixes the envelope reserves.
|
|
8
|
+
*/
|
|
9
|
+
/** Prefixes an envelope always owns; a mnemonic never takes one of these. */
|
|
10
|
+
export const RESERVED_PREFIXES = ['soapenv', 'soapenc', 'xsi', 'xsd', 'xs', 'xml', 'xmlns'];
|
|
11
|
+
/** The mnemonic length: three letters, per the convention. */
|
|
12
|
+
const MNEMONIC_LENGTH = 3;
|
|
13
|
+
/**
|
|
14
|
+
* Picks the "most meaningful" token of a namespace URI: the last non-empty
|
|
15
|
+
* path segment of an http(s) URL, else the URL's host without a leading
|
|
16
|
+
* `www.`, else the last non-empty `:`-separated token of a URN.
|
|
17
|
+
*/
|
|
18
|
+
function meaningfulToken(uri) {
|
|
19
|
+
const trimmed = uri.trim();
|
|
20
|
+
const schemeSplit = trimmed.indexOf('://');
|
|
21
|
+
if (schemeSplit === -1) {
|
|
22
|
+
// A URN (or anything else without an authority): `urn:wb:common` → `common`.
|
|
23
|
+
const parts = trimmed.split(':').filter((part) => part.length > 0);
|
|
24
|
+
return parts.length === 0 ? '' : (parts[parts.length - 1] ?? '');
|
|
25
|
+
}
|
|
26
|
+
const rest = trimmed.slice(schemeSplit + 3);
|
|
27
|
+
const slash = rest.indexOf('/');
|
|
28
|
+
const host = slash === -1 ? rest : rest.slice(0, slash);
|
|
29
|
+
const path = slash === -1 ? '' : rest.slice(slash + 1);
|
|
30
|
+
const segments = path.split('/').filter((segment) => segment.length > 0);
|
|
31
|
+
if (segments.length > 0) {
|
|
32
|
+
return segments[segments.length - 1] ?? '';
|
|
33
|
+
}
|
|
34
|
+
const hostLabels = host.replace(/^www\./i, '').split('.');
|
|
35
|
+
return hostLabels[0] ?? '';
|
|
36
|
+
}
|
|
37
|
+
/** Reduces a token to letters and digits, keeping only its first dotted part. */
|
|
38
|
+
function mnemonicOf(token) {
|
|
39
|
+
const firstPart = token.split('.')[0] ?? '';
|
|
40
|
+
const letters = firstPart.toLowerCase().replace(/[^a-z0-9]/g, '');
|
|
41
|
+
// A prefix is an NCName, so it can never start with a digit; a token with
|
|
42
|
+
// nothing but digits left yields no mnemonic at all.
|
|
43
|
+
return letters.replace(/^[0-9]+/, '').slice(0, MNEMONIC_LENGTH);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Derives a short, readable prefix for `uri` that is not already in `taken`.
|
|
47
|
+
*
|
|
48
|
+
* The mnemonic is the first three letters of the URI's most meaningful token
|
|
49
|
+
* (`http://tempuri.org/` → `tem`, `http://www.dataaccess.com/webservicesserver/`
|
|
50
|
+
* → `web`, `urn:wb:common` → `com`). A mnemonic that is empty, or that would
|
|
51
|
+
* collide with a reserved or already-taken prefix, is disambiguated with a
|
|
52
|
+
* numeric suffix (`web`, `web1`, `web2`, …). `ns1`, `ns2`, … is the fallback
|
|
53
|
+
* when no mnemonic can be derived at all.
|
|
54
|
+
*
|
|
55
|
+
* Pure and deterministic: the same URI and `taken` set always yield the same
|
|
56
|
+
* prefix. The returned prefix is **not** added to `taken`; callers own that.
|
|
57
|
+
*/
|
|
58
|
+
export function prefixForNamespace(uri, taken) {
|
|
59
|
+
const base = mnemonicOf(meaningfulToken(uri));
|
|
60
|
+
if (base.length > 0 && !taken.has(base) && !RESERVED_PREFIXES.includes(base)) {
|
|
61
|
+
return base;
|
|
62
|
+
}
|
|
63
|
+
const stem = base.length > 0 ? base : 'ns';
|
|
64
|
+
for (let counter = 1;; counter += 1) {
|
|
65
|
+
const candidate = `${stem}${counter}`;
|
|
66
|
+
if (!taken.has(candidate) && !RESERVED_PREFIXES.includes(candidate)) {
|
|
67
|
+
return candidate;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* "Recreate Request": merge a freshly generated envelope
|
|
3
|
+
* (the source of structure) with an existing edited envelope (the source of
|
|
4
|
+
* values), by matching elements on a root-relative path of
|
|
5
|
+
* `localName[siblingIndex]` steps rather than by DOM identity.
|
|
6
|
+
*/
|
|
7
|
+
/** Options for {@link recreateRequest}. */
|
|
8
|
+
export interface RecreateOptions {
|
|
9
|
+
/** Copy matching leaf values (text and attributes) from the current envelope. */
|
|
10
|
+
readonly keepValues: boolean;
|
|
11
|
+
/** Keep the current `<soapenv:Header>` content verbatim instead of the generated one. */
|
|
12
|
+
readonly keepHeaders: boolean;
|
|
13
|
+
}
|
|
14
|
+
/** Result of {@link recreateRequest}. */
|
|
15
|
+
export interface RecreateResult {
|
|
16
|
+
readonly xml: string;
|
|
17
|
+
/** Leaf values copied from the current envelope. */
|
|
18
|
+
readonly kept: number;
|
|
19
|
+
/** Elements present only in the generated structure. */
|
|
20
|
+
readonly added: number;
|
|
21
|
+
/** Elements present in the current envelope but absent from the generated one. */
|
|
22
|
+
readonly removed: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Merges `generatedXml` (structure) with `currentXml` (values), per the
|
|
26
|
+
* "Recreate Request" semantics.
|
|
27
|
+
*/
|
|
28
|
+
export declare function recreateRequest(currentXml: string, generatedXml: string, options: RecreateOptions): RecreateResult;
|