@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,74 @@
1
+ /**
2
+ * Finds the heredoc or here-string body embedded in a pasted `curl` command.
3
+ *
4
+ * Both cURL parsers (`http/curl.ts` for SOAP, `rest/curl.ts` for REST) need this and nothing else
5
+ * in common, so it lives here rather than in either. It scans instead of matching a regex: the
6
+ * pattern this replaces, `/<<\\s*'?(\\w+)'?\\r?\\n([\\s\\S]*?)\\r?\\n\\1/`, backtracks its lazy body against a
7
+ * backreference for every candidate `<<`, which is O(n²) on a command that a user pastes and can
8
+ * therefore be anything.
9
+ */
10
+ /** Offset just past a `\n` or `\r\n` at `at`, or -1 when `at` is not a line end. */
11
+ function lineEndAfter(text, at) {
12
+ if (text.startsWith('\r\n', at)) {
13
+ return at + 2;
14
+ }
15
+ return text[at] === '\n' ? at + 1 : -1;
16
+ }
17
+ /**
18
+ * Locates a POSIX heredoc: `<<EOF` or `<<'EOF'`, a newline, the body, a newline and `EOF` on a line
19
+ * of its own. The body is everything between the opening line and the first line that is exactly
20
+ * the delimiter; an opener with no such closing line is not a heredoc.
21
+ */
22
+ export function findHeredoc(text) {
23
+ let from = 0;
24
+ for (;;) {
25
+ const open = text.indexOf('<<', from);
26
+ if (open === -1) {
27
+ return undefined;
28
+ }
29
+ let cursor = open + 2;
30
+ while (text[cursor] === ' ' || text[cursor] === '\t') {
31
+ cursor += 1;
32
+ }
33
+ const quoted = text[cursor] === "'";
34
+ if (quoted) {
35
+ cursor += 1;
36
+ }
37
+ const wordStart = cursor;
38
+ while (cursor < text.length && /\w/.test(text[cursor])) {
39
+ cursor += 1;
40
+ }
41
+ const delimiter = text.slice(wordStart, cursor);
42
+ if (quoted && text[cursor] === "'") {
43
+ cursor += 1;
44
+ }
45
+ const bodyStart = lineEndAfter(text, cursor);
46
+ if (delimiter === '' || bodyStart === -1) {
47
+ from = open + 2;
48
+ continue;
49
+ }
50
+ const closeAt = text.indexOf(`\n${delimiter}`, bodyStart);
51
+ if (closeAt === -1) {
52
+ return undefined;
53
+ }
54
+ const bodyEnd = text[closeAt - 1] === '\r' ? closeAt - 1 : closeAt;
55
+ return { body: text.slice(bodyStart, bodyEnd), start: open, end: closeAt + 1 + delimiter.length };
56
+ }
57
+ }
58
+ /** Locates a PowerShell here-string: `@'`, a newline, the body, a newline and `'@`. */
59
+ export function findHereString(text) {
60
+ const open = text.indexOf("@'");
61
+ if (open === -1) {
62
+ return undefined;
63
+ }
64
+ const bodyStart = lineEndAfter(text, open + 2);
65
+ if (bodyStart === -1) {
66
+ return undefined;
67
+ }
68
+ const closeAt = text.indexOf("\n'@", bodyStart);
69
+ if (closeAt === -1) {
70
+ return undefined;
71
+ }
72
+ const bodyEnd = text[closeAt - 1] === '\r' ? closeAt - 1 : closeAt;
73
+ return { body: text.slice(bodyStart, bodyEnd), start: open, end: closeAt + 3 };
74
+ }
@@ -0,0 +1,103 @@
1
+ /**
2
+ * Proxy resolution: turns the user's stored {@link ProxyConfig} into the per-request
3
+ * {@link ProxyOptions} the transport hands to undici's `ProxyAgent`, or `undefined` when the
4
+ * request must go direct.
5
+ *
6
+ * Three things live here and nowhere else: the exclude-list matcher (hostname globs, CIDR
7
+ * blocks and the `localhost` shorthand), the parser for the PAC-style string Chromium's
8
+ * `session.resolveProxy` answers with, and the precedence between the two. Everything is pure
9
+ * — no Electron, no DNS, no sockets — so the whole table is unit-testable, and the desktop's
10
+ * main process only has to inject `resolveSystem` and the resolved password.
11
+ */
12
+ import type { ProxyOptions } from './types.js';
13
+ /**
14
+ * How the user configured the proxy. `passwordRef` is an opaque handle into the OS keychain:
15
+ * the password itself never appears here, and never crosses IPC — main resolves it and passes
16
+ * it to {@link resolveProxyFor} separately.
17
+ */
18
+ export type ProxyConfig = {
19
+ readonly mode: 'none';
20
+ } | {
21
+ readonly mode: 'system';
22
+ /** Hosts that go direct even when the system says to proxy them. */
23
+ readonly excludes?: readonly string[];
24
+ } | {
25
+ readonly mode: 'manual';
26
+ readonly host: string;
27
+ readonly port: number;
28
+ readonly username?: string;
29
+ /** Opaque reference into the OS-keychain-backed secret store. Never a password. */
30
+ readonly passwordRef?: string;
31
+ /** Hostname globs (`*.corp.test`), CIDR blocks (`10.0.0.0/8`) or `localhost`. */
32
+ readonly excludes: readonly string[];
33
+ };
34
+ /** Everything {@link resolveProxyFor} needs that the stored config cannot carry itself. */
35
+ export interface ResolveProxyOptions {
36
+ /**
37
+ * Answers Chromium's PAC-style proxy string for a URL (`DIRECT`, `PROXY host:port`, …).
38
+ * Supplied by the desktop main process as a wrapper around `session.resolveProxy`; without
39
+ * it, `mode: 'system'` resolves to no proxy rather than guessing.
40
+ */
41
+ readonly resolveSystem?: (url: string) => string | undefined;
42
+ /** The password behind `passwordRef`, already decrypted by main. */
43
+ readonly password?: string;
44
+ }
45
+ /**
46
+ * Whether `hostname` is covered by one entry of an exclude list.
47
+ *
48
+ * An entry matches when it is the host verbatim, a glob the host matches, a CIDR block the
49
+ * host's IPv4 literal falls in, or the `localhost` shorthand and the host is any loopback
50
+ * spelling. A leading `.` (`.corp.test`) is read as "this domain and its subdomains", which
51
+ * is how `no_proxy` and the usual proxy exclude lists spell it.
52
+ *
53
+ * @param hostname the host being connected to, without port or brackets
54
+ * @param excludes the configured exclude entries
55
+ */
56
+ export declare function isExcluded(hostname: string, excludes: readonly string[]): boolean;
57
+ /**
58
+ * What the system (PAC) answer amounts to, once read most-preferred-entry-first.
59
+ *
60
+ * `unsupported` exists because undici's `ProxyAgent` cannot speak SOCKS: a SOCKS-only answer is
61
+ * neither a proxy we can dial nor a licence to connect directly (the direct route is usually
62
+ * exactly what the firewall drops), so it is reported and the send fails with a message naming
63
+ * the scheme rather than hanging or timing out for no visible reason.
64
+ */
65
+ export type SystemProxyResolution = {
66
+ readonly kind: 'direct';
67
+ } | {
68
+ readonly kind: 'proxy';
69
+ readonly url: string;
70
+ } | {
71
+ readonly kind: 'unsupported';
72
+ readonly scheme: string;
73
+ };
74
+ /**
75
+ * Parses the PAC-style string `session.resolveProxy` answers with — a `;`-separated list of
76
+ * `DIRECT`, `PROXY host:port`, `HTTPS host:port` or `SOCKS…` entries, most-preferred first —
77
+ * into what the transport should do.
78
+ *
79
+ * Only the first usable HTTP(S) entry is taken: the transport has one connection to make and
80
+ * no way to fail over. A SOCKS entry is skipped in favour of anything usable after it (and of a
81
+ * `DIRECT` the user's own PAC file offered as a fallback); a SOCKS-only answer yields
82
+ * `unsupported`, which the caller turns into a `proxy-unsupported` failure.
83
+ *
84
+ * @param pacResult the raw string from `session.resolveProxy`
85
+ * @returns `direct`, the `http(s)://host:port` proxy to dial, or the unsupported scheme
86
+ */
87
+ export declare function parseSystemProxy(pacResult: string | undefined): SystemProxyResolution;
88
+ /**
89
+ * The proxy a request to `url` must go through, or `undefined` for a direct connection.
90
+ *
91
+ * Excludes are honoured for both `manual` and `system`: a host the user listed goes direct
92
+ * even when the OS would proxy it, which is the only way to reach a machine on the local
93
+ * network from behind a corporate PAC file. `system` needs `options.resolveSystem` — without
94
+ * it there is nothing to ask, and guessing from environment variables would silently disagree
95
+ * with what the rest of the app (and Electron's own network stack) does.
96
+ *
97
+ * @param url the absolute request URL
98
+ * @param config the user's stored proxy configuration
99
+ * @param options the system resolver and the password behind `passwordRef`
100
+ * @returns the proxy to dial, or `undefined` to connect directly
101
+ * @throws WirebenchError `proxy-unsupported` when the system answers with a SOCKS-only proxy
102
+ */
103
+ export declare function resolveProxyFor(url: string, config: ProxyConfig, options?: ResolveProxyOptions): ProxyOptions | undefined;
@@ -0,0 +1,168 @@
1
+ /**
2
+ * Proxy resolution: turns the user's stored {@link ProxyConfig} into the per-request
3
+ * {@link ProxyOptions} the transport hands to undici's `ProxyAgent`, or `undefined` when the
4
+ * request must go direct.
5
+ *
6
+ * Three things live here and nowhere else: the exclude-list matcher (hostname globs, CIDR
7
+ * blocks and the `localhost` shorthand), the parser for the PAC-style string Chromium's
8
+ * `session.resolveProxy` answers with, and the precedence between the two. Everything is pure
9
+ * — no Electron, no DNS, no sockets — so the whole table is unit-testable, and the desktop's
10
+ * main process only has to inject `resolveSystem` and the resolved password.
11
+ */
12
+ import { WirebenchError } from '../errors.js';
13
+ /** True when `text` is an IPv4 dotted quad. */
14
+ function isIpv4(text) {
15
+ const parts = text.split('.');
16
+ return (parts.length === 4 && parts.every((part) => /^\d{1,3}$/.test(part) && Number(part) >= 0 && Number(part) <= 255));
17
+ }
18
+ /** An IPv4 dotted quad as a 32-bit unsigned integer. */
19
+ function ipv4ToInt(text) {
20
+ return text.split('.').reduce((accumulated, part) => accumulated * 256 + Number(part), 0);
21
+ }
22
+ /** Whether `host` (an IPv4 literal) falls inside the `a.b.c.d/bits` block `cidr`. */
23
+ function matchesCidr(host, cidr) {
24
+ const slash = cidr.indexOf('/');
25
+ if (slash === -1)
26
+ return false;
27
+ const network = cidr.slice(0, slash);
28
+ const bits = Number(cidr.slice(slash + 1));
29
+ if (!isIpv4(network) || !isIpv4(host) || !Number.isInteger(bits) || bits < 0 || bits > 32) {
30
+ return false;
31
+ }
32
+ if (bits === 0)
33
+ return true;
34
+ // `>>> 0` keeps the shift unsigned; JS bitwise operators work on signed 32-bit ints.
35
+ const mask = (0xffffffff << (32 - bits)) >>> 0;
36
+ return (ipv4ToInt(host) & mask) >>> 0 === (ipv4ToInt(network) & mask) >>> 0;
37
+ }
38
+ /** The loopback spellings the `localhost` shorthand stands for in a proxy exclude list. */
39
+ const LOOPBACK = new Set(['localhost', '127.0.0.1', '::1', '[::1]']);
40
+ /** Turns a hostname glob (`*.corp.test`) into an anchored, case-insensitive regular expression. */
41
+ function globToRegExp(pattern) {
42
+ const escaped = pattern.replace(/[.+^${}()|[\]\\]/g, '\\$&').replace(/\*/g, '.*');
43
+ return new RegExp(`^${escaped}$`, 'i');
44
+ }
45
+ /**
46
+ * Whether `hostname` is covered by one entry of an exclude list.
47
+ *
48
+ * An entry matches when it is the host verbatim, a glob the host matches, a CIDR block the
49
+ * host's IPv4 literal falls in, or the `localhost` shorthand and the host is any loopback
50
+ * spelling. A leading `.` (`.corp.test`) is read as "this domain and its subdomains", which
51
+ * is how `no_proxy` and the usual proxy exclude lists spell it.
52
+ *
53
+ * @param hostname the host being connected to, without port or brackets
54
+ * @param excludes the configured exclude entries
55
+ */
56
+ export function isExcluded(hostname, excludes) {
57
+ const host = hostname.toLowerCase().replace(/^\[|\]$/g, '');
58
+ for (const raw of excludes) {
59
+ const entry = raw.trim().toLowerCase();
60
+ if (entry.length === 0)
61
+ continue;
62
+ if (entry === '*')
63
+ return true;
64
+ if (entry === 'localhost' && LOOPBACK.has(host))
65
+ return true;
66
+ if (entry === host)
67
+ return true;
68
+ if (entry.startsWith('.') && (host === entry.slice(1) || host.endsWith(entry)))
69
+ return true;
70
+ if (entry.includes('/') && matchesCidr(host, entry))
71
+ return true;
72
+ if (entry.includes('*') && globToRegExp(entry).test(host))
73
+ return true;
74
+ }
75
+ return false;
76
+ }
77
+ /** The PAC keywords that name a SOCKS proxy, lower-cased as {@link SystemProxyResolution.scheme}. */
78
+ const SOCKS_KEYWORDS = new Set(['socks', 'socks4', 'socks5']);
79
+ /**
80
+ * Parses the PAC-style string `session.resolveProxy` answers with — a `;`-separated list of
81
+ * `DIRECT`, `PROXY host:port`, `HTTPS host:port` or `SOCKS…` entries, most-preferred first —
82
+ * into what the transport should do.
83
+ *
84
+ * Only the first usable HTTP(S) entry is taken: the transport has one connection to make and
85
+ * no way to fail over. A SOCKS entry is skipped in favour of anything usable after it (and of a
86
+ * `DIRECT` the user's own PAC file offered as a fallback); a SOCKS-only answer yields
87
+ * `unsupported`, which the caller turns into a `proxy-unsupported` failure.
88
+ *
89
+ * @param pacResult the raw string from `session.resolveProxy`
90
+ * @returns `direct`, the `http(s)://host:port` proxy to dial, or the unsupported scheme
91
+ */
92
+ export function parseSystemProxy(pacResult) {
93
+ if (pacResult === undefined)
94
+ return { kind: 'direct' };
95
+ let socksScheme;
96
+ for (const raw of pacResult.split(';')) {
97
+ const entry = raw.trim();
98
+ if (entry.length === 0)
99
+ continue;
100
+ const match = /^([A-Za-z][A-Za-z0-9]*)(?:\s+(\S+))?$/.exec(entry);
101
+ if (match === null)
102
+ continue;
103
+ const keyword = (match[1] ?? '').toUpperCase();
104
+ const authority = match[2];
105
+ if (keyword === 'DIRECT')
106
+ return { kind: 'direct' };
107
+ if (SOCKS_KEYWORDS.has(keyword.toLowerCase())) {
108
+ socksScheme ??= keyword.toLowerCase();
109
+ continue;
110
+ }
111
+ if (keyword !== 'PROXY' && keyword !== 'HTTP' && keyword !== 'HTTPS')
112
+ continue;
113
+ if (authority === undefined || authority.length === 0)
114
+ continue;
115
+ return { kind: 'proxy', url: `${keyword === 'HTTPS' ? 'https' : 'http'}://${authority}` };
116
+ }
117
+ return socksScheme === undefined ? { kind: 'direct' } : { kind: 'unsupported', scheme: socksScheme };
118
+ }
119
+ /** The `ProxyOptions` for a proxy URL plus optional credentials, dropping an empty username. */
120
+ function withAuth(url, username, password) {
121
+ if (username === undefined || username.length === 0) {
122
+ return { url };
123
+ }
124
+ return { url, auth: { username, password: password ?? '' } };
125
+ }
126
+ /**
127
+ * The proxy a request to `url` must go through, or `undefined` for a direct connection.
128
+ *
129
+ * Excludes are honoured for both `manual` and `system`: a host the user listed goes direct
130
+ * even when the OS would proxy it, which is the only way to reach a machine on the local
131
+ * network from behind a corporate PAC file. `system` needs `options.resolveSystem` — without
132
+ * it there is nothing to ask, and guessing from environment variables would silently disagree
133
+ * with what the rest of the app (and Electron's own network stack) does.
134
+ *
135
+ * @param url the absolute request URL
136
+ * @param config the user's stored proxy configuration
137
+ * @param options the system resolver and the password behind `passwordRef`
138
+ * @returns the proxy to dial, or `undefined` to connect directly
139
+ * @throws WirebenchError `proxy-unsupported` when the system answers with a SOCKS-only proxy
140
+ */
141
+ export function resolveProxyFor(url, config, options) {
142
+ if (config.mode === 'none')
143
+ return undefined;
144
+ let hostname;
145
+ try {
146
+ hostname = new URL(url).hostname;
147
+ }
148
+ catch {
149
+ return undefined;
150
+ }
151
+ const excludes = config.excludes ?? [];
152
+ if (isExcluded(hostname, excludes))
153
+ return undefined;
154
+ if (config.mode === 'system') {
155
+ const resolved = parseSystemProxy(options?.resolveSystem?.(url));
156
+ if (resolved.kind === 'unsupported') {
157
+ throw new WirebenchError('proxy-unsupported', `Your system proxy is ${resolved.scheme.toUpperCase()}, which Wirebench cannot use`, { details: { scheme: resolved.scheme } });
158
+ }
159
+ return resolved.kind === 'direct' ? undefined : { url: resolved.url };
160
+ }
161
+ if (config.host.trim().length === 0 || !Number.isInteger(config.port) || config.port <= 0) {
162
+ return undefined;
163
+ }
164
+ const host = config.host.trim();
165
+ const authority = host.includes('://') ? host : `http://${host}`;
166
+ const base = `${authority.replace(/\/+$/, '')}:${config.port}`;
167
+ return withAuth(base, config.username, options?.password);
168
+ }
@@ -0,0 +1,23 @@
1
+ import type { HttpRequest } from './types.js';
2
+ /**
3
+ * Reconstructs the request as bytes approximating what was put on the wire:
4
+ * `METHOD path HTTP/1.1\r\nHeader: value\r\n...\r\n\r\n<body>`.
5
+ *
6
+ * This is a reconstruction, not a wire capture: undici does not expose the
7
+ * literal bytes it sends. The reconstruction mirrors exactly the headers
8
+ * undici sends and nothing else — `host` (from the URL) and `content-length`
9
+ * (when there's a body), plus whatever headers the caller set — so it
10
+ * intentionally omits headers undici doesn't add by default (e.g.
11
+ * `Connection`, which undici's `request()` does not send).
12
+ * `finalHeaders` should include any headers undici adds itself (e.g.
13
+ * `content-length`, `host`) so the reconstruction is as faithful as practical.
14
+ */
15
+ export declare function buildRawRequest(req: HttpRequest, finalHeaders: Readonly<Record<string, string>>, body?: Uint8Array): Uint8Array;
16
+ /**
17
+ * Reconstructs the response as bytes approximating what was received on the
18
+ * wire: `HTTP/1.1 <status> <text>\r\nHeader: value\r\n...\r\n\r\n<body>`.
19
+ *
20
+ * This is a reconstruction, not a wire capture: undici does not expose the
21
+ * literal bytes it received.
22
+ */
23
+ export declare function buildRawResponse(status: number, statusText: string, rawHeaders: readonly (readonly [string, string])[], rawBody: Uint8Array, httpVersion?: '1.1' | '2'): Uint8Array;
@@ -0,0 +1,57 @@
1
+ const CRLF = '\r\n';
2
+ /**
3
+ * Reconstructs the request as bytes approximating what was put on the wire:
4
+ * `METHOD path HTTP/1.1\r\nHeader: value\r\n...\r\n\r\n<body>`.
5
+ *
6
+ * This is a reconstruction, not a wire capture: undici does not expose the
7
+ * literal bytes it sends. The reconstruction mirrors exactly the headers
8
+ * undici sends and nothing else — `host` (from the URL) and `content-length`
9
+ * (when there's a body), plus whatever headers the caller set — so it
10
+ * intentionally omits headers undici doesn't add by default (e.g.
11
+ * `Connection`, which undici's `request()` does not send).
12
+ * `finalHeaders` should include any headers undici adds itself (e.g.
13
+ * `content-length`, `host`) so the reconstruction is as faithful as practical.
14
+ */
15
+ export function buildRawRequest(req, finalHeaders, body) {
16
+ let path;
17
+ try {
18
+ const parsed = new URL(req.url);
19
+ path = `${parsed.pathname}${parsed.search}` || '/';
20
+ }
21
+ catch {
22
+ path = req.url;
23
+ }
24
+ const lines = [`${req.method} ${path} HTTP/1.1`];
25
+ for (const [name, value] of Object.entries(finalHeaders)) {
26
+ lines.push(`${name}: ${value}`);
27
+ }
28
+ const head = `${lines.join(CRLF)}${CRLF}${CRLF}`;
29
+ const headBytes = new TextEncoder().encode(head);
30
+ if (body === undefined || body.length === 0)
31
+ return headBytes;
32
+ const out = new Uint8Array(headBytes.length + body.length);
33
+ out.set(headBytes, 0);
34
+ out.set(body, headBytes.length);
35
+ return out;
36
+ }
37
+ /**
38
+ * Reconstructs the response as bytes approximating what was received on the
39
+ * wire: `HTTP/1.1 <status> <text>\r\nHeader: value\r\n...\r\n\r\n<body>`.
40
+ *
41
+ * This is a reconstruction, not a wire capture: undici does not expose the
42
+ * literal bytes it received.
43
+ */
44
+ export function buildRawResponse(status, statusText, rawHeaders, rawBody, httpVersion = '1.1') {
45
+ const lines = [`HTTP/${httpVersion} ${status} ${statusText}`];
46
+ for (const [name, value] of rawHeaders) {
47
+ lines.push(`${name}: ${value}`);
48
+ }
49
+ const head = `${lines.join(CRLF)}${CRLF}${CRLF}`;
50
+ const headBytes = new TextEncoder().encode(head);
51
+ if (rawBody.length === 0)
52
+ return headBytes;
53
+ const out = new Uint8Array(headBytes.length + rawBody.length);
54
+ out.set(headBytes, 0);
55
+ out.set(rawBody, headBytes.length);
56
+ return out;
57
+ }
@@ -0,0 +1,79 @@
1
+ import { type SslInfo } from './tls.js';
2
+ import type { Timings } from './types.js';
3
+ /**
4
+ * Tracks timings for one physical HTTP exchange. `connectMs`/`tlsMs` still rely on
5
+ * this module never issuing concurrent requests through the same dispatcher call (so
6
+ * "the next connect event" can only be this exchange's) — but `tls`, the peer/protocol
7
+ * snapshot, does not get that luxury: two exchanges can easily be concurrently in
8
+ * flight to the *same* origin on *different* sockets, and `undici:client:sendHeaders`
9
+ * carries no correlation id of its own beyond the undici `Request` object reference.
10
+ * `captureRequestFor` threads that reference through explicitly, so `onSendHeaders`
11
+ * can match on it exactly instead of guessing from origin.
12
+ *
13
+ * Sources:
14
+ * - `connectMs`/`tlsMs`: `undici:client:beforeConnect` / `undici:client:connected`.
15
+ * Only observed when a *new* socket is opened for this exchange; a reused
16
+ * keep-alive connection leaves both undefined.
17
+ * - `tls` (the {@link SslInfo} snapshot): `undici:client:sendHeaders`, which carries
18
+ * the request, and the socket its bytes were written to — so a request that reuses a
19
+ * warm keep-alive connection still gets the peer chain, which `undici:client:connected`
20
+ * alone (fresh connections only) cannot give. Correlated by request identity (see
21
+ * {@link captureRequestFor}); origin matching is a fallback for the case where no
22
+ * identity was captured, not the primary mechanism.
23
+ * - `ttfbMs`: `undici:request:headers` (response headers received).
24
+ * - `downloadMs`: measured after headers, ended by our own body-read loop
25
+ * (not a diagnostics channel — undici doesn't expose a clean "body fully
26
+ * read" timestamp before trailers, and we already know when we finish reading).
27
+ * - `dnsMs`: left undefined. Wiring a custom `connect.lookup` timer for this
28
+ * would require plumbing through every dispatcher construction path
29
+ * (including caller-supplied dispatchers for Task 35's NTLM `Client`), which
30
+ * is more invasive than this task's payoff justifies. Documented, not silently dropped.
31
+ */
32
+ export declare class TimingTracker {
33
+ private readonly now;
34
+ private readonly startedAtMs;
35
+ private readonly startedAtIso;
36
+ private connectStart;
37
+ private connectEnd;
38
+ private tlsEnd;
39
+ private headersAt;
40
+ private ssl;
41
+ /** The origin this exchange is currently talking to; a redirect moves it. */
42
+ private origin;
43
+ /**
44
+ * The exact undici `Request` object this physical attempt is using, captured via
45
+ * {@link captureRequestFor}. Compared by identity (`===`) in `onSendHeaders` — see
46
+ * that handler for why this, rather than origin, is the correlation key.
47
+ */
48
+ private request;
49
+ private readonly onBeforeConnect;
50
+ private readonly onConnected;
51
+ private readonly onSendHeaders;
52
+ private disposed;
53
+ constructor(now?: () => number);
54
+ /** Records which origin the next physical request goes to, so TLS events can be attributed to it. */
55
+ setOrigin(origin: string): void;
56
+ /**
57
+ * Runs `fn` — a call that synchronously triggers undici's `undici:request:create`
58
+ * diagnostics event, as every plain `undiciRequest()` call does — while listening for
59
+ * that event, so `this.request` becomes the exact undici `Request` object this
60
+ * physical attempt is using. Call this wrapping the `undiciRequest()` call itself
61
+ * (not a `.then()`/`await` of it): the create event fires inside the synchronous
62
+ * portion of that call, before it returns a pending promise, which is what makes the
63
+ * capture race-free even when another exchange's own send is interleaved via
64
+ * `Promise.all` — no other code runs between this subscribe and unsubscribe.
65
+ */
66
+ captureRequestFor<T>(fn: () => T): T;
67
+ /** Call when the response headers arrive (time-to-first-byte). */
68
+ markHeaders(): void;
69
+ /**
70
+ * Stops listening to diagnostics channels and decrements the in-flight
71
+ * counter. Always call this, even on error paths — idempotent, so it is
72
+ * safe to call more than once (e.g. from a `finally` after an early throw).
73
+ */
74
+ dispose(): void;
75
+ /** Finalizes the timing record. Call once the response body is fully read (or the exchange failed). */
76
+ finish(): Timings;
77
+ /** The TLS peer/protocol snapshot for the connection this exchange used, if it was a TLS one. */
78
+ tlsInfo(): SslInfo | undefined;
79
+ }