@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,135 @@
1
+ /**
2
+ * Renders a {@link WsiReport} as a self-contained HTML document.
3
+ *
4
+ * "Self-contained" is the whole point: the file a user exports has to open from a mail
5
+ * attachment, a ticket, or a shared drive years from now, so it carries its own inline CSS and
6
+ * nothing else — no script, no font, no stylesheet, no image, nothing that resolves over the
7
+ * network. Every value that reaches the markup goes through {@link escapeHtml} first: a finding
8
+ * quotes the offending element's name straight out of somebody else's message.
9
+ */
10
+ /** Escapes the five characters that could otherwise close a tag or an attribute. */
11
+ export function escapeHtml(value) {
12
+ return value
13
+ .replace(/&/g, '&')
14
+ .replace(/</g, '&lt;')
15
+ .replace(/>/g, '&gt;')
16
+ .replace(/"/g, '&quot;')
17
+ .replace(/'/g, '&#39;');
18
+ }
19
+ /** How each result is labelled in the report. */
20
+ const RESULT_LABEL = {
21
+ passed: 'Passed',
22
+ failed: 'Failed',
23
+ warning: 'Warning',
24
+ notApplicable: 'Not applicable',
25
+ };
26
+ /** The stylesheet, inlined. Kept deliberately plain so the file prints and reads anywhere. */
27
+ const STYLE = `
28
+ :root { color-scheme: light dark; }
29
+ body { margin: 0; padding: 2rem; font: 14px/1.5 system-ui, -apple-system, "Segoe UI", sans-serif; }
30
+ h1 { font-size: 1.25rem; margin: 0 0 0.25rem; }
31
+ .target { color: #555; margin: 0 0 1.5rem; word-break: break-all; }
32
+ .summary { display: flex; flex-wrap: wrap; gap: 0.5rem; list-style: none; margin: 0 0 1.5rem; padding: 0; }
33
+ .summary li { border: 1px solid #ccc; border-radius: 999px; padding: 0.15rem 0.75rem; }
34
+ .summary .count { font-weight: 600; }
35
+ table { border-collapse: collapse; width: 100%; }
36
+ th, td { border-bottom: 1px solid #ddd; padding: 0.4rem 0.6rem; text-align: left; vertical-align: top; }
37
+ th { border-bottom-width: 2px; white-space: nowrap; }
38
+ td.id, td.level, td.result { white-space: nowrap; }
39
+ .findings { margin: 0.25rem 0 0; padding-left: 1.1rem; }
40
+ .findings li { color: #444; }
41
+ .where { color: #777; }
42
+ .r-failed { color: #a11; font-weight: 600; }
43
+ .r-warning { color: #a60; font-weight: 600; }
44
+ .r-passed { color: #161; }
45
+ .r-notApplicable { color: #777; }
46
+ .empty { color: #555; font-style: italic; }
47
+ .footnote { color: #777; font-size: 0.85em; margin: 0.75rem 0 0; }
48
+ @media (prefers-color-scheme: dark) {
49
+ body { background: #16181c; color: #e6e6e6; }
50
+ .target, .findings li, .empty { color: #b9b9b9; }
51
+ th, td { border-color: #333; }
52
+ .summary li { border-color: #444; }
53
+ .footnote { color: #999; }
54
+ .r-failed { color: #ff8b8b; } .r-warning { color: #f0b429; } .r-passed { color: #7fd08a; }
55
+ }
56
+ `;
57
+ /** One finding rendered as a list item, with its location when it has one. */
58
+ function findingHtml(assertion) {
59
+ if (assertion.findings.length === 0) {
60
+ return '';
61
+ }
62
+ const items = assertion.findings.map((finding) => {
63
+ const location = finding.location;
64
+ const where = location === undefined
65
+ ? ''
66
+ : ` <span class="where">(${escapeHtml(location.document)}${location.line === undefined ? '' : `:${String(location.line)}`}${location.xpath === undefined ? '' : ` ${escapeHtml(location.xpath)}`})</span>`;
67
+ return `<li>${escapeHtml(finding.message)}${where}</li>`;
68
+ });
69
+ return `<ul class="findings">${items.join('')}</ul>`;
70
+ }
71
+ /** One assertion rendered as a table row. */
72
+ function rowHtml(assertion) {
73
+ const marker = assertion.unverifiedId === true ? '<sup>*</sup>' : '';
74
+ return [
75
+ '<tr>',
76
+ `<td class="id">${escapeHtml(assertion.id)}${marker}</td>`,
77
+ `<td class="level">${escapeHtml(assertion.level)}</td>`,
78
+ `<td class="result r-${assertion.result}">${RESULT_LABEL[assertion.result]}</td>`,
79
+ `<td>${escapeHtml(assertion.title)}${findingHtml(assertion)}</td>`,
80
+ `<td>${escapeHtml(assertion.section)}</td>`,
81
+ '</tr>',
82
+ ].join('');
83
+ }
84
+ /**
85
+ * Renders one WS-I report as a standalone HTML document.
86
+ *
87
+ * @param report the report to render, from `runWsdlAssertions` or `runMessageAssertions`
88
+ * @param options the heading, the (injected) timestamp, and whether to keep non-failing rows
89
+ * @returns a complete HTML document with no external references of any kind
90
+ */
91
+ export function renderWsiReportHtml(report, options) {
92
+ const rows = options.verbose === true
93
+ ? report.assertions
94
+ : report.assertions.filter((assertion) => assertion.result === 'failed' || assertion.result === 'warning');
95
+ const summary = [
96
+ ['Passed', report.summary.passed],
97
+ ['Failed', report.summary.failed],
98
+ ['Warning', report.summary.warning],
99
+ ['Not applicable', report.summary.notApplicable],
100
+ ];
101
+ const hasUnverifiedId = rows.some((assertion) => assertion.unverifiedId === true);
102
+ const body = rows.length === 0
103
+ ? '<p class="empty">No assertions to show.</p>'
104
+ : [
105
+ '<table>',
106
+ '<thead><tr><th>Id</th><th>Level</th><th>Result</th><th>Assertion</th><th>Section</th></tr></thead>',
107
+ '<tbody>',
108
+ ...rows.map(rowHtml),
109
+ '</tbody>',
110
+ '</table>',
111
+ hasUnverifiedId
112
+ ? '<p class="footnote">* requirement number not verified against the published Basic Profile 1.1; quote the title.</p>'
113
+ : '',
114
+ ].join('\n');
115
+ return [
116
+ '<!doctype html>',
117
+ '<html lang="en">',
118
+ '<head>',
119
+ '<meta charset="utf-8">',
120
+ '<meta name="viewport" content="width=device-width, initial-scale=1">',
121
+ `<title>WS-I ${escapeHtml(report.profile)} report — ${escapeHtml(options.title)}</title>`,
122
+ `<style>${STYLE}</style>`,
123
+ '</head>',
124
+ '<body>',
125
+ `<h1>WS-I ${escapeHtml(report.profile)} report — ${escapeHtml(options.title)}</h1>`,
126
+ `<p class="target">${escapeHtml(report.target)} · generated ${escapeHtml(options.generatedAt)}</p>`,
127
+ '<ul class="summary">',
128
+ ...summary.map(([label, count]) => `<li>${label}: <span class="count">${String(count)}</span></li>`),
129
+ '</ul>',
130
+ body,
131
+ '</body>',
132
+ '</html>',
133
+ '',
134
+ ].join('\n');
135
+ }
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Runs the WS-I Basic Profile 1.1 message assertion catalogue over one {@link SoapExchange}.
3
+ *
4
+ * Where `run-wsdl.ts` judges a *description*, this judges the bytes one send actually put on the
5
+ * wire — both halves of it. The report shape is the same {@link WsiReport}, so a single renderer
6
+ * (and a single HTML export) serves both.
7
+ */
8
+ import type { SoapExchange } from '../../types.js';
9
+ import type { WsdlDefinition } from '../../wsdl/model.js';
10
+ import type { OperationRef } from '../../soap/request-builder.js';
11
+ import type { WsiMessageBinding, WsiMessageContext, WsiMessageDirection, WsiReport } from './types.js';
12
+ /** What {@link runMessageAssertions} needs besides the exchange itself. */
13
+ export interface RunMessageAssertionsOptions {
14
+ /** What the binding says about this operation's messages. */
15
+ readonly binding: WsiMessageBinding;
16
+ /** Which half the caller asked about; both are still analysed. */
17
+ readonly direction: WsiMessageDirection;
18
+ /**
19
+ * The request envelope text. `SoapExchange` keeps the request only as raw wire bytes, so a
20
+ * caller that still holds the envelope it sent should pass it rather than making this module
21
+ * re-split the HTTP frame.
22
+ */
23
+ readonly requestEnvelopeXml?: string;
24
+ /** Run only these assertion ids (default: the whole catalogue). */
25
+ readonly ids?: readonly string[];
26
+ /** Include `passed`/`notApplicable` rows in `assertions` (the `wsi.verbose` preference). */
27
+ readonly verbose?: boolean;
28
+ }
29
+ /** Builds the context the message assertions run against. */
30
+ export declare function wsiMessageContext(exchange: SoapExchange, options: RunMessageAssertionsOptions): WsiMessageContext;
31
+ /**
32
+ * Evaluates the message assertion catalogue against one exchange.
33
+ *
34
+ * `summary` always counts every assertion that ran; `assertions` carries only the failing rows
35
+ * unless `verbose` is set. `target` names the endpoint the exchange went to, so a report can say
36
+ * what it is about without the caller re-deriving it.
37
+ *
38
+ * @param exchange the send to analyse, request and response alike
39
+ * @param options the binding facts, the half the caller asked about, and the usual id/verbose knobs
40
+ */
41
+ export declare function runMessageAssertions(exchange: SoapExchange, options: RunMessageAssertionsOptions): WsiReport;
42
+ /**
43
+ * Derives the {@link WsiMessageBinding} one operation implies, so a caller holding an
44
+ * `ImportResult` does not have to walk the model itself. Returns `undefined` when the binding is
45
+ * not a SOAP binding, or has no such operation.
46
+ *
47
+ * @param definition the merged description
48
+ * @param op the binding and operation the message belongs to
49
+ */
50
+ export declare function messageBindingFor(definition: WsdlDefinition, op: OperationRef): WsiMessageBinding | undefined;
@@ -0,0 +1,190 @@
1
+ /**
2
+ * Runs the WS-I Basic Profile 1.1 message assertion catalogue over one {@link SoapExchange}.
3
+ *
4
+ * Where `run-wsdl.ts` judges a *description*, this judges the bytes one send actually put on the
5
+ * wire — both halves of it. The report shape is the same {@link WsiReport}, so a single renderer
6
+ * (and a single HTML export) serves both.
7
+ */
8
+ import { NS } from '../../xml/namespaces.js';
9
+ import { parseXml } from '../../xml/parse.js';
10
+ import { findBinding } from '../../wsdl/model.js';
11
+ import { WSI_MESSAGE_ASSERTIONS } from './assertions/message/index.js';
12
+ import { isNotApplicable } from './types.js';
13
+ /** The two envelope namespaces a message may legally use, mapped to their SOAP version. */
14
+ const ENVELOPE_VERSIONS = [
15
+ [NS.SOAP11_ENV, '1.1'],
16
+ [NS.SOAP12_ENV, '1.2'],
17
+ ];
18
+ /** Parses one half's envelope, tolerating text that is not XML at all. */
19
+ function parsed(text) {
20
+ if (text === undefined || text.trim().length === 0) {
21
+ return undefined;
22
+ }
23
+ try {
24
+ return parseXml(text);
25
+ }
26
+ catch {
27
+ // Not well-formed: R1001 reports it, and every DOM-based assertion reports notApplicable.
28
+ return undefined;
29
+ }
30
+ }
31
+ /** The document element when it is a `soap:Envelope` in either SOAP envelope namespace. */
32
+ function envelopeOf(document) {
33
+ const root = document?.documentElement ?? null;
34
+ if (root === null || root.localName !== 'Envelope') {
35
+ return undefined;
36
+ }
37
+ const match = ENVELOPE_VERSIONS.find(([uri]) => uri === root.namespaceURI);
38
+ return match === undefined ? undefined : { element: root, soapNs: match[0] };
39
+ }
40
+ /**
41
+ * The only headers a message assertion may quote. Anything else — most importantly
42
+ * `Authorization`, but equally any custom or WSS credential header a description never declares
43
+ * — never reaches a {@link WsiMessageView}, so it cannot end up in a finding message or an
44
+ * exported HTML report.
45
+ */
46
+ const HEADER_ALLOWLIST = new Set([
47
+ 'content-type',
48
+ 'soapaction',
49
+ 'content-length',
50
+ 'transfer-encoding',
51
+ 'content-encoding',
52
+ 'accept',
53
+ 'host',
54
+ 'connection',
55
+ ]);
56
+ /** Lower-cases every header name and drops everything outside {@link HEADER_ALLOWLIST}. */
57
+ function lowerCased(headers) {
58
+ const out = {};
59
+ for (const [name, value] of Object.entries(headers)) {
60
+ const lower = name.toLowerCase();
61
+ if (HEADER_ALLOWLIST.has(lower)) {
62
+ out[lower] = value;
63
+ }
64
+ }
65
+ return out;
66
+ }
67
+ /** Builds one half's view: HTTP metadata plus the parsed envelope, when there is one. */
68
+ function viewFor(direction, headers, envelopeXml, status) {
69
+ const document = parsed(envelopeXml);
70
+ const envelope = envelopeOf(document);
71
+ return {
72
+ direction,
73
+ headers: lowerCased(headers),
74
+ ...(envelopeXml !== undefined ? { envelopeXml } : {}),
75
+ ...(document !== undefined ? { document } : {}),
76
+ ...(envelope !== undefined ? { envelope: envelope.element, soapNs: envelope.soapNs } : {}),
77
+ ...(status !== undefined ? { status } : {}),
78
+ };
79
+ }
80
+ /** The text after the first blank line of a reconstructed HTTP frame — its entity body. */
81
+ function bodyOfFrame(raw) {
82
+ if (raw === undefined || raw.length === 0) {
83
+ return undefined;
84
+ }
85
+ const text = new TextDecoder('utf-8', { fatal: false }).decode(raw);
86
+ const separator = /\r?\n\r?\n/.exec(text);
87
+ if (separator === null || separator.index === undefined) {
88
+ return undefined;
89
+ }
90
+ const body = text.slice(separator.index + separator[0].length);
91
+ return body.length === 0 ? undefined : body;
92
+ }
93
+ /** Builds the context the message assertions run against. */
94
+ export function wsiMessageContext(exchange, options) {
95
+ const request = viewFor('request', exchange.http.request.headers, options.requestEnvelopeXml ?? bodyOfFrame(exchange.http.rawRequest));
96
+ const response = exchange.response === undefined && exchange.http.rawResponse.length === 0
97
+ ? undefined
98
+ : viewFor('response', exchange.http.headers, exchange.response?.envelopeXml, exchange.http.status);
99
+ return {
100
+ exchange,
101
+ binding: options.binding,
102
+ direction: options.direction,
103
+ request,
104
+ ...(response !== undefined ? { response } : {}),
105
+ messages: response === undefined ? [request] : [request, response],
106
+ };
107
+ }
108
+ /** Classifies one assertion's outcome; the mapping matches `run-wsdl.ts` exactly. */
109
+ function resultFor(assertion, context) {
110
+ const outcome = assertion.check(context);
111
+ const findings = isNotApplicable(outcome) ? [] : outcome;
112
+ let result;
113
+ if (isNotApplicable(outcome)) {
114
+ result = 'notApplicable';
115
+ }
116
+ else if (findings.length === 0) {
117
+ result = 'passed';
118
+ }
119
+ else {
120
+ result = assertion.level === 'REQUIRED' ? 'failed' : 'warning';
121
+ }
122
+ return {
123
+ id: assertion.id,
124
+ title: assertion.title,
125
+ level: assertion.level,
126
+ section: assertion.section,
127
+ result,
128
+ findings,
129
+ ...(assertion.unverifiedId === true ? { unverifiedId: true } : {}),
130
+ };
131
+ }
132
+ /**
133
+ * Evaluates the message assertion catalogue against one exchange.
134
+ *
135
+ * `summary` always counts every assertion that ran; `assertions` carries only the failing rows
136
+ * unless `verbose` is set. `target` names the endpoint the exchange went to, so a report can say
137
+ * what it is about without the caller re-deriving it.
138
+ *
139
+ * @param exchange the send to analyse, request and response alike
140
+ * @param options the binding facts, the half the caller asked about, and the usual id/verbose knobs
141
+ */
142
+ export function runMessageAssertions(exchange, options) {
143
+ const context = wsiMessageContext(exchange, options);
144
+ const selected = options.ids === undefined
145
+ ? WSI_MESSAGE_ASSERTIONS
146
+ : WSI_MESSAGE_ASSERTIONS.filter((assertion) => options.ids?.includes(assertion.id) === true);
147
+ const reports = selected.map((assertion) => resultFor(assertion, context));
148
+ const summary = {
149
+ passed: reports.filter((report) => report.result === 'passed').length,
150
+ failed: reports.filter((report) => report.result === 'failed').length,
151
+ warning: reports.filter((report) => report.result === 'warning').length,
152
+ notApplicable: reports.filter((report) => report.result === 'notApplicable').length,
153
+ };
154
+ return {
155
+ target: exchange.http.request.url,
156
+ profile: 'BP1.1',
157
+ summary,
158
+ assertions: options.verbose === true
159
+ ? reports
160
+ : reports.filter((report) => report.result === 'failed' || report.result === 'warning'),
161
+ };
162
+ }
163
+ /**
164
+ * Derives the {@link WsiMessageBinding} one operation implies, so a caller holding an
165
+ * `ImportResult` does not have to walk the model itself. Returns `undefined` when the binding is
166
+ * not a SOAP binding, or has no such operation.
167
+ *
168
+ * @param definition the merged description
169
+ * @param op the binding and operation the message belongs to
170
+ */
171
+ export function messageBindingFor(definition, op) {
172
+ const binding = findBinding(definition, op.bindingName);
173
+ if (binding === undefined || binding.soapVersion === 'none') {
174
+ return undefined;
175
+ }
176
+ const operation = binding.operations.find((candidate) => candidate.name === op.operationName);
177
+ if (operation === undefined) {
178
+ return undefined;
179
+ }
180
+ // The input side states the `use` for the request; a binding that differed between the two
181
+ // halves would be out of profile anyway (R2706), so the output is only the fallback.
182
+ const use = operation.input?.body.use ?? operation.output?.body.use ?? 'literal';
183
+ return {
184
+ soapVersion: binding.soapVersion,
185
+ style: operation.style ?? binding.style,
186
+ use,
187
+ operation: op.operationName,
188
+ ...(operation.soapAction !== undefined ? { soapAction: operation.soapAction } : {}),
189
+ };
190
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * Runs the WS-I Basic Profile 1.1 WSDL assertion catalogue over one description.
3
+ */
4
+ import type { WsdlDefinition } from '../../wsdl/model.js';
5
+ import type { DefinitionBundle } from '../../wsdl/resolver.js';
6
+ import type { SchemaSet } from '../../xsd/schema-set.js';
7
+ import type { ValidationProblem } from '../types.js';
8
+ import type { WsiReport, WsiWsdlContext } from './types.js';
9
+ /** What {@link wsiWsdlContext} needs: exactly the interesting half of an `ImportResult`. */
10
+ export interface WsiWsdlContextInput {
11
+ readonly definition: WsdlDefinition;
12
+ readonly bundle: DefinitionBundle;
13
+ readonly schemaSet: SchemaSet;
14
+ }
15
+ /**
16
+ * Builds the context the assertions run against, indexing the bundle's documents by location.
17
+ *
18
+ * @param input the parsed definition, its bundle and its schema set (an `ImportResult` fits)
19
+ */
20
+ export declare function wsiWsdlContext(input: WsiWsdlContextInput): WsiWsdlContext;
21
+ /** Options accepted by {@link runWsdlAssertions}. */
22
+ export interface RunWsdlAssertionsOptions {
23
+ /** Run only these assertion ids (default: the whole catalogue). */
24
+ readonly ids?: readonly string[];
25
+ /** Include `passed`/`notApplicable` rows in `assertions` (the `wsi.verbose` preference). */
26
+ readonly verbose?: boolean;
27
+ }
28
+ /**
29
+ * Evaluates the WSDL assertion catalogue against one description.
30
+ *
31
+ * Every assertion reports one of four results; `summary` always counts all of them, while
32
+ * `assertions` carries only the failing rows unless `verbose` is set.
33
+ *
34
+ * @param context the description to analyse, from {@link wsiWsdlContext}
35
+ * @param options an id subset to run, and whether to keep non-failing rows
36
+ */
37
+ export declare function runWsdlAssertions(context: WsiWsdlContext, options?: RunWsdlAssertionsOptions): WsiReport;
38
+ /**
39
+ * Flattens a report's findings into the shared {@link ValidationProblem} shape, so a WS-I report
40
+ * can be shown in the same Problems panel as the message validators' output.
41
+ *
42
+ * Positions are document positions, not envelope positions: `path` carries the document location
43
+ * alongside the element path, as `<document>#<xpath>`, so a consumer can tell the two apart. A
44
+ * finding that has an xpath but no document (or neither) contributes no `path`.
45
+ *
46
+ * @param report the report to flatten
47
+ */
48
+ export declare function wsiProblems(report: WsiReport): readonly ValidationProblem[];
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Runs the WS-I Basic Profile 1.1 WSDL assertion catalogue over one description.
3
+ */
4
+ import { WSI_WSDL_ASSERTIONS } from './assertions/index.js';
5
+ import { isNotApplicable } from './types.js';
6
+ /**
7
+ * Builds the context the assertions run against, indexing the bundle's documents by location.
8
+ *
9
+ * @param input the parsed definition, its bundle and its schema set (an `ImportResult` fits)
10
+ */
11
+ export function wsiWsdlContext(input) {
12
+ const documents = new Map();
13
+ for (const doc of input.bundle.documents) {
14
+ documents.set(doc.location, doc.document);
15
+ }
16
+ return { definition: input.definition, bundle: input.bundle, schemaSet: input.schemaSet, documents };
17
+ }
18
+ /** Classifies one assertion's outcome. */
19
+ function resultFor(assertion, context) {
20
+ const outcome = assertion.check(context);
21
+ const findings = isNotApplicable(outcome) ? [] : outcome;
22
+ let result;
23
+ if (isNotApplicable(outcome)) {
24
+ result = 'notApplicable';
25
+ }
26
+ else if (findings.length === 0) {
27
+ result = 'passed';
28
+ }
29
+ else {
30
+ result = assertion.level === 'REQUIRED' ? 'failed' : 'warning';
31
+ }
32
+ return {
33
+ id: assertion.id,
34
+ title: assertion.title,
35
+ level: assertion.level,
36
+ section: assertion.section,
37
+ result,
38
+ findings,
39
+ ...(assertion.unverifiedId === true ? { unverifiedId: true } : {}),
40
+ };
41
+ }
42
+ /**
43
+ * Evaluates the WSDL assertion catalogue against one description.
44
+ *
45
+ * Every assertion reports one of four results; `summary` always counts all of them, while
46
+ * `assertions` carries only the failing rows unless `verbose` is set.
47
+ *
48
+ * @param context the description to analyse, from {@link wsiWsdlContext}
49
+ * @param options an id subset to run, and whether to keep non-failing rows
50
+ */
51
+ export function runWsdlAssertions(context, options = {}) {
52
+ const selected = options.ids === undefined
53
+ ? WSI_WSDL_ASSERTIONS
54
+ : WSI_WSDL_ASSERTIONS.filter((assertion) => options.ids?.includes(assertion.id) === true);
55
+ const reports = selected.map((assertion) => resultFor(assertion, context));
56
+ const summary = {
57
+ passed: reports.filter((report) => report.result === 'passed').length,
58
+ failed: reports.filter((report) => report.result === 'failed').length,
59
+ warning: reports.filter((report) => report.result === 'warning').length,
60
+ notApplicable: reports.filter((report) => report.result === 'notApplicable').length,
61
+ };
62
+ return {
63
+ target: context.bundle.root.location,
64
+ profile: 'BP1.1',
65
+ summary,
66
+ assertions: options.verbose === true
67
+ ? reports
68
+ : reports.filter((report) => report.result === 'failed' || report.result === 'warning'),
69
+ };
70
+ }
71
+ /**
72
+ * Flattens a report's findings into the shared {@link ValidationProblem} shape, so a WS-I report
73
+ * can be shown in the same Problems panel as the message validators' output.
74
+ *
75
+ * Positions are document positions, not envelope positions: `path` carries the document location
76
+ * alongside the element path, as `<document>#<xpath>`, so a consumer can tell the two apart. A
77
+ * finding that has an xpath but no document (or neither) contributes no `path`.
78
+ *
79
+ * @param report the report to flatten
80
+ */
81
+ export function wsiProblems(report) {
82
+ const problems = [];
83
+ for (const assertion of report.assertions) {
84
+ for (const finding of assertion.findings) {
85
+ problems.push({
86
+ severity: assertion.result === 'warning' ? 'warning' : 'error',
87
+ code: assertion.id,
88
+ message: `${assertion.id}: ${finding.message}`,
89
+ source: 'ws-i',
90
+ ...(finding.location?.line !== undefined ? { line: finding.location.line } : {}),
91
+ ...(finding.location?.column !== undefined ? { column: finding.location.column } : {}),
92
+ ...(finding.location?.xpath !== undefined
93
+ ? { path: `${finding.location.document}#${finding.location.xpath}` }
94
+ : {}),
95
+ });
96
+ }
97
+ }
98
+ return problems;
99
+ }