@toa.io/extensions.exposition 1.0.0-alpha.285 → 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 (611) 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 +16 -16
  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 +31 -21
  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/octets.cloudinary.feature +1 -1
  223. package/features/octets.download.feature +1 -0
  224. package/features/require.feature +1 -2
  225. package/features/steps/Captures.ts +1 -1
  226. package/features/steps/Cloudinary.ts +1 -2
  227. package/features/steps/Common.ts +4 -5
  228. package/features/steps/Components.ts +17 -12
  229. package/features/steps/Database.ts +42 -23
  230. package/features/steps/Gateway.ts +55 -72
  231. package/features/steps/HTTP.ts +12 -15
  232. package/features/steps/IDP.ts +118 -94
  233. package/features/steps/Identity.ts +3 -3
  234. package/features/steps/OTP.ts +3 -3
  235. package/features/steps/Parameters.ts +20 -10
  236. package/features/steps/Probe.ts +9 -7
  237. package/features/steps/Realtime.ts +40 -22
  238. package/features/steps/Workspace.ts +10 -7
  239. package/features/steps/components/audit/operations/record.js +1 -1
  240. package/features/steps/components/echo/operations/affect.js +1 -1
  241. package/features/steps/components/echo/operations/compute.js +1 -1
  242. package/features/steps/components/echo/operations/echo.js +1 -1
  243. package/features/steps/components/echo/operations/error.js +1 -1
  244. package/features/steps/components/echo/operations/identity.js +1 -1
  245. package/features/steps/components/echo/operations/parameters.js +1 -1
  246. package/features/steps/components/echo/operations/ping.js +1 -1
  247. package/features/steps/components/echo/operations/unwrap.js +1 -1
  248. package/features/steps/components/greeter/operations/greet.js +1 -1
  249. package/features/steps/components/notify/operations/send.js +1 -1
  250. package/features/steps/components/octets.tester/operations/authority.js +1 -1
  251. package/features/steps/components/octets.tester/operations/bar.js +1 -1
  252. package/features/steps/components/octets.tester/operations/baz.js +1 -1
  253. package/features/steps/components/octets.tester/operations/concat.js +1 -1
  254. package/features/steps/components/octets.tester/operations/echo.js +1 -1
  255. package/features/steps/components/octets.tester/operations/err.js +1 -1
  256. package/features/steps/components/octets.tester/operations/foo.js +1 -1
  257. package/features/steps/components/octets.tester/operations/id.js +1 -1
  258. package/features/steps/components/octets.tester/operations/identity.js +1 -1
  259. package/features/steps/components/octets.tester/operations/redirect.js +6 -4
  260. package/features/steps/components/octets.tester/operations/yex.js +1 -1
  261. package/features/steps/components/octets.tester/operations/yield.js +1 -1
  262. package/features/steps/components/orders/manifest.toa.yaml +10 -12
  263. package/features/steps/components/orders/operations/create.js +4 -2
  264. package/features/steps/components/pots/manifest.toa.yaml +15 -20
  265. package/features/steps/components/pots/migrations/0002-indexes.yaml +4 -0
  266. package/features/steps/components/pricing/operations/quote.js +1 -1
  267. package/features/steps/components/sequences/manifest.toa.yaml +0 -1
  268. package/features/steps/components/sequences/operations/numbers.js +1 -1
  269. package/features/steps/components/sequences/operations/tokens.js +3 -3
  270. package/features/steps/components/users/manifest.toa.yaml +3 -5
  271. package/features/steps/components/users/operations/create.js +1 -1
  272. package/features/steps/components/users.properties/manifest.toa.yaml +5 -6
  273. package/features/steps/map.ts +2 -2
  274. package/features/timestamps.feature +1 -1
  275. package/package.json +7 -7
  276. package/readme.md +11 -11
  277. package/schemas/annotation.cos.yaml +1 -3
  278. package/schemas/method.cos.yaml +2 -0
  279. package/source/Branch.test.ts +2 -2
  280. package/source/Branch.ts +3 -5
  281. package/source/Composition.ts +5 -5
  282. package/source/Directive.test.ts +38 -20
  283. package/source/Directive.ts +61 -47
  284. package/source/Endpoint.test.ts +1 -1
  285. package/source/Endpoint.ts +27 -92
  286. package/source/Factory.ts +26 -12
  287. package/source/Gateway.ts +87 -76
  288. package/source/HTTP/Context.ts +23 -30
  289. package/source/HTTP/Probe.ts +7 -9
  290. package/source/HTTP/Server.ts +88 -69
  291. package/source/HTTP/Timing.ts +6 -21
  292. package/source/HTTP/address.test.ts +8 -2
  293. package/source/HTTP/address.ts +2 -3
  294. package/source/HTTP/exceptions.ts +20 -18
  295. package/source/HTTP/formats/form.ts +1 -1
  296. package/source/HTTP/formats/json.ts +2 -2
  297. package/source/HTTP/formats/msgpack.ts +3 -4
  298. package/source/HTTP/formats/text.ts +2 -2
  299. package/source/HTTP/formats/yaml.test.ts +4 -1
  300. package/source/HTTP/formats/yaml.ts +14 -11
  301. package/source/HTTP/messages.test.ts +38 -28
  302. package/source/HTTP/messages.ts +44 -98
  303. package/source/Interception.ts +3 -4
  304. package/source/Introspection.ts +26 -14
  305. package/source/MCP/Server.ts +114 -54
  306. package/source/MCP/discover.ts +6 -7
  307. package/source/MCP/errors.ts +7 -8
  308. package/source/MCP/schema.test.ts +9 -3
  309. package/source/MCP/schema.ts +12 -16
  310. package/source/MCP/tools.ts +33 -28
  311. package/source/Mapping.ts +25 -27
  312. package/source/Query.ts +58 -44
  313. package/source/RPC/Context.ts +8 -11
  314. package/source/RPC/Dispatcher.ts +46 -26
  315. package/source/RPC/errors.test.ts +41 -16
  316. package/source/RPC/errors.ts +9 -10
  317. package/source/RPC/names.test.ts +35 -16
  318. package/source/RPC/names.ts +22 -29
  319. package/source/RTD/Directives.ts +21 -10
  320. package/source/RTD/Endpoint.ts +4 -1
  321. package/source/RTD/Method.ts +8 -6
  322. package/source/RTD/Node.ts +32 -34
  323. package/source/RTD/Route.ts +18 -21
  324. package/source/RTD/Tree.ts +18 -18
  325. package/source/RTD/factory.ts +13 -16
  326. package/source/RTD/segment.ts +12 -10
  327. package/source/RTD/syntax/parse.test.ts +12 -6
  328. package/source/RTD/syntax/parse.ts +30 -26
  329. package/source/RTD/syntax/types.ts +17 -1
  330. package/source/RTD/walk.test.ts +59 -22
  331. package/source/Remotes.test.ts +25 -4
  332. package/source/Remotes.ts +9 -4
  333. package/source/Tenant.ts +12 -12
  334. package/source/deployment.ts +20 -20
  335. package/source/directives/auth/Anonymous.test.ts +8 -2
  336. package/source/directives/auth/Anonymous.ts +5 -8
  337. package/source/directives/auth/Anyone.ts +3 -3
  338. package/source/directives/auth/Assert.ts +10 -10
  339. package/source/directives/auth/Authorization.ts +83 -69
  340. package/source/directives/auth/Delegate.test.ts +2 -2
  341. package/source/directives/auth/Delegate.ts +8 -10
  342. package/source/directives/auth/Echo.ts +5 -8
  343. package/source/directives/auth/Federation.ts +30 -21
  344. package/source/directives/auth/Id.ts +7 -4
  345. package/source/directives/auth/Incept.ts +32 -26
  346. package/source/directives/auth/Input.ts +36 -20
  347. package/source/directives/auth/Role.test.ts +49 -23
  348. package/source/directives/auth/Role.ts +29 -22
  349. package/source/directives/auth/Rule.ts +13 -8
  350. package/source/directives/auth/Scheme.ts +7 -7
  351. package/source/directives/auth/create.ts +1 -1
  352. package/source/directives/auth/schemes.ts +1 -1
  353. package/source/directives/auth/split.ts +2 -3
  354. package/source/directives/auth/types.ts +5 -2
  355. package/source/directives/cache/Cache.ts +44 -9
  356. package/source/directives/cache/Control.ts +25 -26
  357. package/source/directives/cache/Exact.ts +1 -1
  358. package/source/directives/cache/etag.ts +38 -0
  359. package/source/directives/cors/CORS.ts +9 -7
  360. package/source/directives/dev/Development.ts +3 -4
  361. package/source/directives/dev/Faulty.ts +11 -6
  362. package/source/directives/dev/Sleep.ts +5 -7
  363. package/source/directives/dev/Stub.ts +2 -2
  364. package/source/directives/dev/Throw.ts +2 -2
  365. package/source/directives/flow/Compose.ts +26 -20
  366. package/source/directives/flow/Fetch.ts +15 -15
  367. package/source/directives/flow/Flow.ts +9 -8
  368. package/source/directives/index.ts +11 -2
  369. package/source/directives/io/IO.ts +29 -20
  370. package/source/directives/io/Input.ts +9 -12
  371. package/source/directives/io/Output.ts +20 -23
  372. package/source/directives/io/Status.test.ts +12 -8
  373. package/source/directives/io/Status.ts +9 -8
  374. package/source/directives/io/Throttle.ts +6 -7
  375. package/source/directives/io/lib/throttle/Configuration.test.ts +32 -23
  376. package/source/directives/io/lib/throttle/Configuration.ts +14 -9
  377. package/source/directives/io/lib/throttle/Keys.ts +15 -10
  378. package/source/directives/io/lib/throttle/Quotas.test.ts +33 -17
  379. package/source/directives/io/lib/throttle/Quotas.ts +20 -26
  380. package/source/directives/io/lib/throttle/Sync.test.ts +14 -10
  381. package/source/directives/io/lib/throttle/Sync.ts +9 -12
  382. package/source/directives/io/lib/throttle/Warning.ts +3 -4
  383. package/source/directives/io/lib/throttle/components/IP.ts +4 -5
  384. package/source/directives/io/lib/throttle/components/Identity.ts +1 -1
  385. package/source/directives/io/lib/throttle/components/Path.ts +1 -1
  386. package/source/directives/io/lib/throttle/components/Route.ts +2 -2
  387. package/source/directives/io/lib/throttle/components/Segment.ts +2 -2
  388. package/source/directives/io/lib/throttle/conditions/Status.ts +2 -2
  389. package/source/directives/io/schemas.test.ts +12 -6
  390. package/source/directives/map/Authority.ts +2 -2
  391. package/source/directives/map/Buffer.ts +2 -2
  392. package/source/directives/map/Claims.ts +25 -20
  393. package/source/directives/map/Headers.ts +17 -13
  394. package/source/directives/map/Language.ts +8 -5
  395. package/source/directives/map/Languages.ts +9 -3
  396. package/source/directives/map/Map.ts +25 -12
  397. package/source/directives/map/Mapping.ts +9 -6
  398. package/source/directives/map/Properties.ts +1 -1
  399. package/source/directives/map/Segments.ts +22 -15
  400. package/source/directives/mcp/MCP.ts +9 -7
  401. package/source/directives/mcp/Tool.test.ts +21 -9
  402. package/source/directives/mcp/Tool.ts +23 -11
  403. package/source/directives/oauth/Discovery.ts +7 -11
  404. package/source/directives/oauth/documents.ts +11 -14
  405. package/source/directives/octets/Context.ts +6 -3
  406. package/source/directives/octets/Delete.ts +33 -25
  407. package/source/directives/octets/Directive.ts +5 -1
  408. package/source/directives/octets/Get.ts +13 -21
  409. package/source/directives/octets/Octets.ts +20 -15
  410. package/source/directives/octets/Put.ts +62 -27
  411. package/source/directives/octets/Workflow.ts +18 -12
  412. package/source/directives/octets/bytes.ts +1 -1
  413. package/source/directives/octets/schemas.test.ts +8 -14
  414. package/source/directives/octets/workflows/Execution.ts +19 -21
  415. package/source/directives/octets/workflows/Workflow.ts +10 -7
  416. package/source/directives/require/Headers.ts +3 -4
  417. package/source/directives/require/Require.ts +3 -4
  418. package/source/exceptions.ts +19 -12
  419. package/source/index.ts +1 -1
  420. package/source/manifest.test.ts +4 -1
  421. package/source/manifest.ts +19 -13
  422. package/source/octets.d.ts +1 -1
  423. package/source/root.ts +3 -2
  424. package/source/schemas.test.ts +17 -3
  425. package/transpiled/Branch.js.map +1 -1
  426. package/transpiled/Composition.js.map +1 -1
  427. package/transpiled/Directive.js +6 -2
  428. package/transpiled/Directive.js.map +1 -1
  429. package/transpiled/Endpoint.d.ts +0 -2
  430. package/transpiled/Endpoint.js +11 -52
  431. package/transpiled/Endpoint.js.map +1 -1
  432. package/transpiled/Factory.d.ts +2 -1
  433. package/transpiled/Factory.js +1 -0
  434. package/transpiled/Factory.js.map +1 -1
  435. package/transpiled/Gateway.d.ts +2 -1
  436. package/transpiled/Gateway.js +24 -15
  437. package/transpiled/Gateway.js.map +1 -1
  438. package/transpiled/HTTP/Context.d.ts +0 -3
  439. package/transpiled/HTTP/Context.js +7 -9
  440. package/transpiled/HTTP/Context.js.map +1 -1
  441. package/transpiled/HTTP/Probe.js.map +1 -1
  442. package/transpiled/HTTP/Server.js +19 -4
  443. package/transpiled/HTTP/Server.js.map +1 -1
  444. package/transpiled/HTTP/Timing.d.ts +1 -2
  445. package/transpiled/HTTP/Timing.js +2 -10
  446. package/transpiled/HTTP/Timing.js.map +1 -1
  447. package/transpiled/HTTP/address.js.map +1 -1
  448. package/transpiled/HTTP/exceptions.js.map +1 -1
  449. package/transpiled/HTTP/formats/form.js.map +1 -1
  450. package/transpiled/HTTP/formats/json.js.map +1 -1
  451. package/transpiled/HTTP/formats/msgpack.js.map +1 -1
  452. package/transpiled/HTTP/formats/text.js.map +1 -1
  453. package/transpiled/HTTP/formats/yaml.js +4 -1
  454. package/transpiled/HTTP/formats/yaml.js.map +1 -1
  455. package/transpiled/HTTP/messages.d.ts +3 -2
  456. package/transpiled/HTTP/messages.js +1 -43
  457. package/transpiled/HTTP/messages.js.map +1 -1
  458. package/transpiled/Interception.js.map +1 -1
  459. package/transpiled/Introspection.js +13 -2
  460. package/transpiled/Introspection.js.map +1 -1
  461. package/transpiled/MCP/Server.js +15 -4
  462. package/transpiled/MCP/Server.js.map +1 -1
  463. package/transpiled/MCP/discover.js.map +1 -1
  464. package/transpiled/MCP/errors.js.map +1 -1
  465. package/transpiled/MCP/schema.js +1 -1
  466. package/transpiled/MCP/schema.js.map +1 -1
  467. package/transpiled/MCP/tools.js +10 -7
  468. package/transpiled/MCP/tools.js.map +1 -1
  469. package/transpiled/Mapping.d.ts +2 -2
  470. package/transpiled/Mapping.js +3 -5
  471. package/transpiled/Mapping.js.map +1 -1
  472. package/transpiled/Query.d.ts +6 -2
  473. package/transpiled/Query.js +23 -8
  474. package/transpiled/Query.js.map +1 -1
  475. package/transpiled/RPC/Context.js +0 -7
  476. package/transpiled/RPC/Context.js.map +1 -1
  477. package/transpiled/RPC/Dispatcher.js +4 -1
  478. package/transpiled/RPC/Dispatcher.js.map +1 -1
  479. package/transpiled/RPC/errors.js.map +1 -1
  480. package/transpiled/RPC/names.js.map +1 -1
  481. package/transpiled/RTD/Directives.d.ts +1 -1
  482. package/transpiled/RTD/Method.js +1 -3
  483. package/transpiled/RTD/Method.js.map +1 -1
  484. package/transpiled/RTD/Node.js +5 -4
  485. package/transpiled/RTD/Node.js.map +1 -1
  486. package/transpiled/RTD/Route.js +4 -1
  487. package/transpiled/RTD/Route.js.map +1 -1
  488. package/transpiled/RTD/Tree.js +1 -1
  489. package/transpiled/RTD/Tree.js.map +1 -1
  490. package/transpiled/RTD/factory.js.map +1 -1
  491. package/transpiled/RTD/segment.js.map +1 -1
  492. package/transpiled/RTD/syntax/parse.js.map +1 -1
  493. package/transpiled/RTD/syntax/types.d.ts +6 -0
  494. package/transpiled/RTD/syntax/types.js +10 -1
  495. package/transpiled/RTD/syntax/types.js.map +1 -1
  496. package/transpiled/Remotes.js.map +1 -1
  497. package/transpiled/Tenant.d.ts +1 -1
  498. package/transpiled/Tenant.js.map +1 -1
  499. package/transpiled/deployment.d.ts +3 -0
  500. package/transpiled/deployment.js +6 -1
  501. package/transpiled/deployment.js.map +1 -1
  502. package/transpiled/directives/auth/Anonymous.js +1 -3
  503. package/transpiled/directives/auth/Anonymous.js.map +1 -1
  504. package/transpiled/directives/auth/Anyone.js.map +1 -1
  505. package/transpiled/directives/auth/Assert.js.map +1 -1
  506. package/transpiled/directives/auth/Authorization.js +7 -3
  507. package/transpiled/directives/auth/Authorization.js.map +1 -1
  508. package/transpiled/directives/auth/Delegate.js.map +1 -1
  509. package/transpiled/directives/auth/Echo.js +1 -3
  510. package/transpiled/directives/auth/Echo.js.map +1 -1
  511. package/transpiled/directives/auth/Federation.js +3 -7
  512. package/transpiled/directives/auth/Federation.js.map +1 -1
  513. package/transpiled/directives/auth/Id.js.map +1 -1
  514. package/transpiled/directives/auth/Incept.js +1 -1
  515. package/transpiled/directives/auth/Incept.js.map +1 -1
  516. package/transpiled/directives/auth/Input.js.map +1 -1
  517. package/transpiled/directives/auth/Role.js.map +1 -1
  518. package/transpiled/directives/auth/Rule.js.map +1 -1
  519. package/transpiled/directives/auth/Scheme.js +1 -2
  520. package/transpiled/directives/auth/Scheme.js.map +1 -1
  521. package/transpiled/directives/auth/create.js.map +1 -1
  522. package/transpiled/directives/auth/schemes.js.map +1 -1
  523. package/transpiled/directives/auth/split.js.map +1 -1
  524. package/transpiled/directives/auth/types.d.ts +3 -1
  525. package/transpiled/directives/cache/Cache.js +28 -2
  526. package/transpiled/directives/cache/Cache.js.map +1 -1
  527. package/transpiled/directives/cache/Control.js +1 -1
  528. package/transpiled/directives/cache/Control.js.map +1 -1
  529. package/transpiled/directives/cache/etag.d.ts +10 -0
  530. package/transpiled/directives/cache/etag.js +30 -0
  531. package/transpiled/directives/cache/etag.js.map +1 -0
  532. package/transpiled/directives/cors/CORS.js.map +1 -1
  533. package/transpiled/directives/dev/Development.js.map +1 -1
  534. package/transpiled/directives/dev/Faulty.js.map +1 -1
  535. package/transpiled/directives/dev/Sleep.js.map +1 -1
  536. package/transpiled/directives/dev/Stub.js.map +1 -1
  537. package/transpiled/directives/dev/Throw.js.map +1 -1
  538. package/transpiled/directives/flow/Compose.js +7 -3
  539. package/transpiled/directives/flow/Compose.js.map +1 -1
  540. package/transpiled/directives/flow/Fetch.js.map +1 -1
  541. package/transpiled/directives/flow/Flow.js.map +1 -1
  542. package/transpiled/directives/index.js +11 -1
  543. package/transpiled/directives/index.js.map +1 -1
  544. package/transpiled/directives/io/IO.d.ts +1 -1
  545. package/transpiled/directives/io/IO.js.map +1 -1
  546. package/transpiled/directives/io/Input.js +1 -1
  547. package/transpiled/directives/io/Input.js.map +1 -1
  548. package/transpiled/directives/io/Output.js +3 -3
  549. package/transpiled/directives/io/Output.js.map +1 -1
  550. package/transpiled/directives/io/Status.js.map +1 -1
  551. package/transpiled/directives/io/Throttle.js +1 -1
  552. package/transpiled/directives/io/Throttle.js.map +1 -1
  553. package/transpiled/directives/io/lib/throttle/Configuration.js +8 -2
  554. package/transpiled/directives/io/lib/throttle/Configuration.js.map +1 -1
  555. package/transpiled/directives/io/lib/throttle/Keys.js.map +1 -1
  556. package/transpiled/directives/io/lib/throttle/Quotas.js +4 -3
  557. package/transpiled/directives/io/lib/throttle/Quotas.js.map +1 -1
  558. package/transpiled/directives/io/lib/throttle/Sync.d.ts +1 -1
  559. package/transpiled/directives/io/lib/throttle/Sync.js.map +1 -1
  560. package/transpiled/directives/io/lib/throttle/Warning.js.map +1 -1
  561. package/transpiled/directives/io/lib/throttle/components/IP.js.map +1 -1
  562. package/transpiled/directives/io/lib/throttle/components/Identity.js.map +1 -1
  563. package/transpiled/directives/io/lib/throttle/components/Path.js.map +1 -1
  564. package/transpiled/directives/io/lib/throttle/components/Route.js.map +1 -1
  565. package/transpiled/directives/io/lib/throttle/components/Segment.js.map +1 -1
  566. package/transpiled/directives/io/lib/throttle/conditions/Status.js.map +1 -1
  567. package/transpiled/directives/map/Authority.js.map +1 -1
  568. package/transpiled/directives/map/Buffer.js.map +1 -1
  569. package/transpiled/directives/map/Claims.js.map +1 -1
  570. package/transpiled/directives/map/Headers.js.map +1 -1
  571. package/transpiled/directives/map/Language.js.map +1 -1
  572. package/transpiled/directives/map/Languages.js.map +1 -1
  573. package/transpiled/directives/map/Map.js.map +1 -1
  574. package/transpiled/directives/map/Mapping.js.map +1 -1
  575. package/transpiled/directives/map/Properties.js.map +1 -1
  576. package/transpiled/directives/map/Segments.js.map +1 -1
  577. package/transpiled/directives/mcp/MCP.js +1 -1
  578. package/transpiled/directives/mcp/MCP.js.map +1 -1
  579. package/transpiled/directives/mcp/Tool.js +3 -1
  580. package/transpiled/directives/mcp/Tool.js.map +1 -1
  581. package/transpiled/directives/oauth/Discovery.js.map +1 -1
  582. package/transpiled/directives/oauth/documents.js.map +1 -1
  583. package/transpiled/directives/octets/Context.js +1 -1
  584. package/transpiled/directives/octets/Context.js.map +1 -1
  585. package/transpiled/directives/octets/Delete.js.map +1 -1
  586. package/transpiled/directives/octets/Directive.js.map +1 -1
  587. package/transpiled/directives/octets/Get.js.map +1 -1
  588. package/transpiled/directives/octets/Octets.js +1 -1
  589. package/transpiled/directives/octets/Octets.js.map +1 -1
  590. package/transpiled/directives/octets/Put.js.map +1 -1
  591. package/transpiled/directives/octets/Workflow.js.map +1 -1
  592. package/transpiled/directives/octets/bytes.js.map +1 -1
  593. package/transpiled/directives/octets/workflows/Execution.js +1 -2
  594. package/transpiled/directives/octets/workflows/Execution.js.map +1 -1
  595. package/transpiled/directives/octets/workflows/Workflow.js.map +1 -1
  596. package/transpiled/directives/require/Headers.js.map +1 -1
  597. package/transpiled/directives/require/Require.js.map +1 -1
  598. package/transpiled/exceptions.js.map +1 -1
  599. package/transpiled/index.d.ts +1 -1
  600. package/transpiled/index.js +1 -1
  601. package/transpiled/index.js.map +1 -1
  602. package/transpiled/manifest.js +5 -1
  603. package/transpiled/manifest.js.map +1 -1
  604. package/transpiled/root.js.map +1 -1
  605. package/tsconfig.tsbuildinfo +1 -1
  606. package/CHANGELOG.md +0 -552
  607. package/source/redact.test.ts +0 -27
  608. package/source/redact.ts +0 -21
  609. package/transpiled/redact.d.ts +0 -5
  610. package/transpiled/redact.js +0 -17
  611. package/transpiled/redact.js.map +0 -1
@@ -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.285",
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": "44ed1be7e322a5ea8f1a8ed85ba96b9dfaf28224"
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
 
@@ -3,7 +3,7 @@ properties:
3
3
  type: string
4
4
  resources:
5
5
  # `null` deploys the service without any, which every deployment has to state one way
6
- # or the other — see `migrations/263.md`.
6
+ # or the other — see `migrations/262.md`.
7
7
  type: object
8
8
  nullable: true
9
9
  properties:
@@ -76,7 +76,6 @@ properties:
76
76
  registration:
77
77
  type: string
78
78
  enum: [open, closed]
79
- default: closed
80
79
  required:
81
80
  - authorize
82
81
  additionalProperties: false
@@ -109,7 +108,6 @@ properties:
109
108
  anonymous:
110
109
  description: Whether the endpoint answers without a credential
111
110
  type: boolean
112
- default: false
113
111
  required:
114
112
  - name
115
113
  additionalProperties: false
@@ -12,6 +12,8 @@ properties:
12
12
  type: string
13
13
  query:
14
14
  $ref: query
15
+ paged:
16
+ type: boolean
15
17
  additionalProperties: false
16
18
  type: object
17
19
  directives:
@@ -4,7 +4,7 @@ import assert from 'node:assert/strict'
4
4
  import { decide } from './Branch.js'
5
5
  import type { Branch, Exposed } from './Branch.js'
6
6
 
7
- function branch (version: string, timestamp: number): Branch {
7
+ function branch(version: string, timestamp: number): Branch {
8
8
  return {
9
9
  namespace: 'default',
10
10
  component: 'one',
@@ -15,7 +15,7 @@ function branch (version: string, timestamp: number): Branch {
15
15
  }
16
16
  }
17
17
 
18
- function exposed (version: string, timestamp: number): Exposed {
18
+ function exposed(version: string, timestamp: number): Exposed {
19
19
  return { version, timestamp, nodes: [] }
20
20
  }
21
21
 
package/source/Branch.ts CHANGED
@@ -33,12 +33,10 @@ export interface Exposed {
33
33
  * - `superseded`: it came from a tenant that started before the one exposed now
34
34
  * - `merge`: everything else
35
35
  */
36
- export function decide (exposed: Exposed, branch: Branch): Decision {
37
- if (exposed.version === branch.version)
38
- return 'refresh'
36
+ export function decide(exposed: Exposed, branch: Branch): Decision {
37
+ if (exposed.version === branch.version) return 'refresh'
39
38
 
40
- if (branch.timestamp < exposed.timestamp)
41
- return 'superseded'
39
+ if (branch.timestamp < exposed.timestamp) return 'superseded'
42
40
 
43
41
  return 'merge'
44
42
  }
@@ -6,12 +6,12 @@ import { type Host } from './Factory.js'
6
6
  export class Composition extends Connector {
7
7
  private readonly host: Host
8
8
 
9
- public constructor (host: Host) {
9
+ public constructor(host: Host) {
10
10
  super()
11
11
  this.host = host
12
12
  }
13
13
 
14
- protected override async open (): Promise<void> {
14
+ protected override async open(): Promise<void> {
15
15
  const paths = find()
16
16
  const composition = await this.host.composition(paths)
17
17
 
@@ -21,17 +21,17 @@ export class Composition extends Connector {
21
21
  }
22
22
  }
23
23
 
24
- function find (): string[] {
24
+ function find(): string[] {
25
25
  return entries().map((entry) => resolve(ROOT, entry.name))
26
26
  }
27
27
 
28
- function entries (): Dirent[] {
28
+ function entries(): Dirent[] {
29
29
  const entries = readdirSync(ROOT, { withFileTypes: true })
30
30
 
31
31
  return entries.filter((entry) => entry.isDirectory())
32
32
  }
33
33
 
34
- export function components (): Components {
34
+ export function components(): Components {
35
35
  const labels: string[] = []
36
36
  const paths: string[] = []
37
37
 
@@ -16,7 +16,10 @@ const families: Array<DirectiveFamily> = [
16
16
  mandatory: true,
17
17
  create: mock.fn((_0: any, _1: any, _2: any) => generate() as any),
18
18
  arrange: mock.fn(),
19
- precall: mock.fn(() => { sequence.push('foo'); return null }),
19
+ precall: mock.fn(() => {
20
+ sequence.push('foo')
21
+ return null
22
+ }),
20
23
  settle: mock.fn(),
21
24
  dispose: mock.fn()
22
25
  },
@@ -25,7 +28,10 @@ const families: Array<DirectiveFamily> = [
25
28
  mandatory: true,
26
29
  create: mock.fn((_0: any, _1: any, _2: any) => generate() as any),
27
30
  arrange: mock.fn(),
28
- precall: mock.fn(() => { sequence.push('qux'); return null }),
31
+ precall: mock.fn(() => {
32
+ sequence.push('qux')
33
+ return null
34
+ }),
29
35
  settle: mock.fn(),
30
36
  dispose: mock.fn()
31
37
  },
@@ -34,7 +40,10 @@ const families: Array<DirectiveFamily> = [
34
40
  mandatory: false,
35
41
  create: mock.fn((_0: string, _1: any, _2: any) => generate() as any),
36
42
  arrange: mock.fn(),
37
- precall: mock.fn(() => { sequence.push('bar'); return null }),
43
+ precall: mock.fn(() => {
44
+ sequence.push('bar')
45
+ return null
46
+ }),
38
47
  settle: mock.fn(),
39
48
  dispose: mock.fn()
40
49
  }
@@ -49,11 +58,18 @@ beforeEach(() => {
49
58
  for (const family of families) {
50
59
  assert.ok(family.precall !== undefined)
51
60
 
52
- family.precall.mock.mockImplementation(() => { sequence.push(family.name); return null })
61
+ family.precall.mock.mockImplementation(() => {
62
+ sequence.push(family.name)
63
+ return null
64
+ })
53
65
  }
54
66
 
55
- factory = new DirectivesFactory(families, {} as unknown as Remotes, {} as unknown as Host,
56
- { authorities: {} })
67
+ factory = new DirectivesFactory(
68
+ families,
69
+ {} as unknown as Remotes,
70
+ {} as unknown as Host,
71
+ { authorities: {} }
72
+ )
57
73
  })
58
74
 
59
75
  it('should create directive', async () => {
@@ -95,8 +111,11 @@ it('should throw error if directive family is not found', async () => {
95
111
  value: generate()
96
112
  }
97
113
 
98
- assert.throws(() => factory.create([declaration]),
99
- (error: Error) => error.message.includes(`Directive family '${declaration.family}' is not found`))
114
+ assert.throws(
115
+ () => factory.create([declaration]),
116
+ (error: Error) =>
117
+ error.message.includes(`Directive family '${declaration.family}' is not found`)
118
+ )
100
119
  })
101
120
 
102
121
  it('should apply directive', async () => {
@@ -129,7 +148,7 @@ it('should apply mandatory families', async () => {
129
148
 
130
149
  describe('order', () => {
131
150
  // the order the families actually ran, as each precall recorded it
132
- function order (): string[] {
151
+ function order(): string[] {
133
152
  return sequence
134
153
  }
135
154
 
@@ -145,18 +164,17 @@ describe('order', () => {
145
164
  assert.deepStrictEqual(order(), ['foo', 'qux'])
146
165
  })
147
166
 
148
- it('should run a mandatory family before a declared one it is not declared with',
149
- async () => {
150
- // only `qux` is declared: `foo` still has to run first, not merely first of
151
- // whatever had no declarations
152
- const directives = factory.create([
153
- { family: 'qux', name: generate(), value: generate() }
154
- ])
167
+ it('should run a mandatory family before a declared one it is not declared with', async () => {
168
+ // only `qux` is declared: `foo` still has to run first, not merely first of
169
+ // whatever had no declarations
170
+ const directives = factory.create([
171
+ { family: 'qux', name: generate(), value: generate() }
172
+ ])
155
173
 
156
- await directives.precall(generate() as unknown as Context, [])
174
+ await directives.precall(generate() as unknown as Context, [])
157
175
 
158
- assert.deepStrictEqual(order(), ['foo', 'qux'])
159
- })
176
+ assert.deepStrictEqual(order(), ['foo', 'qux'])
177
+ })
160
178
 
161
179
  it('should run mandatory families before the rest', async () => {
162
180
  const directives = factory.create([
@@ -170,7 +188,7 @@ describe('order', () => {
170
188
  })
171
189
  })
172
190
 
173
- function resetCalls (target = [families], seen = new Set()) {
191
+ function resetCalls(target = [families], seen = new Set()) {
174
192
  if (target === null || typeof target !== 'object' || seen.has(target)) return
175
193
 
176
194
  seen.add(target)
@@ -12,7 +12,7 @@ export class Directives implements RTD.Directives {
12
12
  /** the span of a stage depends only on the set, so it is built once per route */
13
13
  private readonly spans: Spans[]
14
14
 
15
- public constructor (sets: RTD.DirectiveSet[]) {
15
+ public constructor(sets: RTD.DirectiveSet[]) {
16
16
  this.sets = sets
17
17
  this.spans = sets.map((set) => ({
18
18
  precall: options(set, 'precall'),
@@ -21,29 +21,29 @@ export class Directives implements RTD.Directives {
21
21
  }))
22
22
  }
23
23
 
24
- public declared<T> (family: string): T[] | undefined {
25
- return this.sets.find((set) => set.family.name === family)?.directives as T[] | undefined
24
+ public declared<T>(family: string): T[] | undefined {
25
+ return this.sets.find((set) => set.family.name === family)?.directives as
26
+ | T[]
27
+ | undefined
26
28
  }
27
29
 
28
- public async precall (context: Context, parameters: RTD.Parameter[]): Promise<Output> {
30
+ public async precall(context: Context, parameters: RTD.Parameter[]): Promise<Output> {
29
31
  let output = null
30
32
 
31
33
  for (let i = 0; i < this.sets.length; i++) {
32
34
  const set = this.sets[i]
33
35
 
34
- if (set.family.precall === undefined)
35
- continue
36
+ if (set.family.precall === undefined) continue
36
37
 
37
- const out = await console.span(this.spans[i].precall,
38
- async () => await set.family.precall!(set.directives, context, parameters))
38
+ const out = await console.span(
39
+ this.spans[i].precall,
40
+ async () => await set.family.precall!(set.directives, context, parameters)
41
+ )
39
42
 
40
- if (out === null)
41
- continue
43
+ if (out === null) continue
42
44
 
43
- if (output !== null)
44
- throw new Error('Multiple precall directives responded')
45
- else
46
- output = out
45
+ if (output !== null) throw new Error('Multiple precall directives responded')
46
+ else output = out
47
47
  }
48
48
 
49
49
  return output
@@ -54,21 +54,23 @@ export class Directives implements RTD.Directives {
54
54
  * what the one before it returned, and the first to refuse ends it: a method this caller
55
55
  * cannot reach is not described at all.
56
56
  */
57
- public async explain (context: Context,
58
- introspection: Introspection): Promise<Introspection | null> {
57
+ public async explain(
58
+ context: Context,
59
+ introspection: Introspection
60
+ ): Promise<Introspection | null> {
59
61
  let described: Introspection = introspection
60
62
 
61
63
  for (let i = 0; i < this.sets.length; i++) {
62
64
  const set = this.sets[i]
63
65
 
64
- if (set.family.explain === undefined)
65
- continue
66
+ if (set.family.explain === undefined) continue
66
67
 
67
- const next = await console.span(this.spans[i].explain,
68
- async () => await set.family.explain!(set.directives, context, described))
68
+ const next = await console.span(
69
+ this.spans[i].explain,
70
+ async () => await set.family.explain!(set.directives, context, described)
71
+ )
69
72
 
70
- if (next === null)
71
- return null
73
+ if (next === null) return null
72
74
 
73
75
  described = next
74
76
  }
@@ -76,19 +78,20 @@ export class Directives implements RTD.Directives {
76
78
  return described
77
79
  }
78
80
 
79
- public async settle (context: Context, response: OutgoingMessage): Promise<void> {
81
+ public async settle(context: Context, response: OutgoingMessage): Promise<void> {
80
82
  for (let i = 0; i < this.sets.length; i++) {
81
83
  const set = this.sets[i]
82
84
 
83
85
  if (set.family.settle !== undefined)
84
- await console.span(this.spans[i].settle,
85
- async () => await set.family.settle!(set.directives, context, response))
86
+ await console.span(
87
+ this.spans[i].settle,
88
+ async () => await set.family.settle!(set.directives, context, response)
89
+ )
86
90
  }
87
91
  }
88
92
 
89
- public dispose (): void {
90
- for (const set of this.sets)
91
- set.family.dispose?.(set.directives)
93
+ public dispose(): void {
94
+ for (const set of this.sets) set.family.dispose?.(set.directives)
92
95
  }
93
96
  }
94
97
 
@@ -102,14 +105,17 @@ export class DirectivesFactory implements RTD.DirectiveFactory {
102
105
  private readonly stages: Stage[] = []
103
106
 
104
107
  // eslint-disable-next-line max-params
105
- public constructor (families: RTD.DirectiveFamily[], remotes: Remotes, host: Host,
106
- options: Options) {
108
+ public constructor(
109
+ families: RTD.DirectiveFamily[],
110
+ remotes: Remotes,
111
+ host: Host,
112
+ options: Options
113
+ ) {
107
114
  for (const family of families) {
108
115
  family.mount?.(host, options)
109
116
  this.families[family.name] = family
110
117
 
111
- if (family.mandatory)
112
- this.mandatory.push(family.name)
118
+ if (family.mandatory) this.mandatory.push(family.name)
113
119
 
114
120
  this.stages.push({
115
121
  family,
@@ -125,22 +131,24 @@ export class DirectivesFactory implements RTD.DirectiveFactory {
125
131
  * Request-scoped, before anything is routed, so no directives are passed: a family
126
132
  * answers here only for what it does on its own behalf.
127
133
  */
128
- public async preflight (context: Context): Promise<void> {
134
+ public async preflight(context: Context): Promise<void> {
129
135
  for (const stage of this.stages)
130
136
  if (stage.family.preflight !== undefined)
131
- await console.span(stage.preflight,
132
- async () => { await stage.family.preflight!(context) })
137
+ await console.span(stage.preflight, async () => {
138
+ await stage.family.preflight!(context)
139
+ })
133
140
  }
134
141
 
135
142
  /** Request-scoped, on the message going back. */
136
- public async depart (context: Context, response: OutgoingMessage): Promise<void> {
143
+ public async depart(context: Context, response: OutgoingMessage): Promise<void> {
137
144
  for (const stage of this.stages)
138
145
  if (stage.family.depart !== undefined)
139
- await console.span(stage.depart,
140
- async () => { await stage.family.depart!(context, response) })
146
+ await console.span(stage.depart, async () => {
147
+ await stage.family.depart!(context, response)
148
+ })
141
149
  }
142
150
 
143
- public create (declarations: RTD.syntax.Directive[], route: string = ''): Directives {
151
+ public create(declarations: RTD.syntax.Directive[], route: string = ''): Directives {
144
152
  const groups: Record<string, any> = {}
145
153
  const mandatory = new Set(this.mandatory)
146
154
 
@@ -152,7 +160,12 @@ export class DirectivesFactory implements RTD.DirectiveFactory {
152
160
  if (family === undefined)
153
161
  throw new Error(`Directive family '${declaration.family}' is not found`)
154
162
 
155
- const directive = family.create(declaration.name, declaration.value, this.remotes, route)
163
+ const directive = family.create(
164
+ declaration.name,
165
+ declaration.value,
166
+ this.remotes,
167
+ route
168
+ )
156
169
 
157
170
  groups[family.name] ??= []
158
171
  groups[family.name].push(directive)
@@ -184,8 +197,7 @@ export class DirectivesFactory implements RTD.DirectiveFactory {
184
197
  sets.sort((a, b) => this.rank(a.family.name) - this.rank(b.family.name))
185
198
 
186
199
  // whatever order a family needs among its own directives is fixed here, not per request
187
- for (const set of sets)
188
- set.family.arrange?.(set.directives)
200
+ for (const set of sets) set.family.arrange?.(set.directives)
189
201
 
190
202
  const directives = new Directives(sets)
191
203
 
@@ -194,20 +206,22 @@ export class DirectivesFactory implements RTD.DirectiveFactory {
194
206
  return directives
195
207
  }
196
208
 
197
- public dispose (): void {
198
- for (const directives of this.instances)
199
- directives.dispose()
209
+ public dispose(): void {
210
+ for (const directives of this.instances) directives.dispose()
200
211
  }
201
212
 
202
213
  /** Mandatory families first, in their own order; everything else keeps its own. */
203
- private rank (family: string): number {
214
+ private rank(family: string): number {
204
215
  const index = this.mandatory.indexOf(family)
205
216
 
206
217
  return index === -1 ? this.mandatory.length : index
207
218
  }
208
219
  }
209
220
 
210
- function options (set: RTD.DirectiveSet, stage: 'precall' | 'settle' | 'explain'): SpanOptions {
221
+ function options(
222
+ set: RTD.DirectiveSet,
223
+ stage: 'precall' | 'settle' | 'explain'
224
+ ): SpanOptions {
211
225
  const options: SpanOptions = { name: `${set.family.name} ${stage}` }
212
226
 
213
227
  if (set.names !== undefined && set.names.length > 0)
@@ -10,7 +10,7 @@ import type { Parameter } from './RTD/index.js'
10
10
  * What `Remote.explain` answers is the contract's own object, the same one every time and
11
11
  * on every route that mounts the endpoint — which is what this stands in for.
12
12
  */
13
- function remote (): Promise<Remote> {
13
+ function remote(): Promise<Remote> {
14
14
  const explanation = {
15
15
  input: {
16
16
  type: 'object',