@toa.io/extensions.exposition 1.0.0-alpha.291 → 1.0.0-alpha.293

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 (526) hide show
  1. package/components/identity.basic/package.json +8 -0
  2. package/components/identity.federation/package.json +8 -0
  3. package/components/identity.passkeys/package.json +8 -0
  4. package/components/identity.tokens/package.json +10 -0
  5. package/package.json +25 -13
  6. package/transpiled/Discovery/Explorer.js +1 -1
  7. package/transpiled/Discovery/Explorer.js.map +1 -1
  8. package/transpiled/Discovery/Site.js +1 -1
  9. package/transpiled/Discovery/Site.js.map +1 -1
  10. package/transpiled/Discovery/trunk.js +1 -1
  11. package/transpiled/Discovery/trunk.js.map +1 -1
  12. package/transpiled/Endpoint.js +3 -0
  13. package/transpiled/Endpoint.js.map +1 -1
  14. package/transpiled/Factory.js +1 -1
  15. package/transpiled/Factory.js.map +1 -1
  16. package/transpiled/Gateway.js +1 -1
  17. package/transpiled/Gateway.js.map +1 -1
  18. package/transpiled/HTTP/Server.d.ts +1 -1
  19. package/transpiled/HTTP/Server.js +1 -1
  20. package/transpiled/HTTP/Server.js.map +1 -1
  21. package/transpiled/Introspection.d.ts +6 -0
  22. package/transpiled/Introspection.js +1 -0
  23. package/transpiled/Introspection.js.map +1 -1
  24. package/transpiled/MCP/Server.d.ts +1 -1
  25. package/transpiled/MCP/Server.js +1 -1
  26. package/transpiled/MCP/Server.js.map +1 -1
  27. package/transpiled/MCP/discover.d.ts +1 -1
  28. package/transpiled/MCP/schema.js +2 -2
  29. package/transpiled/Query.d.ts +2 -12
  30. package/transpiled/Query.js +3 -13
  31. package/transpiled/Query.js.map +1 -1
  32. package/transpiled/RPC/Dispatcher.d.ts +1 -1
  33. package/transpiled/RPC/Dispatcher.js +2 -2
  34. package/transpiled/RPC/Dispatcher.js.map +1 -1
  35. package/transpiled/RTD/Endpoint.d.ts +2 -3
  36. package/transpiled/RTD/Tree.js +1 -1
  37. package/transpiled/RTD/Tree.js.map +1 -1
  38. package/transpiled/RTD/factory.js +1 -1
  39. package/transpiled/RTD/factory.js.map +1 -1
  40. package/transpiled/RTD/syntax/index.d.ts +1 -2
  41. package/transpiled/RTD/syntax/index.js +1 -2
  42. package/transpiled/RTD/syntax/index.js.map +1 -1
  43. package/transpiled/Tenant.js +1 -1
  44. package/transpiled/Tenant.js.map +1 -1
  45. package/transpiled/directives/auth/Authorization.js +1 -1
  46. package/transpiled/directives/auth/Authorization.js.map +1 -1
  47. package/transpiled/directives/io/IO.js +1 -1
  48. package/transpiled/directives/io/IO.js.map +1 -1
  49. package/transpiled/directives/oauth/documents.d.ts +1 -1
  50. package/transpiled/index.d.ts +0 -2
  51. package/transpiled/index.js +0 -2
  52. package/transpiled/index.js.map +1 -1
  53. package/transpiled/service.js +1 -1
  54. package/transpiled/service.js.map +1 -1
  55. package/ui/dist/_app/immutable/assets/0.Cu0AnR_8.css +2 -0
  56. package/ui/dist/_app/immutable/assets/2.BghF56l_.css +1 -0
  57. package/ui/dist/_app/immutable/assets/ui.C8aD6zzF.css +1 -0
  58. package/ui/dist/_app/immutable/chunks/B8GvXrmq.js +1 -0
  59. package/ui/dist/_app/immutable/chunks/BVDJTrf4.js +3 -0
  60. package/ui/dist/_app/immutable/chunks/D6q28_Ok.js +86 -0
  61. package/ui/dist/_app/immutable/chunks/{D9tE1yyO.js → DVlaUfVU.js} +1 -1
  62. package/ui/dist/_app/immutable/chunks/DpB73ZB6.js +6 -0
  63. package/ui/dist/_app/immutable/entry/app.CTava8yn.js +2 -0
  64. package/ui/dist/_app/immutable/entry/start.yWN0gSLA.js +1 -0
  65. package/ui/dist/_app/immutable/nodes/0.HKRDBYrC.js +1 -0
  66. package/ui/dist/_app/immutable/nodes/1.CLa0ydOi.js +1 -0
  67. package/ui/dist/_app/immutable/nodes/2.C9Kaym8C.js +8 -0
  68. package/ui/dist/_app/immutable/nodes/3.C1X4_rXZ.js +1 -0
  69. package/ui/dist/_app/immutable/nodes/4.DdzDIi9E.js +1 -0
  70. package/ui/dist/_app/immutable/nodes/5.DpbmCMdw.js +1 -0
  71. package/ui/dist/_app/version.json +1 -1
  72. package/ui/dist/index.html +12 -12
  73. package/CHANGELOG.md +0 -35
  74. package/components/identity.bans/tsconfig.tsbuildinfo +0 -1
  75. package/components/identity.basic/source/lib/credentials.test.ts +0 -18
  76. package/components/identity.basic/tsconfig.tsbuildinfo +0 -1
  77. package/components/identity.clients/source/lib/canonical.test.ts +0 -43
  78. package/components/identity.clients/source/lib/cimd.test.ts +0 -122
  79. package/components/identity.clients/source/lib/redirect.test.ts +0 -47
  80. package/components/identity.clients/tsconfig.tsbuildinfo +0 -1
  81. package/components/identity.credentials/source/list.test.ts +0 -70
  82. package/components/identity.credentials/tsconfig.tsbuildinfo +0 -1
  83. package/components/identity.federation/source/lib/discovery.test.ts +0 -60
  84. package/components/identity.federation/source/list.test.ts +0 -41
  85. package/components/identity.federation/tsconfig.tsbuildinfo +0 -1
  86. package/components/identity.grants/tsconfig.tsbuildinfo +0 -1
  87. package/components/identity.keys/tsconfig.tsbuildinfo +0 -1
  88. package/components/identity.otp/tsconfig.tsbuildinfo +0 -1
  89. package/components/identity.passkeys/source/errors.test.ts +0 -34
  90. package/components/identity.passkeys/source/webauthn.test.ts +0 -26
  91. package/components/identity.passkeys/tsconfig.tsbuildinfo +0 -1
  92. package/components/identity.roles/tsconfig.tsbuildinfo +0 -1
  93. package/components/identity.tokens/source/authenticate.test.ts +0 -112
  94. package/components/identity.tokens/source/decrypt.test.ts +0 -216
  95. package/components/identity.tokens/source/encrypt.test.ts +0 -150
  96. package/components/identity.tokens/source/issue.test.ts +0 -73
  97. package/components/identity.tokens/source/lib/form.test.ts +0 -25
  98. package/components/identity.tokens/source/lib/paseto.test.ts +0 -62
  99. package/components/identity.tokens/tsconfig.tsbuildinfo +0 -1
  100. package/context.toa.yaml +0 -31
  101. package/cucumber.mjs +0 -7
  102. package/documentation/.assets/ia3-dark.jpg +0 -0
  103. package/documentation/.assets/ia3-light.jpg +0 -0
  104. package/documentation/.assets/overview-dark.jpg +0 -0
  105. package/documentation/.assets/overview-light.jpg +0 -0
  106. package/documentation/.assets/role-scopes-dark.jpg +0 -0
  107. package/documentation/.assets/role-scopes-light.jpg +0 -0
  108. package/documentation/.assets/rtd-dark.jpg +0 -0
  109. package/documentation/.assets/rtd-light.jpg +0 -0
  110. package/documentation/access.md +0 -350
  111. package/documentation/authorities.md +0 -51
  112. package/documentation/cache.md +0 -72
  113. package/documentation/components.md +0 -472
  114. package/documentation/consent.md +0 -101
  115. package/documentation/credentials.md +0 -88
  116. package/documentation/dev.md +0 -30
  117. package/documentation/discovery.md +0 -81
  118. package/documentation/flow.md +0 -44
  119. package/documentation/help.md +0 -122
  120. package/documentation/identity.md +0 -304
  121. package/documentation/introspection.md +0 -123
  122. package/documentation/io.md +0 -167
  123. package/documentation/ip.md +0 -24
  124. package/documentation/map.md +0 -123
  125. package/documentation/mcp.md +0 -183
  126. package/documentation/notes/desync.jpg +0 -0
  127. package/documentation/notes/peers.md +0 -59
  128. package/documentation/notes/sse.md +0 -71
  129. package/documentation/notes/throttling.md +0 -122
  130. package/documentation/oauth.md +0 -180
  131. package/documentation/octets.md +0 -334
  132. package/documentation/passkeys.md +0 -11
  133. package/documentation/protocol.md +0 -120
  134. package/documentation/query.md +0 -324
  135. package/documentation/require.md +0 -15
  136. package/documentation/rpc.md +0 -154
  137. package/documentation/tracing.md +0 -70
  138. package/documentation/tree.md +0 -199
  139. package/features/access.feature +0 -596
  140. package/features/annotation.feature +0 -32
  141. package/features/auth.assert.feature +0 -55
  142. package/features/auth.bearer.feature +0 -120
  143. package/features/auth.claims.feature +0 -171
  144. package/features/auth.incept.feature +0 -166
  145. package/features/auth.input.feature +0 -59
  146. package/features/authorities.basic.feature +0 -141
  147. package/features/authorities.feature +0 -71
  148. package/features/authorities.federation.feature +0 -100
  149. package/features/authorities.tokens.feature +0 -117
  150. package/features/body.feature +0 -76
  151. package/features/cache.feature +0 -368
  152. package/features/configuration.feature +0 -206
  153. package/features/cors.feature +0 -127
  154. package/features/credentials.feature +0 -106
  155. package/features/debug.feature +0 -34
  156. package/features/dev.feature +0 -90
  157. package/features/directives.feature +0 -61
  158. package/features/discovery.feature +0 -213
  159. package/features/discovery.ui.feature +0 -213
  160. package/features/dynamic.feature +0 -192
  161. package/features/errors.feature +0 -258
  162. package/features/etag.feature +0 -239
  163. package/features/flow.feature +0 -148
  164. package/features/help.feature +0 -512
  165. package/features/identity.bans.feature +0 -200
  166. package/features/identity.basic.feature +0 -666
  167. package/features/identity.feature +0 -240
  168. package/features/identity.federation.feature +0 -396
  169. package/features/identity.otp.feature +0 -142
  170. package/features/identity.roles.feature +0 -568
  171. package/features/identity.tokens.custom.feature +0 -430
  172. package/features/identity.tokens.feature +0 -131
  173. package/features/interruptions.feature +0 -20
  174. package/features/introspection.feature +0 -565
  175. package/features/introspection.map.feature +0 -108
  176. package/features/io.feature +0 -204
  177. package/features/io.throttle.feature +0 -166
  178. package/features/map.feature +0 -360
  179. package/features/mcp.feature +0 -753
  180. package/features/methods.feature +0 -48
  181. package/features/oauth.clients.feature +0 -195
  182. package/features/oauth.discovery.feature +0 -164
  183. package/features/oauth.grants.feature +0 -301
  184. package/features/octets.cloudinary.feature +0 -233
  185. package/features/octets.download.feature +0 -194
  186. package/features/octets.entries.feature +0 -83
  187. package/features/octets.feature +0 -306
  188. package/features/octets.head.feature +0 -40
  189. package/features/octets.location.feature +0 -83
  190. package/features/octets.meta.feature +0 -117
  191. package/features/octets.workflows.feature +0 -565
  192. package/features/passkeys.feature +0 -66
  193. package/features/probes.feature +0 -18
  194. package/features/query.feature +0 -389
  195. package/features/realtime.feature +0 -34
  196. package/features/require.feature +0 -66
  197. package/features/response.feature +0 -103
  198. package/features/routes.feature +0 -224
  199. package/features/rpc.feature +0 -429
  200. package/features/server.feature +0 -21
  201. package/features/site/_app/immutable/asset.js +0 -1
  202. package/features/site/favicon.ico +0 -0
  203. package/features/site/index.html +0 -10
  204. package/features/steps/.env.example +0 -5
  205. package/features/steps/Captures.ts +0 -20
  206. package/features/steps/Cloudinary.ts +0 -12
  207. package/features/steps/Common.ts +0 -38
  208. package/features/steps/Components.ts +0 -115
  209. package/features/steps/Database.ts +0 -106
  210. package/features/steps/Gateway.ts +0 -240
  211. package/features/steps/HTTP.ts +0 -96
  212. package/features/steps/IDP.ts +0 -361
  213. package/features/steps/Identity.ts +0 -54
  214. package/features/steps/OTP.ts +0 -42
  215. package/features/steps/Parameters.ts +0 -162
  216. package/features/steps/Probe.ts +0 -38
  217. package/features/steps/Realtime.ts +0 -175
  218. package/features/steps/Workspace.ts +0 -48
  219. package/features/steps/components/audit/manifest.toa.yaml +0 -20
  220. package/features/steps/components/audit/operations/record.js +0 -5
  221. package/features/steps/components/echo/manifest.toa.yaml +0 -59
  222. package/features/steps/components/echo/operations/affect.js +0 -3
  223. package/features/steps/components/echo/operations/compute.js +0 -3
  224. package/features/steps/components/echo/operations/echo.js +0 -3
  225. package/features/steps/components/echo/operations/error.js +0 -7
  226. package/features/steps/components/echo/operations/identity.js +0 -3
  227. package/features/steps/components/echo/operations/parameters.js +0 -3
  228. package/features/steps/components/echo/operations/ping.js +0 -3
  229. package/features/steps/components/echo/operations/unwrap.js +0 -3
  230. package/features/steps/components/echo.beacon/manifest.toa.yaml +0 -2
  231. package/features/steps/components/echo.beacon/operations/hello.js +0 -3
  232. package/features/steps/components/greeter/manifest.toa.yaml +0 -5
  233. package/features/steps/components/greeter/operations/greet.js +0 -3
  234. package/features/steps/components/notify/manifest.toa.yaml +0 -20
  235. package/features/steps/components/notify/operations/send.js +0 -5
  236. package/features/steps/components/octets.tester/manifest.toa.yaml +0 -73
  237. package/features/steps/components/octets.tester/operations/authority.js +0 -3
  238. package/features/steps/components/octets.tester/operations/bar.js +0 -9
  239. package/features/steps/components/octets.tester/operations/baz.js +0 -9
  240. package/features/steps/components/octets.tester/operations/concat.js +0 -5
  241. package/features/steps/components/octets.tester/operations/echo.js +0 -5
  242. package/features/steps/components/octets.tester/operations/err.js +0 -14
  243. package/features/steps/components/octets.tester/operations/foo.js +0 -5
  244. package/features/steps/components/octets.tester/operations/id.js +0 -5
  245. package/features/steps/components/octets.tester/operations/identity.js +0 -5
  246. package/features/steps/components/octets.tester/operations/lenna.png +0 -0
  247. package/features/steps/components/octets.tester/operations/redirect.js +0 -17
  248. package/features/steps/components/octets.tester/operations/yex.js +0 -14
  249. package/features/steps/components/octets.tester/operations/yield.js +0 -11
  250. package/features/steps/components/orders/manifest.toa.yaml +0 -30
  251. package/features/steps/components/orders/operations/create.js +0 -7
  252. package/features/steps/components/pots/manifest.toa.yaml +0 -91
  253. package/features/steps/components/pots/migrations/0002-indexes.yaml +0 -4
  254. package/features/steps/components/pricing/manifest.toa.yaml +0 -13
  255. package/features/steps/components/pricing/operations/quote.js +0 -3
  256. package/features/steps/components/sequences/manifest.toa.yaml +0 -11
  257. package/features/steps/components/sequences/operations/numbers.js +0 -5
  258. package/features/steps/components/sequences/operations/tokens.js +0 -14
  259. package/features/steps/components/users/manifest.toa.yaml +0 -30
  260. package/features/steps/components/users/operations/create.js +0 -11
  261. package/features/steps/components/users.properties/manifest.toa.yaml +0 -22
  262. package/features/steps/map.ts +0 -30
  263. package/features/steps/tsconfig.json +0 -9
  264. package/features/streams.feature +0 -35
  265. package/features/timestamps.feature +0 -41
  266. package/features/timing.feature +0 -49
  267. package/features/tracing.feature +0 -123
  268. package/schemas/annotation.cos.yaml +0 -125
  269. package/schemas/call.cos.yaml +0 -18
  270. package/schemas/directive.cos.yaml +0 -7
  271. package/schemas/method.cos.yaml +0 -23
  272. package/schemas/node.cos.yaml +0 -22
  273. package/schemas/query.cos.yaml +0 -31
  274. package/schemas/querystring.cos.yaml +0 -19
  275. package/schemas/range.cos.yaml +0 -10
  276. package/schemas/route.cos.yaml +0 -6
  277. package/source/Annotation.ts +0 -89
  278. package/source/Branch.test.ts +0 -40
  279. package/source/Branch.ts +0 -44
  280. package/source/Composition.ts +0 -51
  281. package/source/Context.ts +0 -11
  282. package/source/Directive.test.ts +0 -199
  283. package/source/Directive.ts +0 -248
  284. package/source/Discovery/Explorer.ts +0 -34
  285. package/source/Discovery/Site.test.ts +0 -147
  286. package/source/Discovery/Site.ts +0 -202
  287. package/source/Discovery/index.ts +0 -3
  288. package/source/Discovery/tree.test.ts +0 -175
  289. package/source/Discovery/tree.ts +0 -77
  290. package/source/Discovery/trunk.ts +0 -33
  291. package/source/Endpoint.test.ts +0 -67
  292. package/source/Endpoint.ts +0 -157
  293. package/source/Factory.ts +0 -42
  294. package/source/Gateway.ts +0 -390
  295. package/source/HTTP/Context.ts +0 -143
  296. package/source/HTTP/Probe.ts +0 -99
  297. package/source/HTTP/Server.ts +0 -430
  298. package/source/HTTP/Timing.ts +0 -14
  299. package/source/HTTP/address.test.ts +0 -28
  300. package/source/HTTP/address.ts +0 -16
  301. package/source/HTTP/exceptions.ts +0 -99
  302. package/source/HTTP/formats/form.ts +0 -21
  303. package/source/HTTP/formats/index.ts +0 -36
  304. package/source/HTTP/formats/json.ts +0 -14
  305. package/source/HTTP/formats/msgpack.ts +0 -14
  306. package/source/HTTP/formats/text.ts +0 -10
  307. package/source/HTTP/formats/yaml.test.ts +0 -22
  308. package/source/HTTP/formats/yaml.ts +0 -40
  309. package/source/HTTP/index.ts +0 -6
  310. package/source/HTTP/messages.test.ts +0 -196
  311. package/source/HTTP/messages.ts +0 -186
  312. package/source/HTTP/types.ts +0 -39
  313. package/source/Interception.ts +0 -37
  314. package/source/Introspection.ts +0 -179
  315. package/source/MCP/Server.ts +0 -335
  316. package/source/MCP/discover.ts +0 -51
  317. package/source/MCP/errors.ts +0 -80
  318. package/source/MCP/index.ts +0 -1
  319. package/source/MCP/schema.test.ts +0 -91
  320. package/source/MCP/schema.ts +0 -94
  321. package/source/MCP/tools.ts +0 -144
  322. package/source/MCP/types.ts +0 -84
  323. package/source/Mapping.ts +0 -101
  324. package/source/Query.test.ts +0 -54
  325. package/source/Query.ts +0 -277
  326. package/source/RPC/Context.ts +0 -75
  327. package/source/RPC/Dispatcher.ts +0 -150
  328. package/source/RPC/errors.test.ts +0 -77
  329. package/source/RPC/errors.ts +0 -82
  330. package/source/RPC/index.ts +0 -1
  331. package/source/RPC/names.test.ts +0 -141
  332. package/source/RPC/names.ts +0 -176
  333. package/source/RPC/types.ts +0 -34
  334. package/source/RTD/Context.ts +0 -16
  335. package/source/RTD/Directives.ts +0 -126
  336. package/source/RTD/Endpoint.ts +0 -27
  337. package/source/RTD/Match.ts +0 -11
  338. package/source/RTD/Method.ts +0 -39
  339. package/source/RTD/Node.ts +0 -169
  340. package/source/RTD/Route.ts +0 -93
  341. package/source/RTD/Tree.ts +0 -137
  342. package/source/RTD/expiration.test.ts +0 -81
  343. package/source/RTD/factory.ts +0 -105
  344. package/source/RTD/index.ts +0 -8
  345. package/source/RTD/segment.test.ts +0 -35
  346. package/source/RTD/segment.ts +0 -51
  347. package/source/RTD/syntax/index.ts +0 -2
  348. package/source/RTD/syntax/parse.test.ts +0 -196
  349. package/source/RTD/syntax/parse.ts +0 -171
  350. package/source/RTD/syntax/types.ts +0 -69
  351. package/source/RTD/walk.test.ts +0 -147
  352. package/source/Remotes.test.ts +0 -79
  353. package/source/Remotes.ts +0 -39
  354. package/source/Tenant.ts +0 -73
  355. package/source/const.ts +0 -45
  356. package/source/deployment.ts +0 -96
  357. package/source/directives/auth/Anonymous.test.ts +0 -70
  358. package/source/directives/auth/Anonymous.ts +0 -36
  359. package/source/directives/auth/Anyone.ts +0 -23
  360. package/source/directives/auth/Assert.ts +0 -43
  361. package/source/directives/auth/Authorization.test.ts +0 -24
  362. package/source/directives/auth/Authorization.ts +0 -388
  363. package/source/directives/auth/Delegate.test.ts +0 -36
  364. package/source/directives/auth/Delegate.ts +0 -54
  365. package/source/directives/auth/Echo.ts +0 -24
  366. package/source/directives/auth/Federation.ts +0 -104
  367. package/source/directives/auth/Id.ts +0 -37
  368. package/source/directives/auth/Incept.ts +0 -117
  369. package/source/directives/auth/Input.ts +0 -92
  370. package/source/directives/auth/Role.test.ts +0 -147
  371. package/source/directives/auth/Role.ts +0 -99
  372. package/source/directives/auth/Rule.ts +0 -59
  373. package/source/directives/auth/Scheme.ts +0 -31
  374. package/source/directives/auth/create.ts +0 -11
  375. package/source/directives/auth/index.ts +0 -3
  376. package/source/directives/auth/schemes.test.ts +0 -18
  377. package/source/directives/auth/schemes.ts +0 -39
  378. package/source/directives/auth/split.ts +0 -14
  379. package/source/directives/auth/types.ts +0 -75
  380. package/source/directives/cache/Cache.ts +0 -92
  381. package/source/directives/cache/Control.ts +0 -81
  382. package/source/directives/cache/Exact.ts +0 -7
  383. package/source/directives/cache/etag.ts +0 -38
  384. package/source/directives/cache/index.ts +0 -3
  385. package/source/directives/cache/types.ts +0 -9
  386. package/source/directives/cors/CORS.test.ts +0 -75
  387. package/source/directives/cors/CORS.ts +0 -88
  388. package/source/directives/cors/index.ts +0 -3
  389. package/source/directives/dev/Development.ts +0 -41
  390. package/source/directives/dev/Faulty.ts +0 -31
  391. package/source/directives/dev/Sleep.ts +0 -53
  392. package/source/directives/dev/Stub.ts +0 -14
  393. package/source/directives/dev/Throw.ts +0 -14
  394. package/source/directives/dev/index.ts +0 -3
  395. package/source/directives/dev/types.ts +0 -5
  396. package/source/directives/flow/Compose.ts +0 -98
  397. package/source/directives/flow/Fetch.ts +0 -86
  398. package/source/directives/flow/Flow.ts +0 -43
  399. package/source/directives/flow/index.ts +0 -3
  400. package/source/directives/flow/types.ts +0 -7
  401. package/source/directives/help/Family.ts +0 -122
  402. package/source/directives/help/Help.test.ts +0 -227
  403. package/source/directives/help/Help.ts +0 -47
  404. package/source/directives/help/Parameters.ts +0 -47
  405. package/source/directives/help/described.ts +0 -57
  406. package/source/directives/help/index.ts +0 -45
  407. package/source/directives/index.ts +0 -33
  408. package/source/directives/io/Directive.ts +0 -17
  409. package/source/directives/io/IO.ts +0 -118
  410. package/source/directives/io/Input.ts +0 -55
  411. package/source/directives/io/Message.ts +0 -1
  412. package/source/directives/io/Output.ts +0 -81
  413. package/source/directives/io/Status.test.ts +0 -88
  414. package/source/directives/io/Status.ts +0 -47
  415. package/source/directives/io/Throttle.ts +0 -30
  416. package/source/directives/io/index.ts +0 -3
  417. package/source/directives/io/lib/throttle/Configuration.test.ts +0 -72
  418. package/source/directives/io/lib/throttle/Configuration.ts +0 -68
  419. package/source/directives/io/lib/throttle/Keys.ts +0 -53
  420. package/source/directives/io/lib/throttle/Quotas.test.ts +0 -411
  421. package/source/directives/io/lib/throttle/Quotas.ts +0 -190
  422. package/source/directives/io/lib/throttle/Sync.test.ts +0 -163
  423. package/source/directives/io/lib/throttle/Sync.ts +0 -93
  424. package/source/directives/io/lib/throttle/Warning.test.ts +0 -32
  425. package/source/directives/io/lib/throttle/Warning.ts +0 -29
  426. package/source/directives/io/lib/throttle/components/Component.ts +0 -7
  427. package/source/directives/io/lib/throttle/components/IP.ts +0 -30
  428. package/source/directives/io/lib/throttle/components/Identity.ts +0 -19
  429. package/source/directives/io/lib/throttle/components/Path.ts +0 -8
  430. package/source/directives/io/lib/throttle/components/Route.ts +0 -19
  431. package/source/directives/io/lib/throttle/components/Segment.ts +0 -19
  432. package/source/directives/io/lib/throttle/components/index.ts +0 -19
  433. package/source/directives/io/lib/throttle/conditions/Condition.ts +0 -5
  434. package/source/directives/io/lib/throttle/conditions/Status.ts +0 -17
  435. package/source/directives/io/lib/throttle/conditions/index.ts +0 -11
  436. package/source/directives/io/lib/throttle/index.ts +0 -4
  437. package/source/directives/io/schemas.test.ts +0 -40
  438. package/source/directives/io/schemas.ts +0 -16
  439. package/source/directives/map/Authority.ts +0 -15
  440. package/source/directives/map/Buffer.ts +0 -15
  441. package/source/directives/map/Claims.ts +0 -63
  442. package/source/directives/map/Directive.ts +0 -4
  443. package/source/directives/map/Headers.ts +0 -60
  444. package/source/directives/map/Language.ts +0 -45
  445. package/source/directives/map/Languages.ts +0 -17
  446. package/source/directives/map/Map.ts +0 -85
  447. package/source/directives/map/Mapping.ts +0 -45
  448. package/source/directives/map/Properties.ts +0 -15
  449. package/source/directives/map/Segments.ts +0 -52
  450. package/source/directives/map/index.ts +0 -3
  451. package/source/directives/mcp/MCP.ts +0 -33
  452. package/source/directives/mcp/Tool.test.ts +0 -56
  453. package/source/directives/mcp/Tool.ts +0 -32
  454. package/source/directives/mcp/index.ts +0 -6
  455. package/source/directives/oauth/Discovery.ts +0 -66
  456. package/source/directives/oauth/documents.ts +0 -110
  457. package/source/directives/oauth/index.ts +0 -3
  458. package/source/directives/octets/Context.ts +0 -23
  459. package/source/directives/octets/Delete.ts +0 -96
  460. package/source/directives/octets/Directive.ts +0 -21
  461. package/source/directives/octets/Get.ts +0 -88
  462. package/source/directives/octets/Octets.ts +0 -82
  463. package/source/directives/octets/Put.ts +0 -186
  464. package/source/directives/octets/Workflow.ts +0 -60
  465. package/source/directives/octets/bytes.test.ts +0 -33
  466. package/source/directives/octets/bytes.ts +0 -18
  467. package/source/directives/octets/index.ts +0 -3
  468. package/source/directives/octets/schemas.test.ts +0 -20
  469. package/source/directives/octets/schemas.ts +0 -15
  470. package/source/directives/octets/types.ts +0 -9
  471. package/source/directives/octets/workflows/Execution.ts +0 -130
  472. package/source/directives/octets/workflows/Workflow.ts +0 -51
  473. package/source/directives/octets/workflows/index.ts +0 -1
  474. package/source/directives/require/Directive.ts +0 -5
  475. package/source/directives/require/Headers.ts +0 -19
  476. package/source/directives/require/Require.ts +0 -27
  477. package/source/directives/require/index.ts +0 -3
  478. package/source/discovery.ts +0 -1
  479. package/source/exceptions.ts +0 -47
  480. package/source/index.ts +0 -12
  481. package/source/io.ts +0 -4
  482. package/source/manifest.test.ts +0 -56
  483. package/source/manifest.ts +0 -56
  484. package/source/octets.d.ts +0 -17
  485. package/source/root.ts +0 -59
  486. package/source/schemas.test.ts +0 -31
  487. package/source/schemas.ts +0 -15
  488. package/source/service.ts +0 -94
  489. package/source/shortcuts.ts +0 -14
  490. package/source/userland.ts +0 -47
  491. package/transpiled/Annotation.d.ts +0 -70
  492. package/transpiled/Annotation.js +0 -2
  493. package/transpiled/Annotation.js.map +0 -1
  494. package/transpiled/RTD/syntax/parse.d.ts +0 -4
  495. package/transpiled/RTD/syntax/parse.js +0 -112
  496. package/transpiled/RTD/syntax/parse.js.map +0 -1
  497. package/transpiled/RTD/syntax/types.d.ts +0 -52
  498. package/transpiled/RTD/syntax/types.js +0 -11
  499. package/transpiled/RTD/syntax/types.js.map +0 -1
  500. package/transpiled/const.d.ts +0 -36
  501. package/transpiled/const.js +0 -37
  502. package/transpiled/const.js.map +0 -1
  503. package/transpiled/deployment.d.ts +0 -6
  504. package/transpiled/deployment.js +0 -76
  505. package/transpiled/deployment.js.map +0 -1
  506. package/transpiled/manifest.d.ts +0 -3
  507. package/transpiled/manifest.js +0 -39
  508. package/transpiled/manifest.js.map +0 -1
  509. package/transpiled/schemas.d.ts +0 -9
  510. package/transpiled/schemas.js +0 -9
  511. package/transpiled/schemas.js.map +0 -1
  512. package/transpiled/shortcuts.d.ts +0 -3
  513. package/transpiled/shortcuts.js +0 -13
  514. package/transpiled/shortcuts.js.map +0 -1
  515. package/tsconfig.json +0 -13
  516. package/tsconfig.tsbuildinfo +0 -1
  517. package/ui/dist/_app/immutable/assets/0.Bl7vLmIK.css +0 -2
  518. package/ui/dist/_app/immutable/assets/2.BC0-Jhqu.css +0 -1
  519. package/ui/dist/_app/immutable/chunks/B_pK3U1C.js +0 -6
  520. package/ui/dist/_app/immutable/chunks/CiKbPLyY.js +0 -1
  521. package/ui/dist/_app/immutable/chunks/DjIYL2zC.js +0 -3
  522. package/ui/dist/_app/immutable/entry/app.DMqmL4NY.js +0 -2
  523. package/ui/dist/_app/immutable/entry/start.CRe7HWBI.js +0 -1
  524. package/ui/dist/_app/immutable/nodes/0.D9m-6cbM.js +0 -1
  525. package/ui/dist/_app/immutable/nodes/1.Cgi_RcSO.js +0 -1
  526. package/ui/dist/_app/immutable/nodes/2.D_Cbxgz4.js +0 -14
@@ -1,60 +0,0 @@
1
- import { NotFound } from '../../HTTP/index.js'
2
- import * as schemas from './schemas.js'
3
- import { Workflow } from './workflows/index.js'
4
- import { Directive } from './Directive.js'
5
- import type { Unit, Location } from './workflows/index.js'
6
- import type { Input } from './types.js'
7
- import type { Component } from '@toa.io/core'
8
- import type { Output } from '../../io.js'
9
- import type { Remotes } from '../../Remotes.js'
10
- import type { Maybe } from '@toa.io/core/types'
11
- import type { Entry } from '@toa.io/extensions.storages'
12
- import type { Parameter } from '../../RTD/index.js'
13
-
14
- export class WorkflowDirective extends Directive {
15
- public readonly targeted = true
16
-
17
- private readonly workflow: Workflow
18
- private readonly discovery: Promise<Component>
19
- private storage: Component | null = null
20
-
21
- public constructor(
22
- units: Unit[] | Unit,
23
- discovery: Promise<Component>,
24
- remotes: Remotes
25
- ) {
26
- super()
27
- schemas.workflow.validate(units)
28
-
29
- this.workflow = new Workflow(units, remotes)
30
- this.discovery = discovery
31
- }
32
-
33
- public async apply(
34
- storage: string,
35
- input: Input,
36
- parameters: Parameter[]
37
- ): Promise<Output> {
38
- this.storage ??= await this.discovery
39
-
40
- const entry = await this.storage.invoke<Maybe<Entry>>('head', {
41
- input: {
42
- storage,
43
- path: input.request.url
44
- }
45
- })
46
-
47
- if (entry instanceof Error) throw new NotFound()
48
-
49
- const location: Location = {
50
- storage,
51
- authority: input.authority,
52
- path: input.request.url
53
- }
54
-
55
- return {
56
- status: 202,
57
- body: this.workflow.execute(location, entry, parameters)
58
- }
59
- }
60
- }
@@ -1,33 +0,0 @@
1
- import { it } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import { toBytes } from './bytes.js'
5
-
6
- it('should parse bytes', async () => {
7
- assert.strictEqual(toBytes('10'), 10)
8
- assert.strictEqual(toBytes('10B'), 10)
9
- })
10
-
11
- it('should parse binary prefix', async () => {
12
- assert.strictEqual(toBytes('10KiB'), 10240)
13
- assert.strictEqual(toBytes('10MiB'), 10485760)
14
- assert.strictEqual(toBytes('10GiB'), 10737418240)
15
- assert.strictEqual(toBytes('10TiB'), 10995116277760)
16
- })
17
-
18
- it('should parse decimal prefix', async () => {
19
- assert.strictEqual(toBytes('10kB'), 10000)
20
- assert.strictEqual(toBytes('10MB'), 10000000)
21
- assert.strictEqual(toBytes('10GB'), 10000000000)
22
- assert.strictEqual(toBytes('10TB'), 10000000000000)
23
- })
24
-
25
- it('should parse incorrect value as binary', async () => {
26
- assert.strictEqual(toBytes('10b'), 10)
27
- assert.strictEqual(toBytes('10kb'), 10240)
28
- assert.strictEqual(toBytes('10kib'), 10240)
29
- assert.strictEqual(toBytes('10mb'), 10485760)
30
- assert.strictEqual(toBytes('10gb'), 10737418240)
31
- assert.strictEqual(toBytes('10tib'), 10995116277760)
32
- assert.strictEqual(toBytes('10Mb'), 10485760)
33
- })
@@ -1,18 +0,0 @@
1
- import assert from 'node:assert'
2
-
3
- export function toBytes(input: string): number {
4
- const match = RX.exec(input)
5
-
6
- assert.ok(match !== null, `Invalid bytes format: ${input}`)
7
-
8
- const value = parseFloat(match.groups!.value)
9
- const prefix = match.groups!.prefix?.[0].toLowerCase() ?? ''
10
- const binary = match.groups!.binary !== undefined || match.groups!.unit === 'b'
11
- const base = binary ? 1024 : 1000
12
- const power = POWERS.indexOf(prefix)
13
-
14
- return value * Math.pow(base, power)
15
- }
16
-
17
- const POWERS = ['', 'k', 'm', 'g', 't']
18
- const RX = /^(?<value>(\d+)(\.\d+)?)(?<prefix>[kmgt](?<binary>i)?)?(?<unit>b)?$/i
@@ -1,3 +0,0 @@
1
- import { Octets } from './Octets.js'
2
-
3
- export const octets = new Octets()
@@ -1,20 +0,0 @@
1
- import { describe, it } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import * as schemas from './schemas.js'
5
-
6
- describe('workflow', () => {
7
- const ok = [{ echo: 'hello world' }, [{ echo: 'hello world' }, { ok: 'ok' }]]
8
-
9
- const oh = [{ echo: [] }, { echo: 'hello world', ok: { not: 'ok' } }]
10
-
11
- for (const workflow of ok)
12
- it('should be valid', () => {
13
- assert.doesNotThrow(() => schemas.workflow.validate(workflow))
14
- })
15
-
16
- for (const workflow of oh)
17
- it('should not be valid', () => {
18
- assert.throws(() => schemas.workflow.validate(workflow))
19
- })
20
- })
@@ -1,15 +0,0 @@
1
- import { resolve } from 'node:path'
2
- import * as schemas from '@toa.io/schemas'
3
- import type { Options as GetOptions } from './Get.js'
4
- import type { Options as PutOptions } from './Put.js'
5
- import type { Options as DeleteOptions } from './Delete.js'
6
- import type { Schema } from '@toa.io/schemas'
7
- import type { Unit } from './workflows/index.js'
8
-
9
- const path = resolve(import.meta.dirname, '../../../schemas/octets')
10
- const namespace = schemas.namespace(path)
11
-
12
- export const put: Schema<PutOptions | null> = namespace.schema('put')
13
- export const get: Schema<GetOptions | null> = namespace.schema('get')
14
- export const remove: Schema<DeleteOptions | null> = namespace.schema('delete')
15
- export const workflow: Schema<Unit[] | Unit> = namespace.schema('workflow')
@@ -1,9 +0,0 @@
1
- import type * as io from '../../io.js'
2
- import type { Identity } from '../auth/types.js' // meh
3
-
4
- export interface Extension {
5
- identity?: Identity
6
- octets?: string
7
- }
8
-
9
- export type Input = io.Input & Extension
@@ -1,130 +0,0 @@
1
- import { Readable } from 'node:stream'
2
- import { console } from 'openspan'
3
- import type { Unit } from './Workflow.js'
4
- import type { Remotes } from '../../../Remotes.js'
5
- import type { Component } from '@toa.io/core'
6
- import type { Maybe } from '@toa.io/core/types'
7
- import type { Entry } from '@toa.io/extensions.storages'
8
-
9
- export class Execution extends Readable {
10
- private readonly units: Unit[]
11
- private readonly remotes: Remotes
12
- private readonly context: Context
13
- private readonly components: Record<string, Component> = {}
14
- private readonly discovery: Record<string, Promise<Component>> = {}
15
- private interrupted = false
16
-
17
- public constructor(context: Context, units: Unit[], remotes: Remotes) {
18
- super({ objectMode: true })
19
-
20
- this.context = context
21
- this.units = units
22
- this.remotes = remotes
23
-
24
- void this.run()
25
- }
26
-
27
- public override _read(): void {}
28
-
29
- private async run(): Promise<void> {
30
- for (const unit of this.units) {
31
- await this.execute(unit)
32
-
33
- if (this.interrupted) break
34
- }
35
-
36
- this.push(null)
37
- }
38
-
39
- private async execute(unit: Unit): Promise<void> {
40
- const promises = Object.entries(unit).map(async ([step, endpoint]) => {
41
- try {
42
- const result = await this.call(endpoint)
43
-
44
- if (result instanceof Readable) return await this.stream(step, result)
45
-
46
- this.report(step, result)
47
- } catch (e: unknown) {
48
- this.exception(step, e)
49
- }
50
- })
51
-
52
- await Promise.all(promises)
53
- }
54
-
55
- private async stream(step: string, stream: Readable): Promise<void> {
56
- try {
57
- for await (const result of stream) this.report(step, result, false)
58
-
59
- this.report(step, undefined, true)
60
- } catch (e: unknown) {
61
- this.exception(step, e)
62
- }
63
- }
64
-
65
- private report(step: string, result?: Maybe<unknown>, completed = true): void {
66
- const report: Report = { step }
67
-
68
- if (completed) report.status = 'completed'
69
-
70
- if (result instanceof Error) {
71
- // an Error cannot be serialized where it sits, and the encoders only unwrap
72
- // one they are handed directly — this one travels nested inside the report
73
- report.error = { ...result }
74
- this.interrupted = true
75
- } else if (result !== undefined) {
76
- report.output = result
77
- this.context.steps[step] = structuredClone(result)
78
- }
79
-
80
- this.push(report)
81
- }
82
-
83
- private exception(step: string, error: unknown): void {
84
- console.error('Workflow exception', error as Error)
85
-
86
- this.push({ step, status: 'exception' } satisfies Report)
87
- this.interrupted = true
88
- }
89
-
90
- private async call(endpoint: string): Promise<Maybe<unknown>> {
91
- const task = endpoint.startsWith('task:')
92
-
93
- if (task) endpoint = endpoint.slice(5)
94
-
95
- const [operation, component, namespace = 'default'] = endpoint.split('.').reverse()
96
- const key = `${namespace}.${component}`
97
-
98
- this.components[key] ??= await this.discover(key, namespace, component)
99
-
100
- return this.components[key].invoke(operation, { input: this.context, task })
101
- }
102
-
103
- private async discover(
104
- key: string,
105
- namespace: string,
106
- component: string
107
- ): Promise<Component> {
108
- if (this.discovery[key] === undefined)
109
- this.discovery[key] = this.remotes.discover(namespace, component)
110
-
111
- return await this.discovery[key]
112
- }
113
- }
114
-
115
- export interface Context {
116
- authority: string
117
- identity?: string
118
- storage: string
119
- path: string
120
- entry: Entry
121
- parameters: Record<string, string>
122
- steps: Record<string, unknown>
123
- }
124
-
125
- interface Report {
126
- step: string
127
- status?: 'completed' | 'exception'
128
- output?: unknown
129
- error?: Record<string, unknown>
130
- }
@@ -1,51 +0,0 @@
1
- import { posix } from 'node:path'
2
- import { match } from 'matchacho'
3
- import { Execution } from './Execution.js'
4
- import type { Entry } from '@toa.io/extensions.storages'
5
- import type { Context } from './Execution.js'
6
- import type { Parameter } from '../../../RTD/index.js'
7
- import type { Remotes } from '../../../Remotes.js'
8
-
9
- export class Workflow {
10
- private readonly units: Unit[]
11
- private readonly remotes: Remotes
12
-
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
- )
21
-
22
- this.remotes = remotes
23
- }
24
-
25
- public execute(location: Location, entry: Entry, params: Parameter[]): Execution {
26
- const parameters: Record<string, string> = {}
27
-
28
- for (const { name, value } of params) parameters[name] = value
29
-
30
- const context: Context = {
31
- authority: location.authority,
32
- identity: location.identity,
33
- storage: location.storage,
34
- path: posix.join(location.path, entry.id),
35
- entry,
36
- parameters,
37
- steps: {}
38
- }
39
-
40
- return new Execution(context, this.units, this.remotes)
41
- }
42
- }
43
-
44
- export interface Location {
45
- authority: string
46
- identity?: string
47
- storage: string
48
- path: string
49
- }
50
-
51
- export type Unit = Record<string, string>
@@ -1 +0,0 @@
1
- export { Workflow, type Unit, type Location } from './Workflow.js'
@@ -1,5 +0,0 @@
1
- import type { Input } from '../../io.js'
2
-
3
- export interface Directive {
4
- precall: (context: Input) => void
5
- }
@@ -1,19 +0,0 @@
1
- import { BadRequest } from '../../HTTP/index.js'
2
- import type { Input } from '../../io.js'
3
- import type { Directive } from './Directive.js'
4
-
5
- export class Headers implements Directive {
6
- private readonly headers: string[]
7
-
8
- public constructor(headers: string[]) {
9
- if (!Array.isArray(headers)) headers = [headers]
10
-
11
- this.headers = headers
12
- }
13
-
14
- public precall(context: Input): void {
15
- for (const header of this.headers)
16
- if (context.request.headers[header] === undefined)
17
- throw new BadRequest(`Header required: ${header}`)
18
- }
19
- }
@@ -1,27 +0,0 @@
1
- import assert from 'node:assert'
2
- import { Headers } from './Headers.js'
3
- import type { Input } from '../../io.js'
4
- import type { Directive } from './Directive.js'
5
- import type { DirectiveFamily } from '../../RTD/index.js'
6
-
7
- export class Require implements DirectiveFamily {
8
- public readonly name = 'require'
9
- public readonly mandatory = false
10
-
11
- public create(name: string, value: unknown): Directive {
12
- assert.ok(name in directives, `Unknown directive: require:${name}`)
13
-
14
- return new directives[name](value)
15
- }
16
-
17
- public precall(instances: Directive[], context: Input): null {
18
- for (const instance of instances) instance.precall(context)
19
-
20
- return null
21
- }
22
- }
23
-
24
- const directives: Record<string, new (value: any) => Directive> = {
25
- header: Headers,
26
- headers: Headers
27
- }
@@ -1,3 +0,0 @@
1
- import { Require } from './Require.js'
2
-
3
- export const req = new Require()
@@ -1 +0,0 @@
1
- export type Label = 'ping' | 'expose'
@@ -1,47 +0,0 @@
1
- import { match } from 'matchacho'
2
- import { console } from 'openspan'
3
- import * as http from './HTTP/index.js'
4
- import { Exception as HTTPException } from './HTTP/index.js'
5
- import type { Exception } from '@toa.io/core'
6
-
7
- export function rethrow(exception: Exception | HTTPException): void {
8
- if (exception instanceof HTTPException) throw exception
9
-
10
- // see /runtime/core/src/exceptions.js
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,
25
- () => {
26
- console.error('Request processing exception', exception)
27
-
28
- return exception
29
- }
30
- )
31
- }
32
-
33
- function badRequest(code: number): boolean {
34
- return (code >= 200 && code < 210) || code === 221
35
- }
36
-
37
- const NOT_FOUND = new http.NotFound()
38
- const PRECONDITION_FAILED = new http.PreconditionFailed()
39
- const CONFLICT = new http.Conflict()
40
-
41
- const CORE_EXCEPTIONS = {
42
- StateNotFound: 302,
43
- StatePrecondition: 303,
44
- StateConcurrency: 304,
45
- EntityGuard: 213,
46
- Duplicate: 306
47
- }
package/source/index.ts DELETED
@@ -1,12 +0,0 @@
1
- export { manifest } from './manifest.js'
2
- export { deployment, image } from './deployment.js'
3
- export { components } from './Composition.js'
4
- export { Factory } from './Factory.js'
5
-
6
- export type { Remotes } from './Remotes.js'
7
-
8
- // what an operation is written against, rather than the gateway's own
9
- export type { Claims, Identity } from './userland.js'
10
-
11
- // what an octets workflow is given
12
- export type * as octets from './octets.js'
package/source/io.ts DELETED
@@ -1,4 +0,0 @@
1
- import type { Context, OutgoingMessage } from './HTTP/index.js'
2
-
3
- export type Input = Context
4
- export type Output = OutgoingMessage | null
@@ -1,56 +0,0 @@
1
- import { it, beforeEach } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import { type Manifest } from '@toa.io/norm'
5
- import { generate } from 'randomstring'
6
- import { manifest } from './manifest.js'
7
-
8
- const name = 'cm-' + generate()
9
- const namespace = 'ns' + generate()
10
-
11
- let mf: Manifest
12
-
13
- const operations = { observe: {} }
14
-
15
- beforeEach(() => {
16
- mf = { namespace, name, operations } as unknown as Manifest
17
- })
18
-
19
- const declaration = {
20
- '/': { GET: 'observe' }
21
- }
22
-
23
- it('should create branch', async () => {
24
- const node = manifest(declaration, mf)
25
-
26
- assert.notStrictEqual(node, undefined)
27
- assert.strictEqual(node.routes.length, 1)
28
- assert.strictEqual(node.routes[0].path, '/' + namespace + '/' + name)
29
- })
30
-
31
- it('should not create node for default namespace', async () => {
32
- mf.namespace = 'default'
33
-
34
- const node = manifest(declaration, mf)
35
-
36
- assert.strictEqual(node.routes.length, 1)
37
- assert.strictEqual(node.routes[0].path, '/' + name)
38
- })
39
-
40
- it('should throw on invalid declaration type', async () => {
41
- assert.throws(
42
- () => manifest('hello' as unknown as object, mf),
43
- (error: any) => /Exposition declaration must be an object/.test(error.message)
44
- )
45
- })
46
-
47
- it('should set namespace and component', async () => {
48
- const node = manifest(declaration, mf)
49
-
50
- const root = node.routes[0].node
51
- const intemediate = root.routes[0].node
52
- const GET = intemediate.methods[0]
53
-
54
- assert.strictEqual(GET.mapping?.namespace, namespace)
55
- assert.strictEqual(GET.mapping?.component, name)
56
- })
@@ -1,56 +0,0 @@
1
- import assert from 'node:assert'
2
- import { parse, type Node, type Method, type Query } from './RTD/syntax/index.js'
3
- import { shortcuts } from './shortcuts.js'
4
- import * as schemas from './schemas.js'
5
- import type { Manifest } from '@toa.io/norm'
6
-
7
- export function manifest(declaration: object, manifest: Manifest): Node {
8
- assert.ok(
9
- typeof declaration === 'object' && declaration !== null,
10
- 'Exposition declaration must be an object'
11
- )
12
-
13
- declaration = wrap(declaration, manifest.namespace, manifest.name)
14
-
15
- const node = parse(declaration, shortcuts)
16
-
17
- specify(node, manifest)
18
- schemas.node.validate(node)
19
-
20
- return node
21
- }
22
-
23
- function wrap(declaration: object, namespace: string, name: string): object {
24
- const path =
25
- (namespace === undefined || namespace === 'default' ? '' : '/' + namespace) +
26
- '/' +
27
- name
28
-
29
- return { [path]: declaration }
30
- }
31
-
32
- function specify(node: Node, manifest: Manifest): void {
33
- for (const route of node.routes) {
34
- for (const method of route.node.methods) specifyMethod(method, manifest)
35
-
36
- specify(route.node, manifest)
37
- }
38
- }
39
-
40
- function specifyMethod(method: Method, manifest: Manifest): void {
41
- if (method.mapping?.endpoint === undefined) return
42
-
43
- const operation = manifest.operations[method.mapping.endpoint]
44
-
45
- assert.ok(operation !== undefined, `Operation '${method.mapping.endpoint}' not found`)
46
-
47
- if (method.mapping.query === undefined)
48
- method.mapping.query = operation.query === false ? null : ({} as unknown as Query)
49
-
50
- // a page is taken of a collection, and of nothing else: an operation that answers one object
51
- // takes no `omit` and no `limit`, and refuses a request that carries them
52
- method.mapping.paged = operation.type === 'observation' && operation.scope === 'objects'
53
-
54
- method.mapping.namespace = manifest.namespace
55
- method.mapping.component = manifest.name
56
- }
@@ -1,17 +0,0 @@
1
- export interface WorkflowInput<
2
- TParameters extends Record<string, string> = Record<string, string>,
3
- TSteps extends Record<string, unknown> = Record<string, unknown>
4
- > {
5
- authority: string
6
- identity?: string
7
- storage: string
8
- path: string
9
- entry: {
10
- id: string
11
- type: string
12
- size: number
13
- meta: Record<string, unknown>
14
- }
15
- parameters: TParameters
16
- steps: TSteps
17
- }
package/source/root.ts DELETED
@@ -1,59 +0,0 @@
1
- import { environment, merge } from '@toa.io/generic'
2
- import { syntax } from './RTD/index.js'
3
-
4
- export function resolve(): syntax.Node {
5
- const value = environment.get('TOA_EXPOSITION')
6
- const root =
7
- value !== undefined ? (JSON.parse(value) as syntax.Node) : syntax.createNode()
8
-
9
- merge(root, PREDEFINED)
10
-
11
- return root
12
- }
13
-
14
- const PREDEFINED: syntax.Node = {
15
- routes: [
16
- {
17
- path: '/identity',
18
- node: {
19
- isolated: true,
20
- routes: [],
21
- methods: [
22
- {
23
- verb: 'GET',
24
- directives: [
25
- {
26
- family: 'io',
27
- name: 'output',
28
- value: ['id', 'roles']
29
- },
30
- {
31
- family: 'auth',
32
- name: 'echo',
33
- value: null
34
- }
35
- ]
36
- },
37
- {
38
- verb: 'POST',
39
- directives: [
40
- {
41
- family: 'io',
42
- name: 'output',
43
- value: ['id', 'roles']
44
- },
45
- {
46
- family: 'auth',
47
- name: 'incept',
48
- value: null
49
- }
50
- ]
51
- }
52
- ],
53
- directives: []
54
- }
55
- }
56
- ],
57
- methods: [],
58
- directives: []
59
- }