@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,161 @@
|
|
|
1
|
+
import { WsdlParseError } from '../errors.js';
|
|
2
|
+
import { NS } from '../xml/namespaces.js';
|
|
3
|
+
import { getPosition, parseXml } from '../xml/parse.js';
|
|
4
|
+
import { childElements, firstChildElement, optionalAttribute, readDocumentation, requireAttribute, } from './dom-utils.js';
|
|
5
|
+
import { parseWsdlBundle } from './merge.js';
|
|
6
|
+
import { parseBinding, parseService } from './parse-binding.js';
|
|
7
|
+
import { parseQName } from './qname.js';
|
|
8
|
+
import { resolveDefinition } from './resolver.js';
|
|
9
|
+
function parsePart(partEl, location, defaultNamespace) {
|
|
10
|
+
const elementAttr = optionalAttribute(partEl, 'element');
|
|
11
|
+
const typeAttr = optionalAttribute(partEl, 'type');
|
|
12
|
+
return {
|
|
13
|
+
name: requireAttribute(partEl, 'name', location),
|
|
14
|
+
...(elementAttr !== undefined ? { element: parseQName(elementAttr, partEl, defaultNamespace) } : {}),
|
|
15
|
+
...(typeAttr !== undefined ? { type: parseQName(typeAttr, partEl, defaultNamespace) } : {}),
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function parseMessage(messageEl, location, defaultNamespace) {
|
|
19
|
+
const documentation = readDocumentation(messageEl, NS.WSDL);
|
|
20
|
+
const parts = childElements(messageEl, NS.WSDL, 'part').map((p) => parsePart(p, location, defaultNamespace));
|
|
21
|
+
const name = { namespaceUri: defaultNamespace, localName: requireAttribute(messageEl, 'name', location) };
|
|
22
|
+
return {
|
|
23
|
+
name,
|
|
24
|
+
...(documentation !== undefined ? { documentation } : {}),
|
|
25
|
+
parts,
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function parseMessageRef(el, location, defaultNamespace) {
|
|
29
|
+
const name = optionalAttribute(el, 'name');
|
|
30
|
+
return {
|
|
31
|
+
...(name !== undefined ? { name } : {}),
|
|
32
|
+
message: parseQName(requireAttribute(el, 'message', location), el, defaultNamespace),
|
|
33
|
+
sourceElement: el,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function parseOperationFault(el, location, defaultNamespace) {
|
|
37
|
+
const documentation = readDocumentation(el, NS.WSDL);
|
|
38
|
+
return {
|
|
39
|
+
name: requireAttribute(el, 'name', location),
|
|
40
|
+
message: parseQName(requireAttribute(el, 'message', location), el, defaultNamespace),
|
|
41
|
+
...(documentation !== undefined ? { documentation } : {}),
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
function parseOperation(opEl, location, defaultNamespace) {
|
|
45
|
+
const documentation = readDocumentation(opEl, NS.WSDL);
|
|
46
|
+
const inputEl = firstChildElement(opEl, NS.WSDL, 'input');
|
|
47
|
+
const outputEl = firstChildElement(opEl, NS.WSDL, 'output');
|
|
48
|
+
const faults = childElements(opEl, NS.WSDL, 'fault').map((f) => parseOperationFault(f, location, defaultNamespace));
|
|
49
|
+
const parameterOrderAttr = optionalAttribute(opEl, 'parameterOrder');
|
|
50
|
+
return {
|
|
51
|
+
name: requireAttribute(opEl, 'name', location),
|
|
52
|
+
...(documentation !== undefined ? { documentation } : {}),
|
|
53
|
+
...(inputEl !== undefined ? { input: parseMessageRef(inputEl, location, defaultNamespace) } : {}),
|
|
54
|
+
...(outputEl !== undefined ? { output: parseMessageRef(outputEl, location, defaultNamespace) } : {}),
|
|
55
|
+
faults,
|
|
56
|
+
...(parameterOrderAttr !== undefined
|
|
57
|
+
? { parameterOrder: parameterOrderAttr.split(/\s+/).filter((p) => p.length > 0) }
|
|
58
|
+
: {}),
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
function parsePortType(portTypeEl, location, defaultNamespace) {
|
|
62
|
+
const documentation = readDocumentation(portTypeEl, NS.WSDL);
|
|
63
|
+
const operations = childElements(portTypeEl, NS.WSDL, 'operation').map((op) => parseOperation(op, location, defaultNamespace));
|
|
64
|
+
const name = { namespaceUri: defaultNamespace, localName: requireAttribute(portTypeEl, 'name', location) };
|
|
65
|
+
return {
|
|
66
|
+
name,
|
|
67
|
+
...(documentation !== undefined ? { documentation } : {}),
|
|
68
|
+
operations,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
function parseImport(importEl, location) {
|
|
72
|
+
const namespace = optionalAttribute(importEl, 'namespace');
|
|
73
|
+
return {
|
|
74
|
+
...(namespace !== undefined ? { namespace } : {}),
|
|
75
|
+
location: requireAttribute(importEl, 'location', location),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Collects the `xmlns:*` declarations on the root `wsdl:definitions` element.
|
|
80
|
+
* The default (unprefixed) `xmlns` declaration is deliberately excluded: the
|
|
81
|
+
* values these are used to resolve (`wsdl:arrayType`) are always prefixed.
|
|
82
|
+
*/
|
|
83
|
+
function readNamespaceDeclarations(root) {
|
|
84
|
+
const declarations = {};
|
|
85
|
+
const attributes = root.attributes;
|
|
86
|
+
for (let i = 0; i < attributes.length; i += 1) {
|
|
87
|
+
const attribute = attributes.item(i);
|
|
88
|
+
if (attribute !== null && attribute.name.startsWith('xmlns:')) {
|
|
89
|
+
declarations[attribute.name.slice('xmlns:'.length)] = attribute.value;
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return declarations;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Parses a single, already-loaded WSDL 1.1 `Document` into a {@link WsdlDefinition}.
|
|
96
|
+
*
|
|
97
|
+
* Pure and synchronous: it does not resolve `wsdl:import`s or fetch anything,
|
|
98
|
+
* and does not validate cross-references (e.g. a binding's `type` pointing at
|
|
99
|
+
* an unknown `portType`) — only structural requirements of the WSDL document
|
|
100
|
+
* itself (required attributes) are enforced.
|
|
101
|
+
*
|
|
102
|
+
* @param doc the parsed WSDL document
|
|
103
|
+
* @param location a human-readable origin for the document, echoed into the resulting model and errors
|
|
104
|
+
* @throws {WsdlParseError} with code `not-a-wsdl` if the root element is not `{NS.WSDL}definitions`
|
|
105
|
+
* @throws {WsdlParseError} with code `wsdl-invalid` for structural errors (e.g. a missing required attribute)
|
|
106
|
+
*/
|
|
107
|
+
export function parseWsdlDocument(doc, location) {
|
|
108
|
+
const root = doc.documentElement;
|
|
109
|
+
if (root === null || root.namespaceURI !== NS.WSDL || root.localName !== 'definitions') {
|
|
110
|
+
const pos = root !== null ? getPosition(root) : undefined;
|
|
111
|
+
throw new WsdlParseError('not-a-wsdl', `Document at "${location}" is not a WSDL 1.1 <definitions> root`, {
|
|
112
|
+
details: { location, rootTag: root?.tagName, ...pos },
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
const targetNamespace = optionalAttribute(root, 'targetNamespace') ?? '';
|
|
116
|
+
const namespaceDeclarations = readNamespaceDeclarations(root);
|
|
117
|
+
const documentation = readDocumentation(root, NS.WSDL);
|
|
118
|
+
const typesEl = firstChildElement(root, NS.WSDL, 'types');
|
|
119
|
+
const schemaElements = typesEl !== undefined ? childElements(typesEl, NS.XSD, 'schema') : [];
|
|
120
|
+
const imports = childElements(root, NS.WSDL, 'import').map((el) => parseImport(el, location));
|
|
121
|
+
const messages = childElements(root, NS.WSDL, 'message').map((el) => parseMessage(el, location, targetNamespace));
|
|
122
|
+
const portTypes = childElements(root, NS.WSDL, 'portType').map((el) => parsePortType(el, location, targetNamespace));
|
|
123
|
+
const bindings = childElements(root, NS.WSDL, 'binding').map((el) => parseBinding(el, location, targetNamespace));
|
|
124
|
+
const services = childElements(root, NS.WSDL, 'service').map((el) => parseService(el, location, targetNamespace));
|
|
125
|
+
return {
|
|
126
|
+
location,
|
|
127
|
+
targetNamespace,
|
|
128
|
+
...(documentation !== undefined ? { documentation } : {}),
|
|
129
|
+
messages,
|
|
130
|
+
portTypes,
|
|
131
|
+
bindings,
|
|
132
|
+
services,
|
|
133
|
+
schemaElements,
|
|
134
|
+
imports,
|
|
135
|
+
namespaceDeclarations,
|
|
136
|
+
problems: [],
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Parses a WSDL 1.1 document, given its root source.
|
|
141
|
+
*
|
|
142
|
+
* When `options.resolveImports` is `false`, only `root.text` is parsed as a
|
|
143
|
+
* single document (`fetchDocument` is unused). When `true`, the full import
|
|
144
|
+
* graph (`wsdl:import`/`xsd:import`/`xsd:include`/`xsd:redefine`) is resolved
|
|
145
|
+
* via {@link resolveDefinition} and merged via {@link parseWsdlBundle}.
|
|
146
|
+
*
|
|
147
|
+
* @throws {WsdlParseError} propagated from {@link parseWsdlDocument} for `not-a-wsdl`/`wsdl-invalid`
|
|
148
|
+
* @throws {WsdlParseError} with code `fetch-failed` if the root document cannot be fetched while resolving imports
|
|
149
|
+
*/
|
|
150
|
+
export async function parseWsdl(root, options) {
|
|
151
|
+
if (!options.resolveImports) {
|
|
152
|
+
if (root.text === undefined) {
|
|
153
|
+
throw new WsdlParseError('wsdl-invalid', 'root.text is required when resolveImports is false', {
|
|
154
|
+
details: { location: root.location },
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
return parseWsdlDocument(parseXml(root.text, { location: root.location }), root.location);
|
|
158
|
+
}
|
|
159
|
+
const bundle = await resolveDefinition({ location: root.location, ...(root.text !== undefined ? { text: root.text } : {}) }, { fetchDocument: options.fetchDocument, ...(options.signal !== undefined ? { signal: options.signal } : {}) });
|
|
160
|
+
return parseWsdlBundle(bundle);
|
|
161
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { Element } from '@xmldom/xmldom';
|
|
2
|
+
/** A namespace-qualified name: an expanded `{namespaceUri}localName` pair. */
|
|
3
|
+
export interface QName {
|
|
4
|
+
readonly namespaceUri: string;
|
|
5
|
+
readonly localName: string;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Resolves a (possibly prefixed) QName string against the namespaces in
|
|
9
|
+
* scope at `contextElement`, walking ancestors via `lookupNamespaceURI`.
|
|
10
|
+
*
|
|
11
|
+
* An unprefixed name resolves, in order: (1) to the in-scope XML default
|
|
12
|
+
* namespace (an `xmlns="…"` declared on `contextElement` or an ancestor),
|
|
13
|
+
* when one is declared; (2) otherwise to `defaultNamespace`, when given
|
|
14
|
+
* (callers pass the enclosing `wsdl:definitions` `targetNamespace` for WSDL
|
|
15
|
+
* references, mirroring wsdl4j's lenient fallback for documents that omit a
|
|
16
|
+
* default namespace declaration). This applies uniformly to every
|
|
17
|
+
* QName-valued attribute (`message`, `binding`, `type`, `element`, part refs).
|
|
18
|
+
*
|
|
19
|
+
* @param prefixed the raw attribute value, e.g. `"tns:Add"` or `"Add"`
|
|
20
|
+
* @param contextElement the element the value was read from, used to resolve prefixes in scope
|
|
21
|
+
* @param defaultNamespace fallback namespace when `prefixed` carries no prefix and no default namespace is declared in scope
|
|
22
|
+
* @throws {Error} if a prefix is present but not bound in scope
|
|
23
|
+
*/
|
|
24
|
+
export declare function parseQName(prefixed: string, contextElement: Element, defaultNamespace?: string): QName;
|
|
25
|
+
/** True when two QNames refer to the same expanded name. */
|
|
26
|
+
export declare function qnameEquals(a: QName, b: QName): boolean;
|
|
27
|
+
/** Renders a QName in Clark notation: `{namespaceUri}localName`. */
|
|
28
|
+
export declare function qnameToString(qname: QName): string;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolves a (possibly prefixed) QName string against the namespaces in
|
|
3
|
+
* scope at `contextElement`, walking ancestors via `lookupNamespaceURI`.
|
|
4
|
+
*
|
|
5
|
+
* An unprefixed name resolves, in order: (1) to the in-scope XML default
|
|
6
|
+
* namespace (an `xmlns="…"` declared on `contextElement` or an ancestor),
|
|
7
|
+
* when one is declared; (2) otherwise to `defaultNamespace`, when given
|
|
8
|
+
* (callers pass the enclosing `wsdl:definitions` `targetNamespace` for WSDL
|
|
9
|
+
* references, mirroring wsdl4j's lenient fallback for documents that omit a
|
|
10
|
+
* default namespace declaration). This applies uniformly to every
|
|
11
|
+
* QName-valued attribute (`message`, `binding`, `type`, `element`, part refs).
|
|
12
|
+
*
|
|
13
|
+
* @param prefixed the raw attribute value, e.g. `"tns:Add"` or `"Add"`
|
|
14
|
+
* @param contextElement the element the value was read from, used to resolve prefixes in scope
|
|
15
|
+
* @param defaultNamespace fallback namespace when `prefixed` carries no prefix and no default namespace is declared in scope
|
|
16
|
+
* @throws {Error} if a prefix is present but not bound in scope
|
|
17
|
+
*/
|
|
18
|
+
export function parseQName(prefixed, contextElement, defaultNamespace) {
|
|
19
|
+
const trimmed = prefixed.trim();
|
|
20
|
+
const colonIndex = trimmed.indexOf(':');
|
|
21
|
+
if (colonIndex === -1) {
|
|
22
|
+
const declaredDefault = contextElement.lookupNamespaceURI('');
|
|
23
|
+
const namespaceUri = declaredDefault ?? defaultNamespace ?? '';
|
|
24
|
+
return { namespaceUri, localName: trimmed };
|
|
25
|
+
}
|
|
26
|
+
const prefix = trimmed.slice(0, colonIndex);
|
|
27
|
+
const localName = trimmed.slice(colonIndex + 1);
|
|
28
|
+
const namespaceUri = contextElement.lookupNamespaceURI(prefix);
|
|
29
|
+
if (namespaceUri === null) {
|
|
30
|
+
throw new Error(`Unbound namespace prefix "${prefix}" in QName "${prefixed}"`);
|
|
31
|
+
}
|
|
32
|
+
return { namespaceUri, localName };
|
|
33
|
+
}
|
|
34
|
+
/** True when two QNames refer to the same expanded name. */
|
|
35
|
+
export function qnameEquals(a, b) {
|
|
36
|
+
return a.namespaceUri === b.namespaceUri && a.localName === b.localName;
|
|
37
|
+
}
|
|
38
|
+
/** Renders a QName in Clark notation: `{namespaceUri}localName`. */
|
|
39
|
+
export function qnameToString(qname) {
|
|
40
|
+
return `{${qname.namespaceUri}}${qname.localName}`;
|
|
41
|
+
}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a WSDL/XSD document is allowed to reference.
|
|
3
|
+
*
|
|
4
|
+
* Importing a definition means fetching whatever it points at, transitively. Without a policy
|
|
5
|
+
* that is a file-read primitive handed to whoever wrote the WSDL: a remote document whose
|
|
6
|
+
* `xs:import schemaLocation="file:///etc/hosts"` is followed would exfiltrate a local file
|
|
7
|
+
* into the import bundle, which the UI then happily displays. The rule below is deliberately
|
|
8
|
+
* blunt — a nested reference stays in the same world as the root document — because anything
|
|
9
|
+
* subtler is a rule nobody can hold in their head while reading a WSDL.
|
|
10
|
+
*/
|
|
11
|
+
/** How deep an import chain may go before the graph is treated as runaway. */
|
|
12
|
+
export declare const MAX_IMPORT_DEPTH = 32;
|
|
13
|
+
/** How many documents one definition may pull in before the graph is treated as runaway. */
|
|
14
|
+
export declare const MAX_IMPORT_DOCUMENTS = 500;
|
|
15
|
+
/**
|
|
16
|
+
* Classifies an absolute location by the world it lives in: `'file'`, `'http'` (covering
|
|
17
|
+
* `https`, so an `http` root may reference an `https` document and vice versa), or the
|
|
18
|
+
* location's own scheme for anything else (`mem`, `inline`, `dropped`, …).
|
|
19
|
+
*
|
|
20
|
+
* @param location the absolute location to classify
|
|
21
|
+
* @returns the lower-cased scheme, with `https` folded into `http`
|
|
22
|
+
*/
|
|
23
|
+
export declare function classifyLocation(location: string): string;
|
|
24
|
+
/** A refused reference, with the sentence shown to the user. */
|
|
25
|
+
export interface RefusedReference {
|
|
26
|
+
readonly reason: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* The policy a single import graph is resolved under, derived from its root document.
|
|
30
|
+
*
|
|
31
|
+
* - A `file:` root may reference `file:` documents only, and only inside its own directory
|
|
32
|
+
* tree (real paths, so a planted symlink cannot walk out).
|
|
33
|
+
* - An `http(s):` root may reference any `http(s):` host, and never `file:`. Reaching an
|
|
34
|
+
* internal host that way is inherent to importing a remote WSDL — the user asked for that
|
|
35
|
+
* document, and the document says where its schemas live — so it is documented rather than
|
|
36
|
+
* blocked.
|
|
37
|
+
* - Any other root (a pasted `inline:` or dropped `dropped:` document, a test `mem:` one) may
|
|
38
|
+
* reference its own scheme or `http(s):`, and never `file:`: it has no directory of its own,
|
|
39
|
+
* so there is no tree a local reference could be confined to.
|
|
40
|
+
*/
|
|
41
|
+
export interface ReferencePolicy {
|
|
42
|
+
/**
|
|
43
|
+
* Whether `reference` may be fetched, and why not when it may not.
|
|
44
|
+
*
|
|
45
|
+
* @param reference the absolute location the referring document resolved to
|
|
46
|
+
*/
|
|
47
|
+
allows(reference: string): Promise<RefusedReference | undefined>;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Builds the {@link ReferencePolicy} for a graph rooted at `rootLocation`.
|
|
51
|
+
*
|
|
52
|
+
* @param rootLocation the root document's absolute location (post-redirect)
|
|
53
|
+
*/
|
|
54
|
+
export declare function referencePolicyFor(rootLocation: string): ReferencePolicy;
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a WSDL/XSD document is allowed to reference.
|
|
3
|
+
*
|
|
4
|
+
* Importing a definition means fetching whatever it points at, transitively. Without a policy
|
|
5
|
+
* that is a file-read primitive handed to whoever wrote the WSDL: a remote document whose
|
|
6
|
+
* `xs:import schemaLocation="file:///etc/hosts"` is followed would exfiltrate a local file
|
|
7
|
+
* into the import bundle, which the UI then happily displays. The rule below is deliberately
|
|
8
|
+
* blunt — a nested reference stays in the same world as the root document — because anything
|
|
9
|
+
* subtler is a rule nobody can hold in their head while reading a WSDL.
|
|
10
|
+
*/
|
|
11
|
+
import { dirname } from 'node:path';
|
|
12
|
+
import { fileURLToPath } from 'node:url';
|
|
13
|
+
import { isInsideRealDir } from '../fs.js';
|
|
14
|
+
/** How deep an import chain may go before the graph is treated as runaway. */
|
|
15
|
+
export const MAX_IMPORT_DEPTH = 32;
|
|
16
|
+
/** How many documents one definition may pull in before the graph is treated as runaway. */
|
|
17
|
+
export const MAX_IMPORT_DOCUMENTS = 500;
|
|
18
|
+
/**
|
|
19
|
+
* Classifies an absolute location by the world it lives in: `'file'`, `'http'` (covering
|
|
20
|
+
* `https`, so an `http` root may reference an `https` document and vice versa), or the
|
|
21
|
+
* location's own scheme for anything else (`mem`, `inline`, `dropped`, …).
|
|
22
|
+
*
|
|
23
|
+
* @param location the absolute location to classify
|
|
24
|
+
* @returns the lower-cased scheme, with `https` folded into `http`
|
|
25
|
+
*/
|
|
26
|
+
export function classifyLocation(location) {
|
|
27
|
+
const scheme = /^([a-z][a-z0-9+.-]*):/i.exec(location)?.[1]?.toLowerCase();
|
|
28
|
+
if (scheme === undefined) {
|
|
29
|
+
return 'relative';
|
|
30
|
+
}
|
|
31
|
+
return scheme === 'https' ? 'http' : scheme;
|
|
32
|
+
}
|
|
33
|
+
/** The directory of a `file:` URL, or `undefined` when it is not a usable file path here. */
|
|
34
|
+
function toDirOrUndefined(location) {
|
|
35
|
+
try {
|
|
36
|
+
return dirname(fileURLToPath(location));
|
|
37
|
+
}
|
|
38
|
+
catch {
|
|
39
|
+
return undefined;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Builds the {@link ReferencePolicy} for a graph rooted at `rootLocation`.
|
|
44
|
+
*
|
|
45
|
+
* @param rootLocation the root document's absolute location (post-redirect)
|
|
46
|
+
*/
|
|
47
|
+
export function referencePolicyFor(rootLocation) {
|
|
48
|
+
const rootClass = classifyLocation(rootLocation);
|
|
49
|
+
// A `file:` URL that no platform can turn into a path (`file:///x` has no drive letter on
|
|
50
|
+
// Windows) leaves the graph with no folder to be confined to. That is a refusal, not a
|
|
51
|
+
// crash: resolving must report a problem, never throw out of the fetcher.
|
|
52
|
+
const rootDir = rootClass === 'file' ? toDirOrUndefined(rootLocation) : undefined;
|
|
53
|
+
return {
|
|
54
|
+
async allows(reference) {
|
|
55
|
+
const refClass = classifyLocation(reference);
|
|
56
|
+
if (refClass === 'file') {
|
|
57
|
+
if (rootDir === undefined) {
|
|
58
|
+
return {
|
|
59
|
+
reason: rootClass === 'file'
|
|
60
|
+
? "the definition's own location is not a usable file: URL"
|
|
61
|
+
: rootClass === 'http'
|
|
62
|
+
? 'a remote definition may not reference local files'
|
|
63
|
+
: 'only a definition imported from a file may reference local files',
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
let path;
|
|
67
|
+
try {
|
|
68
|
+
path = fileURLToPath(reference);
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
return { reason: 'the reference is not a usable file: URL' };
|
|
72
|
+
}
|
|
73
|
+
if (!(await isInsideRealDir(rootDir, path))) {
|
|
74
|
+
return { reason: `it resolves outside the definition's folder (${rootDir})` };
|
|
75
|
+
}
|
|
76
|
+
return undefined;
|
|
77
|
+
}
|
|
78
|
+
if (rootClass === 'file') {
|
|
79
|
+
return { reason: 'a definition imported from a file may only reference files beside it' };
|
|
80
|
+
}
|
|
81
|
+
if (refClass === rootClass || refClass === 'http') {
|
|
82
|
+
return undefined;
|
|
83
|
+
}
|
|
84
|
+
return { reason: `a ${rootClass}: definition may not reference a ${refClass}: document` };
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import type { Document } from '@xmldom/xmldom';
|
|
2
|
+
/** The root document to resolve, plus an optional pre-fetched body (avoids a redundant fetch of the root). */
|
|
3
|
+
export interface DefinitionSource {
|
|
4
|
+
/** Absolute URL (`http(s)://` or `file://`) identifying the root document. */
|
|
5
|
+
readonly location: string;
|
|
6
|
+
/** Pre-fetched root document text, when the caller already has it in hand. */
|
|
7
|
+
readonly text?: string;
|
|
8
|
+
}
|
|
9
|
+
/** A fetched document's canonical location (post-redirect) and raw content. */
|
|
10
|
+
export interface FetchedDocument {
|
|
11
|
+
/** The final absolute location after following any redirects. */
|
|
12
|
+
readonly location: string;
|
|
13
|
+
readonly bytes: Uint8Array;
|
|
14
|
+
readonly text: string;
|
|
15
|
+
}
|
|
16
|
+
/** Fetches a single document by absolute location, honouring an optional abort signal. */
|
|
17
|
+
export type FetchDocument = (location: string, signal?: AbortSignal) => Promise<FetchedDocument>;
|
|
18
|
+
/** Options for {@link resolveDefinition}. */
|
|
19
|
+
export interface ResolveOptions {
|
|
20
|
+
readonly fetchDocument: FetchDocument;
|
|
21
|
+
readonly signal?: AbortSignal;
|
|
22
|
+
}
|
|
23
|
+
/** A single document collected while resolving a WSDL/XSD import graph. */
|
|
24
|
+
export interface BundledDocument {
|
|
25
|
+
/** The document's canonical (post-redirect) absolute location. */
|
|
26
|
+
readonly location: string;
|
|
27
|
+
/** The absolute location that was requested to obtain this document, prior to any redirect. */
|
|
28
|
+
readonly requestedLocation: string;
|
|
29
|
+
readonly bytes: Uint8Array;
|
|
30
|
+
readonly text: string;
|
|
31
|
+
readonly kind: 'wsdl' | 'xsd';
|
|
32
|
+
/** The location of the document whose `import`/`include`/`redefine` referenced this one, if any (absent for the root). */
|
|
33
|
+
readonly importedBy?: string;
|
|
34
|
+
/** This document's `targetNamespace`, or the namespace a chameleon include adopted from its includer. */
|
|
35
|
+
readonly namespace?: string;
|
|
36
|
+
/** For a chameleon include (an `xs:include` target with no `targetNamespace` of its own): the including document's location. */
|
|
37
|
+
readonly chameleonFor?: string;
|
|
38
|
+
readonly document: Document;
|
|
39
|
+
}
|
|
40
|
+
/** A non-fatal problem encountered while resolving an import graph. */
|
|
41
|
+
export interface ResolveProblem {
|
|
42
|
+
readonly code: 'unsupported-redefine' | 'fetch-failed' | 'unresolved-import' | 'not-xml'
|
|
43
|
+
/** A reference the {@link ReferencePolicy} refused; see `wsdl/ref-policy.ts`. */
|
|
44
|
+
| 'import-ref-refused'
|
|
45
|
+
/** The graph hit the depth or document cap; everything resolved so far is still returned. */
|
|
46
|
+
| 'import-limit';
|
|
47
|
+
readonly message: string;
|
|
48
|
+
readonly location: string;
|
|
49
|
+
readonly line?: number;
|
|
50
|
+
readonly column?: number;
|
|
51
|
+
}
|
|
52
|
+
/** The full set of documents discovered while resolving a WSDL's import graph, plus any problems encountered. */
|
|
53
|
+
export interface DefinitionBundle {
|
|
54
|
+
readonly root: BundledDocument;
|
|
55
|
+
/** Root first, then every imported/included/redefined document in discovery order. */
|
|
56
|
+
readonly documents: readonly BundledDocument[];
|
|
57
|
+
readonly problems: readonly ResolveProblem[];
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Resolves a WSDL/XSD document's full import graph (`wsdl:import`, `xs:import`,
|
|
61
|
+
* `xs:include`, `xs:redefine`) into a flat {@link DefinitionBundle}, fetching
|
|
62
|
+
* every referenced document exactly once (by canonical, post-redirect
|
|
63
|
+
* location) through the injected `fetchDocument`.
|
|
64
|
+
*
|
|
65
|
+
* Every nested reference is first judged against the root document's world (see
|
|
66
|
+
* `wsdl/ref-policy.ts`): a `file:` root may only reference `file:` documents inside its own
|
|
67
|
+
* folder, an `http(s):` root may only reference `http(s):` documents, and a pasted/dropped
|
|
68
|
+
* root may only reference `http(s):` documents. A refused reference becomes an
|
|
69
|
+
* `import-ref-refused` problem and the import continues with what did resolve — so a WSDL
|
|
70
|
+
* cannot be used to read arbitrary local files. The graph is additionally capped at
|
|
71
|
+
* {@link MAX_IMPORT_DEPTH} levels and {@link MAX_IMPORT_DOCUMENTS} documents (`import-limit`).
|
|
72
|
+
*
|
|
73
|
+
* A failed fetch of an imported/included document is recorded as a
|
|
74
|
+
* `fetch-failed` {@link ResolveProblem} and resolution continues with the
|
|
75
|
+
* rest of the graph; a failed fetch of the root document throws instead,
|
|
76
|
+
* since there is nothing to return without it.
|
|
77
|
+
*
|
|
78
|
+
* @throws {WsdlParseError} with code `fetch-failed` if the root document cannot be fetched
|
|
79
|
+
* @throws if `options.signal` is already aborted, or becomes aborted mid-resolution
|
|
80
|
+
*/
|
|
81
|
+
export declare function resolveDefinition(source: DefinitionSource, options: ResolveOptions): Promise<DefinitionBundle>;
|