@wirebench/engine 2.2.1 → 3.1.0-rc.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 (566) hide show
  1. package/README.md +134 -1
  2. package/dist/account/schema.d.ts +34 -0
  3. package/dist/account/schema.js +29 -0
  4. package/dist/assert/callback.d.ts +76 -0
  5. package/dist/assert/callback.js +320 -0
  6. package/dist/assert/capture-source.d.ts +50 -0
  7. package/dist/assert/capture-source.js +89 -0
  8. package/dist/assert/check.d.ts +8 -0
  9. package/dist/assert/check.js +18 -0
  10. package/dist/assert/header.d.ts +5 -0
  11. package/dist/assert/header.js +48 -0
  12. package/dist/assert/index.d.ts +2 -2
  13. package/dist/assert/index.js +12 -0
  14. package/dist/assert/match.d.ts +6 -0
  15. package/dist/assert/match.js +13 -4
  16. package/dist/assert/model.d.ts +110 -3
  17. package/dist/assert/model.js +16 -1
  18. package/dist/assert/schema.d.ts +194 -1
  19. package/dist/assert/schema.js +154 -12
  20. package/dist/assert/status-names.d.ts +9 -0
  21. package/dist/assert/status-names.js +27 -0
  22. package/dist/assert/status.d.ts +4 -1
  23. package/dist/assert/status.js +27 -3
  24. package/dist/asyncapi/browser.d.ts +7 -0
  25. package/dist/asyncapi/browser.js +6 -0
  26. package/dist/asyncapi/frame-check-worker-host.d.ts +44 -0
  27. package/dist/asyncapi/frame-check-worker-host.js +175 -0
  28. package/dist/asyncapi/frame-check-worker.d.ts +12 -0
  29. package/dist/asyncapi/frame-check-worker.js +25 -0
  30. package/dist/asyncapi/frame-check.d.ts +25 -0
  31. package/dist/asyncapi/frame-check.js +78 -0
  32. package/dist/asyncapi/import.d.ts +25 -0
  33. package/dist/asyncapi/import.js +34 -0
  34. package/dist/asyncapi/map.d.ts +40 -0
  35. package/dist/asyncapi/map.js +230 -0
  36. package/dist/asyncapi/model.d.ts +84 -0
  37. package/dist/asyncapi/model.js +7 -0
  38. package/dist/asyncapi/normalise-2.d.ts +13 -0
  39. package/dist/asyncapi/normalise-2.js +113 -0
  40. package/dist/asyncapi/normalise-3.d.ts +14 -0
  41. package/dist/asyncapi/normalise-3.js +133 -0
  42. package/dist/asyncapi/parse.d.ts +31 -0
  43. package/dist/asyncapi/parse.js +85 -0
  44. package/dist/asyncapi/read.d.ts +35 -0
  45. package/dist/asyncapi/read.js +186 -0
  46. package/dist/asyncapi/security.d.ts +14 -0
  47. package/dist/asyncapi/security.js +55 -0
  48. package/dist/asyncapi/update.d.ts +53 -0
  49. package/dist/asyncapi/update.js +220 -0
  50. package/dist/errors.d.ts +16 -0
  51. package/dist/errors.js +22 -0
  52. package/dist/grpc/events.d.ts +22 -0
  53. package/dist/grpc/events.js +1 -0
  54. package/dist/grpc/expand.d.ts +1 -1
  55. package/dist/grpc/expand.js +15 -5
  56. package/dist/grpc/files.d.ts +271 -0
  57. package/dist/grpc/files.js +62 -0
  58. package/dist/grpc/model.d.ts +11 -1
  59. package/dist/grpc/module.d.ts +2 -0
  60. package/dist/grpc/module.js +13 -0
  61. package/dist/grpc/run.d.ts +73 -0
  62. package/dist/grpc/run.js +407 -0
  63. package/dist/grpc/script-types.d.ts +8 -0
  64. package/dist/grpc/script-types.js +149 -0
  65. package/dist/grpc/scripting.d.ts +34 -0
  66. package/dist/grpc/scripting.js +147 -0
  67. package/dist/grpc/send-input.d.ts +46 -0
  68. package/dist/grpc/send-input.js +42 -0
  69. package/dist/grpc/send.d.ts +2 -2
  70. package/dist/grpc/status.d.ts +9 -2
  71. package/dist/grpc/status.js +11 -24
  72. package/dist/grpc/storage.d.ts +9 -0
  73. package/dist/grpc/storage.js +167 -0
  74. package/dist/{rest/auth.d.ts → http/auth/apply-auth.d.ts} +4 -4
  75. package/dist/{rest/auth.js → http/auth/apply-auth.js} +1 -1
  76. package/dist/http/auth/apply.d.ts +1 -1
  77. package/dist/{rest → http/auth}/oauth2.d.ts +2 -2
  78. package/dist/{rest → http/auth}/oauth2.js +1 -1
  79. package/dist/http/auth/send-auth.d.ts +57 -0
  80. package/dist/http/auth/send-auth.js +7 -0
  81. package/dist/http/client.js +150 -8
  82. package/dist/http/cookies.d.ts +79 -0
  83. package/dist/http/cookies.js +81 -0
  84. package/dist/http/curl.d.ts +4 -14
  85. package/dist/http/curl.js +4 -154
  86. package/dist/http/decompress.d.ts +7 -0
  87. package/dist/http/decompress.js +23 -1
  88. package/dist/http/document-fetch.d.ts +42 -0
  89. package/dist/http/document-fetch.js +207 -0
  90. package/dist/http/entries.d.ts +27 -0
  91. package/dist/http/entries.js +16 -0
  92. package/dist/http/escape.d.ts +18 -0
  93. package/dist/http/escape.js +30 -0
  94. package/dist/http/fetch-document.d.ts +28 -0
  95. package/dist/{wsdl/fetch.js → http/fetch-document.js} +8 -16
  96. package/dist/http/media-type.d.ts +9 -0
  97. package/dist/http/media-type.js +12 -0
  98. package/dist/http/transcript-cap.d.ts +26 -0
  99. package/dist/http/transcript-cap.js +36 -0
  100. package/dist/http/types.d.ts +59 -0
  101. package/dist/http/webhook-signature.d.ts +81 -0
  102. package/dist/http/webhook-signature.js +227 -0
  103. package/dist/import-detect.d.ts +2 -2
  104. package/dist/import-detect.js +10 -1
  105. package/dist/index.d.ts +207 -55
  106. package/dist/index.js +129 -32
  107. package/dist/json/cursor.d.ts +2 -0
  108. package/dist/json/cursor.js +1 -0
  109. package/dist/json/pointer-range.d.ts +18 -0
  110. package/dist/json/pointer-range.js +157 -0
  111. package/dist/json/schema/model.d.ts +59 -0
  112. package/dist/json/schema/model.js +8 -0
  113. package/dist/json/schema/parse-text.d.ts +16 -0
  114. package/dist/json/schema/parse-text.js +37 -0
  115. package/dist/{rest/openapi → json/schema}/refs.d.ts +2 -2
  116. package/dist/{rest/openapi → json/schema}/refs.js +3 -3
  117. package/dist/{rest/openapi → json/schema}/sample.d.ts +4 -0
  118. package/dist/{rest/openapi → json/schema}/sample.js +2 -2
  119. package/dist/json/schema/source.d.ts +21 -0
  120. package/dist/json/schema/source.js +8 -0
  121. package/dist/json/schema-validate.d.ts +49 -0
  122. package/dist/json/schema-validate.js +557 -0
  123. package/dist/{wss/keystore → keystore}/index.js +1 -1
  124. package/dist/{wss/keystore → keystore}/pem.js +1 -1
  125. package/dist/{wss/keystore → keystore}/pkcs12.js +1 -1
  126. package/dist/project/attachments-cache.d.ts +3 -1
  127. package/dist/{wsdl → project}/cache-naming.js +1 -1
  128. package/dist/project/endpoints.d.ts +18 -8
  129. package/dist/project/endpoints.js +21 -6
  130. package/dist/project/environments.d.ts +7 -5
  131. package/dist/project/history.d.ts +105 -9
  132. package/dist/project/history.js +195 -23
  133. package/dist/project/inherit.d.ts +7 -0
  134. package/dist/project/inherit.js +9 -0
  135. package/dist/project/keystores.d.ts +1 -1
  136. package/dist/project/load-helpers.d.ts +89 -0
  137. package/dist/project/load-helpers.js +177 -0
  138. package/dist/project/load.d.ts +30 -4
  139. package/dist/project/load.js +168 -545
  140. package/dist/project/managed-files.d.ts +36 -0
  141. package/dist/project/managed-files.js +97 -0
  142. package/dist/project/migrate.d.ts +2 -2
  143. package/dist/project/migrate.js +2 -2
  144. package/dist/project/model.d.ts +92 -14
  145. package/dist/project/model.js +50 -4
  146. package/dist/project/paths.d.ts +10 -1
  147. package/dist/project/paths.js +10 -1
  148. package/dist/project/preferences.d.ts +11 -2
  149. package/dist/project/preferences.js +5 -1
  150. package/dist/project/properties.d.ts +31 -17
  151. package/dist/project/properties.js +89 -70
  152. package/dist/project/request-location.d.ts +20 -0
  153. package/dist/project/request-location.js +62 -0
  154. package/dist/project/save.d.ts +12 -2
  155. package/dist/project/save.js +186 -141
  156. package/dist/project/schema-parts.d.ts +337 -0
  157. package/dist/project/schema-parts.js +248 -0
  158. package/dist/project/schema.d.ts +72 -928
  159. package/dist/project/schema.js +17 -466
  160. package/dist/project/sequence-guards.d.ts +43 -0
  161. package/dist/project/sequence-guards.js +109 -0
  162. package/dist/project/serialize-helpers.d.ts +60 -0
  163. package/dist/project/serialize-helpers.js +108 -0
  164. package/dist/project/serialize.d.ts +7 -8
  165. package/dist/project/serialize.js +34 -293
  166. package/dist/protocol/features.d.ts +51 -0
  167. package/dist/protocol/features.js +64 -0
  168. package/dist/protocol/index.d.ts +7 -0
  169. package/dist/protocol/index.js +4 -0
  170. package/dist/protocol/module.d.ts +247 -0
  171. package/dist/protocol/module.js +48 -0
  172. package/dist/protocol/registry.d.ts +42 -0
  173. package/dist/protocol/registry.js +47 -0
  174. package/dist/protocols.d.ts +77 -0
  175. package/dist/protocols.js +40 -0
  176. package/dist/redact/index.d.ts +12 -1
  177. package/dist/redact/index.js +55 -7
  178. package/dist/redact/literal.d.ts +10 -0
  179. package/dist/redact/literal.js +110 -12
  180. package/dist/rest/body.d.ts +2 -10
  181. package/dist/rest/body.js +3 -25
  182. package/dist/rest/browser.d.ts +4 -0
  183. package/dist/rest/browser.js +5 -0
  184. package/dist/rest/contract-check-worker-host.d.ts +36 -0
  185. package/dist/rest/contract-check-worker-host.js +158 -0
  186. package/dist/rest/contract-check-worker.d.ts +7 -0
  187. package/dist/rest/contract-check-worker.js +28 -0
  188. package/dist/rest/contract-check.d.ts +43 -0
  189. package/dist/rest/contract-check.js +217 -0
  190. package/dist/rest/cookie-jar.d.ts +62 -0
  191. package/dist/rest/cookie-jar.js +262 -0
  192. package/dist/rest/cookies.d.ts +6 -22
  193. package/dist/rest/cookies.js +6 -42
  194. package/dist/rest/curl.js +5 -1
  195. package/dist/rest/events.d.ts +12 -0
  196. package/dist/rest/events.js +1 -0
  197. package/dist/rest/expand.d.ts +6 -1
  198. package/dist/rest/expand.js +29 -11
  199. package/dist/rest/files.d.ts +439 -0
  200. package/dist/rest/files.js +107 -0
  201. package/dist/rest/json-form.d.ts +97 -0
  202. package/dist/rest/json-form.js +396 -0
  203. package/dist/rest/model.d.ts +35 -24
  204. package/dist/rest/model.js +6 -9
  205. package/dist/rest/module.d.ts +2 -0
  206. package/dist/rest/module.js +13 -0
  207. package/dist/rest/openapi/cache.d.ts +7 -2
  208. package/dist/rest/openapi/cache.js +2 -2
  209. package/dist/rest/openapi/import.d.ts +11 -16
  210. package/dist/rest/openapi/import.js +6 -2
  211. package/dist/rest/openapi/map.d.ts +38 -1
  212. package/dist/rest/openapi/map.js +151 -41
  213. package/dist/rest/openapi/match.d.ts +20 -0
  214. package/dist/rest/openapi/match.js +117 -0
  215. package/dist/rest/openapi/model.d.ts +33 -45
  216. package/dist/rest/openapi/parse.d.ts +3 -12
  217. package/dist/rest/openapi/parse.js +138 -67
  218. package/dist/rest/openapi/responses.d.ts +23 -0
  219. package/dist/rest/openapi/responses.js +59 -0
  220. package/dist/rest/openapi/runtime-expression.d.ts +69 -0
  221. package/dist/rest/openapi/runtime-expression.js +213 -0
  222. package/dist/rest/openapi/update.d.ts +116 -0
  223. package/dist/rest/openapi/update.js +456 -0
  224. package/dist/rest/postman/map.d.ts +1 -0
  225. package/dist/rest/postman/map.js +66 -4
  226. package/dist/rest/postman/model.d.ts +9 -0
  227. package/dist/rest/postman/parse.js +33 -10
  228. package/dist/rest/response.d.ts +2 -23
  229. package/dist/rest/response.js +3 -75
  230. package/dist/rest/run.d.ts +56 -0
  231. package/dist/rest/run.js +395 -0
  232. package/dist/rest/script-types.d.ts +7 -0
  233. package/dist/rest/script-types.js +83 -0
  234. package/dist/rest/scripting.d.ts +38 -0
  235. package/dist/rest/scripting.js +282 -0
  236. package/dist/rest/send-input.d.ts +54 -0
  237. package/dist/rest/send-input.js +73 -0
  238. package/dist/rest/send.d.ts +77 -4
  239. package/dist/rest/send.js +128 -7
  240. package/dist/rest/sse-transcript.d.ts +25 -0
  241. package/dist/rest/sse-transcript.js +95 -0
  242. package/dist/rest/sse.d.ts +43 -0
  243. package/dist/rest/sse.js +195 -0
  244. package/dist/rest/storage.d.ts +26 -0
  245. package/dist/rest/storage.js +262 -0
  246. package/dist/rest/url.d.ts +10 -4
  247. package/dist/rest/url.js +38 -5
  248. package/dist/run/baseline-update.d.ts +35 -0
  249. package/dist/run/baseline-update.js +97 -0
  250. package/dist/run/baseline.d.ts +42 -0
  251. package/dist/run/baseline.js +93 -0
  252. package/dist/run/context.d.ts +86 -0
  253. package/dist/run/context.js +31 -0
  254. package/dist/run/current-values.d.ts +32 -0
  255. package/dist/run/current-values.js +43 -0
  256. package/dist/run/event-queue.d.ts +14 -0
  257. package/dist/run/event-queue.js +46 -0
  258. package/dist/run/exchange.d.ts +62 -0
  259. package/dist/run/exchange.js +65 -0
  260. package/dist/run/host.d.ts +89 -0
  261. package/dist/run/host.js +1 -0
  262. package/dist/run/index.d.ts +20 -7
  263. package/dist/run/index.js +12 -4
  264. package/dist/run/oauth2-token.d.ts +42 -0
  265. package/dist/run/oauth2-token.js +92 -0
  266. package/dist/run/open.d.ts +12 -0
  267. package/dist/run/open.js +16 -0
  268. package/dist/run/run.d.ts +124 -4
  269. package/dist/run/run.js +293 -134
  270. package/dist/run/scope.d.ts +11 -0
  271. package/dist/run/scope.js +26 -0
  272. package/dist/run/script-support.d.ts +53 -0
  273. package/dist/run/script-support.js +68 -0
  274. package/dist/run/secret-needs.d.ts +11 -4
  275. package/dist/run/secret-needs.js +48 -96
  276. package/dist/run/select.d.ts +34 -25
  277. package/dist/run/select.js +45 -54
  278. package/dist/run/send-helpers.d.ts +93 -0
  279. package/dist/run/send-helpers.js +255 -0
  280. package/dist/run/tree.d.ts +50 -0
  281. package/dist/run/tree.js +54 -0
  282. package/dist/script/api/postman.d.ts +10 -0
  283. package/dist/script/api/postman.js +264 -0
  284. package/dist/script/api/prelude.d.ts +20 -0
  285. package/dist/script/api/prelude.js +215 -0
  286. package/dist/script/apply.d.ts +44 -0
  287. package/dist/script/apply.js +120 -0
  288. package/dist/script/check/host.d.ts +41 -0
  289. package/dist/script/check/host.js +143 -0
  290. package/dist/script/check/service.d.ts +52 -0
  291. package/dist/script/check/service.js +195 -0
  292. package/dist/script/check/worker.d.ts +1 -0
  293. package/dist/script/check/worker.js +40 -0
  294. package/dist/script/index.d.ts +16 -0
  295. package/dist/script/index.js +10 -0
  296. package/dist/script/lookup.d.ts +10 -0
  297. package/dist/script/lookup.js +23 -0
  298. package/dist/script/model.d.ts +82 -0
  299. package/dist/script/model.js +18 -0
  300. package/dist/script/props.d.ts +8 -0
  301. package/dist/script/props.js +28 -0
  302. package/dist/script/request-scripts.d.ts +83 -0
  303. package/dist/script/request-scripts.js +160 -0
  304. package/dist/script/run.d.ts +47 -0
  305. package/dist/script/run.js +146 -0
  306. package/dist/script/sandbox/execute.d.ts +26 -0
  307. package/dist/script/sandbox/execute.js +212 -0
  308. package/dist/script/sandbox/host-api.d.ts +27 -0
  309. package/dist/script/sandbox/host-api.js +101 -0
  310. package/dist/script/sandbox/host.d.ts +18 -0
  311. package/dist/script/sandbox/host.js +172 -0
  312. package/dist/script/sandbox/model.d.ts +69 -0
  313. package/dist/script/sandbox/model.js +24 -0
  314. package/dist/script/sandbox/worker.d.ts +1 -0
  315. package/dist/script/sandbox/worker.js +20 -0
  316. package/dist/script/send.d.ts +27 -0
  317. package/dist/script/send.js +76 -0
  318. package/dist/script/strip.d.ts +5 -0
  319. package/dist/script/strip.js +43 -0
  320. package/dist/script/types/api.d.ts +38 -0
  321. package/dist/script/types/api.js +113 -0
  322. package/dist/script/types/json-schema.d.ts +26 -0
  323. package/dist/script/types/json-schema.js +206 -0
  324. package/dist/secrets/env-names.d.ts +9 -1
  325. package/dist/secrets/env-names.js +17 -1
  326. package/dist/secrets/resolve.d.ts +44 -4
  327. package/dist/secrets/resolve.js +58 -1
  328. package/dist/secrets/scan/apply.d.ts +36 -0
  329. package/dist/secrets/scan/apply.js +194 -0
  330. package/dist/secrets/scan/rules.d.ts +32 -0
  331. package/dist/secrets/scan/rules.js +346 -0
  332. package/dist/secrets/scan/scan.d.ts +6 -0
  333. package/dist/secrets/scan/scan.js +57 -0
  334. package/dist/secrets/scan/walk.d.ts +70 -0
  335. package/dist/secrets/scan/walk.js +156 -0
  336. package/dist/secrets/secret-refs.d.ts +8 -0
  337. package/dist/secrets/secret-refs.js +25 -0
  338. package/dist/secrets/secret-token.d.ts +17 -0
  339. package/dist/secrets/secret-token.js +25 -0
  340. package/dist/sequence/file.d.ts +169 -0
  341. package/dist/sequence/file.js +237 -0
  342. package/dist/sequence/index.d.ts +7 -0
  343. package/dist/sequence/index.js +5 -0
  344. package/dist/sequence/load.d.ts +32 -0
  345. package/dist/sequence/load.js +56 -0
  346. package/dist/sequence/model.d.ts +115 -0
  347. package/dist/sequence/model.js +53 -0
  348. package/dist/sequence/run.d.ts +131 -0
  349. package/dist/sequence/run.js +191 -0
  350. package/dist/sequence/transfer.d.ts +24 -0
  351. package/dist/sequence/transfer.js +75 -0
  352. package/dist/server-api/audit.d.ts +455 -0
  353. package/dist/server-api/audit.js +186 -0
  354. package/dist/server-api/ci-tokens.d.ts +50 -0
  355. package/dist/server-api/ci-tokens.js +35 -0
  356. package/dist/server-api/hooks.d.ts +337 -0
  357. package/dist/server-api/hooks.js +152 -0
  358. package/dist/server-api/identity.d.ts +210 -0
  359. package/dist/server-api/identity.js +115 -0
  360. package/dist/server-api/licensing.d.ts +80 -0
  361. package/dist/server-api/licensing.js +53 -0
  362. package/dist/server-api/live.d.ts +132 -0
  363. package/dist/server-api/live.js +102 -0
  364. package/dist/server-api/meta.d.ts +31 -0
  365. package/dist/server-api/meta.js +21 -0
  366. package/dist/server-api/sync.d.ts +179 -0
  367. package/dist/server-api/sync.js +124 -0
  368. package/dist/server-api/teams.d.ts +306 -0
  369. package/dist/server-api/teams.js +113 -0
  370. package/dist/snapshot/diff.d.ts +30 -0
  371. package/dist/snapshot/diff.js +75 -0
  372. package/dist/snapshot/format.d.ts +17 -0
  373. package/dist/snapshot/format.js +40 -0
  374. package/dist/snapshot/golden-file.d.ts +45 -0
  375. package/dist/snapshot/golden-file.js +173 -0
  376. package/dist/snapshot/ignore.d.ts +14 -0
  377. package/dist/snapshot/ignore.js +79 -0
  378. package/dist/snapshot/index.d.ts +9 -0
  379. package/dist/snapshot/index.js +9 -0
  380. package/dist/snapshot/json-diff.d.ts +3 -0
  381. package/dist/snapshot/json-diff.js +93 -0
  382. package/dist/snapshot/xml-diff.d.ts +10 -0
  383. package/dist/snapshot/xml-diff.js +194 -0
  384. package/dist/soap/auth.d.ts +26 -0
  385. package/dist/soap/auth.js +54 -0
  386. package/dist/soap/curl.d.ts +20 -0
  387. package/dist/soap/curl.js +161 -0
  388. package/dist/soap/expand.d.ts +24 -0
  389. package/dist/soap/expand.js +95 -0
  390. package/dist/soap/files.d.ts +384 -0
  391. package/dist/soap/files.js +114 -0
  392. package/dist/soap/form-request.d.ts +13 -0
  393. package/dist/soap/form-request.js +2 -2
  394. package/dist/soap/generate.d.ts +12 -0
  395. package/dist/{generate.js → soap/generate.js} +4 -4
  396. package/dist/{import.d.ts → soap/import.d.ts} +4 -4
  397. package/dist/{import.js → soap/import.js} +13 -13
  398. package/dist/soap/json-operation.d.ts +35 -0
  399. package/dist/soap/json-operation.js +225 -0
  400. package/dist/soap/legacy-project/env-refs.d.ts +19 -0
  401. package/dist/soap/legacy-project/env-refs.js +105 -0
  402. package/dist/soap/legacy-project/map.d.ts +2 -2
  403. package/dist/soap/legacy-project/map.js +6 -0
  404. package/dist/soap/mime/multipart.d.ts +2 -2
  405. package/dist/soap/mime/multipart.js +2 -5
  406. package/dist/soap/mime/send-pipeline.d.ts +1 -1
  407. package/dist/soap/mime/send-pipeline.js +1 -1
  408. package/dist/soap/mime/types.d.ts +1 -3
  409. package/dist/soap/module.d.ts +2 -0
  410. package/dist/soap/module.js +13 -0
  411. package/dist/soap/namespace-scope.js +1 -1
  412. package/dist/soap/operations.d.ts +12 -0
  413. package/dist/{operations.js → soap/operations.js} +4 -4
  414. package/dist/soap/run.d.ts +70 -0
  415. package/dist/soap/run.js +549 -0
  416. package/dist/soap/script-types.d.ts +65 -0
  417. package/dist/soap/script-types.js +379 -0
  418. package/dist/soap/scripting.d.ts +45 -0
  419. package/dist/soap/scripting.js +221 -0
  420. package/dist/soap/send-input.d.ts +61 -0
  421. package/dist/{send-options.js → soap/send-input.js} +5 -109
  422. package/dist/{send.d.ts → soap/send.d.ts} +1 -1
  423. package/dist/{send.js → soap/send.js} +28 -12
  424. package/dist/soap/storage.d.ts +9 -0
  425. package/dist/soap/storage.js +237 -0
  426. package/dist/soap/transforms.d.ts +3 -12
  427. package/dist/soap/transforms.js +3 -14
  428. package/dist/{types.d.ts → soap/types.d.ts} +34 -84
  429. package/dist/sync/git-cli.d.ts +202 -0
  430. package/dist/sync/git-cli.js +684 -0
  431. package/dist/sync/three-way-merge.d.ts +41 -0
  432. package/dist/sync/three-way-merge.js +85 -0
  433. package/dist/sync/tree-paths.d.ts +34 -0
  434. package/dist/sync/tree-paths.js +131 -0
  435. package/dist/team-secrets/envelope.d.ts +10 -0
  436. package/dist/team-secrets/envelope.js +121 -0
  437. package/dist/team-secrets/errors.d.ts +26 -0
  438. package/dist/team-secrets/errors.js +27 -0
  439. package/dist/team-secrets/index.d.ts +14 -0
  440. package/dist/team-secrets/index.js +8 -0
  441. package/dist/team-secrets/keys.d.ts +52 -0
  442. package/dist/team-secrets/keys.js +158 -0
  443. package/dist/team-secrets/log.d.ts +48 -0
  444. package/dist/team-secrets/log.js +175 -0
  445. package/dist/team-secrets/resolve-conflict.d.ts +7 -0
  446. package/dist/team-secrets/resolve-conflict.js +14 -0
  447. package/dist/team-secrets/schema.d.ts +97 -0
  448. package/dist/team-secrets/schema.js +157 -0
  449. package/dist/team-secrets/sign.d.ts +24 -0
  450. package/dist/team-secrets/sign.js +71 -0
  451. package/dist/team-secrets/vault.d.ts +49 -0
  452. package/dist/team-secrets/vault.js +148 -0
  453. package/dist/validate/wsi/run-message.d.ts +2 -2
  454. package/dist/validate/wsi/run-message.js +1 -1
  455. package/dist/validate/wsi/run-wsdl.d.ts +2 -2
  456. package/dist/validate/wsi/run-wsdl.js +1 -1
  457. package/dist/validate/wsi/types.d.ts +1 -1
  458. package/dist/webhooks/model.d.ts +138 -0
  459. package/dist/webhooks/model.js +150 -0
  460. package/dist/workspace/commit-message.d.ts +1 -1
  461. package/dist/workspace/commit-message.js +6 -1
  462. package/dist/workspace/environments.d.ts +11 -4
  463. package/dist/workspace/environments.js +12 -0
  464. package/dist/workspace/index.d.ts +3 -3
  465. package/dist/workspace/index.js +2 -2
  466. package/dist/workspace/paths.d.ts +5 -2
  467. package/dist/workspace/paths.js +5 -2
  468. package/dist/workspace/schema.d.ts +7 -3
  469. package/dist/workspace/schema.js +24 -3
  470. package/dist/workspace/share.d.ts +30 -11
  471. package/dist/workspace/share.js +32 -6
  472. package/dist/ws/call.d.ts +1 -1
  473. package/dist/ws/call.js +2 -2
  474. package/dist/ws/connect.d.ts +60 -0
  475. package/dist/ws/connect.js +131 -0
  476. package/dist/ws/events.d.ts +17 -0
  477. package/dist/ws/events.js +1 -0
  478. package/dist/ws/expand.d.ts +1 -1
  479. package/dist/ws/expand.js +1 -1
  480. package/dist/ws/files.d.ts +284 -0
  481. package/dist/ws/files.js +71 -0
  482. package/dist/ws/history-entry.d.ts +44 -0
  483. package/dist/ws/history-entry.js +93 -0
  484. package/dist/ws/model.d.ts +44 -3
  485. package/dist/ws/model.js +3 -0
  486. package/dist/ws/module.d.ts +2 -0
  487. package/dist/ws/module.js +11 -0
  488. package/dist/ws/run.d.ts +63 -0
  489. package/dist/ws/run.js +470 -0
  490. package/dist/ws/session.d.ts +18 -0
  491. package/dist/ws/session.js +52 -25
  492. package/dist/ws/storage.d.ts +9 -0
  493. package/dist/ws/storage.js +176 -0
  494. package/dist/ws/transcript.d.ts +3 -4
  495. package/dist/ws/transcript.js +26 -17
  496. package/dist/ws/url.d.ts +1 -1
  497. package/dist/wsdl/cache.js +1 -1
  498. package/dist/wsdl/docs-generator.d.ts +3 -3
  499. package/dist/wsdl/docs-generator.js +1 -1
  500. package/dist/wsdl/export-definition.js +1 -1
  501. package/dist/wsdl/qname.d.ts +2 -5
  502. package/dist/wsdl/resolver.d.ts +4 -11
  503. package/dist/wsdl/resolver.js +3 -3
  504. package/dist/wsdl/update-definition.d.ts +5 -5
  505. package/dist/wsdl/update-definition.js +6 -6
  506. package/dist/wss/apply.js +1 -1
  507. package/dist/{project/wss-configs.d.ts → wss/configs.d.ts} +2 -2
  508. package/dist/{project/wss-configs.js → wss/configs.js} +2 -2
  509. package/dist/wss/incoming/decrypt.d.ts +1 -1
  510. package/dist/wss/incoming/index.js +1 -1
  511. package/dist/wss/incoming/verify.d.ts +1 -1
  512. package/dist/wss/incoming/verify.js +1 -1
  513. package/dist/wss/key-identifiers.js +1 -1
  514. package/dist/wss/model.d.ts +1 -1
  515. package/dist/wss/outgoing/encryption.d.ts +1 -1
  516. package/dist/wss/outgoing/signature.d.ts +1 -1
  517. package/dist/xml/decode.d.ts +15 -0
  518. package/dist/xml/decode.js +22 -0
  519. package/dist/xml/entitize.d.ts +17 -0
  520. package/dist/xml/entitize.js +19 -0
  521. package/dist/xml/index.d.ts +1 -1
  522. package/dist/xml/index.js +1 -1
  523. package/dist/xml/locate.d.ts +39 -0
  524. package/dist/xml/locate.js +117 -0
  525. package/dist/xml/qname.d.ts +12 -0
  526. package/dist/xml/qname.js +8 -0
  527. package/dist/xpath/evaluate-async.d.ts +19 -0
  528. package/dist/xpath/evaluate-async.js +31 -11
  529. package/dist/xpath/evaluate.d.ts +1 -1
  530. package/dist/xpath/namespaces.js +1 -1
  531. package/dist/xpath/worker.d.ts +11 -5
  532. package/dist/xpath/worker.js +24 -7
  533. package/dist/xsd/form-model.d.ts +19 -2
  534. package/dist/xsd/form-model.js +14 -2
  535. package/dist/xsd/json-bridge.d.ts +152 -0
  536. package/dist/xsd/json-bridge.js +1213 -0
  537. package/dist/xsd/locate.d.ts +2 -30
  538. package/dist/xsd/locate.js +1 -109
  539. package/dist/xsd/xml-scan.d.ts +2 -0
  540. package/dist/xsd/xml-scan.js +1 -1
  541. package/dist/xsd/xml-writer.d.ts +2 -0
  542. package/dist/xsd/xml-writer.js +4 -0
  543. package/package.json +12 -1
  544. package/dist/generate.d.ts +0 -12
  545. package/dist/operations.d.ts +0 -12
  546. package/dist/run/effective-auth.d.ts +0 -10
  547. package/dist/run/effective-auth.js +0 -19
  548. package/dist/run/prepare.d.ts +0 -43
  549. package/dist/run/prepare.js +0 -280
  550. package/dist/send-options.d.ts +0 -141
  551. package/dist/wsdl/fetch.d.ts +0 -13
  552. /package/dist/{soap → http}/charset.d.ts +0 -0
  553. /package/dist/{soap → http}/charset.js +0 -0
  554. /package/dist/{wsdl → http}/ref-policy.d.ts +0 -0
  555. /package/dist/{wsdl → http}/ref-policy.js +0 -0
  556. /package/dist/{wss/keystore → keystore}/certificate.d.ts +0 -0
  557. /package/dist/{wss/keystore → keystore}/certificate.js +0 -0
  558. /package/dist/{wss/keystore → keystore}/index.d.ts +0 -0
  559. /package/dist/{wss/keystore → keystore}/model.d.ts +0 -0
  560. /package/dist/{wss/keystore → keystore}/model.js +0 -0
  561. /package/dist/{wss/keystore → keystore}/pem.d.ts +0 -0
  562. /package/dist/{wss/keystore → keystore}/pkcs12.d.ts +0 -0
  563. /package/dist/{wsdl → project}/cache-naming.d.ts +0 -0
  564. /package/dist/{types.js → soap/types.js} +0 -0
  565. /package/dist/{soap → xml}/prefixes.d.ts +0 -0
  566. /package/dist/{soap → xml}/prefixes.js +0 -0
@@ -0,0 +1,113 @@
1
+ import { defaultRegistry } from '../../protocols.js';
2
+ import { requireScripting } from '../lookup.js';
3
+ const COMMON = `
4
+ /** A case-insensitive list of headers (or gRPC metadata), in order. Names may repeat. */
5
+ interface WbPairs {
6
+ get(name: string): string | undefined;
7
+ getAll(name: string): string[];
8
+ has(name: string): boolean;
9
+ list(): { name: string; value: string }[];
10
+ toObject(): Record<string, string>;
11
+ }
12
+ /** Headers a pre-request script can change. A value may not hold CR, LF or NUL. */
13
+ interface WbWritablePairs extends WbPairs {
14
+ /** Replaces every entry of that name with one, where the first one was. */
15
+ set(name: string, value: string): void;
16
+ add(name: string, value: string): void;
17
+ delete(name: string): void;
18
+ }
19
+
20
+ interface WbExpectation<T> {
21
+ toBe(expected: T): void;
22
+ toEqual(expected: T): void;
23
+ toBeDefined(): void;
24
+ toBeUndefined(): void;
25
+ toBeNull(): void;
26
+ toBeTruthy(): void;
27
+ toBeFalsy(): void;
28
+ toContain(item: T extends readonly (infer I)[] ? I : string): void;
29
+ toMatch(pattern: RegExp | string): void;
30
+ toBeGreaterThan(value: number): void;
31
+ toBeLessThan(value: number): void;
32
+ toHaveLength(length: number): void;
33
+ toHaveProperty(path: string | readonly string[], value?: unknown): void;
34
+ readonly not: Omit<WbExpectation<T>, 'not'>;
35
+ }
36
+
37
+ /** This run's values: set here, read by later requests as \`\${#Sequence#name}\`. */
38
+ declare const vars: {
39
+ get(name: string): string | undefined;
40
+ /** A value is used exactly as set: never expanded, always escaped where it lands. */
41
+ set(name: string, value: string | number | boolean, options?: { secret?: boolean }): void;
42
+ };
43
+ /** Resolved properties. A secret is never returned. */
44
+ declare const props: { get(name: string): string | undefined };
45
+ /** The secrets this request's \`scripts.secrets\` lists, and no others. */
46
+ declare const secrets: { get(name: WbSecretName): string };
47
+ declare const crypto: {
48
+ hash(algorithm: 'md5' | 'sha1' | 'sha256' | 'sha512', data: string, encoding?: 'hex' | 'base64'): string;
49
+ hmac(algorithm: 'sha1' | 'sha256' | 'sha512', key: string, data: string, encoding?: 'hex' | 'base64'): string;
50
+ randomUUID(): string;
51
+ };
52
+ declare const encoding: {
53
+ base64(text: string): string;
54
+ fromBase64(text: string): string;
55
+ base64url(text: string): string;
56
+ urlEncode(text: string): string;
57
+ };
58
+ declare function log(...values: unknown[]): void;
59
+ declare const console: {
60
+ log(...values: unknown[]): void;
61
+ info(...values: unknown[]): void;
62
+ warn(...values: unknown[]): void;
63
+ error(...values: unknown[]): void;
64
+ debug(...values: unknown[]): void;
65
+ };
66
+ /** Records a test; a failed \`expect\` inside it fails the test, and the script goes on. */
67
+ declare function test(name: string, check: () => void): void;
68
+ declare function expect<T>(actual: T): WbExpectation<T>;
69
+ `;
70
+ /**
71
+ * The API's declarations for one protocol and phase. `scripting` is the protocol's facet, or its
72
+ * `kind`, looked up in `registry` (the built-in one when absent).
73
+ *
74
+ * @throws WirebenchError `script-unsupported` when a `kind` has no scripting facet
75
+ */
76
+ export function apiDeclarations(scripting, phase, registry) {
77
+ return [COMMON, requireScripting(scripting, registry).declarations(phase)].join('\n');
78
+ }
79
+ /**
80
+ * Everything a script is checked against: the API, its secret names, and the request's generated types.
81
+ *
82
+ * @throws WirebenchError `script-unsupported` when a `kind` has no scripting facet
83
+ */
84
+ export function scriptDeclarations(scripting, phase, secrets, generated, registry) {
85
+ return `${apiDeclarations(scripting, phase, registry)}\n${secretNameType(secrets)}\n${generated}`;
86
+ }
87
+ /** `type WbSecretName = ...` for the secrets a request lists (`never` when it lists none). */
88
+ export function secretNameType(secrets) {
89
+ const names = secrets.map((name) => JSON.stringify(name));
90
+ return `type WbSecretName = ${names.length > 0 ? names.join(' | ') : 'never'};\n`;
91
+ }
92
+ /** Orders two protocols' sections by the title of the first, in code-unit order. */
93
+ function byFirstTitle(a, b) {
94
+ const left = a[0]?.title ?? '';
95
+ const right = b[0]?.title ?? '';
96
+ return left < right ? -1 : left > right ? 1 : 0;
97
+ }
98
+ /**
99
+ * The API's declarations as the docs site's reference shows them (`pnpm docs:script-api`): what
100
+ * every script has, then the sections of each protocol in `registry` that has a scripting facet.
101
+ * Protocols are ordered by title, not by registration, so the page does not depend on the order a
102
+ * host composed its modules in. The status literal types are described rather than listed.
103
+ */
104
+ export function apiReference(registry = defaultRegistry()) {
105
+ const perProtocol = registry.modules
106
+ .map((module) => module.scripting?.reference() ?? [])
107
+ .filter((sections) => sections.length > 0)
108
+ .sort(byFirstTitle);
109
+ return [{ title: 'Every script', declarations: COMMON }, ...perProtocol.flat()].map((section) => ({
110
+ title: section.title,
111
+ declarations: section.declarations.trim(),
112
+ }));
113
+ }
@@ -0,0 +1,26 @@
1
+ /** A property name as a TypeScript key. */
2
+ export declare function propertyKey(name: string): string;
3
+ /**
4
+ * Types many schemas into one set of declarations, sharing aliases between them: `typeOf` returns a
5
+ * type expression, and `declarations()` the alias declarations those expressions use.
6
+ */
7
+ export declare class JsonSchemaTypes {
8
+ private readonly prefix;
9
+ private readonly aliases;
10
+ private readonly declared;
11
+ private readonly shared;
12
+ private size;
13
+ constructor(prefix?: string);
14
+ /** Marks the nodes that need an alias: those reached twice, or that reach themselves. */
15
+ private scan;
16
+ private children;
17
+ typeOf(schema: unknown): string;
18
+ declarations(): string;
19
+ private expression;
20
+ private body;
21
+ private core;
22
+ /** The type the schema's own `type`, `properties` and `items` say, when they say anything. */
23
+ private ownType;
24
+ private arrayType;
25
+ private objectType;
26
+ }
@@ -0,0 +1,206 @@
1
+ /** Past these, a node is typed `unknown`. */
2
+ const LIMITS = { depth: 32, aliases: 500, outputChars: 1_000_000 };
3
+ const IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;
4
+ function isSchema(value) {
5
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
6
+ }
7
+ /** A property name as a TypeScript key. */
8
+ export function propertyKey(name) {
9
+ return IDENTIFIER.test(name) ? name : JSON.stringify(name);
10
+ }
11
+ /** A JSDoc line for a description, or nothing. `*\/` inside it cannot end the comment. */
12
+ function docComment(description, indent) {
13
+ if (typeof description !== 'string' || description.trim() === '') {
14
+ return '';
15
+ }
16
+ const text = description.trim().replace(/\*\//g, '*\\/').split(/\r?\n/).join(`\n${indent} * `);
17
+ return `${indent}/** ${text} */\n`;
18
+ }
19
+ function literal(value) {
20
+ if (value === null)
21
+ return 'null';
22
+ if (typeof value === 'string' || typeof value === 'boolean')
23
+ return JSON.stringify(value);
24
+ if (typeof value === 'number' && Number.isFinite(value))
25
+ return String(value);
26
+ return undefined;
27
+ }
28
+ function union(parts) {
29
+ const unique = [...new Set(parts)];
30
+ if (unique.length === 0)
31
+ return 'never';
32
+ if (unique.includes('unknown'))
33
+ return 'unknown';
34
+ return unique.length === 1 ? unique[0] : unique.map((p) => (p.includes('=>') ? `(${p})` : p)).join(' | ');
35
+ }
36
+ /**
37
+ * Types many schemas into one set of declarations, sharing aliases between them: `typeOf` returns a
38
+ * type expression, and `declarations()` the alias declarations those expressions use.
39
+ */
40
+ export class JsonSchemaTypes {
41
+ prefix;
42
+ aliases = new Map();
43
+ declared = [];
44
+ shared = new Set();
45
+ size = 0;
46
+ constructor(prefix = 'WbT') {
47
+ this.prefix = prefix;
48
+ }
49
+ /** Marks the nodes that need an alias: those reached twice, or that reach themselves. */
50
+ scan(root) {
51
+ const seen = new Set();
52
+ const onPath = new Set();
53
+ const visit = (node, depth) => {
54
+ if (!isSchema(node) || depth > LIMITS.depth)
55
+ return;
56
+ if (onPath.has(node) || seen.has(node)) {
57
+ this.shared.add(node);
58
+ return;
59
+ }
60
+ seen.add(node);
61
+ onPath.add(node);
62
+ for (const child of this.children(node))
63
+ visit(child, depth + 1);
64
+ onPath.delete(node);
65
+ };
66
+ visit(root, 0);
67
+ }
68
+ children(node) {
69
+ const out = [];
70
+ if (isSchema(node.properties))
71
+ out.push(...Object.values(node.properties));
72
+ if (node.items !== undefined)
73
+ out.push(node.items);
74
+ if (isSchema(node.additionalProperties))
75
+ out.push(node.additionalProperties);
76
+ for (const list of [node.allOf, node.oneOf, node.anyOf])
77
+ if (Array.isArray(list))
78
+ out.push(...list);
79
+ return out;
80
+ }
81
+ typeOf(schema) {
82
+ this.scan(schema);
83
+ return this.expression(schema, 0);
84
+ }
85
+ declarations() {
86
+ return this.declared.join('');
87
+ }
88
+ expression(schema, depth) {
89
+ if (!isSchema(schema) || depth > LIMITS.depth || this.size > LIMITS.outputChars) {
90
+ return 'unknown';
91
+ }
92
+ const existing = this.aliases.get(schema);
93
+ if (existing !== undefined)
94
+ return existing;
95
+ if (!this.shared.has(schema))
96
+ return this.body(schema, depth);
97
+ if (this.aliases.size >= LIMITS.aliases)
98
+ return 'unknown';
99
+ const name = `${this.prefix}${String(this.aliases.size + 1)}`;
100
+ // Named before its body is built, so a cycle back to it refers to the name.
101
+ this.aliases.set(schema, name);
102
+ const body = this.body(schema, depth);
103
+ const declaration = `${docComment(schema.description, '')}type ${name} = ${body};\n`;
104
+ this.size += declaration.length;
105
+ this.declared.push(declaration);
106
+ return name;
107
+ }
108
+ body(schema, depth) {
109
+ if (typeof schema.$ref === 'string') {
110
+ // A reference the parser could not resolve.
111
+ return 'unknown';
112
+ }
113
+ const nullable = schema.nullable === true || (Array.isArray(schema.type) && schema.type.includes('null'));
114
+ let type = this.core(schema, depth);
115
+ if (nullable && type !== 'unknown' && !type.split(' | ').includes('null')) {
116
+ type = union([type, 'null']);
117
+ }
118
+ return type;
119
+ }
120
+ core(schema, depth) {
121
+ if (schema.const !== undefined) {
122
+ return literal(schema.const) ?? 'unknown';
123
+ }
124
+ if (Array.isArray(schema.enum)) {
125
+ const values = schema.enum.map(literal);
126
+ return values.every((v) => v !== undefined) ? union(values) : 'unknown';
127
+ }
128
+ const parts = [];
129
+ const own = this.ownType(schema, depth);
130
+ if (own !== undefined)
131
+ parts.push(own);
132
+ if (Array.isArray(schema.allOf) && schema.allOf.length > 0) {
133
+ const all = schema.allOf.map((s) => this.expression(s, depth + 1));
134
+ if (all.includes('unknown'))
135
+ return 'unknown';
136
+ parts.push(...all);
137
+ return parts.length === 1 ? parts[0] : parts.map((p) => (p.includes('|') ? `(${p})` : p)).join(' & ');
138
+ }
139
+ for (const alternatives of [schema.oneOf, schema.anyOf]) {
140
+ if (Array.isArray(alternatives) && alternatives.length > 0) {
141
+ const choice = union(alternatives.map((s) => this.expression(s, depth + 1)));
142
+ if (choice === 'unknown')
143
+ return 'unknown';
144
+ return own === undefined ? choice : `${own.includes('|') ? `(${own})` : own} & (${choice})`;
145
+ }
146
+ }
147
+ return own ?? 'unknown';
148
+ }
149
+ /** The type the schema's own `type`, `properties` and `items` say, when they say anything. */
150
+ ownType(schema, depth) {
151
+ const declared = schema.type === undefined ? [] : Array.isArray(schema.type) ? schema.type : [schema.type];
152
+ const types = declared.filter((t) => t !== 'null');
153
+ if (types.length === 0) {
154
+ if (isSchema(schema.properties) || schema.additionalProperties !== undefined)
155
+ return this.objectType(schema, depth);
156
+ if (schema.items !== undefined)
157
+ return this.arrayType(schema, depth);
158
+ return declared.includes('null') ? 'null' : undefined;
159
+ }
160
+ const mapped = types.map((type) => {
161
+ switch (type) {
162
+ case 'string':
163
+ return 'string';
164
+ case 'integer':
165
+ case 'number':
166
+ return 'number';
167
+ case 'boolean':
168
+ return 'boolean';
169
+ case 'array':
170
+ return this.arrayType(schema, depth);
171
+ case 'object':
172
+ return this.objectType(schema, depth);
173
+ default:
174
+ return 'unknown';
175
+ }
176
+ });
177
+ return union(mapped);
178
+ }
179
+ arrayType(schema, depth) {
180
+ const item = schema.items === undefined ? 'unknown' : this.expression(schema.items, depth + 1);
181
+ return /^[A-Za-z0-9_$]+$/.test(item) ? `${item}[]` : `(${item})[]`;
182
+ }
183
+ objectType(schema, depth) {
184
+ const indent = ' '.repeat(Math.min(depth, 8) + 1);
185
+ const required = new Set(Array.isArray(schema.required) ? schema.required : []);
186
+ const lines = [];
187
+ if (isSchema(schema.properties)) {
188
+ for (const [name, property] of Object.entries(schema.properties)) {
189
+ const optional = required.has(name) ? '' : '?';
190
+ const doc = isSchema(property) ? docComment(property.description, indent) : '';
191
+ lines.push(`${doc}${indent}${propertyKey(name)}${optional}: ${this.expression(property, depth + 1)};\n`);
192
+ }
193
+ }
194
+ const extra = schema.additionalProperties;
195
+ if (extra === true || (extra === undefined && !isSchema(schema.properties))) {
196
+ lines.push(`${indent}[key: string]: unknown;\n`);
197
+ }
198
+ else if (isSchema(extra)) {
199
+ // Beside declared properties an index signature must admit their types too, so it widens.
200
+ const value = lines.length > 0 ? 'unknown' : `${this.expression(extra, depth + 1)} | undefined`;
201
+ lines.push(`${indent}[key: string]: ${value};\n`);
202
+ }
203
+ const closing = ' '.repeat(Math.min(depth, 8));
204
+ return lines.length === 0 ? 'Record<string, never>' : `{\n${lines.join('')}${closing}}`;
205
+ }
206
+ }
@@ -9,6 +9,12 @@
9
9
  import type { AuthConfig, EndpointAuth } from '../project/model.js';
10
10
  /** The prefix every secret-carrying environment variable name starts with. */
11
11
  export declare const SECRET_ENV_PREFIX = "WIREBENCH_SECRET_";
12
+ /**
13
+ * The pseudo-ref a webhook signing secret is asked for when its node names only a CI variable
14
+ * (webhook-signatures §5.2): `webhook-signing:<secretEnv>`. Like a `${secret:name}` token's, its
15
+ * name is already stable, so only `WIREBENCH_SECRET_<secretEnv>` is read.
16
+ */
17
+ export declare const SIGNING_PSEUDO_REF_PREFIX = "webhook-signing:";
12
18
  /** One secret a run must be given, and the friendlier name the file declares for it, if any. */
13
19
  export interface SecretNeed {
14
20
  /** The opaque reference in the file. */
@@ -22,6 +28,8 @@ export interface SecretNeed {
22
28
  export declare function secretNeedsOfAuth(auth: AuthConfig | EndpointAuth | undefined): SecretNeed[];
23
29
  /**
24
30
  * The variables a host reads for one secret, in order: the declared name, then the reference
25
- * itself. The reference form exists so a project nobody has annotated can still run in CI.
31
+ * itself. The reference form exists so a project nobody has annotated can still run in CI. A
32
+ * `${secret:name}` token's pseudo-ref has a stable name already, so it is read from
33
+ * `WIREBENCH_SECRET_<NAME>` alone.
26
34
  */
27
35
  export declare function envVariablesFor(secret: Pick<SecretNeed, 'ref' | 'envName'>): string[];
@@ -6,8 +6,15 @@
6
6
  * friendlier `…Env` name beside the ref — not a secret, safe to commit — and this module is where
7
7
  * that name and the ref both turn into the environment variables a headless run is allowed to read.
8
8
  */
9
+ import { parseSecretPseudoRef, secretEnvName } from './secret-token.js';
9
10
  /** The prefix every secret-carrying environment variable name starts with. */
10
11
  export const SECRET_ENV_PREFIX = 'WIREBENCH_SECRET_';
12
+ /**
13
+ * The pseudo-ref a webhook signing secret is asked for when its node names only a CI variable
14
+ * (webhook-signatures §5.2): `webhook-signing:<secretEnv>`. Like a `${secret:name}` token's, its
15
+ * name is already stable, so only `WIREBENCH_SECRET_<secretEnv>` is read.
16
+ */
17
+ export const SIGNING_PSEUDO_REF_PREFIX = 'webhook-signing:';
11
18
  function need(ref, envName, purpose) {
12
19
  return ref === undefined || ref.length === 0 ? [] : [{ ref, ...(envName !== undefined ? { envName } : {}), purpose }];
13
20
  }
@@ -32,9 +39,18 @@ export function secretNeedsOfAuth(auth) {
32
39
  }
33
40
  /**
34
41
  * The variables a host reads for one secret, in order: the declared name, then the reference
35
- * itself. The reference form exists so a project nobody has annotated can still run in CI.
42
+ * itself. The reference form exists so a project nobody has annotated can still run in CI. A
43
+ * `${secret:name}` token's pseudo-ref has a stable name already, so it is read from
44
+ * `WIREBENCH_SECRET_<NAME>` alone.
36
45
  */
37
46
  export function envVariablesFor(secret) {
47
+ if (secret.ref.startsWith(SIGNING_PSEUDO_REF_PREFIX)) {
48
+ return [`${SECRET_ENV_PREFIX}${secret.envName ?? secret.ref.slice(SIGNING_PSEUDO_REF_PREFIX.length)}`];
49
+ }
50
+ const name = parseSecretPseudoRef(secret.ref);
51
+ if (name !== undefined) {
52
+ return [`${SECRET_ENV_PREFIX}${secretEnvName(name)}`];
53
+ }
38
54
  const byRef = `${SECRET_ENV_PREFIX}${secret.ref.toUpperCase().replace(/[^A-Z0-9]/g, '_')}`;
39
55
  return secret.envName !== undefined ? [`${SECRET_ENV_PREFIX}${secret.envName}`, byRef] : [byRef];
40
56
  }
@@ -1,11 +1,18 @@
1
1
  /**
2
2
  * Resolves an `EndpointAuth` (which only ever carries a `passwordRef`) into the plaintext shape
3
- * the engine's `importDefinition`/send path expects. Kept pure — the secret getter is injected —
3
+ * the engine's `importWsdl`/send path expects. Kept pure — the secret getter is injected —
4
4
  * so it needs no Electron and is trivially testable without a real `SecretStore`.
5
5
  */
6
- import type { AuthConfig, EndpointAuth } from '../project/model.js';
7
- import type { SendAuth } from '../types.js';
8
- /** Turns a `secretRef` into its value. The one seam every host fills in: a keychain, or `process.env`. */
6
+ import type { AuthConfig, SoapOwnerAuth, EndpointAuth } from '../project/model.js';
7
+ import type { SendAuth } from '../http/auth/send-auth.js';
8
+ /**
9
+ * Turns a `secretRef` (or a `secret:<name>` pseudo-ref for a `${secret:name}` token) into its
10
+ * value. The one seam every host fills in: a keychain, or `process.env`.
11
+ *
12
+ * Masking contract: every value a `GetSecret` hands out must be masked by the host — in logs,
13
+ * History, reports and CLI output. The engine keeps no list of its own; the CLI's
14
+ * `createEnvSecrets` records what it returns for its masker, and every host must do the same.
15
+ */
9
16
  export type GetSecret = (ref: string) => Promise<string | undefined>;
10
17
  /**
11
18
  * The message for a `secret-missing` error: in a shared workspace, secret refs travel with the
@@ -56,3 +63,36 @@ export declare function toSendAuth(auth?: ResolvedAuth): SendAuth | undefined;
56
63
  export declare function resolveAuthConfig(auth: AuthConfig | undefined, getSecret: GetSecret, options?: {
57
64
  readonly accessToken?: string;
58
65
  }): Promise<SendAuth | undefined>;
66
+ /**
67
+ * Resolves a SOAP request's owner-level {@link SoapOwnerAuth} into the engine's `SendAuth`.
68
+ *
69
+ * Basic and NTLM go through the same `resolveEndpointAuth`/`toSendAuth` pair the endpoint-only
70
+ * shape has always used, so their semantics (preemptive default, undefined on an incomplete pair)
71
+ * stay exactly as they were before owner auth grew the other schemes. Bearer, API key and OAuth2
72
+ * are resolved through {@link resolveAuthConfig}, the same one REST uses — one implementation of
73
+ * "turn a reference into a value" for every token scheme, SOAP or REST.
74
+ *
75
+ * A caller refusing a SOAP owner's OAuth2 (as `connectSoap` does, matching `connectRest`) should
76
+ * do so before calling this — reached with `options.accessToken` unset, an OAuth2 owner simply
77
+ * resolves to no credentials.
78
+ *
79
+ * @throws WirebenchError `secret-missing` — see {@link resolveEndpointAuth} and
80
+ * {@link resolveAuthConfig}.
81
+ */
82
+ export declare function resolveSoapAuth(auth: SoapOwnerAuth | undefined, getSecret: GetSecret, options?: {
83
+ readonly accessToken?: string;
84
+ }): Promise<SendAuth | undefined>;
85
+ /**
86
+ * The message for a `secret-missing` error on a `${secret:name}` token with no value on this machine,
87
+ * as the desktop app shows it: it names the command that stores one (the CLI says which environment
88
+ * variable to set instead).
89
+ */
90
+ export declare function secretTokenMissingMessage(name: string): string;
91
+ /**
92
+ * The values of the `${secret:name}` tokens a send uses, keyed by name, for `PropertyScopes.secrets`.
93
+ * Each name resolves through `getSecret` as the pseudo-ref `secret:<name>`; a missing one refuses
94
+ * the send rather than expanding to nothing.
95
+ *
96
+ * @throws WirebenchError `secret-missing`, with the pseudo-ref as `details.ref`
97
+ */
98
+ export declare function resolveSecretTokens(names: Iterable<string>, getSecret: GetSecret): Promise<Record<string, string>>;
@@ -1,9 +1,11 @@
1
1
  /**
2
2
  * Resolves an `EndpointAuth` (which only ever carries a `passwordRef`) into the plaintext shape
3
- * the engine's `importDefinition`/send path expects. Kept pure — the secret getter is injected —
3
+ * the engine's `importWsdl`/send path expects. Kept pure — the secret getter is injected —
4
4
  * so it needs no Electron and is trivially testable without a real `SecretStore`.
5
5
  */
6
6
  import { WirebenchError } from '../errors.js';
7
+ import { isEndpointAuth } from '../project/endpoints.js';
8
+ import { secretPseudoRef } from './secret-token.js';
7
9
  /**
8
10
  * The message for a `secret-missing` error: in a shared workspace, secret refs travel with the
9
11
  * project but values stay in each member's local keychain-backed store, so a teammate who joins
@@ -121,6 +123,31 @@ export async function resolveAuthConfig(auth, getSecret, options = {}) {
121
123
  return undefined;
122
124
  }
123
125
  }
126
+ /**
127
+ * Resolves a SOAP request's owner-level {@link SoapOwnerAuth} into the engine's `SendAuth`.
128
+ *
129
+ * Basic and NTLM go through the same `resolveEndpointAuth`/`toSendAuth` pair the endpoint-only
130
+ * shape has always used, so their semantics (preemptive default, undefined on an incomplete pair)
131
+ * stay exactly as they were before owner auth grew the other schemes. Bearer, API key and OAuth2
132
+ * are resolved through {@link resolveAuthConfig}, the same one REST uses — one implementation of
133
+ * "turn a reference into a value" for every token scheme, SOAP or REST.
134
+ *
135
+ * A caller refusing a SOAP owner's OAuth2 (as `connectSoap` does, matching `connectRest`) should
136
+ * do so before calling this — reached with `options.accessToken` unset, an OAuth2 owner simply
137
+ * resolves to no credentials.
138
+ *
139
+ * @throws WirebenchError `secret-missing` — see {@link resolveEndpointAuth} and
140
+ * {@link resolveAuthConfig}.
141
+ */
142
+ export async function resolveSoapAuth(auth, getSecret, options = {}) {
143
+ if (auth === undefined) {
144
+ return undefined;
145
+ }
146
+ if (isEndpointAuth(auth)) {
147
+ return toSendAuth(await resolveEndpointAuth(auth, getSecret));
148
+ }
149
+ return resolveAuthConfig(auth, getSecret, options);
150
+ }
124
151
  /** One reference resolved, or `undefined` when the scheme has none configured yet. */
125
152
  async function requireSecret(ref, getSecret) {
126
153
  if (ref === undefined || ref === '') {
@@ -134,3 +161,33 @@ async function requireSecret(ref, getSecret) {
134
161
  }
135
162
  return value;
136
163
  }
164
+ /**
165
+ * The message for a `secret-missing` error on a `${secret:name}` token with no value on this machine,
166
+ * as the desktop app shows it: it names the command that stores one (the CLI says which environment
167
+ * variable to set instead).
168
+ */
169
+ export function secretTokenMissingMessage(name) {
170
+ return `The secret "${name}" is not on this machine — set it with Set Secret Token Value… (Secrets).`;
171
+ }
172
+ /**
173
+ * The values of the `${secret:name}` tokens a send uses, keyed by name, for `PropertyScopes.secrets`.
174
+ * Each name resolves through `getSecret` as the pseudo-ref `secret:<name>`; a missing one refuses
175
+ * the send rather than expanding to nothing.
176
+ *
177
+ * @throws WirebenchError `secret-missing`, with the pseudo-ref as `details.ref`
178
+ */
179
+ export async function resolveSecretTokens(names, getSecret) {
180
+ const values = {};
181
+ for (const name of names) {
182
+ if (Object.hasOwn(values, name)) {
183
+ continue;
184
+ }
185
+ const ref = secretPseudoRef(name);
186
+ const value = await getSecret(ref);
187
+ if (value === undefined) {
188
+ throw new WirebenchError('secret-missing', secretTokenMissingMessage(name), { details: { ref, name } });
189
+ }
190
+ values[name] = value;
191
+ }
192
+ return values;
193
+ }
@@ -0,0 +1,36 @@
1
+ import type { Project } from '../../project/model.js';
2
+ import type { SecretFinding } from './walk.js';
3
+ export interface SecretMove {
4
+ readonly finding: SecretFinding;
5
+ /** The secret name to write; must match `SECRET_NAME_PATTERN`. */
6
+ readonly name: string;
7
+ }
8
+ export interface SecretMovesResult {
9
+ /** The rewritten project (the input itself when nothing was applied). */
10
+ readonly project: Project;
11
+ /**
12
+ * Ids of the moves not applied: the stored text no longer holds the finding's value at its
13
+ * range, the location no longer exists, the range overlaps another move, or the name is invalid.
14
+ */
15
+ readonly stale: string[];
16
+ /**
17
+ * For each applied move, by finding id, the secret value to store: exactly the text replaced
18
+ * (`finding.value`), still escaped as the surrounding JSON, XML or URL had it. Expansion puts a
19
+ * `${secret:…}` value back verbatim, so storing the raw text restores the original bytes.
20
+ */
21
+ readonly values: Record<string, string>;
22
+ }
23
+ /**
24
+ * Replace each move's finding range with `${secret:name}`. Moves in the same text apply right to
25
+ * left, so earlier ranges stay valid; a REST or WS URL and its query table are separate texts. A move
26
+ * whose text no longer holds `finding.value` at `[valueStart, valueEnd)` is skipped and listed in
27
+ * `stale`. See {@link SecretMovesResult.values} for the value main stores.
28
+ */
29
+ export declare function applySecretMoves(project: Project, moves: readonly SecretMove[]): SecretMovesResult;
30
+ /**
31
+ * The name offered for `finding`: its header, query (in the table or the URL), metadata, field or
32
+ * property name, sanitised to `snake_case` (else a name from its rule: `url_password` for a URL's
33
+ * password), made unique against `taken` ignoring case with a `_2`, `_3`, … suffix. Always matches
34
+ * `SECRET_NAME_PATTERN`.
35
+ */
36
+ export declare function proposeSecretName(finding: SecretFinding, taken: ReadonlySet<string>): string;