@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,36 @@
|
|
|
1
|
+
import type { QName } from '../wsdl/qname.js';
|
|
2
|
+
/** A built-in XSD (or SOAP-encoding) type known to the engine without a schema declaration. */
|
|
3
|
+
export interface BuiltinType {
|
|
4
|
+
readonly name: QName;
|
|
5
|
+
/** The type this one derives from, for the derived built-ins. */
|
|
6
|
+
readonly base?: QName;
|
|
7
|
+
/** True for the 19 XSD primitive datatypes (plus the two ur-types, which have no base). */
|
|
8
|
+
readonly primitive: boolean;
|
|
9
|
+
/** True for `soapenc:Array`, the only complex built-in. */
|
|
10
|
+
readonly complex?: boolean;
|
|
11
|
+
/** Set on `soapenc:Array` so encoded-array handling can special-case it. */
|
|
12
|
+
readonly soapEncArray?: boolean;
|
|
13
|
+
/** For a `soapenc:*` alias: the XSD type it aliases. */
|
|
14
|
+
readonly aliasOf?: QName;
|
|
15
|
+
/**
|
|
16
|
+
* A type-appropriate example value, used only when a caller explicitly asks
|
|
17
|
+
* for realistic sample data. The default everywhere is {@link BuiltinType.placeholder}.
|
|
18
|
+
*/
|
|
19
|
+
readonly sampleValue: string;
|
|
20
|
+
/** The placeholder emitted by default for every built-in. */
|
|
21
|
+
readonly placeholder: '?';
|
|
22
|
+
}
|
|
23
|
+
/** Every built-in type, keyed by Clark notation (`{ns}local`). */
|
|
24
|
+
export declare const BUILTIN_TYPES: ReadonlyMap<string, BuiltinType>;
|
|
25
|
+
/** The local names of every XSD 1.0 built-in type. */
|
|
26
|
+
export declare const XSD_BUILTIN_NAMES: readonly string[];
|
|
27
|
+
/**
|
|
28
|
+
* Attributes the SOAP 1.1 encoding namespace defines (`soapenc:arrayType` and
|
|
29
|
+
* friends). References to these never resolve against a user schema, so the
|
|
30
|
+
* schema set treats them as known rather than reporting `unresolved-ref`.
|
|
31
|
+
*/
|
|
32
|
+
export declare const SOAP_ENC_ATTRIBUTES: readonly string[];
|
|
33
|
+
/** Looks up a built-in type by expanded name, or `undefined` when it is not one. */
|
|
34
|
+
export declare function lookupBuiltin(name: QName): BuiltinType | undefined;
|
|
35
|
+
/** True when `name` denotes a built-in XSD (or SOAP-encoding) type. */
|
|
36
|
+
export declare function isBuiltinType(name: QName): boolean;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { NS } from '../xml/namespaces.js';
|
|
2
|
+
import { qnameToString } from '../wsdl/qname.js';
|
|
3
|
+
/** `[localName, baseLocalName | undefined, sampleValue]` for each XSD 1.0 built-in. */
|
|
4
|
+
const XSD_TABLE = [
|
|
5
|
+
// ur-types
|
|
6
|
+
['anyType', undefined, 'string'],
|
|
7
|
+
['anySimpleType', undefined, 'string'],
|
|
8
|
+
// primitives
|
|
9
|
+
['string', undefined, 'string'],
|
|
10
|
+
['boolean', undefined, 'true'],
|
|
11
|
+
['decimal', undefined, '1.0'],
|
|
12
|
+
['float', undefined, '1.0'],
|
|
13
|
+
['double', undefined, '1.0'],
|
|
14
|
+
['duration', undefined, 'P1D'],
|
|
15
|
+
['dateTime', undefined, '2000-01-01T00:00:00'],
|
|
16
|
+
['time', undefined, '00:00:00'],
|
|
17
|
+
['date', undefined, '2000-01-01'],
|
|
18
|
+
['gYearMonth', undefined, '2000-01'],
|
|
19
|
+
['gYear', undefined, '2000'],
|
|
20
|
+
['gMonthDay', undefined, '--01-01'],
|
|
21
|
+
['gDay', undefined, '---01'],
|
|
22
|
+
['gMonth', undefined, '--01'],
|
|
23
|
+
['hexBinary', undefined, '61'],
|
|
24
|
+
['base64Binary', undefined, 'YQ=='],
|
|
25
|
+
['anyURI', undefined, 'http://example.com'],
|
|
26
|
+
['QName', undefined, 'QName'],
|
|
27
|
+
['NOTATION', undefined, 'NOTATION'],
|
|
28
|
+
// derived from string
|
|
29
|
+
['normalizedString', 'string', 'string'],
|
|
30
|
+
['token', 'normalizedString', 'string'],
|
|
31
|
+
['language', 'token', 'en'],
|
|
32
|
+
['NMTOKEN', 'token', 'token'],
|
|
33
|
+
['NMTOKENS', 'NMTOKEN', 'token'],
|
|
34
|
+
['Name', 'token', 'name'],
|
|
35
|
+
['NCName', 'Name', 'name'],
|
|
36
|
+
['ID', 'NCName', 'id'],
|
|
37
|
+
['IDREF', 'NCName', 'id'],
|
|
38
|
+
['IDREFS', 'IDREF', 'id'],
|
|
39
|
+
['ENTITY', 'NCName', 'entity'],
|
|
40
|
+
['ENTITIES', 'ENTITY', 'entity'],
|
|
41
|
+
// derived from decimal
|
|
42
|
+
['integer', 'decimal', '1'],
|
|
43
|
+
['nonPositiveInteger', 'integer', '-1'],
|
|
44
|
+
['negativeInteger', 'nonPositiveInteger', '-1'],
|
|
45
|
+
['long', 'integer', '1'],
|
|
46
|
+
['int', 'long', '1'],
|
|
47
|
+
['short', 'int', '1'],
|
|
48
|
+
['byte', 'short', '1'],
|
|
49
|
+
['nonNegativeInteger', 'integer', '1'],
|
|
50
|
+
['unsignedLong', 'nonNegativeInteger', '1'],
|
|
51
|
+
['unsignedInt', 'unsignedLong', '1'],
|
|
52
|
+
['unsignedShort', 'unsignedInt', '1'],
|
|
53
|
+
['unsignedByte', 'unsignedShort', '1'],
|
|
54
|
+
['positiveInteger', 'nonNegativeInteger', '1'],
|
|
55
|
+
];
|
|
56
|
+
function buildTable() {
|
|
57
|
+
const map = new Map();
|
|
58
|
+
for (const [localName, base, sampleValue] of XSD_TABLE) {
|
|
59
|
+
const name = { namespaceUri: NS.XSD, localName };
|
|
60
|
+
map.set(qnameToString(name), {
|
|
61
|
+
name,
|
|
62
|
+
...(base !== undefined ? { base: { namespaceUri: NS.XSD, localName: base } } : {}),
|
|
63
|
+
primitive: base === undefined,
|
|
64
|
+
sampleValue,
|
|
65
|
+
placeholder: '?',
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
// SOAP 1.1 encoding mirrors the XSD simple types one-for-one; treat each as an
|
|
69
|
+
// alias so `soapenc:int` behaves exactly like `xs:int` for generation purposes.
|
|
70
|
+
for (const [localName, , sampleValue] of XSD_TABLE) {
|
|
71
|
+
const name = { namespaceUri: NS.SOAP11_ENC, localName };
|
|
72
|
+
map.set(qnameToString(name), {
|
|
73
|
+
name,
|
|
74
|
+
aliasOf: { namespaceUri: NS.XSD, localName },
|
|
75
|
+
primitive: false,
|
|
76
|
+
sampleValue,
|
|
77
|
+
placeholder: '?',
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
const arrayName = { namespaceUri: NS.SOAP11_ENC, localName: 'Array' };
|
|
81
|
+
map.set(qnameToString(arrayName), {
|
|
82
|
+
name: arrayName,
|
|
83
|
+
primitive: false,
|
|
84
|
+
complex: true,
|
|
85
|
+
soapEncArray: true,
|
|
86
|
+
sampleValue: '',
|
|
87
|
+
placeholder: '?',
|
|
88
|
+
});
|
|
89
|
+
return map;
|
|
90
|
+
}
|
|
91
|
+
/** Every built-in type, keyed by Clark notation (`{ns}local`). */
|
|
92
|
+
export const BUILTIN_TYPES = buildTable();
|
|
93
|
+
/** The local names of every XSD 1.0 built-in type. */
|
|
94
|
+
export const XSD_BUILTIN_NAMES = XSD_TABLE.map(([localName]) => localName);
|
|
95
|
+
/**
|
|
96
|
+
* Attributes the SOAP 1.1 encoding namespace defines (`soapenc:arrayType` and
|
|
97
|
+
* friends). References to these never resolve against a user schema, so the
|
|
98
|
+
* schema set treats them as known rather than reporting `unresolved-ref`.
|
|
99
|
+
*/
|
|
100
|
+
export const SOAP_ENC_ATTRIBUTES = ['arrayType', 'offset', 'position', 'id', 'href', 'root'];
|
|
101
|
+
/** Looks up a built-in type by expanded name, or `undefined` when it is not one. */
|
|
102
|
+
export function lookupBuiltin(name) {
|
|
103
|
+
return BUILTIN_TYPES.get(qnameToString(name));
|
|
104
|
+
}
|
|
105
|
+
/** True when `name` denotes a built-in XSD (or SOAP-encoding) type. */
|
|
106
|
+
export function isBuiltinType(name) {
|
|
107
|
+
return BUILTIN_TYPES.has(qnameToString(name));
|
|
108
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { QName } from '../wsdl/qname.js';
|
|
2
|
+
import type { AttributeDecl, AttributeGroup, ElementDecl, Group, SchemaProblem, TypeDefinition } from './model.js';
|
|
3
|
+
/** The parts of a built `SchemaSet` the reference check reads. */
|
|
4
|
+
export interface ReferenceCheckTarget {
|
|
5
|
+
readonly elements: ReadonlyMap<string, ElementDecl>;
|
|
6
|
+
readonly types: ReadonlyMap<string, TypeDefinition>;
|
|
7
|
+
readonly groups: ReadonlyMap<string, Group>;
|
|
8
|
+
readonly attributeGroups: ReadonlyMap<string, AttributeGroup>;
|
|
9
|
+
readonly attributes: ReadonlyMap<string, AttributeDecl>;
|
|
10
|
+
lookupElement(name: QName): ElementDecl | undefined;
|
|
11
|
+
lookupType(name: QName): TypeDefinition | undefined;
|
|
12
|
+
lookupGroup(name: QName): Group | undefined;
|
|
13
|
+
lookupAttributeGroup(name: QName): AttributeGroup | undefined;
|
|
14
|
+
lookupAttribute(name: QName): AttributeDecl | undefined;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Records an `unresolved-ref` problem for every dangling reference in `set`:
|
|
18
|
+
* type, element, group, attribute, attribute-group and substitution-group
|
|
19
|
+
* heads. References into the XSD and SOAP-encoding namespaces are satisfied by
|
|
20
|
+
* the built-in table, so they are never reported.
|
|
21
|
+
*
|
|
22
|
+
* Unresolved references are never fatal: the corresponding lookup simply
|
|
23
|
+
* returns `undefined`, and consumers decide how to degrade.
|
|
24
|
+
*/
|
|
25
|
+
export declare function checkReferences(set: ReferenceCheckTarget, problems: SchemaProblem[]): void;
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
import { NS } from '../xml/namespaces.js';
|
|
2
|
+
import { qnameToString } from '../wsdl/qname.js';
|
|
3
|
+
/** Namespaces whose references are satisfied by the built-in table rather than a schema. */
|
|
4
|
+
function isExternallyKnown(name) {
|
|
5
|
+
return name.namespaceUri === NS.XSD || name.namespaceUri === NS.SOAP11_ENC;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Records an `unresolved-ref` problem for every dangling reference in `set`:
|
|
9
|
+
* type, element, group, attribute, attribute-group and substitution-group
|
|
10
|
+
* heads. References into the XSD and SOAP-encoding namespaces are satisfied by
|
|
11
|
+
* the built-in table, so they are never reported.
|
|
12
|
+
*
|
|
13
|
+
* Unresolved references are never fatal: the corresponding lookup simply
|
|
14
|
+
* returns `undefined`, and consumers decide how to degrade.
|
|
15
|
+
*/
|
|
16
|
+
export function checkReferences(set, problems) {
|
|
17
|
+
const report = (what, name, source) => {
|
|
18
|
+
problems.push({
|
|
19
|
+
code: 'unresolved-ref',
|
|
20
|
+
message: `Unresolved ${what} reference ${qnameToString(name)}`,
|
|
21
|
+
location: source.location,
|
|
22
|
+
...(source.line !== undefined ? { line: source.line, column: source.column ?? 1 } : {}),
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
const checkType = (name, source) => {
|
|
26
|
+
if (name !== undefined && !isExternallyKnown(name) && set.lookupType(name) === undefined) {
|
|
27
|
+
report('type', name, source);
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
const checkSimple = (type, source) => {
|
|
31
|
+
checkType(type.base, source);
|
|
32
|
+
if (type.baseType !== undefined) {
|
|
33
|
+
checkSimple(type.baseType, source);
|
|
34
|
+
}
|
|
35
|
+
if (type.itemType !== undefined) {
|
|
36
|
+
if ('kind' in type.itemType) {
|
|
37
|
+
checkSimple(type.itemType, source);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
checkType(type.itemType, source);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
for (const member of type.memberTypes ?? []) {
|
|
44
|
+
if ('kind' in member) {
|
|
45
|
+
checkSimple(member, source);
|
|
46
|
+
}
|
|
47
|
+
else {
|
|
48
|
+
checkType(member, source);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
const checkAttributes = (uses, source) => {
|
|
53
|
+
for (const use of uses) {
|
|
54
|
+
if (use.kind === 'attribute') {
|
|
55
|
+
checkType(use.type, source);
|
|
56
|
+
if (use.anonymousType !== undefined) {
|
|
57
|
+
checkSimple(use.anonymousType, source);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
else if (use.kind === 'attributeRef') {
|
|
61
|
+
if (!isExternallyKnown(use.ref) && set.lookupAttribute(use.ref) === undefined) {
|
|
62
|
+
report('attribute', use.ref, source);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
else if (use.kind === 'attributeGroupRef') {
|
|
66
|
+
if (!isExternallyKnown(use.ref) && set.lookupAttributeGroup(use.ref) === undefined) {
|
|
67
|
+
report('attribute group', use.ref, source);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
};
|
|
72
|
+
const checkParticle = (particle, source) => {
|
|
73
|
+
switch (particle.kind) {
|
|
74
|
+
case 'localElement':
|
|
75
|
+
checkElement(particle.decl);
|
|
76
|
+
break;
|
|
77
|
+
case 'elementRef':
|
|
78
|
+
if (!isExternallyKnown(particle.ref) && set.lookupElement(particle.ref) === undefined) {
|
|
79
|
+
report('element', particle.ref, source);
|
|
80
|
+
}
|
|
81
|
+
break;
|
|
82
|
+
case 'groupRef':
|
|
83
|
+
if (!isExternallyKnown(particle.ref) && set.lookupGroup(particle.ref) === undefined) {
|
|
84
|
+
report('group', particle.ref, source);
|
|
85
|
+
}
|
|
86
|
+
break;
|
|
87
|
+
case 'sequence':
|
|
88
|
+
case 'choice':
|
|
89
|
+
case 'all':
|
|
90
|
+
for (const child of particle.particles) {
|
|
91
|
+
checkParticle(child, source);
|
|
92
|
+
}
|
|
93
|
+
break;
|
|
94
|
+
default:
|
|
95
|
+
break;
|
|
96
|
+
}
|
|
97
|
+
};
|
|
98
|
+
const checkComplex = (type) => {
|
|
99
|
+
const content = type.content;
|
|
100
|
+
if (content.kind === 'complexContent' || content.kind === 'simpleContent') {
|
|
101
|
+
checkType(content.base, type.source);
|
|
102
|
+
}
|
|
103
|
+
if (content.kind === 'particle') {
|
|
104
|
+
checkParticle(content.particle, type.source);
|
|
105
|
+
}
|
|
106
|
+
else if (content.kind === 'complexContent' && content.particle !== undefined) {
|
|
107
|
+
checkParticle(content.particle, type.source);
|
|
108
|
+
}
|
|
109
|
+
checkAttributes(content.attributes, type.source);
|
|
110
|
+
};
|
|
111
|
+
const checkElement = (decl) => {
|
|
112
|
+
checkType(decl.type, decl.source);
|
|
113
|
+
if (decl.substitutionGroup !== undefined && set.lookupElement(decl.substitutionGroup) === undefined) {
|
|
114
|
+
report('substitution group head', decl.substitutionGroup, decl.source);
|
|
115
|
+
}
|
|
116
|
+
if (decl.anonymousType !== undefined) {
|
|
117
|
+
if (decl.anonymousType.kind === 'complexType') {
|
|
118
|
+
checkComplex(decl.anonymousType);
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
checkSimple(decl.anonymousType, decl.source);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
for (const decl of set.elements.values()) {
|
|
126
|
+
checkElement(decl);
|
|
127
|
+
}
|
|
128
|
+
for (const type of set.types.values()) {
|
|
129
|
+
if (type.kind === 'complexType') {
|
|
130
|
+
checkComplex(type);
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
checkSimple(type, type.source);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
for (const group of set.groups.values()) {
|
|
137
|
+
checkParticle(group.particle, group.source);
|
|
138
|
+
}
|
|
139
|
+
for (const group of set.attributeGroups.values()) {
|
|
140
|
+
checkAttributes(group.attributes, group.source);
|
|
141
|
+
}
|
|
142
|
+
for (const attribute of set.attributes.values()) {
|
|
143
|
+
checkAttributes([attribute], attribute.source);
|
|
144
|
+
}
|
|
145
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural edits on a {@link FormNode} tree — everything the Form view cannot
|
|
3
|
+
* express as a plain text splice into an existing value.
|
|
4
|
+
*
|
|
5
|
+
* Each edit returns a *new* tree (nothing is mutated), which the caller then
|
|
6
|
+
* serialises with `applyForm` and splices back over the body element's range.
|
|
7
|
+
* Because the tree is rebuilt from the document before every edit, an edit can
|
|
8
|
+
* never operate on a stale shape.
|
|
9
|
+
*/
|
|
10
|
+
import type { FormNode } from './form-model.js';
|
|
11
|
+
/** One structural change the Form view can ask for, addressed by node id. */
|
|
12
|
+
export type FormEdit =
|
|
13
|
+
/** Make an omitted optional element (or attribute) exist, filled with placeholders. */
|
|
14
|
+
{
|
|
15
|
+
readonly kind: 'insert-optional';
|
|
16
|
+
readonly nodeId: string;
|
|
17
|
+
}
|
|
18
|
+
/** Remove a present optional element (or attribute) again. */
|
|
19
|
+
| {
|
|
20
|
+
readonly kind: 'remove-optional';
|
|
21
|
+
readonly nodeId: string;
|
|
22
|
+
}
|
|
23
|
+
/** Append one occurrence to a `repeat` node. */
|
|
24
|
+
| {
|
|
25
|
+
readonly kind: 'add-repeat';
|
|
26
|
+
readonly nodeId: string;
|
|
27
|
+
}
|
|
28
|
+
/** Drop occurrence `index` of a `repeat` node. */
|
|
29
|
+
| {
|
|
30
|
+
readonly kind: 'remove-repeat';
|
|
31
|
+
readonly nodeId: string;
|
|
32
|
+
readonly index: number;
|
|
33
|
+
}
|
|
34
|
+
/** Switch a `choice` node to alternative `index`, replacing whatever stood there. */
|
|
35
|
+
| {
|
|
36
|
+
readonly kind: 'select-choice';
|
|
37
|
+
readonly nodeId: string;
|
|
38
|
+
readonly index: number;
|
|
39
|
+
}
|
|
40
|
+
/** Set a field/attribute value structurally (used when it is not present in the text yet). */
|
|
41
|
+
| {
|
|
42
|
+
readonly kind: 'set-value';
|
|
43
|
+
readonly nodeId: string;
|
|
44
|
+
readonly value: string;
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Applies one structural {@link FormEdit} to `form`, returning a new tree.
|
|
48
|
+
*
|
|
49
|
+
* Unknown node ids and impossible edits (adding past `maxOccurs`, removing
|
|
50
|
+
* below `minOccurs`) are no-ops rather than errors: the renderer only ever
|
|
51
|
+
* offers the affordances the tree says are available, and a stale click must
|
|
52
|
+
* not fail a request.
|
|
53
|
+
*
|
|
54
|
+
* @param form the tree to change
|
|
55
|
+
* @param edit what to change
|
|
56
|
+
*/
|
|
57
|
+
export declare function applyFormEdit(form: FormNode, edit: FormEdit): FormNode;
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Structural edits on a {@link FormNode} tree — everything the Form view cannot
|
|
3
|
+
* express as a plain text splice into an existing value.
|
|
4
|
+
*
|
|
5
|
+
* Each edit returns a *new* tree (nothing is mutated), which the caller then
|
|
6
|
+
* serialises with `applyForm` and splices back over the body element's range.
|
|
7
|
+
* Because the tree is rebuilt from the document before every edit, an edit can
|
|
8
|
+
* never operate on a stale shape.
|
|
9
|
+
*/
|
|
10
|
+
/** Applies `change` to the node with `id`, rebuilding only the spine above it. */
|
|
11
|
+
function mapNode(node, id, change) {
|
|
12
|
+
if (node.id === id) {
|
|
13
|
+
return change(node);
|
|
14
|
+
}
|
|
15
|
+
const children = node.children.map((child) => mapNode(child, id, change));
|
|
16
|
+
const instances = node.repeat?.instances.map((instance) => mapNode(instance, id, change));
|
|
17
|
+
const childrenChanged = children.some((child, i) => child !== node.children[i]);
|
|
18
|
+
const instancesChanged = instances?.some((instance, i) => instance !== node.repeat?.instances[i]) === true;
|
|
19
|
+
if (!childrenChanged && !instancesChanged) {
|
|
20
|
+
return node;
|
|
21
|
+
}
|
|
22
|
+
return {
|
|
23
|
+
...node,
|
|
24
|
+
children,
|
|
25
|
+
...(node.repeat !== undefined && instances !== undefined ? { repeat: { ...node.repeat, instances } } : {}),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Marks a not-present subtree as present, so it serialises: the node itself,
|
|
30
|
+
* every required descendant, and every attribute that must be written. Optional
|
|
31
|
+
* descendants stay absent — the user adds them one at a time.
|
|
32
|
+
*/
|
|
33
|
+
function materialise(node) {
|
|
34
|
+
if (node.kind === 'repeat') {
|
|
35
|
+
const repeat = node.repeat;
|
|
36
|
+
if (repeat === undefined) {
|
|
37
|
+
return node;
|
|
38
|
+
}
|
|
39
|
+
const instances = repeat.instances.length > 0 ? repeat.instances : [materialise(repeat.template)];
|
|
40
|
+
return { ...node, present: true, repeat: { ...repeat, instances, canRemove: instances.length > node.occurs.min } };
|
|
41
|
+
}
|
|
42
|
+
if (node.kind === 'choice') {
|
|
43
|
+
const selected = node.choice?.selected ?? 0;
|
|
44
|
+
return {
|
|
45
|
+
...node,
|
|
46
|
+
present: true,
|
|
47
|
+
choice: { selected },
|
|
48
|
+
children: node.children.map((child, i) => (i === selected ? materialise(child) : child)),
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
return {
|
|
52
|
+
...node,
|
|
53
|
+
present: true,
|
|
54
|
+
children: node.children.map((child) => (child.required || child.kind === 'attribute' ? materialise(child) : child)),
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/** Clears a subtree's presence, so it disappears from the serialised fragment. */
|
|
58
|
+
function dematerialise(node) {
|
|
59
|
+
return { ...node, present: false };
|
|
60
|
+
}
|
|
61
|
+
/** Re-ids a template subtree so a newly added occurrence gets stable, unique ids. */
|
|
62
|
+
function reid(node, id) {
|
|
63
|
+
return {
|
|
64
|
+
...node,
|
|
65
|
+
id,
|
|
66
|
+
children: node.children.map((child, i) => reid(child, `${id}/${i}`)),
|
|
67
|
+
...(node.repeat !== undefined
|
|
68
|
+
? {
|
|
69
|
+
repeat: {
|
|
70
|
+
...node.repeat,
|
|
71
|
+
instances: node.repeat.instances.map((instance, i) => reid(instance, `${id}#${i}`)),
|
|
72
|
+
template: reid(node.repeat.template, `${id}#t`),
|
|
73
|
+
},
|
|
74
|
+
}
|
|
75
|
+
: {}),
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function addRepeat(node) {
|
|
79
|
+
const repeat = node.repeat;
|
|
80
|
+
if (repeat === undefined || !repeat.canAdd) {
|
|
81
|
+
return node;
|
|
82
|
+
}
|
|
83
|
+
const instances = [...repeat.instances, reid(materialise(repeat.template), `${node.id}#${repeat.instances.length}`)];
|
|
84
|
+
const limit = node.occurs.max === 'unbounded' ? Number.POSITIVE_INFINITY : node.occurs.max;
|
|
85
|
+
return {
|
|
86
|
+
...node,
|
|
87
|
+
present: true,
|
|
88
|
+
repeat: {
|
|
89
|
+
...repeat,
|
|
90
|
+
instances,
|
|
91
|
+
canAdd: instances.length < limit,
|
|
92
|
+
canRemove: instances.length > node.occurs.min,
|
|
93
|
+
},
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function removeRepeat(node, index) {
|
|
97
|
+
const repeat = node.repeat;
|
|
98
|
+
if (repeat === undefined || index < 0 || index >= repeat.instances.length) {
|
|
99
|
+
return node;
|
|
100
|
+
}
|
|
101
|
+
const instances = repeat.instances
|
|
102
|
+
.filter((_, i) => i !== index)
|
|
103
|
+
.map((instance, i) => reid(instance, `${node.id}#${i}`));
|
|
104
|
+
const limit = node.occurs.max === 'unbounded' ? Number.POSITIVE_INFINITY : node.occurs.max;
|
|
105
|
+
return {
|
|
106
|
+
...node,
|
|
107
|
+
present: instances.length > 0,
|
|
108
|
+
repeat: {
|
|
109
|
+
...repeat,
|
|
110
|
+
instances,
|
|
111
|
+
canAdd: instances.length < limit,
|
|
112
|
+
canRemove: instances.length > node.occurs.min,
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
function selectChoice(node, index) {
|
|
117
|
+
if (index < 0 || index >= node.children.length) {
|
|
118
|
+
return node;
|
|
119
|
+
}
|
|
120
|
+
return {
|
|
121
|
+
...node,
|
|
122
|
+
present: true,
|
|
123
|
+
choice: { selected: index },
|
|
124
|
+
children: node.children.map((child, i) => (i === index ? materialise(child) : dematerialise(child))),
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Applies one structural {@link FormEdit} to `form`, returning a new tree.
|
|
129
|
+
*
|
|
130
|
+
* Unknown node ids and impossible edits (adding past `maxOccurs`, removing
|
|
131
|
+
* below `minOccurs`) are no-ops rather than errors: the renderer only ever
|
|
132
|
+
* offers the affordances the tree says are available, and a stale click must
|
|
133
|
+
* not fail a request.
|
|
134
|
+
*
|
|
135
|
+
* @param form the tree to change
|
|
136
|
+
* @param edit what to change
|
|
137
|
+
*/
|
|
138
|
+
export function applyFormEdit(form, edit) {
|
|
139
|
+
switch (edit.kind) {
|
|
140
|
+
case 'insert-optional':
|
|
141
|
+
return mapNode(form, edit.nodeId, materialise);
|
|
142
|
+
case 'remove-optional':
|
|
143
|
+
return mapNode(form, edit.nodeId, dematerialise);
|
|
144
|
+
case 'add-repeat':
|
|
145
|
+
return mapNode(form, edit.nodeId, addRepeat);
|
|
146
|
+
case 'remove-repeat':
|
|
147
|
+
return mapNode(form, edit.nodeId, (node) => removeRepeat(node, edit.index));
|
|
148
|
+
case 'select-choice':
|
|
149
|
+
return mapNode(form, edit.nodeId, (node) => selectChoice(node, edit.index));
|
|
150
|
+
case 'set-value':
|
|
151
|
+
return mapNode(form, edit.nodeId, (node) => ({ ...node, present: true, value: edit.value }));
|
|
152
|
+
}
|
|
153
|
+
}
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The schema-driven form model behind the request editor's Form view.
|
|
3
|
+
*
|
|
4
|
+
* {@link buildForm} projects one element declaration — optionally overlaid with
|
|
5
|
+
* the XML that currently stands for it — onto a tree of {@link FormNode}s the
|
|
6
|
+
* renderer can lay out as labelled fields, repeat groups and choice branches.
|
|
7
|
+
* {@link applyForm} serialises such a tree back to an XML fragment, so a
|
|
8
|
+
* structural change (add a repetition, select a choice branch, materialise an
|
|
9
|
+
* omitted optional element) is "rebuild the tree, mutate it, re-render it".
|
|
10
|
+
*
|
|
11
|
+
* Two invariants make that safe to run against a user's hand-edited envelope:
|
|
12
|
+
*
|
|
13
|
+
* 1. **Nothing in the source is dropped.** Source children a particle never
|
|
14
|
+
* claims become `any` nodes carrying the verbatim text; source attributes
|
|
15
|
+
* with no schema counterpart (including `xmlns:*` and `xsi:type`) are kept
|
|
16
|
+
* as `extraAttributes` and re-emitted first.
|
|
17
|
+
* 2. **Recursion is only cut where the source is silent.** A recursive type is
|
|
18
|
+
* expanded past `maxDepth` whenever the XML actually goes that deep.
|
|
19
|
+
*
|
|
20
|
+
* Everything here is pure, synchronous and JSON-serialisable: the tree crosses
|
|
21
|
+
* the IPC boundary to the renderer as-is.
|
|
22
|
+
*/
|
|
23
|
+
import type { QName } from '../wsdl/qname.js';
|
|
24
|
+
import type { Occurs } from './model.js';
|
|
25
|
+
import type { SchemaSet } from './schema-set.js';
|
|
26
|
+
import type { TextRange } from './xml-scan.js';
|
|
27
|
+
export type { TextRange } from './xml-scan.js';
|
|
28
|
+
/** How a leaf's value should be edited. `other` means "no useful editor; plain text". */
|
|
29
|
+
export type FormValueBase = 'string' | 'number' | 'integer' | 'boolean' | 'date' | 'time' | 'dateTime' | 'binary' | 'other';
|
|
30
|
+
/** What the renderer needs to choose an editor and show validation hints for a leaf. */
|
|
31
|
+
export interface FormType {
|
|
32
|
+
/** Clark notation for a named type, `xs:int` for a built-in, `''` for an anonymous one. */
|
|
33
|
+
readonly name: string;
|
|
34
|
+
readonly base: FormValueBase;
|
|
35
|
+
readonly enum?: readonly string[];
|
|
36
|
+
readonly pattern?: string;
|
|
37
|
+
/** Lexical bound from the type's facets, shown as a hint — never enforced here (Task 42 validates). */
|
|
38
|
+
readonly min?: string;
|
|
39
|
+
readonly max?: string;
|
|
40
|
+
}
|
|
41
|
+
/** A literal attribute kept verbatim from the source because no schema attribute claims it. */
|
|
42
|
+
export interface FormExtraAttribute {
|
|
43
|
+
readonly name: string;
|
|
44
|
+
readonly value: string;
|
|
45
|
+
}
|
|
46
|
+
/** The repeat bookkeeping on a `repeat` node. */
|
|
47
|
+
export interface FormRepeat {
|
|
48
|
+
/** One node per occurrence present in (or generated for) the document, in order. */
|
|
49
|
+
readonly instances: readonly FormNode[];
|
|
50
|
+
/** A not-present node used as the shape of the next occurrence "+ Add" creates. */
|
|
51
|
+
readonly template: FormNode;
|
|
52
|
+
readonly canAdd: boolean;
|
|
53
|
+
readonly canRemove: boolean;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* One node of the form tree.
|
|
57
|
+
*
|
|
58
|
+
* `kind` decides which fields matter:
|
|
59
|
+
* - `field` — an editable leaf (`type`, `value`, `valueRange`); its `children` are its attributes.
|
|
60
|
+
* - `group` — a complex element; `children` are attributes then child particles.
|
|
61
|
+
* - `choice` — `children` are the alternatives; `choice.selected` names the live one.
|
|
62
|
+
* - `repeat` — occurrences live in `repeat.instances`, **not** in `children` (always empty).
|
|
63
|
+
* - `attribute` — an attribute of the enclosing element.
|
|
64
|
+
* - `any` — a wildcard, or source content the schema does not describe; `raw` holds it verbatim.
|
|
65
|
+
*/
|
|
66
|
+
export interface FormNode {
|
|
67
|
+
/** Stable path id, e.g. `r/2#1/0`. Survives a rebuild of the same document. */
|
|
68
|
+
readonly id: string;
|
|
69
|
+
readonly kind: 'field' | 'group' | 'choice' | 'repeat' | 'attribute' | 'any';
|
|
70
|
+
readonly name: QName;
|
|
71
|
+
/** The lexical name to write: taken from the source when it exists, else prefixed from scope. */
|
|
72
|
+
readonly label: string;
|
|
73
|
+
readonly required: boolean;
|
|
74
|
+
readonly occurs: Occurs;
|
|
75
|
+
readonly type?: FormType;
|
|
76
|
+
/** Current text for a `field`/`attribute`. The `?` placeholder counts as empty to the UI. */
|
|
77
|
+
readonly value?: string;
|
|
78
|
+
/** Range of `value` in the source document; absent when the node is not present as editable text. */
|
|
79
|
+
readonly valueRange?: TextRange;
|
|
80
|
+
/** Whether this node exists in the document right now. */
|
|
81
|
+
readonly present: boolean;
|
|
82
|
+
readonly nillable?: boolean;
|
|
83
|
+
readonly documentation?: string;
|
|
84
|
+
/** A schema-fixed value: the field is not editable. */
|
|
85
|
+
readonly fixed?: string;
|
|
86
|
+
/** The `xsi:type` standing on this element, shown as a read-only badge. */
|
|
87
|
+
readonly xsiType?: string;
|
|
88
|
+
/** Prefix → URI to declare on this element. Set on the root, and on nodes that need a new prefix. */
|
|
89
|
+
readonly namespaces?: Readonly<Record<string, string>>;
|
|
90
|
+
/** Source attributes no schema attribute claimed (`xmlns:*`, `xsi:type`, wildcards). */
|
|
91
|
+
readonly extraAttributes?: readonly FormExtraAttribute[];
|
|
92
|
+
/** Comments standing immediately before this node in the source. */
|
|
93
|
+
readonly comments?: readonly string[];
|
|
94
|
+
/** Comments standing after this node's last child in the source. */
|
|
95
|
+
readonly trailingComments?: readonly string[];
|
|
96
|
+
/** Set when the schema recursed past `maxDepth` and expansion stopped; edit such content in XML. */
|
|
97
|
+
readonly truncated?: boolean;
|
|
98
|
+
/** Verbatim source text for an `any` node, re-emitted unchanged. */
|
|
99
|
+
readonly raw?: string;
|
|
100
|
+
readonly children: readonly FormNode[];
|
|
101
|
+
readonly choice?: {
|
|
102
|
+
readonly selected?: number;
|
|
103
|
+
};
|
|
104
|
+
readonly repeat?: FormRepeat;
|
|
105
|
+
}
|
|
106
|
+
/** Knobs {@link buildForm} accepts. */
|
|
107
|
+
export interface BuildFormOptions {
|
|
108
|
+
/** Nesting depth after which a *not-present* complex element stops expanding. Default 5. */
|
|
109
|
+
readonly maxDepth?: number;
|
|
110
|
+
/** Fill new leaves with type-appropriate examples instead of `?`. Default false. */
|
|
111
|
+
readonly sampleValues?: boolean;
|
|
112
|
+
/** Prefix already in scope per namespace URI, e.g. from the enclosing envelope. */
|
|
113
|
+
readonly prefixes?: Readonly<Record<string, string>>;
|
|
114
|
+
/**
|
|
115
|
+
* Added to every reported `valueRange`, so a fragment sliced out of a larger
|
|
116
|
+
* document still reports ranges in that document's coordinates.
|
|
117
|
+
*/
|
|
118
|
+
readonly offset?: number;
|
|
119
|
+
/**
|
|
120
|
+
* Namespace URI per prefix inherited from an enclosing document. A body
|
|
121
|
+
* fragment sliced out of an envelope declares none of its own, so without
|
|
122
|
+
* this its elements would all resolve into the empty namespace.
|
|
123
|
+
*/
|
|
124
|
+
readonly inScope?: Readonly<Record<string, string>>;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Builds the form tree for one global element declaration.
|
|
128
|
+
*
|
|
129
|
+
* @param schemaSet the compiled schemas the element is declared in
|
|
130
|
+
* @param element the global element to model
|
|
131
|
+
* @param xml the fragment that currently stands for it, or `undefined` for a fresh form
|
|
132
|
+
* @param options depth cut-off, sample values, and prefixes already in scope
|
|
133
|
+
* @returns the root node; never throws — an unknown element yields an `any` node instead
|
|
134
|
+
*/
|
|
135
|
+
export declare function buildForm(schemaSet: SchemaSet, element: QName, xml?: string, options?: BuildFormOptions): FormNode;
|
|
136
|
+
/**
|
|
137
|
+
* Builds the form tree for an element whose content is described by a *type*
|
|
138
|
+
* rather than a global element declaration — the shape an rpc-style message
|
|
139
|
+
* part takes.
|
|
140
|
+
*/
|
|
141
|
+
export declare function buildFormForType(schemaSet: SchemaSet, elementName: QName, type: QName, xml?: string, options?: BuildFormOptions): FormNode;
|
|
142
|
+
/** Knobs {@link applyForm} accepts. */
|
|
143
|
+
export interface ApplyFormOptions {
|
|
144
|
+
/** Indent per level; three spaces by default, matching the sample generator. */
|
|
145
|
+
readonly indent?: string;
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Serialises a form tree back to an XML fragment: the exact text that should
|
|
149
|
+
* replace the element the tree was built from. Comments captured from the
|
|
150
|
+
* source are re-emitted in place, and `any` nodes pass their source text
|
|
151
|
+
* through verbatim, so nothing the user wrote is lost.
|
|
152
|
+
*/
|
|
153
|
+
export declare function applyForm(form: FormNode, options?: ApplyFormOptions): string;
|