@toa.io/extensions.exposition 1.0.0-alpha.19 → 1.0.0-alpha.190

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 (844) hide show
  1. package/components/context.toa.yaml +2 -2
  2. package/components/identity.bans/operations/tsconfig.tsbuildinfo +1 -1
  3. package/components/identity.basic/manifest.toa.yaml +65 -13
  4. package/components/identity.basic/operations/add.d.ts +3 -0
  5. package/components/identity.basic/operations/add.js +16 -0
  6. package/components/identity.basic/operations/add.js.map +1 -0
  7. package/components/identity.basic/operations/authenticate.d.ts +5 -1
  8. package/components/identity.basic/operations/authenticate.js +7 -4
  9. package/components/identity.basic/operations/authenticate.js.map +1 -1
  10. package/components/identity.basic/operations/check.d.ts +7 -0
  11. package/components/identity.basic/operations/check.js +15 -0
  12. package/components/identity.basic/operations/check.js.map +1 -0
  13. package/components/identity.basic/operations/incept.d.ts +12 -0
  14. package/components/identity.basic/operations/incept.js +26 -0
  15. package/components/identity.basic/operations/incept.js.map +1 -0
  16. package/components/identity.basic/operations/transit.d.ts +4 -4
  17. package/components/identity.basic/operations/transit.js +13 -7
  18. package/components/identity.basic/operations/transit.js.map +1 -1
  19. package/components/identity.basic/operations/tsconfig.tsbuildinfo +1 -1
  20. package/components/identity.basic/operations/types.d.ts +14 -4
  21. package/components/identity.basic/source/add.ts +14 -0
  22. package/components/identity.basic/source/authenticate.ts +18 -7
  23. package/components/identity.basic/source/check.ts +20 -0
  24. package/components/identity.basic/source/incept.ts +38 -0
  25. package/components/identity.basic/source/transit.ts +16 -10
  26. package/components/identity.basic/source/types.ts +15 -4
  27. package/components/identity.federation/manifest.toa.yaml +80 -38
  28. package/components/identity.federation/operations/authenticate.d.ts +16 -3
  29. package/components/identity.federation/operations/authenticate.js +25 -15
  30. package/components/identity.federation/operations/authenticate.js.map +1 -1
  31. package/components/identity.federation/operations/decode.d.ts +3 -0
  32. package/components/identity.federation/operations/decode.js +12 -0
  33. package/components/identity.federation/operations/decode.js.map +1 -0
  34. package/components/identity.federation/operations/incept.d.ts +11 -0
  35. package/components/identity.federation/operations/incept.js +23 -0
  36. package/components/identity.federation/operations/incept.js.map +1 -0
  37. package/components/identity.federation/operations/lib/Configuration.d.ts +39 -0
  38. package/components/identity.federation/operations/lib/Configuration.js +3 -0
  39. package/components/identity.federation/operations/lib/Configuration.js.map +1 -0
  40. package/components/identity.federation/operations/lib/Context.d.ts +7 -0
  41. package/{transpiled/directives/vary/embeddings/Embedding.js → components/identity.federation/operations/lib/Context.js} +1 -1
  42. package/components/identity.federation/operations/lib/Context.js.map +1 -0
  43. package/components/identity.federation/operations/lib/Ctx.d.ts +6 -0
  44. package/components/identity.federation/operations/lib/Ctx.js +3 -0
  45. package/components/identity.federation/operations/lib/Ctx.js.map +1 -0
  46. package/components/identity.federation/operations/lib/Payload.d.ts +5 -0
  47. package/components/identity.federation/operations/lib/Payload.js +3 -0
  48. package/components/identity.federation/operations/lib/Payload.js.map +1 -0
  49. package/components/identity.federation/operations/lib/decode.d.ts +3 -0
  50. package/components/identity.federation/operations/lib/{assertions-as-values.js → decode.js} +19 -19
  51. package/components/identity.federation/operations/lib/decode.js.map +1 -0
  52. package/components/identity.federation/operations/lib/discovery.d.ts +4 -0
  53. package/components/identity.federation/operations/lib/discovery.js +49 -0
  54. package/components/identity.federation/operations/lib/discovery.js.map +1 -0
  55. package/components/identity.federation/operations/lib/errors.d.ts +11 -0
  56. package/components/identity.federation/operations/lib/errors.js +15 -0
  57. package/components/identity.federation/operations/lib/errors.js.map +1 -0
  58. package/components/identity.federation/operations/lib/exchange.d.ts +3 -0
  59. package/components/identity.federation/operations/lib/exchange.js +107 -0
  60. package/components/identity.federation/operations/lib/exchange.js.map +1 -0
  61. package/components/identity.federation/operations/lib/index.d.ts +3 -0
  62. package/components/identity.federation/operations/lib/index.js +8 -0
  63. package/components/identity.federation/operations/lib/index.js.map +1 -0
  64. package/components/identity.federation/operations/tsconfig.tsbuildinfo +1 -1
  65. package/components/identity.federation/operations/types/Scheme.d.ts +1 -0
  66. package/components/identity.federation/operations/types/Scheme.js +3 -0
  67. package/components/identity.federation/operations/types/Scheme.js.map +1 -0
  68. package/components/identity.federation/operations/types/configuration.d.ts +20 -0
  69. package/components/identity.federation/operations/types/configuration.js +3 -0
  70. package/components/identity.federation/operations/types/configuration.js.map +1 -0
  71. package/components/identity.federation/operations/types/context.d.ts +36 -0
  72. package/components/identity.federation/operations/types/context.js +3 -0
  73. package/components/identity.federation/operations/types/context.js.map +1 -0
  74. package/components/identity.federation/operations/types/entity.d.ts +6 -0
  75. package/components/identity.federation/operations/types/entity.js +3 -0
  76. package/components/identity.federation/operations/types/entity.js.map +1 -0
  77. package/components/identity.federation/operations/types/index.d.ts +4 -0
  78. package/components/identity.federation/operations/types/index.js +21 -0
  79. package/components/identity.federation/operations/types/index.js.map +1 -0
  80. package/components/identity.federation/source/authenticate.ts +44 -19
  81. package/components/identity.federation/source/decode.ts +10 -0
  82. package/components/identity.federation/source/incept.ts +37 -0
  83. package/components/identity.federation/source/lib/Configuration.ts +39 -0
  84. package/components/identity.federation/source/lib/Ctx.ts +7 -0
  85. package/components/identity.federation/source/lib/Payload.ts +6 -0
  86. package/components/identity.federation/source/lib/decode.ts +28 -0
  87. package/components/identity.federation/source/lib/discovery.ts +30 -0
  88. package/components/identity.federation/source/lib/errors.ts +12 -0
  89. package/components/identity.federation/source/lib/exchange.ts +116 -0
  90. package/components/identity.federation/source/lib/index.ts +3 -0
  91. package/components/identity.federation/source/types/Scheme.ts +1 -0
  92. package/components/identity.federation/source/types/configuration.ts +21 -0
  93. package/components/identity.federation/source/types/context.ts +40 -0
  94. package/components/identity.federation/source/types/entity.ts +6 -0
  95. package/components/identity.federation/source/types/index.ts +4 -0
  96. package/components/identity.federation/tsconfig.json +5 -4
  97. package/components/identity.keys/manifest.toa.yaml +57 -0
  98. package/components/identity.keys/operations/create.d.ts +22 -0
  99. package/components/identity.keys/operations/create.js +16 -0
  100. package/components/identity.keys/operations/create.js.map +1 -0
  101. package/components/identity.keys/operations/tsconfig.tsbuildinfo +1 -0
  102. package/components/identity.keys/source/create.ts +35 -0
  103. package/components/identity.keys/tsconfig.json +9 -0
  104. package/components/identity.otp/manifest.toa.yaml +54 -0
  105. package/components/identity.otp/operations/authenticate.d.ts +12 -0
  106. package/components/identity.otp/operations/authenticate.js +30 -0
  107. package/components/identity.otp/operations/authenticate.js.map +1 -0
  108. package/components/identity.otp/operations/issue.d.ts +12 -0
  109. package/components/identity.otp/operations/issue.js +22 -0
  110. package/components/identity.otp/operations/issue.js.map +1 -0
  111. package/components/identity.otp/operations/lib/Context.d.ts +13 -0
  112. package/components/identity.otp/operations/lib/Context.js +3 -0
  113. package/components/identity.otp/operations/lib/Context.js.map +1 -0
  114. package/components/identity.otp/operations/lib/Entity.d.ts +5 -0
  115. package/components/identity.otp/operations/lib/Entity.js +3 -0
  116. package/components/identity.otp/operations/lib/Entity.js.map +1 -0
  117. package/components/identity.otp/operations/lib/index.d.ts +1 -0
  118. package/components/identity.otp/operations/lib/index.js +3 -0
  119. package/components/identity.otp/operations/lib/index.js.map +1 -0
  120. package/components/identity.otp/operations/tsconfig.tsbuildinfo +1 -0
  121. package/components/identity.otp/source/authenticate.ts +46 -0
  122. package/components/identity.otp/source/issue.ts +35 -0
  123. package/components/identity.otp/source/lib/Context.ts +14 -0
  124. package/components/identity.otp/source/lib/Entity.ts +5 -0
  125. package/components/identity.otp/source/lib/index.ts +1 -0
  126. package/components/identity.otp/tsconfig.json +9 -0
  127. package/components/identity.passkeys/manifest.toa.yaml +268 -0
  128. package/components/identity.passkeys/operations/authenticate.d.ts +16 -0
  129. package/components/identity.passkeys/operations/authenticate.js +34 -0
  130. package/components/identity.passkeys/operations/authenticate.js.map +1 -0
  131. package/components/identity.passkeys/operations/challenge.d.ts +35 -0
  132. package/components/identity.passkeys/operations/challenge.js +73 -0
  133. package/components/identity.passkeys/operations/challenge.js.map +1 -0
  134. package/components/identity.passkeys/operations/create.d.ts +19 -0
  135. package/components/identity.passkeys/operations/create.js +58 -0
  136. package/components/identity.passkeys/operations/create.js.map +1 -0
  137. package/components/identity.passkeys/operations/delete.d.ts +8 -0
  138. package/components/identity.passkeys/operations/delete.js +12 -0
  139. package/components/identity.passkeys/operations/delete.js.map +1 -0
  140. package/components/identity.passkeys/operations/lib/const.d.ts +1 -0
  141. package/components/identity.passkeys/operations/lib/const.js +5 -0
  142. package/components/identity.passkeys/operations/lib/const.js.map +1 -0
  143. package/components/identity.passkeys/operations/list.d.ts +7 -0
  144. package/components/identity.passkeys/operations/list.js +15 -0
  145. package/components/identity.passkeys/operations/list.js.map +1 -0
  146. package/components/identity.passkeys/operations/tsconfig.tsbuildinfo +1 -0
  147. package/components/identity.passkeys/operations/types/Configuration.d.ts +6 -0
  148. package/components/identity.passkeys/operations/types/Configuration.js +3 -0
  149. package/components/identity.passkeys/operations/types/Configuration.js.map +1 -0
  150. package/components/identity.passkeys/operations/types/Context.d.ts +15 -0
  151. package/components/identity.passkeys/operations/types/Context.js +3 -0
  152. package/components/identity.passkeys/operations/types/Context.js.map +1 -0
  153. package/components/identity.passkeys/operations/types/Passkey.d.ts +13 -0
  154. package/components/identity.passkeys/operations/types/Passkey.js +3 -0
  155. package/components/identity.passkeys/operations/types/Passkey.js.map +1 -0
  156. package/components/identity.passkeys/operations/types/index.d.ts +2 -0
  157. package/components/identity.passkeys/operations/types/index.js +3 -0
  158. package/components/identity.passkeys/operations/types/index.js.map +1 -0
  159. package/components/identity.passkeys/operations/use.d.ts +16 -0
  160. package/components/identity.passkeys/operations/use.js +57 -0
  161. package/components/identity.passkeys/operations/use.js.map +1 -0
  162. package/components/identity.passkeys/source/authenticate.ts +48 -0
  163. package/components/identity.passkeys/source/challenge.ts +115 -0
  164. package/components/identity.passkeys/source/create.ts +77 -0
  165. package/components/identity.passkeys/source/delete.ts +15 -0
  166. package/components/identity.passkeys/source/lib/const.ts +1 -0
  167. package/components/identity.passkeys/source/list.ts +17 -0
  168. package/components/identity.passkeys/source/types/Configuration.ts +6 -0
  169. package/components/identity.passkeys/source/types/Context.ts +16 -0
  170. package/components/identity.passkeys/source/types/Passkey.ts +14 -0
  171. package/components/identity.passkeys/source/types/index.ts +2 -0
  172. package/components/identity.passkeys/source/use.ts +75 -0
  173. package/components/identity.passkeys/tsconfig.json +9 -0
  174. package/components/identity.roles/manifest.toa.yaml +4 -2
  175. package/components/identity.roles/operations/grant.js +2 -2
  176. package/components/identity.roles/operations/grant.js.map +1 -1
  177. package/components/identity.roles/operations/tsconfig.tsbuildinfo +1 -1
  178. package/components/identity.roles/source/grant.ts +2 -2
  179. package/components/identity.tokens/manifest.toa.yaml +95 -12
  180. package/components/identity.tokens/operations/authenticate.d.ts +3 -3
  181. package/components/identity.tokens/operations/authenticate.js +15 -11
  182. package/components/identity.tokens/operations/authenticate.js.map +1 -1
  183. package/components/identity.tokens/operations/decrypt.d.ts +13 -3
  184. package/components/identity.tokens/operations/decrypt.js +65 -17
  185. package/components/identity.tokens/operations/decrypt.js.map +1 -1
  186. package/components/identity.tokens/operations/encrypt.d.ts +3 -3
  187. package/components/identity.tokens/operations/encrypt.js +24 -7
  188. package/components/identity.tokens/operations/encrypt.js.map +1 -1
  189. package/components/identity.tokens/operations/issue.d.ts +24 -0
  190. package/components/identity.tokens/operations/issue.js +59 -0
  191. package/components/identity.tokens/operations/issue.js.map +1 -0
  192. package/components/identity.tokens/operations/lib/index.d.ts +2 -0
  193. package/components/identity.tokens/operations/lib/index.js +19 -0
  194. package/components/identity.tokens/operations/lib/index.js.map +1 -0
  195. package/components/identity.tokens/operations/lib/pad.d.ts +1 -0
  196. package/components/identity.tokens/operations/lib/pad.js +5 -0
  197. package/components/identity.tokens/operations/lib/pad.js.map +1 -0
  198. package/components/identity.tokens/operations/lib/types.d.ts +75 -0
  199. package/components/identity.tokens/operations/lib/types.js.map +1 -0
  200. package/components/identity.tokens/operations/revoke.d.ts +2 -2
  201. package/components/identity.tokens/operations/revoke.js.map +1 -1
  202. package/components/identity.tokens/operations/tsconfig.tsbuildinfo +1 -1
  203. package/components/identity.tokens/source/authenticate.test.ts +22 -9
  204. package/components/identity.tokens/source/authenticate.ts +18 -13
  205. package/components/identity.tokens/source/decrypt.test.ts +33 -18
  206. package/components/identity.tokens/source/decrypt.ts +95 -20
  207. package/components/identity.tokens/source/encrypt.test.ts +51 -13
  208. package/components/identity.tokens/source/encrypt.ts +36 -11
  209. package/components/identity.tokens/source/issue.ts +82 -0
  210. package/components/identity.tokens/source/lib/index.ts +2 -0
  211. package/components/identity.tokens/source/lib/pad.ts +1 -0
  212. package/components/identity.tokens/source/lib/paseto.test.ts +16 -0
  213. package/components/identity.tokens/source/lib/types.ts +86 -0
  214. package/components/identity.tokens/source/revoke.ts +2 -2
  215. package/components/octets.storage/manifest.toa.yaml +13 -11
  216. package/components/octets.storage/operations/get.js +3 -3
  217. package/components/octets.storage/operations/head.js +7 -0
  218. package/components/octets.storage/operations/put.js +135 -0
  219. package/documentation/access.md +78 -27
  220. package/documentation/authorities.md +48 -0
  221. package/documentation/components.md +117 -42
  222. package/documentation/dev.md +30 -0
  223. package/documentation/flow.md +44 -0
  224. package/documentation/identity.md +129 -24
  225. package/documentation/introspection.md +82 -0
  226. package/documentation/io.md +42 -2
  227. package/documentation/map.md +96 -0
  228. package/documentation/notes/desync.jpg +0 -0
  229. package/documentation/notes/peers.md +59 -0
  230. package/documentation/notes/throttling.md +82 -0
  231. package/documentation/octets.md +122 -69
  232. package/documentation/passkeys.md +4 -0
  233. package/documentation/protocol.md +11 -4
  234. package/documentation/query.md +51 -4
  235. package/documentation/require.md +15 -0
  236. package/documentation/tree.md +13 -0
  237. package/features/access.feature +122 -9
  238. package/features/annotation.feature +1 -0
  239. package/features/auth.assert.feature +57 -0
  240. package/features/auth.claims.feature +170 -0
  241. package/features/auth.incept.feature +120 -0
  242. package/features/auth.input.feature +59 -0
  243. package/features/auth.issue.feature +32 -0
  244. package/features/authorities.basic.feature +141 -0
  245. package/features/authorities.feature +32 -0
  246. package/features/authorities.federation.feature +99 -0
  247. package/features/authorities.tokens.feature +117 -0
  248. package/features/body.feature +2 -0
  249. package/features/cache.feature +131 -8
  250. package/features/cors.feature +32 -7
  251. package/features/debug.feature +34 -0
  252. package/features/dev.feature +56 -0
  253. package/features/directives.feature +3 -0
  254. package/features/dynamic.feature +48 -0
  255. package/features/errors.feature +29 -6
  256. package/features/etag.feature +140 -1
  257. package/features/flow.feature +148 -0
  258. package/features/identity.bans.feature +12 -3
  259. package/features/identity.basic.feature +154 -21
  260. package/features/identity.feature +18 -6
  261. package/features/identity.federation.feature +134 -44
  262. package/features/identity.otp.feature +71 -0
  263. package/features/identity.roles.feature +81 -20
  264. package/features/identity.tokens.feature +11 -97
  265. package/features/identtiy.tokens.custom.feature +247 -0
  266. package/features/interruptions.feature +19 -0
  267. package/features/introspection.feature +153 -0
  268. package/features/io.feature +9 -1
  269. package/features/io.throttle.feature +40 -0
  270. package/features/map.feature +328 -0
  271. package/features/methods.feature +47 -0
  272. package/features/octets.cloudinary.feature +223 -0
  273. package/features/octets.download.feature +189 -0
  274. package/features/octets.entries.feature +13 -55
  275. package/features/octets.feature +70 -114
  276. package/features/octets.head.feature +40 -0
  277. package/features/octets.location.feature +83 -0
  278. package/features/octets.meta.feature +65 -15
  279. package/features/octets.workflows.feature +344 -66
  280. package/features/passkeys.feature +66 -0
  281. package/features/probes.feature +14 -0
  282. package/features/{queries.feature → query.feature} +142 -2
  283. package/features/realtime.feature +34 -0
  284. package/features/require.feature +67 -0
  285. package/features/response.feature +34 -2
  286. package/features/routes.feature +93 -2
  287. package/features/server.feature +21 -0
  288. package/features/steps/.env.example +5 -0
  289. package/features/steps/Common.ts +4 -0
  290. package/features/steps/Gateway.ts +26 -7
  291. package/features/steps/HTTP.ts +26 -3
  292. package/features/steps/IDP.ts +334 -0
  293. package/features/steps/Identity.ts +51 -0
  294. package/features/steps/OTP.ts +39 -0
  295. package/features/steps/Parameters.ts +88 -2
  296. package/features/steps/Realtime.ts +151 -0
  297. package/features/steps/components/echo/manifest.toa.yaml +12 -0
  298. package/features/steps/components/echo/operations/echo.js +7 -0
  299. package/features/steps/components/echo/operations/parameters.js +7 -0
  300. package/features/steps/components/echo/operations/ping.js +7 -0
  301. package/features/steps/components/echo.beacon/manifest.toa.yaml +2 -0
  302. package/features/steps/components/echo.beacon/operations/hello.js +5 -0
  303. package/features/steps/components/greeter/manifest.toa.yaml +0 -1
  304. package/features/steps/components/octets.tester/manifest.toa.yaml +26 -3
  305. package/features/steps/components/octets.tester/operations/authority.js +7 -0
  306. package/features/steps/components/octets.tester/operations/bar.js +0 -1
  307. package/features/steps/components/octets.tester/operations/baz.js +1 -1
  308. package/features/steps/components/octets.tester/operations/echo.js +1 -1
  309. package/features/steps/components/octets.tester/operations/foo.js +2 -2
  310. package/features/steps/components/octets.tester/operations/id.js +7 -0
  311. package/features/steps/components/octets.tester/operations/identity.js +7 -0
  312. package/features/steps/components/octets.tester/operations/redirect.js +12 -0
  313. package/features/steps/components/octets.tester/operations/yex.js +16 -0
  314. package/features/steps/components/octets.tester/operations/yield.js +13 -0
  315. package/features/steps/components/pots/manifest.toa.yaml +15 -4
  316. package/features/steps/components/sequences/manifest.toa.yaml +0 -1
  317. package/features/steps/components/users/manifest.toa.yaml +4 -2
  318. package/features/steps/components/users/operations/create.js +15 -0
  319. package/features/steps/components/users.properties/manifest.toa.yaml +0 -1
  320. package/features/streams.feature +5 -0
  321. package/features/timestamps.feature +41 -0
  322. package/features/timing.feature +4 -1
  323. package/package.json +30 -18
  324. package/readme.md +19 -14
  325. package/schemas/annotation.cos.yaml +8 -1
  326. package/schemas/io/throttle.cos.yaml +36 -0
  327. package/schemas/method.cos.yaml +2 -1
  328. package/schemas/node.cos.yaml +2 -0
  329. package/schemas/octets/put.cos.yaml +28 -0
  330. package/schemas/query.cos.yaml +6 -10
  331. package/schemas/querystring.cos.yaml +1 -0
  332. package/source/Annotation.ts +6 -3
  333. package/source/Branch.ts +1 -0
  334. package/source/Composition.ts +0 -6
  335. package/source/Context.ts +1 -0
  336. package/source/Directive.test.ts +5 -3
  337. package/source/Directive.ts +30 -6
  338. package/source/Endpoint.ts +89 -24
  339. package/source/Factory.ts +22 -13
  340. package/source/Gateway.ts +75 -19
  341. package/source/HTTP/Context.ts +32 -7
  342. package/source/HTTP/Server.ts +153 -56
  343. package/source/HTTP/exceptions.ts +25 -7
  344. package/source/HTTP/formats/index.ts +3 -4
  345. package/source/HTTP/formats/json.ts +0 -2
  346. package/source/HTTP/formats/msgpack.ts +0 -1
  347. package/source/HTTP/formats/text.ts +0 -2
  348. package/source/HTTP/formats/yaml.ts +0 -1
  349. package/source/HTTP/messages.test.ts +46 -2
  350. package/source/HTTP/messages.ts +94 -9
  351. package/source/Introspection.ts +11 -0
  352. package/source/Mapping.ts +69 -21
  353. package/source/Query.test.ts +3 -3
  354. package/source/Query.ts +131 -33
  355. package/source/RTD/Context.ts +1 -1
  356. package/source/RTD/Directives.ts +4 -0
  357. package/source/RTD/Endpoint.ts +3 -0
  358. package/source/RTD/Method.ts +16 -0
  359. package/source/RTD/Node.ts +29 -13
  360. package/source/RTD/Route.ts +12 -5
  361. package/source/RTD/Tree.ts +6 -2
  362. package/source/RTD/factory.ts +4 -1
  363. package/source/RTD/segment.ts +2 -0
  364. package/source/RTD/syntax/parse.test.ts +1 -1
  365. package/source/RTD/syntax/parse.ts +37 -24
  366. package/source/RTD/syntax/types.ts +8 -4
  367. package/source/Remotes.ts +7 -6
  368. package/source/Tenant.ts +6 -12
  369. package/source/deployment.ts +34 -24
  370. package/source/directives/auth/Anonymous.ts +3 -3
  371. package/source/directives/auth/Anyone.ts +13 -0
  372. package/source/directives/auth/Assert.ts +35 -0
  373. package/source/directives/auth/Authorization.ts +69 -26
  374. package/source/directives/auth/Delegate.ts +9 -5
  375. package/source/directives/auth/Echo.ts +16 -6
  376. package/source/directives/auth/Federation.ts +84 -0
  377. package/source/directives/auth/Id.ts +1 -1
  378. package/source/directives/auth/Incept.ts +68 -24
  379. package/source/directives/auth/Input.ts +72 -0
  380. package/source/directives/auth/Role.test.ts +1 -1
  381. package/source/directives/auth/Role.ts +5 -9
  382. package/source/directives/auth/Rule.ts +3 -5
  383. package/source/directives/auth/Scheme.ts +5 -5
  384. package/source/directives/auth/create.ts +11 -0
  385. package/source/directives/auth/schemes.ts +5 -2
  386. package/source/directives/auth/split.ts +1 -1
  387. package/source/directives/auth/types.ts +12 -7
  388. package/source/directives/cache/Cache.ts +15 -6
  389. package/source/directives/cache/Control.ts +16 -16
  390. package/source/directives/cors/CORS.ts +9 -9
  391. package/source/directives/dev/Development.ts +12 -7
  392. package/source/directives/dev/Sleep.ts +55 -0
  393. package/source/directives/dev/types.ts +1 -1
  394. package/source/directives/flow/Compose.ts +92 -0
  395. package/source/directives/flow/Fetch.ts +86 -0
  396. package/source/directives/flow/Flow.ts +42 -0
  397. package/source/directives/flow/index.ts +3 -0
  398. package/source/directives/flow/types.ts +7 -0
  399. package/source/directives/index.ts +4 -2
  400. package/source/directives/io/Directive.ts +5 -2
  401. package/source/directives/io/IO.ts +18 -6
  402. package/source/directives/io/Input.ts +9 -6
  403. package/source/directives/io/Output.ts +6 -5
  404. package/source/directives/io/Throttle.ts +32 -0
  405. package/source/directives/io/lib/throttle/Configuration.test.ts +40 -0
  406. package/source/directives/io/lib/throttle/Configuration.ts +58 -0
  407. package/source/directives/io/lib/throttle/Interval.ts +31 -0
  408. package/source/directives/io/lib/throttle/Keys.ts +40 -0
  409. package/source/directives/io/lib/throttle/Quota.ts +22 -0
  410. package/source/directives/io/lib/throttle/Quotas.test.ts +136 -0
  411. package/source/directives/io/lib/throttle/Quotas.ts +83 -0
  412. package/source/directives/io/lib/throttle/components/Component.ts +5 -0
  413. package/source/directives/io/lib/throttle/components/IP.ts +40 -0
  414. package/source/directives/io/lib/throttle/components/Path.ts +8 -0
  415. package/source/directives/io/lib/throttle/components/index.ts +13 -0
  416. package/source/directives/io/lib/throttle/conditions/Condition.ts +5 -0
  417. package/source/directives/io/lib/throttle/conditions/Status.ts +17 -0
  418. package/source/directives/io/lib/throttle/conditions/index.ts +11 -0
  419. package/source/directives/io/lib/throttle/index.ts +2 -0
  420. package/source/directives/io/schemas.test.ts +9 -0
  421. package/source/directives/io/schemas.ts +3 -0
  422. package/source/directives/map/Authority.ts +15 -0
  423. package/source/directives/map/Claims.ts +58 -0
  424. package/source/directives/map/Directive.ts +4 -0
  425. package/source/directives/map/Headers.ts +38 -0
  426. package/source/directives/map/Language.ts +42 -0
  427. package/source/directives/map/Languages.ts +11 -0
  428. package/source/directives/map/Map.ts +61 -0
  429. package/source/directives/map/Mapping.ts +19 -0
  430. package/source/directives/{vary → map}/Properties.ts +2 -4
  431. package/source/directives/map/Segments.ts +33 -0
  432. package/source/directives/map/index.ts +3 -0
  433. package/source/directives/octets/Context.ts +3 -2
  434. package/source/directives/octets/Delete.ts +21 -17
  435. package/source/directives/octets/Get.ts +96 -0
  436. package/source/directives/octets/Octets.ts +9 -12
  437. package/source/directives/octets/{Store.ts → Put.ts} +52 -38
  438. package/source/directives/octets/Workflow.ts +9 -3
  439. package/source/directives/octets/bytes.test.ts +30 -0
  440. package/source/directives/octets/bytes.ts +18 -0
  441. package/source/directives/octets/schemas.ts +4 -8
  442. package/source/directives/octets/types.ts +2 -0
  443. package/source/directives/octets/workflows/Execution.ts +62 -8
  444. package/source/directives/octets/workflows/Workflow.ts +18 -7
  445. package/source/directives/octets/workflows/index.ts +1 -1
  446. package/source/directives/require/Directive.ts +5 -0
  447. package/source/directives/require/Headers.ts +20 -0
  448. package/source/directives/require/Require.ts +28 -0
  449. package/source/directives/require/index.ts +3 -0
  450. package/source/exceptions.ts +16 -4
  451. package/source/manifest.ts +10 -11
  452. package/source/root.ts +16 -1
  453. package/source/schemas.ts +1 -1
  454. package/transpiled/Annotation.d.ts +5 -3
  455. package/transpiled/Branch.d.ts +1 -0
  456. package/transpiled/Composition.d.ts +0 -1
  457. package/transpiled/Composition.js +0 -4
  458. package/transpiled/Composition.js.map +1 -1
  459. package/transpiled/Context.d.ts +1 -0
  460. package/transpiled/Directive.d.ts +3 -0
  461. package/transpiled/Directive.js +24 -6
  462. package/transpiled/Directive.js.map +1 -1
  463. package/transpiled/Endpoint.d.ts +6 -4
  464. package/transpiled/Endpoint.js +64 -16
  465. package/transpiled/Endpoint.js.map +1 -1
  466. package/transpiled/Factory.d.ts +3 -2
  467. package/transpiled/Factory.js +18 -10
  468. package/transpiled/Factory.js.map +1 -1
  469. package/transpiled/Gateway.d.ts +3 -0
  470. package/transpiled/Gateway.js +56 -12
  471. package/transpiled/Gateway.js.map +1 -1
  472. package/transpiled/HTTP/Context.d.ts +10 -2
  473. package/transpiled/HTTP/Context.js +22 -6
  474. package/transpiled/HTTP/Context.js.map +1 -1
  475. package/transpiled/HTTP/Server.d.ts +15 -4
  476. package/transpiled/HTTP/Server.js +116 -45
  477. package/transpiled/HTTP/Server.js.map +1 -1
  478. package/transpiled/HTTP/exceptions.d.ts +13 -4
  479. package/transpiled/HTTP/exceptions.js +28 -10
  480. package/transpiled/HTTP/exceptions.js.map +1 -1
  481. package/transpiled/HTTP/formats/index.d.ts +1 -1
  482. package/transpiled/HTTP/formats/index.js +3 -3
  483. package/transpiled/HTTP/formats/index.js.map +1 -1
  484. package/transpiled/HTTP/formats/json.d.ts +1 -1
  485. package/transpiled/HTTP/formats/json.js +1 -2
  486. package/transpiled/HTTP/formats/json.js.map +1 -1
  487. package/transpiled/HTTP/formats/msgpack.d.ts +1 -1
  488. package/transpiled/HTTP/formats/msgpack.js.map +1 -1
  489. package/transpiled/HTTP/formats/text.d.ts +1 -1
  490. package/transpiled/HTTP/formats/text.js +1 -2
  491. package/transpiled/HTTP/formats/text.js.map +1 -1
  492. package/transpiled/HTTP/formats/yaml.d.ts +1 -1
  493. package/transpiled/HTTP/formats/yaml.js +1 -2
  494. package/transpiled/HTTP/formats/yaml.js.map +1 -1
  495. package/transpiled/HTTP/messages.d.ts +4 -1
  496. package/transpiled/HTTP/messages.js +65 -8
  497. package/transpiled/HTTP/messages.js.map +1 -1
  498. package/transpiled/Introspection.d.ts +9 -0
  499. package/transpiled/Introspection.js +3 -0
  500. package/transpiled/Introspection.js.map +1 -0
  501. package/transpiled/Mapping.d.ts +11 -2
  502. package/transpiled/Mapping.js +51 -19
  503. package/transpiled/Mapping.js.map +1 -1
  504. package/transpiled/Query.d.ts +12 -1
  505. package/transpiled/Query.js +93 -30
  506. package/transpiled/Query.js.map +1 -1
  507. package/transpiled/RTD/Context.d.ts +1 -1
  508. package/transpiled/RTD/Directives.d.ts +3 -0
  509. package/transpiled/RTD/Endpoint.d.ts +1 -0
  510. package/transpiled/RTD/Method.d.ts +4 -0
  511. package/transpiled/RTD/Method.js +11 -0
  512. package/transpiled/RTD/Method.js.map +1 -1
  513. package/transpiled/RTD/Node.d.ts +4 -1
  514. package/transpiled/RTD/Node.js +23 -12
  515. package/transpiled/RTD/Node.js.map +1 -1
  516. package/transpiled/RTD/Route.d.ts +2 -1
  517. package/transpiled/RTD/Route.js +7 -3
  518. package/transpiled/RTD/Route.js.map +1 -1
  519. package/transpiled/RTD/Tree.d.ts +2 -1
  520. package/transpiled/RTD/Tree.js +3 -0
  521. package/transpiled/RTD/Tree.js.map +1 -1
  522. package/transpiled/RTD/factory.js +4 -1
  523. package/transpiled/RTD/factory.js.map +1 -1
  524. package/transpiled/RTD/segment.d.ts +1 -0
  525. package/transpiled/RTD/segment.js +2 -0
  526. package/transpiled/RTD/segment.js.map +1 -1
  527. package/transpiled/RTD/syntax/parse.js +34 -22
  528. package/transpiled/RTD/syntax/parse.js.map +1 -1
  529. package/transpiled/RTD/syntax/types.d.ts +7 -3
  530. package/transpiled/RTD/syntax/types.js +1 -1
  531. package/transpiled/RTD/syntax/types.js.map +1 -1
  532. package/transpiled/Remotes.d.ts +4 -4
  533. package/transpiled/Remotes.js +6 -5
  534. package/transpiled/Remotes.js.map +1 -1
  535. package/transpiled/Tenant.d.ts +5 -4
  536. package/transpiled/Tenant.js +2 -7
  537. package/transpiled/Tenant.js.map +1 -1
  538. package/transpiled/deployment.d.ts +1 -1
  539. package/transpiled/deployment.js +29 -21
  540. package/transpiled/deployment.js.map +1 -1
  541. package/transpiled/directives/auth/Anonymous.d.ts +2 -2
  542. package/transpiled/directives/auth/Anonymous.js +2 -2
  543. package/transpiled/directives/auth/Anonymous.js.map +1 -1
  544. package/transpiled/directives/auth/Anyone.d.ts +6 -0
  545. package/transpiled/directives/auth/Anyone.js +14 -0
  546. package/transpiled/directives/auth/Anyone.js.map +1 -0
  547. package/transpiled/directives/auth/Assert.d.ts +7 -0
  548. package/transpiled/directives/auth/Assert.js +57 -0
  549. package/transpiled/directives/auth/Assert.js.map +1 -0
  550. package/transpiled/directives/auth/Authorization.d.ts +4 -3
  551. package/transpiled/directives/auth/Authorization.js +53 -23
  552. package/transpiled/directives/auth/Authorization.js.map +1 -1
  553. package/transpiled/directives/auth/Delegate.d.ts +5 -4
  554. package/transpiled/directives/auth/Delegate.js +7 -3
  555. package/transpiled/directives/auth/Delegate.js.map +1 -1
  556. package/transpiled/directives/auth/Echo.d.ts +4 -4
  557. package/transpiled/directives/auth/Echo.js +11 -4
  558. package/transpiled/directives/auth/Echo.js.map +1 -1
  559. package/transpiled/directives/auth/Federation.d.ts +16 -0
  560. package/transpiled/directives/auth/Federation.js +57 -0
  561. package/transpiled/directives/auth/Federation.js.map +1 -0
  562. package/transpiled/directives/auth/Id.d.ts +1 -1
  563. package/transpiled/directives/auth/Id.js.map +1 -1
  564. package/transpiled/directives/auth/Incept.d.ts +7 -5
  565. package/transpiled/directives/auth/Incept.js +52 -18
  566. package/transpiled/directives/auth/Incept.js.map +1 -1
  567. package/transpiled/directives/auth/Input.d.ts +13 -0
  568. package/transpiled/directives/auth/Input.js +49 -0
  569. package/transpiled/directives/auth/Input.js.map +1 -0
  570. package/transpiled/directives/auth/Role.d.ts +1 -1
  571. package/transpiled/directives/auth/Role.js +4 -6
  572. package/transpiled/directives/auth/Role.js.map +1 -1
  573. package/transpiled/directives/auth/Rule.d.ts +2 -4
  574. package/transpiled/directives/auth/Rule.js +2 -2
  575. package/transpiled/directives/auth/Rule.js.map +1 -1
  576. package/transpiled/directives/auth/Scheme.d.ts +2 -2
  577. package/transpiled/directives/auth/Scheme.js +4 -4
  578. package/transpiled/directives/auth/Scheme.js.map +1 -1
  579. package/transpiled/directives/auth/create.d.ts +2 -0
  580. package/transpiled/directives/auth/create.js +14 -0
  581. package/transpiled/directives/auth/create.js.map +1 -0
  582. package/transpiled/directives/auth/schemes.d.ts +2 -1
  583. package/transpiled/directives/auth/schemes.js +5 -2
  584. package/transpiled/directives/auth/schemes.js.map +1 -1
  585. package/transpiled/directives/auth/split.js +1 -1
  586. package/transpiled/directives/auth/split.js.map +1 -1
  587. package/transpiled/directives/auth/types.d.ts +10 -7
  588. package/transpiled/directives/cache/Cache.d.ts +3 -3
  589. package/transpiled/directives/cache/Cache.js +12 -4
  590. package/transpiled/directives/cache/Cache.js.map +1 -1
  591. package/transpiled/directives/cache/Control.d.ts +2 -2
  592. package/transpiled/directives/cache/Control.js +12 -12
  593. package/transpiled/directives/cache/Control.js.map +1 -1
  594. package/transpiled/directives/cors/CORS.js +7 -7
  595. package/transpiled/directives/cors/CORS.js.map +1 -1
  596. package/transpiled/directives/dev/Development.d.ts +1 -1
  597. package/transpiled/directives/dev/Development.js +13 -7
  598. package/transpiled/directives/dev/Development.js.map +1 -1
  599. package/transpiled/directives/dev/Sleep.d.ts +9 -0
  600. package/transpiled/directives/dev/Sleep.js +48 -0
  601. package/transpiled/directives/dev/Sleep.js.map +1 -0
  602. package/transpiled/directives/dev/types.d.ts +1 -1
  603. package/transpiled/directives/flow/Compose.d.ts +9 -0
  604. package/transpiled/directives/flow/Compose.js +94 -0
  605. package/transpiled/directives/flow/Compose.js.map +1 -0
  606. package/transpiled/directives/flow/Fetch.d.ts +12 -0
  607. package/transpiled/directives/flow/Fetch.js +58 -0
  608. package/transpiled/directives/flow/Fetch.js.map +1 -0
  609. package/transpiled/directives/flow/Flow.d.ts +10 -0
  610. package/transpiled/directives/flow/Flow.js +33 -0
  611. package/transpiled/directives/flow/Flow.js.map +1 -0
  612. package/transpiled/directives/flow/index.d.ts +2 -0
  613. package/transpiled/directives/flow/index.js +6 -0
  614. package/transpiled/directives/flow/index.js.map +1 -0
  615. package/transpiled/directives/flow/types.d.ts +6 -0
  616. package/transpiled/directives/flow/types.js.map +1 -0
  617. package/transpiled/directives/index.js +4 -2
  618. package/transpiled/directives/index.js.map +1 -1
  619. package/transpiled/directives/io/Directive.d.ts +5 -2
  620. package/transpiled/directives/io/IO.d.ts +4 -2
  621. package/transpiled/directives/io/IO.js +14 -4
  622. package/transpiled/directives/io/IO.js.map +1 -1
  623. package/transpiled/directives/io/Input.d.ts +1 -1
  624. package/transpiled/directives/io/Input.js +5 -3
  625. package/transpiled/directives/io/Input.js.map +1 -1
  626. package/transpiled/directives/io/Output.d.ts +1 -1
  627. package/transpiled/directives/io/Output.js +3 -3
  628. package/transpiled/directives/io/Output.js.map +1 -1
  629. package/transpiled/directives/io/Throttle.d.ts +11 -0
  630. package/transpiled/directives/{octets/Permute.js → io/Throttle.js} +21 -28
  631. package/transpiled/directives/io/Throttle.js.map +1 -0
  632. package/transpiled/directives/io/lib/throttle/Configuration.d.ts +23 -0
  633. package/transpiled/directives/io/lib/throttle/Configuration.js +27 -0
  634. package/transpiled/directives/io/lib/throttle/Configuration.js.map +1 -0
  635. package/transpiled/directives/io/lib/throttle/Interval.d.ts +9 -0
  636. package/transpiled/directives/io/lib/throttle/Interval.js +31 -0
  637. package/transpiled/directives/io/lib/throttle/Interval.js.map +1 -0
  638. package/transpiled/directives/io/lib/throttle/Keys.d.ts +12 -0
  639. package/transpiled/directives/io/lib/throttle/Keys.js +34 -0
  640. package/transpiled/directives/io/lib/throttle/Keys.js.map +1 -0
  641. package/transpiled/directives/io/lib/throttle/Quota.d.ts +8 -0
  642. package/transpiled/directives/io/lib/throttle/Quota.js +22 -0
  643. package/transpiled/directives/io/lib/throttle/Quota.js.map +1 -0
  644. package/transpiled/directives/io/lib/throttle/Quotas.d.ts +26 -0
  645. package/transpiled/directives/io/lib/throttle/Quotas.js +61 -0
  646. package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -0
  647. package/transpiled/directives/io/lib/throttle/components/Component.d.ts +4 -0
  648. package/transpiled/directives/io/lib/throttle/components/Component.js +3 -0
  649. package/transpiled/directives/io/lib/throttle/components/Component.js.map +1 -0
  650. package/transpiled/directives/io/lib/throttle/components/IP.d.ts +6 -0
  651. package/transpiled/directives/io/lib/throttle/components/IP.js +33 -0
  652. package/transpiled/directives/io/lib/throttle/components/IP.js.map +1 -0
  653. package/transpiled/directives/io/lib/throttle/components/Path.d.ts +5 -0
  654. package/transpiled/directives/io/lib/throttle/components/Path.js +10 -0
  655. package/transpiled/directives/io/lib/throttle/components/Path.js.map +1 -0
  656. package/transpiled/directives/io/lib/throttle/components/index.d.ts +5 -0
  657. package/transpiled/directives/io/lib/throttle/components/index.js +10 -0
  658. package/transpiled/directives/io/lib/throttle/components/index.js.map +1 -0
  659. package/transpiled/directives/io/lib/throttle/conditions/Condition.d.ts +4 -0
  660. package/transpiled/directives/io/lib/throttle/conditions/Condition.js +3 -0
  661. package/transpiled/directives/io/lib/throttle/conditions/Condition.js.map +1 -0
  662. package/transpiled/directives/io/lib/throttle/conditions/Status.d.ts +7 -0
  663. package/transpiled/directives/io/lib/throttle/conditions/Status.js +19 -0
  664. package/transpiled/directives/io/lib/throttle/conditions/Status.js.map +1 -0
  665. package/transpiled/directives/io/lib/throttle/conditions/index.d.ts +5 -0
  666. package/transpiled/directives/io/lib/throttle/conditions/index.js +8 -0
  667. package/transpiled/directives/io/lib/throttle/conditions/index.js.map +1 -0
  668. package/transpiled/directives/io/lib/throttle/index.d.ts +2 -0
  669. package/transpiled/directives/io/lib/throttle/index.js +8 -0
  670. package/transpiled/directives/io/lib/throttle/index.js.map +1 -0
  671. package/transpiled/directives/io/schemas.d.ts +2 -0
  672. package/transpiled/directives/io/schemas.js +2 -1
  673. package/transpiled/directives/io/schemas.js.map +1 -1
  674. package/transpiled/directives/map/Authority.d.ts +6 -0
  675. package/transpiled/directives/map/Authority.js +19 -0
  676. package/transpiled/directives/map/Authority.js.map +1 -0
  677. package/transpiled/directives/map/Claims.d.ts +10 -0
  678. package/transpiled/directives/map/Claims.js +44 -0
  679. package/transpiled/directives/map/Claims.js.map +1 -0
  680. package/transpiled/directives/map/Directive.d.ts +3 -0
  681. package/transpiled/directives/map/Directive.js.map +1 -0
  682. package/transpiled/directives/map/Headers.d.ts +7 -0
  683. package/transpiled/directives/map/Headers.js +34 -0
  684. package/transpiled/directives/map/Headers.js.map +1 -0
  685. package/transpiled/directives/map/Language.d.ts +10 -0
  686. package/transpiled/directives/map/Language.js +38 -0
  687. package/transpiled/directives/map/Language.js.map +1 -0
  688. package/transpiled/directives/map/Languages.d.ts +4 -0
  689. package/transpiled/directives/map/Languages.js +17 -0
  690. package/transpiled/directives/map/Languages.js.map +1 -0
  691. package/transpiled/directives/map/Map.d.ts +13 -0
  692. package/transpiled/directives/map/Map.js +46 -0
  693. package/transpiled/directives/map/Map.js.map +1 -0
  694. package/transpiled/directives/map/Mapping.d.ts +13 -0
  695. package/transpiled/directives/map/Mapping.js +13 -0
  696. package/transpiled/directives/map/Mapping.js.map +1 -0
  697. package/transpiled/directives/{vary → map}/Properties.d.ts +2 -2
  698. package/transpiled/directives/{vary → map}/Properties.js +1 -3
  699. package/transpiled/directives/map/Properties.js.map +1 -0
  700. package/transpiled/directives/map/Segments.d.ts +6 -0
  701. package/transpiled/directives/map/Segments.js +30 -0
  702. package/transpiled/directives/map/Segments.js.map +1 -0
  703. package/transpiled/directives/map/index.d.ts +2 -0
  704. package/transpiled/directives/map/index.js +6 -0
  705. package/transpiled/directives/map/index.js.map +1 -0
  706. package/transpiled/directives/octets/Context.js +4 -24
  707. package/transpiled/directives/octets/Context.js.map +1 -1
  708. package/transpiled/directives/octets/Delete.js +15 -12
  709. package/transpiled/directives/octets/Delete.js.map +1 -1
  710. package/transpiled/directives/octets/{Fetch.d.ts → Get.d.ts} +5 -6
  711. package/transpiled/directives/octets/{Fetch.js → Get.js} +34 -30
  712. package/transpiled/directives/octets/Get.js.map +1 -0
  713. package/transpiled/directives/octets/Octets.js +9 -12
  714. package/transpiled/directives/octets/Octets.js.map +1 -1
  715. package/transpiled/directives/octets/{Store.d.ts → Put.d.ts} +8 -2
  716. package/transpiled/directives/octets/{Store.js → Put.js} +33 -27
  717. package/transpiled/directives/octets/Put.js.map +1 -0
  718. package/transpiled/directives/octets/Workflow.js +7 -2
  719. package/transpiled/directives/octets/Workflow.js.map +1 -1
  720. package/transpiled/directives/octets/bytes.d.ts +1 -0
  721. package/transpiled/directives/octets/bytes.js +21 -0
  722. package/transpiled/directives/octets/bytes.js.map +1 -0
  723. package/transpiled/directives/octets/schemas.d.ts +4 -8
  724. package/transpiled/directives/octets/schemas.js +3 -6
  725. package/transpiled/directives/octets/schemas.js.map +1 -1
  726. package/transpiled/directives/octets/types.d.ts +2 -0
  727. package/transpiled/directives/octets/workflows/Execution.d.ts +7 -1
  728. package/transpiled/directives/octets/workflows/Execution.js +44 -9
  729. package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
  730. package/transpiled/directives/octets/workflows/Workflow.d.ts +8 -3
  731. package/transpiled/directives/octets/workflows/Workflow.js +10 -4
  732. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
  733. package/transpiled/directives/octets/workflows/index.d.ts +1 -1
  734. package/transpiled/directives/octets/workflows/index.js.map +1 -1
  735. package/transpiled/directives/require/Directive.d.ts +4 -0
  736. package/transpiled/directives/require/Directive.js +3 -0
  737. package/transpiled/directives/require/Directive.js.map +1 -0
  738. package/transpiled/directives/require/Headers.d.ts +7 -0
  739. package/transpiled/directives/require/Headers.js +19 -0
  740. package/transpiled/directives/require/Headers.js.map +1 -0
  741. package/transpiled/directives/require/Require.d.ts +9 -0
  742. package/transpiled/directives/require/Require.js +27 -0
  743. package/transpiled/directives/require/Require.js.map +1 -0
  744. package/transpiled/directives/require/index.d.ts +2 -0
  745. package/transpiled/directives/require/index.js +6 -0
  746. package/transpiled/directives/require/index.js.map +1 -0
  747. package/transpiled/exceptions.js +11 -2
  748. package/transpiled/exceptions.js.map +1 -1
  749. package/transpiled/manifest.js +10 -11
  750. package/transpiled/manifest.js.map +1 -1
  751. package/transpiled/root.js +16 -1
  752. package/transpiled/root.js.map +1 -1
  753. package/transpiled/schemas.d.ts +1 -1
  754. package/transpiled/schemas.js +2 -2
  755. package/transpiled/schemas.js.map +1 -1
  756. package/transpiled/tsconfig.tsbuildinfo +1 -1
  757. package/components/identity.basic/operations/create.d.ts +0 -10
  758. package/components/identity.basic/operations/create.js +0 -10
  759. package/components/identity.basic/operations/create.js.map +0 -1
  760. package/components/identity.basic/source/create.ts +0 -18
  761. package/components/identity.federation/operations/create.d.ts +0 -10
  762. package/components/identity.federation/operations/create.js +0 -15
  763. package/components/identity.federation/operations/create.js.map +0 -1
  764. package/components/identity.federation/operations/lib/assertions-as-values.d.ts +0 -4
  765. package/components/identity.federation/operations/lib/assertions-as-values.js.map +0 -1
  766. package/components/identity.federation/operations/lib/jwt.d.ts +0 -20
  767. package/components/identity.federation/operations/lib/jwt.js +0 -136
  768. package/components/identity.federation/operations/lib/jwt.js.map +0 -1
  769. package/components/identity.federation/operations/schemas.d.ts +0 -59
  770. package/components/identity.federation/operations/schemas.js +0 -9
  771. package/components/identity.federation/operations/schemas.js.map +0 -1
  772. package/components/identity.federation/operations/types.d.ts +0 -51
  773. package/components/identity.federation/operations/types.js.map +0 -1
  774. package/components/identity.federation/source/create.ts +0 -26
  775. package/components/identity.federation/source/lib/assertions-as-values.ts +0 -19
  776. package/components/identity.federation/source/lib/jwt.test.ts +0 -56
  777. package/components/identity.federation/source/lib/jwt.ts +0 -171
  778. package/components/identity.federation/source/schemas.ts +0 -61
  779. package/components/identity.federation/source/types.ts +0 -56
  780. package/components/identity.tokens/operations/types.d.ts +0 -39
  781. package/components/identity.tokens/operations/types.js.map +0 -1
  782. package/components/identity.tokens/source/types.ts +0 -47
  783. package/components/octets.storage/operations/fetch.js +0 -46
  784. package/components/octets.storage/operations/list.js +0 -7
  785. package/components/octets.storage/operations/permute.js +0 -7
  786. package/components/octets.storage/operations/store.js +0 -11
  787. package/documentation/vary.md +0 -75
  788. package/features/steps/IdP.ts +0 -154
  789. package/features/steps/components/octets.tester/operations/diversify.js +0 -14
  790. package/features/vary.feature +0 -203
  791. package/schemas/octets/context.cos.yaml +0 -1
  792. package/schemas/octets/fetch.cos.yaml +0 -3
  793. package/schemas/octets/permute.cos.yaml +0 -1
  794. package/schemas/octets/store.cos.yaml +0 -3
  795. package/source/HTTP/Server.test.ts +0 -126
  796. package/source/directives/octets/Fetch.ts +0 -100
  797. package/source/directives/octets/List.ts +0 -72
  798. package/source/directives/octets/Permute.ts +0 -44
  799. package/source/directives/vary/Directive.ts +0 -7
  800. package/source/directives/vary/Embed.ts +0 -68
  801. package/source/directives/vary/Vary.ts +0 -50
  802. package/source/directives/vary/embeddings/Embedding.ts +0 -7
  803. package/source/directives/vary/embeddings/Header.ts +0 -32
  804. package/source/directives/vary/embeddings/Language.ts +0 -31
  805. package/source/directives/vary/embeddings/Parameter.ts +0 -14
  806. package/source/directives/vary/embeddings/index.ts +0 -11
  807. package/source/directives/vary/index.ts +0 -3
  808. package/transpiled/directives/octets/Fetch.js.map +0 -1
  809. package/transpiled/directives/octets/List.d.ts +0 -16
  810. package/transpiled/directives/octets/List.js +0 -74
  811. package/transpiled/directives/octets/List.js.map +0 -1
  812. package/transpiled/directives/octets/Permute.d.ts +0 -11
  813. package/transpiled/directives/octets/Permute.js.map +0 -1
  814. package/transpiled/directives/octets/Store.js.map +0 -1
  815. package/transpiled/directives/vary/Directive.d.ts +0 -6
  816. package/transpiled/directives/vary/Directive.js.map +0 -1
  817. package/transpiled/directives/vary/Embed.d.ts +0 -11
  818. package/transpiled/directives/vary/Embed.js +0 -51
  819. package/transpiled/directives/vary/Embed.js.map +0 -1
  820. package/transpiled/directives/vary/Properties.js.map +0 -1
  821. package/transpiled/directives/vary/Vary.d.ts +0 -10
  822. package/transpiled/directives/vary/Vary.js +0 -36
  823. package/transpiled/directives/vary/Vary.js.map +0 -1
  824. package/transpiled/directives/vary/embeddings/Embedding.d.ts +0 -6
  825. package/transpiled/directives/vary/embeddings/Embedding.js.map +0 -1
  826. package/transpiled/directives/vary/embeddings/Header.d.ts +0 -7
  827. package/transpiled/directives/vary/embeddings/Header.js +0 -28
  828. package/transpiled/directives/vary/embeddings/Header.js.map +0 -1
  829. package/transpiled/directives/vary/embeddings/Language.d.ts +0 -7
  830. package/transpiled/directives/vary/embeddings/Language.js +0 -28
  831. package/transpiled/directives/vary/embeddings/Language.js.map +0 -1
  832. package/transpiled/directives/vary/embeddings/Parameter.d.ts +0 -7
  833. package/transpiled/directives/vary/embeddings/Parameter.js +0 -14
  834. package/transpiled/directives/vary/embeddings/Parameter.js.map +0 -1
  835. package/transpiled/directives/vary/embeddings/index.d.ts +0 -5
  836. package/transpiled/directives/vary/embeddings/index.js +0 -12
  837. package/transpiled/directives/vary/embeddings/index.js.map +0 -1
  838. package/transpiled/directives/vary/index.d.ts +0 -2
  839. package/transpiled/directives/vary/index.js +0 -6
  840. package/transpiled/directives/vary/index.js.map +0 -1
  841. /package/components/{identity.federation/operations → identity.tokens/operations/lib}/types.js +0 -0
  842. /package/schemas/octets/{list.cos.yaml → get.cos.yaml} +0 -0
  843. /package/{components/identity.tokens/operations → transpiled/directives/flow}/types.js +0 -0
  844. /package/transpiled/directives/{vary → map}/Directive.js +0 -0
@@ -0,0 +1,135 @@
1
+ 'use strict'
2
+
3
+ const { Readable } = require('node:stream')
4
+ const { posix } = require('node:path')
5
+ const { Err } = require('error-value')
6
+ const { match } = require('matchacho')
7
+
8
+ async function put (input, context) {
9
+ const { storage, request, location, accept, limit, trust } = input
10
+ const url = request.url
11
+ const id = request.headers['content-id']
12
+ const claim = request.headers['content-type']
13
+ const attributes = parseAttributes(request.headers['content-attributes'])
14
+ const reference = request.headers['content-location']
15
+
16
+ /** @type {Readable} */
17
+ let body = request
18
+
19
+ const options = { claim, accept, attributes }
20
+
21
+ if (id !== undefined) {
22
+ if (!ID_RX.test(id))
23
+ return ERR_INVALID_ID
24
+
25
+ options.id = id
26
+ }
27
+
28
+ if (reference !== undefined) {
29
+ const length = Number.parseInt(request.headers['content-length'])
30
+
31
+ if (length !== 0)
32
+ return ERR_LENGTH
33
+
34
+ if (!trusted(reference, trust))
35
+ return ERR_UNTRUSTED
36
+
37
+ body = await download(reference)
38
+
39
+ if (body instanceof Error)
40
+ return body
41
+
42
+ options.origin = reference
43
+ }
44
+
45
+ if (limit !== undefined)
46
+ options.limit = limit
47
+
48
+ const path = posix.resolve(url, location ?? '.')
49
+
50
+ return context.storages[storage].put(path, body, options)
51
+ }
52
+
53
+ /**
54
+ * @param {string | string[] | undefined} values
55
+ * @returns {Record<string, string>}
56
+ */
57
+ function parseAttributes (values) {
58
+ const attributes = {}
59
+
60
+ if (values === undefined)
61
+ return attributes
62
+
63
+ if (typeof values === 'string')
64
+ values = values.split(',')
65
+
66
+ for (const pair of values) {
67
+ const eq = pair.indexOf('=')
68
+ const key = (eq === -1 ? pair : pair.slice(0, eq)).trim()
69
+
70
+ attributes[key] = eq === -1 ? 'true' : pair.slice(eq + 1).trim()
71
+ }
72
+
73
+ return attributes
74
+ }
75
+
76
+ /**
77
+ * @param {string} location
78
+ * @return {Readable | Error}
79
+ */
80
+ async function download (location) {
81
+ const response = await fetch(location)
82
+
83
+ if (!response.ok)
84
+ return ERR_UNAVAILABLE
85
+
86
+ return response.body === null ? ERR_UNAVAILABLE : Readable.fromWeb(
87
+ /** @type {import('node:stream/web').ReadableStream} **/ response.body)
88
+
89
+ }
90
+
91
+ /**
92
+ * @param {string} location
93
+ * @param {Trust | undefined} trust
94
+ * @return {boolean}
95
+ */
96
+ function trusted (location, trust) {
97
+ if (trust === undefined)
98
+ return false
99
+
100
+ const url = toURL(location)
101
+
102
+ if (url === null)
103
+ return false
104
+
105
+ for (const permission of trust) {
106
+ const ok = match(permission,
107
+ String, (origin) => url.origin === origin,
108
+ RegExp, (pattern) => pattern.test(url.origin))
109
+
110
+ if (ok)
111
+ return true
112
+ }
113
+
114
+ return false
115
+ }
116
+
117
+ function toURL (location) {
118
+ try {
119
+ return new URL(location)
120
+ } catch (error) {
121
+ return null
122
+ }
123
+ }
124
+
125
+ const ERR_UNTRUSTED = new Err('LOCATION_UNTRUSTED', 'Location is not trusted')
126
+ const ERR_LENGTH = new Err('LOCATION_LENGTH', 'Content-Length must be 0 when Content-Location is used')
127
+ const ERR_UNAVAILABLE = new Err('LOCATION_UNAVAILABLE', 'Location is not available')
128
+ const ERR_INVALID_ID = new Err('INVALID_ID', 'Invalid Content-ID')
129
+
130
+ const ID_RX = /^[a-zA-Z0-9-_]{1,32}$/
131
+
132
+ exports.effect = put
133
+
134
+ /** @typedef {Array<string | RegExp>} Trust */
135
+ /** @typedef {import('node:stream').Readable} Readable */
@@ -25,7 +25,11 @@ responds with an authorization error.
25
25
  Grants access if its value is `true` and no credentials were provided[^1].
26
26
 
27
27
  [^1]: Credentials in the request make the
28
- response [non-cachable](https://datatracker.ietf.org/doc/html/rfc7234#section-3).
28
+ response [non-cacheable](https://datatracker.ietf.org/doc/html/rfc7234#section-3).
29
+
30
+ ### `anyone`
31
+
32
+ Grants access if its value is `true` and valid credentials were provided.
29
33
 
30
34
  ### `id`
31
35
 
@@ -37,11 +41,8 @@ the directive's value.
37
41
  Given the Route declaration and corresponding HTTP request:
38
42
 
39
43
  ```yaml
40
- # context.toa.yaml
41
-
42
- exposition:
43
- /users/:user-id:
44
- id: "user-id"
44
+ /users/:user-id:
45
+ id: "user-id"
45
46
  ```
46
47
 
47
48
  ```http
@@ -57,11 +58,8 @@ is `87480f2bd88048518c529d7957475ecd`.
57
58
  Grants access if resolved Identity has a role matching the directive's value or one of its values.
58
59
 
59
60
  ```yaml
60
- # context.toa.yaml
61
-
62
- exposition:
63
- /code:
64
- role: [developer, reviewer]
61
+ /code:
62
+ role: [developer, reviewer]
65
63
  ```
66
64
 
67
65
  Access will be granted if the resolved Identity has a role that matches `developer` or `reviewer`.
@@ -73,11 +71,50 @@ Read [Roles](#roles) section for more details.
73
71
  The `role` directive can be used with a placeholder in the route.
74
72
 
75
73
  ```yaml
76
- # context.toa.yaml
74
+ /:org-id:
75
+ role: app:{org-id}:moderator
76
+ ```
77
77
 
78
- exposition:
79
- /:org-id:
80
- role: app:{org-id}:moderator
78
+ ### `claims`
79
+
80
+ Grants access if `Bearer` authentication scheme is used
81
+ and the Token's claims matches the specified values.
82
+
83
+ ```yaml
84
+ /:
85
+ auth:claims:
86
+ iss: https://id.example.com
87
+ sub: someone
88
+ aud: stars
89
+ ```
90
+
91
+ > If OIDC token claim contains `aud`
92
+ > as [an array](https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation), the
93
+ > directive will match if at least one value.
94
+
95
+ At least one property is required.
96
+
97
+ Values may refer to the Route parameters or the request authority:
98
+
99
+ ```yaml
100
+ /secrets/:org-id:
101
+ auth:claims:
102
+ iss: https://id.org.com
103
+ sub: /:org-id
104
+ aud: :authority
105
+ ```
106
+
107
+ An expression `:domain` will match if the domain in the value of `iss` matches the request
108
+ authority, excluding the most specific subdomain.
109
+
110
+ Issuer `https://accounts.example.com` matches request authorities `images.example.com`
111
+ and `sub.images.example.com`, but not `images.another.com`.
112
+
113
+ ```yaml
114
+ /images/:user-id:
115
+ auth:claims:
116
+ iss: :domain
117
+ sub: /:org-id
81
118
  ```
82
119
 
83
120
  ### `rule`
@@ -88,17 +125,34 @@ directives grant access. The value of the `rule` directive can be a single Rule
88
125
  #### Example
89
126
 
90
127
  ```yaml
91
- # context.toa.yaml
92
-
93
- exposition:
94
- /commits/:user-id:
95
- rule:
96
- id: user-id
97
- role: developer
128
+ /commits/:user-id:
129
+ rule:
130
+ id: user-id
131
+ role: developer
98
132
  ```
99
133
 
100
134
  Access will be granted if an Identity matches a `user-id` placeholder and has a Role of `developer`.
101
135
 
136
+ ### `input`
137
+
138
+ Restricts access based on the request body (which must be an object).
139
+
140
+ ```yaml
141
+ /commits/:id:
142
+ PUT:
143
+ auth:role: [developer, reviewer]
144
+ auth:input:
145
+ - prop: approved
146
+ role: reviewer
147
+ - prop: message
148
+ role: developer
149
+ ```
150
+
151
+ The example above restricts access to the `approved` property of the request body to the identity
152
+ with the `reviewer` role, and the `message` property to the identity with the `developer` role.
153
+
154
+ > `auth:input` directive does not grant access by itself.
155
+
102
156
  ### `delegate`
103
157
 
104
158
  Embeds the value of the current Identity into the request body as a property named after the value
@@ -124,11 +178,8 @@ directive.
124
178
  #### Example
125
179
 
126
180
  ```yaml
127
- # context.toa.yaml
128
-
129
- /exposition:
130
- /commits/:user-id:
131
- role: developer:senior
181
+ /commits/:user-id:
182
+ role: developer:senior
132
183
  ```
133
184
 
134
185
  The example above defines a `role` directive with the specified `developer:senior` Role Scope.
@@ -0,0 +1,48 @@
1
+ # Authorities
2
+
3
+ Authorities are a mechanism that allows serving multiple domains from a single instance of the
4
+ application.
5
+
6
+ ## Definition
7
+
8
+ The `authorities` definition is a map of authority identifiers to the `:authority` pseudo-header
9
+ values.
10
+
11
+ ```yaml
12
+ # context.toa.yaml
13
+
14
+ exposition:
15
+ authorities:
16
+ one: the.one.com
17
+ two: the.two.com
18
+ ```
19
+
20
+ ## Mappings
21
+
22
+ To pass the requested authority to the operation call, [`map:authority` directive](map#embeddings)
23
+ can be used.
24
+
25
+ ```yaml
26
+ # manifest.toa.yaml
27
+
28
+ exposition:
29
+ /:
30
+ GET:
31
+ map:authority: hostname
32
+ endpoint: observe
33
+ ```
34
+
35
+ If the value of the `authority` pseudo-header is not present in the `authorities` definition,
36
+ then the value is embedded as is.
37
+
38
+ ## Identity
39
+
40
+ Credentials stored or issued by the [authentication system](identity.md) are associated with an
41
+ authority.
42
+ Credentials in one authority are not valid in another,
43
+ or may be associated with a different Identity; in other words, Identity exists in the context of an
44
+ authority.
45
+
46
+ > :warning:<br/>
47
+ > Changing the authority identifier will break compatibility with existing stored or issued
48
+ > credentials.
@@ -20,7 +20,7 @@ and pepper.
20
20
  configuration:
21
21
  identity.basic:
22
22
  rounds: 10 # salt rounds
23
- peper: '' # hashing pepper
23
+ pepper: '' # hashing pepper
24
24
  ```
25
25
 
26
26
  ### Credentials constraints
@@ -74,6 +74,12 @@ username: string
74
74
  password: string
75
75
  ```
76
76
 
77
+ Returns `201 Created` if the Identity is created,
78
+ or `422 Unprocessable Entity` with one of the error codes:
79
+
80
+ - `INVALID_USERNAME` - `username` does not match constraints
81
+ - `INVALID_PASSWORD` - `password` does not match constraints
82
+
77
83
  Access is [anonymous](access.md#anonymous).
78
84
 
79
85
  #### `/identity/basic/:id/`
@@ -89,6 +95,23 @@ password?: string
89
95
 
90
96
  Access requires basic credentials of the modified Identity or `system:identity:basic` role.
91
97
 
98
+ <code>POST</code> Incept new basic credentials. Request body is as follows:
99
+
100
+ ```yaml
101
+ username: string
102
+ password: string
103
+ ```
104
+
105
+ Identity should not have associated basic credentials. Access requires any credentials of the Identity.
106
+
107
+ #### `/identity/basic/usernames/:username/`
108
+
109
+ <code>GET</code> Check if the username is available.
110
+
111
+ `username` must be Base64 URL encoded.
112
+
113
+ Returns empty response with status `204` if the username is already taken or `404` if it is available.
114
+
92
115
  ## Identity federation (OpenID connect)
93
116
 
94
117
  The `identity.federation` component manages OpenID Connect federated identities.
@@ -111,8 +134,8 @@ secrets.
111
134
  configuration:
112
135
  identity.federation:
113
136
  trust:
114
- - issuer: https://token.actions.githubusercontent.com
115
- audience:
137
+ - iss: https://token.actions.githubusercontent.com
138
+ aud:
116
139
  - https://github.com/tinovyatkin
117
140
  - https://github.com/temich
118
141
 
@@ -122,9 +145,9 @@ configuration:
122
145
  k1: <secret-to-be-used-for-hs256>
123
146
  ```
124
147
 
125
- ## Stateless tokens
148
+ ## Local tokens
126
149
 
127
- The `identity.tokens` component manages stateless authentication tokens.
150
+ The `identity.tokens` component manages local authentication tokens.
128
151
 
129
152
  These tokens carry the information required to authenticate the Identity and authorize access.
130
153
 
@@ -143,21 +166,84 @@ authorization: Token ...
143
166
  cache-control: no-store
144
167
  ```
145
168
 
169
+ ### Custom tokens
170
+
171
+ Custom tokens can be issued with a specific set of permissions and scopes for the own Identity or by
172
+ an Identity with the `system:identity:tokens` role.
173
+
174
+ Tokens are issued with custom secret keys and are not subject to [token rotation](#token-rotation).
175
+ To invalidate a custom token, its secret key must be deleted.
176
+
177
+ Custom tokens have no `refresh` period, that is, never become obsolete and never refreshed.
178
+
179
+ ```
180
+ POST /identity/tokens/<identity>/
181
+ host: nex.toa.io
182
+ authorization: ...
183
+ accept: application/yaml
184
+ content-type: application/yaml
185
+
186
+ lifetime: 3600
187
+ scopes: [app:developer]
188
+ permissions:
189
+ /users/fc8e66dd/: [GET, PUT]
190
+ /posts/fc8e66dd/**/comments/: [*]
191
+ ```
192
+
193
+ ```
194
+ 201 Created
195
+ content-type: application/yaml
196
+
197
+ token: <token>
198
+ ```
199
+
200
+ - `lifetime`: Issued token will be valid for this period
201
+ (default is specified in [the configuration](#token-rotation)).
202
+ The value of `0` means the token will not expire, which is supported, but
203
+ **strongly not recommended** for production environments.
204
+ - `scopes`: Issued token will assume only specified [role scopes](access.md#roles).
205
+ - `permissions`: Issued token will have permissions to access only specified resources and methods.
206
+ Supports [glob patterns](https://www.gnu.org/software/bash/manual/html_node/Pattern-Matching.html)
207
+ and a wildcard method.
208
+
209
+ > `roles` and `permissions` are additional restrictions applied on top of the Identity’s inherent
210
+ > privileges.
211
+
212
+ ### Custom token invalidation
213
+
214
+ Custom tokens can be invalidated by deleting the secret key used to issue them.
215
+ This can be done by the Identity that issued the token or by an Identity with
216
+ the `system:identity:keys` role.
217
+
218
+ ```
219
+ DELETE /identity/keys/<identity>/<key.id>/
220
+ authorization: ...
221
+ ```
222
+
223
+ Token secret key `id` can be obtained from the list of issued tokens (or from the footer of the
224
+ token itself).
225
+
226
+ ```
227
+ GET /identity/keys/<identity>/
228
+ authorization: ...
229
+ ```
230
+
146
231
  ### Token encryption
147
232
 
148
233
  Issued tokens are encrypted
149
234
  with [PASETO V3 encryption](https://github.com/panva/paseto/blob/main/docs/README.md#v3encryptpayload-key-options)
150
- using the `key0` configuration value as a secret.
235
+ using the first key from the `keys` configuration value.
151
236
 
152
237
  ```yaml
153
238
  # context.toa.yaml
154
239
 
155
240
  configuration:
156
241
  identity.tokens:
157
- key0: $TOKEN_ENCRYPTION_KEY
242
+ keys:
243
+ 2024q1: $TOKEN_SECRET_2024Q1
158
244
  ```
159
245
 
160
- The `key0` configuration value is required.
246
+ At least one key in the `keys` configuration value is required.
161
247
 
162
248
  > Valid secret key may be generated using the [`toa key` command](/runtime/cli/readme.md#key).
163
249
 
@@ -197,43 +283,18 @@ Token revocation takes effect once the `refresh` period of the currently issued
197
283
 
198
284
  ### Secret rotation
199
285
 
200
- Tokens are always encrypted using the `key0` configuration value, and they will be decrypted by
201
- attempting both
202
- the `key0` and `key1` values in order.
203
-
204
- `key0` is considered the "current key," and `key1` is considered the "previous key."
205
-
206
- ```yaml
207
- # context.toa.yaml
208
-
209
- configuration:
210
- identity.tokens:
211
- key0: $TOKEN_ENCRYPTION_KEY_2023Q3
212
- key1: $TOKEN_ENCRYPTION_KEY_2023Q2
213
- ```
214
-
215
- Secret rotation is performed by adding a new key as the `key0` value and moving the existing `key0`
216
- to the `key1` value.
217
-
218
- When rolling out the new secret key, there will be a period of time when the new key is deployed to
219
- some Exposition
220
- instances. During this time, these instances will start using the new key to encrypt tokens, while
221
- other instances will
222
- continue using the current key and will not be able to decrypt tokens encrypted with the new key.
286
+ Tokens are always encrypted using the first key from the `keys` configuration value,
287
+ and decrypted by the key used to encrypt them.
223
288
 
224
- To address this issue, the `key1` configuration value may be used as a "transient key."
289
+ To rotate the secret key, a new key must be added to the top of the `keys` configuration value, that
290
+ is, it will be used to encrypt new tokens.
225
291
 
226
- The secret rotation is a 2-step process:
292
+ Old keys must be removed only after the `refresh` period of the previously issued tokens has
293
+ expired.
227
294
 
228
- > The process **must not** be performed earlier than the `lifetime` period since the last rotation,
229
- > as it may invalidate
230
- > tokens before they expire. Therefore, it is guaranteed that there are no valid tokens issued with
231
- > the current `key1`
232
- > value.
233
-
234
- 1. Deploy the new secret key to all Exposition instances as `key1`. This enables all instances to
235
- decrypt tokens
236
- encrypted with the new key while still using the current key for encryption.
295
+ > Let's say you are adding a new secret key each quarter: `2024Q1`, `2024Q2` and so on.
296
+ > The old key `2024Q1` must be removed from the configuration only when the `refresh` period after
297
+ > the new key `2024Q2` was added has expired.
237
298
 
238
299
  ```yaml
239
300
  # context.toa.yaml
@@ -329,3 +390,17 @@ roles:
329
390
  - developer
330
391
  - system:identity:roles
331
392
  ```
393
+
394
+ When no credentials are provided, transient Identity is created.
395
+
396
+ ```http
397
+ GET /identity/
398
+ accept: application/yaml
399
+ ```
400
+
401
+ ```
402
+ 201 Created
403
+
404
+ id: 332017649c814649b25ee466c1fe4534
405
+ roles: []
406
+ ```
@@ -0,0 +1,30 @@
1
+ # Development tools
2
+
3
+ ## `dev:stub`
4
+
5
+ Returns a successful response with the given body.
6
+
7
+ ```yaml
8
+ /foo:
9
+ dev:sub: Hello!
10
+ /bar:
11
+ dev:sub:
12
+ hello: world
13
+ ```
14
+
15
+ ## `dev:sleep`
16
+
17
+ Enables random delay before processing the request, up to given maximum time in milliseconds.
18
+
19
+ Desired delay range can be set in the `sleep` request header as a JSON array of two numbers, the minimum
20
+ and maximum delay in milliseconds.
21
+
22
+ ```yaml
23
+ /foo:
24
+ dev:sleep: 1000
25
+ ```
26
+
27
+ ```http
28
+ GET /foo/ HTTP/1.1
29
+ sleep: [500, 1000]
30
+ ```
@@ -0,0 +1,44 @@
1
+ # Request flow
2
+
3
+ ## `flow:fetch`
4
+
5
+ Fetches the content from the resource returned by the specified endpoint.
6
+
7
+ The value of the directive is a `string` specifying endpoint to be called for the redirection
8
+ request.
9
+
10
+ Request `authority`, `path` and `parameters` are passed as input to the redirection endpoint,
11
+ and it must return a URL `string`, an `Error` or an object with the following properties:
12
+
13
+ ```yaml
14
+ url: string
15
+ options?:
16
+ method?: string
17
+ headers?: Record<string, string>
18
+ body?: string
19
+ ```
20
+
21
+ If it returns a URL or Request, then the response to the specified request is returned as the
22
+ response to the original request, along with the `content-type`, `content-length`, and `etag`
23
+ headers.
24
+
25
+ ## `flow:compose`
26
+
27
+ Compose an object from a response stream in object mode.
28
+
29
+ The value of the directive is an object whose values are JavaScript expressions
30
+ accessing the response stream objects composed into an array named `$`.
31
+
32
+ ```yaml
33
+ flow:compose:
34
+ one: $[0].status
35
+ two: $[1].data.foo
36
+ three: $[2].amount
37
+ ```
38
+
39
+ ```yaml
40
+ flow:compose:
41
+ sum: $[0].value + $[1].value
42
+ ```
43
+
44
+ Be careful.