@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.
Files changed (583) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +3 -0
  3. package/dist/assert/contract.d.ts +3 -0
  4. package/dist/assert/contract.js +17 -0
  5. package/dist/assert/index.d.ts +4 -0
  6. package/dist/assert/index.js +27 -0
  7. package/dist/assert/match.d.ts +3 -0
  8. package/dist/assert/match.js +58 -0
  9. package/dist/assert/model.d.ts +73 -0
  10. package/dist/assert/model.js +8 -0
  11. package/dist/assert/schema.d.ts +34 -0
  12. package/dist/assert/schema.js +46 -0
  13. package/dist/assert/sla.d.ts +3 -0
  14. package/dist/assert/sla.js +8 -0
  15. package/dist/assert/soap-fault.d.ts +3 -0
  16. package/dist/assert/soap-fault.js +20 -0
  17. package/dist/assert/status.d.ts +3 -0
  18. package/dist/assert/status.js +14 -0
  19. package/dist/errors.d.ts +77 -0
  20. package/dist/errors.js +121 -0
  21. package/dist/fs.d.ts +35 -0
  22. package/dist/fs.js +64 -0
  23. package/dist/generate.d.ts +12 -0
  24. package/dist/generate.js +14 -0
  25. package/dist/grpc/browser.d.ts +11 -0
  26. package/dist/grpc/browser.js +9 -0
  27. package/dist/grpc/cache.d.ts +113 -0
  28. package/dist/grpc/cache.js +244 -0
  29. package/dist/grpc/call.d.ts +64 -0
  30. package/dist/grpc/call.js +72 -0
  31. package/dist/grpc/codec.d.ts +29 -0
  32. package/dist/grpc/codec.js +416 -0
  33. package/dist/grpc/command.d.ts +23 -0
  34. package/dist/grpc/command.js +91 -0
  35. package/dist/grpc/expand.d.ts +25 -0
  36. package/dist/grpc/expand.js +52 -0
  37. package/dist/grpc/framing.d.ts +28 -0
  38. package/dist/grpc/framing.js +61 -0
  39. package/dist/grpc/import.d.ts +47 -0
  40. package/dist/grpc/import.js +88 -0
  41. package/dist/grpc/model.d.ts +179 -0
  42. package/dist/grpc/model.js +91 -0
  43. package/dist/grpc/proto/describe.d.ts +92 -0
  44. package/dist/grpc/proto/describe.js +205 -0
  45. package/dist/grpc/proto/load.d.ts +35 -0
  46. package/dist/grpc/proto/load.js +112 -0
  47. package/dist/grpc/proto/sample.d.ts +21 -0
  48. package/dist/grpc/proto/sample.js +79 -0
  49. package/dist/grpc/proto/well-known.d.ts +42 -0
  50. package/dist/grpc/proto/well-known.js +143 -0
  51. package/dist/grpc/reconcile.d.ts +42 -0
  52. package/dist/grpc/reconcile.js +153 -0
  53. package/dist/grpc/reflection/client.d.ts +70 -0
  54. package/dist/grpc/reflection/client.js +197 -0
  55. package/dist/grpc/reflection/descriptors.d.ts +69 -0
  56. package/dist/grpc/reflection/descriptors.js +140 -0
  57. package/dist/grpc/reflection/proto.d.ts +33 -0
  58. package/dist/grpc/reflection/proto.js +144 -0
  59. package/dist/grpc/send.d.ts +132 -0
  60. package/dist/grpc/send.js +435 -0
  61. package/dist/grpc/shape.d.ts +29 -0
  62. package/dist/grpc/shape.js +36 -0
  63. package/dist/grpc/status.d.ts +21 -0
  64. package/dist/grpc/status.js +62 -0
  65. package/dist/grpc/target.d.ts +21 -0
  66. package/dist/grpc/target.js +66 -0
  67. package/dist/http/auth/apply.d.ts +37 -0
  68. package/dist/http/auth/apply.js +74 -0
  69. package/dist/http/auth/basic.d.ts +36 -0
  70. package/dist/http/auth/basic.js +69 -0
  71. package/dist/http/auth/md4.d.ts +13 -0
  72. package/dist/http/auth/md4.js +81 -0
  73. package/dist/http/auth/ntlm-transport.d.ts +61 -0
  74. package/dist/http/auth/ntlm-transport.js +97 -0
  75. package/dist/http/auth/ntlm.d.ts +190 -0
  76. package/dist/http/auth/ntlm.js +377 -0
  77. package/dist/http/client.d.ts +73 -0
  78. package/dist/http/client.js +403 -0
  79. package/dist/http/curl-flags.d.ts +15 -0
  80. package/dist/http/curl-flags.js +95 -0
  81. package/dist/http/curl.d.ts +94 -0
  82. package/dist/http/curl.js +245 -0
  83. package/dist/http/decompress.d.ts +7 -0
  84. package/dist/http/decompress.js +22 -0
  85. package/dist/http/errors.d.ts +22 -0
  86. package/dist/http/errors.js +144 -0
  87. package/dist/http/failed-request.d.ts +27 -0
  88. package/dist/http/failed-request.js +48 -0
  89. package/dist/http/headers.d.ts +15 -0
  90. package/dist/http/headers.js +50 -0
  91. package/dist/http/heredoc.d.ts +25 -0
  92. package/dist/http/heredoc.js +74 -0
  93. package/dist/http/proxy.d.ts +103 -0
  94. package/dist/http/proxy.js +168 -0
  95. package/dist/http/raw-capture.d.ts +23 -0
  96. package/dist/http/raw-capture.js +57 -0
  97. package/dist/http/timings.d.ts +79 -0
  98. package/dist/http/timings.js +212 -0
  99. package/dist/http/tls.d.ts +111 -0
  100. package/dist/http/tls.js +167 -0
  101. package/dist/http/types.d.ts +125 -0
  102. package/dist/http/types.js +6 -0
  103. package/dist/import-detect.d.ts +26 -0
  104. package/dist/import-detect.js +169 -0
  105. package/dist/import.d.ts +20 -0
  106. package/dist/import.js +163 -0
  107. package/dist/index.d.ts +272 -0
  108. package/dist/index.js +157 -0
  109. package/dist/json/cursor.d.ts +43 -0
  110. package/dist/json/cursor.js +168 -0
  111. package/dist/operations.d.ts +12 -0
  112. package/dist/operations.js +52 -0
  113. package/dist/project/attachments-cache.d.ts +80 -0
  114. package/dist/project/attachments-cache.js +186 -0
  115. package/dist/project/endpoints.d.ts +23 -0
  116. package/dist/project/endpoints.js +47 -0
  117. package/dist/project/environments.d.ts +68 -0
  118. package/dist/project/environments.js +124 -0
  119. package/dist/project/fs.d.ts +45 -0
  120. package/dist/project/fs.js +78 -0
  121. package/dist/project/history.d.ts +171 -0
  122. package/dist/project/history.js +179 -0
  123. package/dist/project/keystores.d.ts +24 -0
  124. package/dist/project/keystores.js +66 -0
  125. package/dist/project/load.d.ts +44 -0
  126. package/dist/project/load.js +634 -0
  127. package/dist/project/migrate.d.ts +27 -0
  128. package/dist/project/migrate.js +46 -0
  129. package/dist/project/model.d.ts +401 -0
  130. package/dist/project/model.js +126 -0
  131. package/dist/project/paths.d.ts +134 -0
  132. package/dist/project/paths.js +259 -0
  133. package/dist/project/preferences.d.ts +318 -0
  134. package/dist/project/preferences.js +239 -0
  135. package/dist/project/properties.d.ts +97 -0
  136. package/dist/project/properties.js +356 -0
  137. package/dist/project/save.d.ts +65 -0
  138. package/dist/project/save.js +295 -0
  139. package/dist/project/schema.d.ts +1329 -0
  140. package/dist/project/schema.js +737 -0
  141. package/dist/project/serialize.d.ts +42 -0
  142. package/dist/project/serialize.js +385 -0
  143. package/dist/project/wss-configs.d.ts +40 -0
  144. package/dist/project/wss-configs.js +142 -0
  145. package/dist/project/yaml.d.ts +17 -0
  146. package/dist/project/yaml.js +39 -0
  147. package/dist/redact/index.d.ts +77 -0
  148. package/dist/redact/index.js +328 -0
  149. package/dist/redact/literal.d.ts +12 -0
  150. package/dist/redact/literal.js +68 -0
  151. package/dist/rest/auth.d.ts +53 -0
  152. package/dist/rest/auth.js +80 -0
  153. package/dist/rest/body.d.ts +61 -0
  154. package/dist/rest/body.js +184 -0
  155. package/dist/rest/browser.d.ts +12 -0
  156. package/dist/rest/browser.js +11 -0
  157. package/dist/rest/cookies.d.ts +41 -0
  158. package/dist/rest/cookies.js +102 -0
  159. package/dist/rest/curl.d.ts +75 -0
  160. package/dist/rest/curl.js +417 -0
  161. package/dist/rest/expand.d.ts +35 -0
  162. package/dist/rest/expand.js +104 -0
  163. package/dist/rest/model.d.ts +247 -0
  164. package/dist/rest/model.js +118 -0
  165. package/dist/rest/oauth2.d.ts +118 -0
  166. package/dist/rest/oauth2.js +212 -0
  167. package/dist/rest/openapi/cache.d.ts +54 -0
  168. package/dist/rest/openapi/cache.js +128 -0
  169. package/dist/rest/openapi/import.d.ts +67 -0
  170. package/dist/rest/openapi/import.js +91 -0
  171. package/dist/rest/openapi/map.d.ts +102 -0
  172. package/dist/rest/openapi/map.js +477 -0
  173. package/dist/rest/openapi/model.d.ts +203 -0
  174. package/dist/rest/openapi/model.js +37 -0
  175. package/dist/rest/openapi/parse.d.ts +44 -0
  176. package/dist/rest/openapi/parse.js +1530 -0
  177. package/dist/rest/openapi/refs.d.ts +63 -0
  178. package/dist/rest/openapi/refs.js +258 -0
  179. package/dist/rest/openapi/sample.d.ts +68 -0
  180. package/dist/rest/openapi/sample.js +336 -0
  181. package/dist/rest/postman/import.d.ts +21 -0
  182. package/dist/rest/postman/import.js +47 -0
  183. package/dist/rest/postman/index.d.ts +7 -0
  184. package/dist/rest/postman/index.js +7 -0
  185. package/dist/rest/postman/map.d.ts +28 -0
  186. package/dist/rest/postman/map.js +427 -0
  187. package/dist/rest/postman/model.d.ts +118 -0
  188. package/dist/rest/postman/model.js +7 -0
  189. package/dist/rest/postman/parse.d.ts +29 -0
  190. package/dist/rest/postman/parse.js +518 -0
  191. package/dist/rest/response.d.ts +72 -0
  192. package/dist/rest/response.js +221 -0
  193. package/dist/rest/send.d.ts +102 -0
  194. package/dist/rest/send.js +148 -0
  195. package/dist/rest/url.d.ts +92 -0
  196. package/dist/rest/url.js +213 -0
  197. package/dist/run/effective-auth.d.ts +10 -0
  198. package/dist/run/effective-auth.js +19 -0
  199. package/dist/run/index.d.ts +8 -0
  200. package/dist/run/index.js +4 -0
  201. package/dist/run/prepare.d.ts +43 -0
  202. package/dist/run/prepare.js +280 -0
  203. package/dist/run/run.d.ts +53 -0
  204. package/dist/run/run.js +223 -0
  205. package/dist/run/secret-needs.d.ts +13 -0
  206. package/dist/run/secret-needs.js +125 -0
  207. package/dist/run/select.d.ts +34 -0
  208. package/dist/run/select.js +76 -0
  209. package/dist/secrets/env-names.d.ts +27 -0
  210. package/dist/secrets/env-names.js +40 -0
  211. package/dist/secrets/resolve.d.ts +58 -0
  212. package/dist/secrets/resolve.js +136 -0
  213. package/dist/send-options.d.ts +141 -0
  214. package/dist/send-options.js +228 -0
  215. package/dist/send.d.ts +53 -0
  216. package/dist/send.js +210 -0
  217. package/dist/soap/body-builder.d.ts +38 -0
  218. package/dist/soap/body-builder.js +250 -0
  219. package/dist/soap/build-problems.d.ts +12 -0
  220. package/dist/soap/build-problems.js +2 -0
  221. package/dist/soap/charset.d.ts +23 -0
  222. package/dist/soap/charset.js +47 -0
  223. package/dist/soap/envelope.d.ts +44 -0
  224. package/dist/soap/envelope.js +76 -0
  225. package/dist/soap/fault.d.ts +46 -0
  226. package/dist/soap/fault.js +129 -0
  227. package/dist/soap/form-request.d.ts +34 -0
  228. package/dist/soap/form-request.js +251 -0
  229. package/dist/soap/legacy-project/definition-fetcher.d.ts +21 -0
  230. package/dist/soap/legacy-project/definition-fetcher.js +43 -0
  231. package/dist/soap/legacy-project/format.d.ts +18 -0
  232. package/dist/soap/legacy-project/format.js +24 -0
  233. package/dist/soap/legacy-project/import.d.ts +21 -0
  234. package/dist/soap/legacy-project/import.js +46 -0
  235. package/dist/soap/legacy-project/index.d.ts +9 -0
  236. package/dist/soap/legacy-project/index.js +5 -0
  237. package/dist/soap/legacy-project/map.d.ts +91 -0
  238. package/dist/soap/legacy-project/map.js +290 -0
  239. package/dist/soap/legacy-project/model.d.ts +98 -0
  240. package/dist/soap/legacy-project/model.js +5 -0
  241. package/dist/soap/legacy-project/parse.d.ts +16 -0
  242. package/dist/soap/legacy-project/parse.js +325 -0
  243. package/dist/soap/mime/cid-scan.d.ts +36 -0
  244. package/dist/soap/mime/cid-scan.js +52 -0
  245. package/dist/soap/mime/inline-files.d.ts +39 -0
  246. package/dist/soap/mime/inline-files.js +71 -0
  247. package/dist/soap/mime/mtom.d.ts +74 -0
  248. package/dist/soap/mime/mtom.js +134 -0
  249. package/dist/soap/mime/multipart.d.ts +66 -0
  250. package/dist/soap/mime/multipart.js +329 -0
  251. package/dist/soap/mime/send-pipeline.d.ts +61 -0
  252. package/dist/soap/mime/send-pipeline.js +145 -0
  253. package/dist/soap/mime/swa.d.ts +45 -0
  254. package/dist/soap/mime/swa.js +62 -0
  255. package/dist/soap/mime/types.d.ts +69 -0
  256. package/dist/soap/mime/types.js +10 -0
  257. package/dist/soap/namespace-scope.d.ts +32 -0
  258. package/dist/soap/namespace-scope.js +85 -0
  259. package/dist/soap/prefixes.d.ts +24 -0
  260. package/dist/soap/prefixes.js +70 -0
  261. package/dist/soap/recreate.d.ts +28 -0
  262. package/dist/soap/recreate.js +168 -0
  263. package/dist/soap/request-builder.d.ts +63 -0
  264. package/dist/soap/request-builder.js +161 -0
  265. package/dist/soap/response-parser.d.ts +29 -0
  266. package/dist/soap/response-parser.js +71 -0
  267. package/dist/soap/soap-action.d.ts +31 -0
  268. package/dist/soap/soap-action.js +28 -0
  269. package/dist/soap/transforms.d.ts +52 -0
  270. package/dist/soap/transforms.js +164 -0
  271. package/dist/types.d.ts +307 -0
  272. package/dist/types.js +6 -0
  273. package/dist/validate/index.d.ts +61 -0
  274. package/dist/validate/index.js +72 -0
  275. package/dist/validate/schema-file-set.d.ts +51 -0
  276. package/dist/validate/schema-file-set.js +288 -0
  277. package/dist/validate/schema-validator.d.ts +53 -0
  278. package/dist/validate/schema-validator.js +251 -0
  279. package/dist/validate/soap-structure.d.ts +34 -0
  280. package/dist/validate/soap-structure.js +255 -0
  281. package/dist/validate/types.d.ts +47 -0
  282. package/dist/validate/types.js +8 -0
  283. package/dist/validate/wsi/assertions/helpers.d.ts +145 -0
  284. package/dist/validate/wsi/assertions/helpers.js +387 -0
  285. package/dist/validate/wsi/assertions/index.d.ts +44 -0
  286. package/dist/validate/wsi/assertions/index.js +77 -0
  287. package/dist/validate/wsi/assertions/message/helpers.d.ts +63 -0
  288. package/dist/validate/wsi/assertions/message/helpers.js +168 -0
  289. package/dist/validate/wsi/assertions/message/index.d.ts +39 -0
  290. package/dist/validate/wsi/assertions/message/index.js +62 -0
  291. package/dist/validate/wsi/assertions/message/r1001.d.ts +10 -0
  292. package/dist/validate/wsi/assertions/message/r1001.js +38 -0
  293. package/dist/validate/wsi/assertions/message/r1003.d.ts +14 -0
  294. package/dist/validate/wsi/assertions/message/r1003.js +45 -0
  295. package/dist/validate/wsi/assertions/message/r1005.d.ts +12 -0
  296. package/dist/validate/wsi/assertions/message/r1005.js +37 -0
  297. package/dist/validate/wsi/assertions/message/r1006.d.ts +10 -0
  298. package/dist/validate/wsi/assertions/message/r1006.js +49 -0
  299. package/dist/validate/wsi/assertions/message/r1007.d.ts +10 -0
  300. package/dist/validate/wsi/assertions/message/r1007.js +30 -0
  301. package/dist/validate/wsi/assertions/message/r1011.d.ts +10 -0
  302. package/dist/validate/wsi/assertions/message/r1011.js +33 -0
  303. package/dist/validate/wsi/assertions/message/r1012.d.ts +13 -0
  304. package/dist/validate/wsi/assertions/message/r1012.js +37 -0
  305. package/dist/validate/wsi/assertions/message/r1013.d.ts +9 -0
  306. package/dist/validate/wsi/assertions/message/r1013.js +42 -0
  307. package/dist/validate/wsi/assertions/message/r1014.d.ts +10 -0
  308. package/dist/validate/wsi/assertions/message/r1014.js +30 -0
  309. package/dist/validate/wsi/assertions/message/r1015.d.ts +12 -0
  310. package/dist/validate/wsi/assertions/message/r1015.js +36 -0
  311. package/dist/validate/wsi/assertions/message/r1017.d.ts +10 -0
  312. package/dist/validate/wsi/assertions/message/r1017.js +30 -0
  313. package/dist/validate/wsi/assertions/message/r1100.d.ts +10 -0
  314. package/dist/validate/wsi/assertions/message/r1100.js +39 -0
  315. package/dist/validate/wsi/assertions/message/r1101.d.ts +10 -0
  316. package/dist/validate/wsi/assertions/message/r1101.js +37 -0
  317. package/dist/validate/wsi/assertions/message/r1102.d.ts +10 -0
  318. package/dist/validate/wsi/assertions/message/r1102.js +41 -0
  319. package/dist/validate/wsi/assertions/message/r1103.d.ts +10 -0
  320. package/dist/validate/wsi/assertions/message/r1103.js +28 -0
  321. package/dist/validate/wsi/assertions/message/r1107.d.ts +10 -0
  322. package/dist/validate/wsi/assertions/message/r1107.js +38 -0
  323. package/dist/validate/wsi/assertions/message/r1109.d.ts +10 -0
  324. package/dist/validate/wsi/assertions/message/r1109.js +32 -0
  325. package/dist/validate/wsi/assertions/message/r1124.d.ts +10 -0
  326. package/dist/validate/wsi/assertions/message/r1124.js +31 -0
  327. package/dist/validate/wsi/assertions/message/r1132.d.ts +9 -0
  328. package/dist/validate/wsi/assertions/message/r1132.js +23 -0
  329. package/dist/validate/wsi/assertions/message/r1140.d.ts +10 -0
  330. package/dist/validate/wsi/assertions/message/r1140.js +42 -0
  331. package/dist/validate/wsi/assertions/message/r1141.d.ts +10 -0
  332. package/dist/validate/wsi/assertions/message/r1141.js +32 -0
  333. package/dist/validate/wsi/assertions/message/r2113.d.ts +11 -0
  334. package/dist/validate/wsi/assertions/message/r2113.js +33 -0
  335. package/dist/validate/wsi/assertions/message/r2211.d.ts +7 -0
  336. package/dist/validate/wsi/assertions/message/r2211.js +42 -0
  337. package/dist/validate/wsi/assertions/r2001.d.ts +15 -0
  338. package/dist/validate/wsi/assertions/r2001.js +47 -0
  339. package/dist/validate/wsi/assertions/r2002.d.ts +11 -0
  340. package/dist/validate/wsi/assertions/r2002.js +38 -0
  341. package/dist/validate/wsi/assertions/r2003.d.ts +7 -0
  342. package/dist/validate/wsi/assertions/r2003.js +32 -0
  343. package/dist/validate/wsi/assertions/r2005.d.ts +7 -0
  344. package/dist/validate/wsi/assertions/r2005.js +40 -0
  345. package/dist/validate/wsi/assertions/r2101.d.ts +14 -0
  346. package/dist/validate/wsi/assertions/r2101.js +65 -0
  347. package/dist/validate/wsi/assertions/r2102.d.ts +10 -0
  348. package/dist/validate/wsi/assertions/r2102.js +41 -0
  349. package/dist/validate/wsi/assertions/r2105.d.ts +8 -0
  350. package/dist/validate/wsi/assertions/r2105.js +39 -0
  351. package/dist/validate/wsi/assertions/r2110.d.ts +8 -0
  352. package/dist/validate/wsi/assertions/r2110.js +38 -0
  353. package/dist/validate/wsi/assertions/r2111.d.ts +6 -0
  354. package/dist/validate/wsi/assertions/r2111.js +30 -0
  355. package/dist/validate/wsi/assertions/r2112.d.ts +7 -0
  356. package/dist/validate/wsi/assertions/r2112.js +35 -0
  357. package/dist/validate/wsi/assertions/r2201.d.ts +7 -0
  358. package/dist/validate/wsi/assertions/r2201.js +28 -0
  359. package/dist/validate/wsi/assertions/r2203.d.ts +7 -0
  360. package/dist/validate/wsi/assertions/r2203.js +30 -0
  361. package/dist/validate/wsi/assertions/r2204.d.ts +6 -0
  362. package/dist/validate/wsi/assertions/r2204.js +29 -0
  363. package/dist/validate/wsi/assertions/r2205.d.ts +8 -0
  364. package/dist/validate/wsi/assertions/r2205.js +46 -0
  365. package/dist/validate/wsi/assertions/r2206.d.ts +7 -0
  366. package/dist/validate/wsi/assertions/r2206.js +36 -0
  367. package/dist/validate/wsi/assertions/r2209.d.ts +12 -0
  368. package/dist/validate/wsi/assertions/r2209.js +37 -0
  369. package/dist/validate/wsi/assertions/r2210.d.ts +7 -0
  370. package/dist/validate/wsi/assertions/r2210.js +30 -0
  371. package/dist/validate/wsi/assertions/r2303.d.ts +7 -0
  372. package/dist/validate/wsi/assertions/r2303.js +44 -0
  373. package/dist/validate/wsi/assertions/r2304.d.ts +6 -0
  374. package/dist/validate/wsi/assertions/r2304.js +32 -0
  375. package/dist/validate/wsi/assertions/r2401.d.ts +12 -0
  376. package/dist/validate/wsi/assertions/r2401.js +31 -0
  377. package/dist/validate/wsi/assertions/r2701.d.ts +7 -0
  378. package/dist/validate/wsi/assertions/r2701.js +28 -0
  379. package/dist/validate/wsi/assertions/r2702.d.ts +6 -0
  380. package/dist/validate/wsi/assertions/r2702.js +26 -0
  381. package/dist/validate/wsi/assertions/r2705.d.ts +11 -0
  382. package/dist/validate/wsi/assertions/r2705.js +31 -0
  383. package/dist/validate/wsi/assertions/r2706.d.ts +7 -0
  384. package/dist/validate/wsi/assertions/r2706.js +29 -0
  385. package/dist/validate/wsi/assertions/r2710.d.ts +13 -0
  386. package/dist/validate/wsi/assertions/r2710.js +37 -0
  387. package/dist/validate/wsi/assertions/r2716.d.ts +7 -0
  388. package/dist/validate/wsi/assertions/r2716.js +29 -0
  389. package/dist/validate/wsi/assertions/r2717.d.ts +9 -0
  390. package/dist/validate/wsi/assertions/r2717.js +31 -0
  391. package/dist/validate/wsi/assertions/r2718.d.ts +7 -0
  392. package/dist/validate/wsi/assertions/r2718.js +41 -0
  393. package/dist/validate/wsi/assertions/r2720.d.ts +7 -0
  394. package/dist/validate/wsi/assertions/r2720.js +29 -0
  395. package/dist/validate/wsi/assertions/r2721.d.ts +6 -0
  396. package/dist/validate/wsi/assertions/r2721.js +27 -0
  397. package/dist/validate/wsi/assertions/r2722.d.ts +6 -0
  398. package/dist/validate/wsi/assertions/r2722.js +29 -0
  399. package/dist/validate/wsi/assertions/r2801.d.ts +7 -0
  400. package/dist/validate/wsi/assertions/r2801.js +39 -0
  401. package/dist/validate/wsi/assertions/r2803.d.ts +7 -0
  402. package/dist/validate/wsi/assertions/r2803.js +29 -0
  403. package/dist/validate/wsi/docs.d.ts +29 -0
  404. package/dist/validate/wsi/docs.js +167 -0
  405. package/dist/validate/wsi/index.d.ts +16 -0
  406. package/dist/validate/wsi/index.js +11 -0
  407. package/dist/validate/wsi/report-html.d.ts +36 -0
  408. package/dist/validate/wsi/report-html.js +135 -0
  409. package/dist/validate/wsi/run-message.d.ts +50 -0
  410. package/dist/validate/wsi/run-message.js +190 -0
  411. package/dist/validate/wsi/run-wsdl.d.ts +48 -0
  412. package/dist/validate/wsi/run-wsdl.js +99 -0
  413. package/dist/validate/wsi/types.d.ts +173 -0
  414. package/dist/validate/wsi/types.js +17 -0
  415. package/dist/workspace/commit-message.d.ts +47 -0
  416. package/dist/workspace/commit-message.js +195 -0
  417. package/dist/workspace/environments.d.ts +79 -0
  418. package/dist/workspace/environments.js +115 -0
  419. package/dist/workspace/index.d.ts +28 -0
  420. package/dist/workspace/index.js +19 -0
  421. package/dist/workspace/load.d.ts +45 -0
  422. package/dist/workspace/load.js +155 -0
  423. package/dist/workspace/local-state.d.ts +37 -0
  424. package/dist/workspace/local-state.js +59 -0
  425. package/dist/workspace/migrate.d.ts +38 -0
  426. package/dist/workspace/migrate.js +50 -0
  427. package/dist/workspace/model.d.ts +86 -0
  428. package/dist/workspace/model.js +54 -0
  429. package/dist/workspace/paths.d.ts +64 -0
  430. package/dist/workspace/paths.js +97 -0
  431. package/dist/workspace/reidentify.d.ts +22 -0
  432. package/dist/workspace/reidentify.js +122 -0
  433. package/dist/workspace/save.d.ts +31 -0
  434. package/dist/workspace/save.js +84 -0
  435. package/dist/workspace/schema.d.ts +93 -0
  436. package/dist/workspace/schema.js +115 -0
  437. package/dist/workspace/serialize.d.ts +24 -0
  438. package/dist/workspace/serialize.js +60 -0
  439. package/dist/workspace/share.d.ts +52 -0
  440. package/dist/workspace/share.js +89 -0
  441. package/dist/ws/browser.d.ts +13 -0
  442. package/dist/ws/browser.js +11 -0
  443. package/dist/ws/call.d.ts +53 -0
  444. package/dist/ws/call.js +106 -0
  445. package/dist/ws/command.d.ts +19 -0
  446. package/dist/ws/command.js +28 -0
  447. package/dist/ws/expand.d.ts +38 -0
  448. package/dist/ws/expand.js +76 -0
  449. package/dist/ws/model.d.ts +191 -0
  450. package/dist/ws/model.js +83 -0
  451. package/dist/ws/pretty.d.ts +12 -0
  452. package/dist/ws/pretty.js +25 -0
  453. package/dist/ws/session.d.ts +50 -0
  454. package/dist/ws/session.js +333 -0
  455. package/dist/ws/shape.d.ts +18 -0
  456. package/dist/ws/shape.js +28 -0
  457. package/dist/ws/transcript.d.ts +14 -0
  458. package/dist/ws/transcript.js +29 -0
  459. package/dist/ws/url.d.ts +3 -0
  460. package/dist/ws/url.js +44 -0
  461. package/dist/wsa/headers.d.ts +78 -0
  462. package/dist/wsa/headers.js +244 -0
  463. package/dist/wsa/model.d.ts +66 -0
  464. package/dist/wsa/model.js +52 -0
  465. package/dist/wsa/policy-detect.d.ts +81 -0
  466. package/dist/wsa/policy-detect.js +245 -0
  467. package/dist/wsdl/cache-naming.d.ts +39 -0
  468. package/dist/wsdl/cache-naming.js +90 -0
  469. package/dist/wsdl/cache.d.ts +48 -0
  470. package/dist/wsdl/cache.js +141 -0
  471. package/dist/wsdl/docs-generator.d.ts +47 -0
  472. package/dist/wsdl/docs-generator.js +439 -0
  473. package/dist/wsdl/dom-utils.d.ts +15 -0
  474. package/dist/wsdl/dom-utils.js +50 -0
  475. package/dist/wsdl/export-definition.d.ts +38 -0
  476. package/dist/wsdl/export-definition.js +100 -0
  477. package/dist/wsdl/fetch.d.ts +13 -0
  478. package/dist/wsdl/fetch.js +60 -0
  479. package/dist/wsdl/merge.d.ts +17 -0
  480. package/dist/wsdl/merge.js +57 -0
  481. package/dist/wsdl/model.d.ts +176 -0
  482. package/dist/wsdl/model.js +17 -0
  483. package/dist/wsdl/parse-binding.d.ts +6 -0
  484. package/dist/wsdl/parse-binding.js +150 -0
  485. package/dist/wsdl/parse-wsdl.d.ts +47 -0
  486. package/dist/wsdl/parse-wsdl.js +161 -0
  487. package/dist/wsdl/qname.d.ts +28 -0
  488. package/dist/wsdl/qname.js +41 -0
  489. package/dist/wsdl/ref-policy.d.ts +54 -0
  490. package/dist/wsdl/ref-policy.js +87 -0
  491. package/dist/wsdl/resolver.d.ts +81 -0
  492. package/dist/wsdl/resolver.js +276 -0
  493. package/dist/wsdl/update-definition.d.ts +106 -0
  494. package/dist/wsdl/update-definition.js +314 -0
  495. package/dist/wss/apply.d.ts +40 -0
  496. package/dist/wss/apply.js +212 -0
  497. package/dist/wss/c14n-prefixes.d.ts +27 -0
  498. package/dist/wss/c14n-prefixes.js +95 -0
  499. package/dist/wss/incoming/decrypt.d.ts +35 -0
  500. package/dist/wss/incoming/decrypt.js +57 -0
  501. package/dist/wss/incoming/index.d.ts +56 -0
  502. package/dist/wss/incoming/index.js +189 -0
  503. package/dist/wss/incoming/verify.d.ts +74 -0
  504. package/dist/wss/incoming/verify.js +440 -0
  505. package/dist/wss/key-identifiers.d.ts +76 -0
  506. package/dist/wss/key-identifiers.js +139 -0
  507. package/dist/wss/keystore/certificate.d.ts +45 -0
  508. package/dist/wss/keystore/certificate.js +134 -0
  509. package/dist/wss/keystore/index.d.ts +50 -0
  510. package/dist/wss/keystore/index.js +80 -0
  511. package/dist/wss/keystore/model.d.ts +83 -0
  512. package/dist/wss/keystore/model.js +27 -0
  513. package/dist/wss/keystore/pem.d.ts +21 -0
  514. package/dist/wss/keystore/pem.js +140 -0
  515. package/dist/wss/keystore/pkcs12.d.ts +21 -0
  516. package/dist/wss/keystore/pkcs12.js +125 -0
  517. package/dist/wss/model.d.ts +160 -0
  518. package/dist/wss/model.js +37 -0
  519. package/dist/wss/outgoing/encryption.d.ts +76 -0
  520. package/dist/wss/outgoing/encryption.js +618 -0
  521. package/dist/wss/outgoing/signature.d.ts +73 -0
  522. package/dist/wss/outgoing/signature.js +239 -0
  523. package/dist/wss/outgoing/timestamp.d.ts +29 -0
  524. package/dist/wss/outgoing/timestamp.js +39 -0
  525. package/dist/wss/outgoing/username-token.d.ts +36 -0
  526. package/dist/wss/outgoing/username-token.js +68 -0
  527. package/dist/wss/security-header.d.ts +31 -0
  528. package/dist/wss/security-header.js +83 -0
  529. package/dist/xml/index.d.ts +7 -0
  530. package/dist/xml/index.js +7 -0
  531. package/dist/xml/namespaces.d.ts +36 -0
  532. package/dist/xml/namespaces.js +60 -0
  533. package/dist/xml/parse.d.ts +79 -0
  534. package/dist/xml/parse.js +109 -0
  535. package/dist/xml/positions.d.ts +26 -0
  536. package/dist/xml/positions.js +71 -0
  537. package/dist/xml/pretty.d.ts +37 -0
  538. package/dist/xml/pretty.js +137 -0
  539. package/dist/xml/serialize.d.ts +6 -0
  540. package/dist/xml/serialize.js +8 -0
  541. package/dist/xml/tolerant-tree.d.ts +56 -0
  542. package/dist/xml/tolerant-tree.js +134 -0
  543. package/dist/xpath/evaluate-async.d.ts +31 -0
  544. package/dist/xpath/evaluate-async.js +81 -0
  545. package/dist/xpath/evaluate.d.ts +98 -0
  546. package/dist/xpath/evaluate.js +340 -0
  547. package/dist/xpath/jsonpath.d.ts +40 -0
  548. package/dist/xpath/jsonpath.js +109 -0
  549. package/dist/xpath/namespaces.d.ts +29 -0
  550. package/dist/xpath/namespaces.js +101 -0
  551. package/dist/xpath/worker.d.ts +7 -0
  552. package/dist/xpath/worker.js +26 -0
  553. package/dist/xsd/builtins.d.ts +36 -0
  554. package/dist/xsd/builtins.js +108 -0
  555. package/dist/xsd/check-references.d.ts +25 -0
  556. package/dist/xsd/check-references.js +145 -0
  557. package/dist/xsd/form-edits.d.ts +57 -0
  558. package/dist/xsd/form-edits.js +153 -0
  559. package/dist/xsd/form-model.d.ts +153 -0
  560. package/dist/xsd/form-model.js +691 -0
  561. package/dist/xsd/locate.d.ts +42 -0
  562. package/dist/xsd/locate.js +249 -0
  563. package/dist/xsd/model.d.ts +249 -0
  564. package/dist/xsd/model.js +1 -0
  565. package/dist/xsd/parse-particles.d.ts +48 -0
  566. package/dist/xsd/parse-particles.js +320 -0
  567. package/dist/xsd/parse-schema.d.ts +21 -0
  568. package/dist/xsd/parse-schema.js +143 -0
  569. package/dist/xsd/resolve-content.d.ts +18 -0
  570. package/dist/xsd/resolve-content.js +242 -0
  571. package/dist/xsd/sample-generator.d.ts +51 -0
  572. package/dist/xsd/sample-generator.js +291 -0
  573. package/dist/xsd/sample-types.d.ts +21 -0
  574. package/dist/xsd/sample-types.js +69 -0
  575. package/dist/xsd/sample-values.d.ts +54 -0
  576. package/dist/xsd/sample-values.js +267 -0
  577. package/dist/xsd/schema-set.d.ts +51 -0
  578. package/dist/xsd/schema-set.js +203 -0
  579. package/dist/xsd/xml-scan.d.ts +64 -0
  580. package/dist/xsd/xml-scan.js +286 -0
  581. package/dist/xsd/xml-writer.d.ts +56 -0
  582. package/dist/xsd/xml-writer.js +103 -0
  583. package/package.json +69 -0
@@ -0,0 +1,60 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { fileURLToPath } from 'node:url';
3
+ import { HttpError } from '../errors.js';
4
+ const DEFAULT_TIMEOUT_MS = 20_000;
5
+ const USER_AGENT = 'wirebench/0.1';
6
+ /**
7
+ * Decodes bytes as UTF-8, honouring an `<?xml ... encoding="iso-8859-1" ?>`
8
+ * declaration when present (single-byte, so it is safely sniffable by
9
+ * decoding the head as UTF-8 first). A `utf-16` declaration would require a
10
+ * BOM/byte-order sniff before the declaration itself is even legible, which
11
+ * does not fit a small helper like this — such documents fall back to (and
12
+ * garble under) UTF-8; use a pre-fetched `text` in that case instead.
13
+ */
14
+ function decodeXmlBytes(bytes) {
15
+ const head = new TextDecoder('utf-8').decode(bytes.subarray(0, 200));
16
+ const match = /^\s*<\?xml[^>]*\bencoding=["']([^"']+)["']/i.exec(head);
17
+ if (match?.[1]?.toLowerCase() === 'iso-8859-1') {
18
+ return new TextDecoder('iso-8859-1').decode(bytes);
19
+ }
20
+ return new TextDecoder('utf-8').decode(bytes);
21
+ }
22
+ async function fetchFile(location) {
23
+ const bytes = await readFile(fileURLToPath(location));
24
+ return { location, bytes: new Uint8Array(bytes), text: decodeXmlBytes(bytes) };
25
+ }
26
+ async function fetchHttp(location, signal) {
27
+ const timeoutSignal = AbortSignal.timeout(DEFAULT_TIMEOUT_MS);
28
+ const combinedSignal = signal !== undefined ? AbortSignal.any([signal, timeoutSignal]) : timeoutSignal;
29
+ const response = await fetch(location, {
30
+ redirect: 'follow',
31
+ signal: combinedSignal,
32
+ headers: { 'user-agent': USER_AGENT },
33
+ });
34
+ if (!response.ok) {
35
+ throw new HttpError('fetch-failed', `GET ${location} failed with status ${response.status}`, {
36
+ details: { location, status: response.status },
37
+ });
38
+ }
39
+ const bytes = new Uint8Array(await response.arrayBuffer());
40
+ return { location: response.url, bytes, text: decodeXmlBytes(bytes) };
41
+ }
42
+ /**
43
+ * Creates the default {@link FetchDocument} implementation: `file:` URLs are
44
+ * read from disk via `node:fs/promises`, and `http(s):` URLs are fetched via
45
+ * the global `fetch` (following redirects, with a 20s timeout combined with
46
+ * the caller's `AbortSignal`, and a `wirebench/0.1` User-Agent).
47
+ *
48
+ * Text is decoded as UTF-8 by default, honouring an `iso-8859-1` `encoding`
49
+ * in the document's XML declaration when present (see {@link decodeXmlBytes}
50
+ * for why `utf-16` isn't sniffed the same way). Other declared encodings
51
+ * fall back to UTF-8.
52
+ */
53
+ export function createDefaultFetchDocument() {
54
+ return async (location, signal) => {
55
+ if (location.startsWith('file:')) {
56
+ return fetchFile(location);
57
+ }
58
+ return fetchHttp(location, signal);
59
+ };
60
+ }
@@ -0,0 +1,17 @@
1
+ import type { WsdlDefinition } from './model.js';
2
+ import type { DefinitionBundle } from './resolver.js';
3
+ /**
4
+ * Merges a resolved {@link DefinitionBundle} into a single {@link WsdlDefinition}.
5
+ *
6
+ * Every `wsdl`-kind document in the bundle is parsed with {@link parseWsdlDocument}
7
+ * and merged: the root's `location`/`targetNamespace`/`documentation`/`imports`
8
+ * are kept, while `messages`/`portTypes`/`bindings`/`services` are concatenated
9
+ * (root first, then imports in discovery order) with duplicate QNames resolved
10
+ * by keeping the first occurrence. `schemaElements` collects the root's own
11
+ * inline schemas, plus the inline schemas of every imported `wsdl`-kind document,
12
+ * plus the root `xs:schema` element of every `xsd`-kind document in the bundle
13
+ * (in that order: root first, then imports in discovery order, then xsd roots).
14
+ *
15
+ * @param bundle the bundle produced by {@link resolveDefinition}
16
+ */
17
+ export declare function parseWsdlBundle(bundle: DefinitionBundle): WsdlDefinition;
@@ -0,0 +1,57 @@
1
+ import { qnameEquals } from './qname.js';
2
+ import { parseWsdlDocument } from './parse-wsdl.js';
3
+ /** Keeps the first occurrence of each expanded QName, dropping later duplicates. */
4
+ function dedupeByQName(items) {
5
+ const result = [];
6
+ for (const item of items) {
7
+ if (!result.some((existing) => qnameEquals(existing.name, item.name))) {
8
+ result.push(item);
9
+ }
10
+ }
11
+ return result;
12
+ }
13
+ /**
14
+ * Merges a resolved {@link DefinitionBundle} into a single {@link WsdlDefinition}.
15
+ *
16
+ * Every `wsdl`-kind document in the bundle is parsed with {@link parseWsdlDocument}
17
+ * and merged: the root's `location`/`targetNamespace`/`documentation`/`imports`
18
+ * are kept, while `messages`/`portTypes`/`bindings`/`services` are concatenated
19
+ * (root first, then imports in discovery order) with duplicate QNames resolved
20
+ * by keeping the first occurrence. `schemaElements` collects the root's own
21
+ * inline schemas, plus the inline schemas of every imported `wsdl`-kind document,
22
+ * plus the root `xs:schema` element of every `xsd`-kind document in the bundle
23
+ * (in that order: root first, then imports in discovery order, then xsd roots).
24
+ *
25
+ * @param bundle the bundle produced by {@link resolveDefinition}
26
+ */
27
+ export function parseWsdlBundle(bundle) {
28
+ const rootDef = parseWsdlDocument(bundle.root.document, bundle.root.location);
29
+ const importedWsdlDefs = bundle.documents
30
+ .filter((doc) => doc.kind === 'wsdl' && doc.location !== bundle.root.location)
31
+ .map((doc) => parseWsdlDocument(doc.document, doc.location));
32
+ const messages = dedupeByQName([...rootDef.messages, ...importedWsdlDefs.flatMap((d) => d.messages)]);
33
+ const portTypes = dedupeByQName([...rootDef.portTypes, ...importedWsdlDefs.flatMap((d) => d.portTypes)]);
34
+ const bindings = dedupeByQName([...rootDef.bindings, ...importedWsdlDefs.flatMap((d) => d.bindings)]);
35
+ const services = dedupeByQName([...rootDef.services, ...importedWsdlDefs.flatMap((d) => d.services)]);
36
+ const xsdSchemaElements = bundle.documents
37
+ .filter((doc) => doc.kind === 'xsd')
38
+ .map((doc) => doc.document.documentElement)
39
+ .filter((el) => el !== null);
40
+ return {
41
+ location: rootDef.location,
42
+ targetNamespace: rootDef.targetNamespace,
43
+ ...(rootDef.documentation !== undefined ? { documentation: rootDef.documentation } : {}),
44
+ messages,
45
+ portTypes,
46
+ bindings,
47
+ services,
48
+ schemaElements: [
49
+ ...rootDef.schemaElements,
50
+ ...importedWsdlDefs.flatMap((d) => d.schemaElements),
51
+ ...xsdSchemaElements,
52
+ ],
53
+ imports: rootDef.imports,
54
+ namespaceDeclarations: rootDef.namespaceDeclarations,
55
+ problems: rootDef.problems,
56
+ };
57
+ }
@@ -0,0 +1,176 @@
1
+ import type { Element } from '@xmldom/xmldom';
2
+ import type { QName } from './qname.js';
3
+ import type { ResolveProblem } from './resolver.js';
4
+ /** A `wsdl:part` within a `wsdl:message`. Exactly one of `element`/`type` is normally present. */
5
+ export interface Part {
6
+ readonly name: string;
7
+ readonly element?: QName;
8
+ readonly type?: QName;
9
+ }
10
+ /** A `wsdl:message` definition. */
11
+ export interface Message {
12
+ readonly name: QName;
13
+ readonly documentation?: string;
14
+ readonly parts: readonly Part[];
15
+ }
16
+ /** Reference to a message from an operation's `wsdl:input`/`wsdl:output`. */
17
+ export interface MessageRef {
18
+ readonly name?: string;
19
+ readonly message: QName;
20
+ /**
21
+ * The `wsdl:input`/`wsdl:output` element this reference was parsed from, kept so extension
22
+ * attributes and elements no parser models (notably `wsam:Action`) stay reachable. Absent
23
+ * only for a reference built programmatically rather than parsed.
24
+ */
25
+ readonly sourceElement?: Element;
26
+ }
27
+ /** A `wsdl:fault` within a `wsdl:operation`. */
28
+ export interface Fault {
29
+ readonly name: string;
30
+ readonly message: QName;
31
+ readonly documentation?: string;
32
+ }
33
+ /** A `wsdl:operation` within a `wsdl:portType`. */
34
+ export interface Operation {
35
+ readonly name: string;
36
+ readonly documentation?: string;
37
+ readonly input?: MessageRef;
38
+ readonly output?: MessageRef;
39
+ readonly faults: readonly Fault[];
40
+ readonly parameterOrder?: readonly string[];
41
+ }
42
+ /** A `wsdl:portType` definition (the abstract interface). */
43
+ export interface PortType {
44
+ readonly name: QName;
45
+ readonly documentation?: string;
46
+ readonly operations: readonly Operation[];
47
+ }
48
+ /** `use` attribute of a `soap:body`/`soap:header`/`soap:fault`. */
49
+ export type SoapUse = 'literal' | 'encoded';
50
+ /** A `soap:body` element within a binding operation's input/output. */
51
+ export interface SoapBody {
52
+ readonly use: SoapUse;
53
+ readonly parts?: readonly string[];
54
+ readonly namespace?: string;
55
+ readonly encodingStyle?: string;
56
+ }
57
+ /** A `soap:headerfault` within a `soap:header`. */
58
+ export interface SoapHeaderFault {
59
+ readonly message: QName;
60
+ readonly part: string;
61
+ readonly use: SoapUse;
62
+ }
63
+ /** A `soap:header` element within a binding operation's input/output. */
64
+ export interface SoapHeader {
65
+ readonly message: QName;
66
+ readonly part: string;
67
+ readonly use: SoapUse;
68
+ readonly namespace?: string;
69
+ readonly encodingStyle?: string;
70
+ readonly headerFaults: readonly SoapHeaderFault[];
71
+ }
72
+ /**
73
+ * One `mime:content` of a `mime:multipartRelated` binding message: the `wsdl:part` it carries
74
+ * and the media type the binding declares for it (absent when the WSDL states none).
75
+ */
76
+ export interface MimePartInfo {
77
+ readonly part: string;
78
+ readonly type?: string;
79
+ }
80
+ /** The input or output side of a `wsdl:binding` operation. */
81
+ export interface BindingMessage {
82
+ readonly body: SoapBody;
83
+ readonly headers: readonly SoapHeader[];
84
+ /**
85
+ * The attachment parts of a WSDL 1.1 `mime:multipartRelated` binding, in document order.
86
+ * Absent (rather than empty) when the message is a plain `soap:body`, so "no MIME binding"
87
+ * and "a MIME binding with no content parts" stay distinguishable.
88
+ */
89
+ readonly mimeParts?: readonly MimePartInfo[];
90
+ }
91
+ /** A `wsdl:fault` within a `wsdl:binding` operation, carrying its `soap:fault` `use`. */
92
+ export interface BindingFault {
93
+ readonly name: string;
94
+ readonly use: SoapUse;
95
+ }
96
+ /** A `wsdl:operation` within a `wsdl:binding`. */
97
+ export interface BindingOperation {
98
+ readonly name: string;
99
+ readonly soapAction?: string;
100
+ readonly style?: 'document' | 'rpc';
101
+ readonly input?: BindingMessage;
102
+ readonly output?: BindingMessage;
103
+ readonly faults: readonly BindingFault[];
104
+ }
105
+ /** SOAP version bound by a `wsdl:binding`, or `'none'` for non-SOAP (e.g. HTTP GET/POST) bindings. */
106
+ export type SoapVersion = '1.1' | '1.2' | 'none';
107
+ /** A `wsdl:binding` definition. */
108
+ export interface Binding {
109
+ readonly name: QName;
110
+ readonly type: QName;
111
+ readonly soapVersion: SoapVersion;
112
+ readonly style: 'document' | 'rpc';
113
+ readonly transport?: string;
114
+ readonly operations: readonly BindingOperation[];
115
+ /** The `wsdl:binding` element, kept for extensions no parser models (`wsaw:UsingAddressing`, `wsp:Policy`). */
116
+ readonly sourceElement?: Element;
117
+ }
118
+ /** A `wsdl:port` within a `wsdl:service`. */
119
+ export interface Port {
120
+ readonly name: string;
121
+ readonly binding: QName;
122
+ readonly address?: string;
123
+ /** The `wsdl:port` element, kept for extensions no parser models (`wsaw:UsingAddressing`, `wsp:Policy`). */
124
+ readonly sourceElement?: Element;
125
+ }
126
+ /** A `wsdl:service` definition. */
127
+ export interface Service {
128
+ readonly name: QName;
129
+ readonly documentation?: string;
130
+ readonly ports: readonly Port[];
131
+ }
132
+ /** A raw, unresolved `wsdl:import` (namespace/location pair); resolved by Task 6's resolver. */
133
+ export interface WsdlImport {
134
+ readonly namespace?: string;
135
+ readonly location: string;
136
+ }
137
+ /**
138
+ * The parsed model of a single WSDL 1.1 document. `imports` and
139
+ * `schemaElements` are left raw/unresolved for later tasks (import
140
+ * resolution in Task 6, XSD compilation in Task 7).
141
+ */
142
+ export interface WsdlDefinition {
143
+ readonly location: string;
144
+ readonly targetNamespace: string;
145
+ readonly documentation?: string;
146
+ readonly messages: readonly Message[];
147
+ readonly portTypes: readonly PortType[];
148
+ readonly bindings: readonly Binding[];
149
+ readonly services: readonly Service[];
150
+ /** Raw `xs:schema` elements found under `wsdl:types`, consumed by Task 7's schema set. */
151
+ readonly schemaElements: readonly Element[];
152
+ readonly imports: readonly WsdlImport[];
153
+ /**
154
+ * Prefix → namespace URI for every `xmlns:*` declared on the root
155
+ * `wsdl:definitions` element. WSDL-scoped QName-valued *attribute values*
156
+ * that no parser resolves (notably `wsdl:arrayType` on a SOAP-encoded array)
157
+ * are resolved against these.
158
+ */
159
+ readonly namespaceDeclarations: Readonly<Record<string, string>>;
160
+ /**
161
+ * Problems encountered parsing this WSDL document itself. Import-resolution
162
+ * problems (failed fetches, unsupported redefines, and the like) live on
163
+ * the {@link DefinitionBundle}'s `problems`, not here — this is always
164
+ * empty for the current parser, which does not yet record WSDL-parse-level
165
+ * problems.
166
+ */
167
+ readonly problems: readonly ResolveProblem[];
168
+ }
169
+ /** Finds a `wsdl:message` by expanded name, or `undefined` if not present in this document. */
170
+ export declare function findMessage(def: WsdlDefinition, qname: QName): Message | undefined;
171
+ /** Finds a `wsdl:portType` by expanded name, or `undefined` if not present in this document. */
172
+ export declare function findPortType(def: WsdlDefinition, qname: QName): PortType | undefined;
173
+ /** Finds a `wsdl:binding` by expanded name, or `undefined` if not present in this document. */
174
+ export declare function findBinding(def: WsdlDefinition, qname: QName): Binding | undefined;
175
+ /** Finds a `wsdl:service` by expanded name, or `undefined` if not present in this document. */
176
+ export declare function findService(def: WsdlDefinition, qname: QName): Service | undefined;
@@ -0,0 +1,17 @@
1
+ import { qnameEquals } from './qname.js';
2
+ /** Finds a `wsdl:message` by expanded name, or `undefined` if not present in this document. */
3
+ export function findMessage(def, qname) {
4
+ return def.messages.find((m) => qnameEquals(m.name, qname));
5
+ }
6
+ /** Finds a `wsdl:portType` by expanded name, or `undefined` if not present in this document. */
7
+ export function findPortType(def, qname) {
8
+ return def.portTypes.find((p) => qnameEquals(p.name, qname));
9
+ }
10
+ /** Finds a `wsdl:binding` by expanded name, or `undefined` if not present in this document. */
11
+ export function findBinding(def, qname) {
12
+ return def.bindings.find((b) => qnameEquals(b.name, qname));
13
+ }
14
+ /** Finds a `wsdl:service` by expanded name, or `undefined` if not present in this document. */
15
+ export function findService(def, qname) {
16
+ return def.services.find((s) => qnameEquals(s.name, qname));
17
+ }
@@ -0,0 +1,6 @@
1
+ import type { Element } from '@xmldom/xmldom';
2
+ import type { Binding, Service } from './model.js';
3
+ /** Parses a single `wsdl:binding` element into a {@link Binding}. */
4
+ export declare function parseBinding(bindingEl: Element, location: string, defaultNamespace: string): Binding;
5
+ /** Parses a single `wsdl:service` element into a {@link Service}. */
6
+ export declare function parseService(serviceEl: Element, location: string, defaultNamespace: string): Service;
@@ -0,0 +1,150 @@
1
+ import { NS } from '../xml/namespaces.js';
2
+ import { childElements, firstChildElement, optionalAttribute, readDocumentation, requireAttribute, } from './dom-utils.js';
3
+ import { parseQName } from './qname.js';
4
+ const SOAP_NAMESPACES = [NS.WSDL_SOAP11, NS.WSDL_SOAP12];
5
+ function soapNs(binding) {
6
+ return SOAP_NAMESPACES.find((ns) => firstChildElement(binding, ns, 'binding') !== undefined);
7
+ }
8
+ function readUse(element) {
9
+ const use = element !== undefined ? optionalAttribute(element, 'use') : undefined;
10
+ return use === 'encoded' ? 'encoded' : 'literal';
11
+ }
12
+ function parseSoapBody(element) {
13
+ const parts = optionalAttribute(element, 'parts');
14
+ const namespace = optionalAttribute(element, 'namespace');
15
+ const encodingStyle = optionalAttribute(element, 'encodingStyle');
16
+ return {
17
+ use: readUse(element),
18
+ ...(parts !== undefined ? { parts: parts.split(/\s+/).filter((p) => p.length > 0) } : {}),
19
+ ...(namespace !== undefined ? { namespace } : {}),
20
+ ...(encodingStyle !== undefined ? { encodingStyle } : {}),
21
+ };
22
+ }
23
+ function parseHeaderFault(element, location, defaultNamespace) {
24
+ return {
25
+ message: parseQName(requireAttribute(element, 'message', location), element, defaultNamespace),
26
+ part: requireAttribute(element, 'part', location),
27
+ use: readUse(element),
28
+ };
29
+ }
30
+ function parseSoapHeader(element, ns, location, defaultNamespace) {
31
+ const headerFaults = childElements(element, ns, 'headerfault').map((hf) => parseHeaderFault(hf, location, defaultNamespace));
32
+ const namespace = optionalAttribute(element, 'namespace');
33
+ const encodingStyle = optionalAttribute(element, 'encodingStyle');
34
+ return {
35
+ message: parseQName(requireAttribute(element, 'message', location), element, defaultNamespace),
36
+ part: requireAttribute(element, 'part', location),
37
+ use: readUse(element),
38
+ ...(namespace !== undefined ? { namespace } : {}),
39
+ ...(encodingStyle !== undefined ? { encodingStyle } : {}),
40
+ headerFaults,
41
+ };
42
+ }
43
+ /**
44
+ * Splits a `mime:multipartRelated` into the `mime:part` that carries the SOAP envelope (the one
45
+ * holding `soap:body`) and the `mime:content` declarations of every other part — the attachment
46
+ * slots the request editor offers a "Part" for.
47
+ */
48
+ function parseMultipartRelated(multipartEl, ns) {
49
+ let envelopePart;
50
+ const mimeParts = [];
51
+ for (const partEl of childElements(multipartEl, NS.WSDL_MIME, 'part')) {
52
+ if (firstChildElement(partEl, ns, 'body') !== undefined) {
53
+ envelopePart ??= partEl;
54
+ continue;
55
+ }
56
+ for (const contentEl of childElements(partEl, NS.WSDL_MIME, 'content')) {
57
+ const part = optionalAttribute(contentEl, 'part');
58
+ const type = optionalAttribute(contentEl, 'type');
59
+ if (part === undefined) {
60
+ continue;
61
+ }
62
+ mimeParts.push({ part, ...(type !== undefined ? { type } : {}) });
63
+ }
64
+ }
65
+ return { ...(envelopePart !== undefined ? { envelopePart } : {}), mimeParts };
66
+ }
67
+ function parseBindingMessage(wsdlMessageEl, ns, location, defaultNamespace) {
68
+ if (wsdlMessageEl === undefined || ns === undefined) {
69
+ return undefined;
70
+ }
71
+ // In a WSDL 1.1 MIME binding the `soap:body` sits one level down, inside the
72
+ // `mime:part` that carries the envelope — so the envelope's own `use`/`parts` would be
73
+ // lost if only the direct children were read.
74
+ const multipartEl = firstChildElement(wsdlMessageEl, NS.WSDL_MIME, 'multipartRelated');
75
+ const multipart = multipartEl !== undefined ? parseMultipartRelated(multipartEl, ns) : undefined;
76
+ const soapOwner = multipart?.envelopePart ?? wsdlMessageEl;
77
+ const bodyEl = firstChildElement(soapOwner, ns, 'body');
78
+ const body = bodyEl !== undefined ? parseSoapBody(bodyEl) : { use: 'literal' };
79
+ const headers = childElements(soapOwner, ns, 'header').map((h) => parseSoapHeader(h, ns, location, defaultNamespace));
80
+ return { body, headers, ...(multipart !== undefined ? { mimeParts: multipart.mimeParts } : {}) };
81
+ }
82
+ function parseBindingFault(element, ns, location) {
83
+ const soapFault = ns !== undefined ? firstChildElement(element, ns, 'fault') : undefined;
84
+ return { name: requireAttribute(element, 'name', location), use: readUse(soapFault) };
85
+ }
86
+ function parseBindingOperation(opEl, ns, location, defaultNamespace) {
87
+ const soapOp = ns !== undefined ? firstChildElement(opEl, ns, 'operation') : undefined;
88
+ const styleAttr = soapOp !== undefined ? optionalAttribute(soapOp, 'style') : undefined;
89
+ const soapAction = soapOp !== undefined ? optionalAttribute(soapOp, 'soapAction') : undefined;
90
+ const inputEl = firstChildElement(opEl, NS.WSDL, 'input');
91
+ const outputEl = firstChildElement(opEl, NS.WSDL, 'output');
92
+ const input = parseBindingMessage(inputEl, ns, location, defaultNamespace);
93
+ const output = parseBindingMessage(outputEl, ns, location, defaultNamespace);
94
+ const faults = childElements(opEl, NS.WSDL, 'fault').map((f) => parseBindingFault(f, ns, location));
95
+ return {
96
+ name: requireAttribute(opEl, 'name', location),
97
+ ...(soapAction !== undefined ? { soapAction } : {}),
98
+ ...(styleAttr === 'rpc' || styleAttr === 'document' ? { style: styleAttr } : {}),
99
+ ...(input !== undefined ? { input } : {}),
100
+ ...(output !== undefined ? { output } : {}),
101
+ faults,
102
+ };
103
+ }
104
+ /** Parses a single `wsdl:binding` element into a {@link Binding}. */
105
+ export function parseBinding(bindingEl, location, defaultNamespace) {
106
+ const ns = soapNs(bindingEl);
107
+ const soapBindingEl = ns !== undefined ? firstChildElement(bindingEl, ns, 'binding') : undefined;
108
+ const soapVersion = ns === NS.WSDL_SOAP11 ? '1.1' : ns === NS.WSDL_SOAP12 ? '1.2' : 'none';
109
+ const styleAttr = soapBindingEl !== undefined ? optionalAttribute(soapBindingEl, 'style') : undefined;
110
+ const transport = soapBindingEl !== undefined ? optionalAttribute(soapBindingEl, 'transport') : undefined;
111
+ const operations = childElements(bindingEl, NS.WSDL, 'operation').map((op) => parseBindingOperation(op, ns, location, defaultNamespace));
112
+ return {
113
+ name: { namespaceUri: defaultNamespace, localName: requireAttribute(bindingEl, 'name', location) },
114
+ type: parseQName(requireAttribute(bindingEl, 'type', location), bindingEl, defaultNamespace),
115
+ soapVersion,
116
+ style: styleAttr === 'rpc' ? 'rpc' : 'document',
117
+ ...(transport !== undefined ? { transport } : {}),
118
+ operations,
119
+ sourceElement: bindingEl,
120
+ };
121
+ }
122
+ function readAddress(portEl) {
123
+ for (const ns of [NS.WSDL_SOAP11, NS.WSDL_SOAP12, NS.WSDL_HTTP]) {
124
+ const addressEl = firstChildElement(portEl, ns, 'address');
125
+ if (addressEl !== undefined) {
126
+ return optionalAttribute(addressEl, 'location');
127
+ }
128
+ }
129
+ return undefined;
130
+ }
131
+ function parsePort(portEl, location, defaultNamespace) {
132
+ const address = readAddress(portEl);
133
+ return {
134
+ name: requireAttribute(portEl, 'name', location),
135
+ binding: parseQName(requireAttribute(portEl, 'binding', location), portEl, defaultNamespace),
136
+ ...(address !== undefined ? { address } : {}),
137
+ sourceElement: portEl,
138
+ };
139
+ }
140
+ /** Parses a single `wsdl:service` element into a {@link Service}. */
141
+ export function parseService(serviceEl, location, defaultNamespace) {
142
+ const documentation = readDocumentation(serviceEl, NS.WSDL);
143
+ const ports = childElements(serviceEl, NS.WSDL, 'port').map((p) => parsePort(p, location, defaultNamespace));
144
+ const name = { namespaceUri: defaultNamespace, localName: requireAttribute(serviceEl, 'name', location) };
145
+ return {
146
+ name,
147
+ ...(documentation !== undefined ? { documentation } : {}),
148
+ ports,
149
+ };
150
+ }
@@ -0,0 +1,47 @@
1
+ import type { Document } from '@xmldom/xmldom';
2
+ import type { WsdlDefinition } from './model.js';
3
+ import type { FetchDocument } from './resolver.js';
4
+ /**
5
+ * Source of a WSDL document. `text` is required when `resolveImports` is
6
+ * `false` (there is nothing to fetch it with); it is optional when
7
+ * `resolveImports` is `true`, in which case an absent `text` is fetched via
8
+ * `fetchDocument`.
9
+ */
10
+ export interface WsdlDocumentSource {
11
+ readonly location: string;
12
+ readonly text?: string;
13
+ }
14
+ /** Options for {@link parseWsdl}. */
15
+ export interface ParseWsdlOptions {
16
+ /** Fetches a WSDL/XSD document by location. Unused while `resolveImports` is `false`. */
17
+ readonly fetchDocument: FetchDocument;
18
+ /** Whether to follow `wsdl:import`/`xsd:import`/`xsd:include`/`xsd:redefine`. */
19
+ readonly resolveImports: boolean;
20
+ readonly signal?: AbortSignal;
21
+ }
22
+ /**
23
+ * Parses a single, already-loaded WSDL 1.1 `Document` into a {@link WsdlDefinition}.
24
+ *
25
+ * Pure and synchronous: it does not resolve `wsdl:import`s or fetch anything,
26
+ * and does not validate cross-references (e.g. a binding's `type` pointing at
27
+ * an unknown `portType`) — only structural requirements of the WSDL document
28
+ * itself (required attributes) are enforced.
29
+ *
30
+ * @param doc the parsed WSDL document
31
+ * @param location a human-readable origin for the document, echoed into the resulting model and errors
32
+ * @throws {WsdlParseError} with code `not-a-wsdl` if the root element is not `{NS.WSDL}definitions`
33
+ * @throws {WsdlParseError} with code `wsdl-invalid` for structural errors (e.g. a missing required attribute)
34
+ */
35
+ export declare function parseWsdlDocument(doc: Document, location: string): WsdlDefinition;
36
+ /**
37
+ * Parses a WSDL 1.1 document, given its root source.
38
+ *
39
+ * When `options.resolveImports` is `false`, only `root.text` is parsed as a
40
+ * single document (`fetchDocument` is unused). When `true`, the full import
41
+ * graph (`wsdl:import`/`xsd:import`/`xsd:include`/`xsd:redefine`) is resolved
42
+ * via {@link resolveDefinition} and merged via {@link parseWsdlBundle}.
43
+ *
44
+ * @throws {WsdlParseError} propagated from {@link parseWsdlDocument} for `not-a-wsdl`/`wsdl-invalid`
45
+ * @throws {WsdlParseError} with code `fetch-failed` if the root document cannot be fetched while resolving imports
46
+ */
47
+ export declare function parseWsdl(root: WsdlDocumentSource, options: ParseWsdlOptions): Promise<WsdlDefinition>;