@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,76 @@
1
+ /**
2
+ * SOAP envelope assembly: wraps already-rendered header and body fragments in
3
+ * a `soapenv:Envelope`, following the conventions classic SOAP workbenches
4
+ * produce (three-space indent, `soapenv` prefix, an always-present `Header`).
5
+ */
6
+ import { NS } from '../xml/namespaces.js';
7
+ import { escapeAttribute } from '../xsd/xml-writer.js';
8
+ /** The prefix every generated envelope binds its SOAP envelope namespace to. */
9
+ export const SOAP_ENVELOPE_PREFIX = 'soapenv';
10
+ /** The SOAP envelope namespace URI for `version`. */
11
+ export function envelopeNamespace(version) {
12
+ return version === '1.2' ? NS.SOAP12_ENV : NS.SOAP11_ENV;
13
+ }
14
+ /**
15
+ * The SOAP version of a parsed document, from its root element's namespace, or
16
+ * `undefined` when the root is not a SOAP `Envelope`.
17
+ */
18
+ export function detectEnvelopeVersion(doc) {
19
+ const root = doc.documentElement;
20
+ if (root === null || root.localName !== 'Envelope') {
21
+ return undefined;
22
+ }
23
+ if (root.namespaceURI === NS.SOAP11_ENV) {
24
+ return '1.1';
25
+ }
26
+ return root.namespaceURI === NS.SOAP12_ENV ? '1.2' : undefined;
27
+ }
28
+ /** Prepends `pad` to every non-empty line of `text`. */
29
+ function indentBlock(text, pad) {
30
+ return text
31
+ .split('\n')
32
+ .map((line) => (line.length === 0 ? line : `${pad}${line}`))
33
+ .join('\n');
34
+ }
35
+ /**
36
+ * Wraps `parts` in a SOAP envelope.
37
+ *
38
+ * The `Header` element is always emitted (empty when there are no header
39
+ * blocks): it gives the user somewhere to paste a security
40
+ * header without re-typing the element. Every namespace in
41
+ * {@link EnvelopeParts.namespaces} is declared on the `Envelope` root, so the
42
+ * fragments inside carry no `xmlns` declarations of their own.
43
+ *
44
+ * Deterministic: identical inputs always produce byte-identical output.
45
+ *
46
+ * @param version which SOAP envelope namespace to bind
47
+ * @param parts the header/body fragments and the namespaces they use
48
+ * @param options `indent` defaults to three spaces
49
+ */
50
+ export function createEnvelope(version, parts, options) {
51
+ const indent = options?.indent ?? ' ';
52
+ const declarations = [
53
+ `xmlns:${SOAP_ENVELOPE_PREFIX}="${escapeAttribute(envelopeNamespace(version))}"`,
54
+ ...Object.entries(parts.namespaces ?? {}).map(([prefix, uri]) => `xmlns:${prefix}="${escapeAttribute(uri)}"`),
55
+ ];
56
+ const lines = [`<${SOAP_ENVELOPE_PREFIX}:Envelope ${declarations.join(' ')}>`];
57
+ const header = parts.headerXml?.trim() ?? '';
58
+ if (header.length === 0) {
59
+ lines.push(`${indent}<${SOAP_ENVELOPE_PREFIX}:Header/>`);
60
+ }
61
+ else {
62
+ lines.push(`${indent}<${SOAP_ENVELOPE_PREFIX}:Header>`);
63
+ lines.push(indentBlock(parts.headerXml ?? '', indent.repeat(2)));
64
+ lines.push(`${indent}</${SOAP_ENVELOPE_PREFIX}:Header>`);
65
+ }
66
+ if (parts.bodyXml.trim().length === 0) {
67
+ lines.push(`${indent}<${SOAP_ENVELOPE_PREFIX}:Body/>`);
68
+ }
69
+ else {
70
+ lines.push(`${indent}<${SOAP_ENVELOPE_PREFIX}:Body>`);
71
+ lines.push(indentBlock(parts.bodyXml, indent.repeat(2)));
72
+ lines.push(`${indent}</${SOAP_ENVELOPE_PREFIX}:Body>`);
73
+ }
74
+ lines.push(`</${SOAP_ENVELOPE_PREFIX}:Envelope>`);
75
+ return lines.join('\n');
76
+ }
@@ -0,0 +1,46 @@
1
+ /**
2
+ * SOAP fault parsing for both versions.
3
+ *
4
+ * SOAP 1.1 (§4.4) and SOAP 1.2 (Part 1 §5.4) describe structurally different
5
+ * faults; this module normalises them onto one shape so callers never branch
6
+ * on the version to show a fault to the user.
7
+ */
8
+ import type { Document, Element } from '@xmldom/xmldom';
9
+ import type { SoapEnvelopeVersion } from './envelope.js';
10
+ /** One localised `Reason/Text` of a SOAP 1.2 fault. */
11
+ export interface FaultReason {
12
+ /** The `xml:lang` of this text, when the server supplied one. */
13
+ readonly lang?: string;
14
+ readonly text: string;
15
+ }
16
+ /** A SOAP fault, normalised across SOAP 1.1 and 1.2. */
17
+ export interface SoapFault {
18
+ readonly version: SoapEnvelopeVersion;
19
+ /** 1.1: the `faultcode` text. 1.2: the `Code/Value` text. Both keep their lexical prefix. */
20
+ readonly code: string;
21
+ /** 1.2 only: the nested `Subcode/Value` chain, outermost first. Empty for 1.1. */
22
+ readonly subcodes: readonly string[];
23
+ /** 1.1: `faultstring`. 1.2: the first `Reason/Text`. */
24
+ readonly reason: string;
25
+ /** 1.2 only: every `Reason/Text` with its `xml:lang`. */
26
+ readonly reasons?: readonly FaultReason[];
27
+ /** 1.1 only: `faultactor`. */
28
+ readonly actor?: string;
29
+ /** 1.2 only: `Role`. */
30
+ readonly role?: string;
31
+ /** 1.2 only: `Node`. */
32
+ readonly node?: string;
33
+ /** The serialized *children* of `detail`/`Detail`, when it has element children. */
34
+ readonly detailXml?: string;
35
+ /** The `Fault` element itself, for callers that need to inspect it further. */
36
+ readonly element: Element;
37
+ }
38
+ /**
39
+ * Parses the SOAP fault in a response document, or returns `undefined` when
40
+ * the document is not a SOAP envelope or its `Body` carries no `Fault`.
41
+ *
42
+ * @param doc a parsed SOAP response
43
+ */
44
+ export declare function parseFault(doc: Document): SoapFault | undefined;
45
+ /** True when the document is a SOAP envelope whose `Body` carries a `Fault`. */
46
+ export declare function isSoapFault(doc: Document): boolean;
@@ -0,0 +1,129 @@
1
+ /**
2
+ * SOAP fault parsing for both versions.
3
+ *
4
+ * SOAP 1.1 (§4.4) and SOAP 1.2 (Part 1 §5.4) describe structurally different
5
+ * faults; this module normalises them onto one shape so callers never branch
6
+ * on the version to show a fault to the user.
7
+ */
8
+ import { NS } from '../xml/namespaces.js';
9
+ import { serializeXml } from '../xml/serialize.js';
10
+ /** Element children of `parent`, optionally filtered by namespace and local name. */
11
+ function children(parent, namespaceUri, localName) {
12
+ const result = [];
13
+ for (let node = parent.firstChild; node !== null; node = node.nextSibling) {
14
+ if (node.nodeType !== 1) {
15
+ continue;
16
+ }
17
+ const element = node;
18
+ // SOAP 1.1's fault children are unqualified; `namespaceUri: undefined` means "any".
19
+ if (namespaceUri !== undefined && element.namespaceURI !== namespaceUri) {
20
+ continue;
21
+ }
22
+ if (localName !== undefined && element.localName !== localName) {
23
+ continue;
24
+ }
25
+ result.push(element);
26
+ }
27
+ return result;
28
+ }
29
+ /** The first matching child element, or `undefined`. */
30
+ function child(parent, namespaceUri, localName) {
31
+ return children(parent, namespaceUri, localName)[0];
32
+ }
33
+ /** The concatenated text content of `element`, trimmed. */
34
+ function textOf(element) {
35
+ return element?.textContent?.trim() ?? '';
36
+ }
37
+ /** The `soapenv:Body` of a parsed envelope, if the document is one. */
38
+ function bodyOf(doc) {
39
+ const root = doc.documentElement;
40
+ if (root === null || root.localName !== 'Envelope') {
41
+ return undefined;
42
+ }
43
+ const version = root.namespaceURI === NS.SOAP11_ENV ? '1.1' : root.namespaceURI === NS.SOAP12_ENV ? '1.2' : undefined;
44
+ if (version === undefined) {
45
+ return undefined;
46
+ }
47
+ const body = child(root, root.namespaceURI ?? undefined, 'Body');
48
+ return body === undefined ? undefined : { body, version };
49
+ }
50
+ /** Serializes the element children of a `detail` element, one per line. */
51
+ function detailXmlOf(detail) {
52
+ if (detail === undefined) {
53
+ return undefined;
54
+ }
55
+ const elements = children(detail);
56
+ return elements.length === 0 ? undefined : elements.map((element) => serializeXml(element)).join('\n');
57
+ }
58
+ /** Walks the nested `Subcode/Value` chain of a SOAP 1.2 `Code`, outermost first. */
59
+ function subcodesOf(code, envelopeNs) {
60
+ const result = [];
61
+ let current = child(code, envelopeNs, 'Subcode');
62
+ while (current !== undefined) {
63
+ result.push(textOf(child(current, envelopeNs, 'Value')));
64
+ current = child(current, envelopeNs, 'Subcode');
65
+ }
66
+ return result;
67
+ }
68
+ function parseFault11(fault) {
69
+ // SOAP 1.1 fault children are unqualified, but servers in the wild
70
+ // occasionally qualify them; matching on local name alone accepts both.
71
+ const actor = child(fault, undefined, 'faultactor');
72
+ const detailXml = detailXmlOf(child(fault, undefined, 'detail'));
73
+ return {
74
+ version: '1.1',
75
+ code: textOf(child(fault, undefined, 'faultcode')),
76
+ subcodes: [],
77
+ reason: textOf(child(fault, undefined, 'faultstring')),
78
+ ...(actor !== undefined ? { actor: textOf(actor) } : {}),
79
+ ...(detailXml !== undefined ? { detailXml } : {}),
80
+ element: fault,
81
+ };
82
+ }
83
+ function parseFault12(fault) {
84
+ const ns = NS.SOAP12_ENV;
85
+ const code = child(fault, ns, 'Code');
86
+ const reasonEl = child(fault, ns, 'Reason');
87
+ const reasons = reasonEl === undefined
88
+ ? []
89
+ : children(reasonEl, ns, 'Text').map((text) => {
90
+ const lang = text.getAttributeNS(NS.XML, 'lang') ?? text.getAttribute('xml:lang');
91
+ return { ...(lang !== null && lang !== '' ? { lang } : {}), text: textOf(text) };
92
+ });
93
+ const role = child(fault, ns, 'Role');
94
+ const node = child(fault, ns, 'Node');
95
+ const detailXml = detailXmlOf(child(fault, ns, 'Detail'));
96
+ return {
97
+ version: '1.2',
98
+ code: code === undefined ? '' : textOf(child(code, ns, 'Value')),
99
+ subcodes: code === undefined ? [] : subcodesOf(code, ns),
100
+ reason: reasons[0]?.text ?? '',
101
+ reasons,
102
+ ...(role !== undefined ? { role: textOf(role) } : {}),
103
+ ...(node !== undefined ? { node: textOf(node) } : {}),
104
+ ...(detailXml !== undefined ? { detailXml } : {}),
105
+ element: fault,
106
+ };
107
+ }
108
+ /**
109
+ * Parses the SOAP fault in a response document, or returns `undefined` when
110
+ * the document is not a SOAP envelope or its `Body` carries no `Fault`.
111
+ *
112
+ * @param doc a parsed SOAP response
113
+ */
114
+ export function parseFault(doc) {
115
+ const found = bodyOf(doc);
116
+ if (found === undefined) {
117
+ return undefined;
118
+ }
119
+ const envelopeNs = found.version === '1.2' ? NS.SOAP12_ENV : NS.SOAP11_ENV;
120
+ const fault = child(found.body, envelopeNs, 'Fault');
121
+ if (fault === undefined) {
122
+ return undefined;
123
+ }
124
+ return found.version === '1.2' ? parseFault12(fault) : parseFault11(fault);
125
+ }
126
+ /** True when the document is a SOAP envelope whose `Body` carries a `Fault`. */
127
+ export function isSoapFault(doc) {
128
+ return parseFault(doc) !== undefined;
129
+ }
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Bridges the Form view to a whole SOAP envelope: finds the `soapenv:Body`
3
+ * child element(s) a request's operation is built from, models them with the
4
+ * schema-driven form model, and reports the exact text range the renderer must
5
+ * splice a re-serialised fragment over. Everything outside that range — the
6
+ * envelope, its namespace declarations, any headers — is never touched.
7
+ */
8
+ import type { BuildFormOptions, FormNode, TextRange } from '../xsd/form-model.js';
9
+ import type { OperationRef, RequestBuildInput } from './request-builder.js';
10
+ /** What {@link buildRequestForm} returns. */
11
+ export interface RequestForm {
12
+ /** The form tree for the Body's content. */
13
+ readonly root: FormNode;
14
+ /** The range of the Body's element children in the envelope text, for splicing. */
15
+ readonly bodyRange: TextRange;
16
+ /** Everything that could not be modelled; the view falls back to "Edit in XML" for those parts. */
17
+ readonly problems: readonly string[];
18
+ }
19
+ /**
20
+ * Models the Body of `envelopeXml` for one binding operation.
21
+ *
22
+ * Document/literal envelopes with exactly one Body child model that element
23
+ * directly; several body parts are gathered under a synthetic group root whose
24
+ * children each serialise on their own. An rpc wrapper is itself the root.
25
+ *
26
+ * Never throws: an unresolvable operation or an unparsable envelope yields an
27
+ * empty form and a problem, so the view can fall back to the XML editor.
28
+ *
29
+ * @param input the parsed WSDL definition and its compiled schema set
30
+ * @param op which operation of which binding the request belongs to
31
+ * @param envelopeXml the request's current envelope text — the single source of truth
32
+ * @param options depth cut-off and sample-value knobs passed through to `buildForm`
33
+ */
34
+ export declare function buildRequestForm(input: RequestBuildInput, op: OperationRef, envelopeXml: string, options?: BuildFormOptions): RequestForm;
@@ -0,0 +1,251 @@
1
+ /**
2
+ * Bridges the Form view to a whole SOAP envelope: finds the `soapenv:Body`
3
+ * child element(s) a request's operation is built from, models them with the
4
+ * schema-driven form model, and reports the exact text range the renderer must
5
+ * splice a re-serialised fragment over. Everything outside that range — the
6
+ * envelope, its namespace declarations, any headers — is never touched.
7
+ */
8
+ import { NS } from '../xml/namespaces.js';
9
+ import { findBinding, findMessage, findPortType } from '../wsdl/model.js';
10
+ import { qnameToString } from '../wsdl/qname.js';
11
+ import { buildForm, buildFormForType } from '../xsd/form-model.js';
12
+ import { scanXml } from '../xsd/xml-scan.js';
13
+ const ENVELOPE_NAMESPACES = new Set([NS.SOAP11_ENV, NS.SOAP12_ENV]);
14
+ /** Depth-first search for the `soapenv:Body` element, whichever SOAP version declares it. */
15
+ function findBody(elements) {
16
+ for (const element of elements) {
17
+ if (element.localName === 'Body' && ENVELOPE_NAMESPACES.has(element.namespaceUri)) {
18
+ return element;
19
+ }
20
+ const nested = findBody(element.children);
21
+ if (nested !== undefined) {
22
+ return nested;
23
+ }
24
+ }
25
+ return undefined;
26
+ }
27
+ /**
28
+ * Every `xmlns:prefix="uri"` declared anywhere in the envelope. A body fragment
29
+ * sliced out of it carries none of its own (the request builder hoists them all
30
+ * onto `soapenv:Envelope`), so the form model needs both directions: `byUri` to
31
+ * name a new element, `byPrefix` to resolve the ones already written.
32
+ */
33
+ function namespacesInScope(text) {
34
+ const byUri = {};
35
+ const byPrefix = {};
36
+ const re = /xmlns:([A-Za-z_][\w.-]*)\s*=\s*"([^"]*)"/g;
37
+ let match;
38
+ while ((match = re.exec(text)) !== null) {
39
+ const [, prefix, uri] = match;
40
+ if (prefix === undefined || uri === undefined) {
41
+ continue;
42
+ }
43
+ if (byUri[uri] === undefined) {
44
+ byUri[uri] = prefix;
45
+ }
46
+ if (byPrefix[prefix] === undefined) {
47
+ byPrefix[prefix] = uri;
48
+ }
49
+ }
50
+ return { byUri, byPrefix };
51
+ }
52
+ /** The abstract operation's input message parts, or an empty list when anything is missing. */
53
+ function inputParts(input, op, problems) {
54
+ const binding = findBinding(input.definition, op.bindingName);
55
+ if (binding === undefined) {
56
+ problems.push(`No binding named ${qnameToString(op.bindingName)}`);
57
+ return [];
58
+ }
59
+ const portType = findPortType(input.definition, binding.type);
60
+ const operation = portType?.operations.find((candidate) => candidate.name === op.operationName);
61
+ const messageRef = operation?.input;
62
+ if (messageRef === undefined) {
63
+ problems.push(`Operation "${op.operationName}" declares no input message`);
64
+ return [];
65
+ }
66
+ const message = findMessage(input.definition, messageRef.message);
67
+ if (message === undefined) {
68
+ problems.push(`Unknown message ${qnameToString(messageRef.message)}`);
69
+ return [];
70
+ }
71
+ return message.parts;
72
+ }
73
+ /** True when the binding operation is rpc-style, so the Body child is a wrapper, not a schema element. */
74
+ function isRpc(input, op) {
75
+ const binding = findBinding(input.definition, op.bindingName);
76
+ if (binding === undefined) {
77
+ return false;
78
+ }
79
+ const bindingOperation = binding.operations.find((candidate) => candidate.name === op.operationName);
80
+ return (bindingOperation?.style ?? binding.style) === 'rpc';
81
+ }
82
+ /** The form for one document/literal body child: its own global element declaration. */
83
+ function documentChildForm(input, child, envelopeXml, options) {
84
+ const name = { namespaceUri: child.namespaceUri, localName: child.localName };
85
+ // The fragment is sliced out of the envelope, so its own ranges start at 0;
86
+ // `offset` puts every reported `valueRange` back into envelope coordinates,
87
+ // which is what the renderer splices against.
88
+ return buildForm(input.schemaSet, name, envelopeXml.slice(child.range.start, child.range.end), {
89
+ ...options,
90
+ offset: child.range.start,
91
+ });
92
+ }
93
+ /**
94
+ * Builds the rpc wrapper's form: the wrapper element itself is not declared in
95
+ * any schema, so it is modelled as a group whose children come from the message
96
+ * parts (each part naming a *type*, per WSDL 1.1 rpc rules).
97
+ */
98
+ /** Wraps a wrapper child no message part claims, keeping its text verbatim — same treatment
99
+ * `form-model.ts` gives an unclaimed particle child, so a structural edit never drops it. */
100
+ function rawWrapperChild(envelopeXml, source, id) {
101
+ return {
102
+ id,
103
+ kind: 'any',
104
+ name: { namespaceUri: source.namespaceUri, localName: source.localName },
105
+ label: source.name,
106
+ required: false,
107
+ occurs: { min: 0, max: 'unbounded' },
108
+ present: true,
109
+ raw: envelopeXml.slice(source.range.start, source.range.end),
110
+ children: [],
111
+ };
112
+ }
113
+ function rpcWrapperForm(input, wrapper, parts, envelopeXml, options, problems) {
114
+ const children = [];
115
+ const used = wrapper.children.map(() => false);
116
+ for (const [index, part] of parts.entries()) {
117
+ const accessorIndex = wrapper.children.findIndex((candidate, i) => !used[i] && candidate.localName === part.name);
118
+ const accessor = accessorIndex === -1 ? undefined : wrapper.children[accessorIndex];
119
+ if (accessorIndex !== -1) {
120
+ used[accessorIndex] = true;
121
+ }
122
+ const accessorXml = accessor === undefined ? undefined : envelopeXml.slice(accessor.range.start, accessor.range.end);
123
+ const accessorOptions = { ...options, offset: accessor?.range.start ?? 0 };
124
+ const name = { namespaceUri: '', localName: part.name };
125
+ if (part.type !== undefined) {
126
+ children.push(reroot(buildFormForType(input.schemaSet, name, part.type, accessorXml, accessorOptions), `r/${index}`));
127
+ continue;
128
+ }
129
+ if (part.element !== undefined) {
130
+ children.push(reroot(buildForm(input.schemaSet, part.element, accessorXml, accessorOptions), `r/${index}`));
131
+ continue;
132
+ }
133
+ problems.push(`Part "${part.name}" declares neither an element nor a type`);
134
+ }
135
+ // Elements standing in the wrapper that no message part claims must survive a structural
136
+ // edit verbatim — the same "nothing in the source is dropped" invariant `form-model.ts`
137
+ // upholds for particle children.
138
+ for (const [index, leftover] of wrapper.children.entries()) {
139
+ if (!used[index]) {
140
+ children.push(rawWrapperChild(envelopeXml, leftover, `r/~${index}`));
141
+ }
142
+ }
143
+ return {
144
+ id: 'r',
145
+ kind: 'group',
146
+ name: { namespaceUri: wrapper.namespaceUri, localName: wrapper.localName },
147
+ label: wrapper.name,
148
+ required: true,
149
+ occurs: { min: 1, max: 1 },
150
+ present: true,
151
+ extraAttributes: wrapper.attributes.map((attribute) => ({ name: attribute.name, value: attribute.value })),
152
+ children,
153
+ };
154
+ }
155
+ /** Rewrites a subtree's ids so several independently built forms can share one root. */
156
+ function reroot(node, id) {
157
+ return {
158
+ ...node,
159
+ id,
160
+ children: node.children.map((child, i) => reroot(child, `${id}/${i}`)),
161
+ ...(node.repeat !== undefined
162
+ ? {
163
+ repeat: {
164
+ ...node.repeat,
165
+ instances: node.repeat.instances.map((instance, i) => reroot(instance, `${id}#${i}`)),
166
+ template: reroot(node.repeat.template, `${id}#t`),
167
+ },
168
+ }
169
+ : {}),
170
+ };
171
+ }
172
+ /** An empty form for an envelope whose Body could not be modelled at all. */
173
+ function emptyForm(label) {
174
+ return {
175
+ id: 'r',
176
+ kind: 'any',
177
+ name: { namespaceUri: '', localName: label },
178
+ label,
179
+ required: false,
180
+ occurs: { min: 0, max: 1 },
181
+ present: false,
182
+ children: [],
183
+ };
184
+ }
185
+ /**
186
+ * Models the Body of `envelopeXml` for one binding operation.
187
+ *
188
+ * Document/literal envelopes with exactly one Body child model that element
189
+ * directly; several body parts are gathered under a synthetic group root whose
190
+ * children each serialise on their own. An rpc wrapper is itself the root.
191
+ *
192
+ * Never throws: an unresolvable operation or an unparsable envelope yields an
193
+ * empty form and a problem, so the view can fall back to the XML editor.
194
+ *
195
+ * @param input the parsed WSDL definition and its compiled schema set
196
+ * @param op which operation of which binding the request belongs to
197
+ * @param envelopeXml the request's current envelope text — the single source of truth
198
+ * @param options depth cut-off and sample-value knobs passed through to `buildForm`
199
+ */
200
+ export function buildRequestForm(input, op, envelopeXml, options) {
201
+ const problems = [];
202
+ const scanned = scanXml(envelopeXml);
203
+ problems.push(...scanned.problems);
204
+ const body = findBody(scanned.elements);
205
+ if (body === undefined) {
206
+ problems.push('This envelope has no soapenv:Body element');
207
+ return { root: emptyForm('Body'), bodyRange: { start: 0, end: 0 }, problems };
208
+ }
209
+ const children = body.children;
210
+ const bodyRange = children.length === 0
211
+ ? { start: body.range.end, end: body.range.end }
212
+ : {
213
+ start: children[0].range.start,
214
+ end: children[children.length - 1].range.end,
215
+ };
216
+ const scope = namespacesInScope(envelopeXml);
217
+ const buildOptions = { ...options, prefixes: scope.byUri, inScope: scope.byPrefix };
218
+ if (children.length === 0) {
219
+ problems.push('This envelope has an empty Body');
220
+ return { root: emptyForm('Body'), bodyRange, problems };
221
+ }
222
+ if (isRpc(input, op)) {
223
+ const wrapper = children[0];
224
+ const parts = inputParts(input, op, problems);
225
+ return { root: rpcWrapperForm(input, wrapper, parts, envelopeXml, buildOptions, problems), bodyRange, problems };
226
+ }
227
+ if (children.length === 1) {
228
+ return {
229
+ root: documentChildForm(input, children[0], envelopeXml, buildOptions),
230
+ bodyRange,
231
+ problems,
232
+ };
233
+ }
234
+ // Several body parts: a synthetic root that owns them, so one `applyForm`
235
+ // re-renders the whole Body content in one splice.
236
+ return {
237
+ root: {
238
+ id: 'r',
239
+ kind: 'group',
240
+ name: { namespaceUri: '', localName: 'Body' },
241
+ // An empty label makes `applyForm` splice the children out without a tag of its own.
242
+ label: '',
243
+ required: true,
244
+ occurs: { min: 1, max: 1 },
245
+ present: true,
246
+ children: children.map((child, index) => reroot(documentChildForm(input, child, envelopeXml, buildOptions), `r/${index}`)),
247
+ },
248
+ bodyRange,
249
+ problems,
250
+ };
251
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * A {@link FetchDocument} that answers from a legacy project's cached definition parts, so an
3
+ * interface resolves exactly as it was when the file was saved, without touching the network.
4
+ */
5
+ import type { FetchDocument } from '../../wsdl/resolver.js';
6
+ import type { LegacyDefinitionCache } from './model.js';
7
+ /** Options for {@link fetchDocumentFromCache}. */
8
+ export interface CacheFetchOptions {
9
+ /** Asked for any location the cache does not hold. Without one, such a location is an error. */
10
+ readonly fallback?: FetchDocument;
11
+ /** Told each location that had to be fetched through {@link fallback}. */
12
+ readonly onFallback?: (location: string) => void;
13
+ }
14
+ /**
15
+ * Serves every location held in `cache` from memory, and anything else through `options.fallback`.
16
+ *
17
+ * @throws WsdlParseError `legacy-cache-miss` for a location the cache lacks when there is no fallback.
18
+ */
19
+ export declare function fetchDocumentFromCache(cache: LegacyDefinitionCache | undefined, options?: CacheFetchOptions): FetchDocument;
20
+ /** The location to resolve an interface from: the cache's root part, else the definition URL. */
21
+ export declare function definitionRootOf(cache: LegacyDefinitionCache | undefined, definitionUrl: string | undefined): string | undefined;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * A {@link FetchDocument} that answers from a legacy project's cached definition parts, so an
3
+ * interface resolves exactly as it was when the file was saved, without touching the network.
4
+ */
5
+ import { WsdlParseError } from '../../errors.js';
6
+ /** `location` in a canonical form, so `HTTP://Host/a/../b` and `http://host/b` find the same part. */
7
+ function canonical(location) {
8
+ try {
9
+ return new URL(location).href;
10
+ }
11
+ catch {
12
+ return location;
13
+ }
14
+ }
15
+ /**
16
+ * Serves every location held in `cache` from memory, and anything else through `options.fallback`.
17
+ *
18
+ * @throws WsdlParseError `legacy-cache-miss` for a location the cache lacks when there is no fallback.
19
+ */
20
+ export function fetchDocumentFromCache(cache, options = {}) {
21
+ const parts = new Map();
22
+ for (const part of cache?.parts ?? []) {
23
+ parts.set(canonical(part.url), part.content);
24
+ }
25
+ const encoder = new TextEncoder();
26
+ return async (location, signal) => {
27
+ const text = parts.get(canonical(location));
28
+ if (text !== undefined) {
29
+ return { location, bytes: encoder.encode(text), text };
30
+ }
31
+ if (options.fallback === undefined) {
32
+ throw new WsdlParseError('legacy-cache-miss', `The project file does not hold a copy of ${location}`, {
33
+ details: { location },
34
+ });
35
+ }
36
+ options.onFallback?.(location);
37
+ return options.fallback(location, signal);
38
+ };
39
+ }
40
+ /** The location to resolve an interface from: the cache's root part, else the definition URL. */
41
+ export function definitionRootOf(cache, definitionUrl) {
42
+ return cache?.rootPart ?? definitionUrl ?? cache?.parts[0]?.url;
43
+ }
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The legacy single-XML SOAP project format's own identifiers.
3
+ *
4
+ * This file and `fixtures/legacy-soap-project/` are the only tracked paths exempt from
5
+ * `pnpm check:banned-terms`: the namespace URI and root element name below have to be written out
6
+ * verbatim to recognise the format, and they contain names the check otherwise forbids. Keep
7
+ * everything else — comments included — out of this file, and never let these strings reach UI text.
8
+ */
9
+ /** The namespace every element of the format lives in. */
10
+ export declare const LEGACY_PROJECT_NAMESPACE = "http://eviware.com/soapui/config";
11
+ /** The local name of the document element. */
12
+ export declare const LEGACY_PROJECT_ROOT = "soapui-project";
13
+ /**
14
+ * A cheap check on the first few kilobytes of `text`, for import auto-detection: the root element's
15
+ * local name has to appear, and the format's namespace has to be declared in an `xmlns` attribute.
16
+ * `parseLegacyProject` is the real test.
17
+ */
18
+ export declare function looksLikeLegacyProject(text: string): boolean;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * The legacy single-XML SOAP project format's own identifiers.
3
+ *
4
+ * This file and `fixtures/legacy-soap-project/` are the only tracked paths exempt from
5
+ * `pnpm check:banned-terms`: the namespace URI and root element name below have to be written out
6
+ * verbatim to recognise the format, and they contain names the check otherwise forbids. Keep
7
+ * everything else — comments included — out of this file, and never let these strings reach UI text.
8
+ */
9
+ /** The namespace every element of the format lives in. */
10
+ export const LEGACY_PROJECT_NAMESPACE = 'http://eviware.com/soapui/config';
11
+ /** The local name of the document element. */
12
+ export const LEGACY_PROJECT_ROOT = 'soapui-project';
13
+ const ESCAPED_NAMESPACE = LEGACY_PROJECT_NAMESPACE.replace(/[.*+?^${}()|[\]\\/]/g, '\\$&');
14
+ const NAMESPACE_DECLARATION = new RegExp(`\\sxmlns(?::[\\w.-]+)?\\s*=\\s*(["'])${ESCAPED_NAMESPACE}\\1`);
15
+ const ROOT_ELEMENT = new RegExp(`<(?:[\\w.-]+:)?${LEGACY_PROJECT_ROOT}[\\s>]`);
16
+ /**
17
+ * A cheap check on the first few kilobytes of `text`, for import auto-detection: the root element's
18
+ * local name has to appear, and the format's namespace has to be declared in an `xmlns` attribute.
19
+ * `parseLegacyProject` is the real test.
20
+ */
21
+ export function looksLikeLegacyProject(text) {
22
+ const head = text.slice(0, 4096);
23
+ return ROOT_ELEMENT.test(head) && NAMESPACE_DECLARATION.test(head);
24
+ }
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Reading a legacy single-XML SOAP project from a file or text. Mapping it onto a Wirebench project
3
+ * is `map.ts`'s job, once each interface's definition has been resolved.
4
+ */
5
+ import type { LegacyProject } from './model.js';
6
+ /** Where a legacy project comes from: a file on disk or text already held in memory. */
7
+ export type LegacyProjectSource = {
8
+ readonly kind: 'file';
9
+ readonly path: string;
10
+ } | {
11
+ readonly kind: 'text';
12
+ readonly text: string;
13
+ };
14
+ /** Largest project accepted, in bytes (file) or UTF-16 code units (text). */
15
+ export declare const MAX_LEGACY_PROJECT_BYTES: number;
16
+ /**
17
+ * Reads and parses a legacy SOAP project.
18
+ *
19
+ * @throws LegacyProjectError when the file cannot be read, is too large, or is not a readable project.
20
+ */
21
+ export declare function readLegacySoapProject(source: LegacyProjectSource): Promise<LegacyProject>;