@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,145 @@
1
+ /**
2
+ * The attachment stages of a send: what happens to the envelope on the way out, and how a
3
+ * `multipart/related` response is unwrapped on the way back in.
4
+ *
5
+ * Kept beside the MIME modules rather than in `send.ts` so the ordering rules live next to
6
+ * the code that implements them.
7
+ */
8
+ import { headerValue, setHeader } from '../../http/headers.js';
9
+ import { decodeBody, encodeBody } from '../charset.js';
10
+ import { inlineFiles } from './inline-files.js';
11
+ import { expandMtomResponse, prepareMtomRequest, xopContentType } from './mtom.js';
12
+ import { DEFAULT_ROOT_CONTENT_ID, buildMultipartRelated, mediaTypeOf, parseMultipartRelated } from './multipart.js';
13
+ import { prepareSwaRequest } from './swa.js';
14
+ /**
15
+ * Substitutes every `file:` reference in the envelope with the file's base64 bytes.
16
+ *
17
+ * This is envelope *text preparation*, exactly like property expansion, so it runs before the
18
+ * envelope transforms rather than with the attachment packaging that follows them (see
19
+ * `send.ts`): a WS-Security signature must cover the bytes that actually go on the wire, and
20
+ * signing the literal `file:/…` text and then replacing it would produce a signature no
21
+ * receiver can verify.
22
+ *
23
+ * A missing file is a problem, not a failure: the reference is left verbatim and the send
24
+ * continues, since the server's own error is usually more informative than a client-side abort.
25
+ * Without a `resolveFile` there is no way to read anything, so the property is inert.
26
+ *
27
+ * @param input the (already expanded) send input
28
+ * @param problems collects non-fatal issues, e.g. an inline file that is missing
29
+ * @returns the envelope with every readable `file:` reference replaced
30
+ */
31
+ export async function substituteInlineFiles(input, problems) {
32
+ const options = input.attachmentOptions;
33
+ if (options === undefined || !options.enableInlineFiles || options.resolveFile === undefined) {
34
+ return input.envelopeXml;
35
+ }
36
+ const inlined = await inlineFiles(input.envelopeXml, {
37
+ enabled: true,
38
+ resolveFile: options.resolveFile,
39
+ ...(options.resourceRoot !== undefined ? { resourceRoot: options.resourceRoot } : {}),
40
+ });
41
+ for (const problem of inlined.problems) {
42
+ problems.push({ code: problem.code, message: problem.message });
43
+ }
44
+ return inlined.envelopeXml;
45
+ }
46
+ /**
47
+ * Runs the request-side attachment pipeline and returns the bytes to send.
48
+ *
49
+ * The order is fixed: property expansion, inline-file substitution
50
+ * ({@link substituteInlineFiles}) and the envelope transforms have already happened, then
51
+ * MTOM claims the attachments its `cid:` references name, then everything left over rides
52
+ * along as SwA. Only when something is actually packaged is the `Content-Type` replaced by
53
+ * the multipart's — the caller's own content type (charset and all) becomes the root part's,
54
+ * so a request that sets one still gets what it asked for where it matters.
55
+ *
56
+ * "Disable Multiparts" short-circuits the whole stage, MTOM included: rewriting a `cid:`
57
+ * reference into an `xop:Include` whose part is then not sent would produce a message no
58
+ * server can read.
59
+ *
60
+ * @param input the (already expanded, already inlined) send input
61
+ * @param headers the request headers, mutated when a multipart Content-Type takes over
62
+ */
63
+ export async function packageRequestBody(input, headers) {
64
+ const options = input.attachmentOptions;
65
+ if (options === undefined) {
66
+ return encodeBody(input.envelopeXml, input.encoding);
67
+ }
68
+ // Inline files were already substituted, before the envelope transforms — see
69
+ // {@link substituteInlineFiles} and the pipeline order in `send.ts`.
70
+ let envelopeXml = input.envelopeXml;
71
+ const attachments = input.attachments ?? [];
72
+ const parts = [];
73
+ let mtom = false;
74
+ if (!options.disableMultiparts) {
75
+ let remaining = attachments;
76
+ if (options.enableMtom || options.forceMtom) {
77
+ const prepared = await prepareMtomRequest(envelopeXml, attachments, {
78
+ force: options.forceMtom,
79
+ resolver: options.resolver,
80
+ });
81
+ envelopeXml = prepared.envelopeXml;
82
+ parts.push(...prepared.parts);
83
+ mtom = prepared.used;
84
+ remaining = attachments.filter((attachment) => !prepared.consumedIds.includes(attachment.id));
85
+ }
86
+ const swa = await prepareSwaRequest(envelopeXml, remaining, {
87
+ resolver: options.resolver,
88
+ encodeAttachments: options.encodeAttachments,
89
+ });
90
+ parts.push(...swa.parts);
91
+ }
92
+ const encoded = encodeBody(envelopeXml, input.encoding);
93
+ if (parts.length === 0 && !mtom) {
94
+ return encoded;
95
+ }
96
+ const soapContentType = headerValue(headers, 'content-type') ?? 'text/xml;charset=UTF-8';
97
+ const built = buildMultipartRelated({
98
+ root: {
99
+ contentType: mtom ? xopContentType(soapContentType) : soapContentType,
100
+ contentId: DEFAULT_ROOT_CONTENT_ID,
101
+ bytes: encoded,
102
+ },
103
+ parts,
104
+ ...(mtom ? { mtom: true } : {}),
105
+ });
106
+ setHeader(headers, 'content-type', built.contentType);
107
+ return built.body;
108
+ }
109
+ /**
110
+ * Reads the response body as an envelope, unwrapping a `multipart/related` response into
111
+ * its root part plus attachments.
112
+ *
113
+ * A response is unwrapped whether or not the request asked for attachments — a server may
114
+ * answer with MTOM regardless — but the two response knobs only apply when the request
115
+ * carried them: `expandMtomAttachments` writes each referenced part back into the envelope
116
+ * as base64, and `inlineResponseAttachments` decides whether those parts stay listed
117
+ * afterwards.
118
+ */
119
+ export function readResponseBody(body, contentType, options, problems) {
120
+ const isMultipart = contentType !== undefined && mediaTypeOf(contentType).toLowerCase().startsWith('multipart/');
121
+ if (!isMultipart) {
122
+ const decoded = decodeBody(body, contentType);
123
+ if (decoded.problem !== undefined) {
124
+ problems.push(decoded.problem);
125
+ }
126
+ return { envelopeXml: decoded.text };
127
+ }
128
+ const parsed = parseMultipartRelated(body, contentType);
129
+ for (const problem of parsed.problems) {
130
+ problems.push({ code: 'mime-parse', message: `Response multipart: ${problem}` });
131
+ }
132
+ // A root part with no Content-Type of its own still inherits the multipart's charset.
133
+ const decoded = decodeBody(parsed.root.bytes, parsed.root.headers['content-type'] ?? contentType);
134
+ if (decoded.problem !== undefined) {
135
+ problems.push(decoded.problem);
136
+ }
137
+ const expanded = expandMtomResponse(parsed, {
138
+ inline: options?.expandMtomAttachments === true,
139
+ envelopeXml: decoded.text,
140
+ });
141
+ const attachments = options?.inlineResponseAttachments === true
142
+ ? expanded.attachments
143
+ : expanded.attachments.filter((attachment) => !expanded.inlinedContentIds.includes(attachment.contentId));
144
+ return { envelopeXml: expanded.envelopeXml, attachments };
145
+ }
@@ -0,0 +1,45 @@
1
+ /**
2
+ * SOAP with Attachments (SwA), including swaRef per WS-I Attachments Profile 1.0.
3
+ *
4
+ * SwA is the plain case: the envelope is sent untouched as the root part and every
5
+ * attachment rides along beside it. A `ref:swaRef`-typed element already contains the
6
+ * `cid:` reference the profile asks for, so — unlike MTOM — nothing in the body is
7
+ * rewritten; the reference simply has to name a part that is actually there.
8
+ */
9
+ import type { Attachment } from '../../project/model.js';
10
+ import type { ParsedMultipart } from './multipart.js';
11
+ import type { AttachmentResolver, MultipartPart, ResponseAttachment } from './types.js';
12
+ /** Knobs for {@link prepareSwaRequest}. */
13
+ export interface SwaOptions {
14
+ readonly resolver: AttachmentResolver;
15
+ /** "Encode Attachments": base64 transfer encoding instead of binary. */
16
+ readonly encodeAttachments: boolean;
17
+ /** "Disable Multiparts": send the envelope alone and ignore every attachment. */
18
+ readonly disableMultiparts?: boolean;
19
+ }
20
+ /** What {@link prepareSwaRequest} produced. */
21
+ export interface PreparedSwa {
22
+ readonly parts: readonly MultipartPart[];
23
+ /** False when nothing is to be sent as a multipart (no attachments, or multiparts disabled). */
24
+ readonly used: boolean;
25
+ /** Content-IDs the envelope actually references with `cid:` (swaRef and friends). */
26
+ readonly referencedContentIds: readonly string[];
27
+ }
28
+ /**
29
+ * Builds the SwA parts for `attachments` — every attachment MTOM did not already consume.
30
+ *
31
+ * The envelope is never modified; it is only scanned, so the caller can tell which
32
+ * attachments a `cid:` reference in the body actually points at (an unreferenced
33
+ * attachment is still sent, which is what "anonymous" MIME parts are for).
34
+ *
35
+ * @param envelopeXml the envelope as it will be sent
36
+ * @param attachments the attachments to package
37
+ * @param options the resolver plus the request's encode/disable flags
38
+ */
39
+ export declare function prepareSwaRequest(envelopeXml: string, attachments: readonly Attachment[], options: SwaOptions): Promise<PreparedSwa>;
40
+ /**
41
+ * Describes every non-root part of a parsed response as a {@link ResponseAttachment}.
42
+ *
43
+ * @param parsed the parsed `multipart/related` response
44
+ */
45
+ export declare function collectResponseAttachments(parsed: ParsedMultipart): readonly ResponseAttachment[];
@@ -0,0 +1,62 @@
1
+ /**
2
+ * SOAP with Attachments (SwA), including swaRef per WS-I Attachments Profile 1.0.
3
+ *
4
+ * SwA is the plain case: the envelope is sent untouched as the root part and every
5
+ * attachment rides along beside it. A `ref:swaRef`-typed element already contains the
6
+ * `cid:` reference the profile asks for, so — unlike MTOM — nothing in the body is
7
+ * rewritten; the reference simply has to name a part that is actually there.
8
+ */
9
+ import { findCidReferences } from './cid-scan.js';
10
+ /** The Content-ID an attachment goes out with: its own, or its id as a fallback. */
11
+ function contentIdOf(attachment) {
12
+ return attachment.contentId.length > 0 ? attachment.contentId : `${attachment.id}@wirebench`;
13
+ }
14
+ /**
15
+ * Builds the SwA parts for `attachments` — every attachment MTOM did not already consume.
16
+ *
17
+ * The envelope is never modified; it is only scanned, so the caller can tell which
18
+ * attachments a `cid:` reference in the body actually points at (an unreferenced
19
+ * attachment is still sent, which is what "anonymous" MIME parts are for).
20
+ *
21
+ * @param envelopeXml the envelope as it will be sent
22
+ * @param attachments the attachments to package
23
+ * @param options the resolver plus the request's encode/disable flags
24
+ */
25
+ export async function prepareSwaRequest(envelopeXml, attachments, options) {
26
+ if (options.disableMultiparts === true || attachments.length === 0) {
27
+ return { parts: [], used: false, referencedContentIds: [] };
28
+ }
29
+ const referenced = new Set(findCidReferences(envelopeXml).references.map((reference) => reference.cid));
30
+ const parts = [];
31
+ const referencedContentIds = [];
32
+ for (const attachment of attachments) {
33
+ const contentId = contentIdOf(attachment);
34
+ if (referenced.has(contentId) || referenced.has(attachment.id)) {
35
+ referencedContentIds.push(contentId);
36
+ }
37
+ parts.push({
38
+ contentId,
39
+ contentType: attachment.contentType,
40
+ bytes: await options.resolver(attachment),
41
+ transferEncoding: options.encodeAttachments ? 'base64' : 'binary',
42
+ ...(attachment.name.length > 0 ? { fileName: attachment.name } : {}),
43
+ ...(attachment.part !== undefined && attachment.part.length > 0 ? { partName: attachment.part } : {}),
44
+ });
45
+ }
46
+ return { parts, used: parts.length > 0, referencedContentIds };
47
+ }
48
+ /**
49
+ * Describes every non-root part of a parsed response as a {@link ResponseAttachment}.
50
+ *
51
+ * @param parsed the parsed `multipart/related` response
52
+ */
53
+ export function collectResponseAttachments(parsed) {
54
+ return parsed.parts.map((part) => ({
55
+ contentId: part.contentId ?? '',
56
+ contentType: part.contentType,
57
+ size: part.bytes.length,
58
+ bytes: part.bytes,
59
+ ...(part.fileName !== undefined ? { name: part.fileName } : {}),
60
+ ...(part.transferEncoding !== undefined ? { transferEncoding: part.transferEncoding } : {}),
61
+ }));
62
+ }
@@ -0,0 +1,69 @@
1
+ /**
2
+ * Shared types for the MIME layer: what goes into a `multipart/related` body,
3
+ * what comes back out of one, and how an {@link Attachment}'s bytes are obtained.
4
+ *
5
+ * The engine never reads an attachment from disk on its own: the send path is
6
+ * handed an {@link AttachmentResolver} so the desktop main process (which owns the
7
+ * project directory and its cache) decides where bytes come from. See
8
+ * `project/attachments-cache.ts` for the file-backed implementation.
9
+ */
10
+ import type { Attachment } from '../../project/model.js';
11
+ /** Resolves one attachment's bytes. Rejects when the attachment cannot be read. */
12
+ export type AttachmentResolver = (attachment: Attachment) => Promise<Uint8Array>;
13
+ /** Content transfer encodings this layer writes or understands. */
14
+ export type TransferEncoding = 'binary' | 'base64' | '8bit' | '7bit' | 'quoted-printable';
15
+ /**
16
+ * Transfer encodings {@link buildMultipartRelated} can actually produce: `quoted-printable`
17
+ * is understood on parse but this layer never writes it, so it is left out of the build-side
18
+ * type rather than silently passed through as if it were `binary`.
19
+ */
20
+ export type BuildTransferEncoding = 'binary' | 'base64' | '8bit' | '7bit';
21
+ /** One part to write into a `multipart/related` body. */
22
+ export interface MultipartPart {
23
+ /** Content-ID without the angle brackets; they are added on the wire. */
24
+ readonly contentId: string;
25
+ readonly contentType: string;
26
+ readonly bytes: Uint8Array;
27
+ /** Defaults to `binary`; `base64` re-encodes the bytes and wraps at 76 columns. */
28
+ readonly transferEncoding?: BuildTransferEncoding;
29
+ /** File name for `Content-Disposition: attachment; filename="..."`. */
30
+ readonly fileName?: string;
31
+ /** WSDL `mime:part` name for `Content-Disposition: attachment; name="..."`. */
32
+ readonly partName?: string;
33
+ }
34
+ /** The root (SOAP envelope) part of a `multipart/related` body. */
35
+ export interface MultipartRoot {
36
+ readonly contentType: string;
37
+ /** Content-ID without the angle brackets; defaults to `rootpart@wirebench`. */
38
+ readonly contentId?: string;
39
+ readonly bytes: Uint8Array;
40
+ }
41
+ /** One part read back out of a `multipart/related` body. */
42
+ export interface MimePart {
43
+ /** Header names lower-cased, values unfolded and trimmed; duplicates keep the first. */
44
+ readonly headers: Readonly<Record<string, string>>;
45
+ /** Content-ID with the angle brackets stripped, when the part carried one. */
46
+ readonly contentId?: string;
47
+ /** `application/octet-stream` when the part declared no `Content-Type`. */
48
+ readonly contentType: string;
49
+ readonly transferEncoding?: TransferEncoding;
50
+ /** Part body, decoded when the transfer encoding was `base64`/`quoted-printable`. */
51
+ readonly bytes: Uint8Array;
52
+ /** Part body exactly as it appeared on the wire, still encoded. */
53
+ readonly raw: Uint8Array;
54
+ /** `filename` from `Content-Disposition`, or the last segment of `Content-Location`. */
55
+ readonly fileName?: string;
56
+ /** `name` from `Content-Disposition`. */
57
+ readonly partName?: string;
58
+ }
59
+ /** One attachment received on a response. */
60
+ export interface ResponseAttachment {
61
+ /** Content-ID without the angle brackets; empty when the part carried none. */
62
+ readonly contentId: string;
63
+ readonly contentType: string;
64
+ readonly size: number;
65
+ readonly bytes: Uint8Array;
66
+ /** File name, when the part declared one. */
67
+ readonly name?: string;
68
+ readonly transferEncoding?: TransferEncoding;
69
+ }
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Shared types for the MIME layer: what goes into a `multipart/related` body,
3
+ * what comes back out of one, and how an {@link Attachment}'s bytes are obtained.
4
+ *
5
+ * The engine never reads an attachment from disk on its own: the send path is
6
+ * handed an {@link AttachmentResolver} so the desktop main process (which owns the
7
+ * project directory and its cache) decides where bytes come from. See
8
+ * `project/attachments-cache.ts` for the file-backed implementation.
9
+ */
10
+ export {};
@@ -0,0 +1,32 @@
1
+ /**
2
+ * One namespace/prefix table shared by every fragment of a single envelope.
3
+ *
4
+ * The sample generator declares namespaces on each fragment's own root; an
5
+ * envelope reads much better with every declaration hoisted onto
6
+ * `soapenv:Envelope` instead. Sharing one scope across all fragments is what
7
+ * makes that safe: a namespace gets the same prefix everywhere, so hoisting
8
+ * cannot change any name's meaning.
9
+ */
10
+ /** Assigns one prefix per namespace URI and records which ones were actually used. */
11
+ export declare class NamespaceScope {
12
+ private readonly byUri;
13
+ private readonly taken;
14
+ private readonly used;
15
+ /**
16
+ * @param seedUris namespaces to name up-front, so mnemonics are assigned in a
17
+ * stable order rather than in whatever order fragments happen to use them
18
+ * @param overrides caller-supplied namespace URI → prefix, which always wins
19
+ */
20
+ constructor(seedUris: readonly string[], overrides?: Readonly<Record<string, string>>);
21
+ private assign;
22
+ /** Namespace URI → prefix for every namespace named so far; the generator's `prefixes` map. */
23
+ prefixes(): Record<string, string>;
24
+ /** The prefix for `uri`, allocating one if needed, and marks it as used. The empty namespace has none. */
25
+ use(uri: string): string;
26
+ /** Records the prefix → URI bindings a generated fragment declared on its own root. */
27
+ markUsed(namespaces: Readonly<Record<string, string>>): void;
28
+ /** Prefix → URI for every namespace actually used, in first-use order: the envelope's declarations. */
29
+ declarations(): Record<string, string>;
30
+ /** True when `prefix` is declared on the envelope bound to `uri`. */
31
+ declares(prefix: string, uri: string): boolean;
32
+ }
@@ -0,0 +1,85 @@
1
+ /**
2
+ * One namespace/prefix table shared by every fragment of a single envelope.
3
+ *
4
+ * The sample generator declares namespaces on each fragment's own root; an
5
+ * envelope reads much better with every declaration hoisted onto
6
+ * `soapenv:Envelope` instead. Sharing one scope across all fragments is what
7
+ * makes that safe: a namespace gets the same prefix everywhere, so hoisting
8
+ * cannot change any name's meaning.
9
+ */
10
+ import { NS } from '../xml/namespaces.js';
11
+ import { prefixForNamespace, RESERVED_PREFIXES } from './prefixes.js';
12
+ /** Prefixes the envelope pins regardless of what a mnemonic would suggest. */
13
+ const PINNED = [
14
+ [NS.XSD, 'xsd'],
15
+ [NS.XSI, 'xsi'],
16
+ [NS.SOAP11_ENC, 'soapenc'],
17
+ ];
18
+ /** Assigns one prefix per namespace URI and records which ones were actually used. */
19
+ export class NamespaceScope {
20
+ byUri = new Map();
21
+ taken = new Set(RESERVED_PREFIXES);
22
+ used = new Map();
23
+ /**
24
+ * @param seedUris namespaces to name up-front, so mnemonics are assigned in a
25
+ * stable order rather than in whatever order fragments happen to use them
26
+ * @param overrides caller-supplied namespace URI → prefix, which always wins
27
+ */
28
+ constructor(seedUris, overrides = {}) {
29
+ const overridden = new Set();
30
+ for (const [uri, prefix] of Object.entries(overrides)) {
31
+ this.byUri.set(uri, prefix);
32
+ this.taken.add(prefix);
33
+ overridden.add(prefix);
34
+ }
35
+ // Pinned prefixes are reserved *for* these namespaces, so `taken` (which
36
+ // holds every reserved prefix) must not block them — only an explicit
37
+ // caller override can.
38
+ for (const [uri, prefix] of PINNED) {
39
+ if (!this.byUri.has(uri) && !overridden.has(prefix)) {
40
+ this.assign(uri, prefix);
41
+ }
42
+ }
43
+ for (const uri of seedUris) {
44
+ if (uri !== '' && !this.byUri.has(uri)) {
45
+ this.assign(uri, prefixForNamespace(uri, this.taken));
46
+ }
47
+ }
48
+ }
49
+ assign(uri, prefix) {
50
+ this.byUri.set(uri, prefix);
51
+ this.taken.add(prefix);
52
+ }
53
+ /** Namespace URI → prefix for every namespace named so far; the generator's `prefixes` map. */
54
+ prefixes() {
55
+ return Object.fromEntries(this.byUri);
56
+ }
57
+ /** The prefix for `uri`, allocating one if needed, and marks it as used. The empty namespace has none. */
58
+ use(uri) {
59
+ if (uri === '') {
60
+ return '';
61
+ }
62
+ let prefix = this.byUri.get(uri);
63
+ if (prefix === undefined) {
64
+ prefix = prefixForNamespace(uri, this.taken);
65
+ this.assign(uri, prefix);
66
+ }
67
+ this.used.set(prefix, uri);
68
+ return prefix;
69
+ }
70
+ /** Records the prefix → URI bindings a generated fragment declared on its own root. */
71
+ markUsed(namespaces) {
72
+ for (const [prefix, uri] of Object.entries(namespaces)) {
73
+ this.assign(uri, prefix);
74
+ this.used.set(prefix, uri);
75
+ }
76
+ }
77
+ /** Prefix → URI for every namespace actually used, in first-use order: the envelope's declarations. */
78
+ declarations() {
79
+ return Object.fromEntries(this.used);
80
+ }
81
+ /** True when `prefix` is declared on the envelope bound to `uri`. */
82
+ declares(prefix, uri) {
83
+ return this.used.get(prefix) === uri;
84
+ }
85
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Deterministic, readable namespace prefixes for generated SOAP envelopes.
3
+ *
4
+ * The established convention names a namespace after a short mnemonic taken from its URI
5
+ * (`http://tempuri.org/` → `tem`), which reads far better in a hand-edited
6
+ * request than `ns1`. This module reproduces that convention from the URI
7
+ * alone, without ever colliding with the prefixes the envelope reserves.
8
+ */
9
+ /** Prefixes an envelope always owns; a mnemonic never takes one of these. */
10
+ export declare const RESERVED_PREFIXES: readonly string[];
11
+ /**
12
+ * Derives a short, readable prefix for `uri` that is not already in `taken`.
13
+ *
14
+ * The mnemonic is the first three letters of the URI's most meaningful token
15
+ * (`http://tempuri.org/` → `tem`, `http://www.dataaccess.com/webservicesserver/`
16
+ * → `web`, `urn:wb:common` → `com`). A mnemonic that is empty, or that would
17
+ * collide with a reserved or already-taken prefix, is disambiguated with a
18
+ * numeric suffix (`web`, `web1`, `web2`, …). `ns1`, `ns2`, … is the fallback
19
+ * when no mnemonic can be derived at all.
20
+ *
21
+ * Pure and deterministic: the same URI and `taken` set always yield the same
22
+ * prefix. The returned prefix is **not** added to `taken`; callers own that.
23
+ */
24
+ export declare function prefixForNamespace(uri: string, taken: ReadonlySet<string>): string;
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Deterministic, readable namespace prefixes for generated SOAP envelopes.
3
+ *
4
+ * The established convention names a namespace after a short mnemonic taken from its URI
5
+ * (`http://tempuri.org/` → `tem`), which reads far better in a hand-edited
6
+ * request than `ns1`. This module reproduces that convention from the URI
7
+ * alone, without ever colliding with the prefixes the envelope reserves.
8
+ */
9
+ /** Prefixes an envelope always owns; a mnemonic never takes one of these. */
10
+ export const RESERVED_PREFIXES = ['soapenv', 'soapenc', 'xsi', 'xsd', 'xs', 'xml', 'xmlns'];
11
+ /** The mnemonic length: three letters, per the convention. */
12
+ const MNEMONIC_LENGTH = 3;
13
+ /**
14
+ * Picks the "most meaningful" token of a namespace URI: the last non-empty
15
+ * path segment of an http(s) URL, else the URL's host without a leading
16
+ * `www.`, else the last non-empty `:`-separated token of a URN.
17
+ */
18
+ function meaningfulToken(uri) {
19
+ const trimmed = uri.trim();
20
+ const schemeSplit = trimmed.indexOf('://');
21
+ if (schemeSplit === -1) {
22
+ // A URN (or anything else without an authority): `urn:wb:common` → `common`.
23
+ const parts = trimmed.split(':').filter((part) => part.length > 0);
24
+ return parts.length === 0 ? '' : (parts[parts.length - 1] ?? '');
25
+ }
26
+ const rest = trimmed.slice(schemeSplit + 3);
27
+ const slash = rest.indexOf('/');
28
+ const host = slash === -1 ? rest : rest.slice(0, slash);
29
+ const path = slash === -1 ? '' : rest.slice(slash + 1);
30
+ const segments = path.split('/').filter((segment) => segment.length > 0);
31
+ if (segments.length > 0) {
32
+ return segments[segments.length - 1] ?? '';
33
+ }
34
+ const hostLabels = host.replace(/^www\./i, '').split('.');
35
+ return hostLabels[0] ?? '';
36
+ }
37
+ /** Reduces a token to letters and digits, keeping only its first dotted part. */
38
+ function mnemonicOf(token) {
39
+ const firstPart = token.split('.')[0] ?? '';
40
+ const letters = firstPart.toLowerCase().replace(/[^a-z0-9]/g, '');
41
+ // A prefix is an NCName, so it can never start with a digit; a token with
42
+ // nothing but digits left yields no mnemonic at all.
43
+ return letters.replace(/^[0-9]+/, '').slice(0, MNEMONIC_LENGTH);
44
+ }
45
+ /**
46
+ * Derives a short, readable prefix for `uri` that is not already in `taken`.
47
+ *
48
+ * The mnemonic is the first three letters of the URI's most meaningful token
49
+ * (`http://tempuri.org/` → `tem`, `http://www.dataaccess.com/webservicesserver/`
50
+ * → `web`, `urn:wb:common` → `com`). A mnemonic that is empty, or that would
51
+ * collide with a reserved or already-taken prefix, is disambiguated with a
52
+ * numeric suffix (`web`, `web1`, `web2`, …). `ns1`, `ns2`, … is the fallback
53
+ * when no mnemonic can be derived at all.
54
+ *
55
+ * Pure and deterministic: the same URI and `taken` set always yield the same
56
+ * prefix. The returned prefix is **not** added to `taken`; callers own that.
57
+ */
58
+ export function prefixForNamespace(uri, taken) {
59
+ const base = mnemonicOf(meaningfulToken(uri));
60
+ if (base.length > 0 && !taken.has(base) && !RESERVED_PREFIXES.includes(base)) {
61
+ return base;
62
+ }
63
+ const stem = base.length > 0 ? base : 'ns';
64
+ for (let counter = 1;; counter += 1) {
65
+ const candidate = `${stem}${counter}`;
66
+ if (!taken.has(candidate) && !RESERVED_PREFIXES.includes(candidate)) {
67
+ return candidate;
68
+ }
69
+ }
70
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * "Recreate Request": merge a freshly generated envelope
3
+ * (the source of structure) with an existing edited envelope (the source of
4
+ * values), by matching elements on a root-relative path of
5
+ * `localName[siblingIndex]` steps rather than by DOM identity.
6
+ */
7
+ /** Options for {@link recreateRequest}. */
8
+ export interface RecreateOptions {
9
+ /** Copy matching leaf values (text and attributes) from the current envelope. */
10
+ readonly keepValues: boolean;
11
+ /** Keep the current `<soapenv:Header>` content verbatim instead of the generated one. */
12
+ readonly keepHeaders: boolean;
13
+ }
14
+ /** Result of {@link recreateRequest}. */
15
+ export interface RecreateResult {
16
+ readonly xml: string;
17
+ /** Leaf values copied from the current envelope. */
18
+ readonly kept: number;
19
+ /** Elements present only in the generated structure. */
20
+ readonly added: number;
21
+ /** Elements present in the current envelope but absent from the generated one. */
22
+ readonly removed: number;
23
+ }
24
+ /**
25
+ * Merges `generatedXml` (structure) with `currentXml` (values), per the
26
+ * "Recreate Request" semantics.
27
+ */
28
+ export declare function recreateRequest(currentXml: string, generatedXml: string, options: RecreateOptions): RecreateResult;