@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,61 @@
1
+ /**
2
+ * Turning a {@link RestBody} into the bytes and `Content-Type` that go on the wire.
3
+ *
4
+ * Every kind is encoded here and nowhere else, so what the cURL export shows and what the
5
+ * transport sends come from one function. Files are never read by the engine itself: a
6
+ * {@link FileResolver} is injected, exactly as the SOAP attachment path does it, so the host keeps
7
+ * ownership of the project directory and its cache (ADR-0005).
8
+ */
9
+ import type { AttachmentSource } from '../project/model.js';
10
+ import type { KeyValueEntry, RawLanguage, RestBody } from './model.js';
11
+ /** Reads the bytes behind one file reference. Rejects when the file cannot be read. */
12
+ export type FileResolver = (source: AttachmentSource) => Promise<Uint8Array>;
13
+ /** Options for {@link encodeRestBody}. */
14
+ export interface EncodeBodyOptions {
15
+ /** How a `multipart` or `binary` body's files are read. Required for those kinds only. */
16
+ readonly resolveFile?: FileResolver;
17
+ /** Charset for a raw or form body. Default `utf-8`; see `soap/charset.ts` for the labels. */
18
+ readonly charset?: string;
19
+ /** Fixed multipart boundary; a random one is generated otherwise. Tests inject it. */
20
+ readonly boundary?: string;
21
+ readonly signal?: AbortSignal;
22
+ }
23
+ /** What one body contributes to the request: its bytes, and the type that describes them. */
24
+ export interface EncodedBody {
25
+ /** Absent for `{kind: 'none'}` — not an empty array, which would still send `Content-Length: 0`. */
26
+ readonly bytes?: Uint8Array;
27
+ /** Absent when the body does not imply one; a header the request sets itself always wins. */
28
+ readonly contentType?: string;
29
+ }
30
+ /** The `Content-Type` a raw body implies when neither the body nor a header names one. */
31
+ export declare function rawContentType(language: RawLanguage, declared: string | undefined, charset?: string): string;
32
+ /**
33
+ * `application/x-www-form-urlencoded`, per the URL-encoded form serialisation every HTML form and
34
+ * every server that parses one uses: space becomes `+`, everything else percent-encodes, and a
35
+ * disabled row is simply not there.
36
+ */
37
+ export declare function encodeFormFields(fields: readonly KeyValueEntry[]): string;
38
+ /**
39
+ * Encodes one request body.
40
+ *
41
+ * `{kind: 'none'}` produces no bytes at all rather than an empty buffer, so a `GET` does not
42
+ * announce a zero-length body it does not have. Every other kind produces both bytes and the
43
+ * `Content-Type` that describes them; the caller decides whether a header the request set itself
44
+ * overrides it (`rest/send.ts` does).
45
+ *
46
+ * @throws WirebenchError `rest-file-unresolved` when a file part or binary body has no resolver
47
+ */
48
+ export declare function encodeRestBody(body: RestBody, options?: EncodeBodyOptions): Promise<EncodedBody>;
49
+ /**
50
+ * XML- or JSON-escapes a value being substituted into a body, for the *escape properties* setting.
51
+ *
52
+ * Only the characters that would otherwise change the document's structure are touched. A JSON
53
+ * body gets JSON string escaping (without the surrounding quotes, since the value is substituted
54
+ * inside them); an XML body gets the five predefined entities; anything else is left alone,
55
+ * because there is no general escape for `text/plain`.
56
+ */
57
+ export declare function escapeForLanguage(value: string, language: RawLanguage | 'form'): string;
58
+ /** The language a body's escaping follows, for {@link escapeForLanguage}. */
59
+ export declare function bodyLanguage(body: RestBody): RawLanguage | 'form' | undefined;
60
+ /** The media type of an encoded body, without its parameters; `undefined` when it has none. */
61
+ export declare function encodedMediaType(encoded: EncodedBody): string | undefined;
@@ -0,0 +1,184 @@
1
+ /**
2
+ * Turning a {@link RestBody} into the bytes and `Content-Type` that go on the wire.
3
+ *
4
+ * Every kind is encoded here and nowhere else, so what the cURL export shows and what the
5
+ * transport sends come from one function. Files are never read by the engine itself: a
6
+ * {@link FileResolver} is injected, exactly as the SOAP attachment path does it, so the host keeps
7
+ * ownership of the project directory and its cache (ADR-0005).
8
+ */
9
+ import { randomBytes } from 'node:crypto';
10
+ import { WirebenchError } from '../errors.js';
11
+ import { encodeBody } from '../soap/charset.js';
12
+ import { mediaTypeOf } from '../soap/mime/multipart.js';
13
+ import { RAW_LANGUAGE_CONTENT_TYPES } from './model.js';
14
+ const CRLF = '\r\n';
15
+ /** A fresh multipart boundary: long, random, and unable to occur in base64 or text. */
16
+ function newBoundary() {
17
+ return `----WirebenchBoundary${randomBytes(16).toString('hex')}`;
18
+ }
19
+ /** The `Content-Type` a raw body implies when neither the body nor a header names one. */
20
+ export function rawContentType(language, declared, charset) {
21
+ const base = declared ?? RAW_LANGUAGE_CONTENT_TYPES[language];
22
+ if (charset === undefined || /charset=/i.test(base)) {
23
+ return base;
24
+ }
25
+ const normalized = charset.toLowerCase();
26
+ return normalized === 'utf-8' || normalized === 'utf8' ? base : `${base}; charset=${charset}`;
27
+ }
28
+ /**
29
+ * `application/x-www-form-urlencoded`, per the URL-encoded form serialisation every HTML form and
30
+ * every server that parses one uses: space becomes `+`, everything else percent-encodes, and a
31
+ * disabled row is simply not there.
32
+ */
33
+ export function encodeFormFields(fields) {
34
+ return fields
35
+ .filter((field) => field.enabled)
36
+ .map((field) => `${formEncode(field.name)}=${formEncode(field.value)}`)
37
+ .join('&');
38
+ }
39
+ function formEncode(value) {
40
+ return encodeURIComponent(value)
41
+ .replace(/[!'()*]/g, (c) => `%${c.charCodeAt(0).toString(16).toUpperCase()}`)
42
+ .replace(/%20/g, '+');
43
+ }
44
+ /** Escapes a `filename`/`name` parameter for a `Content-Disposition` header (RFC 7578 §4.2). */
45
+ function quoted(value) {
46
+ return `"${value.replace(/[\r\n"]/g, '_')}"`;
47
+ }
48
+ /** The file name a part advertises: the one it was given, else the last segment of its path. */
49
+ function partFileName(part) {
50
+ if (part.fileName !== undefined) {
51
+ return part.fileName;
52
+ }
53
+ return part.source.kind === 'path' ? (part.source.path.split(/[\\/]/).pop() ?? part.name) : part.name;
54
+ }
55
+ /**
56
+ * Builds a `multipart/form-data` body (RFC 7578).
57
+ *
58
+ * Parts are written in author order, text before file only if that is how they were ordered — some
59
+ * services genuinely require a field before the file it describes, so nothing is reordered here.
60
+ * A text part gets a `Content-Type` only when it asked for one, since a server that sees none
61
+ * treats the part as `text/plain`, which is what an unadorned field means.
62
+ */
63
+ async function encodeMultipart(parts, options) {
64
+ const boundary = options.boundary ?? newBoundary();
65
+ const chunks = [];
66
+ const push = (text) => {
67
+ chunks.push(new TextEncoder().encode(text));
68
+ };
69
+ for (const part of parts) {
70
+ if (!part.enabled) {
71
+ continue;
72
+ }
73
+ options.signal?.throwIfAborted();
74
+ if (part.kind === 'text') {
75
+ push(`--${boundary}${CRLF}Content-Disposition: form-data; name=${quoted(part.name)}${CRLF}`);
76
+ push(part.contentType !== undefined ? `Content-Type: ${part.contentType}${CRLF}${CRLF}` : CRLF);
77
+ chunks.push(encodeBody(part.value, options.charset));
78
+ push(CRLF);
79
+ continue;
80
+ }
81
+ const resolveFile = options.resolveFile;
82
+ if (resolveFile === undefined) {
83
+ throw new WirebenchError('rest-file-unresolved', 'A multipart file part needs a file resolver', {
84
+ details: { part: part.name },
85
+ });
86
+ }
87
+ const bytes = await resolveFile(part.source);
88
+ push(`--${boundary}${CRLF}Content-Disposition: form-data; name=${quoted(part.name)}; filename=${quoted(partFileName(part))}${CRLF}Content-Type: ${part.contentType ?? 'application/octet-stream'}${CRLF}${CRLF}`);
89
+ chunks.push(bytes);
90
+ push(CRLF);
91
+ }
92
+ push(`--${boundary}--${CRLF}`);
93
+ return { bytes: concat(chunks), contentType: `multipart/form-data; boundary=${boundary}` };
94
+ }
95
+ /** Joins byte chunks into one buffer, allocating exactly once. */
96
+ function concat(chunks) {
97
+ let total = 0;
98
+ for (const chunk of chunks) {
99
+ total += chunk.byteLength;
100
+ }
101
+ const out = new Uint8Array(total);
102
+ let offset = 0;
103
+ for (const chunk of chunks) {
104
+ out.set(chunk, offset);
105
+ offset += chunk.byteLength;
106
+ }
107
+ return out;
108
+ }
109
+ /**
110
+ * Encodes one request body.
111
+ *
112
+ * `{kind: 'none'}` produces no bytes at all rather than an empty buffer, so a `GET` does not
113
+ * announce a zero-length body it does not have. Every other kind produces both bytes and the
114
+ * `Content-Type` that describes them; the caller decides whether a header the request set itself
115
+ * overrides it (`rest/send.ts` does).
116
+ *
117
+ * @throws WirebenchError `rest-file-unresolved` when a file part or binary body has no resolver
118
+ */
119
+ export async function encodeRestBody(body, options = {}) {
120
+ switch (body.kind) {
121
+ case 'none':
122
+ return {};
123
+ case 'raw':
124
+ return {
125
+ bytes: encodeBody(body.text, options.charset),
126
+ contentType: rawContentType(body.language, body.contentType, options.charset),
127
+ };
128
+ case 'form':
129
+ return {
130
+ bytes: encodeBody(encodeFormFields(body.fields), options.charset),
131
+ contentType: 'application/x-www-form-urlencoded',
132
+ };
133
+ case 'multipart':
134
+ return encodeMultipart(body.parts, options);
135
+ case 'binary': {
136
+ const resolveFile = options.resolveFile;
137
+ if (resolveFile === undefined) {
138
+ throw new WirebenchError('rest-file-unresolved', 'A binary body needs a file resolver', {
139
+ details: { source: body.source.kind },
140
+ });
141
+ }
142
+ return { bytes: await resolveFile(body.source), contentType: body.contentType };
143
+ }
144
+ }
145
+ }
146
+ /**
147
+ * XML- or JSON-escapes a value being substituted into a body, for the *escape properties* setting.
148
+ *
149
+ * Only the characters that would otherwise change the document's structure are touched. A JSON
150
+ * body gets JSON string escaping (without the surrounding quotes, since the value is substituted
151
+ * inside them); an XML body gets the five predefined entities; anything else is left alone,
152
+ * because there is no general escape for `text/plain`.
153
+ */
154
+ export function escapeForLanguage(value, language) {
155
+ if (language === 'json') {
156
+ const json = JSON.stringify(value);
157
+ return json.slice(1, -1);
158
+ }
159
+ if (language === 'xml' || language === 'html') {
160
+ return value
161
+ .replace(/&/g, '&amp;')
162
+ .replace(/</g, '&lt;')
163
+ .replace(/>/g, '&gt;')
164
+ .replace(/"/g, '&quot;')
165
+ .replace(/'/g, '&apos;');
166
+ }
167
+ return value;
168
+ }
169
+ /** The language a body's escaping follows, for {@link escapeForLanguage}. */
170
+ export function bodyLanguage(body) {
171
+ switch (body.kind) {
172
+ case 'raw':
173
+ return body.language;
174
+ case 'form':
175
+ case 'multipart':
176
+ return 'form';
177
+ default:
178
+ return undefined;
179
+ }
180
+ }
181
+ /** The media type of an encoded body, without its parameters; `undefined` when it has none. */
182
+ export function encodedMediaType(encoded) {
183
+ return encoded.contentType === undefined ? undefined : mediaTypeOf(encoded.contentType);
184
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Browser-safe subpath export (`@wirebench/engine/rest`): the URL helpers the REST editor needs in
3
+ * the renderer, with no dependency on a Node module.
4
+ *
5
+ * The renderer has to split a URL into a path and a query table, put it back together, and find the
6
+ * `{param}` placeholders in it — and it must do all three *exactly* as the send path does, or the
7
+ * table and the URL would disagree about what is being sent. Re-exporting the engine's own
8
+ * implementation is the only way to guarantee that; duplicating it in the renderer would mean two
9
+ * sets of escaping rules to keep in step.
10
+ */
11
+ export { composeUrl, encodeValue, joinBase, joinQuery, parseUrlParams, splitQuery, type ComposedUrl, type ComposeUrlOptions, type UrlProblem, } from './url.js';
12
+ export type { KeyValueEntry } from './model.js';
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Browser-safe subpath export (`@wirebench/engine/rest`): the URL helpers the REST editor needs in
3
+ * the renderer, with no dependency on a Node module.
4
+ *
5
+ * The renderer has to split a URL into a path and a query table, put it back together, and find the
6
+ * `{param}` placeholders in it — and it must do all three *exactly* as the send path does, or the
7
+ * table and the URL would disagree about what is being sent. Re-exporting the engine's own
8
+ * implementation is the only way to guarantee that; duplicating it in the renderer would mean two
9
+ * sets of escaping rules to keep in step.
10
+ */
11
+ export { composeUrl, encodeValue, joinBase, joinQuery, parseUrlParams, splitQuery, } from './url.js';
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Which of a response's cookies go back out on the next send of the same request.
3
+ *
4
+ * Wirebench keeps no cookie jar: a request remembers what its own last response set, for the
5
+ * session only, and sends the matching ones when its *send cookies* setting is on. That is a
6
+ * deliberate limit rather than an unfinished one — a shared jar makes one request's send depend on
7
+ * another's, which is exactly what makes a saved request stop being reproducible — and nothing here
8
+ * ever reaches disk.
9
+ *
10
+ * Matching follows RFC 6265 §5.1.3 and §5.1.4 (domain-match and path-match) and §5.3 (expiry).
11
+ */
12
+ import type { Cookie } from './response.js';
13
+ /** True when `host` is `domain` or a subdomain of it (RFC 6265 §5.1.3). */
14
+ export declare function domainMatches(host: string, domain: string): boolean;
15
+ /** The default path of a cookie set by `pathname`: everything up to its last `/` (§5.1.4). */
16
+ export declare function defaultPath(pathname: string): string;
17
+ /** True when a cookie scoped to `cookiePath` applies to `requestPath` (§5.1.4). */
18
+ export declare function pathMatches(requestPath: string, cookiePath: string): boolean;
19
+ /** Whether a cookie has expired at `now`, by `Max-Age` first and then `Expires` (§5.3). */
20
+ export declare function isExpired(cookie: Cookie, now: Date, setAt?: Date): boolean;
21
+ /** Options for {@link cookiesToSend}. */
22
+ export interface CookieMatchOptions {
23
+ /** When the cookies were received, for a `Max-Age` that is relative to that moment. */
24
+ readonly setAt?: Date;
25
+ }
26
+ /**
27
+ * The cookies of `cookies` that a request to `url` should carry at `now`.
28
+ *
29
+ * A cookie with no `Domain` is host-only, so it goes back only to the host that set it — which, for
30
+ * a per-request memory, is the host it was sent from unless the URL changed. `Secure` cookies never
31
+ * travel over plain HTTP, malformed lines are never sent at all, and an expired cookie is dropped
32
+ * rather than sent and rejected.
33
+ */
34
+ export declare function cookiesToSend(cookies: readonly Cookie[], url: string, now?: Date, options?: CookieMatchOptions): Cookie[];
35
+ /**
36
+ * The `Cookie` header value for `cookies`, or `undefined` when there is nothing to send.
37
+ *
38
+ * One header with `; `-separated pairs, which is what RFC 6265 §5.4 asks for; a duplicate name
39
+ * keeps its last value, since that is the one the server most recently set.
40
+ */
41
+ export declare function cookieHeader(cookies: readonly Cookie[]): string | undefined;
@@ -0,0 +1,102 @@
1
+ /**
2
+ * Which of a response's cookies go back out on the next send of the same request.
3
+ *
4
+ * Wirebench keeps no cookie jar: a request remembers what its own last response set, for the
5
+ * session only, and sends the matching ones when its *send cookies* setting is on. That is a
6
+ * deliberate limit rather than an unfinished one — a shared jar makes one request's send depend on
7
+ * another's, which is exactly what makes a saved request stop being reproducible — and nothing here
8
+ * ever reaches disk.
9
+ *
10
+ * Matching follows RFC 6265 §5.1.3 and §5.1.4 (domain-match and path-match) and §5.3 (expiry).
11
+ */
12
+ /** True when `host` is `domain` or a subdomain of it (RFC 6265 §5.1.3). */
13
+ export function domainMatches(host, domain) {
14
+ const lowerHost = host.toLowerCase();
15
+ const lowerDomain = domain.replace(/^\./, '').toLowerCase();
16
+ if (lowerHost === lowerDomain) {
17
+ return true;
18
+ }
19
+ return lowerHost.endsWith(`.${lowerDomain}`) && !/^\d+(?:\.\d+){3}$/.test(lowerHost);
20
+ }
21
+ /** The default path of a cookie set by `pathname`: everything up to its last `/` (§5.1.4). */
22
+ export function defaultPath(pathname) {
23
+ if (!pathname.startsWith('/')) {
24
+ return '/';
25
+ }
26
+ const lastSlash = pathname.lastIndexOf('/');
27
+ return lastSlash === 0 ? '/' : pathname.slice(0, lastSlash);
28
+ }
29
+ /** True when a cookie scoped to `cookiePath` applies to `requestPath` (§5.1.4). */
30
+ export function pathMatches(requestPath, cookiePath) {
31
+ const path = requestPath === '' ? '/' : requestPath;
32
+ if (path === cookiePath) {
33
+ return true;
34
+ }
35
+ if (!path.startsWith(cookiePath)) {
36
+ return false;
37
+ }
38
+ return cookiePath.endsWith('/') || path[cookiePath.length] === '/';
39
+ }
40
+ /** Whether a cookie has expired at `now`, by `Max-Age` first and then `Expires` (§5.3). */
41
+ export function isExpired(cookie, now, setAt) {
42
+ if (cookie.maxAge !== undefined) {
43
+ if (cookie.maxAge <= 0) {
44
+ return true;
45
+ }
46
+ const from = setAt ?? now;
47
+ return now.getTime() > from.getTime() + cookie.maxAge * 1000;
48
+ }
49
+ if (cookie.expires === undefined) {
50
+ return false;
51
+ }
52
+ const expires = new Date(cookie.expires);
53
+ return !Number.isNaN(expires.getTime()) && expires.getTime() <= now.getTime();
54
+ }
55
+ /**
56
+ * The cookies of `cookies` that a request to `url` should carry at `now`.
57
+ *
58
+ * A cookie with no `Domain` is host-only, so it goes back only to the host that set it — which, for
59
+ * a per-request memory, is the host it was sent from unless the URL changed. `Secure` cookies never
60
+ * travel over plain HTTP, malformed lines are never sent at all, and an expired cookie is dropped
61
+ * rather than sent and rejected.
62
+ */
63
+ export function cookiesToSend(cookies, url, now = new Date(), options = {}) {
64
+ let target;
65
+ try {
66
+ target = new URL(url);
67
+ }
68
+ catch {
69
+ return [];
70
+ }
71
+ const secureContext = target.protocol === 'https:';
72
+ const requestPath = target.pathname === '' ? '/' : target.pathname;
73
+ return cookies.filter((cookie) => {
74
+ if (cookie.malformed === true || cookie.name === '') {
75
+ return false;
76
+ }
77
+ if (cookie.secure === true && !secureContext) {
78
+ return false;
79
+ }
80
+ if (isExpired(cookie, now, options.setAt)) {
81
+ return false;
82
+ }
83
+ if (cookie.domain !== undefined && !domainMatches(target.hostname, cookie.domain)) {
84
+ return false;
85
+ }
86
+ return pathMatches(requestPath, cookie.path ?? defaultPath(requestPath));
87
+ });
88
+ }
89
+ /**
90
+ * The `Cookie` header value for `cookies`, or `undefined` when there is nothing to send.
91
+ *
92
+ * One header with `; `-separated pairs, which is what RFC 6265 §5.4 asks for; a duplicate name
93
+ * keeps its last value, since that is the one the server most recently set.
94
+ */
95
+ export function cookieHeader(cookies) {
96
+ const pairs = new Map();
97
+ for (const cookie of cookies) {
98
+ pairs.set(cookie.name, cookie.value);
99
+ }
100
+ const header = [...pairs].map(([name, value]) => `${name}=${value}`).join('; ');
101
+ return header === '' ? undefined : header;
102
+ }
@@ -0,0 +1,75 @@
1
+ /**
2
+ * A REST request as a `curl` command, and a pasted `curl` command as a REST request.
3
+ *
4
+ * Both directions are conveniences with a sharp edge: what is exported must be *exactly* what the app
5
+ * would send, or a user debugging a difference between the two chases a ghost. So the exporter takes
6
+ * the resolved {@link RestSendInput} — the same value the send path uses, with the URL composed, the
7
+ * credentials applied and the settings decided — rather than the saved request, which still has
8
+ * properties to expand and a chain of auth to walk.
9
+ *
10
+ * The importer is the looser half by nature: a command in the wild may use flags this client has no
11
+ * field for. Anything understood becomes a field, everything else becomes a problem the dialog shows,
12
+ * and nothing is guessed at.
13
+ */
14
+ import type { ToCurlOptions } from '../http/curl.js';
15
+ import type { KeyValueEntry, RestBody, RestMethod, RestRequestSettings } from './model.js';
16
+ import type { RestSendInput } from './send.js';
17
+ /** What a redacted secret reads as in an exported command. Matches the host's own marker. */
18
+ export declare const CURL_REDACTED = "<redacted>";
19
+ /** Options for {@link restToCurl}. */
20
+ export interface RestToCurlOptions extends ToCurlOptions {
21
+ /**
22
+ * Replace every credential value with {@link CURL_REDACTED}. On unless the session's show-secrets
23
+ * switch is on, so a command copied for a colleague does not carry a token with it.
24
+ */
25
+ readonly redactSecrets?: boolean;
26
+ }
27
+ /**
28
+ * Builds a `curl` command for one resolved REST send.
29
+ *
30
+ * Credentials go on as they will go on the wire: a bearer token, an OAuth2 access token and a header
31
+ * API key as `--header`, a query API key in the URL, and Basic as `--user` — which is what `curl`
32
+ * users expect, and which also keeps a non-preemptive Basic credential behaving as it does here (curl
33
+ * waits for the challenge too).
34
+ */
35
+ export declare function restToCurl(input: RestSendInput, options?: RestToCurlOptions): string;
36
+ /** What a pasted command turned into, and what it could not. */
37
+ export interface FromRestCurlResult {
38
+ /** The fields a new or edited request should take. Absent fields were not in the command. */
39
+ readonly request: {
40
+ readonly method?: RestMethod;
41
+ readonly url?: string;
42
+ readonly pathParams?: readonly KeyValueEntry[];
43
+ readonly query?: readonly KeyValueEntry[];
44
+ readonly headers?: readonly KeyValueEntry[];
45
+ readonly body?: RestBody;
46
+ readonly settings?: RestRequestSettings;
47
+ };
48
+ /**
49
+ * A `-u` password, for the caller to store in the keychain and reference. Never put in `request`:
50
+ * nothing in the model holds a credential value (ADR-0004).
51
+ */
52
+ readonly basic?: {
53
+ readonly username: string;
54
+ readonly password?: string;
55
+ };
56
+ /** What the command said that this client has no field for, in the order it was met. */
57
+ readonly problems: readonly string[];
58
+ }
59
+ /** Options for {@link fromRestCurl}. */
60
+ export interface FromRestCurlOptions {
61
+ /**
62
+ * The API's base URL. A command whose URL starts with it is split, so the request keeps a relative
63
+ * path and follows the API's environment overrides like every other request in it.
64
+ */
65
+ readonly baseUrl?: string;
66
+ }
67
+ /**
68
+ * Reads a pasted `curl` command as a REST request.
69
+ *
70
+ * The body is decided by the most specific flag present, because a command may carry several: `-F`
71
+ * means multipart, `--data-urlencode` means a form, and a plain `-d` means raw in whatever the
72
+ * `Content-Type` says. A `-d` naming a file (`@path`) becomes a binary body pointing at that file,
73
+ * which is the reading that loses nothing.
74
+ */
75
+ export declare function fromRestCurl(text: string, options?: FromRestCurlOptions): FromRestCurlResult;