@toa.io/extensions.exposition 1.0.0-alpha.284 → 1.0.0-alpha.286

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 (620) hide show
  1. package/components/exposition.octets/operations/delete.js +1 -1
  2. package/components/exposition.octets/operations/get.js +5 -2
  3. package/components/exposition.octets/operations/head.js +1 -1
  4. package/components/exposition.octets/operations/put.js +29 -37
  5. package/components/exposition.octets/types/toa.d.ts +1 -1
  6. package/components/identity.bans/manifest.toa.yaml +12 -13
  7. package/components/identity.bans/migrations/0001-system-properties.yaml +14 -0
  8. package/components/identity.bans/operations/transit.js +1 -1
  9. package/components/identity.bans/source/transit.ts +1 -1
  10. package/components/identity.bans/tsconfig.tsbuildinfo +1 -1
  11. package/components/identity.bans/types/toa.d.ts +5 -5
  12. package/components/identity.basic/events/principal.js +3 -1
  13. package/components/identity.basic/manifest.toa.yaml +17 -23
  14. package/components/identity.basic/migrations/0001-system-properties.yaml +14 -0
  15. package/components/identity.basic/migrations/0002-indexes.yaml +13 -0
  16. package/components/identity.basic/operations/add.js +1 -1
  17. package/components/identity.basic/operations/authenticate.js +2 -2
  18. package/components/identity.basic/operations/check.js +4 -2
  19. package/components/identity.basic/operations/delete.js +1 -1
  20. package/components/identity.basic/operations/incept.js +1 -1
  21. package/components/identity.basic/operations/info.js +1 -1
  22. package/components/identity.basic/operations/lib/credentials.js +1 -1
  23. package/components/identity.basic/operations/transit.js +7 -8
  24. package/components/identity.basic/source/add.ts +5 -2
  25. package/components/identity.basic/source/authenticate.ts +11 -13
  26. package/components/identity.basic/source/check.ts +9 -6
  27. package/components/identity.basic/source/delete.ts +4 -1
  28. package/components/identity.basic/source/incept.ts +13 -10
  29. package/components/identity.basic/source/info.ts +4 -1
  30. package/components/identity.basic/source/lib/credentials.ts +2 -3
  31. package/components/identity.basic/source/transit.ts +27 -21
  32. package/components/identity.basic/tsconfig.tsbuildinfo +1 -1
  33. package/components/identity.basic/types/index.d.ts +7 -3
  34. package/components/identity.basic/types/toa.d.ts +5 -5
  35. package/components/identity.clients/manifest.toa.yaml +36 -40
  36. package/components/identity.clients/migrations/0001-system-properties.yaml +14 -0
  37. package/components/identity.clients/migrations/0002-indexes.yaml +4 -0
  38. package/components/identity.clients/operations/describe.js +1 -1
  39. package/components/identity.clients/operations/lib/canonical.js +1 -1
  40. package/components/identity.clients/operations/lib/cimd.js +3 -2
  41. package/components/identity.clients/operations/lib/redirect.js +7 -4
  42. package/components/identity.clients/operations/register.js +2 -2
  43. package/components/identity.clients/source/describe.ts +6 -8
  44. package/components/identity.clients/source/lib/Context.ts +6 -3
  45. package/components/identity.clients/source/lib/Entity.ts +1 -1
  46. package/components/identity.clients/source/lib/canonical.ts +1 -1
  47. package/components/identity.clients/source/lib/cimd.test.ts +8 -6
  48. package/components/identity.clients/source/lib/cimd.ts +24 -19
  49. package/components/identity.clients/source/lib/redirect.test.ts +8 -2
  50. package/components/identity.clients/source/lib/redirect.ts +12 -8
  51. package/components/identity.clients/source/register.ts +18 -18
  52. package/components/identity.clients/tsconfig.tsbuildinfo +1 -1
  53. package/components/identity.clients/types/toa.d.ts +5 -5
  54. package/components/identity.credentials/manifest.toa.yaml +4 -4
  55. package/components/identity.credentials/operations/list.js +8 -4
  56. package/components/identity.credentials/source/list.test.ts +39 -20
  57. package/components/identity.credentials/source/list.ts +12 -8
  58. package/components/identity.credentials/tsconfig.tsbuildinfo +1 -1
  59. package/components/identity.credentials/types/toa.d.ts +2 -2
  60. package/components/identity.federation/manifest.toa.yaml +23 -32
  61. package/components/identity.federation/migrations/0001-system-properties.yaml +14 -0
  62. package/components/identity.federation/migrations/0002-indexes.yaml +25 -0
  63. package/components/identity.federation/operations/authenticate.js +4 -2
  64. package/components/identity.federation/operations/create.js +2 -2
  65. package/components/identity.federation/operations/decode.js +1 -1
  66. package/components/identity.federation/operations/delete.js +1 -1
  67. package/components/identity.federation/operations/incept.js +1 -1
  68. package/components/identity.federation/operations/lib/decode.js +1 -1
  69. package/components/identity.federation/operations/lib/discovery.js +2 -2
  70. package/components/identity.federation/operations/lib/exchange.js +8 -4
  71. package/components/identity.federation/operations/lib/principal.js +1 -1
  72. package/components/identity.federation/operations/lib/resolve.js +1 -1
  73. package/components/identity.federation/operations/list.js +2 -2
  74. package/components/identity.federation/source/authenticate.ts +19 -17
  75. package/components/identity.federation/source/create.ts +6 -7
  76. package/components/identity.federation/source/decode.ts +4 -1
  77. package/components/identity.federation/source/delete.ts +4 -1
  78. package/components/identity.federation/source/incept.ts +2 -3
  79. package/components/identity.federation/source/lib/decode.ts +4 -7
  80. package/components/identity.federation/source/lib/discovery.test.ts +15 -5
  81. package/components/identity.federation/source/lib/discovery.ts +10 -9
  82. package/components/identity.federation/source/lib/exchange.ts +18 -15
  83. package/components/identity.federation/source/lib/jose.d.ts +1 -1
  84. package/components/identity.federation/source/lib/principal.ts +5 -3
  85. package/components/identity.federation/source/lib/resolve.ts +5 -1
  86. package/components/identity.federation/source/list.test.ts +26 -10
  87. package/components/identity.federation/source/list.ts +5 -2
  88. package/components/identity.federation/source/types/context.ts +5 -2
  89. package/components/identity.federation/source/types/entity.ts +2 -2
  90. package/components/identity.federation/tsconfig.tsbuildinfo +1 -1
  91. package/components/identity.federation/types/toa.d.ts +5 -5
  92. package/components/identity.grants/manifest.toa.yaml +27 -31
  93. package/components/identity.grants/migrations/0001-system-properties.yaml +14 -0
  94. package/components/identity.grants/migrations/0002-indexes.yaml +5 -0
  95. package/components/identity.grants/operations/authorize.js +1 -1
  96. package/components/identity.grants/operations/exchange.js +5 -2
  97. package/components/identity.grants/operations/lib/code.js +1 -1
  98. package/components/identity.grants/operations/lib/identify.js +1 -1
  99. package/components/identity.grants/operations/list.js +1 -1
  100. package/components/identity.grants/operations/revoke.js +3 -2
  101. package/components/identity.grants/source/authorize.ts +27 -19
  102. package/components/identity.grants/source/exchange.ts +15 -11
  103. package/components/identity.grants/source/lib/code.ts +20 -8
  104. package/components/identity.grants/source/lib/identify.ts +1 -1
  105. package/components/identity.grants/source/list.ts +2 -2
  106. package/components/identity.grants/source/revoke.ts +9 -7
  107. package/components/identity.grants/tsconfig.tsbuildinfo +1 -1
  108. package/components/identity.grants/types/index.d.ts +3 -3
  109. package/components/identity.grants/types/toa.d.ts +5 -5
  110. package/components/identity.keys/manifest.toa.yaml +18 -23
  111. package/components/identity.keys/migrations/0001-system-properties.yaml +14 -0
  112. package/components/identity.keys/migrations/0002-indexes.yaml +4 -0
  113. package/components/identity.keys/operations/create.js +1 -1
  114. package/components/identity.keys/operations/disable.js +1 -1
  115. package/components/identity.keys/operations/revoke.js +1 -1
  116. package/components/identity.keys/source/create.ts +2 -3
  117. package/components/identity.keys/source/disable.ts +1 -1
  118. package/components/identity.keys/source/revoke.ts +2 -2
  119. package/components/identity.keys/tsconfig.tsbuildinfo +1 -1
  120. package/components/identity.keys/types/toa.d.ts +5 -5
  121. package/components/identity.otp/manifest.toa.yaml +16 -24
  122. package/components/identity.otp/migrations/0001-system-properties.yaml +14 -0
  123. package/components/identity.otp/migrations/0002-indexes.yaml +5 -0
  124. package/components/identity.otp/operations/authenticate.js +1 -1
  125. package/components/identity.otp/operations/issue.js +1 -1
  126. package/components/identity.otp/source/authenticate.ts +4 -7
  127. package/components/identity.otp/source/issue.ts +1 -1
  128. package/components/identity.otp/source/lib/Context.ts +1 -1
  129. package/components/identity.otp/tsconfig.tsbuildinfo +1 -1
  130. package/components/identity.otp/types/toa.d.ts +5 -5
  131. package/components/identity.passkeys/manifest.toa.yaml +45 -53
  132. package/components/identity.passkeys/migrations/0001-system-properties.yaml +14 -0
  133. package/components/identity.passkeys/migrations/0002-indexes.yaml +11 -0
  134. package/components/identity.passkeys/operations/authenticate.js +1 -1
  135. package/components/identity.passkeys/operations/challenge.js +6 -3
  136. package/components/identity.passkeys/operations/create.js +1 -1
  137. package/components/identity.passkeys/operations/delete.js +1 -1
  138. package/components/identity.passkeys/operations/list.js +1 -1
  139. package/components/identity.passkeys/operations/use.js +1 -1
  140. package/components/identity.passkeys/source/authenticate.ts +3 -4
  141. package/components/identity.passkeys/source/challenge.ts +29 -25
  142. package/components/identity.passkeys/source/create.ts +8 -6
  143. package/components/identity.passkeys/source/delete.ts +4 -1
  144. package/components/identity.passkeys/source/list.ts +4 -1
  145. package/components/identity.passkeys/source/types/Context.ts +1 -1
  146. package/components/identity.passkeys/source/use.ts +12 -10
  147. package/components/identity.passkeys/tsconfig.tsbuildinfo +1 -1
  148. package/components/identity.passkeys/types/toa.d.ts +5 -5
  149. package/components/identity.roles/manifest.toa.yaml +12 -16
  150. package/components/identity.roles/migrations/0001-system-properties.yaml +14 -0
  151. package/components/identity.roles/migrations/0002-indexes.yaml +8 -0
  152. package/components/identity.roles/operations/grant.js +1 -1
  153. package/components/identity.roles/operations/list.js +1 -1
  154. package/components/identity.roles/operations/principal.js +2 -2
  155. package/components/identity.roles/source/grant.ts +7 -6
  156. package/components/identity.roles/source/list.ts +1 -1
  157. package/components/identity.roles/source/principal.ts +5 -7
  158. package/components/identity.roles/tsconfig.tsbuildinfo +1 -1
  159. package/components/identity.roles/types/toa.d.ts +5 -5
  160. package/components/identity.tokens/manifest.toa.yaml +17 -15
  161. package/components/identity.tokens/migrations/0001-system-properties.yaml +14 -0
  162. package/components/identity.tokens/operations/authenticate.js +2 -2
  163. package/components/identity.tokens/operations/decrypt.js +11 -5
  164. package/components/identity.tokens/operations/encrypt.js +2 -2
  165. package/components/identity.tokens/operations/issue.js +2 -4
  166. package/components/identity.tokens/operations/lib/form.js +1 -1
  167. package/components/identity.tokens/operations/lib/key.js +1 -1
  168. package/components/identity.tokens/operations/revoke.js +1 -1
  169. package/components/identity.tokens/source/authenticate.test.ts +22 -16
  170. package/components/identity.tokens/source/authenticate.ts +7 -10
  171. package/components/identity.tokens/source/decrypt.test.ts +62 -29
  172. package/components/identity.tokens/source/decrypt.ts +30 -27
  173. package/components/identity.tokens/source/encrypt.test.ts +21 -16
  174. package/components/identity.tokens/source/encrypt.ts +8 -11
  175. package/components/identity.tokens/source/issue.test.ts +4 -2
  176. package/components/identity.tokens/source/issue.ts +6 -8
  177. package/components/identity.tokens/source/lib/form.ts +5 -9
  178. package/components/identity.tokens/source/lib/jose.d.ts +1 -1
  179. package/components/identity.tokens/source/lib/key.ts +1 -1
  180. package/components/identity.tokens/source/lib/paseto.test.ts +17 -6
  181. package/components/identity.tokens/source/revoke.ts +1 -1
  182. package/components/identity.tokens/tsconfig.tsbuildinfo +1 -1
  183. package/components/identity.tokens/types/index.d.ts +13 -4
  184. package/components/identity.tokens/types/toa.d.ts +5 -5
  185. package/context.toa.yaml +2 -2
  186. package/cucumber.mjs +3 -0
  187. package/documentation/access.md +4 -3
  188. package/documentation/cache.md +17 -3
  189. package/documentation/components.md +2 -2
  190. package/documentation/credentials.md +2 -2
  191. package/documentation/identity.md +7 -9
  192. package/documentation/map.md +2 -2
  193. package/documentation/mcp.md +23 -17
  194. package/documentation/notes/peers.md +1 -1
  195. package/documentation/notes/throttling.md +1 -1
  196. package/documentation/octets.md +4 -4
  197. package/documentation/protocol.md +3 -3
  198. package/documentation/query.md +14 -8
  199. package/documentation/rpc.md +45 -31
  200. package/documentation/tracing.md +3 -3
  201. package/documentation/tree.md +1 -1
  202. package/features/auth.assert.feature +2 -2
  203. package/features/auth.bearer.feature +1 -1
  204. package/features/auth.claims.feature +5 -5
  205. package/features/auth.incept.feature +2 -2
  206. package/features/authorities.federation.feature +1 -1
  207. package/features/configuration.feature +3 -4
  208. package/features/credentials.feature +9 -9
  209. package/features/dev.feature +1 -0
  210. package/features/dynamic.feature +1 -0
  211. package/features/errors.feature +21 -0
  212. package/features/etag.feature +0 -86
  213. package/features/identity.bans.feature +3 -3
  214. package/features/identity.basic.feature +9 -9
  215. package/features/identity.federation.feature +11 -11
  216. package/features/identity.tokens.custom.feature +5 -5
  217. package/features/identity.tokens.feature +2 -2
  218. package/features/interruptions.feature +1 -0
  219. package/features/introspection.map.feature +4 -4
  220. package/features/io.throttle.feature +1 -0
  221. package/features/map.feature +2 -2
  222. package/features/mcp.feature +32 -28
  223. package/features/oauth.grants.feature +1 -1
  224. package/features/octets.cloudinary.feature +1 -1
  225. package/features/octets.download.feature +1 -0
  226. package/features/require.feature +1 -2
  227. package/features/rpc.feature +21 -21
  228. package/features/steps/Captures.ts +1 -1
  229. package/features/steps/Cloudinary.ts +1 -2
  230. package/features/steps/Common.ts +4 -5
  231. package/features/steps/Components.ts +17 -12
  232. package/features/steps/Database.ts +42 -23
  233. package/features/steps/Gateway.ts +55 -71
  234. package/features/steps/HTTP.ts +12 -15
  235. package/features/steps/IDP.ts +118 -94
  236. package/features/steps/Identity.ts +3 -3
  237. package/features/steps/OTP.ts +3 -3
  238. package/features/steps/Parameters.ts +20 -10
  239. package/features/steps/Probe.ts +9 -7
  240. package/features/steps/Realtime.ts +40 -22
  241. package/features/steps/Workspace.ts +10 -7
  242. package/features/steps/components/audit/operations/record.js +1 -1
  243. package/features/steps/components/echo/operations/affect.js +1 -1
  244. package/features/steps/components/echo/operations/compute.js +1 -1
  245. package/features/steps/components/echo/operations/echo.js +1 -1
  246. package/features/steps/components/echo/operations/error.js +1 -1
  247. package/features/steps/components/echo/operations/identity.js +1 -1
  248. package/features/steps/components/echo/operations/parameters.js +1 -1
  249. package/features/steps/components/echo/operations/ping.js +1 -1
  250. package/features/steps/components/echo/operations/unwrap.js +1 -1
  251. package/features/steps/components/greeter/operations/greet.js +1 -1
  252. package/features/steps/components/notify/operations/send.js +1 -1
  253. package/features/steps/components/octets.tester/operations/authority.js +1 -1
  254. package/features/steps/components/octets.tester/operations/bar.js +1 -1
  255. package/features/steps/components/octets.tester/operations/baz.js +1 -1
  256. package/features/steps/components/octets.tester/operations/concat.js +1 -1
  257. package/features/steps/components/octets.tester/operations/echo.js +1 -1
  258. package/features/steps/components/octets.tester/operations/err.js +1 -1
  259. package/features/steps/components/octets.tester/operations/foo.js +1 -1
  260. package/features/steps/components/octets.tester/operations/id.js +1 -1
  261. package/features/steps/components/octets.tester/operations/identity.js +1 -1
  262. package/features/steps/components/octets.tester/operations/redirect.js +6 -4
  263. package/features/steps/components/octets.tester/operations/yex.js +1 -1
  264. package/features/steps/components/octets.tester/operations/yield.js +1 -1
  265. package/features/steps/components/orders/manifest.toa.yaml +10 -12
  266. package/features/steps/components/orders/operations/create.js +4 -2
  267. package/features/steps/components/pots/manifest.toa.yaml +15 -20
  268. package/features/steps/components/pots/migrations/0002-indexes.yaml +4 -0
  269. package/features/steps/components/pricing/operations/quote.js +1 -1
  270. package/features/steps/components/sequences/manifest.toa.yaml +0 -1
  271. package/features/steps/components/sequences/operations/numbers.js +1 -1
  272. package/features/steps/components/sequences/operations/tokens.js +3 -3
  273. package/features/steps/components/users/manifest.toa.yaml +3 -5
  274. package/features/steps/components/users/operations/create.js +1 -1
  275. package/features/steps/components/users.properties/manifest.toa.yaml +5 -6
  276. package/features/steps/map.ts +2 -2
  277. package/features/timestamps.feature +1 -1
  278. package/package.json +7 -7
  279. package/readme.md +11 -11
  280. package/schemas/annotation.cos.yaml +1 -3
  281. package/schemas/method.cos.yaml +2 -0
  282. package/source/Branch.test.ts +2 -2
  283. package/source/Branch.ts +3 -5
  284. package/source/Composition.ts +5 -5
  285. package/source/Directive.test.ts +38 -20
  286. package/source/Directive.ts +61 -47
  287. package/source/Endpoint.test.ts +1 -1
  288. package/source/Endpoint.ts +27 -92
  289. package/source/Factory.ts +26 -12
  290. package/source/Gateway.ts +87 -76
  291. package/source/HTTP/Context.ts +23 -30
  292. package/source/HTTP/Probe.ts +7 -9
  293. package/source/HTTP/Server.ts +88 -69
  294. package/source/HTTP/Timing.ts +6 -21
  295. package/source/HTTP/address.test.ts +8 -2
  296. package/source/HTTP/address.ts +2 -3
  297. package/source/HTTP/exceptions.ts +20 -18
  298. package/source/HTTP/formats/form.ts +1 -1
  299. package/source/HTTP/formats/json.ts +2 -2
  300. package/source/HTTP/formats/msgpack.ts +3 -4
  301. package/source/HTTP/formats/text.ts +2 -2
  302. package/source/HTTP/formats/yaml.test.ts +4 -1
  303. package/source/HTTP/formats/yaml.ts +14 -11
  304. package/source/HTTP/messages.test.ts +38 -28
  305. package/source/HTTP/messages.ts +44 -98
  306. package/source/Interception.ts +3 -4
  307. package/source/Introspection.ts +29 -14
  308. package/source/MCP/Server.ts +114 -54
  309. package/source/MCP/discover.ts +6 -7
  310. package/source/MCP/errors.ts +7 -8
  311. package/source/MCP/schema.test.ts +9 -3
  312. package/source/MCP/schema.ts +12 -16
  313. package/source/MCP/tools.ts +33 -27
  314. package/source/MCP/types.ts +4 -1
  315. package/source/Mapping.ts +25 -27
  316. package/source/Query.ts +58 -44
  317. package/source/RPC/Context.ts +8 -11
  318. package/source/RPC/Dispatcher.ts +46 -26
  319. package/source/RPC/errors.test.ts +41 -16
  320. package/source/RPC/errors.ts +9 -10
  321. package/source/RPC/names.test.ts +51 -32
  322. package/source/RPC/names.ts +26 -32
  323. package/source/RTD/Directives.ts +21 -10
  324. package/source/RTD/Endpoint.ts +4 -1
  325. package/source/RTD/Method.ts +8 -6
  326. package/source/RTD/Node.ts +32 -34
  327. package/source/RTD/Route.ts +18 -21
  328. package/source/RTD/Tree.ts +18 -18
  329. package/source/RTD/factory.ts +13 -16
  330. package/source/RTD/segment.ts +12 -10
  331. package/source/RTD/syntax/parse.test.ts +12 -6
  332. package/source/RTD/syntax/parse.ts +30 -26
  333. package/source/RTD/syntax/types.ts +17 -1
  334. package/source/RTD/walk.test.ts +64 -27
  335. package/source/Remotes.test.ts +25 -4
  336. package/source/Remotes.ts +9 -4
  337. package/source/Tenant.ts +12 -12
  338. package/source/deployment.ts +20 -20
  339. package/source/directives/auth/Anonymous.test.ts +8 -2
  340. package/source/directives/auth/Anonymous.ts +5 -8
  341. package/source/directives/auth/Anyone.ts +3 -3
  342. package/source/directives/auth/Assert.ts +10 -10
  343. package/source/directives/auth/Authorization.ts +83 -69
  344. package/source/directives/auth/Delegate.test.ts +2 -2
  345. package/source/directives/auth/Delegate.ts +8 -10
  346. package/source/directives/auth/Echo.ts +5 -8
  347. package/source/directives/auth/Federation.ts +30 -21
  348. package/source/directives/auth/Id.ts +7 -4
  349. package/source/directives/auth/Incept.ts +32 -26
  350. package/source/directives/auth/Input.ts +36 -20
  351. package/source/directives/auth/Role.test.ts +49 -23
  352. package/source/directives/auth/Role.ts +29 -22
  353. package/source/directives/auth/Rule.ts +13 -8
  354. package/source/directives/auth/Scheme.ts +7 -7
  355. package/source/directives/auth/create.ts +1 -1
  356. package/source/directives/auth/schemes.ts +1 -1
  357. package/source/directives/auth/split.ts +2 -3
  358. package/source/directives/auth/types.ts +5 -2
  359. package/source/directives/cache/Cache.ts +44 -9
  360. package/source/directives/cache/Control.ts +25 -26
  361. package/source/directives/cache/Exact.ts +1 -1
  362. package/source/directives/cache/etag.ts +38 -0
  363. package/source/directives/cors/CORS.ts +9 -7
  364. package/source/directives/dev/Development.ts +3 -4
  365. package/source/directives/dev/Faulty.ts +11 -6
  366. package/source/directives/dev/Sleep.ts +5 -7
  367. package/source/directives/dev/Stub.ts +2 -2
  368. package/source/directives/dev/Throw.ts +2 -2
  369. package/source/directives/flow/Compose.ts +26 -20
  370. package/source/directives/flow/Fetch.ts +15 -15
  371. package/source/directives/flow/Flow.ts +9 -8
  372. package/source/directives/index.ts +11 -2
  373. package/source/directives/io/IO.ts +29 -20
  374. package/source/directives/io/Input.ts +9 -12
  375. package/source/directives/io/Output.ts +20 -23
  376. package/source/directives/io/Status.test.ts +12 -8
  377. package/source/directives/io/Status.ts +9 -8
  378. package/source/directives/io/Throttle.ts +6 -7
  379. package/source/directives/io/lib/throttle/Configuration.test.ts +32 -23
  380. package/source/directives/io/lib/throttle/Configuration.ts +14 -9
  381. package/source/directives/io/lib/throttle/Keys.ts +15 -10
  382. package/source/directives/io/lib/throttle/Quotas.test.ts +33 -17
  383. package/source/directives/io/lib/throttle/Quotas.ts +20 -26
  384. package/source/directives/io/lib/throttle/Sync.test.ts +14 -10
  385. package/source/directives/io/lib/throttle/Sync.ts +9 -12
  386. package/source/directives/io/lib/throttle/Warning.ts +3 -4
  387. package/source/directives/io/lib/throttle/components/IP.ts +4 -5
  388. package/source/directives/io/lib/throttle/components/Identity.ts +1 -1
  389. package/source/directives/io/lib/throttle/components/Path.ts +1 -1
  390. package/source/directives/io/lib/throttle/components/Route.ts +2 -2
  391. package/source/directives/io/lib/throttle/components/Segment.ts +2 -2
  392. package/source/directives/io/lib/throttle/conditions/Status.ts +2 -2
  393. package/source/directives/io/schemas.test.ts +12 -6
  394. package/source/directives/map/Authority.ts +2 -2
  395. package/source/directives/map/Buffer.ts +2 -2
  396. package/source/directives/map/Claims.ts +25 -20
  397. package/source/directives/map/Headers.ts +17 -13
  398. package/source/directives/map/Language.ts +8 -5
  399. package/source/directives/map/Languages.ts +9 -3
  400. package/source/directives/map/Map.ts +25 -12
  401. package/source/directives/map/Mapping.ts +9 -6
  402. package/source/directives/map/Properties.ts +1 -1
  403. package/source/directives/map/Segments.ts +22 -15
  404. package/source/directives/mcp/MCP.ts +14 -5
  405. package/source/directives/mcp/Tool.test.ts +42 -6
  406. package/source/directives/mcp/Tool.ts +38 -7
  407. package/source/directives/oauth/Discovery.ts +7 -11
  408. package/source/directives/oauth/documents.ts +11 -14
  409. package/source/directives/octets/Context.ts +6 -3
  410. package/source/directives/octets/Delete.ts +33 -25
  411. package/source/directives/octets/Directive.ts +5 -1
  412. package/source/directives/octets/Get.ts +13 -21
  413. package/source/directives/octets/Octets.ts +20 -15
  414. package/source/directives/octets/Put.ts +62 -27
  415. package/source/directives/octets/Workflow.ts +18 -12
  416. package/source/directives/octets/bytes.ts +1 -1
  417. package/source/directives/octets/schemas.test.ts +8 -14
  418. package/source/directives/octets/workflows/Execution.ts +19 -21
  419. package/source/directives/octets/workflows/Workflow.ts +10 -7
  420. package/source/directives/require/Headers.ts +3 -4
  421. package/source/directives/require/Require.ts +3 -4
  422. package/source/exceptions.ts +19 -12
  423. package/source/index.ts +1 -1
  424. package/source/manifest.test.ts +4 -1
  425. package/source/manifest.ts +19 -13
  426. package/source/octets.d.ts +1 -1
  427. package/source/root.ts +3 -2
  428. package/source/schemas.test.ts +17 -3
  429. package/transpiled/Branch.js.map +1 -1
  430. package/transpiled/Composition.js.map +1 -1
  431. package/transpiled/Directive.js +6 -2
  432. package/transpiled/Directive.js.map +1 -1
  433. package/transpiled/Endpoint.d.ts +0 -2
  434. package/transpiled/Endpoint.js +11 -52
  435. package/transpiled/Endpoint.js.map +1 -1
  436. package/transpiled/Factory.d.ts +2 -1
  437. package/transpiled/Factory.js +1 -0
  438. package/transpiled/Factory.js.map +1 -1
  439. package/transpiled/Gateway.d.ts +2 -1
  440. package/transpiled/Gateway.js +24 -15
  441. package/transpiled/Gateway.js.map +1 -1
  442. package/transpiled/HTTP/Context.d.ts +0 -3
  443. package/transpiled/HTTP/Context.js +7 -9
  444. package/transpiled/HTTP/Context.js.map +1 -1
  445. package/transpiled/HTTP/Probe.js.map +1 -1
  446. package/transpiled/HTTP/Server.js +19 -4
  447. package/transpiled/HTTP/Server.js.map +1 -1
  448. package/transpiled/HTTP/Timing.d.ts +1 -2
  449. package/transpiled/HTTP/Timing.js +2 -10
  450. package/transpiled/HTTP/Timing.js.map +1 -1
  451. package/transpiled/HTTP/address.js.map +1 -1
  452. package/transpiled/HTTP/exceptions.js.map +1 -1
  453. package/transpiled/HTTP/formats/form.js.map +1 -1
  454. package/transpiled/HTTP/formats/json.js.map +1 -1
  455. package/transpiled/HTTP/formats/msgpack.js.map +1 -1
  456. package/transpiled/HTTP/formats/text.js.map +1 -1
  457. package/transpiled/HTTP/formats/yaml.js +4 -1
  458. package/transpiled/HTTP/formats/yaml.js.map +1 -1
  459. package/transpiled/HTTP/messages.d.ts +3 -2
  460. package/transpiled/HTTP/messages.js +1 -43
  461. package/transpiled/HTTP/messages.js.map +1 -1
  462. package/transpiled/Interception.js.map +1 -1
  463. package/transpiled/Introspection.d.ts +2 -0
  464. package/transpiled/Introspection.js +13 -2
  465. package/transpiled/Introspection.js.map +1 -1
  466. package/transpiled/MCP/Server.js +15 -4
  467. package/transpiled/MCP/Server.js.map +1 -1
  468. package/transpiled/MCP/discover.js.map +1 -1
  469. package/transpiled/MCP/errors.js.map +1 -1
  470. package/transpiled/MCP/schema.js +1 -1
  471. package/transpiled/MCP/schema.js.map +1 -1
  472. package/transpiled/MCP/tools.js +10 -6
  473. package/transpiled/MCP/tools.js.map +1 -1
  474. package/transpiled/MCP/types.d.ts +3 -1
  475. package/transpiled/Mapping.d.ts +2 -2
  476. package/transpiled/Mapping.js +3 -5
  477. package/transpiled/Mapping.js.map +1 -1
  478. package/transpiled/Query.d.ts +6 -2
  479. package/transpiled/Query.js +23 -8
  480. package/transpiled/Query.js.map +1 -1
  481. package/transpiled/RPC/Context.js +0 -7
  482. package/transpiled/RPC/Context.js.map +1 -1
  483. package/transpiled/RPC/Dispatcher.js +4 -1
  484. package/transpiled/RPC/Dispatcher.js.map +1 -1
  485. package/transpiled/RPC/errors.js.map +1 -1
  486. package/transpiled/RPC/names.d.ts +3 -2
  487. package/transpiled/RPC/names.js +1 -1
  488. package/transpiled/RPC/names.js.map +1 -1
  489. package/transpiled/RTD/Directives.d.ts +1 -1
  490. package/transpiled/RTD/Method.js +1 -3
  491. package/transpiled/RTD/Method.js.map +1 -1
  492. package/transpiled/RTD/Node.js +5 -4
  493. package/transpiled/RTD/Node.js.map +1 -1
  494. package/transpiled/RTD/Route.js +4 -1
  495. package/transpiled/RTD/Route.js.map +1 -1
  496. package/transpiled/RTD/Tree.js +1 -1
  497. package/transpiled/RTD/Tree.js.map +1 -1
  498. package/transpiled/RTD/factory.js.map +1 -1
  499. package/transpiled/RTD/segment.js.map +1 -1
  500. package/transpiled/RTD/syntax/parse.js.map +1 -1
  501. package/transpiled/RTD/syntax/types.d.ts +6 -0
  502. package/transpiled/RTD/syntax/types.js +10 -1
  503. package/transpiled/RTD/syntax/types.js.map +1 -1
  504. package/transpiled/Remotes.js.map +1 -1
  505. package/transpiled/Tenant.d.ts +1 -1
  506. package/transpiled/Tenant.js.map +1 -1
  507. package/transpiled/deployment.d.ts +3 -0
  508. package/transpiled/deployment.js +6 -1
  509. package/transpiled/deployment.js.map +1 -1
  510. package/transpiled/directives/auth/Anonymous.js +1 -3
  511. package/transpiled/directives/auth/Anonymous.js.map +1 -1
  512. package/transpiled/directives/auth/Anyone.js.map +1 -1
  513. package/transpiled/directives/auth/Assert.js.map +1 -1
  514. package/transpiled/directives/auth/Authorization.js +7 -3
  515. package/transpiled/directives/auth/Authorization.js.map +1 -1
  516. package/transpiled/directives/auth/Delegate.js.map +1 -1
  517. package/transpiled/directives/auth/Echo.js +1 -3
  518. package/transpiled/directives/auth/Echo.js.map +1 -1
  519. package/transpiled/directives/auth/Federation.js +3 -7
  520. package/transpiled/directives/auth/Federation.js.map +1 -1
  521. package/transpiled/directives/auth/Id.js.map +1 -1
  522. package/transpiled/directives/auth/Incept.js +1 -1
  523. package/transpiled/directives/auth/Incept.js.map +1 -1
  524. package/transpiled/directives/auth/Input.js.map +1 -1
  525. package/transpiled/directives/auth/Role.js.map +1 -1
  526. package/transpiled/directives/auth/Rule.js.map +1 -1
  527. package/transpiled/directives/auth/Scheme.js +1 -2
  528. package/transpiled/directives/auth/Scheme.js.map +1 -1
  529. package/transpiled/directives/auth/create.js.map +1 -1
  530. package/transpiled/directives/auth/schemes.js.map +1 -1
  531. package/transpiled/directives/auth/split.js.map +1 -1
  532. package/transpiled/directives/auth/types.d.ts +3 -1
  533. package/transpiled/directives/cache/Cache.js +28 -2
  534. package/transpiled/directives/cache/Cache.js.map +1 -1
  535. package/transpiled/directives/cache/Control.js +1 -1
  536. package/transpiled/directives/cache/Control.js.map +1 -1
  537. package/transpiled/directives/cache/etag.d.ts +10 -0
  538. package/transpiled/directives/cache/etag.js +30 -0
  539. package/transpiled/directives/cache/etag.js.map +1 -0
  540. package/transpiled/directives/cors/CORS.js.map +1 -1
  541. package/transpiled/directives/dev/Development.js.map +1 -1
  542. package/transpiled/directives/dev/Faulty.js.map +1 -1
  543. package/transpiled/directives/dev/Sleep.js.map +1 -1
  544. package/transpiled/directives/dev/Stub.js.map +1 -1
  545. package/transpiled/directives/dev/Throw.js.map +1 -1
  546. package/transpiled/directives/flow/Compose.js +7 -3
  547. package/transpiled/directives/flow/Compose.js.map +1 -1
  548. package/transpiled/directives/flow/Fetch.js.map +1 -1
  549. package/transpiled/directives/flow/Flow.js.map +1 -1
  550. package/transpiled/directives/index.js +11 -1
  551. package/transpiled/directives/index.js.map +1 -1
  552. package/transpiled/directives/io/IO.d.ts +1 -1
  553. package/transpiled/directives/io/IO.js.map +1 -1
  554. package/transpiled/directives/io/Input.js +1 -1
  555. package/transpiled/directives/io/Input.js.map +1 -1
  556. package/transpiled/directives/io/Output.js +3 -3
  557. package/transpiled/directives/io/Output.js.map +1 -1
  558. package/transpiled/directives/io/Status.js.map +1 -1
  559. package/transpiled/directives/io/Throttle.js +1 -1
  560. package/transpiled/directives/io/Throttle.js.map +1 -1
  561. package/transpiled/directives/io/lib/throttle/Configuration.js +8 -2
  562. package/transpiled/directives/io/lib/throttle/Configuration.js.map +1 -1
  563. package/transpiled/directives/io/lib/throttle/Keys.js.map +1 -1
  564. package/transpiled/directives/io/lib/throttle/Quotas.js +4 -3
  565. package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -1
  566. package/transpiled/directives/io/lib/throttle/Sync.d.ts +1 -1
  567. package/transpiled/directives/io/lib/throttle/Sync.js.map +1 -1
  568. package/transpiled/directives/io/lib/throttle/Warning.js.map +1 -1
  569. package/transpiled/directives/io/lib/throttle/components/IP.js.map +1 -1
  570. package/transpiled/directives/io/lib/throttle/components/Identity.js.map +1 -1
  571. package/transpiled/directives/io/lib/throttle/components/Path.js.map +1 -1
  572. package/transpiled/directives/io/lib/throttle/components/Route.js.map +1 -1
  573. package/transpiled/directives/io/lib/throttle/components/Segment.js.map +1 -1
  574. package/transpiled/directives/io/lib/throttle/conditions/Status.js.map +1 -1
  575. package/transpiled/directives/map/Authority.js.map +1 -1
  576. package/transpiled/directives/map/Buffer.js.map +1 -1
  577. package/transpiled/directives/map/Claims.js.map +1 -1
  578. package/transpiled/directives/map/Headers.js.map +1 -1
  579. package/transpiled/directives/map/Language.js.map +1 -1
  580. package/transpiled/directives/map/Languages.js.map +1 -1
  581. package/transpiled/directives/map/Map.js.map +1 -1
  582. package/transpiled/directives/map/Mapping.js.map +1 -1
  583. package/transpiled/directives/map/Properties.js.map +1 -1
  584. package/transpiled/directives/map/Segments.js.map +1 -1
  585. package/transpiled/directives/mcp/MCP.js +7 -1
  586. package/transpiled/directives/mcp/MCP.js.map +1 -1
  587. package/transpiled/directives/mcp/Tool.d.ts +6 -1
  588. package/transpiled/directives/mcp/Tool.js +16 -3
  589. package/transpiled/directives/mcp/Tool.js.map +1 -1
  590. package/transpiled/directives/oauth/Discovery.js.map +1 -1
  591. package/transpiled/directives/oauth/documents.js.map +1 -1
  592. package/transpiled/directives/octets/Context.js +1 -1
  593. package/transpiled/directives/octets/Context.js.map +1 -1
  594. package/transpiled/directives/octets/Delete.js.map +1 -1
  595. package/transpiled/directives/octets/Directive.js.map +1 -1
  596. package/transpiled/directives/octets/Get.js.map +1 -1
  597. package/transpiled/directives/octets/Octets.js +1 -1
  598. package/transpiled/directives/octets/Octets.js.map +1 -1
  599. package/transpiled/directives/octets/Put.js.map +1 -1
  600. package/transpiled/directives/octets/Workflow.js.map +1 -1
  601. package/transpiled/directives/octets/bytes.js.map +1 -1
  602. package/transpiled/directives/octets/workflows/Execution.js +1 -2
  603. package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
  604. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
  605. package/transpiled/directives/require/Headers.js.map +1 -1
  606. package/transpiled/directives/require/Require.js.map +1 -1
  607. package/transpiled/exceptions.js.map +1 -1
  608. package/transpiled/index.d.ts +1 -1
  609. package/transpiled/index.js +1 -1
  610. package/transpiled/index.js.map +1 -1
  611. package/transpiled/manifest.js +5 -1
  612. package/transpiled/manifest.js.map +1 -1
  613. package/transpiled/root.js.map +1 -1
  614. package/tsconfig.tsbuildinfo +1 -1
  615. package/CHANGELOG.md +0 -541
  616. package/source/redact.test.ts +0 -27
  617. package/source/redact.ts +0 -21
  618. package/transpiled/redact.d.ts +0 -5
  619. package/transpiled/redact.js +0 -17
  620. package/transpiled/redact.js.map +0 -1
@@ -4,7 +4,7 @@ import tsflow from 'cucumber-tsflow'
4
4
 
5
5
  import { Factory } from '@toa.io/extensions.realtime'
6
6
  import * as boot from '@toa.io/boot'
7
- import { match } from '@toa.io/generic'
7
+ import { match, timeout } from '@toa.io/generic'
8
8
  import { load as parse } from 'js-yaml'
9
9
  import { Agent } from '@toa.io/agent'
10
10
  import { Parameters } from './Parameters.js'
@@ -23,13 +23,13 @@ export class Realtime {
23
23
  private log: Record<string, unknown[]> = {}
24
24
  private aborted = false
25
25
 
26
- public constructor (gateway: Gateway, parameters: Parameters, captures: Captures) {
26
+ public constructor(gateway: Gateway, parameters: Parameters, captures: Captures) {
27
27
  this.gateway = gateway
28
28
  this.agent = new Agent(parameters.origin, captures)
29
29
  }
30
30
 
31
31
  @given('the Realtime is running with the following annotation:')
32
- public async start (yaml: string): Promise<void> {
32
+ public async start(yaml: string): Promise<void> {
33
33
  await Realtime.stop()
34
34
 
35
35
  const annotation = parse(yaml) as Record<string, string>
@@ -50,25 +50,20 @@ export class Realtime {
50
50
  }
51
51
 
52
52
  @given('the identity {word} is consuming realtime events')
53
- public async connect (name: string): Promise<void> {
53
+ public async connect(name: string): Promise<void> {
54
54
  await this.gateway.start()
55
55
 
56
56
  const id = await this.createIdentity(name)
57
57
 
58
- const parts = await this.agent.parts(`
59
- GET /realtime/streams/\${{ ${name}.id }}/ HTTP/1.1
60
- authorization: Token \${{ ${name}.token }}
61
- accept: application/json
62
- `) as AsyncIterable<Uint8Array>
58
+ const parts = await this.open(name)
63
59
 
64
60
  void this.consume(id, parts).catch((e) => {
65
- if (!this.aborted)
66
- console.debug('Consumption interrupted', e)
61
+ if (!this.aborted) console.debug('Consumption interrupted', e)
67
62
  })
68
63
  }
69
64
 
70
65
  @then('the following event `{word}` is received by {word}:')
71
- public async received (label: string, name: string, yaml: string): Promise<void> {
66
+ public async received(label: string, name: string, yaml: string): Promise<void> {
72
67
  const id = this.agent.captures.get(`${name}.id`)
73
68
  const tag = `${id}:${label}`
74
69
  const expected = parse(yaml)
@@ -76,8 +71,7 @@ export class Realtime {
76
71
  if (this.log[tag] !== undefined)
77
72
  for (const data of this.log[tag])
78
73
  // eslint-disable-next-line max-depth
79
- if (match(data, expected))
80
- return
74
+ if (match(data, expected)) return
81
75
 
82
76
  const [event] = await once(this.events, tag)
83
77
 
@@ -85,7 +79,7 @@ export class Realtime {
85
79
  }
86
80
 
87
81
  @after()
88
- public abort (): void {
82
+ public abort(): void {
89
83
  this.aborted = true
90
84
  this.agent.abort()
91
85
  this.log = {}
@@ -93,9 +87,8 @@ export class Realtime {
93
87
  }
94
88
 
95
89
  @afterAll()
96
- public static async stop (): Promise<void> {
97
- if (this.instance === null)
98
- return
90
+ public static async stop(): Promise<void> {
91
+ if (this.instance === null) return
99
92
 
100
93
  await this.instance.disconnect()
101
94
 
@@ -103,7 +96,30 @@ export class Realtime {
103
96
  process.env.TOA_REALTIME = undefined
104
97
  }
105
98
 
106
- private async createIdentity (name: string): Promise<string> {
99
+ /**
100
+ * The stream is asked for until the gateway has the route, not once. The realtime service
101
+ * is started by the step before this one and its `connect` is not awaited there — so the
102
+ * branch that carries `/realtime/streams` is still being announced while this runs, and
103
+ * asking too early reads the 404 that precedes the route.
104
+ */
105
+ private async open(name: string): Promise<AsyncIterable<Uint8Array>> {
106
+ const deadline = Date.now() + DISCOVERY
107
+
108
+ for (;;)
109
+ try {
110
+ return (await this.agent.parts(`
111
+ GET /realtime/streams/\${{ ${name}.id }}/ HTTP/1.1
112
+ authorization: Token \${{ ${name}.token }}
113
+ accept: application/json
114
+ `)) as AsyncIterable<Uint8Array>
115
+ } catch (error) {
116
+ if (Date.now() > deadline) throw error
117
+
118
+ await timeout(POLL)
119
+ }
120
+ }
121
+
122
+ private async createIdentity(name: string): Promise<string> {
107
123
  const password = Math.random().toString(36).slice(2)
108
124
  const username = name + Math.random().toString(36).slice(2)
109
125
 
@@ -138,13 +154,12 @@ export class Realtime {
138
154
  return this.agent.captures.get(`${name}.id`) as string
139
155
  }
140
156
 
141
- private async consume (id: string, parts: any): Promise<void> {
157
+ private async consume(id: string, parts: any): Promise<void> {
142
158
  for await (const part of parts) {
143
159
  const text = Buffer.from(part.body).toString('utf8')
144
160
  const event = JSON.parse(text)
145
161
 
146
- if (typeof event === 'string')
147
- continue
162
+ if (typeof event === 'string') continue
148
163
 
149
164
  const tag = `${id}:${event.event}`
150
165
 
@@ -155,3 +170,6 @@ export class Realtime {
155
170
  }
156
171
  }
157
172
 
173
+ /** How long the route is waited for, and how often it is asked for. */
174
+ const DISCOVERY = 5000
175
+ const POLL = 50
@@ -7,12 +7,16 @@ import { overwrite } from '@toa.io/generic'
7
7
  export class Workspace {
8
8
  private root: string = devNull
9
9
 
10
- public static exists (_0: unknown, _1: unknown, descriptor: PropertyDescriptor): PropertyDescriptor {
10
+ public static exists(
11
+ _0: unknown,
12
+ _1: unknown,
13
+ descriptor: PropertyDescriptor
14
+ ): PropertyDescriptor {
11
15
  const method = descriptor.value
12
16
 
13
17
  descriptor.value = async function (this: Workspace, ...args: any[]): Promise<any> {
14
- if (this.root === devNull) this.root =
15
- await mkdtemp(join(tmpdir(), Math.random().toString(36).slice(2)))
18
+ if (this.root === devNull)
19
+ this.root = await mkdtemp(join(tmpdir(), Math.random().toString(36).slice(2)))
16
20
 
17
21
  return method.apply(this, args)
18
22
  }
@@ -21,19 +25,18 @@ export class Workspace {
21
25
  }
22
26
 
23
27
  @Workspace.exists
24
- public async addComponent (name: string, patch?: object): Promise<string> {
28
+ public async addComponent(name: string, patch?: object): Promise<string> {
25
29
  const source = join(import.meta.dirname, 'components', name)
26
30
  const target = join(this.root, name)
27
31
 
28
32
  await cp(source, target, { force: true, recursive: true })
29
33
 
30
- if (patch !== undefined)
31
- await this.patchManifest(target, patch)
34
+ if (patch !== undefined) await this.patchManifest(target, patch)
32
35
 
33
36
  return target
34
37
  }
35
38
 
36
- private async patchManifest (target: string, patch: object): Promise<void> {
39
+ private async patchManifest(target: string, patch: object): Promise<void> {
37
40
  const path = join(target, 'manifest.toa.yaml')
38
41
 
39
42
  const manifest = load(await readFile(path, 'utf8')) as object
@@ -1,4 +1,4 @@
1
- export async function effect (input) {
1
+ export async function effect(input) {
2
2
  await new Promise((resolve) => setTimeout(resolve, 500))
3
3
 
4
4
  return null
@@ -1,3 +1,3 @@
1
- export function effect (input) {
1
+ export function effect(input) {
2
2
  return `Hello ${input.name}`
3
3
  }
@@ -1,3 +1,3 @@
1
- export function computation (input) {
1
+ export function computation(input) {
2
2
  return `Hello ${input.name}`
3
3
  }
@@ -1,3 +1,3 @@
1
- export function computation (input) {
1
+ export function computation(input) {
2
2
  return input
3
3
  }
@@ -1,4 +1,4 @@
1
- export function computation () {
1
+ export function computation() {
2
2
  const err = { code: 'CODE', message: 'message' }
3
3
 
4
4
  Object.setPrototypeOf(err, Error.prototype)
@@ -1,3 +1,3 @@
1
- export function computation (input) {
1
+ export function computation(input) {
2
2
  return input
3
3
  }
@@ -1,3 +1,3 @@
1
- export function computation (input) {
1
+ export function computation(input) {
2
2
  return input
3
3
  }
@@ -1,3 +1,3 @@
1
- export function computation () {
1
+ export function computation() {
2
2
  return 'pong'
3
3
  }
@@ -1,3 +1,3 @@
1
- export function computation (input) {
1
+ export function computation(input) {
2
2
  return JSON.parse(input.buf)
3
3
  }
@@ -1,3 +1,3 @@
1
- export function computation () {
1
+ export function computation() {
2
2
  return 'Hello'
3
3
  }
@@ -1,4 +1,4 @@
1
- export async function effect (input) {
1
+ export async function effect(input) {
2
2
  await new Promise((resolve) => setTimeout(resolve, 800))
3
3
 
4
4
  return null
@@ -1,3 +1,3 @@
1
- export function computation (input) {
1
+ export function computation(input) {
2
2
  return input.authority
3
3
  }
@@ -1,6 +1,6 @@
1
1
  import { setTimeout } from 'node:timers/promises'
2
2
 
3
- async function bar (input, context) {
3
+ async function bar(input, context) {
4
4
  await setTimeout(10)
5
5
 
6
6
  return { bar: 'baz' }
@@ -1,6 +1,6 @@
1
1
  import { setTimeout } from 'node:timers/promises'
2
2
 
3
- async function baz (input, context) {
3
+ async function baz(input, context) {
4
4
  await setTimeout(30)
5
5
 
6
6
  return input.steps ?? null
@@ -1,4 +1,4 @@
1
- function concat (input) {
1
+ function concat(input) {
2
2
  return input.parameters.a + ' ' + input.parameters.b
3
3
  }
4
4
 
@@ -1,4 +1,4 @@
1
- function echo (input) {
1
+ function echo(input) {
2
2
  return input
3
3
  }
4
4
 
@@ -1,6 +1,6 @@
1
1
  import { setTimeout } from 'node:timers/promises'
2
2
 
3
- async function err (_) {
3
+ async function err(_) {
4
4
  await setTimeout(20)
5
5
 
6
6
  const err = Object.create(Error.prototype)
@@ -1,4 +1,4 @@
1
- async function foo (input, context) {
1
+ async function foo(input, context) {
2
2
  return { foo: 'bar' }
3
3
  }
4
4
 
@@ -1,4 +1,4 @@
1
- function id (input) {
1
+ function id(input) {
2
2
  return input.entry.id
3
3
  }
4
4
 
@@ -1,4 +1,4 @@
1
- function identity (input) {
1
+ function identity(input) {
2
2
  return input.identity
3
3
  }
4
4
 
@@ -1,5 +1,7 @@
1
- function redirect (input) {
2
- return input.parameters.type in urls ? { url: urls[input.parameters.type] } : ERR_UNKNOWN
1
+ function redirect(input) {
2
+ return input.parameters.type in urls
3
+ ? { url: urls[input.parameters.type] }
4
+ : ERR_UNKNOWN
3
5
  }
4
6
 
5
7
  // an error a caller is meant to see carries a code, always
@@ -8,8 +10,8 @@ const ERR_UNKNOWN = new (class UnknownError extends Error {
8
10
  })()
9
11
 
10
12
  const urls = {
11
- 'rfc': 'https://www.rfc-editor.org/rfc/rfc9564.txt',
12
- 'img': 'https://www.w3.org/assets/logos/w3c/w3c-no-bars.svg'
13
+ rfc: 'https://www.rfc-editor.org/rfc/rfc9564.txt',
14
+ img: 'https://www.w3.org/assets/logos/w3c/w3c-no-bars.svg'
13
15
  }
14
16
 
15
17
  export { redirect as computation }
@@ -1,6 +1,6 @@
1
1
  import { setTimeout } from 'node:timers/promises'
2
2
 
3
- async function * effect (_) {
3
+ async function* effect(_) {
4
4
  await setTimeout(10)
5
5
  yield 'hello'
6
6
 
@@ -1,6 +1,6 @@
1
1
  import { setTimeout } from 'node:timers/promises'
2
2
 
3
- async function * effect (_) {
3
+ async function* effect(_) {
4
4
  await setTimeout(10)
5
5
  yield 'hello'
6
6
 
@@ -1,18 +1,16 @@
1
1
  name: orders
2
2
 
3
3
  entity:
4
- schema:
5
- properties:
6
- title:
7
- type: string
8
- volume:
9
- type: number
10
- price:
11
- type: number
12
- type: object
13
- required:
14
- - title
15
- - volume
4
+ properties:
5
+ title:
6
+ type: string
7
+ volume:
8
+ type: number
9
+ price:
10
+ type: number
11
+ required:
12
+ - title
13
+ - volume
16
14
 
17
15
  operations:
18
16
  create:
@@ -1,5 +1,7 @@
1
- export async function transition (input, object, context) {
2
- const price = await context.remote.default.pricing.quote({ input: { volume: input.volume } })
1
+ export async function transition(input, object, context) {
2
+ const price = await context.remote.default.pricing.quote({
3
+ input: { volume: input.volume }
4
+ })
3
5
 
4
6
  return Object.assign(object, { ...input, price })
5
7
  }
@@ -1,26 +1,21 @@
1
1
  name: pots
2
2
 
3
3
  entity:
4
- schema:
5
- properties:
6
- title:
7
- type: string
8
- maxLength: 64
9
- volume:
10
- type: number
11
- exclusiveMinimum: 0
12
- maximum: 1000
13
- temperature:
14
- type: number
15
- exclusiveMinimum: 0
16
- maximum: 300
17
- type: object
18
- required:
19
- - title
20
- - volume
21
- index:
22
- text:
23
- title: text
4
+ properties:
5
+ title:
6
+ type: string
7
+ maxLength: 64
8
+ volume:
9
+ type: number
10
+ exclusiveMinimum: 0
11
+ maximum: 1000
12
+ temperature:
13
+ type: number
14
+ exclusiveMinimum: 0
15
+ maximum: 300
16
+ required:
17
+ - title
18
+ - volume
24
19
 
25
20
  operations:
26
21
  create:
@@ -0,0 +1,4 @@
1
+ - index:
2
+ name: index_text
3
+ keys:
4
+ title: text
@@ -1,3 +1,3 @@
1
- export async function computation (input) {
1
+ export async function computation(input) {
2
2
  return input.volume * 42
3
3
  }
@@ -4,7 +4,6 @@ operations:
4
4
  numbers:
5
5
  input:
6
6
  type: number
7
- default: 5
8
7
 
9
8
  exposition:
10
9
  /tokens:
@@ -1,4 +1,4 @@
1
- function * effect (amount) {
1
+ function* effect(amount) {
2
2
  for (let i = 0; i < amount; i++) yield i
3
3
  }
4
4
 
@@ -1,14 +1,14 @@
1
1
  import { randomBytes } from 'node:crypto'
2
2
 
3
- async function * computation () {
3
+ async function* computation() {
4
4
  while (true) {
5
5
  await timeout(Math.floor(Math.random() * 100) + 10)
6
6
  yield randomBytes(4).toString('hex')
7
7
  }
8
8
  }
9
9
 
10
- function timeout (ms) {
11
- return new Promise(resolve => setTimeout(resolve, ms))
10
+ function timeout(ms) {
11
+ return new Promise((resolve) => setTimeout(resolve, ms))
12
12
  }
13
13
 
14
14
  export { computation }
@@ -1,11 +1,9 @@
1
1
  name: users
2
2
 
3
3
  entity:
4
- schema:
5
- properties:
6
- name:
7
- type: string
8
- type: object
4
+ properties:
5
+ name:
6
+ type: string
9
7
 
10
8
  operations:
11
9
  transit:
@@ -1,4 +1,4 @@
1
- export function transition (input, object) {
1
+ export function transition(input, object) {
2
2
  if (input.name === 'return_error') {
3
3
  const e = new Error()
4
4
 
@@ -2,13 +2,12 @@ namespace: users
2
2
  name: properties
3
3
 
4
4
  entity:
5
- schema:
6
- properties:
7
- newbie:
8
- type: boolean
9
- default: false
10
- type: object
11
5
  associated: true
6
+ properties:
7
+ newbie:
8
+ type: boolean
9
+ blank:
10
+ newbie: false
12
11
 
13
12
  operations:
14
13
  transit:
@@ -12,14 +12,14 @@ const COMPONENTS = ['introspection.nodes', 'introspection.edges']
12
12
  * The map's own components, as the introspection package ships them. Mounted rather
13
13
  * than copied on purpose: a scenario about a manifest must read that manifest.
14
14
  */
15
- export function components (): string[] {
15
+ export function components(): string[] {
16
16
  const root = dirname(require.resolve(PACKAGE + '/package.json'))
17
17
 
18
18
  return COMPONENTS.map((name) => join(root, 'components', name))
19
19
  }
20
20
 
21
21
  /** `norm` declares `component` as a namespace of types; the runtime export is a function. */
22
- export async function manifests (): Promise<Manifest[]> {
22
+ export async function manifests(): Promise<Manifest[]> {
23
23
  const { component } = norm as unknown as Norm
24
24
 
25
25
  return await Promise.all(components().map(async (path) => await component(path)))
@@ -37,5 +37,5 @@ Feature: Entity timestamp
37
37
  """
38
38
  200 OK
39
39
  last-modified: ${{ created }}
40
- content-length: 149
40
+ content-length: 145
41
41
  """
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@toa.io/extensions.exposition",
3
- "version": "1.0.0-alpha.284",
3
+ "version": "1.0.0-alpha.286",
4
4
  "type": "module",
5
5
  "description": "Toa Exposition",
6
6
  "author": "temich <tema.gurtovoy@gmail.com>",
@@ -18,11 +18,11 @@
18
18
  "access": "public"
19
19
  },
20
20
  "dependencies": {
21
+ "@node-rs/bcrypt": "1.10.8",
21
22
  "@simplewebauthn/server": "14.0.0",
22
- "@toa.io/core": "1.0.0-alpha.284",
23
- "@toa.io/generic": "1.0.0-alpha.283",
24
- "@toa.io/schemas": "1.0.0-alpha.283",
25
- "bcryptjs": "3.0.3",
23
+ "@toa.io/core": "1.0.0-alpha.286",
24
+ "@toa.io/generic": "1.0.0-alpha.286",
25
+ "@toa.io/schemas": "1.0.0-alpha.286",
26
26
  "content-type": "3.0.0",
27
27
  "jose": "6.2.10",
28
28
  "js-yaml": "5.4.1",
@@ -31,7 +31,7 @@
31
31
  "minimatch": "10.2.6",
32
32
  "msgpackr": "2.1.0",
33
33
  "negotiator": "1.1.0",
34
- "openspan": "1.0.0-alpha.277",
34
+ "openspan": "1.0.0-alpha.286",
35
35
  "paseto": "4.0.0"
36
36
  },
37
37
  "scripts": {
@@ -58,5 +58,5 @@
58
58
  "@types/cors": "2.8.19",
59
59
  "@types/negotiator": "0.6.5"
60
60
  },
61
- "gitHead": "006755556879e91e8d68fa86753aa3b475bdf4bf"
61
+ "gitHead": "81f3d0688f17668b902be336d1749cc715edcdb6"
62
62
  }
package/readme.md CHANGED
@@ -130,18 +130,18 @@ exposition:
130
130
  example: the.example.com
131
131
  ```
132
132
 
133
- | Option | Description |
134
- |---------------|-------------------------------------------------------------------------------------------------------------------|
135
- | `auhorities` | Mapping of authority identifiers to domain names. See [Authorities](documentation/authorities.md). |
136
- | `class` | Ingress class. |
137
- | `annotations` | Ingress annotations. |
138
- | `debug` | Output server errors. Default `false`. |
139
- | `ip` | Header the client address is read from. See [Client address](documentation/ip.md). |
133
+ | Option | Description |
134
+ | ------------- | ----------------------------------------------------------------------------------------------------------------------------- |
135
+ | `auhorities` | Mapping of authority identifiers to domain names. See [Authorities](documentation/authorities.md). |
136
+ | `class` | Ingress class. |
137
+ | `annotations` | Ingress annotations. |
138
+ | `debug` | Output server errors. Default `false`. |
139
+ | `ip` | Header the client address is read from. See [Client address](documentation/ip.md). |
140
140
  | `bouncer` | Meter of failed authentications per address. See [Identity authentication](documentation/identity.md#failed-authentications). |
141
- | `oauth` | Authorization server exposed to OAuth clients. See [OAuth](documentation/oauth.md). |
142
- | `protocol` | `h1` or `h2c`. See [Protocol](documentation/protocol.md). |
143
- | `rpc` | JSON-RPC at `/.rpc`; none is served without it. See [JSON-RPC](documentation/rpc.md). |
144
- | `mcp` | MCP at `/.mcp`; none is served without it. See [MCP](documentation/mcp.md). |
141
+ | `oauth` | Authorization server exposed to OAuth clients. See [OAuth](documentation/oauth.md). |
142
+ | `protocol` | `h1` or `h2c`. See [Protocol](documentation/protocol.md). |
143
+ | `rpc` | JSON-RPC at `/.rpc`; none is served without it. See [JSON-RPC](documentation/rpc.md). |
144
+ | `mcp` | MCP at `/.mcp`; none is served without it. See [MCP](documentation/mcp.md). |
145
145
 
146
146
  ### Observability
147
147