@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,164 @@
1
+ /**
2
+ * The envelope transforms applied on the way out, per request property:
3
+ * "Remove Empty Content", "Strip Whitespaces", "Pretty Print" and "Entitize Properties".
4
+ *
5
+ * All four are text transforms over a tolerant tokenizer, never a DOM round trip: an envelope
6
+ * a user hand-edited may not be well formed, and a transform that throws (or silently rewrites
7
+ * attribute quoting) on the way to the wire is worse than one that does nothing. Every function
8
+ * here returns its input unchanged when it cannot understand the document.
9
+ *
10
+ * Entitizing is the odd one out. It escapes the values substituted by property expansion,
11
+ * which cannot be identified after the fact — by the time an envelope is a string, a `&` that
12
+ * came from a property is indistinguishable from one the user typed. So {@link entitizeValue}
13
+ * is applied *during* expansion instead (see `project/properties.ts`'s `entitize` option), and
14
+ * lives here alongside its siblings.
15
+ */
16
+ import { formatXml } from '../xml/pretty.js';
17
+ import { buildRangeTree, localNameOf, tokenizeXml } from '../xml/tolerant-tree.js';
18
+ /** SOAP wrapper elements that "Remove Empty Content" must never delete. */
19
+ const WRAPPERS = new Set(['Envelope', 'Header', 'Body']);
20
+ /** The `?` the sample generator writes for an untouched leaf. */
21
+ const PLACEHOLDER_ONLY = /^[\s?]*$/;
22
+ /**
23
+ * True when this element carries nothing worth sending: no attributes, no element children
24
+ * that survived, and inner text that is empty, whitespace, or only `?` placeholders. A CDATA
25
+ * section, a comment or a processing instruction counts as content.
26
+ */
27
+ function isEmptyElement(node, removed) {
28
+ if (WRAPPERS.has(localNameOf(node.name))) {
29
+ return false;
30
+ }
31
+ if (node.rawAttrs !== '') {
32
+ return false;
33
+ }
34
+ if (node.children.some((child) => !removed.has(child))) {
35
+ return false;
36
+ }
37
+ for (const token of node.leafTokens) {
38
+ if (token.kind !== 'text') {
39
+ return false;
40
+ }
41
+ if (!PLACEHOLDER_ONLY.test(token.raw)) {
42
+ return false;
43
+ }
44
+ }
45
+ return true;
46
+ }
47
+ /** Collects every element that should disappear, deepest first so parents see their children's fate. */
48
+ function collectRemovals(nodes, removed) {
49
+ for (const node of nodes) {
50
+ collectRemovals(node.children, removed);
51
+ if (isEmptyElement(node, removed)) {
52
+ removed.add(node);
53
+ }
54
+ }
55
+ }
56
+ /** Deletes `ranges` (non-overlapping, any order) from `text`. */
57
+ function cut(text, ranges) {
58
+ const sorted = [...ranges].sort((a, b) => a.start - b.start);
59
+ let out = '';
60
+ let cursor = 0;
61
+ for (const range of sorted) {
62
+ if (range.start < cursor) {
63
+ continue;
64
+ }
65
+ out += text.slice(cursor, range.start);
66
+ cursor = range.end;
67
+ }
68
+ return out + text.slice(cursor);
69
+ }
70
+ /**
71
+ * "Remove Empty Content": drops every element that has no attributes and whose whole
72
+ * content is empty, whitespace, or `?` placeholders — recursively, so a parent left with
73
+ * nothing but removed children goes too. The `Envelope`/`Header`/`Body` wrappers are never
74
+ * removed, however empty they are.
75
+ *
76
+ * @param xml the envelope text
77
+ * @returns the transformed envelope, or `xml` unchanged when it could not be parsed
78
+ */
79
+ export function removeEmptyContent(xml) {
80
+ const tokens = tokenizeXml(xml);
81
+ if (tokens === undefined) {
82
+ return xml;
83
+ }
84
+ const roots = buildRangeTree(tokens);
85
+ if (roots === undefined) {
86
+ return xml;
87
+ }
88
+ const removed = new Set();
89
+ collectRemovals(roots, removed);
90
+ if (removed.size === 0) {
91
+ return xml;
92
+ }
93
+ // Only outermost removals matter: cutting a parent already takes its children with it.
94
+ const outermost = [];
95
+ const walk = (nodes) => {
96
+ for (const node of nodes) {
97
+ if (removed.has(node)) {
98
+ outermost.push(node);
99
+ continue;
100
+ }
101
+ walk(node.children);
102
+ }
103
+ };
104
+ walk(roots);
105
+ // Trailing whitespace on the line the element sat on goes with it, so removing a child does
106
+ // not leave a blank, indented line behind.
107
+ const ranges = outermost.map((node) => {
108
+ let start = node.start;
109
+ while (start > 0 && (xml[start - 1] === ' ' || xml[start - 1] === '\t')) {
110
+ start -= 1;
111
+ }
112
+ let end = node.end;
113
+ if (start > 0 && xml[start - 1] === '\n') {
114
+ // Keep the newline that *precedes* the element only if the element is not the whole line.
115
+ if (xml[end] === '\n') {
116
+ end += 1;
117
+ }
118
+ }
119
+ return { start, end };
120
+ });
121
+ return cut(xml, ranges);
122
+ }
123
+ /**
124
+ * "Strip Whitespaces": drops whitespace-only text nodes between elements and trims
125
+ * the leading/trailing whitespace of every other text node. CDATA sections, comments and
126
+ * processing instructions are left exactly as they are.
127
+ *
128
+ * @param xml the envelope text
129
+ * @returns the transformed envelope, or `xml` unchanged when it could not be tokenized
130
+ */
131
+ export function stripWhitespaces(xml) {
132
+ const tokens = tokenizeXml(xml);
133
+ if (tokens === undefined) {
134
+ return xml;
135
+ }
136
+ let out = '';
137
+ for (const token of tokens) {
138
+ out += token.kind === 'text' ? token.raw.trim() : token.raw;
139
+ }
140
+ return out;
141
+ }
142
+ /**
143
+ * "Pretty Print": reformats the envelope with the given indent width.
144
+ *
145
+ * @param xml the envelope text
146
+ * @param indentWidth spaces per nesting level; defaults to 3, the editor's default tab size
147
+ * @returns the formatted envelope, or `xml` unchanged when it could not be formatted
148
+ */
149
+ export function prettyPrint(xml, indentWidth = 3) {
150
+ const result = formatXml(xml, { indent: ' '.repeat(Math.max(0, indentWidth)) });
151
+ return result.problem === undefined ? result.text : xml;
152
+ }
153
+ /**
154
+ * "Entitize Properties", applied to one substituted property value: escapes the three
155
+ * characters that would otherwise be read as markup once the value lands inside an envelope.
156
+ *
157
+ * `"` and `'` are deliberately left alone: expansion targets element content far more often
158
+ * than an attribute value, and escaping quotes there would show up as `&quot;` in the payload.
159
+ *
160
+ * @param value the expanded property value
161
+ */
162
+ export function entitizeValue(value) {
163
+ return value.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
164
+ }
@@ -0,0 +1,307 @@
1
+ /**
2
+ * Facade-level types tying Tasks 5-10 together: importing a WSDL definition
3
+ * and sending a SOAP request. These are the shapes the desktop app (Task 13)
4
+ * consumes directly.
5
+ */
6
+ import type { FetchDocument } from './wsdl/resolver.js';
7
+ import type { QName } from './wsdl/qname.js';
8
+ import type { DefinitionBundle } from './wsdl/resolver.js';
9
+ import type { MimePartInfo, WsdlDefinition } from './wsdl/model.js';
10
+ import type { SchemaSet } from './xsd/schema-set.js';
11
+ import type { HttpExchange, ProxyOptions, TlsOptions } from './http/types.js';
12
+ import type { SoapEnvelopeVersion } from './soap/envelope.js';
13
+ import type { SoapFault } from './soap/fault.js';
14
+ import type { UnresolvedRef } from './project/properties.js';
15
+ import type { Attachment } from './project/model.js';
16
+ import type { AttachmentResolver, ResponseAttachment } from './soap/mime/types.js';
17
+ import type { WssContext, WssIncomingConfig, WssOutgoingConfig } from './wss/model.js';
18
+ import type { WssResult } from './wss/incoming/index.js';
19
+ import type { WssRequestProperties } from './wss/apply.js';
20
+ import type { WsaConfig } from './wsa/model.js';
21
+ import type { WsaSummary } from './wsa/policy-detect.js';
22
+ /** Where a WSDL definition comes from. */
23
+ export type ImportSource = {
24
+ readonly kind: 'url';
25
+ readonly url: string;
26
+ } | {
27
+ readonly kind: 'file';
28
+ readonly path: string;
29
+ } | {
30
+ readonly kind: 'text';
31
+ readonly text: string;
32
+ /** Base location for resolving relative imports; defaults to `inline:wsdl`. */
33
+ readonly location?: string;
34
+ };
35
+ /** One phase of an in-progress {@link ImportSource} import. */
36
+ export type ImportProgress = {
37
+ readonly phase: 'fetch';
38
+ readonly location: string;
39
+ } | {
40
+ readonly phase: 'parse';
41
+ } | {
42
+ readonly phase: 'schema';
43
+ } | {
44
+ readonly phase: 'done';
45
+ };
46
+ /**
47
+ * Definition-cache behaviour for `importDefinition`: `'prefer-cache'` resolves
48
+ * entirely from a valid cache with no network access (falling back to the
49
+ * network, with a problem reported, if the cache is missing or corrupt);
50
+ * `'refresh'` always resolves from the network and then (re)writes the
51
+ * cache; `'none'` ignores the cache entirely.
52
+ */
53
+ export interface ImportCacheOptions {
54
+ /** Absolute path of the interface's `definition/` directory (see `definitionCacheDir`). */
55
+ readonly dir: string;
56
+ readonly mode: 'prefer-cache' | 'refresh' | 'none';
57
+ }
58
+ /** Options accepted by `importDefinition`. */
59
+ export interface ImportOptions {
60
+ /** Overrides the default `file://`/`http(s)://` fetcher, e.g. for tests. */
61
+ readonly fetchDocument?: FetchDocument;
62
+ /** Basic auth credentials added to every `http(s)://` fetch made while importing. */
63
+ readonly auth?: {
64
+ readonly username: string;
65
+ readonly password: string;
66
+ };
67
+ readonly signal?: AbortSignal;
68
+ readonly onProgress?: (event: ImportProgress) => void;
69
+ /** Definition-cache behaviour; see {@link ImportCacheOptions}. Omitted/absent means no caching. */
70
+ readonly cache?: ImportCacheOptions;
71
+ }
72
+ /** A non-fatal problem encountered while importing a definition, tagged by the stage that raised it. */
73
+ export interface ImportProblem {
74
+ readonly source: 'resolve' | 'wsdl' | 'schema';
75
+ readonly code: string;
76
+ readonly message: string;
77
+ readonly location?: string;
78
+ readonly line?: number;
79
+ readonly column?: number;
80
+ }
81
+ /** One binding operation's port bindings, as summarized for a picker UI. */
82
+ export interface OperationSummary {
83
+ readonly bindingName: QName;
84
+ readonly operationName: string;
85
+ readonly soapVersion: '1.1' | '1.2' | 'none';
86
+ readonly soapAction?: string;
87
+ readonly style: 'document' | 'rpc';
88
+ readonly documentation?: string;
89
+ readonly ports: readonly {
90
+ readonly serviceName: QName;
91
+ readonly portName: string;
92
+ readonly address?: string;
93
+ }[];
94
+ /**
95
+ * The `mime:multipartRelated` attachment parts declared for this operation's input, in document
96
+ * order; empty when the input is a plain `soap:body`. Drives the request editor's "Part" column.
97
+ */
98
+ readonly inputMimeParts: readonly MimePartInfo[];
99
+ }
100
+ /** The full result of importing a WSDL definition: parsed model, schema set, problems and an operation picker list. */
101
+ export interface ImportResult {
102
+ readonly definition: WsdlDefinition;
103
+ readonly bundle: DefinitionBundle;
104
+ readonly schemaSet: SchemaSet;
105
+ readonly problems: readonly ImportProblem[];
106
+ readonly operations: readonly OperationSummary[];
107
+ /** What the definition itself says about WS-Addressing; see `summarizeWsa`. */
108
+ readonly wsa: WsaSummary;
109
+ /** True when this result was resolved entirely from the definition cache, with no network access. */
110
+ readonly fromCache?: boolean;
111
+ }
112
+ /**
113
+ * Credentials for one send, already resolved to plaintext: the desktop app looks a
114
+ * `passwordRef` up in its secret store before calling the engine, so the engine never
115
+ * sees a secret reference (and never persists or logs the password).
116
+ */
117
+ export type SendAuth = {
118
+ readonly type: 'basic';
119
+ readonly username: string;
120
+ readonly password: string;
121
+ /** Send the `Authorization` header on the first attempt instead of waiting for a 401. */
122
+ readonly preemptive: boolean;
123
+ } | {
124
+ readonly type: 'ntlm';
125
+ readonly username: string;
126
+ readonly password: string;
127
+ readonly domain?: string;
128
+ readonly workstation?: string;
129
+ }
130
+ /** A token in an `Authorization` header. `scheme` defaults to `Bearer`. */
131
+ | {
132
+ readonly type: 'bearer';
133
+ readonly token: string;
134
+ readonly scheme?: string;
135
+ }
136
+ /** A key in one header or one query parameter. */
137
+ | {
138
+ readonly type: 'api-key';
139
+ readonly name: string;
140
+ readonly value: string;
141
+ readonly in: 'header' | 'query';
142
+ }
143
+ /**
144
+ * An OAuth2 access token the host already obtained. The engine never runs a grant during a send:
145
+ * the token is fetched (and cached, and refreshed) by the host, so a send is one exchange and
146
+ * the browser is never opened behind it. On the wire it is a Bearer token.
147
+ */
148
+ | {
149
+ readonly type: 'oauth2';
150
+ readonly accessToken: string;
151
+ };
152
+ /** What authentication actually did during one send, for the UI to explain the exchange. */
153
+ export interface AuthSummary {
154
+ readonly scheme: SendAuth['type'];
155
+ /** True when the server answered the first attempt with a 401 challenge. */
156
+ readonly challenged: boolean;
157
+ /**
158
+ * How many HTTP attempts the send made: 1 preemptive/unchallenged, 2 after a Basic
159
+ * challenge, 3 for a full NTLM handshake (bare, Type 1, Type 3).
160
+ */
161
+ readonly attempts: 1 | 2 | 3;
162
+ }
163
+ /** Input to `sendSoapRequest`: an already-built envelope plus transport knobs. */
164
+ export interface SoapSendInput {
165
+ readonly endpoint: string;
166
+ readonly envelopeXml: string;
167
+ readonly soapVersion: '1.1' | '1.2';
168
+ readonly soapAction?: string;
169
+ /** Extra/override HTTP headers; a caller-provided Content-Type or SOAPAction overrides the computed ones. */
170
+ readonly headers?: Readonly<Record<string, string>>;
171
+ /** Milliseconds before the request is aborted. Default 60000. */
172
+ readonly timeoutMs?: number;
173
+ /** Default 'utf-8'; charset in Content-Type and body encoding. Other encodings use node Buffer when supported. */
174
+ readonly encoding?: string;
175
+ /** Default false. */
176
+ readonly followRedirects?: boolean;
177
+ readonly maxSizeBytes?: number;
178
+ readonly skipSoapAction?: boolean;
179
+ /** Local network interface address to bind the outgoing socket to ("Bind Address"). */
180
+ readonly localAddress?: string;
181
+ /** Compress the request body and set `Content-Encoding` accordingly. Default: uncompressed. */
182
+ readonly compressBody?: 'gzip';
183
+ /**
184
+ * XML-escape every property value substituted into `envelopeXml` ("Entitize
185
+ * Properties"). Only meaningful when the send is given property scopes to expand against.
186
+ */
187
+ readonly entitize?: boolean;
188
+ readonly tls?: TlsOptions;
189
+ readonly proxy?: ProxyOptions;
190
+ /** Offer HTTP/2 in the TLS ALPN handshake. Off by default; see `HttpRequest.allowH2`. */
191
+ readonly allowH2?: boolean;
192
+ readonly signal?: AbortSignal;
193
+ /** Resolved credentials; see {@link SendAuth}. A caller-supplied `Authorization` header wins. */
194
+ readonly auth?: SendAuth;
195
+ /** Attachments to send; only acted on when {@link attachmentOptions} says how. */
196
+ readonly attachments?: readonly Attachment[];
197
+ /** MTOM/SwA/inline-file behaviour plus the resolvers that turn references into bytes. */
198
+ readonly attachmentOptions?: SendAttachmentOptions;
199
+ /**
200
+ * WS-Security applied to the envelope after property expansion and inline-file substitution
201
+ * and before attachment packaging, so the header is part of the envelope that actually goes
202
+ * on the wire (and that raw capture shows), and a signature covers the substituted bytes
203
+ * rather than the `file:` reference they replaced.
204
+ */
205
+ readonly wss?: SoapSendWss;
206
+ /**
207
+ * WS-Addressing applied to the envelope after property expansion and inline-file
208
+ * substitution, and *before* WS-Security, so a signature configured to cover the `wsa:*`
209
+ * headers can actually reach them.
210
+ */
211
+ readonly wsa?: SoapSendWsa;
212
+ }
213
+ /** The WS-Addressing half of a send: the effective configuration and what it needs to resolve. */
214
+ export interface SoapSendWsa {
215
+ readonly config: WsaConfig;
216
+ /** The WSDL-derived default `wsa:Action` for this operation; see `defaultAction`. */
217
+ readonly defaultAction: string;
218
+ /** Mints the MessageID's UUID; defaults to `crypto.randomUUID`. Injected by golden tests. */
219
+ readonly uuid?: () => string;
220
+ }
221
+ /** The WS-Security half of a send: the configuration, its capabilities, and the overrides. */
222
+ export interface SoapSendWss {
223
+ readonly outgoing?: WssOutgoingConfig;
224
+ /** Applied to the response: decryption, signature verification and timestamp freshness. */
225
+ readonly incoming?: WssIncomingConfig;
226
+ readonly ctx: WssContext;
227
+ readonly requestProperties?: WssRequestProperties;
228
+ }
229
+ /**
230
+ * How one send treats attachments: the request's own MTOM/SwA properties, plus the
231
+ * resolvers that read bytes (the engine never touches the file system on its own —
232
+ * see `createFileAttachmentResolver`).
233
+ *
234
+ * `expandMtomAttachments` and `inlineResponseAttachments` are separate knobs: the
235
+ * first replaces each `xop:Include` in the response envelope with the
236
+ * referenced part's base64, the second keeps those parts listed as attachments even
237
+ * once they have been expanded into the envelope.
238
+ */
239
+ export interface SendAttachmentOptions {
240
+ /** Rewrite `cid:` references as `xop:Include` and send an MTOM package. */
241
+ readonly enableMtom: boolean;
242
+ /** Send an MTOM package even when nothing was optimised. */
243
+ readonly forceMtom: boolean;
244
+ /** Send the envelope alone; attachments (and MTOM) are skipped entirely. */
245
+ readonly disableMultiparts: boolean;
246
+ /** Base64 transfer encoding for SwA parts instead of binary. */
247
+ readonly encodeAttachments: boolean;
248
+ /**
249
+ * Replace `file:<path>` element text with the file's base64 before sending. Substitution
250
+ * happens with property expansion, *before* WS-Addressing and WS-Security, so what is signed
251
+ * is what is sent.
252
+ */
253
+ readonly enableInlineFiles: boolean;
254
+ /** Keep response parts listed as attachments even when they were expanded into the envelope. */
255
+ readonly inlineResponseAttachments: boolean;
256
+ /** Replace `xop:Include` in the response envelope with the referenced part's base64. */
257
+ readonly expandMtomAttachments: boolean;
258
+ readonly resolver: AttachmentResolver;
259
+ /** Reads one file for `enableInlineFiles`; without it, inline files are left alone. */
260
+ readonly resolveFile?: (path: string) => Promise<Uint8Array>;
261
+ /** Base directory for relative inline-file references. */
262
+ readonly resourceRoot?: string;
263
+ }
264
+ /** The result of sending a SOAP request: the raw HTTP exchange plus a structural read of the response. */
265
+ export interface SoapExchange {
266
+ readonly http: HttpExchange;
267
+ readonly response?: {
268
+ /**
269
+ * Decoded body as text. When incoming WS-Security decrypted the response, this is the
270
+ * *restored* envelope: the raw bytes on `http` stay exactly as they arrived, so the Raw
271
+ * view shows ciphertext while the XML view shows plaintext.
272
+ */
273
+ readonly envelopeXml: string;
274
+ readonly version?: SoapEnvelopeVersion;
275
+ readonly fault?: SoapFault;
276
+ /** False when the body is not a SOAP envelope (an HTML error page, etc.). */
277
+ readonly isSoap: boolean;
278
+ /** Parts of a `multipart/related` response other than the envelope. */
279
+ readonly attachments?: readonly ResponseAttachment[];
280
+ };
281
+ /**
282
+ * Total time on the wire. For a challenged send ({@link AuthSummary.attempts} greater than 1 —
283
+ * a Basic retry or an NTLM handshake) this is the *sum* of every attempt, not just the final
284
+ * one, since all of them actually happened.
285
+ */
286
+ readonly durationMs: number;
287
+ readonly problems: readonly {
288
+ readonly code: 'not-soap' | 'xml-parse-error' | 'decode-error' | 'mime-parse' | 'inline-file-missing';
289
+ readonly message: string;
290
+ }[];
291
+ /** What authentication did, when the send was given {@link SoapSendInput.auth}. */
292
+ readonly auth?: AuthSummary;
293
+ /** Property expansions in the request that could not be resolved (set only when `options.scopes` was given). */
294
+ readonly unresolved?: readonly UnresolvedRef[];
295
+ /** What WS-Addressing put on the wire, when the send was given {@link SoapSendInput.wsa}. */
296
+ readonly wsa?: {
297
+ readonly messageId?: string;
298
+ readonly action?: string;
299
+ };
300
+ /** What WS-Security did, when the send was given {@link SoapSendInput.wss}. */
301
+ readonly wss?: {
302
+ /** The entry kinds applied to the outgoing envelope, in the order they were applied. */
303
+ readonly applied?: readonly string[];
304
+ /** What incoming processing made of the response, when the send was given a configuration. */
305
+ readonly incoming?: WssResult;
306
+ };
307
+ }
package/dist/types.js ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Facade-level types tying Tasks 5-10 together: importing a WSDL definition
3
+ * and sending a SOAP request. These are the shapes the desktop app (Task 13)
4
+ * consumes directly.
5
+ */
6
+ export {};
@@ -0,0 +1,61 @@
1
+ /**
2
+ * Message validation: the SOAP structure checks and the XSD schema validation
3
+ * behind one call.
4
+ *
5
+ * Structure runs first and schema only when the document is well formed —
6
+ * validating the body of a document libxml2 cannot parse produces nothing but
7
+ * noise, and the parse error is already reported with a position.
8
+ */
9
+ import type { WsdlDefinition } from '../wsdl/model.js';
10
+ import type { DefinitionBundle } from '../wsdl/resolver.js';
11
+ import type { SchemaSet } from '../xsd/schema-set.js';
12
+ import type { OperationRef } from '../soap/request-builder.js';
13
+ import type { ValidationBinding, ValidationProblem } from './types.js';
14
+ export type { ValidationBinding, ValidationPart, ValidationProblem, ValidationSeverity, ValidationSource, } from './types.js';
15
+ export { checkSoapStructure, type SoapStructureOptions } from './soap-structure.js';
16
+ export { validateAgainstSchemaSet, DEFAULT_VALIDATION_TIMEOUT_MS, type SchemaValidationOptions, type SchemaValidationTarget, } from './schema-validator.js';
17
+ /** Which half of an exchange is being validated. */
18
+ export type MessageDirection = 'request' | 'response';
19
+ /** Everything {@link validateMessage} needs. */
20
+ export interface ValidateMessageInput {
21
+ /** The whole envelope text, as typed in the editor or as received. */
22
+ readonly xml: string;
23
+ readonly direction: MessageDirection;
24
+ readonly schemaSet: SchemaSet;
25
+ readonly bundle: DefinitionBundle;
26
+ readonly binding: ValidationBinding;
27
+ /** The transport metadata to cross-check against the envelope's SOAP version. */
28
+ readonly http?: {
29
+ readonly contentType?: string;
30
+ readonly soapAction?: string;
31
+ };
32
+ /** Wall-clock budget for the schema half; see `DEFAULT_VALIDATION_TIMEOUT_MS`. */
33
+ readonly timeoutMs?: number;
34
+ }
35
+ /** What {@link validateMessage} reports. */
36
+ export interface ValidateMessageResult {
37
+ readonly problems: readonly ValidationProblem[];
38
+ /** How long the whole validation took, in milliseconds. */
39
+ readonly durationMs: number;
40
+ }
41
+ /**
42
+ * Validates one SOAP message against its interface: SOAP structure first,
43
+ * then the XSD schema set (skipped when the message is not well formed).
44
+ *
45
+ * @param input the message, its binding context, and the schema set to validate against
46
+ * @returns every finding plus the wall-clock duration
47
+ */
48
+ export declare function validateMessage(input: ValidateMessageInput): Promise<ValidateMessageResult>;
49
+ /**
50
+ * Builds the {@link ValidationBinding} for one operation of a parsed
51
+ * definition: the SOAP version and style the binding declares, plus the
52
+ * `wsdl:part`s of the message on `direction`'s side.
53
+ *
54
+ * Returns `undefined` when the binding or operation is unknown, or when the
55
+ * binding is not a SOAP binding (there is nothing to validate against).
56
+ *
57
+ * @param definition the parsed WSDL
58
+ * @param op the binding operation the message belongs to
59
+ * @param direction `request` reads the operation's input message, `response` its output
60
+ */
61
+ export declare function bindingContextFor(definition: WsdlDefinition, op: OperationRef, direction: MessageDirection): ValidationBinding | undefined;
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Message validation: the SOAP structure checks and the XSD schema validation
3
+ * behind one call.
4
+ *
5
+ * Structure runs first and schema only when the document is well formed —
6
+ * validating the body of a document libxml2 cannot parse produces nothing but
7
+ * noise, and the parse error is already reported with a position.
8
+ */
9
+ import { findBinding, findMessage, findPortType } from '../wsdl/model.js';
10
+ import { checkSoapStructure } from './soap-structure.js';
11
+ import { validateAgainstSchemaSet } from './schema-validator.js';
12
+ export { checkSoapStructure } from './soap-structure.js';
13
+ export { validateAgainstSchemaSet, DEFAULT_VALIDATION_TIMEOUT_MS, } from './schema-validator.js';
14
+ /**
15
+ * Validates one SOAP message against its interface: SOAP structure first,
16
+ * then the XSD schema set (skipped when the message is not well formed).
17
+ *
18
+ * @param input the message, its binding context, and the schema set to validate against
19
+ * @returns every finding plus the wall-clock duration
20
+ */
21
+ export async function validateMessage(input) {
22
+ const started = performance.now();
23
+ const structure = checkSoapStructure(input.xml, {
24
+ expectedVersion: input.binding.soapVersion,
25
+ ...(input.http?.contentType !== undefined ? { contentType: input.http.contentType } : {}),
26
+ ...(input.http?.soapAction !== undefined ? { soapAction: input.http.soapAction } : {}),
27
+ });
28
+ if (structure.some((problem) => problem.code === 'xml-not-well-formed')) {
29
+ return { problems: structure, durationMs: performance.now() - started };
30
+ }
31
+ const schema = await validateAgainstSchemaSet(input.xml, { schemaSet: input.schemaSet, bundle: input.bundle }, { binding: input.binding, ...(input.timeoutMs !== undefined ? { timeoutMs: input.timeoutMs } : {}) });
32
+ return { problems: [...structure, ...schema], durationMs: performance.now() - started };
33
+ }
34
+ /**
35
+ * Builds the {@link ValidationBinding} for one operation of a parsed
36
+ * definition: the SOAP version and style the binding declares, plus the
37
+ * `wsdl:part`s of the message on `direction`'s side.
38
+ *
39
+ * Returns `undefined` when the binding or operation is unknown, or when the
40
+ * binding is not a SOAP binding (there is nothing to validate against).
41
+ *
42
+ * @param definition the parsed WSDL
43
+ * @param op the binding operation the message belongs to
44
+ * @param direction `request` reads the operation's input message, `response` its output
45
+ */
46
+ export function bindingContextFor(definition, op, direction) {
47
+ const binding = findBinding(definition, op.bindingName);
48
+ if (binding === undefined || binding.soapVersion === 'none') {
49
+ return undefined;
50
+ }
51
+ const bindingOperation = binding.operations.find((candidate) => candidate.name === op.operationName);
52
+ if (bindingOperation === undefined) {
53
+ return undefined;
54
+ }
55
+ const abstract = findPortType(definition, binding.type)?.operations.find((candidate) => candidate.name === op.operationName);
56
+ const reference = direction === 'request' ? abstract?.input : abstract?.output;
57
+ const message = reference === undefined ? undefined : findMessage(definition, reference.message);
58
+ const declared = direction === 'request' ? bindingOperation.input?.body.parts : bindingOperation.output?.body.parts;
59
+ const parts = (message?.parts ?? [])
60
+ .filter((part) => declared === undefined || declared.includes(part.name))
61
+ .map((part) => ({
62
+ name: part.name,
63
+ ...(part.element !== undefined ? { element: part.element } : {}),
64
+ ...(part.type !== undefined ? { type: part.type } : {}),
65
+ }));
66
+ return {
67
+ soapVersion: binding.soapVersion,
68
+ operation: op.operationName,
69
+ style: bindingOperation.style ?? binding.style,
70
+ parts,
71
+ };
72
+ }
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Builds the in-memory libxml2 file set one bundle's schema documents compile into: every XSD
3
+ * (and every WSDL-embedded `<types>` schema) as its own synthetic file, one glue file per target
4
+ * namespace (so a namespace split across several documents can still be `xs:import`ed with a
5
+ * single reference), and the wrapper schema helpers that pull every namespace into one document
6
+ * a Body child can be validated against.
7
+ *
8
+ * Split out of `schema-validator.ts` (Task 42 fix round 1, minor 9): that module now only
9
+ * orchestrates validating a fragment against the set this one builds.
10
+ */
11
+ import type { DefinitionBundle } from '../wsdl/resolver.js';
12
+ import type { ValidationBinding } from './types.js';
13
+ /** One in-memory file handed to libxml2. */
14
+ export interface SchemaFile {
15
+ readonly fileName: string;
16
+ readonly contents: string;
17
+ }
18
+ /** The libxml2-ready form of one bundle: every schema as a file, plus one glue file per namespace. */
19
+ export interface SchemaFileSet {
20
+ /** Every synthetic schema document, plus the per-namespace glue files. */
21
+ readonly files: readonly SchemaFile[];
22
+ /** Target namespace -> the glue file that pulls in every document contributing to it. */
23
+ readonly glue: ReadonlyMap<string, string>;
24
+ /** Synthetic files with no target namespace of their own (and not a chameleon include). */
25
+ readonly noNamespace: readonly string[];
26
+ /**
27
+ * Synthetic file name -> a human-readable label for where it came from: the original
28
+ * document's location for a `doc-N.xsd`/`embedded-N.xsd`, or `undefined` for a file this
29
+ * module invented itself (a glue file or a wrapper), which {@link fileSetLabels} reports as
30
+ * "the schema set".
31
+ */
32
+ readonly documentOf: ReadonlyMap<string, string>;
33
+ }
34
+ /** Builds (or returns the cached) libxml2 file set for `bundle`. */
35
+ export declare function buildSchemaFileSet(bundle: DefinitionBundle): SchemaFileSet;
36
+ /** The wrapper schema for `document` style: no declarations of its own, just every namespace. */
37
+ export declare function documentWrapper(fileSet: SchemaFileSet): string;
38
+ /**
39
+ * The wrapper schema for `rpc` style: the body child is the operation wrapper
40
+ * element, which no schema declares, so one is synthesized here with a child
41
+ * per `wsdl:part`. `xs:all` rather than `xs:sequence`, because `parameterOrder`
42
+ * (and sample generation) may order the parts differently from the
43
+ * `wsdl:message`, and part order is not something this validator should police.
44
+ */
45
+ export declare function rpcWrapper(fileSet: SchemaFileSet, namespace: string, elementName: string, binding: ValidationBinding): string;
46
+ /**
47
+ * Human-readable label for every synthetic file name a diagnostic might mention: the original
48
+ * document's location for a document file, or "the schema set" for anything this module
49
+ * invented (a glue file, or the caller's own wrapper/body files).
50
+ */
51
+ export declare function fileSetLabels(fileSet: SchemaFileSet): ReadonlyMap<string, string>;