@toa.io/extensions.exposition 1.0.0-alpha.3 → 1.0.0-alpha.300

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