@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
@@ -1,7 +1,7 @@
1
1
  import { Forbidden, NotFound } from '../../HTTP/index.js'
2
2
  import * as schemas from './schemas.js'
3
3
  import { Directive } from './Directive.js'
4
- import type { Maybe } from '@toa.io/core'
4
+ import type { Maybe } from '@toa.io/core/types'
5
5
  import type { Entry, Stream } from '@toa.io/extensions.storages'
6
6
  import type { Component } from '@toa.io/core'
7
7
  import type { Output } from '../../io.js'
@@ -17,7 +17,7 @@ export class Get extends Directive {
17
17
  private readonly discovery: Promise<Component>
18
18
  private storage!: Component
19
19
 
20
- public constructor (options: Options | null, discovery: Promise<Component>) {
20
+ public constructor(options: Options | null, discovery: Promise<Component>) {
21
21
  super()
22
22
 
23
23
  schemas.get.validate(options)
@@ -26,21 +26,17 @@ export class Get extends Directive {
26
26
  this.discovery = discovery
27
27
  }
28
28
 
29
- public async apply (storage: string, input: Input): Promise<Output> {
29
+ public async apply(storage: string, input: Input): Promise<Output> {
30
30
  this.storage ??= await this.discovery
31
31
 
32
32
  if (input.subtype === 'octets.entry')
33
- if (this.options.meta)
34
- return this.head(storage, input)
35
- else
36
- throw new Forbidden('Metadata is not accessible')
37
- else
38
- return await this.get(storage, input)
33
+ if (this.options.meta) return this.head(storage, input)
34
+ else throw new Forbidden('Metadata is not accessible')
35
+ else return await this.get(storage, input)
39
36
  }
40
37
 
41
- private async get (storage: string, input: Input): Promise<Output> {
42
- if ('if-none-match' in input.request.headers)
43
- return { status: 304 }
38
+ private async get(storage: string, input: Input): Promise<Output> {
39
+ if ('if-none-match' in input.request.headers) return { status: 304 }
44
40
 
45
41
  const endpoint = input.request.method === 'GET' ? 'get' : 'head'
46
42
 
@@ -53,21 +49,18 @@ export class Get extends Directive {
53
49
  }
54
50
  })
55
51
 
56
- if (entry instanceof Error)
57
- throw new NotFound()
52
+ if (entry instanceof Error) throw new NotFound()
58
53
 
59
54
  const headers = new Headers({
60
55
  'content-type': entry.type,
61
56
  etag: `"${entry.checksum}"`
62
57
  })
63
58
 
64
- if (entry.range !== undefined)
65
- headers.set('content-range', entry.range)
59
+ if (entry.range !== undefined) headers.set('content-range', entry.range)
66
60
 
67
61
  // an absent content-length is what says the length is unknown; naming the encoding
68
62
  // is redundant over HTTP/1.1 and forbidden over HTTP/2
69
- if (entry.size !== null)
70
- headers.set('content-length', entry.size.toString())
63
+ if (entry.size !== null) headers.set('content-length', entry.size.toString())
71
64
 
72
65
  return {
73
66
  status: entry.partial === true ? 206 : 200,
@@ -76,7 +69,7 @@ export class Get extends Directive {
76
69
  }
77
70
  }
78
71
 
79
- private async head (storage: string, input: Input): Promise<Output> {
72
+ private async head(storage: string, input: Input): Promise<Output> {
80
73
  const entry = await this.storage.invoke<Maybe<Entry>>('head', {
81
74
  input: {
82
75
  storage,
@@ -84,8 +77,7 @@ export class Get extends Directive {
84
77
  }
85
78
  })
86
79
 
87
- if (entry instanceof Error)
88
- throw new NotFound()
80
+ if (entry instanceof Error) throw new NotFound()
89
81
 
90
82
  return { body: entry }
91
83
  }
@@ -17,7 +17,7 @@ export class Octets implements DirectiveFamily<Directive> {
17
17
 
18
18
  private discovery = null as unknown as Promise<Component>
19
19
 
20
- public create (name: string, value: any, remotes: Remotes): Directive {
20
+ public create(name: string, value: any, remotes: Remotes): Directive {
21
21
  const Class = DIRECTIVES[name]
22
22
 
23
23
  if (Class === undefined)
@@ -28,32 +28,33 @@ export class Octets implements DirectiveFamily<Directive> {
28
28
  return new Class(value, this.discovery, remotes)
29
29
  }
30
30
 
31
- public async precall (directives: Directive[], input: Input, parameters: Parameter[]): Promise<Output> {
31
+ public async precall(
32
+ directives: Directive[],
33
+ input: Input,
34
+ parameters: Parameter[]
35
+ ): Promise<Output> {
32
36
  let context: Context | null = null
33
37
  let action: Directive | null = null
34
38
 
35
39
  for (const directive of directives)
36
- if (directive instanceof Context)
37
- context ??= directive
38
- else if (action === null)
39
- action = directive
40
- else
41
- throw new Error('Octets action is ambiguous')
40
+ if (directive instanceof Context) context ??= directive
41
+ else if (action === null) action = directive
42
+ else throw new Error('Octets action is ambiguous')
42
43
 
43
- if (action === null)
44
- return null
44
+ if (action === null) return null
45
45
 
46
46
  // noinspection PointlessBooleanExpressionJS
47
- if (context === null)
48
- throw new Error('Octets context is not defined')
47
+ if (context === null) throw new Error('Octets context is not defined')
49
48
 
50
49
  const targeted = input.request.url[input.request.url.length - 1] !== '/'
51
50
 
52
51
  if (targeted !== action.targeted)
53
- throw new NotFound(`Trailing slash is ${action.targeted ? 'redundant' : 'required'}`)
52
+ throw new NotFound(
53
+ `Trailing slash is ${action.targeted ? 'redundant' : 'required'}`
54
+ )
54
55
 
55
56
  // noinspection JSObjectNullOrUndefined
56
- return await input.timing.capture(action.name, action.apply(context.storage, input, parameters))
57
+ return await action.apply(context.storage, input, parameters)
57
58
  }
58
59
  }
59
60
 
@@ -66,4 +67,8 @@ const DIRECTIVES: Record<string, Constructor> = {
66
67
  workflow: WorkflowDirective
67
68
  }
68
69
 
69
- type Constructor = new (value: any, discovery: Promise<Component>, remotes: Remotes) => Directive
70
+ type Constructor = new (
71
+ value: any,
72
+ discovery: Promise<Component>,
73
+ remotes: Remotes
74
+ ) => Directive
@@ -27,25 +27,33 @@ export class Put extends Directive {
27
27
  private readonly discovery: Record<string, Promise<Component>> = {}
28
28
  private storage: Component | null = null
29
29
 
30
- public constructor (options: Options | null, discovery: Promise<Component>, remotes: Remotes) {
30
+ public constructor(
31
+ options: Options | null,
32
+ discovery: Promise<Component>,
33
+ remotes: Remotes
34
+ ) {
31
35
  super()
32
36
 
33
37
  schemas.put.validate<Options>(options)
34
38
 
35
- this.accept = match(options?.accept,
36
- String, (value: string) => value,
37
- Array, (types: string[]) => types.join(','),
38
- undefined)
39
+ this.accept = match(
40
+ options?.accept,
41
+ String,
42
+ (value: string) => value,
43
+ Array,
44
+ (types: string[]) => types.join(','),
45
+ undefined
46
+ )
39
47
 
40
48
  if (options?.workflow !== undefined)
41
49
  this.workflow = new Workflow(options.workflow, remotes)
42
50
 
43
51
  if (options?.trust !== undefined)
44
52
  this.trust = options.trust.map((value: string) =>
45
- value.startsWith('/') ? new RegExp(value.slice(1, -1)) : value)
53
+ value.startsWith('/') ? new RegExp(value.slice(1, -1)) : value
54
+ )
46
55
 
47
- if (options?.location !== undefined)
48
- this.location = options.location
56
+ if (options?.location !== undefined) this.location = options.location
49
57
 
50
58
  this.limitString = options?.limit ?? '64MiB'
51
59
  this.limit = toBytes(this.limitString)
@@ -55,7 +63,11 @@ export class Put extends Directive {
55
63
  cors.allow('content-location')
56
64
  }
57
65
 
58
- public async apply (storage: string, input: Input, parameters: Parameter[]): Promise<Output> {
66
+ public async apply(
67
+ storage: string,
68
+ input: Input,
69
+ parameters: Parameter[]
70
+ ): Promise<Output> {
59
71
  this.storage ??= await this.discovery.storage
60
72
 
61
73
  const request: StoreRequest = {
@@ -71,22 +83,36 @@ export class Put extends Directive {
71
83
 
72
84
  const entry = await this.storage.invoke<Entry>('put', request)
73
85
 
74
- return match<Output>(entry,
75
- Error, (error: CodedError) => this.throw(error),
76
- () => this.reply(input, storage, entry, parameters))
86
+ return match<Output>(
87
+ entry,
88
+ Error,
89
+ (error: CodedError) => this.throw(error),
90
+ () => this.reply(input, storage, entry, parameters)
91
+ )
77
92
  }
78
93
 
79
94
  // eslint-disable-next-line max-params
80
- private reply (input: Input, storage: string, entry: Entry, parameters: Parameter[]): Output {
81
- const body = this.workflow === undefined
82
- ? entry
83
- : this.execute(input, storage, entry, parameters)
95
+ private reply(
96
+ input: Input,
97
+ storage: string,
98
+ entry: Entry,
99
+ parameters: Parameter[]
100
+ ): Output {
101
+ const body =
102
+ this.workflow === undefined
103
+ ? entry
104
+ : this.execute(input, storage, entry, parameters)
84
105
 
85
106
  return { body }
86
107
  }
87
108
 
88
109
  // eslint-disable-next-line max-params
89
- private execute (input: Input, storage: string, entry: Entry, parameters: Parameter[]): Readable {
110
+ private execute(
111
+ input: Input,
112
+ storage: string,
113
+ entry: Entry,
114
+ parameters: Parameter[]
115
+ ): Readable {
90
116
  const stream = new PassThrough({ objectMode: true })
91
117
 
92
118
  stream.push(entry)
@@ -103,16 +129,25 @@ export class Put extends Directive {
103
129
  return stream
104
130
  }
105
131
 
106
- private throw (error: CodedError): never {
107
- throw match(error.code,
108
- 'NOT_ACCEPTABLE', () => new http.UnsupportedMediaType(),
109
- 'TYPE_MISMATCH', () => new http.BadRequest(),
110
- 'LIMIT_EXCEEDED', () => new http.RequestEntityTooLarge(`Size limit is ${this.limitString}`),
111
- 'LOCATION_UNTRUSTED', () => new http.Forbidden(error.message),
112
- 'LOCATION_LENGTH', () => new http.BadRequest(error.message),
113
- 'LOCATION_UNAVAILABLE', () => new http.NotFound(error.message),
114
- 'INVALID_ID', () => new http.BadRequest(error.message),
115
- error)
132
+ private throw(error: CodedError): never {
133
+ throw match(
134
+ error.code,
135
+ 'NOT_ACCEPTABLE',
136
+ () => new http.UnsupportedMediaType(),
137
+ 'TYPE_MISMATCH',
138
+ () => new http.BadRequest(),
139
+ 'LIMIT_EXCEEDED',
140
+ () => new http.RequestEntityTooLarge(`Size limit is ${this.limitString}`),
141
+ 'LOCATION_UNTRUSTED',
142
+ () => new http.Forbidden(error.message),
143
+ 'LOCATION_LENGTH',
144
+ () => new http.BadRequest(error.message),
145
+ 'LOCATION_UNAVAILABLE',
146
+ () => new http.NotFound(error.message),
147
+ 'INVALID_ID',
148
+ () => new http.BadRequest(error.message),
149
+ error
150
+ )
116
151
  }
117
152
  }
118
153
 
@@ -7,7 +7,7 @@ import type { Input } from './types.js'
7
7
  import type { Component } from '@toa.io/core'
8
8
  import type { Output } from '../../io.js'
9
9
  import type { Remotes } from '../../Remotes.js'
10
- import type { Maybe } from '@toa.io/core'
10
+ import type { Maybe } from '@toa.io/core/types'
11
11
  import type { Entry } from '@toa.io/extensions.storages'
12
12
  import type { Parameter } from '../../RTD/index.js'
13
13
 
@@ -18,7 +18,11 @@ export class WorkflowDirective extends Directive {
18
18
  private readonly discovery: Promise<Component>
19
19
  private storage: Component | null = null
20
20
 
21
- public constructor (units: Unit[] | Unit, discovery: Promise<Component>, remotes: Remotes) {
21
+ public constructor(
22
+ units: Unit[] | Unit,
23
+ discovery: Promise<Component>,
24
+ remotes: Remotes
25
+ ) {
22
26
  super()
23
27
  schemas.workflow.validate(units)
24
28
 
@@ -26,19 +30,21 @@ export class WorkflowDirective extends Directive {
26
30
  this.discovery = discovery
27
31
  }
28
32
 
29
- public async apply (storage: string, input: Input, parameters: Parameter[]): Promise<Output> {
33
+ public async apply(
34
+ storage: string,
35
+ input: Input,
36
+ parameters: Parameter[]
37
+ ): Promise<Output> {
30
38
  this.storage ??= await this.discovery
31
39
 
32
- const entry = await this.storage.invoke<Maybe<Entry>>('head',
33
- {
34
- input: {
35
- storage,
36
- path: input.request.url
37
- }
38
- })
40
+ const entry = await this.storage.invoke<Maybe<Entry>>('head', {
41
+ input: {
42
+ storage,
43
+ path: input.request.url
44
+ }
45
+ })
39
46
 
40
- if (entry instanceof Error)
41
- throw new NotFound()
47
+ if (entry instanceof Error) throw new NotFound()
42
48
 
43
49
  const location: Location = {
44
50
  storage,
@@ -1,6 +1,6 @@
1
1
  import assert from 'node:assert'
2
2
 
3
- export function toBytes (input: string): number {
3
+ export function toBytes(input: string): number {
4
4
  const match = RX.exec(input)
5
5
 
6
6
  assert.ok(match !== null, `Invalid bytes format: ${input}`)
@@ -4,23 +4,17 @@ import assert from 'node:assert/strict'
4
4
  import * as schemas from './schemas.js'
5
5
 
6
6
  describe('workflow', () => {
7
- const ok = [
8
- { echo: 'hello world' },
9
- [{ echo: 'hello world' }, { ok: 'ok' }]
10
- ]
7
+ const ok = [{ echo: 'hello world' }, [{ echo: 'hello world' }, { ok: 'ok' }]]
11
8
 
12
- const oh = [
13
- { echo: [] },
14
- { echo: 'hello world', ok: { not: 'ok' } }
15
- ]
9
+ const oh = [{ echo: [] }, { echo: 'hello world', ok: { not: 'ok' } }]
16
10
 
17
11
  for (const workflow of ok)
18
- it('should be valid', () => {
19
- assert.doesNotThrow(() => schemas.workflow.validate(workflow))
20
- })
12
+ it('should be valid', () => {
13
+ assert.doesNotThrow(() => schemas.workflow.validate(workflow))
14
+ })
21
15
 
22
16
  for (const workflow of oh)
23
- it('should not be valid', () => {
24
- assert.throws(() => schemas.workflow.validate(workflow))
25
- })
17
+ it('should not be valid', () => {
18
+ assert.throws(() => schemas.workflow.validate(workflow))
19
+ })
26
20
  })
@@ -3,7 +3,7 @@ import { console } from 'openspan'
3
3
  import type { Unit } from './Workflow.js'
4
4
  import type { Remotes } from '../../../Remotes.js'
5
5
  import type { Component } from '@toa.io/core'
6
- import type { Maybe } from '@toa.io/core'
6
+ import type { Maybe } from '@toa.io/core/types'
7
7
  import type { Entry } from '@toa.io/extensions.storages'
8
8
 
9
9
  export class Execution extends Readable {
@@ -14,7 +14,7 @@ export class Execution extends Readable {
14
14
  private readonly discovery: Record<string, Promise<Component>> = {}
15
15
  private interrupted = false
16
16
 
17
- public constructor (context: Context, units: Unit[], remotes: Remotes) {
17
+ public constructor(context: Context, units: Unit[], remotes: Remotes) {
18
18
  super({ objectMode: true })
19
19
 
20
20
  this.context = context
@@ -24,27 +24,24 @@ export class Execution extends Readable {
24
24
  void this.run()
25
25
  }
26
26
 
27
- public override _read (): void {
28
- }
27
+ public override _read(): void {}
29
28
 
30
- private async run (): Promise<void> {
29
+ private async run(): Promise<void> {
31
30
  for (const unit of this.units) {
32
31
  await this.execute(unit)
33
32
 
34
- if (this.interrupted)
35
- break
33
+ if (this.interrupted) break
36
34
  }
37
35
 
38
36
  this.push(null)
39
37
  }
40
38
 
41
- private async execute (unit: Unit): Promise<void> {
39
+ private async execute(unit: Unit): Promise<void> {
42
40
  const promises = Object.entries(unit).map(async ([step, endpoint]) => {
43
41
  try {
44
42
  const result = await this.call(endpoint)
45
43
 
46
- if (result instanceof Readable)
47
- return await this.stream(step, result)
44
+ if (result instanceof Readable) return await this.stream(step, result)
48
45
 
49
46
  this.report(step, result)
50
47
  } catch (e: unknown) {
@@ -55,10 +52,9 @@ export class Execution extends Readable {
55
52
  await Promise.all(promises)
56
53
  }
57
54
 
58
- private async stream (step: string, stream: Readable): Promise<void> {
55
+ private async stream(step: string, stream: Readable): Promise<void> {
59
56
  try {
60
- for await (const result of stream)
61
- this.report(step, result, false)
57
+ for await (const result of stream) this.report(step, result, false)
62
58
 
63
59
  this.report(step, undefined, true)
64
60
  } catch (e: unknown) {
@@ -66,11 +62,10 @@ export class Execution extends Readable {
66
62
  }
67
63
  }
68
64
 
69
- private report (step: string, result?: Maybe<unknown>, completed = true): void {
65
+ private report(step: string, result?: Maybe<unknown>, completed = true): void {
70
66
  const report: Report = { step }
71
67
 
72
- if (completed)
73
- report.status = 'completed'
68
+ if (completed) report.status = 'completed'
74
69
 
75
70
  if (result instanceof Error) {
76
71
  // an Error cannot be serialized where it sits, and the encoders only unwrap
@@ -85,18 +80,17 @@ export class Execution extends Readable {
85
80
  this.push(report)
86
81
  }
87
82
 
88
- private exception (step: string, error: unknown): void {
83
+ private exception(step: string, error: unknown): void {
89
84
  console.error('Workflow exception', error as Error)
90
85
 
91
86
  this.push({ step, status: 'exception' } satisfies Report)
92
87
  this.interrupted = true
93
88
  }
94
89
 
95
- private async call (endpoint: string): Promise<Maybe<unknown>> {
90
+ private async call(endpoint: string): Promise<Maybe<unknown>> {
96
91
  const task = endpoint.startsWith('task:')
97
92
 
98
- if (task)
99
- endpoint = endpoint.slice(5)
93
+ if (task) endpoint = endpoint.slice(5)
100
94
 
101
95
  const [operation, component, namespace = 'default'] = endpoint.split('.').reverse()
102
96
  const key = `${namespace}.${component}`
@@ -106,7 +100,11 @@ export class Execution extends Readable {
106
100
  return this.components[key].invoke(operation, { input: this.context, task })
107
101
  }
108
102
 
109
- private async discover (key: string, namespace: string, component: string): Promise<Component> {
103
+ private async discover(
104
+ key: string,
105
+ namespace: string,
106
+ component: string
107
+ ): Promise<Component> {
110
108
  if (this.discovery[key] === undefined)
111
109
  this.discovery[key] = this.remotes.discover(namespace, component)
112
110
 
@@ -10,19 +10,22 @@ export class Workflow {
10
10
  private readonly units: Unit[]
11
11
  private readonly remotes: Remotes
12
12
 
13
- public constructor (units: Unit[] | Unit, remotes: Remotes) {
14
- this.units = match<Unit[]>(units,
15
- Array, (units: Unit[]) => units,
16
- Object, (unit: Unit) => [unit])
13
+ public constructor(units: Unit[] | Unit, remotes: Remotes) {
14
+ this.units = match<Unit[]>(
15
+ units,
16
+ Array,
17
+ (units: Unit[]) => units,
18
+ Object,
19
+ (unit: Unit) => [unit]
20
+ )
17
21
 
18
22
  this.remotes = remotes
19
23
  }
20
24
 
21
- public execute (location: Location, entry: Entry, params: Parameter[]): Execution {
25
+ public execute(location: Location, entry: Entry, params: Parameter[]): Execution {
22
26
  const parameters: Record<string, string> = {}
23
27
 
24
- for (const { name, value } of params)
25
- parameters[name] = value
28
+ for (const { name, value } of params) parameters[name] = value
26
29
 
27
30
  const context: Context = {
28
31
  authority: location.authority,
@@ -5,14 +5,13 @@ import type { Directive } from './Directive.js'
5
5
  export class Headers implements Directive {
6
6
  private readonly headers: string[]
7
7
 
8
- public constructor (headers: string[]) {
9
- if (!Array.isArray(headers))
10
- headers = [headers]
8
+ public constructor(headers: string[]) {
9
+ if (!Array.isArray(headers)) headers = [headers]
11
10
 
12
11
  this.headers = headers
13
12
  }
14
13
 
15
- public precall (context: Input): void {
14
+ public precall(context: Input): void {
16
15
  for (const header of this.headers)
17
16
  if (context.request.headers[header] === undefined)
18
17
  throw new BadRequest(`Header required: ${header}`)
@@ -8,15 +8,14 @@ export class Require implements DirectiveFamily {
8
8
  public readonly name = 'require'
9
9
  public readonly mandatory = false
10
10
 
11
- public create (name: string, value: unknown): Directive {
11
+ public create(name: string, value: unknown): Directive {
12
12
  assert.ok(name in directives, `Unknown directive: require:${name}`)
13
13
 
14
14
  return new directives[name](value)
15
15
  }
16
16
 
17
- public precall (instances: Directive[], context: Input): null {
18
- for (const instance of instances)
19
- instance.precall(context)
17
+ public precall(instances: Directive[], context: Input): null {
18
+ for (const instance of instances) instance.precall(context)
20
19
 
21
20
  return null
22
21
  }
@@ -4,26 +4,33 @@ import * as http from './HTTP/index.js'
4
4
  import { Exception as HTTPException } from './HTTP/index.js'
5
5
  import type { Exception } from '@toa.io/core'
6
6
 
7
- export function rethrow (exception: Exception | HTTPException): void {
8
- if (exception instanceof HTTPException)
9
- throw exception
7
+ export function rethrow(exception: Exception | HTTPException): void {
8
+ if (exception instanceof HTTPException) throw exception
10
9
 
11
10
  // see /runtime/core/src/exceptions.js
12
- throw match(exception.code,
13
- badRequest, () => new http.BadRequest(exception.message),
14
- CORE_EXCEPTIONS.StateNotFound, NOT_FOUND,
15
- CORE_EXCEPTIONS.StatePrecondition, PRECONDITION_FAILED,
16
- CORE_EXCEPTIONS.Duplicate, CONFLICT,
17
- CORE_EXCEPTIONS.StateConcurrency, CONFLICT,
18
- CORE_EXCEPTIONS.EntityGuard, CONFLICT,
11
+ throw match(
12
+ exception.code,
13
+ badRequest,
14
+ () => new http.BadRequest(exception.message),
15
+ CORE_EXCEPTIONS.StateNotFound,
16
+ NOT_FOUND,
17
+ CORE_EXCEPTIONS.StatePrecondition,
18
+ PRECONDITION_FAILED,
19
+ CORE_EXCEPTIONS.Duplicate,
20
+ CONFLICT,
21
+ CORE_EXCEPTIONS.StateConcurrency,
22
+ CONFLICT,
23
+ CORE_EXCEPTIONS.EntityGuard,
24
+ CONFLICT,
19
25
  () => {
20
26
  console.error('Request processing exception', exception)
21
27
 
22
28
  return exception
23
- })
29
+ }
30
+ )
24
31
  }
25
32
 
26
- function badRequest (code: number): boolean {
33
+ function badRequest(code: number): boolean {
27
34
  return (code >= 200 && code < 210) || code === 221
28
35
  }
29
36
 
package/source/index.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export { manifest } from './manifest.js'
2
- export { deployment } from './deployment.js'
2
+ export { deployment, image } from './deployment.js'
3
3
  export { components } from './Composition.js'
4
4
  export { Factory } from './Factory.js'
5
5
 
@@ -38,7 +38,10 @@ it('should not create node for default namespace', async () => {
38
38
  })
39
39
 
40
40
  it('should throw on invalid declaration type', async () => {
41
- assert.throws(() => manifest('hello' as unknown as object, mf), (error: any) => /Exposition declaration must be an object/.test(error.message))
41
+ assert.throws(
42
+ () => manifest('hello' as unknown as object, mf),
43
+ (error: any) => /Exposition declaration must be an object/.test(error.message)
44
+ )
42
45
  })
43
46
 
44
47
  it('should set namespace and component', async () => {