@toa.io/extensions.exposition 1.0.0-alpha.28 → 1.0.0-alpha.282

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 (1129) hide show
  1. package/CHANGELOG.md +485 -0
  2. package/components/exposition.octets/manifest.toa.yaml +47 -0
  3. package/components/{octets.storage → exposition.octets}/operations/delete.js +1 -3
  4. package/components/exposition.octets/operations/get.js +5 -0
  5. package/components/exposition.octets/operations/head.js +5 -0
  6. package/components/exposition.octets/operations/put.js +150 -0
  7. package/components/identity.bans/manifest.toa.yaml +26 -7
  8. package/components/identity.bans/operations/transit.js +1 -5
  9. package/components/identity.bans/operations/transit.js.map +1 -1
  10. package/components/identity.bans/tsconfig.json +1 -0
  11. package/components/identity.bans/tsconfig.tsbuildinfo +1 -0
  12. package/components/identity.basic/events/principal.js +6 -4
  13. package/components/identity.basic/manifest.toa.yaml +195 -27
  14. package/components/identity.basic/operations/add.d.ts +3 -0
  15. package/components/identity.basic/operations/add.js +13 -0
  16. package/components/identity.basic/operations/add.js.map +1 -0
  17. package/components/identity.basic/operations/authenticate.d.ts +1 -1
  18. package/components/identity.basic/operations/authenticate.js +19 -16
  19. package/components/identity.basic/operations/authenticate.js.map +1 -1
  20. package/components/identity.basic/operations/check.d.ts +7 -0
  21. package/components/identity.basic/operations/check.js +12 -0
  22. package/components/identity.basic/operations/check.js.map +1 -0
  23. package/components/identity.basic/operations/delete.d.ts +7 -0
  24. package/components/identity.basic/operations/delete.js +7 -0
  25. package/components/identity.basic/operations/delete.js.map +1 -0
  26. package/components/identity.basic/operations/incept.d.ts +1 -1
  27. package/components/identity.basic/operations/incept.js +16 -14
  28. package/components/identity.basic/operations/incept.js.map +1 -1
  29. package/components/identity.basic/operations/info.d.ts +10 -0
  30. package/components/identity.basic/operations/info.js +7 -0
  31. package/components/identity.basic/operations/info.js.map +1 -0
  32. package/components/identity.basic/operations/lib/credentials.d.ts +5 -0
  33. package/components/identity.basic/operations/lib/credentials.js +12 -0
  34. package/components/identity.basic/operations/lib/credentials.js.map +1 -0
  35. package/components/identity.basic/operations/transit.d.ts +4 -2
  36. package/components/identity.basic/operations/transit.js +40 -19
  37. package/components/identity.basic/operations/transit.js.map +1 -1
  38. package/components/identity.basic/operations/types.d.ts +30 -9
  39. package/components/identity.basic/operations/types.js +1 -2
  40. package/components/identity.basic/source/add.ts +15 -0
  41. package/components/identity.basic/source/authenticate.ts +20 -10
  42. package/components/identity.basic/source/check.ts +21 -0
  43. package/components/identity.basic/source/delete.ts +15 -0
  44. package/components/identity.basic/source/incept.ts +17 -10
  45. package/components/identity.basic/source/info.ts +19 -0
  46. package/components/identity.basic/source/lib/credentials.test.ts +18 -0
  47. package/components/identity.basic/source/lib/credentials.ts +13 -0
  48. package/components/identity.basic/source/transit.ts +45 -16
  49. package/components/identity.basic/source/types.ts +34 -9
  50. package/components/identity.basic/tsconfig.json +1 -0
  51. package/components/identity.basic/tsconfig.tsbuildinfo +1 -0
  52. package/components/identity.credentials/manifest.toa.yaml +78 -0
  53. package/components/identity.credentials/operations/list.d.ts +51 -0
  54. package/components/identity.credentials/operations/list.js +28 -0
  55. package/components/identity.credentials/operations/list.js.map +1 -0
  56. package/components/identity.credentials/source/list.test.ts +51 -0
  57. package/components/identity.credentials/source/list.ts +87 -0
  58. package/components/identity.credentials/tsconfig.json +8 -0
  59. package/components/identity.credentials/tsconfig.tsbuildinfo +1 -0
  60. package/components/identity.federation/events/principal.js +7 -8
  61. package/components/identity.federation/manifest.toa.yaml +212 -46
  62. package/components/identity.federation/operations/authenticate.d.ts +16 -3
  63. package/components/identity.federation/operations/authenticate.js +24 -19
  64. package/components/identity.federation/operations/authenticate.js.map +1 -1
  65. package/components/identity.federation/operations/create.d.ts +8 -0
  66. package/components/identity.federation/operations/create.js +29 -0
  67. package/components/identity.federation/operations/create.js.map +1 -0
  68. package/components/identity.federation/operations/decode.d.ts +3 -0
  69. package/components/identity.federation/operations/decode.js +9 -0
  70. package/components/identity.federation/operations/decode.js.map +1 -0
  71. package/components/identity.federation/operations/delete.d.ts +8 -0
  72. package/components/identity.federation/operations/delete.js +7 -0
  73. package/components/identity.federation/operations/delete.js.map +1 -0
  74. package/components/identity.federation/operations/incept.d.ts +6 -6
  75. package/components/identity.federation/operations/incept.js +4 -12
  76. package/components/identity.federation/operations/incept.js.map +1 -1
  77. package/components/identity.federation/operations/lib/Configuration.d.ts +39 -0
  78. package/components/identity.federation/operations/lib/Configuration.js +2 -0
  79. package/components/identity.federation/operations/lib/Configuration.js.map +1 -0
  80. package/components/identity.federation/operations/lib/Ctx.d.ts +8 -0
  81. package/components/identity.federation/operations/lib/Ctx.js +2 -0
  82. package/components/identity.federation/operations/lib/Ctx.js.map +1 -0
  83. package/components/identity.federation/operations/lib/Payload.d.ts +5 -0
  84. package/components/identity.federation/operations/lib/Payload.js +2 -0
  85. package/components/identity.federation/operations/lib/Payload.js.map +1 -0
  86. package/components/identity.federation/operations/lib/decode.d.ts +3 -0
  87. package/components/identity.federation/operations/lib/decode.js +22 -0
  88. package/components/identity.federation/operations/lib/decode.js.map +1 -0
  89. package/components/identity.federation/operations/lib/discovery.d.ts +5 -0
  90. package/components/identity.federation/operations/lib/discovery.js +34 -0
  91. package/components/identity.federation/operations/lib/discovery.js.map +1 -0
  92. package/components/identity.federation/operations/lib/errors.d.ts +70 -0
  93. package/components/identity.federation/operations/lib/errors.js +41 -0
  94. package/components/identity.federation/operations/lib/errors.js.map +1 -0
  95. package/components/identity.federation/operations/lib/exchange.d.ts +3 -0
  96. package/components/identity.federation/operations/lib/exchange.js +81 -0
  97. package/components/identity.federation/operations/lib/exchange.js.map +1 -0
  98. package/components/identity.federation/operations/lib/index.d.ts +4 -0
  99. package/components/identity.federation/operations/lib/index.js +4 -0
  100. package/components/identity.federation/operations/lib/index.js.map +1 -0
  101. package/components/identity.federation/operations/lib/jose.d.ts +1 -0
  102. package/components/identity.federation/operations/lib/jose.js +2 -0
  103. package/components/identity.federation/operations/lib/jose.js.map +1 -0
  104. package/components/identity.federation/operations/lib/resolve.d.ts +3 -0
  105. package/components/identity.federation/operations/lib/resolve.js +13 -0
  106. package/components/identity.federation/operations/lib/resolve.js.map +1 -0
  107. package/components/identity.federation/operations/list.d.ts +7 -0
  108. package/components/identity.federation/operations/list.js +12 -0
  109. package/components/identity.federation/operations/list.js.map +1 -0
  110. package/components/identity.federation/operations/types/Scheme.d.ts +1 -0
  111. package/components/identity.federation/operations/types/Scheme.js +2 -0
  112. package/components/identity.federation/operations/types/Scheme.js.map +1 -0
  113. package/components/identity.federation/operations/types/configuration.d.ts +22 -0
  114. package/components/identity.federation/operations/types/configuration.js +2 -0
  115. package/components/identity.federation/operations/types/configuration.js.map +1 -0
  116. package/components/identity.federation/operations/types/context.d.ts +35 -0
  117. package/components/identity.federation/operations/types/context.js +2 -0
  118. package/components/identity.federation/operations/types/context.js.map +1 -0
  119. package/components/identity.federation/operations/types/entity.d.ts +9 -0
  120. package/components/identity.federation/operations/types/entity.js +2 -0
  121. package/components/identity.federation/operations/types/entity.js.map +1 -0
  122. package/components/identity.federation/operations/types/index.d.ts +4 -0
  123. package/components/identity.federation/operations/types/index.js +5 -0
  124. package/components/identity.federation/operations/types/index.js.map +1 -0
  125. package/components/identity.federation/source/authenticate.ts +43 -22
  126. package/components/identity.federation/source/create.ts +45 -0
  127. package/components/identity.federation/source/decode.ts +11 -0
  128. package/components/identity.federation/source/delete.ts +16 -0
  129. package/components/identity.federation/source/incept.ts +9 -17
  130. package/components/identity.federation/source/lib/Configuration.ts +39 -0
  131. package/components/identity.federation/source/lib/Ctx.ts +9 -0
  132. package/components/identity.federation/source/lib/Payload.ts +6 -0
  133. package/components/identity.federation/source/lib/decode.ts +31 -0
  134. package/components/identity.federation/source/lib/discovery.test.ts +50 -0
  135. package/components/identity.federation/source/lib/discovery.ts +49 -0
  136. package/components/identity.federation/source/lib/errors.ts +49 -0
  137. package/components/identity.federation/source/lib/exchange.ts +116 -0
  138. package/components/identity.federation/source/lib/index.ts +4 -0
  139. package/components/identity.federation/source/lib/jose.d.ts +1 -0
  140. package/components/identity.federation/source/lib/jose.js +1 -0
  141. package/components/identity.federation/source/lib/resolve.ts +17 -0
  142. package/components/identity.federation/source/list.test.ts +25 -0
  143. package/components/identity.federation/source/list.ts +18 -0
  144. package/components/identity.federation/source/types/Scheme.ts +1 -0
  145. package/components/identity.federation/source/types/configuration.ts +24 -0
  146. package/components/identity.federation/source/types/context.ts +38 -0
  147. package/components/identity.federation/source/types/entity.ts +9 -0
  148. package/components/identity.federation/source/types/index.ts +4 -0
  149. package/components/identity.federation/tsconfig.json +3 -4
  150. package/components/identity.federation/tsconfig.tsbuildinfo +1 -0
  151. package/components/identity.keys/manifest.toa.yaml +83 -0
  152. package/components/identity.keys/operations/create.d.ts +22 -0
  153. package/components/identity.keys/operations/create.js +12 -0
  154. package/components/identity.keys/operations/create.js.map +1 -0
  155. package/components/identity.keys/operations/disable.d.ts +5 -0
  156. package/components/identity.keys/operations/disable.js +5 -0
  157. package/components/identity.keys/operations/disable.js.map +1 -0
  158. package/components/identity.keys/operations/revoke.d.ts +15 -0
  159. package/components/identity.keys/operations/revoke.js +12 -0
  160. package/components/identity.keys/operations/revoke.js.map +1 -0
  161. package/components/identity.keys/receivers/identity.bans.created.js +1 -0
  162. package/components/identity.keys/receivers/identity.bans.updated.js +1 -0
  163. package/components/identity.keys/receivers/identity.roles.deleted.js +1 -0
  164. package/components/identity.keys/source/create.ts +35 -0
  165. package/components/identity.keys/source/disable.ts +9 -0
  166. package/components/identity.keys/source/revoke.ts +30 -0
  167. package/components/identity.keys/tsconfig.json +10 -0
  168. package/components/identity.keys/tsconfig.tsbuildinfo +1 -0
  169. package/components/identity.otp/manifest.toa.yaml +104 -0
  170. package/components/identity.otp/operations/authenticate.d.ts +12 -0
  171. package/components/identity.otp/operations/authenticate.js +44 -0
  172. package/components/identity.otp/operations/authenticate.js.map +1 -0
  173. package/components/identity.otp/operations/issue.d.ts +12 -0
  174. package/components/identity.otp/operations/issue.js +19 -0
  175. package/components/identity.otp/operations/issue.js.map +1 -0
  176. package/components/identity.otp/operations/lib/Context.d.ts +14 -0
  177. package/components/identity.otp/operations/lib/Context.js +2 -0
  178. package/components/identity.otp/operations/lib/Context.js.map +1 -0
  179. package/components/identity.otp/operations/lib/Entity.d.ts +6 -0
  180. package/components/identity.otp/operations/lib/Entity.js +2 -0
  181. package/components/identity.otp/operations/lib/Entity.js.map +1 -0
  182. package/components/identity.otp/operations/lib/index.d.ts +1 -0
  183. package/components/identity.otp/operations/lib/index.js +2 -0
  184. package/components/identity.otp/operations/lib/index.js.map +1 -0
  185. package/components/identity.otp/source/authenticate.ts +73 -0
  186. package/components/identity.otp/source/issue.ts +35 -0
  187. package/components/identity.otp/source/lib/Context.ts +15 -0
  188. package/components/identity.otp/source/lib/Entity.ts +6 -0
  189. package/components/identity.otp/source/lib/index.ts +1 -0
  190. package/components/identity.otp/tsconfig.json +10 -0
  191. package/components/identity.otp/tsconfig.tsbuildinfo +1 -0
  192. package/components/identity.passkeys/manifest.toa.yaml +306 -0
  193. package/components/identity.passkeys/operations/authenticate.d.ts +16 -0
  194. package/components/identity.passkeys/operations/authenticate.js +32 -0
  195. package/components/identity.passkeys/operations/authenticate.js.map +1 -0
  196. package/components/identity.passkeys/operations/challenge.d.ts +35 -0
  197. package/components/identity.passkeys/operations/challenge.js +69 -0
  198. package/components/identity.passkeys/operations/challenge.js.map +1 -0
  199. package/components/identity.passkeys/operations/create.d.ts +19 -0
  200. package/components/identity.passkeys/operations/create.js +57 -0
  201. package/components/identity.passkeys/operations/create.js.map +1 -0
  202. package/components/identity.passkeys/operations/delete.d.ts +8 -0
  203. package/components/identity.passkeys/operations/delete.js +9 -0
  204. package/components/identity.passkeys/operations/delete.js.map +1 -0
  205. package/components/identity.passkeys/operations/lib/const.d.ts +1 -0
  206. package/components/identity.passkeys/operations/lib/const.js +2 -0
  207. package/components/identity.passkeys/operations/lib/const.js.map +1 -0
  208. package/components/identity.passkeys/operations/list.d.ts +7 -0
  209. package/components/identity.passkeys/operations/list.js +12 -0
  210. package/components/identity.passkeys/operations/list.js.map +1 -0
  211. package/components/identity.passkeys/operations/types/Configuration.d.ts +6 -0
  212. package/components/identity.passkeys/operations/types/Configuration.js +2 -0
  213. package/components/identity.passkeys/operations/types/Configuration.js.map +1 -0
  214. package/components/identity.passkeys/operations/types/Context.d.ts +15 -0
  215. package/components/identity.passkeys/operations/types/Context.js +2 -0
  216. package/components/identity.passkeys/operations/types/Context.js.map +1 -0
  217. package/components/identity.passkeys/operations/types/Passkey.d.ts +12 -0
  218. package/components/identity.passkeys/operations/types/Passkey.js +2 -0
  219. package/components/identity.passkeys/operations/types/Passkey.js.map +1 -0
  220. package/components/identity.passkeys/operations/types/index.d.ts +2 -0
  221. package/components/identity.passkeys/operations/types/index.js +2 -0
  222. package/components/identity.passkeys/operations/types/index.js.map +1 -0
  223. package/components/identity.passkeys/operations/use.d.ts +16 -0
  224. package/components/identity.passkeys/operations/use.js +56 -0
  225. package/components/identity.passkeys/operations/use.js.map +1 -0
  226. package/components/identity.passkeys/source/authenticate.ts +50 -0
  227. package/components/identity.passkeys/source/challenge.ts +115 -0
  228. package/components/identity.passkeys/source/create.ts +81 -0
  229. package/components/identity.passkeys/source/delete.ts +16 -0
  230. package/components/identity.passkeys/source/lib/const.ts +1 -0
  231. package/components/identity.passkeys/source/list.ts +18 -0
  232. package/components/identity.passkeys/source/types/Configuration.ts +6 -0
  233. package/components/identity.passkeys/source/types/Context.ts +16 -0
  234. package/components/identity.passkeys/source/types/Passkey.ts +12 -0
  235. package/components/identity.passkeys/source/types/index.ts +2 -0
  236. package/components/identity.passkeys/source/use.ts +79 -0
  237. package/components/identity.passkeys/tsconfig.json +10 -0
  238. package/components/identity.passkeys/tsconfig.tsbuildinfo +1 -0
  239. package/components/identity.roles/manifest.toa.yaml +47 -10
  240. package/components/identity.roles/operations/grant.d.ts +1 -1
  241. package/components/identity.roles/operations/grant.js +10 -10
  242. package/components/identity.roles/operations/grant.js.map +1 -1
  243. package/components/identity.roles/operations/lib/Entity.js +1 -2
  244. package/components/identity.roles/operations/list.d.ts +1 -1
  245. package/components/identity.roles/operations/list.js +1 -5
  246. package/components/identity.roles/operations/list.js.map +1 -1
  247. package/components/identity.roles/operations/principal.d.ts +2 -2
  248. package/components/identity.roles/operations/principal.js +1 -5
  249. package/components/identity.roles/operations/principal.js.map +1 -1
  250. package/components/identity.roles/receivers/identity.federation.principal.js +4 -0
  251. package/components/identity.roles/source/grant.ts +11 -6
  252. package/components/identity.roles/source/list.ts +1 -1
  253. package/components/identity.roles/source/principal.ts +2 -2
  254. package/components/identity.roles/tsconfig.json +1 -0
  255. package/components/identity.roles/tsconfig.tsbuildinfo +1 -0
  256. package/components/identity.tokens/manifest.toa.yaml +188 -28
  257. package/components/identity.tokens/operations/authenticate.d.ts +2 -2
  258. package/components/identity.tokens/operations/authenticate.js +20 -19
  259. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  260. package/components/identity.tokens/operations/decrypt.d.ts +15 -3
  261. package/components/identity.tokens/operations/decrypt.js +131 -24
  262. package/components/identity.tokens/operations/decrypt.js.map +1 -1
  263. package/components/identity.tokens/operations/encrypt.d.ts +3 -3
  264. package/components/identity.tokens/operations/encrypt.js +33 -18
  265. package/components/identity.tokens/operations/encrypt.js.map +1 -1
  266. package/components/identity.tokens/operations/issue.d.ts +24 -0
  267. package/components/identity.tokens/operations/issue.js +56 -0
  268. package/components/identity.tokens/operations/issue.js.map +1 -0
  269. package/components/identity.tokens/operations/lib/index.d.ts +3 -0
  270. package/components/identity.tokens/operations/lib/index.js +4 -0
  271. package/components/identity.tokens/operations/lib/index.js.map +1 -0
  272. package/components/identity.tokens/operations/lib/jose.d.ts +1 -0
  273. package/components/identity.tokens/operations/lib/jose.js +2 -0
  274. package/components/identity.tokens/operations/lib/jose.js.map +1 -0
  275. package/components/identity.tokens/operations/lib/key.d.ts +1 -0
  276. package/components/identity.tokens/operations/lib/key.js +7 -0
  277. package/components/identity.tokens/operations/lib/key.js.map +1 -0
  278. package/components/identity.tokens/operations/lib/pad.d.ts +1 -0
  279. package/components/identity.tokens/operations/lib/pad.js +2 -0
  280. package/components/identity.tokens/operations/lib/pad.js.map +1 -0
  281. package/components/identity.tokens/operations/lib/types.d.ts +88 -0
  282. package/components/identity.tokens/operations/lib/types.js +2 -0
  283. package/components/identity.tokens/operations/lib/types.js.map +1 -0
  284. package/components/identity.tokens/operations/revoke.d.ts +2 -2
  285. package/components/identity.tokens/operations/revoke.js +1 -5
  286. package/components/identity.tokens/operations/revoke.js.map +1 -1
  287. package/components/identity.tokens/receivers/identity.bans.created.js +1 -3
  288. package/components/identity.tokens/receivers/identity.bans.updated.js +1 -3
  289. package/components/identity.tokens/source/authenticate.test.ts +56 -16
  290. package/components/identity.tokens/source/authenticate.ts +22 -16
  291. package/components/identity.tokens/source/decrypt.test.ts +140 -18
  292. package/components/identity.tokens/source/decrypt.ts +176 -21
  293. package/components/identity.tokens/source/encrypt.test.ts +102 -16
  294. package/components/identity.tokens/source/encrypt.ts +45 -16
  295. package/components/identity.tokens/source/issue.ts +83 -0
  296. package/components/identity.tokens/source/lib/index.ts +3 -0
  297. package/components/identity.tokens/source/lib/jose.d.ts +1 -0
  298. package/components/identity.tokens/source/lib/jose.js +1 -0
  299. package/components/identity.tokens/source/lib/key.ts +8 -0
  300. package/components/identity.tokens/source/lib/pad.ts +1 -0
  301. package/components/identity.tokens/source/lib/paseto.test.ts +51 -0
  302. package/components/identity.tokens/source/lib/types.ts +102 -0
  303. package/components/identity.tokens/source/revoke.ts +2 -2
  304. package/components/identity.tokens/tsconfig.json +1 -0
  305. package/components/identity.tokens/tsconfig.tsbuildinfo +1 -0
  306. package/{components/context.toa.yaml → context.toa.yaml} +6 -2
  307. package/cucumber.mjs +4 -0
  308. package/documentation/access.md +78 -27
  309. package/documentation/authorities.md +9 -11
  310. package/documentation/components.md +200 -62
  311. package/documentation/credentials.md +88 -0
  312. package/documentation/dev.md +30 -0
  313. package/documentation/flow.md +44 -0
  314. package/documentation/identity.md +162 -16
  315. package/documentation/introspection.md +82 -0
  316. package/documentation/io.md +73 -2
  317. package/documentation/ip.md +24 -0
  318. package/documentation/map.md +115 -0
  319. package/documentation/notes/desync.jpg +0 -0
  320. package/documentation/notes/peers.md +59 -0
  321. package/documentation/notes/throttling.md +122 -0
  322. package/documentation/octets.md +122 -69
  323. package/documentation/passkeys.md +11 -0
  324. package/documentation/protocol.md +35 -4
  325. package/documentation/query.md +43 -0
  326. package/documentation/tracing.md +70 -0
  327. package/documentation/tree.md +13 -0
  328. package/features/access.feature +123 -3
  329. package/features/auth.assert.feature +55 -0
  330. package/features/auth.claims.feature +171 -0
  331. package/features/auth.incept.feature +166 -0
  332. package/features/auth.input.feature +59 -0
  333. package/features/authorities.feature +41 -2
  334. package/features/authorities.federation.feature +21 -20
  335. package/features/authorities.tokens.feature +1 -2
  336. package/features/body.feature +27 -0
  337. package/features/cache.feature +97 -8
  338. package/features/configuration.feature +207 -0
  339. package/features/cors.feature +29 -8
  340. package/features/credentials.feature +106 -0
  341. package/features/dev.feature +87 -0
  342. package/features/dynamic.feature +82 -1
  343. package/features/errors.feature +17 -5
  344. package/features/etag.feature +223 -1
  345. package/features/flow.feature +148 -0
  346. package/features/identity.bans.feature +63 -0
  347. package/features/identity.basic.feature +231 -10
  348. package/features/identity.feature +158 -0
  349. package/features/identity.federation.feature +226 -35
  350. package/features/identity.otp.feature +142 -0
  351. package/features/identity.roles.feature +305 -4
  352. package/features/identity.tokens.custom.feature +430 -0
  353. package/features/identity.tokens.feature +4 -102
  354. package/features/interruptions.feature +19 -0
  355. package/features/introspection.feature +146 -0
  356. package/features/introspection.map.feature +108 -0
  357. package/features/io.feature +0 -1
  358. package/features/io.throttle.feature +165 -0
  359. package/features/map.feature +359 -0
  360. package/features/methods.feature +47 -0
  361. package/features/octets.cloudinary.feature +232 -0
  362. package/features/octets.download.feature +192 -0
  363. package/features/octets.entries.feature +13 -61
  364. package/features/octets.feature +52 -70
  365. package/features/octets.head.feature +40 -0
  366. package/features/octets.location.feature +83 -0
  367. package/features/octets.meta.feature +63 -16
  368. package/features/octets.workflows.feature +333 -68
  369. package/features/passkeys.feature +66 -0
  370. package/features/probes.feature +8 -4
  371. package/features/query.feature +128 -0
  372. package/features/realtime.feature +34 -0
  373. package/features/require.feature +2 -2
  374. package/features/response.feature +30 -1
  375. package/features/routes.feature +85 -0
  376. package/features/server.feature +21 -0
  377. package/features/steps/.env.example +5 -0
  378. package/features/steps/Captures.ts +15 -1
  379. package/features/steps/Common.ts +31 -2
  380. package/features/steps/Components.ts +63 -6
  381. package/features/steps/Database.ts +19 -3
  382. package/features/steps/Gateway.ts +124 -23
  383. package/features/steps/HTTP.ts +36 -11
  384. package/features/steps/IDP.ts +337 -0
  385. package/features/steps/Identity.ts +54 -0
  386. package/features/steps/OTP.ts +42 -0
  387. package/features/steps/Parameters.ts +99 -4
  388. package/features/steps/Probe.ts +36 -0
  389. package/features/steps/Realtime.ts +154 -0
  390. package/features/steps/Workspace.ts +10 -6
  391. package/features/steps/components/audit/manifest.toa.yaml +20 -0
  392. package/features/steps/components/audit/operations/record.js +5 -0
  393. package/features/steps/components/echo/manifest.toa.yaml +47 -5
  394. package/features/steps/components/echo/operations/affect.js +1 -5
  395. package/features/steps/components/echo/operations/compute.js +1 -5
  396. package/features/steps/components/echo/operations/echo.js +3 -0
  397. package/features/steps/components/echo/operations/error.js +1 -5
  398. package/features/steps/components/echo/operations/identity.js +1 -5
  399. package/features/steps/components/echo/operations/parameters.js +3 -0
  400. package/features/steps/components/echo/operations/ping.js +3 -0
  401. package/features/steps/components/echo/operations/unwrap.js +3 -0
  402. package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
  403. package/features/steps/components/echo.beacon/operations/hello.js +3 -0
  404. package/features/steps/components/greeter/manifest.toa.yaml +0 -1
  405. package/features/steps/components/greeter/operations/greet.js +1 -5
  406. package/features/steps/components/notify/manifest.toa.yaml +20 -0
  407. package/features/steps/components/notify/operations/send.js +5 -0
  408. package/features/steps/components/octets.tester/manifest.toa.yaml +58 -6
  409. package/features/steps/components/octets.tester/operations/authority.js +3 -0
  410. package/features/steps/components/octets.tester/operations/bar.js +1 -4
  411. package/features/steps/components/octets.tester/operations/baz.js +2 -4
  412. package/features/steps/components/octets.tester/operations/concat.js +1 -3
  413. package/features/steps/components/octets.tester/operations/echo.js +2 -4
  414. package/features/steps/components/octets.tester/operations/err.js +1 -3
  415. package/features/steps/components/octets.tester/operations/foo.js +3 -5
  416. package/features/steps/components/octets.tester/operations/id.js +5 -0
  417. package/features/steps/components/octets.tester/operations/identity.js +5 -0
  418. package/features/steps/components/octets.tester/operations/redirect.js +10 -0
  419. package/features/steps/components/octets.tester/operations/yex.js +14 -0
  420. package/features/steps/components/octets.tester/operations/yield.js +11 -0
  421. package/features/steps/components/orders/manifest.toa.yaml +32 -0
  422. package/features/steps/components/orders/operations/create.js +5 -0
  423. package/features/steps/components/pots/manifest.toa.yaml +79 -14
  424. package/features/steps/components/pricing/manifest.toa.yaml +13 -0
  425. package/features/steps/components/pricing/operations/quote.js +3 -0
  426. package/features/steps/components/sequences/manifest.toa.yaml +3 -2
  427. package/features/steps/components/sequences/operations/numbers.js +1 -3
  428. package/features/steps/components/sequences/operations/tokens.js +2 -4
  429. package/features/steps/components/users/manifest.toa.yaml +20 -3
  430. package/features/steps/components/users/operations/create.js +11 -0
  431. package/features/steps/components/users.properties/manifest.toa.yaml +12 -3
  432. package/features/steps/map.ts +30 -0
  433. package/features/streams.feature +4 -0
  434. package/features/timestamps.feature +41 -0
  435. package/features/timing.feature +2 -22
  436. package/features/tracing.feature +123 -0
  437. package/package.json +31 -26
  438. package/readme.md +22 -1
  439. package/schemas/annotation.cos.yaml +64 -6
  440. package/schemas/directive.cos.yaml +7 -3
  441. package/schemas/io/throttle.cos.yaml +81 -0
  442. package/schemas/method.cos.yaml +21 -8
  443. package/schemas/node.cos.yaml +22 -5
  444. package/schemas/octets/delete.cos.yaml +15 -2
  445. package/schemas/octets/get.cos.yaml +5 -0
  446. package/schemas/octets/put.cos.yaml +31 -0
  447. package/schemas/octets/workflow.cos.yaml +0 -1
  448. package/schemas/query.cos.yaml +31 -17
  449. package/schemas/querystring.cos.yaml +19 -6
  450. package/schemas/range.cos.yaml +10 -2
  451. package/schemas/route.cos.yaml +6 -2
  452. package/source/Annotation.ts +28 -1
  453. package/source/Branch.test.ts +40 -0
  454. package/source/Branch.ts +39 -1
  455. package/source/Composition.ts +6 -12
  456. package/source/Context.ts +5 -2
  457. package/source/Directive.test.ts +111 -27
  458. package/source/Directive.ts +97 -20
  459. package/source/Endpoint.ts +118 -28
  460. package/source/Factory.ts +74 -27
  461. package/source/Gateway.ts +208 -18
  462. package/source/HTTP/Context.ts +79 -32
  463. package/source/HTTP/Probe.ts +112 -0
  464. package/source/HTTP/Server.ts +295 -64
  465. package/source/HTTP/Timing.ts +2 -13
  466. package/source/HTTP/address.test.ts +22 -0
  467. package/source/HTTP/address.ts +17 -0
  468. package/source/HTTP/exceptions.ts +38 -14
  469. package/source/HTTP/formats/index.ts +8 -9
  470. package/source/HTTP/formats/json.ts +2 -4
  471. package/source/HTTP/formats/msgpack.ts +0 -1
  472. package/source/HTTP/formats/text.ts +2 -4
  473. package/source/HTTP/formats/yaml.test.ts +19 -0
  474. package/source/HTTP/formats/yaml.ts +25 -5
  475. package/source/HTTP/index.ts +6 -4
  476. package/source/HTTP/messages.test.ts +92 -19
  477. package/source/HTTP/messages.ts +149 -37
  478. package/source/HTTP/types.ts +39 -0
  479. package/source/Interception.ts +9 -1
  480. package/source/Introspection.ts +11 -0
  481. package/source/Mapping.ts +67 -24
  482. package/source/Query.test.ts +22 -5
  483. package/source/Query.ts +114 -22
  484. package/source/RTD/Context.ts +7 -4
  485. package/source/RTD/Directives.ts +27 -5
  486. package/source/RTD/Endpoint.ts +7 -4
  487. package/source/RTD/Match.ts +1 -1
  488. package/source/RTD/Method.ts +18 -2
  489. package/source/RTD/Node.ts +68 -26
  490. package/source/RTD/Route.ts +21 -11
  491. package/source/RTD/Tree.ts +49 -16
  492. package/source/RTD/expiration.test.ts +81 -0
  493. package/source/RTD/factory.ts +36 -8
  494. package/source/RTD/index.ts +8 -8
  495. package/source/RTD/segment.test.ts +13 -10
  496. package/source/RTD/segment.ts +2 -0
  497. package/source/RTD/syntax/index.ts +2 -2
  498. package/source/RTD/syntax/parse.test.ts +30 -28
  499. package/source/RTD/syntax/parse.ts +39 -26
  500. package/source/RTD/syntax/types.ts +9 -4
  501. package/source/Remotes.test.ts +34 -18
  502. package/source/Remotes.ts +15 -11
  503. package/source/Tenant.ts +52 -14
  504. package/source/const.ts +4 -0
  505. package/source/deployment.ts +44 -22
  506. package/source/directives/auth/Anonymous.ts +3 -3
  507. package/source/directives/auth/Anyone.ts +13 -0
  508. package/source/directives/auth/Assert.ts +38 -0
  509. package/source/directives/auth/Authorization.test.ts +24 -0
  510. package/source/directives/auth/Authorization.ts +170 -39
  511. package/source/directives/auth/Delegate.ts +10 -6
  512. package/source/directives/auth/Echo.ts +16 -6
  513. package/source/directives/auth/Federation.ts +84 -0
  514. package/source/directives/auth/Id.ts +3 -3
  515. package/source/directives/auth/Incept.ts +82 -25
  516. package/source/directives/auth/Input.ts +71 -0
  517. package/source/directives/auth/Role.test.ts +34 -22
  518. package/source/directives/auth/Role.ts +10 -14
  519. package/source/directives/auth/Rule.ts +4 -7
  520. package/source/directives/auth/Scheme.ts +7 -7
  521. package/source/directives/auth/create.ts +11 -0
  522. package/source/directives/auth/index.ts +1 -1
  523. package/source/directives/auth/schemes.test.ts +14 -0
  524. package/source/directives/auth/schemes.ts +19 -2
  525. package/source/directives/auth/split.ts +3 -3
  526. package/source/directives/auth/types.ts +18 -10
  527. package/source/directives/cache/Cache.ts +24 -11
  528. package/source/directives/cache/Control.ts +17 -17
  529. package/source/directives/cache/Exact.ts +1 -1
  530. package/source/directives/cache/index.ts +1 -1
  531. package/source/directives/cache/types.ts +1 -1
  532. package/source/directives/cors/CORS.ts +37 -20
  533. package/source/directives/cors/index.ts +1 -1
  534. package/source/directives/dev/Development.ts +19 -12
  535. package/source/directives/dev/Faulty.ts +26 -0
  536. package/source/directives/dev/Sleep.ts +55 -0
  537. package/source/directives/dev/Stub.ts +2 -2
  538. package/source/directives/dev/Throw.ts +2 -2
  539. package/source/directives/dev/index.ts +1 -1
  540. package/source/directives/dev/types.ts +2 -2
  541. package/source/directives/flow/Compose.ts +92 -0
  542. package/source/directives/flow/Fetch.ts +86 -0
  543. package/source/directives/flow/Flow.ts +42 -0
  544. package/source/directives/flow/index.ts +3 -0
  545. package/source/directives/flow/types.ts +7 -0
  546. package/source/directives/index.ts +12 -11
  547. package/source/directives/io/Directive.ts +9 -3
  548. package/source/directives/io/IO.ts +48 -13
  549. package/source/directives/io/Input.ts +22 -15
  550. package/source/directives/io/Output.ts +23 -14
  551. package/source/directives/io/Throttle.ts +31 -0
  552. package/source/directives/io/index.ts +1 -1
  553. package/source/directives/io/lib/throttle/Configuration.test.ts +63 -0
  554. package/source/directives/io/lib/throttle/Configuration.ts +63 -0
  555. package/source/directives/io/lib/throttle/Keys.ts +48 -0
  556. package/source/directives/io/lib/throttle/Quotas.test.ts +395 -0
  557. package/source/directives/io/lib/throttle/Quotas.ts +196 -0
  558. package/source/directives/io/lib/throttle/Sync.test.ts +159 -0
  559. package/source/directives/io/lib/throttle/Sync.ts +96 -0
  560. package/source/directives/io/lib/throttle/Warning.test.ts +32 -0
  561. package/source/directives/io/lib/throttle/Warning.ts +30 -0
  562. package/source/directives/io/lib/throttle/components/Component.ts +7 -0
  563. package/source/directives/io/lib/throttle/components/IP.ts +31 -0
  564. package/source/directives/io/lib/throttle/components/Identity.ts +19 -0
  565. package/source/directives/io/lib/throttle/components/Path.ts +8 -0
  566. package/source/directives/io/lib/throttle/components/Route.ts +19 -0
  567. package/source/directives/io/lib/throttle/components/Segment.ts +19 -0
  568. package/source/directives/io/lib/throttle/components/index.ts +19 -0
  569. package/source/directives/io/lib/throttle/conditions/Condition.ts +5 -0
  570. package/source/directives/io/lib/throttle/conditions/Status.ts +17 -0
  571. package/source/directives/io/lib/throttle/conditions/index.ts +11 -0
  572. package/source/directives/io/lib/throttle/index.ts +4 -0
  573. package/source/directives/io/schemas.test.ts +34 -0
  574. package/source/directives/io/schemas.ts +9 -5
  575. package/source/directives/map/Authority.ts +15 -0
  576. package/source/directives/map/Buffer.ts +15 -0
  577. package/source/directives/map/Claims.ts +58 -0
  578. package/source/directives/map/Directive.ts +4 -0
  579. package/source/directives/map/Headers.ts +45 -0
  580. package/source/directives/map/Language.ts +42 -0
  581. package/source/directives/map/Languages.ts +11 -0
  582. package/source/directives/map/Map.ts +63 -0
  583. package/source/directives/map/Mapping.ts +19 -0
  584. package/source/directives/{vary → map}/Properties.ts +2 -4
  585. package/source/directives/map/Segments.ts +33 -0
  586. package/source/directives/map/index.ts +3 -0
  587. package/source/directives/octets/Context.ts +5 -4
  588. package/source/directives/octets/Delete.ts +30 -27
  589. package/source/directives/octets/Directive.ts +3 -3
  590. package/source/directives/octets/Get.ts +96 -0
  591. package/source/directives/octets/Octets.ts +20 -22
  592. package/source/directives/octets/Put.ts +141 -0
  593. package/source/directives/octets/Workflow.ts +17 -11
  594. package/source/directives/octets/bytes.test.ts +33 -0
  595. package/source/directives/octets/bytes.ts +18 -0
  596. package/source/directives/octets/index.ts +1 -1
  597. package/source/directives/octets/schemas.test.ts +10 -5
  598. package/source/directives/octets/schemas.ts +8 -12
  599. package/source/directives/octets/types.ts +3 -1
  600. package/source/directives/octets/workflows/Execution.ts +66 -10
  601. package/source/directives/octets/workflows/Workflow.ts +21 -10
  602. package/source/directives/octets/workflows/index.ts +1 -1
  603. package/source/directives/require/Directive.ts +1 -1
  604. package/source/directives/require/Headers.ts +3 -3
  605. package/source/directives/require/Require.ts +4 -4
  606. package/source/directives/require/index.ts +1 -1
  607. package/source/exceptions.ts +18 -6
  608. package/source/index.ts +5 -5
  609. package/source/io.ts +1 -1
  610. package/source/manifest.test.ts +12 -10
  611. package/source/manifest.ts +13 -14
  612. package/source/redact.test.ts +27 -0
  613. package/source/redact.ts +21 -0
  614. package/source/root.ts +19 -4
  615. package/source/schemas.test.ts +17 -0
  616. package/source/schemas.ts +5 -5
  617. package/transpiled/Annotation.d.ts +22 -1
  618. package/transpiled/Annotation.js +1 -2
  619. package/transpiled/Branch.d.ts +25 -1
  620. package/transpiled/Branch.js +14 -2
  621. package/transpiled/Branch.js.map +1 -1
  622. package/transpiled/Composition.d.ts +3 -4
  623. package/transpiled/Composition.js +13 -22
  624. package/transpiled/Composition.js.map +1 -1
  625. package/transpiled/Context.d.ts +3 -2
  626. package/transpiled/Context.js +1 -2
  627. package/transpiled/Directive.d.ts +14 -6
  628. package/transpiled/Directive.js +71 -23
  629. package/transpiled/Directive.js.map +1 -1
  630. package/transpiled/Endpoint.d.ts +11 -7
  631. package/transpiled/Endpoint.js +84 -52
  632. package/transpiled/Endpoint.js.map +1 -1
  633. package/transpiled/Factory.d.ts +6 -6
  634. package/transpiled/Factory.js +69 -62
  635. package/transpiled/Factory.js.map +1 -1
  636. package/transpiled/Gateway.d.ts +35 -4
  637. package/transpiled/Gateway.js +159 -46
  638. package/transpiled/Gateway.js.map +1 -1
  639. package/transpiled/HTTP/Context.d.ts +13 -12
  640. package/transpiled/HTTP/Context.js +61 -32
  641. package/transpiled/HTTP/Context.js.map +1 -1
  642. package/transpiled/HTTP/Probe.d.ts +36 -0
  643. package/transpiled/HTTP/Probe.js +90 -0
  644. package/transpiled/HTTP/Probe.js.map +1 -0
  645. package/transpiled/HTTP/Server.d.ts +23 -9
  646. package/transpiled/HTTP/Server.js +233 -92
  647. package/transpiled/HTTP/Server.js.map +1 -1
  648. package/transpiled/HTTP/Timing.d.ts +1 -4
  649. package/transpiled/HTTP/Timing.js +6 -18
  650. package/transpiled/HTTP/Timing.js.map +1 -1
  651. package/transpiled/HTTP/address.d.ts +7 -0
  652. package/transpiled/HTTP/address.js +14 -0
  653. package/transpiled/HTTP/address.js.map +1 -0
  654. package/transpiled/HTTP/exceptions.d.ts +21 -9
  655. package/transpiled/HTTP/exceptions.js +40 -36
  656. package/transpiled/HTTP/exceptions.js.map +1 -1
  657. package/transpiled/HTTP/formats/index.d.ts +1 -3
  658. package/transpiled/HTTP/formats/index.js +9 -35
  659. package/transpiled/HTTP/formats/index.js.map +1 -1
  660. package/transpiled/HTTP/formats/json.d.ts +1 -3
  661. package/transpiled/HTTP/formats/json.js +6 -12
  662. package/transpiled/HTTP/formats/json.js.map +1 -1
  663. package/transpiled/HTTP/formats/msgpack.d.ts +0 -2
  664. package/transpiled/HTTP/formats/msgpack.js +7 -12
  665. package/transpiled/HTTP/formats/msgpack.js.map +1 -1
  666. package/transpiled/HTTP/formats/text.d.ts +1 -3
  667. package/transpiled/HTTP/formats/text.js +6 -12
  668. package/transpiled/HTTP/formats/text.js.map +1 -1
  669. package/transpiled/HTTP/formats/yaml.d.ts +1 -3
  670. package/transpiled/HTTP/formats/yaml.js +23 -37
  671. package/transpiled/HTTP/formats/yaml.js.map +1 -1
  672. package/transpiled/HTTP/index.d.ts +6 -4
  673. package/transpiled/HTTP/index.js +6 -20
  674. package/transpiled/HTTP/index.js.map +1 -1
  675. package/transpiled/HTTP/messages.d.ts +13 -4
  676. package/transpiled/HTTP/messages.js +112 -41
  677. package/transpiled/HTTP/messages.js.map +1 -1
  678. package/transpiled/HTTP/types.d.ts +37 -0
  679. package/transpiled/HTTP/types.js +2 -0
  680. package/transpiled/HTTP/types.js.map +1 -0
  681. package/transpiled/Interception.d.ts +3 -1
  682. package/transpiled/Interception.js +5 -5
  683. package/transpiled/Interception.js.map +1 -1
  684. package/transpiled/Introspection.d.ts +9 -0
  685. package/transpiled/Introspection.js +2 -0
  686. package/transpiled/Introspection.js.map +1 -0
  687. package/transpiled/Mapping.d.ts +14 -5
  688. package/transpiled/Mapping.js +48 -24
  689. package/transpiled/Mapping.js.map +1 -1
  690. package/transpiled/Query.d.ts +14 -4
  691. package/transpiled/Query.js +81 -45
  692. package/transpiled/Query.js.map +1 -1
  693. package/transpiled/RTD/Context.d.ts +6 -4
  694. package/transpiled/RTD/Context.js +1 -2
  695. package/transpiled/RTD/Directives.d.ts +23 -5
  696. package/transpiled/RTD/Directives.js +1 -2
  697. package/transpiled/RTD/Endpoint.d.ts +5 -4
  698. package/transpiled/RTD/Endpoint.js +1 -2
  699. package/transpiled/RTD/Match.d.ts +1 -1
  700. package/transpiled/RTD/Match.js +1 -2
  701. package/transpiled/RTD/Method.d.ts +6 -2
  702. package/transpiled/RTD/Method.js +12 -5
  703. package/transpiled/RTD/Method.js.map +1 -1
  704. package/transpiled/RTD/Node.d.ts +16 -5
  705. package/transpiled/RTD/Node.js +47 -22
  706. package/transpiled/RTD/Node.js.map +1 -1
  707. package/transpiled/RTD/Route.d.ts +7 -6
  708. package/transpiled/RTD/Route.js +11 -9
  709. package/transpiled/RTD/Route.js.map +1 -1
  710. package/transpiled/RTD/Tree.d.ts +12 -5
  711. package/transpiled/RTD/Tree.js +37 -12
  712. package/transpiled/RTD/Tree.js.map +1 -1
  713. package/transpiled/RTD/factory.d.ts +4 -3
  714. package/transpiled/RTD/factory.js +31 -15
  715. package/transpiled/RTD/factory.js.map +1 -1
  716. package/transpiled/RTD/index.d.ts +8 -8
  717. package/transpiled/RTD/index.js +8 -37
  718. package/transpiled/RTD/index.js.map +1 -1
  719. package/transpiled/RTD/segment.d.ts +1 -0
  720. package/transpiled/RTD/segment.js +4 -7
  721. package/transpiled/RTD/segment.js.map +1 -1
  722. package/transpiled/RTD/syntax/index.d.ts +2 -2
  723. package/transpiled/RTD/syntax/index.js +2 -18
  724. package/transpiled/RTD/syntax/index.js.map +1 -1
  725. package/transpiled/RTD/syntax/parse.d.ts +1 -1
  726. package/transpiled/RTD/syntax/parse.js +38 -54
  727. package/transpiled/RTD/syntax/parse.js.map +1 -1
  728. package/transpiled/RTD/syntax/types.d.ts +8 -3
  729. package/transpiled/RTD/syntax/types.js +1 -4
  730. package/transpiled/RTD/syntax/types.js.map +1 -1
  731. package/transpiled/Remotes.d.ts +7 -7
  732. package/transpiled/Remotes.js +15 -16
  733. package/transpiled/Remotes.js.map +1 -1
  734. package/transpiled/Tenant.d.ts +15 -4
  735. package/transpiled/Tenant.js +39 -14
  736. package/transpiled/Tenant.js.map +1 -1
  737. package/transpiled/const.d.ts +3 -0
  738. package/transpiled/const.js +4 -0
  739. package/transpiled/const.js.map +1 -0
  740. package/transpiled/deployment.d.ts +1 -1
  741. package/transpiled/deployment.js +40 -54
  742. package/transpiled/deployment.js.map +1 -1
  743. package/transpiled/directives/auth/Anonymous.d.ts +2 -2
  744. package/transpiled/directives/auth/Anonymous.js +3 -7
  745. package/transpiled/directives/auth/Anonymous.js.map +1 -1
  746. package/transpiled/directives/auth/Anyone.d.ts +6 -0
  747. package/transpiled/directives/auth/Anyone.js +10 -0
  748. package/transpiled/directives/auth/Anyone.js.map +1 -0
  749. package/transpiled/directives/auth/Assert.d.ts +7 -0
  750. package/transpiled/directives/auth/Assert.js +29 -0
  751. package/transpiled/directives/auth/Assert.js.map +1 -0
  752. package/transpiled/directives/auth/Authorization.d.ts +17 -7
  753. package/transpiled/directives/auth/Authorization.js +144 -78
  754. package/transpiled/directives/auth/Authorization.js.map +1 -1
  755. package/transpiled/directives/auth/Delegate.d.ts +5 -4
  756. package/transpiled/directives/auth/Delegate.js +10 -10
  757. package/transpiled/directives/auth/Delegate.js.map +1 -1
  758. package/transpiled/directives/auth/Echo.d.ts +4 -4
  759. package/transpiled/directives/auth/Echo.js +12 -9
  760. package/transpiled/directives/auth/Echo.js.map +1 -1
  761. package/transpiled/directives/auth/Federation.d.ts +16 -0
  762. package/transpiled/directives/auth/Federation.js +50 -0
  763. package/transpiled/directives/auth/Federation.js.map +1 -0
  764. package/transpiled/directives/auth/Id.d.ts +3 -3
  765. package/transpiled/directives/auth/Id.js +1 -5
  766. package/transpiled/directives/auth/Id.js.map +1 -1
  767. package/transpiled/directives/auth/Incept.d.ts +11 -6
  768. package/transpiled/directives/auth/Incept.js +62 -50
  769. package/transpiled/directives/auth/Incept.js.map +1 -1
  770. package/transpiled/directives/auth/Input.d.ts +13 -0
  771. package/transpiled/directives/auth/Input.js +45 -0
  772. package/transpiled/directives/auth/Input.js.map +1 -0
  773. package/transpiled/directives/auth/Role.d.ts +3 -3
  774. package/transpiled/directives/auth/Role.js +8 -16
  775. package/transpiled/directives/auth/Role.js.map +1 -1
  776. package/transpiled/directives/auth/Rule.d.ts +3 -5
  777. package/transpiled/directives/auth/Rule.js +3 -7
  778. package/transpiled/directives/auth/Rule.js.map +1 -1
  779. package/transpiled/directives/auth/Scheme.d.ts +2 -2
  780. package/transpiled/directives/auth/Scheme.js +7 -34
  781. package/transpiled/directives/auth/Scheme.js.map +1 -1
  782. package/transpiled/directives/auth/create.d.ts +2 -0
  783. package/transpiled/directives/auth/create.js +10 -0
  784. package/transpiled/directives/auth/create.js.map +1 -0
  785. package/transpiled/directives/auth/index.d.ts +1 -1
  786. package/transpiled/directives/auth/index.js +2 -5
  787. package/transpiled/directives/auth/index.js.map +1 -1
  788. package/transpiled/directives/auth/schemes.d.ts +12 -1
  789. package/transpiled/directives/auth/schemes.js +18 -6
  790. package/transpiled/directives/auth/schemes.js.map +1 -1
  791. package/transpiled/directives/auth/split.d.ts +1 -1
  792. package/transpiled/directives/auth/split.js +3 -30
  793. package/transpiled/directives/auth/split.js.map +1 -1
  794. package/transpiled/directives/auth/types.d.ts +15 -10
  795. package/transpiled/directives/auth/types.js +1 -2
  796. package/transpiled/directives/cache/Cache.d.ts +5 -5
  797. package/transpiled/directives/cache/Cache.js +20 -13
  798. package/transpiled/directives/cache/Cache.js.map +1 -1
  799. package/transpiled/directives/cache/Control.d.ts +3 -3
  800. package/transpiled/directives/cache/Control.js +15 -19
  801. package/transpiled/directives/cache/Control.js.map +1 -1
  802. package/transpiled/directives/cache/Exact.d.ts +1 -1
  803. package/transpiled/directives/cache/Exact.js +2 -6
  804. package/transpiled/directives/cache/Exact.js.map +1 -1
  805. package/transpiled/directives/cache/index.d.ts +1 -1
  806. package/transpiled/directives/cache/index.js +2 -5
  807. package/transpiled/directives/cache/index.js.map +1 -1
  808. package/transpiled/directives/cache/types.d.ts +1 -1
  809. package/transpiled/directives/cache/types.js +1 -2
  810. package/transpiled/directives/cors/CORS.d.ts +10 -3
  811. package/transpiled/directives/cors/CORS.js +31 -21
  812. package/transpiled/directives/cors/CORS.js.map +1 -1
  813. package/transpiled/directives/cors/index.d.ts +1 -1
  814. package/transpiled/directives/cors/index.js +2 -5
  815. package/transpiled/directives/cors/index.js.map +1 -1
  816. package/transpiled/directives/dev/Development.d.ts +4 -4
  817. package/transpiled/directives/dev/Development.js +19 -15
  818. package/transpiled/directives/dev/Development.js.map +1 -1
  819. package/transpiled/directives/dev/Faulty.d.ts +8 -0
  820. package/transpiled/directives/dev/Faulty.js +19 -0
  821. package/transpiled/directives/dev/Faulty.js.map +1 -0
  822. package/transpiled/directives/dev/Sleep.d.ts +9 -0
  823. package/transpiled/directives/dev/Sleep.js +41 -0
  824. package/transpiled/directives/dev/Sleep.js.map +1 -0
  825. package/transpiled/directives/dev/Stub.d.ts +2 -2
  826. package/transpiled/directives/dev/Stub.js +1 -5
  827. package/transpiled/directives/dev/Stub.js.map +1 -1
  828. package/transpiled/directives/dev/Throw.d.ts +2 -2
  829. package/transpiled/directives/dev/Throw.js +1 -5
  830. package/transpiled/directives/dev/Throw.js.map +1 -1
  831. package/transpiled/directives/dev/index.d.ts +1 -1
  832. package/transpiled/directives/dev/index.js +2 -5
  833. package/transpiled/directives/dev/index.js.map +1 -1
  834. package/transpiled/directives/dev/types.d.ts +2 -2
  835. package/transpiled/directives/dev/types.js +1 -2
  836. package/transpiled/directives/flow/Compose.d.ts +9 -0
  837. package/transpiled/directives/flow/Compose.js +67 -0
  838. package/transpiled/directives/flow/Compose.js.map +1 -0
  839. package/transpiled/directives/flow/Fetch.d.ts +12 -0
  840. package/transpiled/directives/flow/Fetch.js +51 -0
  841. package/transpiled/directives/flow/Fetch.js.map +1 -0
  842. package/transpiled/directives/flow/Flow.d.ts +10 -0
  843. package/transpiled/directives/flow/Flow.js +29 -0
  844. package/transpiled/directives/flow/Flow.js.map +1 -0
  845. package/transpiled/directives/flow/index.d.ts +2 -0
  846. package/transpiled/directives/flow/index.js +3 -0
  847. package/transpiled/directives/flow/index.js.map +1 -0
  848. package/transpiled/directives/flow/types.d.ts +6 -0
  849. package/transpiled/directives/flow/types.js +2 -0
  850. package/transpiled/directives/flow/types.js.map +1 -0
  851. package/transpiled/directives/index.d.ts +2 -2
  852. package/transpiled/directives/index.js +11 -13
  853. package/transpiled/directives/index.js.map +1 -1
  854. package/transpiled/directives/io/Directive.d.ts +8 -3
  855. package/transpiled/directives/io/Directive.js +1 -2
  856. package/transpiled/directives/io/IO.d.ts +18 -5
  857. package/transpiled/directives/io/IO.js +38 -17
  858. package/transpiled/directives/io/IO.js.map +1 -1
  859. package/transpiled/directives/io/Input.d.ts +4 -4
  860. package/transpiled/directives/io/Input.js +16 -37
  861. package/transpiled/directives/io/Input.js.map +1 -1
  862. package/transpiled/directives/io/Message.js +1 -2
  863. package/transpiled/directives/io/Output.d.ts +5 -3
  864. package/transpiled/directives/io/Output.js +16 -37
  865. package/transpiled/directives/io/Output.js.map +1 -1
  866. package/transpiled/directives/io/Throttle.d.ts +11 -0
  867. package/transpiled/directives/io/Throttle.js +22 -0
  868. package/transpiled/directives/io/Throttle.js.map +1 -0
  869. package/transpiled/directives/io/index.d.ts +1 -1
  870. package/transpiled/directives/io/index.js +2 -5
  871. package/transpiled/directives/io/index.js.map +1 -1
  872. package/transpiled/directives/io/lib/throttle/Configuration.d.ts +26 -0
  873. package/transpiled/directives/io/lib/throttle/Configuration.js +25 -0
  874. package/transpiled/directives/io/lib/throttle/Configuration.js.map +1 -0
  875. package/transpiled/directives/io/lib/throttle/Keys.d.ts +14 -0
  876. package/transpiled/directives/io/lib/throttle/Keys.js +32 -0
  877. package/transpiled/directives/io/lib/throttle/Keys.js.map +1 -0
  878. package/transpiled/directives/io/lib/throttle/Quotas.d.ts +70 -0
  879. package/transpiled/directives/io/lib/throttle/Quotas.js +141 -0
  880. package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -0
  881. package/transpiled/directives/io/lib/throttle/Sync.d.ts +29 -0
  882. package/transpiled/directives/io/lib/throttle/Sync.js +70 -0
  883. package/transpiled/directives/io/lib/throttle/Sync.js.map +1 -0
  884. package/transpiled/directives/io/lib/throttle/Warning.d.ts +11 -0
  885. package/transpiled/directives/io/lib/throttle/Warning.js +24 -0
  886. package/transpiled/directives/io/lib/throttle/Warning.js.map +1 -0
  887. package/transpiled/directives/io/lib/throttle/components/Component.d.ts +6 -0
  888. package/transpiled/directives/io/lib/throttle/components/Component.js +2 -0
  889. package/transpiled/directives/io/lib/throttle/components/Component.js.map +1 -0
  890. package/transpiled/directives/io/lib/throttle/components/IP.d.ts +14 -0
  891. package/transpiled/directives/io/lib/throttle/components/IP.js +24 -0
  892. package/transpiled/directives/io/lib/throttle/components/IP.js.map +1 -0
  893. package/transpiled/directives/io/lib/throttle/components/Identity.d.ts +11 -0
  894. package/transpiled/directives/io/lib/throttle/components/Identity.js +12 -0
  895. package/transpiled/directives/io/lib/throttle/components/Identity.js.map +1 -0
  896. package/transpiled/directives/io/lib/throttle/components/Path.d.ts +5 -0
  897. package/transpiled/directives/io/lib/throttle/components/Path.js +6 -0
  898. package/transpiled/directives/io/lib/throttle/components/Path.js.map +1 -0
  899. package/transpiled/directives/io/lib/throttle/components/Route.d.ts +12 -0
  900. package/transpiled/directives/io/lib/throttle/components/Route.js +16 -0
  901. package/transpiled/directives/io/lib/throttle/components/Route.js.map +1 -0
  902. package/transpiled/directives/io/lib/throttle/components/Segment.d.ts +9 -0
  903. package/transpiled/directives/io/lib/throttle/components/Segment.js +13 -0
  904. package/transpiled/directives/io/lib/throttle/components/Segment.js.map +1 -0
  905. package/transpiled/directives/io/lib/throttle/components/index.d.ts +5 -0
  906. package/transpiled/directives/io/lib/throttle/components/index.js +13 -0
  907. package/transpiled/directives/io/lib/throttle/components/index.js.map +1 -0
  908. package/transpiled/directives/io/lib/throttle/conditions/Condition.d.ts +4 -0
  909. package/transpiled/directives/io/lib/throttle/conditions/Condition.js +2 -0
  910. package/transpiled/directives/io/lib/throttle/conditions/Condition.js.map +1 -0
  911. package/transpiled/directives/io/lib/throttle/conditions/Status.d.ts +7 -0
  912. package/transpiled/directives/io/lib/throttle/conditions/Status.js +12 -0
  913. package/transpiled/directives/io/lib/throttle/conditions/Status.js.map +1 -0
  914. package/transpiled/directives/io/lib/throttle/conditions/index.d.ts +5 -0
  915. package/transpiled/directives/io/lib/throttle/conditions/index.js +5 -0
  916. package/transpiled/directives/io/lib/throttle/conditions/index.js.map +1 -0
  917. package/transpiled/directives/io/lib/throttle/index.d.ts +4 -0
  918. package/transpiled/directives/io/lib/throttle/index.js +5 -0
  919. package/transpiled/directives/io/lib/throttle/index.js.map +1 -0
  920. package/transpiled/directives/io/schemas.d.ts +6 -4
  921. package/transpiled/directives/io/schemas.js +8 -13
  922. package/transpiled/directives/io/schemas.js.map +1 -1
  923. package/transpiled/directives/map/Authority.d.ts +6 -0
  924. package/transpiled/directives/map/Authority.js +12 -0
  925. package/transpiled/directives/map/Authority.js.map +1 -0
  926. package/transpiled/directives/map/Buffer.d.ts +6 -0
  927. package/transpiled/directives/map/Buffer.js +12 -0
  928. package/transpiled/directives/map/Buffer.js.map +1 -0
  929. package/transpiled/directives/map/Claims.d.ts +10 -0
  930. package/transpiled/directives/map/Claims.js +37 -0
  931. package/transpiled/directives/map/Claims.js.map +1 -0
  932. package/transpiled/directives/map/Directive.d.ts +3 -0
  933. package/transpiled/directives/map/Directive.js +2 -0
  934. package/transpiled/directives/map/Directive.js.map +1 -0
  935. package/transpiled/directives/map/Headers.d.ts +7 -0
  936. package/transpiled/directives/map/Headers.js +33 -0
  937. package/transpiled/directives/map/Headers.js.map +1 -0
  938. package/transpiled/directives/map/Language.d.ts +10 -0
  939. package/transpiled/directives/map/Language.js +31 -0
  940. package/transpiled/directives/map/Language.js.map +1 -0
  941. package/transpiled/directives/map/Languages.d.ts +4 -0
  942. package/transpiled/directives/map/Languages.js +10 -0
  943. package/transpiled/directives/map/Languages.js.map +1 -0
  944. package/transpiled/directives/map/Map.d.ts +13 -0
  945. package/transpiled/directives/map/Map.js +44 -0
  946. package/transpiled/directives/map/Map.js.map +1 -0
  947. package/transpiled/directives/map/Mapping.d.ts +13 -0
  948. package/transpiled/directives/map/Mapping.js +9 -0
  949. package/transpiled/directives/map/Mapping.js.map +1 -0
  950. package/transpiled/directives/{vary → map}/Properties.d.ts +2 -2
  951. package/transpiled/directives/map/Properties.js +10 -0
  952. package/transpiled/directives/map/Properties.js.map +1 -0
  953. package/transpiled/directives/map/Segments.d.ts +6 -0
  954. package/transpiled/directives/map/Segments.js +23 -0
  955. package/transpiled/directives/map/Segments.js.map +1 -0
  956. package/transpiled/directives/map/index.d.ts +2 -0
  957. package/transpiled/directives/map/index.js +3 -0
  958. package/transpiled/directives/map/index.js.map +1 -0
  959. package/transpiled/directives/octets/Context.d.ts +2 -2
  960. package/transpiled/directives/octets/Context.js +4 -31
  961. package/transpiled/directives/octets/Context.js.map +1 -1
  962. package/transpiled/directives/octets/Delete.d.ts +6 -6
  963. package/transpiled/directives/octets/Delete.js +23 -47
  964. package/transpiled/directives/octets/Delete.js.map +1 -1
  965. package/transpiled/directives/octets/Directive.d.ts +3 -3
  966. package/transpiled/directives/octets/Directive.js +1 -5
  967. package/transpiled/directives/octets/Directive.js.map +1 -1
  968. package/transpiled/directives/octets/Get.d.ts +17 -0
  969. package/transpiled/directives/octets/Get.js +69 -0
  970. package/transpiled/directives/octets/Get.js.map +1 -0
  971. package/transpiled/directives/octets/Octets.d.ts +5 -5
  972. package/transpiled/directives/octets/Octets.js +19 -24
  973. package/transpiled/directives/octets/Octets.js.map +1 -1
  974. package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +14 -8
  975. package/transpiled/directives/octets/Put.js +74 -0
  976. package/transpiled/directives/octets/Put.js.map +1 -0
  977. package/transpiled/directives/octets/Workflow.d.ts +6 -6
  978. package/transpiled/directives/octets/Workflow.js +14 -36
  979. package/transpiled/directives/octets/Workflow.js.map +1 -1
  980. package/transpiled/directives/octets/bytes.d.ts +1 -0
  981. package/transpiled/directives/octets/bytes.js +14 -0
  982. package/transpiled/directives/octets/bytes.js.map +1 -0
  983. package/transpiled/directives/octets/index.d.ts +1 -1
  984. package/transpiled/directives/octets/index.js +2 -5
  985. package/transpiled/directives/octets/index.js.map +1 -1
  986. package/transpiled/directives/octets/schemas.d.ts +6 -10
  987. package/transpiled/directives/octets/schemas.js +8 -17
  988. package/transpiled/directives/octets/schemas.js.map +1 -1
  989. package/transpiled/directives/octets/types.d.ts +3 -1
  990. package/transpiled/directives/octets/types.js +1 -2
  991. package/transpiled/directives/octets/workflows/Execution.d.ts +9 -4
  992. package/transpiled/directives/octets/workflows/Execution.js +46 -13
  993. package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
  994. package/transpiled/directives/octets/workflows/Workflow.d.ts +10 -5
  995. package/transpiled/directives/octets/workflows/Workflow.js +16 -14
  996. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
  997. package/transpiled/directives/octets/workflows/index.d.ts +1 -1
  998. package/transpiled/directives/octets/workflows/index.js +1 -5
  999. package/transpiled/directives/octets/workflows/index.js.map +1 -1
  1000. package/transpiled/directives/require/Directive.d.ts +1 -1
  1001. package/transpiled/directives/require/Directive.js +1 -2
  1002. package/transpiled/directives/require/Headers.d.ts +2 -2
  1003. package/transpiled/directives/require/Headers.js +3 -7
  1004. package/transpiled/directives/require/Headers.js.map +1 -1
  1005. package/transpiled/directives/require/Require.d.ts +3 -3
  1006. package/transpiled/directives/require/Require.js +6 -13
  1007. package/transpiled/directives/require/Require.js.map +1 -1
  1008. package/transpiled/directives/require/index.d.ts +1 -1
  1009. package/transpiled/directives/require/index.js +2 -5
  1010. package/transpiled/directives/require/index.js.map +1 -1
  1011. package/transpiled/discovery.js +1 -2
  1012. package/transpiled/exceptions.d.ts +1 -1
  1013. package/transpiled/exceptions.js +16 -34
  1014. package/transpiled/exceptions.js.map +1 -1
  1015. package/transpiled/index.d.ts +5 -5
  1016. package/transpiled/index.js +4 -11
  1017. package/transpiled/index.js.map +1 -1
  1018. package/transpiled/io.d.ts +1 -1
  1019. package/transpiled/io.js +1 -2
  1020. package/transpiled/manifest.d.ts +1 -1
  1021. package/transpiled/manifest.js +17 -48
  1022. package/transpiled/manifest.js.map +1 -1
  1023. package/transpiled/redact.d.ts +5 -0
  1024. package/transpiled/redact.js +17 -0
  1025. package/transpiled/redact.js.map +1 -0
  1026. package/transpiled/root.d.ts +1 -1
  1027. package/transpiled/root.js +21 -10
  1028. package/transpiled/root.js.map +1 -1
  1029. package/transpiled/schemas.d.ts +3 -3
  1030. package/transpiled/schemas.js +7 -13
  1031. package/transpiled/schemas.js.map +1 -1
  1032. package/tsconfig.json +2 -1
  1033. package/tsconfig.tsbuildinfo +1 -0
  1034. package/components/identity.bans/operations/tsconfig.tsbuildinfo +0 -1
  1035. package/components/identity.basic/operations/tsconfig.tsbuildinfo +0 -1
  1036. package/components/identity.federation/operations/lib/assertions-as-values.d.ts +0 -4
  1037. package/components/identity.federation/operations/lib/assertions-as-values.js +0 -45
  1038. package/components/identity.federation/operations/lib/assertions-as-values.js.map +0 -1
  1039. package/components/identity.federation/operations/lib/jwt.d.ts +0 -20
  1040. package/components/identity.federation/operations/lib/jwt.js +0 -136
  1041. package/components/identity.federation/operations/lib/jwt.js.map +0 -1
  1042. package/components/identity.federation/operations/schemas.d.ts +0 -63
  1043. package/components/identity.federation/operations/schemas.js +0 -9
  1044. package/components/identity.federation/operations/schemas.js.map +0 -1
  1045. package/components/identity.federation/operations/tsconfig.tsbuildinfo +0 -1
  1046. package/components/identity.federation/operations/types.d.ts +0 -56
  1047. package/components/identity.federation/operations/types.js +0 -3
  1048. package/components/identity.federation/operations/types.js.map +0 -1
  1049. package/components/identity.federation/source/lib/assertions-as-values.ts +0 -19
  1050. package/components/identity.federation/source/lib/jwt.test.ts +0 -56
  1051. package/components/identity.federation/source/lib/jwt.ts +0 -171
  1052. package/components/identity.federation/source/schemas.ts +0 -65
  1053. package/components/identity.federation/source/types.ts +0 -62
  1054. package/components/identity.roles/operations/tsconfig.tsbuildinfo +0 -1
  1055. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +0 -1
  1056. package/components/identity.tokens/operations/types.d.ts +0 -46
  1057. package/components/identity.tokens/operations/types.js +0 -3
  1058. package/components/identity.tokens/operations/types.js.map +0 -1
  1059. package/components/identity.tokens/source/types.ts +0 -55
  1060. package/components/octets.storage/manifest.toa.yaml +0 -21
  1061. package/components/octets.storage/operations/fetch.js +0 -46
  1062. package/components/octets.storage/operations/get.js +0 -7
  1063. package/components/octets.storage/operations/list.js +0 -7
  1064. package/components/octets.storage/operations/store.js +0 -11
  1065. package/cucumber.js +0 -7
  1066. package/documentation/vary.md +0 -69
  1067. package/features/steps/IdP.ts +0 -154
  1068. package/features/steps/components/octets.tester/operations/diversify.js +0 -14
  1069. package/features/vary.feature +0 -252
  1070. package/schemas/octets/context.cos.yaml +0 -1
  1071. package/schemas/octets/fetch.cos.yaml +0 -3
  1072. package/schemas/octets/list.cos.yaml +0 -2
  1073. package/schemas/octets/permute.cos.yaml +0 -1
  1074. package/schemas/octets/store.cos.yaml +0 -3
  1075. package/source/directives/octets/Fetch.ts +0 -100
  1076. package/source/directives/octets/List.ts +0 -72
  1077. package/source/directives/octets/Store.ts +0 -126
  1078. package/source/directives/vary/Directive.ts +0 -7
  1079. package/source/directives/vary/Embed.ts +0 -68
  1080. package/source/directives/vary/Vary.ts +0 -50
  1081. package/source/directives/vary/embeddings/Authority.ts +0 -8
  1082. package/source/directives/vary/embeddings/Embedding.ts +0 -7
  1083. package/source/directives/vary/embeddings/Header.ts +0 -32
  1084. package/source/directives/vary/embeddings/Language.ts +0 -31
  1085. package/source/directives/vary/embeddings/Parameter.ts +0 -14
  1086. package/source/directives/vary/embeddings/index.ts +0 -13
  1087. package/source/directives/vary/index.ts +0 -3
  1088. package/source/index.test.ts +0 -9
  1089. package/transpiled/directives/octets/Fetch.d.ts +0 -18
  1090. package/transpiled/directives/octets/Fetch.js +0 -92
  1091. package/transpiled/directives/octets/Fetch.js.map +0 -1
  1092. package/transpiled/directives/octets/List.d.ts +0 -16
  1093. package/transpiled/directives/octets/List.js +0 -74
  1094. package/transpiled/directives/octets/List.js.map +0 -1
  1095. package/transpiled/directives/octets/Store.js +0 -95
  1096. package/transpiled/directives/octets/Store.js.map +0 -1
  1097. package/transpiled/directives/vary/Directive.d.ts +0 -6
  1098. package/transpiled/directives/vary/Directive.js +0 -3
  1099. package/transpiled/directives/vary/Directive.js.map +0 -1
  1100. package/transpiled/directives/vary/Embed.d.ts +0 -11
  1101. package/transpiled/directives/vary/Embed.js +0 -51
  1102. package/transpiled/directives/vary/Embed.js.map +0 -1
  1103. package/transpiled/directives/vary/Properties.js +0 -16
  1104. package/transpiled/directives/vary/Properties.js.map +0 -1
  1105. package/transpiled/directives/vary/Vary.d.ts +0 -10
  1106. package/transpiled/directives/vary/Vary.js +0 -36
  1107. package/transpiled/directives/vary/Vary.js.map +0 -1
  1108. package/transpiled/directives/vary/embeddings/Authority.d.ts +0 -5
  1109. package/transpiled/directives/vary/embeddings/Authority.js +0 -10
  1110. package/transpiled/directives/vary/embeddings/Authority.js.map +0 -1
  1111. package/transpiled/directives/vary/embeddings/Embedding.d.ts +0 -6
  1112. package/transpiled/directives/vary/embeddings/Embedding.js +0 -3
  1113. package/transpiled/directives/vary/embeddings/Embedding.js.map +0 -1
  1114. package/transpiled/directives/vary/embeddings/Header.d.ts +0 -7
  1115. package/transpiled/directives/vary/embeddings/Header.js +0 -28
  1116. package/transpiled/directives/vary/embeddings/Header.js.map +0 -1
  1117. package/transpiled/directives/vary/embeddings/Language.d.ts +0 -7
  1118. package/transpiled/directives/vary/embeddings/Language.js +0 -28
  1119. package/transpiled/directives/vary/embeddings/Language.js.map +0 -1
  1120. package/transpiled/directives/vary/embeddings/Parameter.d.ts +0 -7
  1121. package/transpiled/directives/vary/embeddings/Parameter.js +0 -14
  1122. package/transpiled/directives/vary/embeddings/Parameter.js.map +0 -1
  1123. package/transpiled/directives/vary/embeddings/index.d.ts +0 -5
  1124. package/transpiled/directives/vary/embeddings/index.js +0 -14
  1125. package/transpiled/directives/vary/embeddings/index.js.map +0 -1
  1126. package/transpiled/directives/vary/index.d.ts +0 -2
  1127. package/transpiled/directives/vary/index.js +0 -6
  1128. package/transpiled/directives/vary/index.js.map +0 -1
  1129. package/transpiled/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,196 @@
1
+ import { Keys } from './Keys.js'
2
+ import type { Batch } from './Sync.js'
3
+ import type { Configuration } from './Configuration.js'
4
+ import type { Parameter } from '../../../../RTD/index.js'
5
+ import type { Input as Context, Output } from '../../../../io.js'
6
+
7
+ /**
8
+ * A quota per key, metered by GCRA, decided in this process and shared with the others.
9
+ *
10
+ * The state of a key is one theoretical arrival time: the moment the key would be back
11
+ * at zero if nothing more arrived. An admitted request pushes it `emission` further out,
12
+ * time drags it back, and a request is admitted while it stays within `capacity` of now.
13
+ * So `requests` is what a key may spend at once, and `requests / interval` what it earns
14
+ * back — no window to burst across the edge of, and no lockout to time out of.
15
+ *
16
+ * Deciding needs nothing but the local map, which is what keeps the request path free of
17
+ * I/O. What the other gateways have spent arrives on {@link Sync}'s tick, as a debt in
18
+ * milliseconds — a duration, so it carries across processes without their clocks having
19
+ * to agree, and additive, which is what lets each process report only its own increments.
20
+ */
21
+ export class Quotas {
22
+ /** How often the debt is worth reconciling with the other gateways, in milliseconds. */
23
+ public readonly period: number
24
+
25
+ /** Milliseconds of debt an admitted request adds, `interval / requests`. */
26
+ private readonly emission: number
27
+
28
+ /** Debt a key may carry before it is refused, `interval` — a burst of `requests`. */
29
+ private readonly capacity: number
30
+
31
+ private readonly keys: Keys
32
+ private readonly prefix: string
33
+ private readonly conditional: boolean
34
+ private readonly entries = new Map<string, Entry>()
35
+
36
+ /**
37
+ * The key computed at preflight, for settle to charge against.
38
+ *
39
+ * `segment` reads the route parameters, which settle is not given, and `identity`
40
+ * can be refreshed between the two — so recomputing there would key a request
41
+ * differently than it was checked, and throttling would quietly stop working.
42
+ */
43
+ private readonly keyed = new WeakMap<Context, string>()
44
+
45
+ public constructor (options: Options) {
46
+ this.keys = options.keys
47
+ this.conditional = options.conditional
48
+ this.emission = options.interval / options.requests
49
+ this.capacity = options.interval
50
+ this.period = period(options.interval)
51
+
52
+ // a key means one budget, so quotas that do not share one must not share a key
53
+ this.prefix = options.name === undefined
54
+ ? `t:${options.requests}:${options.interval}:`
55
+ : `${options.name}:`
56
+ }
57
+
58
+ public static create (configuration: Configuration, route: string = ''): Quotas {
59
+ const { requests, interval, condition } = configuration
60
+ const keys = Keys.create(configuration.key, condition, route)
61
+
62
+ return new this({ keys, requests, interval, conditional: condition !== undefined })
63
+ }
64
+
65
+ /**
66
+ * Seconds to wait before the request would be admitted, or zero when it is.
67
+ *
68
+ * Charges here when nothing conditions the count, so that the request is metered by
69
+ * the same call that admits it; otherwise only the response can tell whether it counts,
70
+ * and {@link use} charges once it can.
71
+ */
72
+ public check (context: Context, parameters: Parameter[]): number {
73
+ const key = this.keys.get(context, parameters)
74
+
75
+ // a request that cannot be keyed is not metered
76
+ if (key === undefined)
77
+ return 0
78
+
79
+ this.keyed.set(context, key)
80
+
81
+ const now = Date.now()
82
+ const entry = this.entries.get(key)
83
+ const tat = Math.max(entry?.tat ?? now, now)
84
+ const admit = tat + this.emission - this.capacity
85
+
86
+ if (admit > now)
87
+ return Math.ceil((admit - now) / 1000)
88
+
89
+ if (!this.conditional)
90
+ this.charge(key, entry, tat)
91
+
92
+ return 0
93
+ }
94
+
95
+ /** Charges what the condition accepts, once the response can be matched against it. */
96
+ public use (input: Context, output: Output): void {
97
+ if (!this.conditional || !this.keys.matches(input, output))
98
+ return
99
+
100
+ // preflight always runs first, and a request it refuses never reaches settle
101
+ const key = this.keyed.get(input) ?? this.keys.get(input)
102
+
103
+ if (key === undefined)
104
+ return
105
+
106
+ const now = Date.now()
107
+ const entry = this.entries.get(key)
108
+ const tat = Math.max(entry?.tat ?? now, now)
109
+
110
+ this.charge(key, entry, tat)
111
+ }
112
+
113
+ /**
114
+ * Adds what is worth reporting to the batch, and drops what has gone quiet.
115
+ *
116
+ * The debt is not cleared here but in {@link settled}, so a tick that fails to reach
117
+ * Redis leaves it to be reported by the next one instead of losing it.
118
+ */
119
+ public flush (now: number, batch: Batch[]): void {
120
+ for (const [key, entry] of this.entries) {
121
+ const delta = Math.round(entry.debt)
122
+
123
+ if (delta > 0) {
124
+ batch.push({ quotas: this, key, delta })
125
+
126
+ continue
127
+ }
128
+
129
+ // out of debt and with nothing left to report, a key says no more than an absent one
130
+ if (entry.tat <= now)
131
+ this.entries.delete(key)
132
+ }
133
+ }
134
+
135
+ /** Takes the group's debt back, and clears what this process contributed to it. */
136
+ public settled (reported: Batch, debt: number, now: number): void {
137
+ const entry = this.entries.get(reported.key)
138
+
139
+ if (entry === undefined) {
140
+ if (debt > 0)
141
+ this.entries.set(reported.key, { tat: now + debt, debt: 0 })
142
+
143
+ return
144
+ }
145
+
146
+ entry.debt -= reported.delta
147
+
148
+ // the group has spent at least what this process has, so its debt is the one to keep
149
+ entry.tat = Math.max(entry.tat, now + debt)
150
+ }
151
+
152
+ public name (key: string): string {
153
+ return this.prefix + key
154
+ }
155
+
156
+ private charge (key: string, entry: Entry | undefined, tat: number): void {
157
+ if (entry === undefined)
158
+ this.entries.set(key, { tat: tat + this.emission, debt: this.emission })
159
+ else {
160
+ entry.tat = tat + this.emission
161
+ entry.debt += this.emission
162
+ }
163
+ }
164
+ }
165
+
166
+ /**
167
+ * How often to reconcile, in milliseconds.
168
+ *
169
+ * Reconciling is what bounds the overshoot — between two ticks a gateway is going on
170
+ * what it alone has spent — so it is worth doing an order of magnitude more often than
171
+ * the interval, within reason on either end.
172
+ */
173
+ function period (interval: number): number {
174
+ return Math.min(Math.max(interval / 10, MIN_PERIOD), MAX_PERIOD)
175
+ }
176
+
177
+ const MIN_PERIOD = 250
178
+ const MAX_PERIOD = 2000
179
+
180
+ interface Entry {
181
+ /** Theoretical arrival time: when the key is back at zero if nothing more arrives. */
182
+ tat: number
183
+
184
+ /** Milliseconds of debt this process has added and not yet reported. */
185
+ debt: number
186
+ }
187
+
188
+ export interface Options {
189
+ keys: Keys
190
+ requests: number
191
+ interval: number
192
+ conditional: boolean
193
+
194
+ /** what the keys are reported under, in place of the budget they carry */
195
+ name?: string
196
+ }
@@ -0,0 +1,159 @@
1
+ import { it, beforeEach, afterEach, mock } from 'node:test'
2
+ import assert from 'node:assert/strict'
3
+
4
+ import { Sync } from './Sync.js'
5
+ import { Quotas } from './Quotas.js'
6
+ import type { atomicity } from '@toa.io/core'
7
+ import type { Configuration } from './Configuration.js'
8
+ import type { Input as Context } from '../../../../io.js'
9
+
10
+ let sync: Sync
11
+ let invocations: Input[]
12
+ let context: Context
13
+
14
+ beforeEach(() => {
15
+ mock.timers.enable()
16
+
17
+ invocations = []
18
+ context = createContext()
19
+ })
20
+
21
+ afterEach(() => {
22
+ sync.dispose()
23
+
24
+ mock.timers.reset()
25
+ })
26
+
27
+ it('should tick as often as the shortest interval asks', async () => {
28
+ sync = new Sync(createStash())
29
+
30
+ const slow = createQuotas({ interval: 60_000 })
31
+
32
+ // on its own a minute reconciles every two seconds, which is the cap
33
+ sync.register(slow)
34
+ slow.check(context, [])
35
+
36
+ await tick()
37
+
38
+ assert.strictEqual(invocations.length, 0)
39
+
40
+ // a second asks for every 250ms, and the shortest sets the pace for all of them
41
+ sync.register(createQuotas({ interval: 1000 }))
42
+
43
+ await tick()
44
+
45
+ // that a single timer paces every quota was asserted through jest's timer
46
+ // count, which node:test does not expose; the pacing above still covers it
47
+ assert.strictEqual(invocations.length, 1)
48
+ })
49
+
50
+ it('should reconcile every quota in one call', async () => {
51
+ sync = new Sync(createStash())
52
+
53
+ const one = createQuotas()
54
+ const two = createQuotas({ key: [{ method: 'identity' }] })
55
+
56
+ sync.register(one)
57
+ sync.register(two)
58
+
59
+ one.check(context, [])
60
+ two.check(context, [])
61
+
62
+ await tick()
63
+
64
+ assert.strictEqual(invocations.length, 1)
65
+ assert.strictEqual(invocations[0].keys.length, 2)
66
+ assert.deepStrictEqual(invocations[0].deltas, [50, 50])
67
+ })
68
+
69
+ it('should not call when there is nothing to report', async () => {
70
+ sync = new Sync(createStash())
71
+
72
+ sync.register(createQuotas())
73
+
74
+ await tick()
75
+
76
+ assert.strictEqual(invocations.length, 0)
77
+ })
78
+
79
+ it('should take the group debt back', async () => {
80
+ sync = new Sync(createStash(() => [1000]))
81
+
82
+ const quotas = createQuotas()
83
+
84
+ sync.register(quotas)
85
+ quotas.check(context, [])
86
+
87
+ await tick()
88
+
89
+ // one request here, but the group is already at capacity
90
+ assert.ok(quotas.check(context, []) > 0)
91
+ })
92
+
93
+ it('should clear what it reported', async () => {
94
+ sync = new Sync(createStash())
95
+
96
+ const quotas = createQuotas()
97
+
98
+ sync.register(quotas)
99
+ quotas.check(context, [])
100
+
101
+ await tick()
102
+ await tick()
103
+
104
+ assert.strictEqual(invocations.length, 1)
105
+ })
106
+
107
+ it('should keep what it could not report, and keep serving', async () => {
108
+ sync = new Sync(createStash(() => {
109
+ throw new Error('Redis is unreachable')
110
+ }))
111
+
112
+ const quotas = createQuotas()
113
+
114
+ sync.register(quotas)
115
+ quotas.check(context, [])
116
+
117
+ await tick()
118
+ await tick()
119
+
120
+ assert.strictEqual(invocations.length, 2)
121
+ assert.deepStrictEqual(invocations[1].deltas, [50])
122
+ assert.strictEqual(quotas.check(context, []), 0)
123
+ })
124
+
125
+ async function tick (): Promise<void> {
126
+ mock.timers.tick(250)
127
+
128
+ // the reconciliation a tick starts is asynchronous, and node:test advances
129
+ // timers synchronously; let it settle before the next one
130
+ await new Promise((resolve) => process.nextTick(resolve))
131
+ }
132
+
133
+ function createQuotas (properties?: Partial<Configuration>): Quotas {
134
+ const configuration = { key: [{ method: 'path' as const }], requests: 2, interval: 100 }
135
+
136
+ return Quotas.create(Object.assign(configuration, properties))
137
+ }
138
+
139
+ function createContext (properties?: any): Context {
140
+ return Object.assign({ url: new URL('http://localhost/'), identity: { id: 'one' } },
141
+ properties) as unknown as Context
142
+ }
143
+
144
+ function createStash (reply?: (deltas: number[]) => number[]): atomicity.Atom {
145
+ const atom = {
146
+ meter: async (keys: string[], deltas: number[]): Promise<number[]> => {
147
+ invocations.push({ keys, deltas })
148
+
149
+ return reply === undefined ? deltas : reply(deltas)
150
+ }
151
+ }
152
+
153
+ return atom as unknown as atomicity.Atom
154
+ }
155
+
156
+ interface Input {
157
+ keys: string[]
158
+ deltas: number[]
159
+ }
@@ -0,0 +1,96 @@
1
+ import { console } from 'openspan'
2
+ import type { Quotas } from './Quotas.js'
3
+ import type { atomicity } from '@toa.io/core'
4
+
5
+ /**
6
+ * Reconciles every quota of the process with the other gateways, on one tick.
7
+ *
8
+ * Nothing here is on the request path. Each tick takes what the quotas have spent since
9
+ * the last one and sends all of it as a single call, so the cost of staying in step is
10
+ * one round trip a tick — not one per key, and not one per directive. What comes back is
11
+ * the debt the whole group has reached, which the quotas then decide on locally.
12
+ */
13
+ export class Sync {
14
+ private readonly atom: atomicity.Atom
15
+ private readonly quotas: Quotas[] = []
16
+ private timer: NodeJS.Timeout | null = null
17
+ private period = Infinity
18
+
19
+ /** Ticks do not overlap: a slow round trip delays reconciling, it does not double it. */
20
+ private reconciling = false
21
+
22
+ public constructor (atom: atomicity.Atom) {
23
+ this.atom = atom
24
+ }
25
+
26
+ public register (quotas: Quotas): void {
27
+ this.quotas.push(quotas)
28
+
29
+ // the shortest interval sets the pace, and reconciling the others more often than
30
+ // they asked for only makes them more accurate — an idle quota contributes nothing
31
+ if (quotas.period < this.period) {
32
+ this.period = quotas.period
33
+
34
+ this.start()
35
+ }
36
+ }
37
+
38
+ public dispose (): void {
39
+ if (this.timer !== null) {
40
+ clearInterval(this.timer)
41
+
42
+ this.timer = null
43
+ }
44
+ }
45
+
46
+ private start (): void {
47
+ this.dispose()
48
+
49
+ this.timer = setInterval(this.tick, this.period)
50
+
51
+ this.timer.unref()
52
+ }
53
+
54
+ private readonly tick = (): void => {
55
+ if (this.reconciling)
56
+ return
57
+
58
+ const now = Date.now()
59
+ const batch: Batch[] = []
60
+
61
+ for (const quotas of this.quotas)
62
+ quotas.flush(now, batch)
63
+
64
+ if (batch.length === 0)
65
+ return
66
+
67
+ this.reconciling = true
68
+
69
+ void this.reconcile(batch).finally(() => {
70
+ this.reconciling = false
71
+ })
72
+ }
73
+
74
+ private async reconcile (batch: Batch[]): Promise<void> {
75
+ try {
76
+ const keys = batch.map((entry) => entry.quotas.name(entry.key))
77
+ const deltas = batch.map((entry) => entry.delta)
78
+
79
+ const debts = await this.atom.meter(keys, deltas)
80
+ const now = Date.now()
81
+
82
+ for (let i = 0; i < batch.length; i++)
83
+ batch[i].quotas.settled(batch[i], debts[i], now)
84
+ } catch (error) {
85
+ // what was not reported stays to be reported by the next tick, and until then
86
+ // this gateway keeps throttling on what it alone has seen, and keeps serving
87
+ console.warn('Throttling could not reconcile with the group', error as Error)
88
+ }
89
+ }
90
+ }
91
+
92
+ export interface Batch {
93
+ quotas: Quotas
94
+ key: string
95
+ delta: number
96
+ }
@@ -0,0 +1,32 @@
1
+ import { it, beforeEach, afterEach, mock } from 'node:test'
2
+ import assert from 'node:assert/strict'
3
+
4
+ import { console } from 'openspan'
5
+ import { Warning } from './Warning.js'
6
+
7
+ let warn: ReturnType<typeof mock.method>
8
+
9
+ beforeEach(() => {
10
+ mock.timers.enable({ apis: ['Date'] })
11
+ warn = mock.method(console, 'warn', () => undefined)
12
+ })
13
+
14
+ afterEach(() => {
15
+ warn.mock.restore()
16
+ mock.timers.reset()
17
+ })
18
+
19
+ it('should write once per interval', () => {
20
+ const warning = new Warning('no ip', 1000)
21
+
22
+ warning.emit()
23
+ warning.emit()
24
+
25
+ assert.equal(warn.mock.callCount(), 1)
26
+
27
+ mock.timers.tick(1000)
28
+ warning.emit()
29
+
30
+ assert.equal(warn.mock.callCount(), 2)
31
+ assert.equal(warn.mock.calls[0].arguments[0], 'no ip')
32
+ })
@@ -0,0 +1,30 @@
1
+ import { console } from 'openspan'
2
+
3
+ /**
4
+ * A warning about a condition that holds for request after request, written once per
5
+ * `interval` rather than once per request.
6
+ */
7
+ export class Warning {
8
+ private readonly message: string
9
+ private readonly interval: number
10
+ private last = -Infinity
11
+
12
+ public constructor (message: string, interval: number = INTERVAL) {
13
+ this.message = message
14
+ this.interval = interval
15
+ }
16
+
17
+ public emit (attributes?: Record<string, unknown>): void {
18
+ const now = Date.now()
19
+
20
+ if (now - this.last < this.interval)
21
+ return
22
+
23
+ this.last = now
24
+
25
+ console.warn(this.message, attributes)
26
+ }
27
+ }
28
+
29
+ /** 100 seconds */
30
+ const INTERVAL = 100_000
@@ -0,0 +1,7 @@
1
+ import type { Parameter } from '../../../../../RTD/index.js'
2
+ import type { Input as Context } from '../../../../../io.js'
3
+
4
+ export interface Component {
5
+ /** what to key on, or nothing when the request cannot be keyed by this component */
6
+ get: (context: Context, parameters: Parameter[]) => string | undefined
7
+ }
@@ -0,0 +1,31 @@
1
+ import { Warning } from '../Warning.js'
2
+ import type { Context } from '../../../../../HTTP/index.js'
3
+ import type { Component } from './Component.js'
4
+
5
+ /**
6
+ * The client address, as the request context resolved it; see `documentation/ip.md`.
7
+ *
8
+ * A request without one cannot be keyed, so it is let through, and whoever keys on the
9
+ * address says so — once in a while rather than on every request, because the cause is
10
+ * the deployment, not the request.
11
+ */
12
+ export class IP implements Component {
13
+ private readonly warning: Warning
14
+
15
+ public constructor (options: unknown, route: string) {
16
+ const subject = typeof options === 'string' ? options : throttle(route)
17
+
18
+ this.warning = new Warning(`${subject} is not in effect: the request has no ip`)
19
+ }
20
+
21
+ public get (context: Context): string | undefined {
22
+ if (context.ip === undefined)
23
+ this.warning.emit()
24
+
25
+ return context.ip
26
+ }
27
+ }
28
+
29
+ function throttle (route: string): string {
30
+ return route === '' ? 'Throttle' : `Throttle of ${route}`
31
+ }
@@ -0,0 +1,19 @@
1
+ import type { Input } from '../../../../../io.js'
2
+ import type { Component } from './Component.js'
3
+
4
+ /**
5
+ * The authenticated identity, or nothing when the request carries none.
6
+ *
7
+ * Anonymous requests therefore share one quota between them; `ip` is the component
8
+ * that tells them apart.
9
+ */
10
+ export class Identity implements Component {
11
+ public get (context: Input): string {
12
+ return (context as AuthenticatedContext).identity?.id ?? ''
13
+ }
14
+ }
15
+
16
+ // declared here rather than imported from `auth`, the way `cache` does it
17
+ interface AuthenticatedContext extends Input {
18
+ identity?: { id?: string } | null
19
+ }
@@ -0,0 +1,8 @@
1
+ import type { Context } from '../../../../../HTTP/index.js'
2
+ import type { Component } from './Component.js'
3
+
4
+ export class Path implements Component {
5
+ public get (context: Context): string {
6
+ return context.url.pathname
7
+ }
8
+ }
@@ -0,0 +1,19 @@
1
+ import type { Component } from './Component.js'
2
+
3
+ /**
4
+ * The route as declared — `/users/:id` — rather than the path a request came in on.
5
+ *
6
+ * A constant per method, resolved when the tree is built, so every request to one
7
+ * route shares a quota however many concrete paths match it.
8
+ */
9
+ export class Route implements Component {
10
+ private readonly route: string
11
+
12
+ public constructor (_: unknown, route: string) {
13
+ this.route = route
14
+ }
15
+
16
+ public get (): string {
17
+ return this.route
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ import assert from 'node:assert'
2
+ import type { Parameter } from '../../../../../RTD/index.js'
3
+ import type { Input as Context } from '../../../../../io.js'
4
+ import type { Component } from './Component.js'
5
+
6
+ /** The value a named route segment was bound to, or nothing when the route has none. */
7
+ export class Segment implements Component {
8
+ private readonly name: string
9
+
10
+ public constructor (name: unknown) {
11
+ assert.ok(typeof name === 'string', 'Throttle segment must be a string')
12
+
13
+ this.name = name
14
+ }
15
+
16
+ public get (_: Context, parameters: Parameter[]): string {
17
+ return parameters.find(({ name }) => name === this.name)?.value ?? ''
18
+ }
19
+ }
@@ -0,0 +1,19 @@
1
+ import { Path } from './Path.js'
2
+ import { IP } from './IP.js'
3
+ import { Route } from './Route.js'
4
+ import { Identity } from './Identity.js'
5
+ import { Segment } from './Segment.js'
6
+ import type { KeyComponentMethod } from '../Configuration.js'
7
+ import type { Component } from './Component.js'
8
+
9
+ type Constructor<T> = new (options: unknown, route: string) => T
10
+
11
+ export const Components: Record<KeyComponentMethod, Constructor<Component>> = {
12
+ ip: IP,
13
+ path: Path,
14
+ route: Route,
15
+ identity: Identity,
16
+ segment: Segment
17
+ }
18
+
19
+ export type { Component }
@@ -0,0 +1,5 @@
1
+ import type { Input, Output } from '../../../../../io.js'
2
+
3
+ export interface Condition {
4
+ match: (input: Input, output: Output) => boolean
5
+ }
@@ -0,0 +1,17 @@
1
+ import assert from 'node:assert'
2
+ import type { Input, Output } from '../../../../../io.js'
3
+ import type { Condition } from './Condition.js'
4
+
5
+ export class Status implements Condition {
6
+ private readonly status: number
7
+
8
+ public constructor (status: unknown) {
9
+ assert.ok(typeof status === 'number', 'Status must be a number')
10
+
11
+ this.status = status
12
+ }
13
+
14
+ public match (input: Input, output: Output): boolean {
15
+ return output?.status === this.status
16
+ }
17
+ }
@@ -0,0 +1,11 @@
1
+ import { Status } from './Status.js'
2
+ import type { KeyConditionMethod } from '../Configuration.js'
3
+ import type { Condition } from './Condition.js'
4
+
5
+ type Constructor<T> = new (options: unknown) => T
6
+
7
+ export const Conditions: Record<KeyConditionMethod, Constructor<Condition>> = {
8
+ status: Status
9
+ }
10
+
11
+ export type { Condition }
@@ -0,0 +1,4 @@
1
+ export { Quotas } from './Quotas.js'
2
+ export { Sync } from './Sync.js'
3
+ export { Warning } from './Warning.js'
4
+ export { parse, type Configuration, type Declaration } from './Configuration.js'