@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,518 @@
1
+ /**
2
+ * Parsing and normalizing Postman Collection v2.0 and v2.1 documents.
3
+ *
4
+ * Handles tolerant parsing of Postman JSON exports, variable translation (`{{var}}` to `${var}`),
5
+ * path parameter syntax normalization (`:param` to `{param}`), and structure validation.
6
+ */
7
+ import { PostmanError } from '../../errors.js';
8
+ function isRecord(value) {
9
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
10
+ }
11
+ function asString(value) {
12
+ return typeof value === 'string' ? value : undefined;
13
+ }
14
+ function asBoolean(value) {
15
+ return typeof value === 'boolean' ? value : undefined;
16
+ }
17
+ /** Nesting deeper than this is refused rather than risking a stack overflow. */
18
+ export const MAX_POSTMAN_DEPTH = 64;
19
+ function itemCount(n) {
20
+ return `${String(n)} ${n === 1 ? 'item' : 'items'}`;
21
+ }
22
+ function tv(ctx, text) {
23
+ return translatePostmanVariables(text, ctx.dynamic);
24
+ }
25
+ /**
26
+ * Translates Postman's `{{var}}` variable interpolation to Wirebench's `${var}` format.
27
+ *
28
+ * A literal `${` already in the text is escaped to `$${` first so it stays literal. Names of
29
+ * dynamic variables (`{{$guid}}`) are added to `dynamic` when given; they are translated anyway.
30
+ */
31
+ export function translatePostmanVariables(text, dynamic) {
32
+ return text
33
+ .replace(/\$\{/g, () => '$${')
34
+ .replace(/\{\{\s*([^{}]*?)\s*\}\}/g, (match, name) => {
35
+ if (name.length === 0)
36
+ return match;
37
+ if (name.startsWith('$'))
38
+ dynamic?.add(name);
39
+ return `\${${name}}`;
40
+ });
41
+ }
42
+ /** Normalizes Postman's `:param` path segment syntax to Wirebench's `{param}` format. */
43
+ export function normalizePostmanPath(path) {
44
+ return path.replace(/(^|\/):([a-zA-Z0-9_-]+)(?=\/|\?|#|\.|$)/g, '$1{$2}');
45
+ }
46
+ export function extractDescription(desc) {
47
+ if (typeof desc === 'string') {
48
+ return desc;
49
+ }
50
+ if (isRecord(desc) && typeof desc['content'] === 'string') {
51
+ return desc['content'];
52
+ }
53
+ return undefined;
54
+ }
55
+ /** Checks whether a parsed JSON object has the shape of a Postman Collection. */
56
+ export function isPostmanCollection(root) {
57
+ if (!isRecord(root)) {
58
+ return false;
59
+ }
60
+ const info = root['info'];
61
+ if (!isRecord(info)) {
62
+ return false;
63
+ }
64
+ const schema = asString(info['schema']);
65
+ if (schema !== undefined && schema.includes('schema.getpostman.com/json/collection')) {
66
+ return true;
67
+ }
68
+ return typeof info['name'] === 'string' && Array.isArray(root['item']);
69
+ }
70
+ /**
71
+ * Parses JSON text as a Postman Collection.
72
+ *
73
+ * @throws PostmanError `postman-malformed` if invalid JSON, or `postman-not-a-collection`.
74
+ */
75
+ export function parsePostmanCollectionText(text) {
76
+ const trimmed = text.replace(/^/, '').trim();
77
+ let json;
78
+ try {
79
+ json = JSON.parse(trimmed);
80
+ }
81
+ catch (error) {
82
+ throw new PostmanError('postman-malformed', `The file is not valid JSON: ${error instanceof Error ? error.message : String(error)}`, { cause: error });
83
+ }
84
+ return parsePostmanCollection(json);
85
+ }
86
+ /** Validates and normalizes an already parsed Postman JSON structure into {@link PostmanCollection}. */
87
+ export function parsePostmanCollection(root) {
88
+ if (!isPostmanCollection(root)) {
89
+ throw new PostmanError('postman-not-a-collection', 'This file does not contain a Postman Collection (v2.0 or v2.1)');
90
+ }
91
+ const doc = root;
92
+ const ctx = { dynamic: new Set(), skippedItems: 0, scriptedItems: 0 };
93
+ const rawInfo = doc['info'];
94
+ const desc = extractDescription(rawInfo['description']);
95
+ const version = asString(rawInfo['version']);
96
+ const schema = asString(rawInfo['schema']);
97
+ const postmanId = asString(rawInfo['_postman_id']);
98
+ const info = {
99
+ name: tv(ctx, asString(rawInfo['name']) ?? 'Imported Collection'),
100
+ ...(desc !== undefined ? { description: desc } : {}),
101
+ ...(version !== undefined ? { version } : {}),
102
+ ...(schema !== undefined ? { schema } : {}),
103
+ ...(postmanId !== undefined ? { _postman_id: postmanId } : {}),
104
+ };
105
+ const rawItems = Array.isArray(doc['item']) ? doc['item'] : [];
106
+ const item = parseItems(rawItems, ctx, 1);
107
+ const auth = isRecord(doc['auth']) ? parseAuth(doc['auth'], ctx) : undefined;
108
+ const variable = Array.isArray(doc['variable']) ? parseVariables(doc['variable'], ctx) : undefined;
109
+ if (hasEvents(doc))
110
+ ctx.scriptedItems += 1;
111
+ const warnings = [];
112
+ if (ctx.skippedItems > 0) {
113
+ warnings.push(`${itemCount(ctx.skippedItems)} without a request ${ctx.skippedItems === 1 ? 'was' : 'were'} skipped`);
114
+ }
115
+ if (ctx.scriptedItems > 0) {
116
+ warnings.push(`Scripts on ${itemCount(ctx.scriptedItems)} (pre-request and test) were not imported`);
117
+ }
118
+ if (ctx.dynamic.size > 0) {
119
+ warnings.push(`Dynamic variables are not generated and must be defined as properties: ${[...ctx.dynamic].sort().join(', ')}`);
120
+ }
121
+ return {
122
+ info,
123
+ item,
124
+ ...(auth !== undefined ? { auth } : {}),
125
+ ...(variable !== undefined ? { variable } : {}),
126
+ ...(warnings.length > 0 ? { warnings } : {}),
127
+ };
128
+ }
129
+ function hasEvents(raw) {
130
+ return Array.isArray(raw['event']) && raw['event'].length > 0;
131
+ }
132
+ function parseItems(raw, ctx, depth) {
133
+ if (depth > MAX_POSTMAN_DEPTH) {
134
+ throw new PostmanError('postman-too-deep', `The collection nests folders more than ${MAX_POSTMAN_DEPTH} levels deep`);
135
+ }
136
+ const items = [];
137
+ for (const entry of raw) {
138
+ if (!isRecord(entry))
139
+ continue;
140
+ const item = parseItem(entry, ctx, depth);
141
+ if (item !== undefined)
142
+ items.push(item);
143
+ }
144
+ return items;
145
+ }
146
+ function parseItem(raw, ctx, depth) {
147
+ const name = tv(ctx, asString(raw['name']) ?? 'Request');
148
+ const description = extractDescription(raw['description']);
149
+ const auth = isRecord(raw['auth']) ? parseAuth(raw['auth'], ctx) : undefined;
150
+ const variable = Array.isArray(raw['variable']) ? parseVariables(raw['variable'], ctx) : undefined;
151
+ if (hasEvents(raw))
152
+ ctx.scriptedItems += 1;
153
+ if (Array.isArray(raw['item'])) {
154
+ // Folder item
155
+ const children = parseItems(raw['item'], ctx, depth + 1);
156
+ return {
157
+ name,
158
+ item: children,
159
+ ...(description !== undefined ? { description } : {}),
160
+ ...(auth !== undefined ? { auth } : {}),
161
+ ...(variable !== undefined ? { variable } : {}),
162
+ };
163
+ }
164
+ // Request item: anything that is neither a URL string nor a request object is skipped
165
+ if (typeof raw['request'] !== 'string' && !isRecord(raw['request'])) {
166
+ ctx.skippedItems += 1;
167
+ return undefined;
168
+ }
169
+ const request = parseRequest(raw['request'], ctx);
170
+ return {
171
+ name,
172
+ request,
173
+ ...(description !== undefined ? { description } : {}),
174
+ ...(auth !== undefined ? { auth } : {}),
175
+ ...(variable !== undefined ? { variable } : {}),
176
+ };
177
+ }
178
+ function parseRequest(raw, ctx) {
179
+ if (typeof raw === 'string') {
180
+ return normalizePostmanPath(tv(ctx, raw));
181
+ }
182
+ const method = asString(raw['method'])?.toUpperCase() ?? 'GET';
183
+ const url = parseUrl(raw['url'], ctx);
184
+ let header = parseHeaders(raw['header'], ctx);
185
+ const body = isRecord(raw['body']) ? parseBody(raw['body'], ctx) : undefined;
186
+ if (isRecord(raw['body']) &&
187
+ raw['body']['mode'] === 'graphql' &&
188
+ !header.some((h) => h.disabled !== true && h.key.toLowerCase() === 'content-type')) {
189
+ header = [...header, { key: 'Content-Type', value: 'application/json' }];
190
+ }
191
+ const auth = isRecord(raw['auth']) ? parseAuth(raw['auth'], ctx) : undefined;
192
+ const description = extractDescription(raw['description']);
193
+ return {
194
+ method,
195
+ url,
196
+ header,
197
+ ...(body !== undefined ? { body } : {}),
198
+ ...(auth !== undefined ? { auth } : {}),
199
+ ...(description !== undefined ? { description } : {}),
200
+ };
201
+ }
202
+ function parseUrl(raw, ctx) {
203
+ if (typeof raw === 'string') {
204
+ return { raw: normalizePostmanPath(tv(ctx, raw)) };
205
+ }
206
+ if (!isRecord(raw)) {
207
+ return { raw: '' };
208
+ }
209
+ const rawString = asString(raw['raw']);
210
+ let rawUrl;
211
+ if (rawString !== undefined) {
212
+ rawUrl = normalizePostmanPath(tv(ctx, rawString));
213
+ }
214
+ else {
215
+ // Construct raw URL from parts if raw is omitted
216
+ const protocol = asString(raw['protocol']) ? `${asString(raw['protocol'])}://` : '';
217
+ let host = '';
218
+ if (Array.isArray(raw['host'])) {
219
+ host = raw['host'].filter((h) => typeof h === 'string').join('.');
220
+ }
221
+ else if (typeof raw['host'] === 'string') {
222
+ host = raw['host'];
223
+ }
224
+ const port = asString(raw['port']) ? `:${asString(raw['port'])}` : '';
225
+ let path = '';
226
+ if (Array.isArray(raw['path'])) {
227
+ path = '/' + raw['path'].filter((p) => typeof p === 'string').join('/');
228
+ }
229
+ else if (typeof raw['path'] === 'string') {
230
+ path = raw['path'].startsWith('/') ? raw['path'] : `/${raw['path']}`;
231
+ }
232
+ rawUrl = normalizePostmanPath(tv(ctx, `${protocol}${host}${port}${path}`));
233
+ }
234
+ const query = [];
235
+ if (Array.isArray(raw['query'])) {
236
+ for (const q of raw['query']) {
237
+ if (!isRecord(q))
238
+ continue;
239
+ const key = asString(q['key']);
240
+ const value = asString(q['value']);
241
+ const desc = extractDescription(q['description']);
242
+ if (key !== undefined) {
243
+ query.push({
244
+ key: tv(ctx, key),
245
+ value: value !== undefined ? tv(ctx, value) : '',
246
+ ...(desc !== undefined ? { description: desc } : {}),
247
+ ...(asBoolean(q['disabled']) === true ? { disabled: true } : {}),
248
+ });
249
+ }
250
+ }
251
+ }
252
+ const variable = [];
253
+ if (Array.isArray(raw['variable'])) {
254
+ for (const v of raw['variable']) {
255
+ if (!isRecord(v))
256
+ continue;
257
+ const key = asString(v['key']);
258
+ if (key !== undefined) {
259
+ // Strip leading colon if present
260
+ const cleanKey = key.startsWith(':') ? key.slice(1) : key;
261
+ const val = asString(v['value']);
262
+ const desc = extractDescription(v['description']);
263
+ variable.push({
264
+ key: cleanKey,
265
+ value: val !== undefined ? tv(ctx, val) : '',
266
+ ...(desc !== undefined ? { description: desc } : {}),
267
+ });
268
+ }
269
+ }
270
+ }
271
+ return {
272
+ raw: rawUrl,
273
+ ...(query.length > 0 ? { query } : {}),
274
+ ...(variable.length > 0 ? { variable } : {}),
275
+ };
276
+ }
277
+ function parseHeaders(raw, ctx) {
278
+ if (typeof raw === 'string') {
279
+ // Parse raw newline-delimited headers
280
+ const lines = raw.split(/\r?\n/);
281
+ const headers = [];
282
+ for (const line of lines) {
283
+ const colon = line.indexOf(':');
284
+ if (colon === -1)
285
+ continue;
286
+ const key = line.slice(0, colon).trim();
287
+ const value = line.slice(colon + 1).trim();
288
+ if (key.length > 0) {
289
+ headers.push({
290
+ key: tv(ctx, key),
291
+ value: tv(ctx, value),
292
+ });
293
+ }
294
+ }
295
+ return headers;
296
+ }
297
+ if (!Array.isArray(raw)) {
298
+ return [];
299
+ }
300
+ const headers = [];
301
+ for (const h of raw) {
302
+ if (!isRecord(h))
303
+ continue;
304
+ const key = asString(h['key']);
305
+ const value = asString(h['value']) ?? '';
306
+ const desc = extractDescription(h['description']);
307
+ if (key !== undefined && key.length > 0) {
308
+ headers.push({
309
+ key: tv(ctx, key),
310
+ value: tv(ctx, value),
311
+ ...(desc !== undefined ? { description: desc } : {}),
312
+ ...(asBoolean(h['disabled']) === true ? { disabled: true } : {}),
313
+ });
314
+ }
315
+ }
316
+ return headers;
317
+ }
318
+ function parseBody(raw, ctx) {
319
+ const mode = asString(raw['mode']);
320
+ if (mode === 'raw') {
321
+ const rawText = asString(raw['raw']) ?? '';
322
+ let options;
323
+ if (isRecord(raw['options']) && isRecord(raw['options']['raw'])) {
324
+ const rawLanguage = asString(raw['options']['raw']['language']);
325
+ options = {
326
+ raw: {
327
+ ...(rawLanguage !== undefined ? { language: rawLanguage } : {}),
328
+ },
329
+ };
330
+ }
331
+ return {
332
+ mode: 'raw',
333
+ raw: tv(ctx, rawText),
334
+ ...(options !== undefined ? { options } : {}),
335
+ };
336
+ }
337
+ if (mode === 'urlencoded') {
338
+ const params = [];
339
+ if (Array.isArray(raw['urlencoded'])) {
340
+ for (const p of raw['urlencoded']) {
341
+ if (!isRecord(p))
342
+ continue;
343
+ const key = asString(p['key']);
344
+ const desc = extractDescription(p['description']);
345
+ if (key !== undefined) {
346
+ params.push({
347
+ key: tv(ctx, key),
348
+ value: tv(ctx, asString(p['value']) ?? ''),
349
+ ...(desc !== undefined ? { description: desc } : {}),
350
+ ...(asBoolean(p['disabled']) === true ? { disabled: true } : {}),
351
+ });
352
+ }
353
+ }
354
+ }
355
+ return {
356
+ mode: 'urlencoded',
357
+ urlencoded: params,
358
+ };
359
+ }
360
+ if (mode === 'formdata') {
361
+ const parts = [];
362
+ if (Array.isArray(raw['formdata'])) {
363
+ for (const p of raw['formdata']) {
364
+ if (!isRecord(p))
365
+ continue;
366
+ const key = asString(p['key']);
367
+ if (key !== undefined) {
368
+ const type = asString(p['type']) === 'file' ? 'file' : 'text';
369
+ const value = asString(p['value']);
370
+ const src = Array.isArray(p['src'])
371
+ ? p['src'].filter((x) => typeof x === 'string')
372
+ : asString(p['src']);
373
+ const contentType = asString(p['contentType']);
374
+ const desc = extractDescription(p['description']);
375
+ const disabled = asBoolean(p['disabled']);
376
+ parts.push({
377
+ key: tv(ctx, key),
378
+ type,
379
+ ...(value !== undefined ? { value: tv(ctx, value) } : {}),
380
+ ...(src !== undefined ? { src } : {}),
381
+ ...(contentType !== undefined ? { contentType } : {}),
382
+ ...(desc !== undefined ? { description: desc } : {}),
383
+ ...(disabled === true ? { disabled: true } : {}),
384
+ });
385
+ }
386
+ }
387
+ }
388
+ return {
389
+ mode: 'formdata',
390
+ formdata: parts,
391
+ };
392
+ }
393
+ if (mode === 'file') {
394
+ const fileObj = isRecord(raw['file']) ? raw['file'] : {};
395
+ const src = asString(fileObj['src']);
396
+ return {
397
+ mode: 'file',
398
+ file: {
399
+ ...(src !== undefined ? { src } : {}),
400
+ },
401
+ };
402
+ }
403
+ if (mode === 'graphql') {
404
+ const gql = isRecord(raw['graphql']) ? raw['graphql'] : {};
405
+ const query = asString(gql['query']) ?? '';
406
+ const variables = parseGraphqlVariables(gql['variables']);
407
+ const graphqlJson = JSON.stringify({ query, variables });
408
+ return {
409
+ mode: 'raw',
410
+ raw: tv(ctx, graphqlJson),
411
+ options: { raw: { language: 'json' } },
412
+ };
413
+ }
414
+ return { mode: 'raw', raw: '' };
415
+ }
416
+ function parseGraphqlVariables(raw) {
417
+ if (isRecord(raw))
418
+ return raw;
419
+ if (typeof raw !== 'string' || raw.trim() === '')
420
+ return {};
421
+ try {
422
+ const parsed = JSON.parse(raw);
423
+ return isRecord(parsed) ? parsed : {};
424
+ }
425
+ catch {
426
+ return {};
427
+ }
428
+ }
429
+ /** Auth attributes, with `{{var}}` in string values translated like every other field. */
430
+ function parseAuth(raw, ctx) {
431
+ const value = (v) => (typeof v === 'string' ? tv(ctx, v) : v);
432
+ const type = asString(raw['type'])?.toLowerCase();
433
+ const extractAttributes = (field) => {
434
+ const list = raw[field];
435
+ if (Array.isArray(list)) {
436
+ const attrs = [];
437
+ for (const entry of list) {
438
+ if (!isRecord(entry))
439
+ continue;
440
+ const key = asString(entry['key']);
441
+ const attrType = asString(entry['type']);
442
+ if (key !== undefined) {
443
+ attrs.push({
444
+ key,
445
+ value: value(entry['value']),
446
+ ...(attrType !== undefined ? { type: attrType } : {}),
447
+ });
448
+ }
449
+ }
450
+ return attrs.length > 0 ? attrs : undefined;
451
+ }
452
+ if (isRecord(list)) {
453
+ const attrs = [];
454
+ for (const [key, val] of Object.entries(list)) {
455
+ if (isRecord(val) && 'value' in val) {
456
+ attrs.push({
457
+ key,
458
+ value: value(val['value']),
459
+ ...(typeof val['type'] === 'string' ? { type: val['type'] } : {}),
460
+ });
461
+ }
462
+ else {
463
+ attrs.push({
464
+ key,
465
+ value: value(val),
466
+ });
467
+ }
468
+ }
469
+ return attrs.length > 0 ? attrs : undefined;
470
+ }
471
+ return undefined;
472
+ };
473
+ const basic = extractAttributes('basic');
474
+ const bearer = extractAttributes('bearer');
475
+ const apikey = extractAttributes('apikey');
476
+ const oauth2 = extractAttributes('oauth2');
477
+ const ntlm = extractAttributes('ntlm');
478
+ return {
479
+ ...(type !== undefined ? { type } : {}),
480
+ ...(basic !== undefined ? { basic } : {}),
481
+ ...(bearer !== undefined ? { bearer } : {}),
482
+ ...(apikey !== undefined ? { apikey } : {}),
483
+ ...(oauth2 !== undefined ? { oauth2 } : {}),
484
+ ...(ntlm !== undefined ? { ntlm } : {}),
485
+ };
486
+ }
487
+ function asVariableValue(value) {
488
+ if (value === undefined || value === null)
489
+ return value;
490
+ if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
491
+ return value;
492
+ }
493
+ if (typeof value === 'object') {
494
+ return JSON.stringify(value);
495
+ }
496
+ return undefined;
497
+ }
498
+ function parseVariables(raw, ctx) {
499
+ const vars = [];
500
+ for (const v of raw) {
501
+ if (!isRecord(v))
502
+ continue;
503
+ const key = asString(v['key']);
504
+ if (key !== undefined) {
505
+ const varType = asString(v['type']);
506
+ const desc = extractDescription(v['description']);
507
+ const rawVal = asVariableValue(v['value']);
508
+ const val = typeof rawVal === 'string' ? tv(ctx, rawVal) : rawVal;
509
+ vars.push({
510
+ key,
511
+ ...(val !== undefined ? { value: val } : {}),
512
+ ...(varType !== undefined ? { type: varType } : {}),
513
+ ...(desc !== undefined ? { description: desc } : {}),
514
+ });
515
+ }
516
+ }
517
+ return vars;
518
+ }
@@ -0,0 +1,72 @@
1
+ /**
2
+ * Making sense of what came back: what kind of document it is, how to read it as text, how to show
3
+ * it formatted, and what cookies it set.
4
+ *
5
+ * Everything here is pure and defensive. A response is whatever the server felt like sending — a
6
+ * JSON body labelled `text/plain`, a charset Node has never heard of, HTML where an API was
7
+ * promised, a `Set-Cookie` with an attribute in the wrong order — and none of that may throw,
8
+ * because the user still has to be able to look at it.
9
+ */
10
+ /** What a response body is, as far as the viewer needs to know. */
11
+ export type BodyLanguage = 'json' | 'xml' | 'html' | 'javascript' | 'text' | 'image' | 'binary';
12
+ /**
13
+ * The language of a response body.
14
+ *
15
+ * The declared `Content-Type` is believed first, but only so far: `text/plain` and
16
+ * `application/octet-stream` are what servers send when they have not thought about it, so a body
17
+ * that begins like JSON or XML is treated as such. A structured suffix (`+json`, `+xml`) counts as
18
+ * its base type, which is what `application/problem+json` and every SOAP-ish REST API rely on.
19
+ */
20
+ export declare function detectLanguage(contentType: string | undefined, bytes: Uint8Array): BodyLanguage;
21
+ /** A body decoded to text, plus a note when its declared charset could not be honoured. */
22
+ export interface DecodedText {
23
+ readonly text: string;
24
+ /** Set when the charset label was unsupported and UTF-8 was used instead. */
25
+ readonly problem?: string;
26
+ }
27
+ /**
28
+ * Decodes a body to text per the charset in its `Content-Type`, defaulting to UTF-8.
29
+ *
30
+ * Never throws and never returns nothing: an unsupported label falls back to UTF-8 with a note,
31
+ * and invalid bytes become replacement characters, because a body the user cannot read at all is
32
+ * worse than one they can read imperfectly.
33
+ */
34
+ export declare function decodeResponseText(bytes: Uint8Array, contentType: string | undefined): DecodedText;
35
+ /** A formatted body, and whether formatting actually changed anything. */
36
+ export interface PrettyBody {
37
+ readonly text: string;
38
+ readonly changed: boolean;
39
+ /** Set when the body could not be formatted (malformed JSON or XML); `text` is then the input. */
40
+ readonly problem?: string;
41
+ }
42
+ /**
43
+ * Formats a body for reading: JSON re-indented, XML through the engine's own pretty printer, HTML
44
+ * given one tag per line.
45
+ *
46
+ * A malformed document is returned unchanged with a problem rather than repaired or rejected — the
47
+ * broken body *is* the interesting thing when an API misbehaves, and hiding it would hide the bug.
48
+ */
49
+ export declare function prettyBody(text: string, language: BodyLanguage, indent?: number): PrettyBody;
50
+ /** One cookie a response set, with the attributes it declared. */
51
+ export interface Cookie {
52
+ readonly name: string;
53
+ readonly value: string;
54
+ readonly domain?: string;
55
+ readonly path?: string;
56
+ /** As declared, in ISO form when it could be parsed; absent for a session cookie. */
57
+ readonly expires?: string;
58
+ readonly maxAge?: number;
59
+ readonly secure?: boolean;
60
+ readonly httpOnly?: boolean;
61
+ readonly sameSite?: 'Strict' | 'Lax' | 'None';
62
+ /** Set when the header could not be parsed as a cookie; `name` then holds the whole line. */
63
+ readonly malformed?: boolean;
64
+ }
65
+ /**
66
+ * Parses every `Set-Cookie` header of a response (RFC 6265 §5.2).
67
+ *
68
+ * `rawHeaders` rather than the merged map, because several cookies arrive as several headers and
69
+ * joining them with `, ` — which is what merging does — makes them unparseable. A line that is not
70
+ * a cookie at all is kept as `malformed` instead of dropped: it is evidence about the server.
71
+ */
72
+ export declare function parseSetCookie(rawHeaders: readonly (readonly [string, string])[]): Cookie[];