@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,31 +0,0 @@
1
- import { it } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import * as schemas from './schemas.js'
5
-
6
- const authorities = { nex: 'nex.toa.io' }
7
-
8
- it('should require ip with bouncer', () => {
9
- assert.throws(() => schemas.annotation.validate({ authorities, bouncer: {} }))
10
- assert.doesNotThrow(() =>
11
- schemas.annotation.validate({ authorities, bouncer: {}, ip: 'x-real-ip' })
12
- )
13
- assert.doesNotThrow(() => schemas.annotation.validate({ authorities, ip: 'x-real-ip' }))
14
- })
15
-
16
- it('should default nothing in bouncer', () => {
17
- assert.doesNotThrow(() =>
18
- schemas.annotation.validate({
19
- authorities,
20
- ip: 'x-real-ip',
21
- bouncer: { attempts: 5 }
22
- })
23
- )
24
- assert.throws(() =>
25
- schemas.annotation.validate({
26
- authorities,
27
- ip: 'x-real-ip',
28
- bouncer: { attempts: 0 }
29
- })
30
- )
31
- })
package/source/schemas.ts DELETED
@@ -1,15 +0,0 @@
1
- import { resolve } from 'node:path'
2
- import * as schemas from '@toa.io/schemas'
3
- import type { Query } from './HTTP/index.js'
4
- import type { Node } from './RTD/index.js'
5
- import type { Call } from './RPC/types.js'
6
- import type { Schema } from '@toa.io/schemas'
7
- import type { Annotation } from './Annotation.js'
8
-
9
- const path = resolve(import.meta.dirname, '../schemas')
10
- const namespace = schemas.namespace(path)
11
-
12
- export const querystring: Schema<Query> = namespace.schema('querystring')
13
- export const annotation: Schema<Annotation> = namespace.schema('annotation')
14
- export const node: Schema<Node> = namespace.schema('node')
15
- export const call: Schema<Call> = namespace.schema('call')
package/source/service.ts DELETED
@@ -1,94 +0,0 @@
1
- import assert from 'node:assert'
2
- import { console, traces, type LevelName, type TracesOptions } from 'openspan'
3
- import { Gateway } from './Gateway.js'
4
- import { Remotes } from './Remotes.js'
5
- import { Tree } from './RTD/index.js'
6
- import { EndpointsFactory } from './Endpoint.js'
7
- import { families, interceptors } from './directives/index.js'
8
- import { DirectivesFactory } from './Directive.js'
9
- import { Composition } from './Composition.js'
10
- import * as root from './root.js'
11
- import { ATOM_GROUP, CHANNEL } from './const.js'
12
- import { Interception } from './Interception.js'
13
- import { Dispatcher } from './RPC/index.js'
14
- import { Server as Model } from './MCP/index.js'
15
- import * as http from './HTTP/index.js'
16
- import { environment } from '@toa.io/generic'
17
- import type { Broadcast } from './Gateway.js'
18
- import type { Connector } from '@toa.io/core'
19
- import type { Host } from './Factory.js'
20
-
21
- /**
22
- * The gateway. A composition loads this extension for its tenants alone, so what the
23
- * gateway is made of is reached from here and nowhere the factory imports.
24
- */
25
- export async function service(host: Host): Promise<Connector | null> {
26
- const properties = environment.get('TOA_EXPOSITION_PROPERTIES')
27
-
28
- assert.ok(properties !== undefined, 'TOA_EXPOSITION_PROPERTIES is undefined')
29
-
30
- configureLogs()
31
-
32
- const options = JSON.parse(properties) as http.Options
33
- const broadcast: Broadcast = await host.broadcast(CHANNEL)
34
- const server = http.Server.create({ ...options })
35
- const remotes = new Remotes(host)
36
- const node = root.resolve()
37
- const methods = new EndpointsFactory(remotes)
38
- const directives = new DirectivesFactory(families, remotes, host, options)
39
- const interception = new Interception(interceptors, options)
40
- const tree = new Tree(node, methods, directives)
41
-
42
- const composition = new Composition(host)
43
- const dispatcher = options.rpc === undefined ? null : new Dispatcher(options.rpc)
44
- const mcp = options.mcp === undefined ? null : new Model(options.mcp, tree)
45
- const gateway = new Gateway(broadcast, tree, interception, directives, dispatcher, mcp)
46
-
47
- gateway.depends(remotes)
48
- gateway.depends(composition)
49
- // what the directives meter through; one atom per process, connected once
50
- gateway.depends(host.atom(ATOM_GROUP))
51
-
52
- server.attach(gateway.process.bind(gateway))
53
- server.depends(gateway)
54
-
55
- return server
56
- }
57
-
58
- const LOGS_PREFIX = 'TOA_TELEMETRY_LOGS'
59
- const TRACES_ENV = 'TOA_TELEMETRY_TRACES'
60
-
61
- function configureLogs(): void {
62
- const globEnv = environment.get(LOGS_PREFIX)
63
- const level: LevelName = environment.get('TOA_DEV') === '1' ? 'trace' : 'info'
64
- const options =
65
- globEnv === undefined ? { level } : (JSON.parse(globEnv) as { level?: LevelName })
66
-
67
- console.configure({ level: options.level ?? level })
68
-
69
- const tracesEnv = environment.get(TRACES_ENV)
70
- const tracing =
71
- tracesEnv === undefined ? development() : (JSON.parse(tracesEnv) as TracesOptions)
72
-
73
- // `openspan` is not Toa's and reads the environment, which no longer holds the context by
74
- // the time the exporter is made — so the service is named here
75
- if (tracing.exporters?.otlp !== undefined)
76
- tracing.exporters.otlp.service ??= environment.get('TOA_CONTEXT')
77
-
78
- traces(tracing)
79
- }
80
-
81
- /**
82
- * Tracing is off unless it is configured. The console exporter is a local development
83
- * mechanism, so it is turned on for `toa dev` and for a boot trace the CLI has already
84
- * asked for (`runtime/boot/src/span.js`), and nowhere else — a deployment that wants
85
- * traces annotates `telemetry.traces.exporters`.
86
- *
87
- * The gateway boots without the telemetry extension, hence the copy of
88
- * `extensions/telemetry/source/extension.ts`.
89
- */
90
- function development(): TracesOptions {
91
- const local = environment.get('TOA_DEV') === '1' || environment.get('TOA_BOOT_TRACE') === '1'
92
-
93
- return local ? { exporters: { console: {} } } : {}
94
- }
@@ -1,14 +0,0 @@
1
- import type { Shortcuts } from './RTD/syntax/index.js'
2
-
3
- /** What a directive may be written as, where the family is implied. */
4
- export const shortcuts: Shortcuts = new Map([
5
- ['anonymous', 'auth:anonymous'],
6
- ['anyone', 'auth:anyone'],
7
- ['id', 'auth:id'],
8
- ['role', 'auth:role'],
9
- ['rule', 'auth:rule'],
10
- ['incept', 'auth:incept'],
11
- ['input', 'io:input'],
12
- ['output', 'io:output'],
13
- ['languages', 'map:languages']
14
- ])
@@ -1,47 +0,0 @@
1
- /**
2
- * What Exposition puts into an operation's input, for the operation to be written against.
3
- *
4
- * The gateway's own types are its business; these are the application's.
5
- */
6
-
7
- /**
8
- * The identity behind the call, as `auth:delegate` embeds it:
9
- *
10
- * ```yaml
11
- * /echo:
12
- * GET:
13
- * auth:assert: true
14
- * auth:delegate: identity
15
- * endpoint: echo
16
- * ```
17
- *
18
- * ```javascript
19
- * export async function computation ({ identity }, context) { }
20
- * ```
21
- */
22
- export interface Identity {
23
- readonly id: string
24
-
25
- /** What the identity holds. Delegation resolves them, so they are always here. */
26
- roles: string[]
27
-
28
- permissions?: Record<string, string[]>
29
-
30
- /** How the identity was authenticated; `null` for a transient one. */
31
- scheme: string | null
32
-
33
- /** Whether the credentials presented are due to be exchanged. */
34
- refresh: boolean
35
-
36
- /** The token's claims, where the identity was federated. */
37
- claims?: Claims
38
- }
39
-
40
- /** A federated token's payload: what it must carry, and whatever else the issuer put there. */
41
- export interface Claims {
42
- iss: string
43
- sub: string
44
- aud?: string | string[]
45
-
46
- [claim: string]: unknown
47
- }
@@ -1,70 +0,0 @@
1
- import type { Resources } from '@toa.io/operations';
2
- import type { Protocol } from './HTTP/index.js';
3
- export interface Annotation {
4
- authorities: Record<string, string>;
5
- /**
6
- * `h2c` requires an ingress controller that proxies cleartext HTTP/2 upstream.
7
- * See `documentation/protocol.md`.
8
- */
9
- protocol?: Protocol;
10
- class?: string;
11
- resources?: Resources;
12
- annotations?: Record<string, string>;
13
- /** The Service, as opposed to the Ingress that `annotations` above describes. */
14
- service?: {
15
- annotations?: Record<string, string>;
16
- };
17
- debug?: boolean;
18
- /** The header the client address is read from; the connection's without one. See `ip.md`. */
19
- ip?: string;
20
- /** Failed authentications an address may make; none are metered unless set. See `identity.md`. */
21
- bouncer?: Bouncer;
22
- /** The authorization server this context exposes; none is exposed without it. */
23
- oauth?: OAuth;
24
- /** JSON-RPC at `/.rpc`; none is served without it. See `documentation/rpc.md`. */
25
- rpc?: RPC;
26
- /** MCP at `/.mcp`; none is served without it. See `documentation/mcp.md`. */
27
- mcp?: MCP;
28
- '/'?: object;
29
- }
30
- export interface OAuth {
31
- /**
32
- * Where a client sends the user to consent. The one endpoint of the flow that needs a
33
- * person, and so the one this extension does not serve: an application builds it.
34
- */
35
- authorize: string;
36
- /** Paths a token may be restricted to, each advertised as a protected resource. */
37
- resources?: string[];
38
- /** What a client may ask for. Each is a role, or a scope within one. */
39
- scopes?: string[];
40
- /** Origins whose Client ID Metadata Documents may be read. None are without it. */
41
- trust?: string[];
42
- /** Dynamic Client Registration, off unless opened. */
43
- registration?: 'open' | 'closed';
44
- }
45
- export interface RPC {
46
- /**
47
- * Calls one request may carry, 32 by default. One request is one authentication and one
48
- * reply however many calls it makes, so what a caller may ask for at once is bounded.
49
- */
50
- batch?: number;
51
- }
52
- export interface MCP {
53
- /** What the server calls itself, which a client shows a user. */
54
- name: string;
55
- /** What a model is told before it calls anything here. */
56
- instructions?: string;
57
- /**
58
- * Browser origins the endpoint answers, which the revision requires against DNS rebinding.
59
- * None are admitted without it; a request carrying no `Origin` is not a browser's.
60
- */
61
- origins?: string[];
62
- /** Whether the endpoint answers without a credential. It does not unless it says so. */
63
- anonymous?: boolean;
64
- }
65
- export interface Bouncer {
66
- /** what an address may fail at once, 20 by default */
67
- attempts?: number;
68
- /** seconds it takes to earn them back, 60 by default */
69
- interval?: number;
70
- }
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=Annotation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"Annotation.js","sourceRoot":"","sources":["../source/Annotation.ts"],"names":[],"mappings":""}
@@ -1,4 +0,0 @@
1
- import { type Node } from './types.js';
2
- export declare function parse(input: object, shortcuts?: Shortcuts): Node;
3
- export declare function createNode(): Node;
4
- export type Shortcuts = Map<string, string>;
@@ -1,112 +0,0 @@
1
- import * as schemas from '../../schemas.js';
2
- import { verbs } from './types.js';
3
- export function parse(input, shortcuts) {
4
- const node = parseNode(input, shortcuts);
5
- schemas.node.validate(node);
6
- return node;
7
- }
8
- function parseNode(input, shortcuts) {
9
- const node = createNode();
10
- if (typeof input === 'string') {
11
- node.forward = input;
12
- return node;
13
- }
14
- for (const [key, value] of Object.entries(input))
15
- switch (key) {
16
- case 'protected':
17
- case 'isolated':
18
- node[key] = value;
19
- break;
20
- case 'forward':
21
- node[key] = value;
22
- break;
23
- default:
24
- // eslint-disable-next-line max-depth
25
- if (key[0] === '/') {
26
- const route = parseRoute(key, value, shortcuts);
27
- node.routes.push(route);
28
- continue;
29
- }
30
- // eslint-disable-next-line max-depth
31
- if (verbs.has(key)) {
32
- const method = parseMethod(key, value, shortcuts);
33
- node.methods.push(method);
34
- continue;
35
- }
36
- // eslint-disable-next-line no-case-declarations
37
- const directive = parseDirective(key, value, shortcuts);
38
- // eslint-disable-next-line max-depth
39
- if (directive !== null) {
40
- node.directives.push(directive);
41
- continue;
42
- }
43
- throw new Error(`RTD parse error: unknown key '${key}'`);
44
- }
45
- return node;
46
- }
47
- export function createNode() {
48
- return {
49
- routes: [],
50
- methods: [],
51
- directives: []
52
- };
53
- }
54
- function parseRoute(path, value, shortcuts) {
55
- const node = parse(value, shortcuts);
56
- return createRoute(path, node);
57
- }
58
- function createRoute(path, node) {
59
- return { path, node };
60
- }
61
- function parseMethod(verb, value, shortcuts) {
62
- const mapping = typeof value === 'string' ? { endpoint: value } : value;
63
- parseEndpoint(mapping);
64
- parseQuery(mapping);
65
- const directives = parseDirectives(mapping, shortcuts);
66
- return { verb, mapping, directives };
67
- }
68
- function parseEndpoint(mapping) {
69
- if (mapping.endpoint === undefined)
70
- return;
71
- const [endpoiont, component, namespace] = mapping.endpoint.split('.').reverse();
72
- if (component !== undefined) {
73
- mapping.component = component;
74
- mapping.namespace = namespace ?? mapping.namespace ?? 'default';
75
- mapping.endpoint = endpoiont;
76
- }
77
- }
78
- function parseQuery(mapping) {
79
- const query = mapping.query;
80
- if (query === undefined || query === null)
81
- return;
82
- if (typeof query.limit === 'number')
83
- query.limit = expandRange(query.limit);
84
- if (typeof query.omit === 'number')
85
- query.omit = expandRange(query.omit);
86
- }
87
- function parseDirectives(mapping, shortcuts) {
88
- const directives = [];
89
- for (const [key, value] of Object.entries(mapping)) {
90
- const directive = parseDirective(key, value, shortcuts);
91
- if (directive === null)
92
- continue;
93
- directives.push(directive);
94
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
95
- delete mapping[key];
96
- }
97
- return directives;
98
- }
99
- function parseDirective(key, value, shortcuts) {
100
- if (shortcuts?.has(key) === true)
101
- key = shortcuts.get(key); // eslint-disable-line @typescript-eslint/no-non-null-assertion
102
- const match = key.match(DIRECTIVE_RX);
103
- if (match === null)
104
- return null;
105
- const { family, name } = match.groups;
106
- return { family, name, value };
107
- }
108
- function expandRange(range) {
109
- return { value: range, range: [range, range] };
110
- }
111
- const DIRECTIVE_RX = /^(?<family>\w{1,32}):(?<name>\w{1,32})$/;
112
- //# sourceMappingURL=parse.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../source/RTD/syntax/parse.ts"],"names":[],"mappings":"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"}
@@ -1,52 +0,0 @@
1
- export interface Node {
2
- protected?: boolean;
3
- isolated?: boolean;
4
- forward?: string;
5
- routes: Route[];
6
- methods: Method[];
7
- directives: Directive[];
8
- }
9
- export interface Route {
10
- path: string;
11
- node: Node;
12
- }
13
- export interface Method {
14
- verb: string;
15
- mapping?: Mapping;
16
- directives: Directive[];
17
- }
18
- export interface Directive {
19
- family: string;
20
- name: string;
21
- value: any;
22
- }
23
- export interface Mapping {
24
- namespace?: string;
25
- component?: string;
26
- endpoint: string;
27
- query?: Query | null;
28
- /**
29
- * Whether the operation this maps to answers a page of a collection, and so takes the
30
- * `omit` and `limit` a page is taken by. Written where the component's manifest is read,
31
- * beside `namespace` and `component`, and not declared.
32
- */
33
- paged?: boolean;
34
- }
35
- export interface Query {
36
- id?: string;
37
- criteria?: string;
38
- search?: boolean;
39
- sample?: number;
40
- sort?: string;
41
- omit?: Range;
42
- limit?: Range;
43
- selectors?: string[];
44
- projection?: string[];
45
- parameters?: string[];
46
- deleted?: boolean;
47
- }
48
- export interface Range {
49
- value?: number;
50
- range: [number, number];
51
- }
52
- export declare const verbs: Set<string>;
@@ -1,11 +0,0 @@
1
- export const verbs = new Set([
2
- 'GET',
3
- 'HEAD',
4
- 'POST',
5
- 'PUT',
6
- 'PATCH',
7
- 'DELETE',
8
- 'LOCK',
9
- 'UNLOCK'
10
- ]);
11
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../source/RTD/syntax/types.ts"],"names":[],"mappings":"AA2DA,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAS;IACnC,KAAK;IACL,MAAM;IACN,MAAM;IACN,KAAK;IACL,OAAO;IACP,QAAQ;IACR,MAAM;IACN,QAAQ;CACT,CAAC,CAAA"}
@@ -1,36 +0,0 @@
1
- export declare const BRANCH_TTL = 1800000;
2
- /** The broadcast the gateway and its tenants share. */
3
- export declare const CHANNEL = "exposition";
4
- /** The replicas of the gateway decide together, whatever context they serve. */
5
- export declare const ATOM_GROUP = "exposition";
6
- /**
7
- * Where JSON-RPC is served, for every procedure at once. Pinned rather than configured: a
8
- * path an application could choose is a path it could collide with a route of its own.
9
- */
10
- export declare const RPC = "/.rpc";
11
- /** Calls one request may carry where the annotation does not say. */
12
- export declare const BATCH = 32;
13
- /**
14
- * Where the Model Context Protocol is served. Pinned for the reason `/.rpc` is: a path an
15
- * application could choose is a path it could collide with a route of its own.
16
- */
17
- export declare const MCP = "/.mcp";
18
- /**
19
- * Where the resource tree and the page that reads it are served. Pinned for the reason
20
- * `/.rpc` is: a path an application could choose is a path it could collide with a route of
21
- * its own. Unlike those two it is not annotated — every entry it carries is what `OPTIONS`
22
- * on that path already answers to the same caller, and what it adds is the enumeration.
23
- */
24
- export declare const DISCOVERY = "/.discovery";
25
- /** Where the gateway serves. */
26
- export declare const PORT = 8000;
27
- /**
28
- * Reserved for the readiness probe. `8001` is the Telemetry readiness probe's, and `toa export`
29
- * refuses a port claimed twice — `toa mono` and a local run put every service in one process.
30
- */
31
- export declare const PROBE = 8004;
32
- /**
33
- * The initial delay of the readiness probe. The server does not sleep for it: whoever
34
- * probes is the one that waits, and doing it here as well only delayed the process twice.
35
- */
36
- export declare const DELAY = 3;
@@ -1,37 +0,0 @@
1
- export const BRANCH_TTL = 1_800_000;
2
- /** The broadcast the gateway and its tenants share. */
3
- export const CHANNEL = 'exposition';
4
- /** The replicas of the gateway decide together, whatever context they serve. */
5
- export const ATOM_GROUP = 'exposition';
6
- /**
7
- * Where JSON-RPC is served, for every procedure at once. Pinned rather than configured: a
8
- * path an application could choose is a path it could collide with a route of its own.
9
- */
10
- export const RPC = '/.rpc';
11
- /** Calls one request may carry where the annotation does not say. */
12
- export const BATCH = 32;
13
- /**
14
- * Where the Model Context Protocol is served. Pinned for the reason `/.rpc` is: a path an
15
- * application could choose is a path it could collide with a route of its own.
16
- */
17
- export const MCP = '/.mcp';
18
- /**
19
- * Where the resource tree and the page that reads it are served. Pinned for the reason
20
- * `/.rpc` is: a path an application could choose is a path it could collide with a route of
21
- * its own. Unlike those two it is not annotated — every entry it carries is what `OPTIONS`
22
- * on that path already answers to the same caller, and what it adds is the enumeration.
23
- */
24
- export const DISCOVERY = '/.discovery';
25
- /** Where the gateway serves. */
26
- export const PORT = 8000;
27
- /**
28
- * Reserved for the readiness probe. `8001` is the Telemetry readiness probe's, and `toa export`
29
- * refuses a port claimed twice — `toa mono` and a local run put every service in one process.
30
- */
31
- export const PROBE = 8004;
32
- /**
33
- * The initial delay of the readiness probe. The server does not sleep for it: whoever
34
- * probes is the one that waits, and doing it here as well only delayed the process twice.
35
- */
36
- export const DELAY = 3; // seconds
37
- //# sourceMappingURL=const.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"const.js","sourceRoot":"","sources":["../source/const.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,UAAU,GAAG,SAAS,CAAA;AAEnC,uDAAuD;AACvD,MAAM,CAAC,MAAM,OAAO,GAAG,YAAY,CAAA;AAEnC,gFAAgF;AAChF,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAA;AAEtC;;;GAGG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CAAA;AAE1B,qEAAqE;AACrE,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAA;AAEvB;;;GAGG;AACH,MAAM,CAAC,MAAM,GAAG,GAAG,OAAO,CAAA;AAE1B;;;;;GAKG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,aAAa,CAAA;AAEtC,gCAAgC;AAChC,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,CAAA;AAExB;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,CAAA;AAEzB;;;GAGG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,CAAA,CAAC,UAAU"}
@@ -1,6 +0,0 @@
1
- import { type Dependency } from '@toa.io/operations';
2
- import { type Annotation } from './Annotation.js';
3
- /** Where Toa's release publishes this service's image. An application takes it
4
- * instead of building one when its context says `registry.services: published`. */
5
- export declare const image = "ghcr.io/toa-io/extension-exposition-gateway";
6
- export declare function deployment(_: unknown, annotation?: Annotation): Dependency;
@@ -1,76 +0,0 @@
1
- import { readFileSync } from 'node:fs';
2
- import assert from 'node:assert';
3
- import * as schemas from './schemas.js';
4
- import { shortcuts } from './shortcuts.js';
5
- import { components } from './Composition.js';
6
- import { parse } from './RTD/syntax/index.js';
7
- import { DELAY, PORT, PROBE } from './const.js';
8
- /** Where Toa's release publishes this service's image. An application takes it
9
- * instead of building one when its context says `registry.services: published`. */
10
- export const image = 'ghcr.io/toa-io/extension-exposition-gateway';
11
- export function deployment(_, annotation) {
12
- assert.ok(annotation !== undefined, 'Exposition context annotation is required');
13
- schemas.annotation.validate(annotation);
14
- const labels = components().labels;
15
- const service = {
16
- group: 'exposition',
17
- name: 'gateway',
18
- image,
19
- port: PORT,
20
- version: JSON.parse(readFileSync(new URL('../package.json', import.meta.url), 'utf8'))
21
- .version,
22
- variables: [],
23
- components: labels,
24
- resources: annotation.resources,
25
- ingress: { path: '/', hosts: [] },
26
- probe: {
27
- path: '/.ready',
28
- port: PROBE,
29
- delay: DELAY
30
- }
31
- };
32
- if (annotation?.['/'] !== undefined) {
33
- const tree = parse(annotation['/'], shortcuts);
34
- service.variables.push({
35
- name: 'TOA_EXPOSITION',
36
- value: JSON.stringify(tree)
37
- });
38
- }
39
- const { debug, authorities } = annotation;
40
- service.ingress.hosts = Object.values(authorities);
41
- // leaving these undefined lets the context's own ingress section supply them
42
- if (annotation.class !== undefined)
43
- service.ingress.class = annotation.class;
44
- if (annotation.annotations !== undefined)
45
- service.ingress.annotations = annotation.annotations;
46
- if (annotation.service?.annotations !== undefined)
47
- service.annotations = annotation.service.annotations;
48
- const properties = { authorities };
49
- if (debug === true)
50
- properties.debug = true;
51
- if (annotation.protocol !== undefined)
52
- properties.protocol = annotation.protocol;
53
- if (annotation.ip !== undefined)
54
- properties.ip = annotation.ip;
55
- if (annotation.bouncer !== undefined)
56
- properties.bouncer = annotation.bouncer;
57
- if (annotation.oauth !== undefined)
58
- properties.oauth = annotation.oauth;
59
- if (annotation.rpc !== undefined)
60
- properties.rpc = annotation.rpc;
61
- if (annotation.mcp !== undefined)
62
- properties.mcp = annotation.mcp;
63
- service.variables.push({
64
- name: 'TOA_EXPOSITION_PROPERTIES',
65
- value: JSON.stringify(properties)
66
- });
67
- // The identity composition nested in this process connects before route discovery settles,
68
- // so telemetry's probe — which tracks that composition — would report ready too early.
69
- // The gateway answers for itself, on the same port telemetry would have used.
70
- service.variables.push({
71
- name: 'TOA_TELEMETRY_READY',
72
- value: JSON.stringify(false)
73
- });
74
- return { services: [service] };
75
- }
76
- //# sourceMappingURL=deployment.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"deployment.js","sourceRoot":"","sources":["../source/deployment.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import { type Node } from './RTD/syntax/index.js';
2
- import type { Manifest } from '@toa.io/norm';
3
- export declare function manifest(declaration: object, manifest: Manifest): Node;