@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
package/source/Tenant.ts DELETED
@@ -1,73 +0,0 @@
1
- import { setTimeout } from 'node:timers/promises'
2
- import { Connector } from '@toa.io/core'
3
- import { BRANCH_TTL } from './const.js'
4
- import type { bindings } from '@toa.io/core/types'
5
- import type { Label } from './discovery.js'
6
- import type { Branch } from './Branch.js'
7
-
8
- export class Tenant extends Connector {
9
- private readonly broadcast: Broadcast
10
- private readonly branch: Omit<Branch, 'timestamp'>
11
- private started = 0
12
- private stopped = false
13
-
14
- public constructor(broadcast: Broadcast, branch: Omit<Branch, 'timestamp'>) {
15
- super()
16
-
17
- this.broadcast = broadcast
18
- this.branch = branch
19
-
20
- this.depends(broadcast)
21
- }
22
-
23
- public override async open(): Promise<void> {
24
- this.started = Date.now()
25
-
26
- await this.expose()
27
- await this.broadcast.receive('ping', this.expose.bind(this))
28
-
29
- void this.announce()
30
- }
31
-
32
- /**
33
- * Announcing is stopped where the teardown begins, not in `dispose`, which a connector
34
- * runs after every one of its dependencies has gone. A component on its way out that
35
- * announces itself once more has its routes held open by whoever is listening, and the
36
- * requests that follow reach nothing.
37
- */
38
- protected override async close(): Promise<void> {
39
- this.stopped = true
40
- }
41
-
42
- private async announce(): Promise<void> {
43
- while (!this.stopped) {
44
- const delay = exposeInterval(Date.now() - this.started)
45
-
46
- await setTimeout(delay, undefined, { ref: false })
47
-
48
- if (this.stopped) break
49
-
50
- await this.expose()
51
- }
52
- }
53
-
54
- private async expose(): Promise<void> {
55
- // the ping subscription outlives the announcing loop, and answering one on the way out
56
- // is the same announcement by another route
57
- if (this.stopped) return
58
-
59
- await this.broadcast.transmit('expose', { ...this.branch, timestamp: this.started })
60
- }
61
- }
62
-
63
- function exposeInterval(uptime: number): number {
64
- return Math.round(
65
- EXPOSE_MAX - (EXPOSE_MAX - EXPOSE_MIN) * Math.exp(-uptime / EXPOSE_TAU)
66
- )
67
- }
68
-
69
- const EXPOSE_MIN = 5_000
70
- const EXPOSE_MAX = Math.round(BRANCH_TTL / 2.1)
71
- const EXPOSE_TAU = 900_000
72
-
73
- type Broadcast = bindings.Broadcast<Label>
package/source/const.ts DELETED
@@ -1,45 +0,0 @@
1
- export const BRANCH_TTL = 1_800_000
2
-
3
- /** The broadcast the gateway and its tenants share. */
4
- export const CHANNEL = 'exposition'
5
-
6
- /** The replicas of the gateway decide together, whatever context they serve. */
7
- export const ATOM_GROUP = 'exposition'
8
-
9
- /**
10
- * Where JSON-RPC is served, for every procedure at once. Pinned rather than configured: a
11
- * path an application could choose is a path it could collide with a route of its own.
12
- */
13
- export const RPC = '/.rpc'
14
-
15
- /** Calls one request may carry where the annotation does not say. */
16
- export const BATCH = 32
17
-
18
- /**
19
- * Where the Model Context Protocol is served. Pinned for the reason `/.rpc` is: a path an
20
- * application could choose is a path it could collide with a route of its own.
21
- */
22
- export const MCP = '/.mcp'
23
-
24
- /**
25
- * Where the resource tree and the page that reads it are served. Pinned for the reason
26
- * `/.rpc` is: a path an application could choose is a path it could collide with a route of
27
- * its own. Unlike those two it is not annotated — every entry it carries is what `OPTIONS`
28
- * on that path already answers to the same caller, and what it adds is the enumeration.
29
- */
30
- export const DISCOVERY = '/.discovery'
31
-
32
- /** Where the gateway serves. */
33
- export const PORT = 8000
34
-
35
- /**
36
- * Reserved for the readiness probe. `8001` is the Telemetry readiness probe's, and `toa export`
37
- * refuses a port claimed twice — `toa mono` and a local run put every service in one process.
38
- */
39
- export const PROBE = 8004
40
-
41
- /**
42
- * The initial delay of the readiness probe. The server does not sleep for it: whoever
43
- * probes is the one that waits, and doing it here as well only delayed the process twice.
44
- */
45
- export const DELAY = 3 // seconds
@@ -1,96 +0,0 @@
1
- import { readFileSync } from 'node:fs'
2
- import assert from 'node:assert'
3
- import { type Dependency, type Service } from '@toa.io/operations'
4
- import { type Annotation } from './Annotation.js'
5
- import * as schemas from './schemas.js'
6
- import { shortcuts } from './shortcuts.js'
7
- import { components } from './Composition.js'
8
- import { parse } from './RTD/syntax/index.js'
9
- import { DELAY, PORT, PROBE } from './const.js'
10
-
11
- /** Where Toa's release publishes this service's image. An application takes it
12
- * instead of building one when its context says `registry.services: published`. */
13
- export const image = 'ghcr.io/toa-io/extension-exposition-gateway'
14
-
15
- export function deployment(_: unknown, annotation?: Annotation): Dependency {
16
- assert.ok(annotation !== undefined, 'Exposition context annotation is required')
17
- schemas.annotation.validate(annotation)
18
-
19
- const labels = components().labels
20
-
21
- const service: Service = {
22
- group: 'exposition',
23
- name: 'gateway',
24
- image,
25
- port: PORT,
26
- version: JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'))
27
- .version,
28
- variables: [],
29
- components: labels,
30
- resources: annotation.resources,
31
- ingress: { path: '/', hosts: [] },
32
- probe: {
33
- path: '/.ready',
34
- port: PROBE,
35
- delay: DELAY
36
- }
37
- }
38
-
39
- if (annotation?.['/'] !== undefined) {
40
- const tree = parse(annotation['/'], shortcuts)
41
-
42
- service.variables!.push({
43
- name: 'TOA_EXPOSITION',
44
- value: JSON.stringify(tree)
45
- })
46
- }
47
-
48
- const { debug, authorities } = annotation
49
-
50
- service.ingress!.hosts = Object.values(authorities)
51
-
52
- // leaving these undefined lets the context's own ingress section supply them
53
- if (annotation.class !== undefined) service.ingress!.class = annotation.class
54
-
55
- if (annotation.annotations !== undefined)
56
- service.ingress!.annotations = annotation.annotations
57
-
58
- if (annotation.service?.annotations !== undefined)
59
- service.annotations = annotation.service.annotations
60
-
61
- const properties: Properties = { authorities }
62
-
63
- if (debug === true) properties.debug = true
64
-
65
- if (annotation.protocol !== undefined) properties.protocol = annotation.protocol
66
-
67
- if (annotation.ip !== undefined) properties.ip = annotation.ip
68
-
69
- if (annotation.bouncer !== undefined) properties.bouncer = annotation.bouncer
70
-
71
- if (annotation.oauth !== undefined) properties.oauth = annotation.oauth
72
-
73
- if (annotation.rpc !== undefined) properties.rpc = annotation.rpc
74
-
75
- if (annotation.mcp !== undefined) properties.mcp = annotation.mcp
76
-
77
- service.variables!.push({
78
- name: 'TOA_EXPOSITION_PROPERTIES',
79
- value: JSON.stringify(properties)
80
- })
81
-
82
- // The identity composition nested in this process connects before route discovery settles,
83
- // so telemetry's probe — which tracks that composition — would report ready too early.
84
- // The gateway answers for itself, on the same port telemetry would have used.
85
- service.variables!.push({
86
- name: 'TOA_TELEMETRY_READY',
87
- value: JSON.stringify(false)
88
- })
89
-
90
- return { services: [service] }
91
- }
92
-
93
- type Properties = Pick<
94
- Annotation,
95
- 'authorities' | 'debug' | 'protocol' | 'bouncer' | 'ip' | 'oauth' | 'rpc' | 'mcp'
96
- >
@@ -1,70 +0,0 @@
1
- import { describe, it } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import { Anonymous } from './Anonymous.js'
5
- import type { Context } from './types.js'
6
-
7
- const context = (
8
- headers: Record<string, string>,
9
- flags: { procedural?: boolean; exploratory?: boolean } = {}
10
- ): Context =>
11
- ({
12
- request: { headers },
13
- procedural: false,
14
- exploratory: false,
15
- ...flags
16
- }) as unknown as Context
17
-
18
- describe('anonymous', () => {
19
- it('should admit a request that presents nothing', () => {
20
- assert.equal(new Anonymous(true).authorize(null, context({})), true)
21
- })
22
-
23
- it('should refuse a request that presents a credential', () => {
24
- // it would make the reply uncacheable, which is the whole of the rule
25
- assert.equal(
26
- new Anonymous(true).authorize(null, context({ authorization: 'Token x' })),
27
- false
28
- )
29
- })
30
-
31
- it('should admit a procedure whatever the request presented', () => {
32
- // what a procedure answers is a value in an envelope, and the envelope is `no-store`
33
- const procedural = context({ authorization: 'Token x' }, { procedural: true })
34
-
35
- assert.equal(new Anonymous(true).authorize(null, procedural), true)
36
- })
37
-
38
- it('should admit a description whatever the request presented', () => {
39
- // a description is not the reply a cache would hold, and varies by who asked in any case
40
- const exploratory = context({ authorization: 'Token x' }, { exploratory: true })
41
-
42
- assert.equal(new Anonymous(true).authorize(null, exploratory), true)
43
- })
44
-
45
- it('should refuse where it admits nobody', () => {
46
- assert.equal(new Anonymous(false).authorize(null, context({})), false)
47
- assert.equal(
48
- new Anonymous(false).authorize(null, context({}, { procedural: true })),
49
- false
50
- )
51
- assert.equal(
52
- new Anonymous(false).authorize(null, context({}, { exploratory: true })),
53
- false
54
- )
55
- })
56
-
57
- it('should describe a method as it authorizes one', () => {
58
- const directive = new Anonymous(true)
59
-
60
- assert.equal(directive.admits(null, context({ authorization: 'Token x' })), false)
61
- assert.equal(
62
- directive.admits(null, context({ authorization: 'Token x' }, { procedural: true })),
63
- true
64
- )
65
- assert.equal(
66
- directive.admits(null, context({ authorization: 'Token x' }, { exploratory: true })),
67
- true
68
- )
69
- })
70
- })
@@ -1,36 +0,0 @@
1
- import { type Directive, type Context } from './types.js'
2
- import type { Introspection } from '../../Introspection.js'
3
-
4
- export class Anonymous implements Directive {
5
- private readonly allow: boolean
6
-
7
- public constructor(allow: boolean) {
8
- this.allow = allow
9
- }
10
-
11
- /**
12
- * A credential refuses, because it would make the reply uncacheable — which is the whole
13
- * of the rule, and none of it applies to a procedure, nor to a description. What a
14
- * procedure answers is a value in an envelope, and the envelope is the one thing that is
15
- * cached or not; what a description answers is what the resource is, which is not the
16
- * reply a cache would hold and varies by who asked in any case.
17
- */
18
- public authorize(_: any, context: Context): boolean {
19
- if (context.procedural || context.exploratory) return this.allow
20
-
21
- return 'authorization' in context.request.headers ? false : this.allow
22
- }
23
-
24
- public admits(_: any, context: Context): boolean {
25
- return this.authorize(_, context)
26
- }
27
-
28
- /**
29
- * That nothing guards it is something said rather than something left unsaid: it is also
30
- * what refuses a caller presenting a credential, and a client with one has to know which
31
- * methods not to present it to.
32
- */
33
- public describe(introspection: Introspection): Introspection {
34
- return this.allow ? { ...introspection, anonymous: true } : introspection
35
- }
36
- }
@@ -1,23 +0,0 @@
1
- import { type Directive, type Context } from './types.js'
2
- import type { Introspection } from '../../Introspection.js'
3
-
4
- export class Anyone implements Directive {
5
- private readonly allow: boolean
6
-
7
- public constructor(allow: boolean) {
8
- this.allow = allow
9
- }
10
-
11
- public authorize(_: any, context: Context): boolean {
12
- return context.identity !== null && this.allow
13
- }
14
-
15
- public admits(_: any, context: Context): boolean {
16
- return this.authorize(_, context)
17
- }
18
-
19
- /** Whoever asks, as long as they are somebody. */
20
- public describe(introspection: Introspection): Introspection {
21
- return this.allow ? { ...introspection, authenticated: true } : introspection
22
- }
23
- }
@@ -1,43 +0,0 @@
1
- import assert from 'node:assert'
2
- import { newid } from '@toa.io/generic'
3
- import * as http from '../../HTTP/index.js'
4
- import { Incept } from './Incept.js'
5
- import type { Context, Directive, Identity } from './types.js'
6
-
7
- export class Assert implements Directive {
8
- private readonly disabled: boolean
9
-
10
- public constructor(enabled: boolean) {
11
- assert.ok(
12
- typeof enabled === 'boolean',
13
- '`auth:assert` directive value must be a boolean'
14
- )
15
-
16
- this.disabled = !enabled
17
- }
18
-
19
- /** It admits nobody: it is there to require a credential, not to authorize one. */
20
- public admits(): boolean {
21
- return false
22
- }
23
-
24
- public async authorize(identity: Identity | null, context: Context): Promise<boolean> {
25
- if (!this.disabled) await this.incept(context, identity)
26
-
27
- return false
28
- }
29
-
30
- private async incept(context: Context, identity: Identity | null): Promise<void> {
31
- if (context.request.headers.authorization === undefined) throw new http.Unauthorized()
32
-
33
- if (identity === null) {
34
- if (!Incept.acceptable(context)) throw new http.Unauthorized()
35
-
36
- context.identity = await Incept.incept(context, newid())
37
-
38
- context.pipelines.response.push((response) => {
39
- response.status = 201
40
- })
41
- }
42
- }
43
- }
@@ -1,24 +0,0 @@
1
- import { it } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import { permits } from './Authorization.js'
5
-
6
- const permissions = { '/users/me/**': ['GET'], '/notes/': ['*'] }
7
-
8
- it('should permit a matching method and path', () => {
9
- assert.equal(permits(permissions, 'GET', '/users/me/posts/'), true)
10
- assert.equal(permits(permissions, 'DELETE', '/notes/'), true)
11
- })
12
-
13
- it('should refuse another method or path', () => {
14
- assert.equal(permits(permissions, 'POST', '/users/me/posts/'), false)
15
- assert.equal(permits(permissions, 'GET', '/admin/'), false)
16
- })
17
-
18
- it('should be matched on the routed path, not on the request URL', () => {
19
- const raw = '/users/me/%2e%2e/admin/'
20
- const routed = new URL(raw, 'https://example.com').pathname
21
-
22
- assert.equal(routed, '/users/admin/')
23
- assert.equal(permits(permissions, 'GET', routed), false)
24
- })