@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,12 @@
1
+ /** What a REST send reports while it runs (spec §3.2): the response opening, then each event-stream row. */
2
+ import type { SseRow } from './sse.js';
3
+ export type RestLiveEvent = {
4
+ readonly protocol: 'rest';
5
+ readonly kind: 'open';
6
+ readonly status: number;
7
+ readonly headers: Readonly<Record<string, string>>;
8
+ } | {
9
+ readonly protocol: 'rest';
10
+ readonly kind: 'row';
11
+ readonly row: SseRow;
12
+ };
@@ -0,0 +1 @@
1
+ export {};
@@ -2,7 +2,7 @@
2
2
  * Property expansion for a REST send: every `${…}` reference in the base URL, the URL, the tables
3
3
  * and the body, resolved against the same scopes a SOAP send uses.
4
4
  *
5
- * Separate from `project/properties.ts`'s `expandSendInput` because the two inputs share no fields,
5
+ * Separate from `soap/expand.ts`'s `expandSendInput` because the two inputs share no fields,
6
6
  * but the rules are deliberately the same ones: names as well as values are expanded, an
7
7
  * unresolved reference is reported rather than guessed at, and escaping is applied to the body
8
8
  * alone — escaping a header value or a URL would corrupt it.
@@ -16,6 +16,11 @@ export interface ExpandRestOptions {
16
16
  * entities — which is the request's *escape properties* setting. Off by default.
17
17
  */
18
18
  readonly escape?: boolean;
19
+ /**
20
+ * Leave the request URL exactly as given: it came from a recorded exchange (a callback URL), and
21
+ * values from an exchange are never expanded again (ADR-0015). Everything else still expands.
22
+ */
23
+ readonly literalUrl?: boolean;
19
24
  }
20
25
  /**
21
26
  * Expands every property reference in a REST send input.
@@ -2,13 +2,15 @@
2
2
  * Property expansion for a REST send: every `${…}` reference in the base URL, the URL, the tables
3
3
  * and the body, resolved against the same scopes a SOAP send uses.
4
4
  *
5
- * Separate from `project/properties.ts`'s `expandSendInput` because the two inputs share no fields,
5
+ * Separate from `soap/expand.ts`'s `expandSendInput` because the two inputs share no fields,
6
6
  * but the rules are deliberately the same ones: names as well as values are expanded, an
7
7
  * unresolved reference is reported rather than guessed at, and escaping is applied to the body
8
8
  * alone — escaping a header value or a URL would corrupt it.
9
9
  */
10
10
  import { expand } from '../project/properties.js';
11
+ import { assertNoControlCharacters, assertOriginIndependent, expandWithSequenceEscaped, } from '../project/sequence-guards.js';
11
12
  import { escapeForLanguage } from './body.js';
13
+ import { composeUrl } from './url.js';
12
14
  /**
13
15
  * Expands every property reference in a REST send input.
14
16
  *
@@ -23,34 +25,50 @@ import { escapeForLanguage } from './body.js';
23
25
  */
24
26
  export function expandRestSendInput(input, scopes, options = {}) {
25
27
  const unresolved = [];
26
- const run = (text) => {
28
+ /** Expands `text`; `place`, when given, names a line-oriented field a Sequence value must not break. */
29
+ const run = (text, place) => {
27
30
  const result = expand(text, scopes);
28
31
  unresolved.push(...result.unresolved);
32
+ if (place !== undefined) {
33
+ assertNoControlCharacters(place, result, scopes);
34
+ }
29
35
  return result.text;
30
36
  };
31
- /** A body value: expanded, then escaped for the body's language when the request asks for it. */
37
+ /**
38
+ * A body value: expanded, then escaped for the body's language when the request asks for it. A
39
+ * Sequence value is escaped whether or not the request asks, because it came from a response and
40
+ * could otherwise add fields or elements to the body (ADR-0015).
41
+ */
32
42
  const runBody = (text, language) => {
33
43
  const result = expand(text, scopes);
34
44
  unresolved.push(...result.unresolved);
35
- if (options.escape !== true || language === undefined) {
45
+ if (language === undefined) {
36
46
  return result.text;
37
47
  }
38
48
  // Escaping has to happen per substituted value, not over the finished text, or the body's own
39
49
  // punctuation would be escaped too. `expand` reports which references it replaced, so the
40
50
  // cheapest correct thing is to re-expand with an escaping substitution.
41
- return expand(text, escapedScopes(scopes, language)).text;
51
+ return expandWithSequenceEscaped((s) => (options.escape === true ? expand(text, escapedScopes(s, language)) : expand(text, s)).text, scopes, (value) => escapeForLanguage(value, language));
42
52
  };
43
- const rows = (entries) => entries.map((entry) => ({ ...entry, name: run(entry.name), value: run(entry.value) }));
53
+ const rows = (entries, place) => entries.map((entry) => ({
54
+ ...entry,
55
+ name: run(entry.name, `A ${place} name`),
56
+ value: run(entry.value, `The ${place} ${entry.name}`),
57
+ }));
58
+ const url = (s) => options.literalUrl === true ? input.request.url : expand(input.request.url, s).text;
59
+ // Where the request goes is decided by the base URL, the URL and any path parameter placed in its
60
+ // host, so the guard composes the URL the way `sendRest` will.
61
+ assertOriginIndependent('The request URL', (s) => composeUrl(expand(input.baseUrl, s).text, url(s), input.request.pathParams.map((row) => ({ ...row, value: expand(row.value, s).text })), [], { encode: input.settings.encodeUrl ?? true }).url, scopes);
44
62
  const request = {
45
63
  method: input.request.method,
46
- url: run(input.request.url),
47
- pathParams: rows(input.request.pathParams),
48
- query: rows(input.request.query),
49
- headers: rows(input.request.headers),
64
+ url: options.literalUrl === true ? input.request.url : run(input.request.url, 'The request URL'),
65
+ pathParams: rows(input.request.pathParams, 'path parameter'),
66
+ query: rows(input.request.query, 'query parameter'),
67
+ headers: rows(input.request.headers, 'header'),
50
68
  body: expandBody(input.request.body, run, runBody),
51
69
  };
52
70
  return {
53
- input: { ...input, baseUrl: run(input.baseUrl), request },
71
+ input: { ...input, baseUrl: run(input.baseUrl, 'The base URL'), request },
54
72
  unresolved,
55
73
  };
56
74
  }
@@ -0,0 +1,439 @@
1
+ /**
2
+ * The REST files of a project folder: `apis/<slug>/api.yaml` with `kind: rest`, and each
3
+ * `*.request.yaml` of its request tree (spec §3.2). The same request schema reads the items of the
4
+ * project's webhook collection, which is REST requests in a tree of its own.
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * A request body as persisted. A raw body names its sibling file rather than carrying its text:
9
+ * `file` is a bare file name in the request's own directory, validated as a path segment before
10
+ * anything is read or written (ADR-0005).
11
+ */
12
+ export declare const restBodySchema: z.ZodUnion<readonly [z.ZodObject<{
13
+ kind: z.ZodLiteral<"none">;
14
+ }, z.core.$loose>, z.ZodObject<{
15
+ kind: z.ZodLiteral<"raw">;
16
+ language: z.ZodEnum<{
17
+ xml: "xml";
18
+ json: "json";
19
+ text: "text";
20
+ html: "html";
21
+ javascript: "javascript";
22
+ }>;
23
+ contentType: z.ZodOptional<z.ZodString>;
24
+ file: z.ZodString;
25
+ }, z.core.$loose>, z.ZodObject<{
26
+ kind: z.ZodLiteral<"form">;
27
+ fields: z.ZodDefault<z.ZodArray<z.ZodObject<{
28
+ name: z.ZodString;
29
+ value: z.ZodString;
30
+ enabled: z.ZodDefault<z.ZodBoolean>;
31
+ description: z.ZodOptional<z.ZodString>;
32
+ }, z.core.$loose>>>;
33
+ }, z.core.$loose>, z.ZodObject<{
34
+ kind: z.ZodLiteral<"multipart">;
35
+ parts: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
36
+ kind: z.ZodLiteral<"text">;
37
+ name: z.ZodString;
38
+ value: z.ZodString;
39
+ enabled: z.ZodDefault<z.ZodBoolean>;
40
+ contentType: z.ZodOptional<z.ZodString>;
41
+ }, z.core.$loose>, z.ZodObject<{
42
+ kind: z.ZodLiteral<"file">;
43
+ name: z.ZodString;
44
+ source: z.ZodUnion<readonly [z.ZodObject<{
45
+ kind: z.ZodLiteral<"cache">;
46
+ sha256: z.ZodString;
47
+ }, z.core.$loose>, z.ZodObject<{
48
+ kind: z.ZodLiteral<"path">;
49
+ path: z.ZodString;
50
+ }, z.core.$loose>]>;
51
+ enabled: z.ZodDefault<z.ZodBoolean>;
52
+ fileName: z.ZodOptional<z.ZodString>;
53
+ contentType: z.ZodOptional<z.ZodString>;
54
+ }, z.core.$loose>]>>>;
55
+ }, z.core.$loose>, z.ZodObject<{
56
+ kind: z.ZodLiteral<"binary">;
57
+ source: z.ZodUnion<readonly [z.ZodObject<{
58
+ kind: z.ZodLiteral<"cache">;
59
+ sha256: z.ZodString;
60
+ }, z.core.$loose>, z.ZodObject<{
61
+ kind: z.ZodLiteral<"path">;
62
+ path: z.ZodString;
63
+ }, z.core.$loose>]>;
64
+ contentType: z.ZodString;
65
+ }, z.core.$loose>]>;
66
+ /** `apis/<slug>/requests/[<folder>/…]<name>.request.yaml`. */
67
+ export declare const restRequestFileSchema: z.ZodObject<{
68
+ kind: z.ZodLiteral<"rest">;
69
+ id: z.ZodString;
70
+ name: z.ZodString;
71
+ order: z.ZodNumber;
72
+ description: z.ZodOptional<z.ZodString>;
73
+ method: z.ZodString;
74
+ url: z.ZodString;
75
+ pathParams: z.ZodDefault<z.ZodArray<z.ZodObject<{
76
+ name: z.ZodString;
77
+ value: z.ZodString;
78
+ enabled: z.ZodDefault<z.ZodBoolean>;
79
+ description: z.ZodOptional<z.ZodString>;
80
+ }, z.core.$loose>>>;
81
+ query: z.ZodDefault<z.ZodArray<z.ZodObject<{
82
+ name: z.ZodString;
83
+ value: z.ZodString;
84
+ enabled: z.ZodDefault<z.ZodBoolean>;
85
+ description: z.ZodOptional<z.ZodString>;
86
+ }, z.core.$loose>>>;
87
+ headers: z.ZodDefault<z.ZodArray<z.ZodObject<{
88
+ name: z.ZodString;
89
+ value: z.ZodString;
90
+ enabled: z.ZodDefault<z.ZodBoolean>;
91
+ description: z.ZodOptional<z.ZodString>;
92
+ }, z.core.$loose>>>;
93
+ body: z.ZodDefault<z.ZodUnion<readonly [z.ZodObject<{
94
+ kind: z.ZodLiteral<"none">;
95
+ }, z.core.$loose>, z.ZodObject<{
96
+ kind: z.ZodLiteral<"raw">;
97
+ language: z.ZodEnum<{
98
+ xml: "xml";
99
+ json: "json";
100
+ text: "text";
101
+ html: "html";
102
+ javascript: "javascript";
103
+ }>;
104
+ contentType: z.ZodOptional<z.ZodString>;
105
+ file: z.ZodString;
106
+ }, z.core.$loose>, z.ZodObject<{
107
+ kind: z.ZodLiteral<"form">;
108
+ fields: z.ZodDefault<z.ZodArray<z.ZodObject<{
109
+ name: z.ZodString;
110
+ value: z.ZodString;
111
+ enabled: z.ZodDefault<z.ZodBoolean>;
112
+ description: z.ZodOptional<z.ZodString>;
113
+ }, z.core.$loose>>>;
114
+ }, z.core.$loose>, z.ZodObject<{
115
+ kind: z.ZodLiteral<"multipart">;
116
+ parts: z.ZodDefault<z.ZodArray<z.ZodUnion<readonly [z.ZodObject<{
117
+ kind: z.ZodLiteral<"text">;
118
+ name: z.ZodString;
119
+ value: z.ZodString;
120
+ enabled: z.ZodDefault<z.ZodBoolean>;
121
+ contentType: z.ZodOptional<z.ZodString>;
122
+ }, z.core.$loose>, z.ZodObject<{
123
+ kind: z.ZodLiteral<"file">;
124
+ name: z.ZodString;
125
+ source: z.ZodUnion<readonly [z.ZodObject<{
126
+ kind: z.ZodLiteral<"cache">;
127
+ sha256: z.ZodString;
128
+ }, z.core.$loose>, z.ZodObject<{
129
+ kind: z.ZodLiteral<"path">;
130
+ path: z.ZodString;
131
+ }, z.core.$loose>]>;
132
+ enabled: z.ZodDefault<z.ZodBoolean>;
133
+ fileName: z.ZodOptional<z.ZodString>;
134
+ contentType: z.ZodOptional<z.ZodString>;
135
+ }, z.core.$loose>]>>>;
136
+ }, z.core.$loose>, z.ZodObject<{
137
+ kind: z.ZodLiteral<"binary">;
138
+ source: z.ZodUnion<readonly [z.ZodObject<{
139
+ kind: z.ZodLiteral<"cache">;
140
+ sha256: z.ZodString;
141
+ }, z.core.$loose>, z.ZodObject<{
142
+ kind: z.ZodLiteral<"path">;
143
+ path: z.ZodString;
144
+ }, z.core.$loose>]>;
145
+ contentType: z.ZodString;
146
+ }, z.core.$loose>]>>;
147
+ auth: z.ZodDefault<z.ZodUnion<readonly [z.ZodObject<{
148
+ type: z.ZodEnum<{
149
+ none: "none";
150
+ basic: "basic";
151
+ ntlm: "ntlm";
152
+ }>;
153
+ username: z.ZodOptional<z.ZodString>;
154
+ passwordRef: z.ZodOptional<z.ZodString>;
155
+ passwordEnv: z.ZodOptional<z.ZodString>;
156
+ domain: z.ZodOptional<z.ZodString>;
157
+ workstation: z.ZodOptional<z.ZodString>;
158
+ preemptive: z.ZodOptional<z.ZodBoolean>;
159
+ }, z.core.$loose>, z.ZodObject<{
160
+ type: z.ZodLiteral<"inherit">;
161
+ }, z.core.$loose>, z.ZodObject<{
162
+ type: z.ZodLiteral<"bearer">;
163
+ tokenRef: z.ZodOptional<z.ZodString>;
164
+ tokenEnv: z.ZodOptional<z.ZodString>;
165
+ scheme: z.ZodOptional<z.ZodString>;
166
+ }, z.core.$loose>, z.ZodObject<{
167
+ type: z.ZodLiteral<"api-key">;
168
+ name: z.ZodString;
169
+ valueRef: z.ZodOptional<z.ZodString>;
170
+ valueEnv: z.ZodOptional<z.ZodString>;
171
+ in: z.ZodEnum<{
172
+ header: "header";
173
+ query: "query";
174
+ }>;
175
+ }, z.core.$loose>, z.ZodObject<{
176
+ type: z.ZodLiteral<"oauth2">;
177
+ grant: z.ZodEnum<{
178
+ "client-credentials": "client-credentials";
179
+ "authorization-code": "authorization-code";
180
+ }>;
181
+ tokenUrl: z.ZodString;
182
+ authorizationUrl: z.ZodOptional<z.ZodString>;
183
+ clientId: z.ZodString;
184
+ clientSecretRef: z.ZodOptional<z.ZodString>;
185
+ clientSecretEnv: z.ZodOptional<z.ZodString>;
186
+ scopes: z.ZodDefault<z.ZodArray<z.ZodString>>;
187
+ audience: z.ZodOptional<z.ZodString>;
188
+ clientAuth: z.ZodDefault<z.ZodEnum<{
189
+ basic: "basic";
190
+ body: "body";
191
+ }>>;
192
+ pkce: z.ZodDefault<z.ZodBoolean>;
193
+ refreshTokenRef: z.ZodOptional<z.ZodString>;
194
+ }, z.core.$loose>]>>;
195
+ settings: z.ZodDefault<z.ZodObject<{
196
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
197
+ followRedirects: z.ZodOptional<z.ZodBoolean>;
198
+ maxRedirects: z.ZodOptional<z.ZodNumber>;
199
+ keepBodyOnRedirect: z.ZodOptional<z.ZodBoolean>;
200
+ encodeUrl: z.ZodOptional<z.ZodBoolean>;
201
+ trustInvalid: z.ZodOptional<z.ZodBoolean>;
202
+ sslKeystoreRef: z.ZodOptional<z.ZodString>;
203
+ bindAddress: z.ZodOptional<z.ZodString>;
204
+ maxSizeBytes: z.ZodOptional<z.ZodNumber>;
205
+ sendCookies: z.ZodOptional<z.ZodBoolean>;
206
+ escapeProperties: z.ZodOptional<z.ZodBoolean>;
207
+ }, z.core.$loose>>;
208
+ assertions: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
209
+ type: z.ZodLiteral<"status">;
210
+ equals: z.ZodUnion<readonly [z.ZodUnion<readonly [z.ZodNumber, z.ZodNumber, z.ZodString, z.ZodEnum<{
211
+ [x: string]: string;
212
+ }>]>, z.ZodArray<z.ZodUnion<readonly [z.ZodNumber, z.ZodNumber, z.ZodString, z.ZodEnum<{
213
+ [x: string]: string;
214
+ }>]>>]>;
215
+ name: z.ZodOptional<z.ZodString>;
216
+ }, z.core.$loose>, z.ZodObject<{
217
+ type: z.ZodLiteral<"soap-fault">;
218
+ expect: z.ZodDefault<z.ZodEnum<{
219
+ none: "none";
220
+ present: "present";
221
+ }>>;
222
+ name: z.ZodOptional<z.ZodString>;
223
+ }, z.core.$loose>, z.ZodObject<{
224
+ type: z.ZodLiteral<"match">;
225
+ language: z.ZodEnum<{
226
+ xpath: "xpath";
227
+ xquery: "xquery";
228
+ jsonpath: "jsonpath";
229
+ }>;
230
+ expression: z.ZodString;
231
+ namespaces: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
232
+ equals: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber, z.ZodBoolean]>>;
233
+ matches: z.ZodOptional<z.ZodString>;
234
+ exists: z.ZodOptional<z.ZodBoolean>;
235
+ name: z.ZodOptional<z.ZodString>;
236
+ }, z.core.$loose>, z.ZodObject<{
237
+ type: z.ZodLiteral<"schema">;
238
+ name: z.ZodOptional<z.ZodString>;
239
+ }, z.core.$loose>, z.ZodObject<{
240
+ type: z.ZodLiteral<"sla">;
241
+ maxMs: z.ZodNumber;
242
+ name: z.ZodOptional<z.ZodString>;
243
+ }, z.core.$loose>, z.ZodObject<{
244
+ type: z.ZodLiteral<"callback">;
245
+ catchUrl: z.ZodString;
246
+ withinMs: z.ZodDefault<z.ZodNumber>;
247
+ match: z.ZodDefault<z.ZodObject<{
248
+ method: z.ZodOptional<z.ZodString>;
249
+ path: z.ZodOptional<z.ZodString>;
250
+ pathMatches: z.ZodOptional<z.ZodString>;
251
+ headers: z.ZodOptional<z.ZodArray<z.ZodObject<{
252
+ equals: z.ZodOptional<z.ZodString>;
253
+ matches: z.ZodOptional<z.ZodString>;
254
+ exists: z.ZodOptional<z.ZodBoolean>;
255
+ name: z.ZodString;
256
+ }, z.core.$loose>>>;
257
+ body: z.ZodOptional<z.ZodObject<{
258
+ equals: z.ZodOptional<z.ZodString>;
259
+ matches: z.ZodOptional<z.ZodString>;
260
+ exists: z.ZodOptional<z.ZodBoolean>;
261
+ language: z.ZodEnum<{
262
+ xpath: "xpath";
263
+ jsonpath: "jsonpath";
264
+ }>;
265
+ path: z.ZodString;
266
+ }, z.core.$loose>>;
267
+ }, z.core.$loose>>;
268
+ expect: z.ZodDefault<z.ZodArray<z.ZodObject<{
269
+ body: z.ZodOptional<z.ZodObject<{
270
+ equals: z.ZodOptional<z.ZodString>;
271
+ matches: z.ZodOptional<z.ZodString>;
272
+ exists: z.ZodOptional<z.ZodBoolean>;
273
+ language: z.ZodEnum<{
274
+ xpath: "xpath";
275
+ jsonpath: "jsonpath";
276
+ }>;
277
+ path: z.ZodString;
278
+ }, z.core.$loose>>;
279
+ header: z.ZodOptional<z.ZodObject<{
280
+ equals: z.ZodOptional<z.ZodString>;
281
+ matches: z.ZodOptional<z.ZodString>;
282
+ exists: z.ZodOptional<z.ZodBoolean>;
283
+ name: z.ZodString;
284
+ }, z.core.$loose>>;
285
+ signature: z.ZodOptional<z.ZodLiteral<"verified">>;
286
+ }, z.core.$loose>>>;
287
+ name: z.ZodOptional<z.ZodString>;
288
+ }, z.core.$loose>], "type">>>;
289
+ orphaned: z.ZodOptional<z.ZodBoolean>;
290
+ contract: z.ZodOptional<z.ZodObject<{
291
+ method: z.ZodString;
292
+ path: z.ZodString;
293
+ }, z.core.$loose>>;
294
+ hook: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
295
+ kind: z.ZodLiteral<"webhook">;
296
+ name: z.ZodString;
297
+ }, z.core.$loose>, z.ZodObject<{
298
+ kind: z.ZodLiteral<"callback">;
299
+ operation: z.ZodString;
300
+ name: z.ZodString;
301
+ expression: z.ZodString;
302
+ }, z.core.$loose>], "kind">>;
303
+ signing: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
304
+ mode: z.ZodLiteral<"none">;
305
+ }, z.core.$loose>, z.ZodObject<{
306
+ mode: z.ZodLiteral<"sign">;
307
+ scheme: z.ZodDiscriminatedUnion<[z.ZodObject<{
308
+ kind: z.ZodLiteral<"hmac">;
309
+ algorithm: z.ZodEnum<{
310
+ sha256: "sha256";
311
+ sha1: "sha1";
312
+ sha512: "sha512";
313
+ }>;
314
+ encoding: z.ZodEnum<{
315
+ base64: "base64";
316
+ hex: "hex";
317
+ }>;
318
+ header: z.ZodString;
319
+ prefix: z.ZodOptional<z.ZodString>;
320
+ }, z.core.$strip>, z.ZodObject<{
321
+ kind: z.ZodLiteral<"timestamped">;
322
+ header: z.ZodString;
323
+ toleranceSec: z.ZodDefault<z.ZodNumber>;
324
+ }, z.core.$strip>, z.ZodObject<{
325
+ kind: z.ZodLiteral<"standard">;
326
+ toleranceSec: z.ZodDefault<z.ZodNumber>;
327
+ }, z.core.$strip>], "kind">;
328
+ secretRef: z.ZodOptional<z.ZodString>;
329
+ secretEnv: z.ZodOptional<z.ZodString>;
330
+ }, z.core.$loose>]>>;
331
+ scripts: z.ZodOptional<z.ZodObject<{
332
+ pre: z.ZodOptional<z.ZodString>;
333
+ post: z.ZodOptional<z.ZodString>;
334
+ api: z.ZodDefault<z.ZodEnum<{
335
+ wirebench: "wirebench";
336
+ postman: "postman";
337
+ }>>;
338
+ enabled: z.ZodDefault<z.ZodBoolean>;
339
+ secrets: z.ZodDefault<z.ZodArray<z.ZodString>>;
340
+ timeoutMs: z.ZodOptional<z.ZodNumber>;
341
+ }, z.core.$loose>>;
342
+ }, z.core.$loose>;
343
+ /** `apis/<slug>/api.yaml`. */
344
+ export declare const apiFileSchema: z.ZodObject<{
345
+ kind: z.ZodLiteral<"rest">;
346
+ id: z.ZodString;
347
+ name: z.ZodString;
348
+ order: z.ZodNumber;
349
+ description: z.ZodOptional<z.ZodString>;
350
+ baseUrl: z.ZodString;
351
+ servers: z.ZodDefault<z.ZodArray<z.ZodObject<{
352
+ url: z.ZodString;
353
+ description: z.ZodOptional<z.ZodString>;
354
+ }, z.core.$loose>>>;
355
+ auth: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
356
+ type: z.ZodEnum<{
357
+ none: "none";
358
+ basic: "basic";
359
+ ntlm: "ntlm";
360
+ }>;
361
+ username: z.ZodOptional<z.ZodString>;
362
+ passwordRef: z.ZodOptional<z.ZodString>;
363
+ passwordEnv: z.ZodOptional<z.ZodString>;
364
+ domain: z.ZodOptional<z.ZodString>;
365
+ workstation: z.ZodOptional<z.ZodString>;
366
+ preemptive: z.ZodOptional<z.ZodBoolean>;
367
+ }, z.core.$loose>, z.ZodObject<{
368
+ type: z.ZodLiteral<"inherit">;
369
+ }, z.core.$loose>, z.ZodObject<{
370
+ type: z.ZodLiteral<"bearer">;
371
+ tokenRef: z.ZodOptional<z.ZodString>;
372
+ tokenEnv: z.ZodOptional<z.ZodString>;
373
+ scheme: z.ZodOptional<z.ZodString>;
374
+ }, z.core.$loose>, z.ZodObject<{
375
+ type: z.ZodLiteral<"api-key">;
376
+ name: z.ZodString;
377
+ valueRef: z.ZodOptional<z.ZodString>;
378
+ valueEnv: z.ZodOptional<z.ZodString>;
379
+ in: z.ZodEnum<{
380
+ header: "header";
381
+ query: "query";
382
+ }>;
383
+ }, z.core.$loose>, z.ZodObject<{
384
+ type: z.ZodLiteral<"oauth2">;
385
+ grant: z.ZodEnum<{
386
+ "client-credentials": "client-credentials";
387
+ "authorization-code": "authorization-code";
388
+ }>;
389
+ tokenUrl: z.ZodString;
390
+ authorizationUrl: z.ZodOptional<z.ZodString>;
391
+ clientId: z.ZodString;
392
+ clientSecretRef: z.ZodOptional<z.ZodString>;
393
+ clientSecretEnv: z.ZodOptional<z.ZodString>;
394
+ scopes: z.ZodDefault<z.ZodArray<z.ZodString>>;
395
+ audience: z.ZodOptional<z.ZodString>;
396
+ clientAuth: z.ZodDefault<z.ZodEnum<{
397
+ basic: "basic";
398
+ body: "body";
399
+ }>>;
400
+ pkce: z.ZodDefault<z.ZodBoolean>;
401
+ refreshTokenRef: z.ZodOptional<z.ZodString>;
402
+ }, z.core.$loose>]>>;
403
+ definition: z.ZodOptional<z.ZodObject<{
404
+ source: z.ZodString;
405
+ cache: z.ZodDefault<z.ZodBoolean>;
406
+ version: z.ZodDefault<z.ZodString>;
407
+ auth: z.ZodOptional<z.ZodUnion<readonly [z.ZodObject<{
408
+ type: z.ZodEnum<{
409
+ none: "none";
410
+ basic: "basic";
411
+ ntlm: "ntlm";
412
+ }>;
413
+ username: z.ZodOptional<z.ZodString>;
414
+ passwordRef: z.ZodOptional<z.ZodString>;
415
+ passwordEnv: z.ZodOptional<z.ZodString>;
416
+ domain: z.ZodOptional<z.ZodString>;
417
+ workstation: z.ZodOptional<z.ZodString>;
418
+ preemptive: z.ZodOptional<z.ZodBoolean>;
419
+ }, z.core.$loose>, z.ZodObject<{
420
+ type: z.ZodLiteral<"bearer">;
421
+ tokenRef: z.ZodOptional<z.ZodString>;
422
+ tokenEnv: z.ZodOptional<z.ZodString>;
423
+ scheme: z.ZodOptional<z.ZodString>;
424
+ }, z.core.$loose>, z.ZodObject<{
425
+ type: z.ZodLiteral<"api-key">;
426
+ name: z.ZodString;
427
+ valueRef: z.ZodOptional<z.ZodString>;
428
+ valueEnv: z.ZodOptional<z.ZodString>;
429
+ in: z.ZodEnum<{
430
+ header: "header";
431
+ query: "query";
432
+ }>;
433
+ }, z.core.$loose>]>>;
434
+ }, z.core.$loose>>;
435
+ }, z.core.$loose>;
436
+ /** An API document as persisted. */
437
+ export type ApiFile = z.infer<typeof apiFileSchema>;
438
+ /** A REST request document as persisted (a raw body's text excluded). */
439
+ export type RestRequestFile = z.infer<typeof restRequestFileSchema>;
@@ -0,0 +1,107 @@
1
+ /**
2
+ * The REST files of a project folder: `apis/<slug>/api.yaml` with `kind: rest`, and each
3
+ * `*.request.yaml` of its request tree (spec §3.2). The same request schema reads the items of the
4
+ * project's webhook collection, which is REST requests in a tree of its own.
5
+ */
6
+ import { z } from 'zod';
7
+ import { assertionsSchema } from '../assert/schema.js';
8
+ import { attachmentSourceSchema, authConfigSchema, definitionAuthSchema, hookLinkSchema, keyValueEntrySchema, nonEmpty, scriptsSchema, webhookSigningSchema, } from '../project/schema-parts.js';
9
+ /**
10
+ * An HTTP method: any RFC 9110 token, not just the seven the editor names. A service that speaks
11
+ * `PURGE` or `REPORT` is not a malformed project.
12
+ */
13
+ const methodSchema = z
14
+ .string()
15
+ .min(1)
16
+ .regex(/^[A-Za-z0-9!#$%&'*+.^_`|~-]+$/, 'a method must be an HTTP token');
17
+ const multipartPartSchema = z.union([
18
+ z.looseObject({
19
+ kind: z.literal('text'),
20
+ name: z.string(),
21
+ value: z.string(),
22
+ enabled: z.boolean().default(true),
23
+ contentType: z.string().optional(),
24
+ }),
25
+ z.looseObject({
26
+ kind: z.literal('file'),
27
+ name: z.string(),
28
+ source: attachmentSourceSchema,
29
+ enabled: z.boolean().default(true),
30
+ fileName: z.string().optional(),
31
+ contentType: z.string().optional(),
32
+ }),
33
+ ]);
34
+ /**
35
+ * A request body as persisted. A raw body names its sibling file rather than carrying its text:
36
+ * `file` is a bare file name in the request's own directory, validated as a path segment before
37
+ * anything is read or written (ADR-0005).
38
+ */
39
+ export const restBodySchema = z.union([
40
+ z.looseObject({ kind: z.literal('none') }),
41
+ z.looseObject({
42
+ kind: z.literal('raw'),
43
+ language: z.enum(['json', 'xml', 'text', 'html', 'javascript']),
44
+ contentType: z.string().optional(),
45
+ file: nonEmpty,
46
+ }),
47
+ z.looseObject({ kind: z.literal('form'), fields: z.array(keyValueEntrySchema).default([]) }),
48
+ z.looseObject({ kind: z.literal('multipart'), parts: z.array(multipartPartSchema).default([]) }),
49
+ z.looseObject({ kind: z.literal('binary'), source: attachmentSourceSchema, contentType: z.string() }),
50
+ ]);
51
+ const restSettingsSchema = z.looseObject({
52
+ timeoutMs: z.number().int().nonnegative().optional(),
53
+ followRedirects: z.boolean().optional(),
54
+ maxRedirects: z.number().int().nonnegative().optional(),
55
+ keepBodyOnRedirect: z.boolean().optional(),
56
+ encodeUrl: z.boolean().optional(),
57
+ trustInvalid: z.boolean().optional(),
58
+ sslKeystoreRef: z.string().optional(),
59
+ bindAddress: z.string().optional(),
60
+ maxSizeBytes: z.number().int().nonnegative().optional(),
61
+ sendCookies: z.boolean().optional(),
62
+ escapeProperties: z.boolean().optional(),
63
+ });
64
+ /** `apis/<slug>/requests/[<folder>/…]<name>.request.yaml`. */
65
+ export const restRequestFileSchema = z.looseObject({
66
+ kind: z.literal('rest'),
67
+ id: nonEmpty,
68
+ name: z.string(),
69
+ order: z.number().int(),
70
+ description: z.string().optional(),
71
+ method: methodSchema,
72
+ url: z.string(),
73
+ pathParams: z.array(keyValueEntrySchema).default([]),
74
+ query: z.array(keyValueEntrySchema).default([]),
75
+ headers: z.array(keyValueEntrySchema).default([]),
76
+ body: restBodySchema.default({ kind: 'none' }),
77
+ auth: authConfigSchema.default({ type: 'inherit' }),
78
+ settings: restSettingsSchema.default({}),
79
+ assertions: assertionsSchema.default([]),
80
+ orphaned: z.boolean().optional(),
81
+ /** The operation of the API's definition this request calls. */
82
+ contract: z.looseObject({ method: nonEmpty, path: nonEmpty }).optional(),
83
+ /** Only under `webhooks/`: the imported `webhooks`/`callbacks` entry; refused elsewhere by the loader. */
84
+ hook: hookLinkSchema.optional(),
85
+ /** Only under `webhooks/`; refused elsewhere by the loader. */
86
+ signing: webhookSigningSchema.optional(),
87
+ scripts: scriptsSchema.optional(),
88
+ });
89
+ /** `apis/<slug>/api.yaml`. */
90
+ export const apiFileSchema = z.looseObject({
91
+ kind: z.literal('rest'),
92
+ id: nonEmpty,
93
+ name: z.string(),
94
+ order: z.number().int(),
95
+ description: z.string().optional(),
96
+ baseUrl: z.string(),
97
+ servers: z.array(z.looseObject({ url: z.string(), description: z.string().optional() })).default([]),
98
+ auth: authConfigSchema.optional(),
99
+ definition: z
100
+ .looseObject({
101
+ source: nonEmpty,
102
+ cache: z.boolean().default(true),
103
+ version: z.string().default(''),
104
+ auth: definitionAuthSchema.optional(),
105
+ })
106
+ .optional(),
107
+ });