@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,336 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Turning a JSON Schema into a body a user can send.
|
|
3
|
+
*
|
|
4
|
+
* The generator is deliberately dull and deterministic: the same schema always produces the same
|
|
5
|
+
* sample, so an imported request is reviewable and a golden test means something. It answers one
|
|
6
|
+
* question per node — "what is the most specific thing this schema says a value looks like?" — and
|
|
7
|
+
* takes the first answer it finds: an `example`, then a `default`, then a `const`, then the first
|
|
8
|
+
* `enum` member, then the type's own empty value.
|
|
9
|
+
*
|
|
10
|
+
* Three rules keep the output usable rather than merely correct:
|
|
11
|
+
*
|
|
12
|
+
* - **Required properties are always present, optional ones follow the preference.** A body missing a
|
|
13
|
+
* required field is a request that cannot succeed, so it is never generated that way.
|
|
14
|
+
* - **A composition is not a puzzle to solve.** `allOf` is merged (its whole point), and `oneOf` and
|
|
15
|
+
* `anyOf` take their first branch — picking "the right one" needs an intent the document does not
|
|
16
|
+
* carry, and a body from the first branch is one the user can see and change.
|
|
17
|
+
* - **Depth is capped**, and a `$ref` the resolver left in place is a cut. A self-referencing schema
|
|
18
|
+
* is normal in a description, so it has to end in a finite document rather than a stack overflow.
|
|
19
|
+
*/
|
|
20
|
+
/** How deep generation goes before it stops and emits `null`. */
|
|
21
|
+
export const MAX_SAMPLE_DEPTH = 8;
|
|
22
|
+
/**
|
|
23
|
+
* How many values one sample may contain before generation stops adding to it.
|
|
24
|
+
*
|
|
25
|
+
* The depth cap alone is not a bound: a resolved description is a *graph*, not a tree — a `$ref` to a
|
|
26
|
+
* shared schema is one object reachable from many places — so a document whose schemas reference each
|
|
27
|
+
* other reaches `breadth ^ depth` nodes, which for a realistic 20-property schema is billions at
|
|
28
|
+
* depth 8. A total budget makes generation linear in the size of what it produces, whatever shape the
|
|
29
|
+
* schema graph has. Required properties are still emitted first, so what a truncated sample keeps is
|
|
30
|
+
* the part a request cannot go without.
|
|
31
|
+
*/
|
|
32
|
+
export const MAX_SAMPLE_NODES = 2_000;
|
|
33
|
+
/** The placeholder values a `format` maps to, used only when `sampleValues` is on. */
|
|
34
|
+
const FORMAT_VALUES = {
|
|
35
|
+
'date-time': '2026-01-01T00:00:00Z',
|
|
36
|
+
date: '2026-01-01',
|
|
37
|
+
time: '00:00:00Z',
|
|
38
|
+
duration: 'P1D',
|
|
39
|
+
uuid: '00000000-0000-4000-8000-000000000000',
|
|
40
|
+
email: 'user@example.com',
|
|
41
|
+
hostname: 'example.com',
|
|
42
|
+
uri: 'https://example.com',
|
|
43
|
+
'uri-reference': '/path',
|
|
44
|
+
ipv4: '192.0.2.1',
|
|
45
|
+
ipv6: '2001:db8::1',
|
|
46
|
+
password: 'secret',
|
|
47
|
+
byte: 'AA==',
|
|
48
|
+
binary: '',
|
|
49
|
+
};
|
|
50
|
+
/** Every type a schema declares, as a set — 3.1 allows a list, which is how it spells nullable. */
|
|
51
|
+
function typesOf(schema) {
|
|
52
|
+
const declared = schema.type;
|
|
53
|
+
if (declared === undefined) {
|
|
54
|
+
return new Set();
|
|
55
|
+
}
|
|
56
|
+
return new Set(typeof declared === 'string' ? [declared] : declared);
|
|
57
|
+
}
|
|
58
|
+
/** Whether the schema says a value may be `null`, in either specification's spelling. */
|
|
59
|
+
function isNullable(schema) {
|
|
60
|
+
return schema.nullable === true || typesOf(schema).has('null');
|
|
61
|
+
}
|
|
62
|
+
/** The type to generate for, ignoring `null` — which is an alternative, not a shape. */
|
|
63
|
+
function effectiveType(schema) {
|
|
64
|
+
for (const type of typesOf(schema)) {
|
|
65
|
+
if (type !== 'null') {
|
|
66
|
+
return type;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
// No `type` at all: a schema with properties is an object, one with items an array. This is what
|
|
70
|
+
// a reader would assume, and documents in the wild leave `type` out constantly.
|
|
71
|
+
if (schema.properties !== undefined || schema.additionalProperties !== undefined) {
|
|
72
|
+
return 'object';
|
|
73
|
+
}
|
|
74
|
+
if (schema.items !== undefined) {
|
|
75
|
+
return 'array';
|
|
76
|
+
}
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The value a schema states outright, if any: `example`, `default`, `const`, or its first `enum`.
|
|
81
|
+
*
|
|
82
|
+
* 3.1's `examples` array is read too, first entry first, because that is the only spelling a 3.1
|
|
83
|
+
* document has.
|
|
84
|
+
*/
|
|
85
|
+
function statedValue(schema) {
|
|
86
|
+
if (schema.example !== undefined) {
|
|
87
|
+
return schema.example;
|
|
88
|
+
}
|
|
89
|
+
if (schema.examples !== undefined && schema.examples.length > 0) {
|
|
90
|
+
return schema.examples[0];
|
|
91
|
+
}
|
|
92
|
+
if (schema.default !== undefined) {
|
|
93
|
+
return schema.default;
|
|
94
|
+
}
|
|
95
|
+
if (schema.const !== undefined) {
|
|
96
|
+
return schema.const;
|
|
97
|
+
}
|
|
98
|
+
if (schema.enum !== undefined && schema.enum.length > 0) {
|
|
99
|
+
return schema.enum[0];
|
|
100
|
+
}
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
/** A copy of a schema without the keywords the caller has already accounted for. */
|
|
104
|
+
function without(schema, ...keys) {
|
|
105
|
+
const copy = { ...schema };
|
|
106
|
+
for (const key of keys) {
|
|
107
|
+
delete copy[key];
|
|
108
|
+
}
|
|
109
|
+
return copy;
|
|
110
|
+
}
|
|
111
|
+
/** The schema an `allOf` amounts to: every branch merged, later branches filling in blanks. */
|
|
112
|
+
function mergeAllOf(schema) {
|
|
113
|
+
if (schema.allOf === undefined || schema.allOf.length === 0) {
|
|
114
|
+
return schema;
|
|
115
|
+
}
|
|
116
|
+
let properties = { ...schema.properties };
|
|
117
|
+
let required = [...(schema.required ?? [])];
|
|
118
|
+
let merged = { ...schema };
|
|
119
|
+
for (const branch of schema.allOf) {
|
|
120
|
+
const flattened = mergeAllOf(branch);
|
|
121
|
+
properties = { ...properties, ...flattened.properties };
|
|
122
|
+
required = [...required, ...(flattened.required ?? [])];
|
|
123
|
+
merged = { ...flattened, ...merged };
|
|
124
|
+
}
|
|
125
|
+
return {
|
|
126
|
+
...without(merged, 'allOf'),
|
|
127
|
+
...(Object.keys(properties).length > 0 ? { properties } : {}),
|
|
128
|
+
...(required.length > 0 ? { required: [...new Set(required)] } : {}),
|
|
129
|
+
};
|
|
130
|
+
}
|
|
131
|
+
/** The branch a `oneOf`/`anyOf` generates from: the first, merged with whatever sits beside it. */
|
|
132
|
+
function firstBranch(schema) {
|
|
133
|
+
const branch = schema.oneOf?.[0] ?? schema.anyOf?.[0];
|
|
134
|
+
if (branch === undefined) {
|
|
135
|
+
return schema;
|
|
136
|
+
}
|
|
137
|
+
return mergeAllOf({
|
|
138
|
+
...branch,
|
|
139
|
+
...without(schema, 'oneOf', 'anyOf'),
|
|
140
|
+
...(branch.properties !== undefined ? { properties: branch.properties } : {}),
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* A sample value for one schema.
|
|
145
|
+
*
|
|
146
|
+
* @param schema the schema, with its references already inlined (see `refs.ts`)
|
|
147
|
+
* @returns a JSON value — `null` where generation had to stop
|
|
148
|
+
*/
|
|
149
|
+
export function sampleFromSchema(schema, options = {}) {
|
|
150
|
+
return generate(schema, options, options.maxDepth ?? MAX_SAMPLE_DEPTH, {
|
|
151
|
+
remaining: options.maxNodes ?? MAX_SAMPLE_NODES,
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
function generate(input, options, depth, nodes) {
|
|
155
|
+
// A reference the resolver could not follow, or cut as a cycle: there is nothing to generate from,
|
|
156
|
+
// and `null` is the honest answer. The same answer the depth cap gives, for the same reason.
|
|
157
|
+
if (input.$ref !== undefined && input.type === undefined && input.properties === undefined) {
|
|
158
|
+
return null;
|
|
159
|
+
}
|
|
160
|
+
if (nodes.remaining <= 0) {
|
|
161
|
+
return null;
|
|
162
|
+
}
|
|
163
|
+
// Charged before the depth check as well, so *every* value this function returns costs exactly one
|
|
164
|
+
// — including the `null` the depth cap emits. That is what makes the budget an exact bound on the
|
|
165
|
+
// size of the sample rather than a bound on its objects alone.
|
|
166
|
+
nodes.remaining -= 1;
|
|
167
|
+
if (depth <= 0) {
|
|
168
|
+
return null;
|
|
169
|
+
}
|
|
170
|
+
const schema = firstBranch(mergeAllOf(input));
|
|
171
|
+
const stated = statedValue(schema);
|
|
172
|
+
if (stated !== undefined) {
|
|
173
|
+
return stated;
|
|
174
|
+
}
|
|
175
|
+
switch (effectiveType(schema)) {
|
|
176
|
+
case 'object':
|
|
177
|
+
return generateObject(schema, options, depth, nodes);
|
|
178
|
+
case 'array':
|
|
179
|
+
return generateArray(schema, options, depth, nodes);
|
|
180
|
+
case 'string':
|
|
181
|
+
return generateString(schema, options);
|
|
182
|
+
case 'integer':
|
|
183
|
+
case 'number':
|
|
184
|
+
return 0;
|
|
185
|
+
case 'boolean':
|
|
186
|
+
return false;
|
|
187
|
+
case 'null':
|
|
188
|
+
return null;
|
|
189
|
+
default:
|
|
190
|
+
// A schema with no type and no shape says nothing at all about its value. `null` says that,
|
|
191
|
+
// where `{}` or `""` would claim something the document never did.
|
|
192
|
+
return isNullable(schema) ? null : null;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
function generateObject(schema, options, depth, nodes) {
|
|
196
|
+
const required = new Set(schema.required ?? []);
|
|
197
|
+
const out = {};
|
|
198
|
+
// Required properties first, so a sample cut short by the budget still carries what a request
|
|
199
|
+
// cannot be sent without.
|
|
200
|
+
const names = Object.keys(schema.properties ?? {}).sort((left, right) => Number(required.has(right)) - Number(required.has(left)));
|
|
201
|
+
for (const name of names) {
|
|
202
|
+
const property = schema.properties?.[name];
|
|
203
|
+
if (property === undefined) {
|
|
204
|
+
continue;
|
|
205
|
+
}
|
|
206
|
+
// A read-only property is one the server sends back, never one the client sends, so a generated
|
|
207
|
+
// request body leaves it out even when the schema requires it in a response.
|
|
208
|
+
if (property.readOnly === true) {
|
|
209
|
+
continue;
|
|
210
|
+
}
|
|
211
|
+
if (!required.has(name) && options.includeOptional !== true) {
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
if (nodes.remaining <= 0) {
|
|
215
|
+
break;
|
|
216
|
+
}
|
|
217
|
+
out[name] = generate(property, options, depth - 1, nodes);
|
|
218
|
+
}
|
|
219
|
+
// A free-form object (`additionalProperties` with no `properties`) has nothing nameable in it, so
|
|
220
|
+
// it stays empty rather than inventing a key.
|
|
221
|
+
return out;
|
|
222
|
+
}
|
|
223
|
+
function generateArray(schema, options, depth, nodes) {
|
|
224
|
+
if (schema.items === undefined) {
|
|
225
|
+
return [];
|
|
226
|
+
}
|
|
227
|
+
// One item: enough to show the shape, few enough to edit. More would only be guessing.
|
|
228
|
+
return [generate(schema.items, options, depth - 1, nodes)];
|
|
229
|
+
}
|
|
230
|
+
function generateString(schema, options) {
|
|
231
|
+
if (options.sampleValues === true && schema.format !== undefined) {
|
|
232
|
+
return FORMAT_VALUES[schema.format] ?? '';
|
|
233
|
+
}
|
|
234
|
+
return '';
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* A sample XML body for a schema, honouring its `xml` object: `name`, `attribute`, `wrapped`, and a
|
|
238
|
+
* `prefix`/`namespace` pair.
|
|
239
|
+
*
|
|
240
|
+
* Written here rather than through the XSD sample generator because the shape comes from JSON Schema,
|
|
241
|
+
* not from an XSD: there is no schema set to resolve against, and the `xml` object is OpenAPI's own.
|
|
242
|
+
*/
|
|
243
|
+
export function sampleXml(schema, options = {}) {
|
|
244
|
+
const indent = options.indent ?? ' ';
|
|
245
|
+
const merged = firstBranch(mergeAllOf(schema));
|
|
246
|
+
const name = merged.xml?.name ?? options.rootName ?? 'root';
|
|
247
|
+
const nodes = { remaining: options.maxNodes ?? MAX_SAMPLE_NODES };
|
|
248
|
+
return renderElement(merged, name, options, options.maxDepth ?? MAX_SAMPLE_DEPTH, indent, 0, nodes).join('\n');
|
|
249
|
+
}
|
|
250
|
+
/** The tag name for an element, with its `xml.prefix` when it has one. */
|
|
251
|
+
function tagOf(schema, name) {
|
|
252
|
+
const local = schema.xml?.name ?? name;
|
|
253
|
+
return schema.xml?.prefix !== undefined ? `${schema.xml.prefix}:${local}` : local;
|
|
254
|
+
}
|
|
255
|
+
/** The `xmlns` attribute a namespace declaration needs, if any. */
|
|
256
|
+
function namespaceAttribute(xml) {
|
|
257
|
+
if (xml?.namespace === undefined) {
|
|
258
|
+
return '';
|
|
259
|
+
}
|
|
260
|
+
return xml.prefix !== undefined
|
|
261
|
+
? ` xmlns:${xml.prefix}="${escape(xml.namespace)}"`
|
|
262
|
+
: ` xmlns="${escape(xml.namespace)}"`;
|
|
263
|
+
}
|
|
264
|
+
function escape(value) {
|
|
265
|
+
return value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
266
|
+
}
|
|
267
|
+
/** One element and everything inside it, as lines at `depth`. */
|
|
268
|
+
function renderElement(input, name, options, remainingDepth, indent, depth, nodes) {
|
|
269
|
+
const pad = indent.repeat(depth);
|
|
270
|
+
const schema = firstBranch(mergeAllOf(input));
|
|
271
|
+
const tag = tagOf(schema, name);
|
|
272
|
+
// The same two bounds the JSON generator has, and for the same reason: a resolved description is a
|
|
273
|
+
// graph, so depth alone does not bound the work.
|
|
274
|
+
if (remainingDepth <= 0 || nodes.remaining <= 0) {
|
|
275
|
+
return [`${pad}<${tag}/>`];
|
|
276
|
+
}
|
|
277
|
+
nodes.remaining -= 1;
|
|
278
|
+
const type = effectiveType(schema);
|
|
279
|
+
if (type === 'object') {
|
|
280
|
+
const required = new Set(schema.required ?? []);
|
|
281
|
+
const attributes = [];
|
|
282
|
+
const children = [];
|
|
283
|
+
for (const [property, propertySchema] of Object.entries(schema.properties ?? {})) {
|
|
284
|
+
if (propertySchema.readOnly === true) {
|
|
285
|
+
continue;
|
|
286
|
+
}
|
|
287
|
+
if (!required.has(property) && options.includeOptional !== true) {
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
290
|
+
// An `xml.attribute` property is an attribute of *this* element, not a child of it.
|
|
291
|
+
if (propertySchema.xml?.attribute === true) {
|
|
292
|
+
const attributeName = tagOf(propertySchema, property);
|
|
293
|
+
attributes.push(`${attributeName}="${escape(scalarText(propertySchema, options))}"`);
|
|
294
|
+
continue;
|
|
295
|
+
}
|
|
296
|
+
if (nodes.remaining <= 0) {
|
|
297
|
+
break;
|
|
298
|
+
}
|
|
299
|
+
children.push(...renderProperty(propertySchema, property, options, remainingDepth - 1, indent, depth + 1, nodes));
|
|
300
|
+
}
|
|
301
|
+
const open = `<${tag}${namespaceAttribute(schema.xml)}${attributes.length > 0 ? ` ${attributes.join(' ')}` : ''}`;
|
|
302
|
+
if (children.length === 0) {
|
|
303
|
+
return [`${pad}${open}/>`];
|
|
304
|
+
}
|
|
305
|
+
return [`${pad}${open}>`, ...children, `${pad}</${tag}>`];
|
|
306
|
+
}
|
|
307
|
+
if (type === 'array') {
|
|
308
|
+
return renderProperty(schema, name, options, remainingDepth, indent, depth, nodes);
|
|
309
|
+
}
|
|
310
|
+
return [`${pad}<${tag}${namespaceAttribute(schema.xml)}>${escape(scalarText(schema, options))}</${tag}>`];
|
|
311
|
+
}
|
|
312
|
+
/** One property, which for an array is either wrapped or repeated in place. */
|
|
313
|
+
function renderProperty(schema, name, options, remainingDepth, indent, depth, nodes) {
|
|
314
|
+
if (effectiveType(schema) !== 'array' || schema.items === undefined) {
|
|
315
|
+
return renderElement(schema, name, options, remainingDepth, indent, depth, nodes);
|
|
316
|
+
}
|
|
317
|
+
// `wrapped` puts the items inside an element named for the property; without it they repeat in
|
|
318
|
+
// place under the item's own name, which is XML's own default for a list.
|
|
319
|
+
const itemName = schema.items.xml?.name ?? name;
|
|
320
|
+
const item = renderElement(schema.items, itemName, options, remainingDepth - 1, indent, schema.xml?.wrapped === true ? depth + 1 : depth, nodes);
|
|
321
|
+
if (schema.xml?.wrapped !== true) {
|
|
322
|
+
return item;
|
|
323
|
+
}
|
|
324
|
+
const pad = indent.repeat(depth);
|
|
325
|
+
const tag = tagOf(schema, name);
|
|
326
|
+
return [`${pad}<${tag}${namespaceAttribute(schema.xml)}>`, ...item, `${pad}</${tag}>`];
|
|
327
|
+
}
|
|
328
|
+
/** The text a scalar schema renders as — the same precedence `sampleFromSchema` uses. */
|
|
329
|
+
function scalarText(schema, options) {
|
|
330
|
+
const value = generate(schema, options, 1, { remaining: 1 });
|
|
331
|
+
if (value === null) {
|
|
332
|
+
return '';
|
|
333
|
+
}
|
|
334
|
+
// Only scalars reach here in practice; a composite says so as JSON rather than `[object Object]`.
|
|
335
|
+
return typeof value === 'string' ? value : JSON.stringify(value);
|
|
336
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading a Postman Collection from a file or text and turning it into a Wirebench REST API.
|
|
3
|
+
*/
|
|
4
|
+
import type { MapPostmanOptions, MappedPostmanApi } from './map.js';
|
|
5
|
+
/** Where a Postman collection comes from: a file on disk or text already held in memory. */
|
|
6
|
+
export type PostmanSource = {
|
|
7
|
+
readonly kind: 'file';
|
|
8
|
+
readonly path: string;
|
|
9
|
+
} | {
|
|
10
|
+
readonly kind: 'text';
|
|
11
|
+
readonly text: string;
|
|
12
|
+
};
|
|
13
|
+
export type ImportPostmanOptions = MapPostmanOptions;
|
|
14
|
+
/** Largest collection accepted, in bytes (file) or UTF-16 code units (text). */
|
|
15
|
+
export declare const MAX_POSTMAN_INPUT_BYTES: number;
|
|
16
|
+
/**
|
|
17
|
+
* Reads, parses, and maps a Postman Collection (v2.0 or v2.1) into a Wirebench REST API.
|
|
18
|
+
*
|
|
19
|
+
* @throws PostmanError when the file cannot be read, the JSON is malformed, or the shape is not a Postman collection.
|
|
20
|
+
*/
|
|
21
|
+
export declare function importPostmanCollection(source: PostmanSource, options?: ImportPostmanOptions): Promise<MappedPostmanApi>;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reading a Postman Collection from a file or text and turning it into a Wirebench REST API.
|
|
3
|
+
*/
|
|
4
|
+
import { readFile, stat } from 'node:fs/promises';
|
|
5
|
+
import { PostmanError } from '../../errors.js';
|
|
6
|
+
import { apiFromPostmanCollection } from './map.js';
|
|
7
|
+
import { parsePostmanCollectionText } from './parse.js';
|
|
8
|
+
/** Largest collection accepted, in bytes (file) or UTF-16 code units (text). */
|
|
9
|
+
export const MAX_POSTMAN_INPUT_BYTES = 50 * 1024 * 1024;
|
|
10
|
+
function tooLarge() {
|
|
11
|
+
return new PostmanError('postman-too-large', `The Postman collection is larger than ${MAX_POSTMAN_INPUT_BYTES / (1024 * 1024)} MB`);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Reads, parses, and maps a Postman Collection (v2.0 or v2.1) into a Wirebench REST API.
|
|
15
|
+
*
|
|
16
|
+
* @throws PostmanError when the file cannot be read, the JSON is malformed, or the shape is not a Postman collection.
|
|
17
|
+
*/
|
|
18
|
+
export async function importPostmanCollection(source, options = {}) {
|
|
19
|
+
let text;
|
|
20
|
+
if (source.kind === 'text') {
|
|
21
|
+
if (source.text.length > MAX_POSTMAN_INPUT_BYTES)
|
|
22
|
+
throw tooLarge();
|
|
23
|
+
text = source.text;
|
|
24
|
+
}
|
|
25
|
+
else if (source.kind === 'file') {
|
|
26
|
+
let size;
|
|
27
|
+
try {
|
|
28
|
+
size = (await stat(source.path)).size;
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
size = undefined; // reported by readFile below
|
|
32
|
+
}
|
|
33
|
+
if (size !== undefined && size > MAX_POSTMAN_INPUT_BYTES)
|
|
34
|
+
throw tooLarge();
|
|
35
|
+
try {
|
|
36
|
+
text = await readFile(source.path, 'utf8');
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
throw new PostmanError('postman-read-failed', `Failed to read Postman collection from "${source.path}": ${error instanceof Error ? error.message : String(error)}`, { cause: error });
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
throw new PostmanError('postman-source-invalid', 'Invalid Postman source provided');
|
|
44
|
+
}
|
|
45
|
+
const collection = parsePostmanCollectionText(text);
|
|
46
|
+
return apiFromPostmanCollection(collection, options);
|
|
47
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure mapping from Postman Collection v2.0/v2.1 documents to Wirebench REST entities.
|
|
3
|
+
*
|
|
4
|
+
* Recursively maps Postman items into `RestFolder` and `RestRequestDef` trees, preserving author
|
|
5
|
+
* order, variable substitutions (`${var}`), path parameter definitions, headers, query parameters,
|
|
6
|
+
* request bodies (raw, urlencoded, formdata, binary), and auth configurations.
|
|
7
|
+
*/
|
|
8
|
+
import type { IdGenerator } from '../../project/model.js';
|
|
9
|
+
import type { RestApi } from '../model.js';
|
|
10
|
+
import type { PostmanCollection, PostmanImportSummary } from './model.js';
|
|
11
|
+
export interface MapPostmanOptions {
|
|
12
|
+
/** The API's name. Defaults to collection `info.name`. */
|
|
13
|
+
readonly name?: string;
|
|
14
|
+
/** The base URL. Defaults to the inferred base URL, baseUrl variable, or empty. */
|
|
15
|
+
readonly baseUrl?: string;
|
|
16
|
+
/** Injectable id generator. */
|
|
17
|
+
readonly newId?: IdGenerator;
|
|
18
|
+
/** Order in project. */
|
|
19
|
+
readonly order?: number;
|
|
20
|
+
}
|
|
21
|
+
export interface MappedPostmanApi {
|
|
22
|
+
readonly api: RestApi;
|
|
23
|
+
readonly summary: PostmanImportSummary;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Maps a parsed Postman Collection into a Wirebench REST API and import summary.
|
|
27
|
+
*/
|
|
28
|
+
export declare function apiFromPostmanCollection(collection: PostmanCollection, options?: MapPostmanOptions): MappedPostmanApi;
|