@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,136 @@
1
+ /**
2
+ * Resolves an `EndpointAuth` (which only ever carries a `passwordRef`) into the plaintext shape
3
+ * the engine's `importDefinition`/send path expects. Kept pure — the secret getter is injected —
4
+ * so it needs no Electron and is trivially testable without a real `SecretStore`.
5
+ */
6
+ import { WirebenchError } from '../errors.js';
7
+ /**
8
+ * The message for a `secret-missing` error: in a shared workspace, secret refs travel with the
9
+ * project but values stay in each member's local keychain-backed store, so a teammate who joins
10
+ * sees a ref with nothing behind it on their machine. Named by username when one is known,
11
+ * otherwise a generic fallback — either way it tells the user where to act instead of merely
12
+ * naming the dangling ref.
13
+ */
14
+ export function secretMissingMessage(username) {
15
+ return username !== undefined
16
+ ? `The password for "${username}" is not on this machine — enter it in the authentication settings.`
17
+ : 'A saved password is not on this machine — enter it in the authentication settings.';
18
+ }
19
+ /**
20
+ * Looks up `auth.passwordRef` via `getSecret` and returns the resolved auth. Returns `undefined`
21
+ * when `auth` itself is `undefined` (nothing to resolve). Throws a `secret-missing`
22
+ * `WirebenchError` when a `passwordRef` is set but the store has no value for it — a dangling
23
+ * reference must fail loudly rather than silently sending no credentials.
24
+ */
25
+ export async function resolveEndpointAuth(auth, getSecret) {
26
+ if (!auth) {
27
+ return undefined;
28
+ }
29
+ const resolved = {
30
+ type: auth.type,
31
+ ...(auth.username !== undefined ? { username: auth.username } : {}),
32
+ ...(auth.domain !== undefined ? { domain: auth.domain } : {}),
33
+ ...(auth.workstation !== undefined ? { workstation: auth.workstation } : {}),
34
+ ...(auth.preemptive !== undefined ? { preemptive: auth.preemptive } : {}),
35
+ };
36
+ if (auth.passwordRef === undefined) {
37
+ return resolved;
38
+ }
39
+ const password = await getSecret(auth.passwordRef);
40
+ if (password === undefined) {
41
+ throw new WirebenchError('secret-missing', secretMissingMessage(auth.username), {
42
+ details: { ref: auth.passwordRef },
43
+ });
44
+ }
45
+ return { ...resolved, password };
46
+ }
47
+ /**
48
+ * Converts resolved endpoint credentials into the engine's `SendAuth`, or `undefined` when there
49
+ * is nothing to send (no auth configured, `type: 'none'`, or an incomplete pair). Basic defaults
50
+ * to preemptive; a non-preemptive send waits for the 401 challenge. Shared by every host so a
51
+ * SOAP request authenticates the same way from the app and from a pipeline.
52
+ */
53
+ export function toSendAuth(auth) {
54
+ if (auth === undefined || auth.type === 'none') {
55
+ return undefined;
56
+ }
57
+ if (auth.username === undefined || auth.password === undefined) {
58
+ return undefined;
59
+ }
60
+ if (auth.type === 'ntlm') {
61
+ return {
62
+ type: 'ntlm',
63
+ username: auth.username,
64
+ password: auth.password,
65
+ ...(auth.domain !== undefined ? { domain: auth.domain } : {}),
66
+ ...(auth.workstation !== undefined ? { workstation: auth.workstation } : {}),
67
+ };
68
+ }
69
+ return { type: 'basic', username: auth.username, password: auth.password, preemptive: auth.preemptive !== false };
70
+ }
71
+ /**
72
+ * Resolves any {@link AuthConfig} into the engine's `SendAuth` — the shape that carries values
73
+ * rather than references.
74
+ *
75
+ * The token-bearing schemes are resolved here; OAuth2 is not, because obtaining a token is a
76
+ * network exchange with its own cache and its own browser flow. The caller passes `accessToken`
77
+ * for an OAuth2 configuration, having got it from `oauth2.ts`.
78
+ *
79
+ * `inherit` and `none` resolve to no credentials at all: `inherit` should already have been
80
+ * resolved by `resolveAuthChain` before this is called, and reaching here means nothing in the
81
+ * chain configured anything.
82
+ *
83
+ * @throws WirebenchError `secret-missing` when a reference is set but the store has no value for
84
+ * it — a dangling reference must fail loudly rather than quietly sending no credentials.
85
+ */
86
+ export async function resolveAuthConfig(auth, getSecret, options = {}) {
87
+ if (auth === undefined) {
88
+ return undefined;
89
+ }
90
+ switch (auth.type) {
91
+ case 'basic':
92
+ case 'ntlm': {
93
+ const resolved = await resolveEndpointAuth(auth, getSecret);
94
+ if (resolved === undefined || resolved.type === 'none') {
95
+ return undefined;
96
+ }
97
+ const password = resolved.password ?? '';
98
+ return resolved.type === 'basic'
99
+ ? { type: 'basic', username: resolved.username ?? '', password, preemptive: resolved.preemptive ?? true }
100
+ : {
101
+ type: 'ntlm',
102
+ username: resolved.username ?? '',
103
+ password,
104
+ ...(resolved.domain !== undefined ? { domain: resolved.domain } : {}),
105
+ ...(resolved.workstation !== undefined ? { workstation: resolved.workstation } : {}),
106
+ };
107
+ }
108
+ case 'bearer': {
109
+ const token = await requireSecret(auth.tokenRef, getSecret);
110
+ return token === undefined
111
+ ? undefined
112
+ : { type: 'bearer', token, ...(auth.scheme !== undefined ? { scheme: auth.scheme } : {}) };
113
+ }
114
+ case 'api-key': {
115
+ const value = await requireSecret(auth.valueRef, getSecret);
116
+ return value === undefined ? undefined : { type: 'api-key', name: auth.name, value, in: auth.in };
117
+ }
118
+ case 'oauth2':
119
+ return options.accessToken === undefined ? undefined : { type: 'oauth2', accessToken: options.accessToken };
120
+ default:
121
+ return undefined;
122
+ }
123
+ }
124
+ /** One reference resolved, or `undefined` when the scheme has none configured yet. */
125
+ async function requireSecret(ref, getSecret) {
126
+ if (ref === undefined || ref === '') {
127
+ return undefined;
128
+ }
129
+ const value = await getSecret(ref);
130
+ if (value === undefined) {
131
+ throw new WirebenchError('secret-missing', `Secret ${ref} was not found in the secret store.`, {
132
+ details: { ref },
133
+ });
134
+ }
135
+ return value;
136
+ }
@@ -0,0 +1,141 @@
1
+ /**
2
+ * Turns a saved request plus the settings around it into the {@link SoapSendInput} the
3
+ * transport actually receives.
4
+ *
5
+ * This is the single place the three layers of configuration meet, and the precedence between
6
+ * them is fixed here rather than in the desktop app: the request's own property wins, then the
7
+ * project's setting, then the user's preference (which is also the engine default). A property
8
+ * left unset in the request is therefore never "off" — it is "inherit".
9
+ */
10
+ import type { Preferences } from './project/preferences.js';
11
+ import type { Attachment, HeaderEntry, ProjectSettings, RequestProperties } from './project/model.js';
12
+ import type { AttachmentResolver } from './soap/mime/types.js';
13
+ import type { SendAuth, SoapSendInput } from './types.js';
14
+ import type { ProxyOptions, TlsOptions } from './http/types.js';
15
+ import type { FileResolver } from './rest/body.js';
16
+ import type { KeyValueEntry, RestBody, RestMethod, RestRequestSettings } from './rest/model.js';
17
+ import type { Cookie } from './rest/response.js';
18
+ import type { RestSendInput } from './rest/send.js';
19
+ import type { GrpcMethodKind, GrpcRequestSettings } from './grpc/model.js';
20
+ import type { GrpcSendInput } from './grpc/send.js';
21
+ /** The parts of a request {@link toSendInput} reads. */
22
+ export interface SendRequestInput {
23
+ readonly properties: RequestProperties;
24
+ readonly soapVersion: '1.1' | '1.2';
25
+ readonly soapAction?: string;
26
+ readonly headers: readonly HeaderEntry[];
27
+ readonly envelopeXml: string;
28
+ }
29
+ /**
30
+ * How the send is to read attachment and inline-file bytes. The engine never opens a file
31
+ * on its own, so without this the request's attachments (and its inline-file property) are
32
+ * left inert; the desktop main process supplies `createFileAttachmentResolver`.
33
+ */
34
+ export interface AttachmentResolvers {
35
+ readonly resolver: AttachmentResolver;
36
+ /** Reads one file for "Enable Inline Files". */
37
+ readonly resolveFile?: (path: string) => Promise<Uint8Array>;
38
+ /** The project's resource root, for relative inline-file references. */
39
+ readonly resourceRoot?: string;
40
+ }
41
+ /** Everything {@link toSendInput} needs beyond the request itself. */
42
+ export interface ToSendInputArgs {
43
+ readonly request: SendRequestInput;
44
+ /** The already-resolved endpoint URL (environment overrides applied). */
45
+ readonly endpoint: string;
46
+ readonly preferences?: Preferences;
47
+ readonly projectSettings?: Pick<ProjectSettings, 'defaultTimeoutMs'>;
48
+ /** The request's attachments; only acted on together with {@link attachmentResolvers}. */
49
+ readonly attachments?: readonly Attachment[];
50
+ readonly attachmentResolvers?: AttachmentResolvers;
51
+ }
52
+ /**
53
+ * Builds the send input for one request.
54
+ *
55
+ * Timeout precedence is request > project > preference. The TLS floor (`ssl.minVersion`) and
56
+ * the HTTP/2 offer come from preferences alone. Headers are the request's own, plus a
57
+ * `User-Agent` from preferences when the request does not set one, plus `Accept-Encoding` when
58
+ * response compression is enabled and `Connection: close` when connection reuse is disabled.
59
+ * Request-body gzip is requested via `compressBody`; the transport does the compressing so the
60
+ * `Content-Length` it computes describes the bytes that are actually sent.
61
+ *
62
+ * The MTOM/attachment properties are mapped only when `attachmentResolvers` says how bytes
63
+ * can be read; without a resolver there is nothing the transport could do with them, and a
64
+ * half-configured send would silently drop parts.
65
+ *
66
+ * @param args the request, its resolved endpoint, and the preferences/project settings around it
67
+ */
68
+ export declare function toSendInput(args: ToSendInputArgs): SoapSendInput;
69
+ /** The parts of a REST request {@link toRestSendInput} reads. */
70
+ export interface RestSendRequestInput {
71
+ readonly method: RestMethod;
72
+ readonly url: string;
73
+ readonly pathParams: readonly KeyValueEntry[];
74
+ readonly query: readonly KeyValueEntry[];
75
+ readonly headers: readonly KeyValueEntry[];
76
+ readonly body: RestBody;
77
+ readonly settings: RestRequestSettings;
78
+ }
79
+ /** Everything {@link toRestSendInput} needs beyond the request itself. */
80
+ export interface ToRestSendInputArgs {
81
+ readonly request: RestSendRequestInput;
82
+ /** The API's effective base URL, environment override applied and properties expanded. */
83
+ readonly baseUrl: string;
84
+ /** The API's own settings, which a request inherits where it sets nothing. */
85
+ readonly apiSettings?: RestRequestSettings;
86
+ readonly preferences?: Preferences;
87
+ readonly projectSettings?: Pick<ProjectSettings, 'defaultTimeoutMs'>;
88
+ /** Resolved credentials; the host turns `secretRef`s into values and tokens into `oauth2`. */
89
+ readonly auth?: SendAuth;
90
+ /** Cookies already matched against the URL, when the request asks for them. */
91
+ readonly cookies?: readonly Cookie[];
92
+ /** How a multipart file part or a binary body is read. */
93
+ readonly resolveFile?: FileResolver;
94
+ readonly tls?: TlsOptions;
95
+ readonly proxy?: ProxyOptions;
96
+ readonly signal?: AbortSignal;
97
+ }
98
+ /**
99
+ * Builds the send input for one REST request.
100
+ *
101
+ * Precedence is request → API → project → preference, the same ladder a SOAP request's properties
102
+ * climb, and for the same reason: a setting the request leaves unset means *inherit*, never *off*.
103
+ * The headers the host adds on the request's behalf — `User-Agent`, `Accept-Encoding`, `Connection`,
104
+ * a default `Accept` — are passed separately from the request's own, so `rest/send.ts` can let the
105
+ * user's typed header win without having to guess which came from where.
106
+ */
107
+ export declare function toRestSendInput(args: ToRestSendInputArgs): RestSendInput;
108
+ /** The parts of a gRPC request {@link toGrpcSendInput} reads. */
109
+ export interface GrpcSendRequestInput {
110
+ readonly service: string;
111
+ readonly method: string;
112
+ readonly methodKind: GrpcMethodKind;
113
+ readonly metadata: readonly KeyValueEntry[];
114
+ readonly settings: GrpcRequestSettings;
115
+ }
116
+ /** Everything {@link toGrpcSendInput} needs beyond the request itself. */
117
+ export interface ToGrpcSendInputArgs {
118
+ readonly request: GrpcSendRequestInput;
119
+ /** The API's effective target, environment override applied and properties expanded. */
120
+ readonly target: string;
121
+ readonly tls: boolean;
122
+ /** The API's own metadata rows, which a request row of the same key overrides. */
123
+ readonly apiMetadata?: readonly KeyValueEntry[];
124
+ /** The API's own settings, which a request inherits where it sets nothing. */
125
+ readonly apiSettings?: GrpcRequestSettings;
126
+ readonly preferences?: Preferences;
127
+ readonly projectSettings?: Pick<ProjectSettings, 'defaultTimeoutMs'>;
128
+ /** Resolved credentials; the host turns `secretRef`s into values and tokens into `oauth2`. */
129
+ readonly auth?: SendAuth;
130
+ readonly tlsOptions?: TlsOptions;
131
+ readonly signal?: AbortSignal;
132
+ }
133
+ /**
134
+ * Builds the transport input for one gRPC call, everything but the encoded messages.
135
+ *
136
+ * The same request → API → project → preference ladder as a REST request, and the same TLS rule:
137
+ * the floor comes from preferences, and the host merges trust anchors, the client identity and the
138
+ * per-request trust decision on top. Metadata rows are the API's first and then the request's, so
139
+ * a repeated key resolves to the request's value on the wire.
140
+ */
141
+ export declare function toGrpcSendInput(args: ToGrpcSendInputArgs): Omit<GrpcSendInput, 'messages'>;
@@ -0,0 +1,228 @@
1
+ /**
2
+ * Turns a saved request plus the settings around it into the {@link SoapSendInput} the
3
+ * transport actually receives.
4
+ *
5
+ * This is the single place the three layers of configuration meet, and the precedence between
6
+ * them is fixed here rather than in the desktop app: the request's own property wins, then the
7
+ * project's setting, then the user's preference (which is also the engine default). A property
8
+ * left unset in the request is therefore never "off" — it is "inherit".
9
+ */
10
+ import { DEFAULT_PREFERENCES } from './project/preferences.js';
11
+ import { soapActionHeaders } from './soap/soap-action.js';
12
+ import { prettyPrint, removeEmptyContent, stripWhitespaces } from './soap/transforms.js';
13
+ /** Case-insensitive lookup over a header map. */
14
+ function hasHeader(headers, name) {
15
+ const lower = name.toLowerCase();
16
+ return Object.keys(headers).some((key) => key.toLowerCase() === lower);
17
+ }
18
+ /** Whether `encoding` is (a spelling of) the transport's own default, so nothing needs reflecting. */
19
+ function isDefaultEncoding(encoding) {
20
+ const normalized = encoding.trim().toLowerCase();
21
+ return normalized.length === 0 || normalized === 'utf-8' || normalized === 'utf8';
22
+ }
23
+ /**
24
+ * Applies the envelope transforms a request asks for, in a fixed order: content removal
25
+ * first (so whitespace and formatting decisions see the final element set), then whitespace
26
+ * stripping, then pretty printing. Entitizing is not here — it happens during property
27
+ * expansion; see `soap/transforms.ts`.
28
+ */
29
+ function transformEnvelope(xml, properties, indentWidth) {
30
+ let out = xml;
31
+ if (properties.removeEmptyContent) {
32
+ out = removeEmptyContent(out);
33
+ }
34
+ if (properties.stripWhitespaces) {
35
+ out = stripWhitespaces(out);
36
+ }
37
+ if (properties.prettyPrint) {
38
+ out = prettyPrint(out, indentWidth);
39
+ }
40
+ return out;
41
+ }
42
+ /**
43
+ * Builds the send input for one request.
44
+ *
45
+ * Timeout precedence is request > project > preference. The TLS floor (`ssl.minVersion`) and
46
+ * the HTTP/2 offer come from preferences alone. Headers are the request's own, plus a
47
+ * `User-Agent` from preferences when the request does not set one, plus `Accept-Encoding` when
48
+ * response compression is enabled and `Connection: close` when connection reuse is disabled.
49
+ * Request-body gzip is requested via `compressBody`; the transport does the compressing so the
50
+ * `Content-Length` it computes describes the bytes that are actually sent.
51
+ *
52
+ * The MTOM/attachment properties are mapped only when `attachmentResolvers` says how bytes
53
+ * can be read; without a resolver there is nothing the transport could do with them, and a
54
+ * half-configured send would silently drop parts.
55
+ *
56
+ * @param args the request, its resolved endpoint, and the preferences/project settings around it
57
+ */
58
+ export function toSendInput(args) {
59
+ const preferences = args.preferences ?? DEFAULT_PREFERENCES;
60
+ const { properties } = args.request;
61
+ const headers = {};
62
+ for (const header of args.request.headers) {
63
+ headers[header.name] = header.value;
64
+ }
65
+ if (!hasHeader(headers, 'user-agent') && preferences.http.userAgent.length > 0) {
66
+ headers['User-Agent'] = preferences.http.userAgent;
67
+ }
68
+ if (preferences.http.responseCompression && !hasHeader(headers, 'accept-encoding')) {
69
+ headers['Accept-Encoding'] = 'gzip, deflate';
70
+ }
71
+ if (preferences.http.closeConnections && !hasHeader(headers, 'connection')) {
72
+ headers['Connection'] = 'close';
73
+ }
74
+ // A non-default `encoding` property changes what bytes actually go on the wire (see
75
+ // `encodeBody` in `send.ts`), so the `Content-Type` charset must say the same thing — a
76
+ // request sent as ISO-8859-1 but declared UTF-8 would decode wrong at the far end. This is
77
+ // skipped for the default encoding so a request with no opinion keeps getting the transport's
78
+ // own `UTF-8` charset, computed downstream exactly as it always has been.
79
+ if (!isDefaultEncoding(properties.encoding) && !hasHeader(headers, 'content-type')) {
80
+ headers['Content-Type'] = soapActionHeaders(args.request.soapVersion, args.request.soapAction, {
81
+ ...(properties.skipSoapAction !== undefined ? { skipSoapAction: properties.skipSoapAction } : {}),
82
+ charset: properties.encoding,
83
+ }).contentType;
84
+ }
85
+ const timeoutMs = properties.timeoutMs ?? args.projectSettings?.defaultTimeoutMs ?? preferences.http.socketTimeoutMs;
86
+ const resolvers = args.attachmentResolvers;
87
+ const attachmentOptions = resolvers === undefined
88
+ ? undefined
89
+ : {
90
+ enableMtom: properties.enableMtom,
91
+ forceMtom: properties.forceMtom,
92
+ disableMultiparts: properties.disableMultiparts,
93
+ encodeAttachments: properties.encodeAttachments,
94
+ enableInlineFiles: properties.enableInlineFiles,
95
+ inlineResponseAttachments: properties.inlineResponseAttachments,
96
+ expandMtomAttachments: properties.expandMtomAttachments,
97
+ resolver: resolvers.resolver,
98
+ ...(resolvers.resolveFile !== undefined ? { resolveFile: resolvers.resolveFile } : {}),
99
+ ...(resolvers.resourceRoot !== undefined ? { resourceRoot: resolvers.resourceRoot } : {}),
100
+ };
101
+ return {
102
+ endpoint: args.endpoint,
103
+ envelopeXml: transformEnvelope(args.request.envelopeXml, properties, preferences.editor.tabSize),
104
+ soapVersion: args.request.soapVersion,
105
+ ...(args.request.soapAction !== undefined ? { soapAction: args.request.soapAction } : {}),
106
+ headers,
107
+ timeoutMs,
108
+ encoding: properties.encoding,
109
+ followRedirects: properties.followRedirects,
110
+ skipSoapAction: properties.skipSoapAction,
111
+ ...(properties.maxSizeBytes !== undefined ? { maxSizeBytes: properties.maxSizeBytes } : {}),
112
+ ...(properties.bindAddress !== undefined && properties.bindAddress.length > 0
113
+ ? { localAddress: properties.bindAddress }
114
+ : {}),
115
+ ...(preferences.http.requestCompression === 'gzip' ? { compressBody: 'gzip' } : {}),
116
+ ...(preferences.http.allowH2 ? { allowH2: true } : {}),
117
+ // The minimum protocol version is a floor the user sets once; everything else in `tls`
118
+ // (trust anchors, the client identity, a per-endpoint trust decision) is resolved in the
119
+ // desktop's main process, which reads files and secrets, and merged onto this.
120
+ tls: { minVersion: preferences.ssl.minVersion },
121
+ ...(properties.entitizeProperties ? { entitize: true } : {}),
122
+ ...(attachmentOptions !== undefined ? { attachments: args.attachments ?? [], attachmentOptions } : {}),
123
+ };
124
+ }
125
+ /** The first of `values` that is not `undefined`, which is what "inherit" means. */
126
+ function inherited(...values) {
127
+ return values.find((value) => value !== undefined);
128
+ }
129
+ /**
130
+ * Builds the send input for one REST request.
131
+ *
132
+ * Precedence is request → API → project → preference, the same ladder a SOAP request's properties
133
+ * climb, and for the same reason: a setting the request leaves unset means *inherit*, never *off*.
134
+ * The headers the host adds on the request's behalf — `User-Agent`, `Accept-Encoding`, `Connection`,
135
+ * a default `Accept` — are passed separately from the request's own, so `rest/send.ts` can let the
136
+ * user's typed header win without having to guess which came from where.
137
+ */
138
+ export function toRestSendInput(args) {
139
+ const preferences = args.preferences ?? DEFAULT_PREFERENCES;
140
+ const request = args.request;
141
+ const api = args.apiSettings ?? {};
142
+ const defaultHeaders = {};
143
+ if (preferences.http.userAgent.length > 0) {
144
+ defaultHeaders['User-Agent'] = preferences.http.userAgent;
145
+ }
146
+ if (preferences.http.responseCompression) {
147
+ defaultHeaders['Accept-Encoding'] = 'gzip, deflate, br';
148
+ }
149
+ if (preferences.http.closeConnections) {
150
+ defaultHeaders.Connection = 'close';
151
+ }
152
+ if (preferences.rest.defaultAccept.length > 0) {
153
+ defaultHeaders.Accept = preferences.rest.defaultAccept;
154
+ }
155
+ const timeoutMs = inherited(request.settings.timeoutMs, api.timeoutMs, args.projectSettings?.defaultTimeoutMs) ??
156
+ preferences.http.socketTimeoutMs;
157
+ const followRedirects = inherited(request.settings.followRedirects, api.followRedirects) ?? preferences.rest.followRedirects;
158
+ const maxRedirects = inherited(request.settings.maxRedirects, api.maxRedirects) ?? preferences.rest.maxRedirects;
159
+ const keepBodyOnRedirect = inherited(request.settings.keepBodyOnRedirect, api.keepBodyOnRedirect);
160
+ const encodeUrl = inherited(request.settings.encodeUrl, api.encodeUrl);
161
+ const maxSizeBytes = inherited(request.settings.maxSizeBytes, api.maxSizeBytes);
162
+ const bindAddress = inherited(request.settings.bindAddress, api.bindAddress);
163
+ return {
164
+ baseUrl: args.baseUrl,
165
+ request: {
166
+ method: request.method,
167
+ url: request.url,
168
+ pathParams: request.pathParams,
169
+ query: request.query,
170
+ headers: request.headers,
171
+ body: request.body,
172
+ },
173
+ settings: {
174
+ timeoutMs,
175
+ followRedirects,
176
+ maxRedirects,
177
+ ...(keepBodyOnRedirect !== undefined ? { keepBodyOnRedirect } : {}),
178
+ ...(encodeUrl !== undefined ? { encodeUrl } : {}),
179
+ ...(maxSizeBytes !== undefined ? { maxSizeBytes } : {}),
180
+ ...(bindAddress !== undefined && bindAddress.length > 0 ? { localAddress: bindAddress } : {}),
181
+ ...(preferences.http.allowH2 ? { allowH2: true } : {}),
182
+ },
183
+ defaultHeaders,
184
+ ...(args.auth !== undefined ? { auth: args.auth } : {}),
185
+ ...(args.cookies !== undefined ? { cookies: args.cookies } : {}),
186
+ // As for SOAP: the TLS floor is the user's one-off choice, and everything else in `tls` is
187
+ // resolved by the host, which reads files and secrets, and merged onto this.
188
+ tls: { minVersion: preferences.ssl.minVersion, ...args.tls },
189
+ ...(args.proxy !== undefined ? { proxy: args.proxy } : {}),
190
+ ...(args.resolveFile !== undefined ? { resolveFile: args.resolveFile } : {}),
191
+ ...(args.signal !== undefined ? { signal: args.signal } : {}),
192
+ };
193
+ }
194
+ /**
195
+ * Builds the transport input for one gRPC call, everything but the encoded messages.
196
+ *
197
+ * The same request → API → project → preference ladder as a REST request, and the same TLS rule:
198
+ * the floor comes from preferences, and the host merges trust anchors, the client identity and the
199
+ * per-request trust decision on top. Metadata rows are the API's first and then the request's, so
200
+ * a repeated key resolves to the request's value on the wire.
201
+ */
202
+ export function toGrpcSendInput(args) {
203
+ const preferences = args.preferences ?? DEFAULT_PREFERENCES;
204
+ const request = args.request;
205
+ const api = args.apiSettings ?? {};
206
+ const defaultMetadata = {};
207
+ if (preferences.http.userAgent.length > 0) {
208
+ defaultMetadata['user-agent'] = preferences.http.userAgent;
209
+ }
210
+ const timeoutMs = inherited(request.settings.timeoutMs, api.timeoutMs, args.projectSettings?.defaultTimeoutMs) ??
211
+ preferences.http.socketTimeoutMs;
212
+ const maxSizeBytes = inherited(request.settings.maxSizeBytes, api.maxSizeBytes);
213
+ const bindAddress = inherited(request.settings.bindAddress, api.bindAddress);
214
+ return {
215
+ target: args.target,
216
+ tls: args.tls,
217
+ service: request.service,
218
+ method: request.method,
219
+ metadata: [...(args.apiMetadata ?? []), ...request.metadata],
220
+ defaultMetadata,
221
+ timeoutMs,
222
+ ...(maxSizeBytes !== undefined ? { maxSizeBytes } : {}),
223
+ ...(bindAddress !== undefined && bindAddress.length > 0 ? { localAddress: bindAddress } : {}),
224
+ ...(args.auth !== undefined ? { auth: args.auth } : {}),
225
+ tlsOptions: { minVersion: preferences.ssl.minVersion, ...args.tlsOptions },
226
+ ...(args.signal !== undefined ? { signal: args.signal } : {}),
227
+ };
228
+ }
package/dist/send.d.ts ADDED
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Sends an already-built SOAP envelope over HTTP and structurally parses the
3
+ * response: SOAP version, fault, or "not actually SOAP" detection.
4
+ */
5
+ import type { Dispatcher } from 'undici';
6
+ import type { PropertyScopes } from './project/properties.js';
7
+ import type { SoapExchange, SoapSendInput } from './types.js';
8
+ /**
9
+ * Sends `input.envelopeXml` to `input.endpoint` over HTTP, computing the
10
+ * `Content-Type`/`SOAPAction` headers for `input.soapVersion` and merging in
11
+ * any caller-supplied `input.headers`, which override the computed ones.
12
+ *
13
+ * HTTP-layer failures (timeout, abort, DNS, TLS, ...) propagate as
14
+ * {@link HttpError}; a non-2xx HTTP status is not an error and is returned
15
+ * as a normal exchange for the caller to inspect.
16
+ *
17
+ * When `input.attachmentOptions` is given, the envelope additionally goes through the
18
+ * attachment pipeline. Its stages are split across the send: inline `file:` references are
19
+ * substituted up front, with property expansion (they are envelope text, and WS-Security must
20
+ * sign what is actually sent), while MTOM and then SwA package the finished envelope after the
21
+ * WS-Addressing and WS-Security rewrites. A `multipart/related` response is unwrapped into its
22
+ * envelope plus `response.attachments`. See `soap/mime/send-pipeline.ts`.
23
+ *
24
+ * The full request order is: property expansion → inline files → WS-Addressing → WS-Security →
25
+ * MTOM → SwA → gzip.
26
+ *
27
+ * When `options.scopes` is given, `input.endpoint`, `input.envelopeXml`,
28
+ * `input.soapAction` and every header name/value are first passed through
29
+ * {@link expandSendInput}; any expressions that could not be resolved are
30
+ * left verbatim in the sent request and reported on the returned exchange's
31
+ * `unresolved` field, rather than failing the send.
32
+ *
33
+ * When `input.auth` is Basic, the `Authorization` header is either sent up front
34
+ * (`preemptive`) or added on a single retry after the server answers the first attempt
35
+ * with a 401 `Basic` challenge; both attempts share the one `timeoutMs` budget (if the first
36
+ * attempt already used it all, the challenge is reported as-is, `attempts: 1`, rather than
37
+ * firing a retry doomed to time out immediately) and the returned exchange is the final attempt
38
+ * actually made. A caller-supplied `Authorization` header always wins.
39
+ *
40
+ * When `input.auth` is NTLM, the send instead runs the three-leg NTLMv2 handshake over one
41
+ * dedicated connection (`http/auth/ntlm-transport.ts`): a bare bodyless leg, the Type 1
42
+ * message, then the Type 3 message carrying the real body. The returned exchange is the
43
+ * final leg, `durationMs` sums every leg, and a server that never challenges short-circuits
44
+ * after the first (`attempts: 1`).
45
+ *
46
+ * @param input the endpoint, envelope and transport options to send
47
+ * @param options an injected `dispatcher` (tests), `now` clock, and/or property `scopes`
48
+ */
49
+ export declare function sendSoapRequest(input: SoapSendInput, options?: {
50
+ readonly dispatcher?: Dispatcher;
51
+ readonly now?: () => number;
52
+ readonly scopes?: PropertyScopes;
53
+ }): Promise<SoapExchange>;