@toa.io/extensions.exposition 1.0.0-alpha.292 → 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 (443) 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 +24 -13
  6. package/transpiled/Endpoint.js +3 -0
  7. package/transpiled/Endpoint.js.map +1 -1
  8. package/transpiled/Introspection.d.ts +6 -0
  9. package/transpiled/Introspection.js +1 -0
  10. package/transpiled/Introspection.js.map +1 -1
  11. package/transpiled/MCP/schema.js +2 -2
  12. package/transpiled/Query.d.ts +2 -12
  13. package/transpiled/Query.js +2 -12
  14. package/transpiled/Query.js.map +1 -1
  15. package/transpiled/RTD/Endpoint.d.ts +2 -3
  16. package/ui/dist/_app/immutable/assets/0.Cu0AnR_8.css +2 -0
  17. package/ui/dist/_app/immutable/assets/2.BghF56l_.css +1 -0
  18. package/ui/dist/_app/immutable/assets/ui.C8aD6zzF.css +1 -0
  19. package/ui/dist/_app/immutable/chunks/B8GvXrmq.js +1 -0
  20. package/ui/dist/_app/immutable/chunks/BVDJTrf4.js +3 -0
  21. package/ui/dist/_app/immutable/chunks/D6q28_Ok.js +86 -0
  22. package/ui/dist/_app/immutable/chunks/{aLpTDmOc.js → DVlaUfVU.js} +1 -1
  23. package/ui/dist/_app/immutable/chunks/DpB73ZB6.js +6 -0
  24. package/ui/dist/_app/immutable/entry/app.CTava8yn.js +2 -0
  25. package/ui/dist/_app/immutable/entry/start.yWN0gSLA.js +1 -0
  26. package/ui/dist/_app/immutable/nodes/0.HKRDBYrC.js +1 -0
  27. package/ui/dist/_app/immutable/nodes/1.CLa0ydOi.js +1 -0
  28. package/ui/dist/_app/immutable/nodes/2.C9Kaym8C.js +8 -0
  29. package/ui/dist/_app/immutable/nodes/3.C1X4_rXZ.js +1 -0
  30. package/ui/dist/_app/immutable/nodes/4.DdzDIi9E.js +1 -0
  31. package/ui/dist/_app/immutable/nodes/5.DpbmCMdw.js +1 -0
  32. package/ui/dist/_app/version.json +1 -1
  33. package/ui/dist/index.html +12 -12
  34. package/CHANGELOG.md +0 -42
  35. package/components/identity.bans/tsconfig.tsbuildinfo +0 -1
  36. package/components/identity.basic/source/lib/credentials.test.ts +0 -18
  37. package/components/identity.basic/tsconfig.tsbuildinfo +0 -1
  38. package/components/identity.clients/source/lib/canonical.test.ts +0 -43
  39. package/components/identity.clients/source/lib/cimd.test.ts +0 -122
  40. package/components/identity.clients/source/lib/redirect.test.ts +0 -47
  41. package/components/identity.clients/tsconfig.tsbuildinfo +0 -1
  42. package/components/identity.credentials/source/list.test.ts +0 -70
  43. package/components/identity.credentials/tsconfig.tsbuildinfo +0 -1
  44. package/components/identity.federation/source/lib/discovery.test.ts +0 -60
  45. package/components/identity.federation/source/list.test.ts +0 -41
  46. package/components/identity.federation/tsconfig.tsbuildinfo +0 -1
  47. package/components/identity.grants/tsconfig.tsbuildinfo +0 -1
  48. package/components/identity.keys/tsconfig.tsbuildinfo +0 -1
  49. package/components/identity.otp/tsconfig.tsbuildinfo +0 -1
  50. package/components/identity.passkeys/source/errors.test.ts +0 -34
  51. package/components/identity.passkeys/source/webauthn.test.ts +0 -26
  52. package/components/identity.passkeys/tsconfig.tsbuildinfo +0 -1
  53. package/components/identity.roles/tsconfig.tsbuildinfo +0 -1
  54. package/components/identity.tokens/source/authenticate.test.ts +0 -112
  55. package/components/identity.tokens/source/decrypt.test.ts +0 -216
  56. package/components/identity.tokens/source/encrypt.test.ts +0 -150
  57. package/components/identity.tokens/source/issue.test.ts +0 -73
  58. package/components/identity.tokens/source/lib/form.test.ts +0 -25
  59. package/components/identity.tokens/source/lib/paseto.test.ts +0 -62
  60. package/components/identity.tokens/tsconfig.tsbuildinfo +0 -1
  61. package/context.toa.yaml +0 -31
  62. package/cucumber.mjs +0 -7
  63. package/documentation/.assets/ia3-dark.jpg +0 -0
  64. package/documentation/.assets/ia3-light.jpg +0 -0
  65. package/documentation/.assets/overview-dark.jpg +0 -0
  66. package/documentation/.assets/overview-light.jpg +0 -0
  67. package/documentation/.assets/role-scopes-dark.jpg +0 -0
  68. package/documentation/.assets/role-scopes-light.jpg +0 -0
  69. package/documentation/.assets/rtd-dark.jpg +0 -0
  70. package/documentation/.assets/rtd-light.jpg +0 -0
  71. package/documentation/access.md +0 -350
  72. package/documentation/authorities.md +0 -51
  73. package/documentation/cache.md +0 -72
  74. package/documentation/components.md +0 -472
  75. package/documentation/consent.md +0 -101
  76. package/documentation/credentials.md +0 -88
  77. package/documentation/dev.md +0 -30
  78. package/documentation/discovery.md +0 -81
  79. package/documentation/flow.md +0 -44
  80. package/documentation/help.md +0 -122
  81. package/documentation/identity.md +0 -304
  82. package/documentation/introspection.md +0 -123
  83. package/documentation/io.md +0 -167
  84. package/documentation/ip.md +0 -24
  85. package/documentation/map.md +0 -123
  86. package/documentation/mcp.md +0 -183
  87. package/documentation/notes/desync.jpg +0 -0
  88. package/documentation/notes/peers.md +0 -59
  89. package/documentation/notes/sse.md +0 -71
  90. package/documentation/notes/throttling.md +0 -122
  91. package/documentation/oauth.md +0 -180
  92. package/documentation/octets.md +0 -334
  93. package/documentation/passkeys.md +0 -11
  94. package/documentation/protocol.md +0 -120
  95. package/documentation/query.md +0 -324
  96. package/documentation/require.md +0 -15
  97. package/documentation/rpc.md +0 -154
  98. package/documentation/tracing.md +0 -70
  99. package/documentation/tree.md +0 -199
  100. package/features/access.feature +0 -596
  101. package/features/annotation.feature +0 -32
  102. package/features/auth.assert.feature +0 -55
  103. package/features/auth.bearer.feature +0 -120
  104. package/features/auth.claims.feature +0 -171
  105. package/features/auth.incept.feature +0 -166
  106. package/features/auth.input.feature +0 -59
  107. package/features/authorities.basic.feature +0 -141
  108. package/features/authorities.feature +0 -71
  109. package/features/authorities.federation.feature +0 -100
  110. package/features/authorities.tokens.feature +0 -117
  111. package/features/body.feature +0 -76
  112. package/features/cache.feature +0 -368
  113. package/features/configuration.feature +0 -206
  114. package/features/cors.feature +0 -127
  115. package/features/credentials.feature +0 -106
  116. package/features/debug.feature +0 -34
  117. package/features/dev.feature +0 -90
  118. package/features/directives.feature +0 -61
  119. package/features/discovery.feature +0 -213
  120. package/features/discovery.ui.feature +0 -213
  121. package/features/dynamic.feature +0 -192
  122. package/features/errors.feature +0 -258
  123. package/features/etag.feature +0 -239
  124. package/features/flow.feature +0 -148
  125. package/features/help.feature +0 -512
  126. package/features/identity.bans.feature +0 -200
  127. package/features/identity.basic.feature +0 -666
  128. package/features/identity.feature +0 -240
  129. package/features/identity.federation.feature +0 -396
  130. package/features/identity.otp.feature +0 -142
  131. package/features/identity.roles.feature +0 -568
  132. package/features/identity.tokens.custom.feature +0 -430
  133. package/features/identity.tokens.feature +0 -131
  134. package/features/interruptions.feature +0 -20
  135. package/features/introspection.feature +0 -565
  136. package/features/introspection.map.feature +0 -108
  137. package/features/io.feature +0 -204
  138. package/features/io.throttle.feature +0 -166
  139. package/features/map.feature +0 -360
  140. package/features/mcp.feature +0 -753
  141. package/features/methods.feature +0 -48
  142. package/features/oauth.clients.feature +0 -195
  143. package/features/oauth.discovery.feature +0 -164
  144. package/features/oauth.grants.feature +0 -301
  145. package/features/octets.cloudinary.feature +0 -233
  146. package/features/octets.download.feature +0 -194
  147. package/features/octets.entries.feature +0 -83
  148. package/features/octets.feature +0 -306
  149. package/features/octets.head.feature +0 -40
  150. package/features/octets.location.feature +0 -83
  151. package/features/octets.meta.feature +0 -117
  152. package/features/octets.workflows.feature +0 -565
  153. package/features/passkeys.feature +0 -66
  154. package/features/probes.feature +0 -18
  155. package/features/query.feature +0 -389
  156. package/features/realtime.feature +0 -34
  157. package/features/require.feature +0 -66
  158. package/features/response.feature +0 -103
  159. package/features/routes.feature +0 -224
  160. package/features/rpc.feature +0 -429
  161. package/features/server.feature +0 -21
  162. package/features/site/_app/immutable/asset.js +0 -1
  163. package/features/site/favicon.ico +0 -0
  164. package/features/site/index.html +0 -10
  165. package/features/steps/.env.example +0 -5
  166. package/features/steps/Captures.ts +0 -20
  167. package/features/steps/Cloudinary.ts +0 -12
  168. package/features/steps/Common.ts +0 -38
  169. package/features/steps/Components.ts +0 -115
  170. package/features/steps/Database.ts +0 -106
  171. package/features/steps/Gateway.ts +0 -239
  172. package/features/steps/HTTP.ts +0 -96
  173. package/features/steps/IDP.ts +0 -361
  174. package/features/steps/Identity.ts +0 -54
  175. package/features/steps/OTP.ts +0 -42
  176. package/features/steps/Parameters.ts +0 -162
  177. package/features/steps/Probe.ts +0 -38
  178. package/features/steps/Realtime.ts +0 -175
  179. package/features/steps/Workspace.ts +0 -48
  180. package/features/steps/components/audit/manifest.toa.yaml +0 -20
  181. package/features/steps/components/audit/operations/record.js +0 -5
  182. package/features/steps/components/echo/manifest.toa.yaml +0 -59
  183. package/features/steps/components/echo/operations/affect.js +0 -3
  184. package/features/steps/components/echo/operations/compute.js +0 -3
  185. package/features/steps/components/echo/operations/echo.js +0 -3
  186. package/features/steps/components/echo/operations/error.js +0 -7
  187. package/features/steps/components/echo/operations/identity.js +0 -3
  188. package/features/steps/components/echo/operations/parameters.js +0 -3
  189. package/features/steps/components/echo/operations/ping.js +0 -3
  190. package/features/steps/components/echo/operations/unwrap.js +0 -3
  191. package/features/steps/components/echo.beacon/manifest.toa.yaml +0 -2
  192. package/features/steps/components/echo.beacon/operations/hello.js +0 -3
  193. package/features/steps/components/greeter/manifest.toa.yaml +0 -5
  194. package/features/steps/components/greeter/operations/greet.js +0 -3
  195. package/features/steps/components/notify/manifest.toa.yaml +0 -20
  196. package/features/steps/components/notify/operations/send.js +0 -5
  197. package/features/steps/components/octets.tester/manifest.toa.yaml +0 -73
  198. package/features/steps/components/octets.tester/operations/authority.js +0 -3
  199. package/features/steps/components/octets.tester/operations/bar.js +0 -9
  200. package/features/steps/components/octets.tester/operations/baz.js +0 -9
  201. package/features/steps/components/octets.tester/operations/concat.js +0 -5
  202. package/features/steps/components/octets.tester/operations/echo.js +0 -5
  203. package/features/steps/components/octets.tester/operations/err.js +0 -14
  204. package/features/steps/components/octets.tester/operations/foo.js +0 -5
  205. package/features/steps/components/octets.tester/operations/id.js +0 -5
  206. package/features/steps/components/octets.tester/operations/identity.js +0 -5
  207. package/features/steps/components/octets.tester/operations/lenna.png +0 -0
  208. package/features/steps/components/octets.tester/operations/redirect.js +0 -17
  209. package/features/steps/components/octets.tester/operations/yex.js +0 -14
  210. package/features/steps/components/octets.tester/operations/yield.js +0 -11
  211. package/features/steps/components/orders/manifest.toa.yaml +0 -30
  212. package/features/steps/components/orders/operations/create.js +0 -7
  213. package/features/steps/components/pots/manifest.toa.yaml +0 -91
  214. package/features/steps/components/pots/migrations/0002-indexes.yaml +0 -4
  215. package/features/steps/components/pricing/manifest.toa.yaml +0 -13
  216. package/features/steps/components/pricing/operations/quote.js +0 -3
  217. package/features/steps/components/sequences/manifest.toa.yaml +0 -11
  218. package/features/steps/components/sequences/operations/numbers.js +0 -5
  219. package/features/steps/components/sequences/operations/tokens.js +0 -14
  220. package/features/steps/components/users/manifest.toa.yaml +0 -30
  221. package/features/steps/components/users/operations/create.js +0 -11
  222. package/features/steps/components/users.properties/manifest.toa.yaml +0 -22
  223. package/features/steps/map.ts +0 -30
  224. package/features/steps/tsconfig.json +0 -9
  225. package/features/streams.feature +0 -35
  226. package/features/timestamps.feature +0 -41
  227. package/features/timing.feature +0 -49
  228. package/features/tracing.feature +0 -123
  229. package/source/Branch.test.ts +0 -40
  230. package/source/Branch.ts +0 -44
  231. package/source/Composition.ts +0 -51
  232. package/source/Context.ts +0 -11
  233. package/source/Directive.test.ts +0 -199
  234. package/source/Directive.ts +0 -248
  235. package/source/Discovery/Explorer.ts +0 -34
  236. package/source/Discovery/Site.test.ts +0 -147
  237. package/source/Discovery/Site.ts +0 -202
  238. package/source/Discovery/index.ts +0 -3
  239. package/source/Discovery/tree.test.ts +0 -175
  240. package/source/Discovery/tree.ts +0 -77
  241. package/source/Discovery/trunk.ts +0 -33
  242. package/source/Endpoint.test.ts +0 -67
  243. package/source/Endpoint.ts +0 -157
  244. package/source/Factory.ts +0 -42
  245. package/source/Gateway.ts +0 -390
  246. package/source/HTTP/Context.ts +0 -143
  247. package/source/HTTP/Probe.ts +0 -99
  248. package/source/HTTP/Server.ts +0 -435
  249. package/source/HTTP/Timing.ts +0 -14
  250. package/source/HTTP/address.test.ts +0 -28
  251. package/source/HTTP/address.ts +0 -16
  252. package/source/HTTP/exceptions.ts +0 -99
  253. package/source/HTTP/formats/form.ts +0 -21
  254. package/source/HTTP/formats/index.ts +0 -36
  255. package/source/HTTP/formats/json.ts +0 -14
  256. package/source/HTTP/formats/msgpack.ts +0 -14
  257. package/source/HTTP/formats/text.ts +0 -10
  258. package/source/HTTP/formats/yaml.test.ts +0 -22
  259. package/source/HTTP/formats/yaml.ts +0 -40
  260. package/source/HTTP/index.ts +0 -6
  261. package/source/HTTP/messages.test.ts +0 -196
  262. package/source/HTTP/messages.ts +0 -186
  263. package/source/HTTP/types.ts +0 -39
  264. package/source/Interception.ts +0 -37
  265. package/source/Introspection.ts +0 -179
  266. package/source/MCP/Server.ts +0 -335
  267. package/source/MCP/discover.ts +0 -51
  268. package/source/MCP/errors.ts +0 -80
  269. package/source/MCP/index.ts +0 -1
  270. package/source/MCP/schema.test.ts +0 -91
  271. package/source/MCP/schema.ts +0 -94
  272. package/source/MCP/tools.ts +0 -144
  273. package/source/MCP/types.ts +0 -84
  274. package/source/Mapping.ts +0 -101
  275. package/source/Query.test.ts +0 -54
  276. package/source/Query.ts +0 -277
  277. package/source/RPC/Context.ts +0 -75
  278. package/source/RPC/Dispatcher.ts +0 -150
  279. package/source/RPC/errors.test.ts +0 -77
  280. package/source/RPC/errors.ts +0 -82
  281. package/source/RPC/index.ts +0 -1
  282. package/source/RPC/names.test.ts +0 -141
  283. package/source/RPC/names.ts +0 -176
  284. package/source/RPC/types.ts +0 -34
  285. package/source/RTD/Context.ts +0 -16
  286. package/source/RTD/Directives.ts +0 -126
  287. package/source/RTD/Endpoint.ts +0 -27
  288. package/source/RTD/Match.ts +0 -11
  289. package/source/RTD/Method.ts +0 -39
  290. package/source/RTD/Node.ts +0 -169
  291. package/source/RTD/Route.ts +0 -93
  292. package/source/RTD/Tree.ts +0 -137
  293. package/source/RTD/expiration.test.ts +0 -81
  294. package/source/RTD/factory.ts +0 -105
  295. package/source/RTD/index.ts +0 -8
  296. package/source/RTD/segment.test.ts +0 -35
  297. package/source/RTD/segment.ts +0 -51
  298. package/source/RTD/syntax/index.ts +0 -1
  299. package/source/RTD/walk.test.ts +0 -147
  300. package/source/Remotes.test.ts +0 -79
  301. package/source/Remotes.ts +0 -39
  302. package/source/Tenant.ts +0 -73
  303. package/source/directives/auth/Anonymous.test.ts +0 -70
  304. package/source/directives/auth/Anonymous.ts +0 -36
  305. package/source/directives/auth/Anyone.ts +0 -23
  306. package/source/directives/auth/Assert.ts +0 -43
  307. package/source/directives/auth/Authorization.test.ts +0 -24
  308. package/source/directives/auth/Authorization.ts +0 -388
  309. package/source/directives/auth/Delegate.test.ts +0 -36
  310. package/source/directives/auth/Delegate.ts +0 -54
  311. package/source/directives/auth/Echo.ts +0 -24
  312. package/source/directives/auth/Federation.ts +0 -104
  313. package/source/directives/auth/Id.ts +0 -37
  314. package/source/directives/auth/Incept.ts +0 -117
  315. package/source/directives/auth/Input.ts +0 -92
  316. package/source/directives/auth/Role.test.ts +0 -147
  317. package/source/directives/auth/Role.ts +0 -99
  318. package/source/directives/auth/Rule.ts +0 -59
  319. package/source/directives/auth/Scheme.ts +0 -31
  320. package/source/directives/auth/create.ts +0 -11
  321. package/source/directives/auth/index.ts +0 -3
  322. package/source/directives/auth/schemes.test.ts +0 -18
  323. package/source/directives/auth/schemes.ts +0 -39
  324. package/source/directives/auth/split.ts +0 -14
  325. package/source/directives/auth/types.ts +0 -75
  326. package/source/directives/cache/Cache.ts +0 -92
  327. package/source/directives/cache/Control.ts +0 -81
  328. package/source/directives/cache/Exact.ts +0 -7
  329. package/source/directives/cache/etag.ts +0 -38
  330. package/source/directives/cache/index.ts +0 -3
  331. package/source/directives/cache/types.ts +0 -9
  332. package/source/directives/cors/CORS.test.ts +0 -75
  333. package/source/directives/cors/CORS.ts +0 -88
  334. package/source/directives/cors/index.ts +0 -3
  335. package/source/directives/dev/Development.ts +0 -41
  336. package/source/directives/dev/Faulty.ts +0 -31
  337. package/source/directives/dev/Sleep.ts +0 -53
  338. package/source/directives/dev/Stub.ts +0 -14
  339. package/source/directives/dev/Throw.ts +0 -14
  340. package/source/directives/dev/index.ts +0 -3
  341. package/source/directives/dev/types.ts +0 -5
  342. package/source/directives/flow/Compose.ts +0 -98
  343. package/source/directives/flow/Fetch.ts +0 -86
  344. package/source/directives/flow/Flow.ts +0 -43
  345. package/source/directives/flow/index.ts +0 -3
  346. package/source/directives/flow/types.ts +0 -7
  347. package/source/directives/help/Family.ts +0 -122
  348. package/source/directives/help/Help.test.ts +0 -227
  349. package/source/directives/help/Help.ts +0 -47
  350. package/source/directives/help/Parameters.ts +0 -47
  351. package/source/directives/help/described.ts +0 -57
  352. package/source/directives/help/index.ts +0 -45
  353. package/source/directives/index.ts +0 -33
  354. package/source/directives/io/Directive.ts +0 -17
  355. package/source/directives/io/IO.ts +0 -118
  356. package/source/directives/io/Input.ts +0 -55
  357. package/source/directives/io/Message.ts +0 -1
  358. package/source/directives/io/Output.ts +0 -81
  359. package/source/directives/io/Status.test.ts +0 -88
  360. package/source/directives/io/Status.ts +0 -47
  361. package/source/directives/io/Throttle.ts +0 -30
  362. package/source/directives/io/index.ts +0 -3
  363. package/source/directives/io/lib/throttle/Configuration.test.ts +0 -72
  364. package/source/directives/io/lib/throttle/Configuration.ts +0 -68
  365. package/source/directives/io/lib/throttle/Keys.ts +0 -53
  366. package/source/directives/io/lib/throttle/Quotas.test.ts +0 -411
  367. package/source/directives/io/lib/throttle/Quotas.ts +0 -190
  368. package/source/directives/io/lib/throttle/Sync.test.ts +0 -163
  369. package/source/directives/io/lib/throttle/Sync.ts +0 -93
  370. package/source/directives/io/lib/throttle/Warning.test.ts +0 -32
  371. package/source/directives/io/lib/throttle/Warning.ts +0 -29
  372. package/source/directives/io/lib/throttle/components/Component.ts +0 -7
  373. package/source/directives/io/lib/throttle/components/IP.ts +0 -30
  374. package/source/directives/io/lib/throttle/components/Identity.ts +0 -19
  375. package/source/directives/io/lib/throttle/components/Path.ts +0 -8
  376. package/source/directives/io/lib/throttle/components/Route.ts +0 -19
  377. package/source/directives/io/lib/throttle/components/Segment.ts +0 -19
  378. package/source/directives/io/lib/throttle/components/index.ts +0 -19
  379. package/source/directives/io/lib/throttle/conditions/Condition.ts +0 -5
  380. package/source/directives/io/lib/throttle/conditions/Status.ts +0 -17
  381. package/source/directives/io/lib/throttle/conditions/index.ts +0 -11
  382. package/source/directives/io/lib/throttle/index.ts +0 -4
  383. package/source/directives/io/schemas.test.ts +0 -40
  384. package/source/directives/io/schemas.ts +0 -16
  385. package/source/directives/map/Authority.ts +0 -15
  386. package/source/directives/map/Buffer.ts +0 -15
  387. package/source/directives/map/Claims.ts +0 -63
  388. package/source/directives/map/Directive.ts +0 -4
  389. package/source/directives/map/Headers.ts +0 -60
  390. package/source/directives/map/Language.ts +0 -45
  391. package/source/directives/map/Languages.ts +0 -17
  392. package/source/directives/map/Map.ts +0 -85
  393. package/source/directives/map/Mapping.ts +0 -45
  394. package/source/directives/map/Properties.ts +0 -15
  395. package/source/directives/map/Segments.ts +0 -52
  396. package/source/directives/map/index.ts +0 -3
  397. package/source/directives/mcp/MCP.ts +0 -33
  398. package/source/directives/mcp/Tool.test.ts +0 -56
  399. package/source/directives/mcp/Tool.ts +0 -32
  400. package/source/directives/mcp/index.ts +0 -6
  401. package/source/directives/oauth/Discovery.ts +0 -66
  402. package/source/directives/oauth/documents.ts +0 -110
  403. package/source/directives/oauth/index.ts +0 -3
  404. package/source/directives/octets/Context.ts +0 -23
  405. package/source/directives/octets/Delete.ts +0 -96
  406. package/source/directives/octets/Directive.ts +0 -21
  407. package/source/directives/octets/Get.ts +0 -88
  408. package/source/directives/octets/Octets.ts +0 -82
  409. package/source/directives/octets/Put.ts +0 -186
  410. package/source/directives/octets/Workflow.ts +0 -60
  411. package/source/directives/octets/bytes.test.ts +0 -33
  412. package/source/directives/octets/bytes.ts +0 -18
  413. package/source/directives/octets/index.ts +0 -3
  414. package/source/directives/octets/schemas.test.ts +0 -20
  415. package/source/directives/octets/schemas.ts +0 -15
  416. package/source/directives/octets/types.ts +0 -9
  417. package/source/directives/octets/workflows/Execution.ts +0 -130
  418. package/source/directives/octets/workflows/Workflow.ts +0 -51
  419. package/source/directives/octets/workflows/index.ts +0 -1
  420. package/source/directives/require/Directive.ts +0 -5
  421. package/source/directives/require/Headers.ts +0 -19
  422. package/source/directives/require/Require.ts +0 -27
  423. package/source/directives/require/index.ts +0 -3
  424. package/source/discovery.ts +0 -1
  425. package/source/exceptions.ts +0 -47
  426. package/source/index.ts +0 -10
  427. package/source/io.ts +0 -4
  428. package/source/octets.d.ts +0 -17
  429. package/source/root.ts +0 -59
  430. package/source/service.ts +0 -95
  431. package/source/userland.ts +0 -47
  432. package/tsconfig.json +0 -13
  433. package/tsconfig.tsbuildinfo +0 -1
  434. package/ui/dist/_app/immutable/assets/0.Bl7vLmIK.css +0 -2
  435. package/ui/dist/_app/immutable/assets/2.BC0-Jhqu.css +0 -1
  436. package/ui/dist/_app/immutable/chunks/BaWe3aOV.js +0 -1
  437. package/ui/dist/_app/immutable/chunks/DjIYL2zC.js +0 -3
  438. package/ui/dist/_app/immutable/chunks/GZTfV0ks.js +0 -6
  439. package/ui/dist/_app/immutable/entry/app.D5v4JoUx.js +0 -2
  440. package/ui/dist/_app/immutable/entry/start.CWxFoIyZ.js +0 -1
  441. package/ui/dist/_app/immutable/nodes/0.DIh5T_5-.js +0 -1
  442. package/ui/dist/_app/immutable/nodes/1.CY-bFzHC.js +0 -1
  443. package/ui/dist/_app/immutable/nodes/2.6Ubd1ItY.js +0 -14
@@ -1,186 +0,0 @@
1
- import { readFileSync } from 'node:fs'
2
- import { Readable } from 'node:stream'
3
- import { pipeline } from 'node:stream/promises'
4
- import * as contentType from 'content-type'
5
- import { console } from 'openspan'
6
- import { type Format, decoders } from './formats/index.js'
7
- import { BadRequest, NotAcceptable, UnsupportedMediaType } from './exceptions.js'
8
- import { environment } from '@toa.io/generic'
9
- import type { Context } from './Context.js'
10
- import type { ServerResponse } from './types.js'
11
-
12
- const context = environment.get('TOA_CONTEXT')
13
- const env = environment.get('TOA_ENV')
14
- const server =
15
- `Exposition/${JSON.parse(readFileSync(new URL('../../package.json', import.meta.url), 'utf8')).version}` +
16
- ((context === undefined ? '' : ` ${context}`) + (env === undefined ? '' : `/${env}`))
17
-
18
- /**
19
- * Applies what the request accumulated in `pipelines.response` — an `io:output` restriction,
20
- * a `vary` a `map` directive owes. Separate from `write` because a message is not always
21
- * written: one call of several produces a value the reply is assembled from.
22
- */
23
- export async function shape(context: Context, message: OutgoingMessage): Promise<void> {
24
- for (const transform of context.pipelines.response) await transform(message)
25
- }
26
-
27
- export async function write(
28
- context: Context,
29
- response: ServerResponse,
30
- message: OutgoingMessage
31
- ): Promise<void> {
32
- await shape(context, message)
33
-
34
- if (message?.status !== undefined) response.statusCode = message.status
35
-
36
- response.setHeader('server', server)
37
- message.headers?.forEach((value, key) => response.setHeader(key, value))
38
- context.timing.append(response)
39
-
40
- if (response.destroyed) {
41
- console.warn('Request destroyed prematurely', { path: context.url.pathname })
42
-
43
- return
44
- }
45
-
46
- response.on('error', (exception: Error) =>
47
- console.warn('HTTP response error', { path: context.url.pathname, exception })
48
- )
49
-
50
- if (message.body instanceof Readable) stream(message, context, response)
51
- else send(message, context, response)
52
- }
53
-
54
- export async function read(context: Context): Promise<any> {
55
- const header = context.request.headers['content-type']
56
-
57
- if (header === undefined) return undefined
58
-
59
- const { type, parameters } = contentType.parse(header)
60
-
61
- if (!(type in decoders)) throw new UnsupportedMediaType()
62
-
63
- const format = decoders[type]
64
- const buf = await context.buffer()
65
-
66
- try {
67
- return format.decode(buf, parameters.charset)
68
- } catch (error: unknown) {
69
- console.debug('Failed to decode message', {
70
- path: context.url.pathname,
71
- error: error?.toString?.()
72
- })
73
-
74
- throw new BadRequest()
75
- }
76
- }
77
-
78
- function send(
79
- message: OutgoingMessage,
80
- context: Context,
81
- response: ServerResponse
82
- ): void {
83
- if (message.body === undefined || message.body === null) {
84
- // a HEAD reply carries no body but must still report the length a GET would
85
- // have returned, so a length already set by a directive is left alone
86
- if (!response.hasHeader('content-length')) response.setHeader('content-length', '0')
87
-
88
- response.end()
89
-
90
- return
91
- }
92
-
93
- if (context.encoder === null) throw new NotAcceptable()
94
-
95
- const buf = context.encoder.encode(message.body)
96
-
97
- response.setHeader('content-type', context.encoder.type)
98
- response.setHeader('content-length', buf.length.toString())
99
- response.appendHeader('vary', 'accept')
100
- response.end(buf)
101
- }
102
-
103
- function stream(
104
- message: OutgoingMessage,
105
- context: Context,
106
- response: ServerResponse
107
- ): void {
108
- const encoded = message.headers !== undefined && message.headers.has('content-type')
109
- const source: Readable = encoded ? message.body : multipart(message, context, response)
110
-
111
- // not awaited: a reply that streams is written long after the request is answered, and a
112
- // realtime subscription outlives the span the reply was produced in
113
- //
114
- // `pipeline` carries an error to every stage and destroys them. `pipe` leaves the stages it
115
- // built behind, and an `error` on a stream nobody listens to is an uncaught exception.
116
- pipeline(source, response).catch((exception: Error) =>
117
- console.warn('Message stream error', { path: context.url.pathname, exception })
118
- )
119
- }
120
-
121
- /**
122
- * Frames an object stream as `multipart/*`: an `ACK` part, the parts themselves, then `FIN`.
123
- * The body is a `Readable`; `write` reached here by testing it.
124
- */
125
- export function multipart(
126
- message: OutgoingMessage,
127
- context: Context,
128
- response: ServerResponse
129
- ): Readable {
130
- if (context.encoder === null) throw new NotAcceptable()
131
-
132
- const encoder = context.encoder
133
-
134
- response.setHeader('content-type', `${encoder.multipart}; boundary=${BOUNDARY}`)
135
-
136
- return Readable.from(frames(message.body as Readable, encoder))
137
- }
138
-
139
- async function* frames(body: Readable, encoder: Format): AsyncGenerator<Buffer> {
140
- yield Buffer.concat([CUT, CRLF, encoder.encode('ACK'), CRLF, CUT])
141
-
142
- for await (const part of body)
143
- yield Buffer.concat([
144
- CRLF /* indicates no boundary headers */,
145
- encoder.encode(part),
146
- CRLF,
147
- CUT
148
- ])
149
-
150
- yield Buffer.concat([CRLF, encoder.encode('FIN'), CRLF, FINALCUT])
151
- }
152
-
153
- const BOUNDARY = 'cut'
154
- const CUT = Buffer.from(`--${BOUNDARY}\r\n`)
155
- const CRLF = Buffer.from('\r\n')
156
- const FINALCUT = Buffer.from(`--${BOUNDARY}--`)
157
-
158
- export interface OutgoingMessage {
159
- status?: number
160
- headers?: Headers
161
- body?: any
162
-
163
- /** what the reply carries for a cache to validate by; the `cache` family sets the headers */
164
- version?: number
165
- modified?: number | string
166
-
167
- /**
168
- * Built by the gateway rather than returned by an operation, as a request is `authentic`
169
- * when it was made by one: what is in it is the gateway's own, and the checks that answer
170
- * for what an operation returns have nothing to say about it.
171
- */
172
- authentic?: boolean
173
- }
174
-
175
- export interface Query {
176
- [key: string]: string | number | undefined
177
-
178
- id?: string
179
- criteria?: string
180
- search?: string
181
- sample?: number
182
- sort?: string
183
- omit?: string
184
- limit?: string
185
- version?: number
186
- }
@@ -1,39 +0,0 @@
1
- import type { Readable, Writable } from 'node:stream'
2
- import type { OutgoingHttpHeaders } from 'node:http'
3
- import type { IncomingHttpHeaders } from 'node:http2'
4
-
5
- /**
6
- * What Exposition requires of a request. Both `http.IncomingMessage` and
7
- * `http2.Http2ServerRequest` satisfy it, so the pipeline is written once.
8
- */
9
- export interface IncomingMessage extends Readable {
10
- url: string
11
- method: string
12
- complete: boolean
13
- headers: IncomingHeaders
14
- socket: { remoteAddress?: string | undefined }
15
- }
16
-
17
- /**
18
- * What Exposition requires of a response.
19
- *
20
- * `setHeader` and `appendHeader` return `void` because `Http2ServerResponse` returns
21
- * nothing from them, so neither can be chained.
22
- */
23
- export interface ServerResponse extends Writable {
24
- statusCode: number
25
- writableEnded: boolean
26
- setHeader: (name: string, value: number | string | string[]) => void
27
- appendHeader: (name: string, value: string | string[]) => void
28
- hasHeader: (name: string) => boolean
29
- writeHead: (status: number, headers?: OutgoingHttpHeaders) => ServerResponse
30
- }
31
-
32
- /**
33
- * HTTP/2's header map: HTTP/1.1's, plus the pseudo-headers. `:authority` is typed here
34
- * so the authority can be read without narrowing at every call site.
35
- */
36
- export type IncomingHeaders = IncomingHttpHeaders
37
-
38
- /** `h2c` is cleartext HTTP/2: there is no in-process TLS to negotiate ALPN with. */
39
- export type Protocol = 'h1' | 'h2c'
@@ -1,37 +0,0 @@
1
- import type * as http from './HTTP/index.js'
2
- import type { Input, Output } from './io.js'
3
-
4
- export class Interception implements Interceptor {
5
- private readonly interceptors: Interceptor[]
6
-
7
- public constructor(interceptors: Interceptor[], options: http.Options) {
8
- this.interceptors = interceptors
9
-
10
- // interceptors are module singletons, so a second gateway in one process —
11
- // which is how the features run — would otherwise inherit the first one's state
12
- for (const interceptor of interceptors) {
13
- interceptor.reset?.()
14
- interceptor.mount?.(options)
15
- }
16
- }
17
-
18
- public async intercept(input: Input): Promise<Output> {
19
- for (const interceptor of this.interceptors) {
20
- const output = await interceptor.intercept(input)
21
-
22
- if (output !== null) return output
23
- }
24
-
25
- return null
26
- }
27
- }
28
-
29
- export interface Interceptor {
30
- intercept: (input: Input) => Output | Promise<Output>
31
-
32
- /** Discards whatever the interceptor accumulated while serving. */
33
- reset?: () => void
34
-
35
- /** What the annotation says, for an interceptor that answers from it. */
36
- mount?: (options: http.Options) => void
37
- }
@@ -1,179 +0,0 @@
1
- import type { Remote } from '@toa.io/core'
2
- import type { Context } from './HTTP/index.js'
3
-
4
- export interface Introspection {
5
- /**
6
- * What the route states this method is. The operation states what it is too, and that is
7
- * not this: an operation is written without knowledge of any route, and a method is an
8
- * operation and a route together — the same operation mounted twice is two methods, and
9
- * one sentence cannot be true of both. The operation's own is for the Introspection.
10
- */
11
- description?: string
12
-
13
- /** what a person is shown where a client lists this method, which a name is not */
14
- title?: string
15
-
16
- /**
17
- * whether reaching it takes nothing at all — `auth:anonymous`. Said rather than left
18
- * unsaid, because it is also what refuses a caller presenting a credential: a client
19
- * cannot know that from an answer that says nothing.
20
- */
21
- anonymous?: boolean
22
-
23
- /** whether reaching it takes being someone, whoever — `auth:anyone` and its like */
24
- authenticated?: boolean
25
-
26
- /** whether reaching it is being the identity it is about — `auth:id` */
27
- private?: boolean
28
-
29
- /** whether reaching it takes a role — `auth:role` */
30
- protected?: boolean
31
-
32
- /** and whether that role is one of the `system` scope */
33
- system?: boolean
34
-
35
- /** whether the route publishes this method to a model — [`mcp:tool`](mcp.md) */
36
- mcp?: boolean
37
- route?: Record<string, Schema>
38
- query?: Record<string, Schema>
39
-
40
- /** what the body is, where it is a file rather than a value — [`octets:put`](octets.md) */
41
- octets?: Octets
42
- input?: Schema
43
- output?: Schema
44
- errors?: string[]
45
- }
46
-
47
- /** What sending a file to a resource takes, which is not something a schema states. */
48
- export interface Octets {
49
- /** what may be sent, in the syntax of an `accept` header; anything where unstated */
50
- accept?: string
51
-
52
- /** the largest body it takes, as it is written and as a refusal reports it */
53
- limit: string
54
-
55
- /**
56
- * Whether the reply arrives as a stream of parts rather than as one object: a workflow
57
- * runs on what was stored, and each step answers as it finishes. The first part is the
58
- * entry itself, which is what a caller that wants nothing else reads and stops.
59
- */
60
- stream?: boolean
61
- }
62
-
63
- export type Schema = Awaited<ReturnType<Remote['explain']>>['input']
64
-
65
- /**
66
- * The same request, as a description of a resource rather than a call to one. A directive
67
- * that answers differently to the two reads `exploratory` — `Anonymous` is the one that
68
- * does, because the rule refusing a credential at an `anonymous` route is about a reply a
69
- * cache would hold, and a description is not one.
70
- */
71
- export function describing(context: Context): Context {
72
- return Object.create(context, {
73
- exploratory: { value: true, enumerable: true }
74
- }) as Context
75
- }
76
-
77
- /**
78
- * The same, in the order the shape states — whatever order the families that filled it ran
79
- * in. What a resource says about itself is read, so it is written the way it is documented.
80
- */
81
- export function order(introspection: Introspection): Introspection {
82
- const ordered: Introspection = {}
83
-
84
- for (const key of KEYS)
85
- if (introspection[key] !== undefined) (ordered[key] as unknown) = introspection[key]
86
-
87
- return ordered
88
- }
89
-
90
- const KEYS = [
91
- 'title',
92
- 'description',
93
- 'anonymous',
94
- 'authenticated',
95
- 'private',
96
- 'protected',
97
- 'system',
98
- 'mcp',
99
- 'route',
100
- 'query',
101
- 'octets',
102
- 'input',
103
- 'output',
104
- 'errors'
105
- ] as const
106
-
107
- /**
108
- * The schema of one input property, taken out of it: a property another family fills is
109
- * not the caller's to send, and what took it says where it comes from instead.
110
- */
111
- export function take(carrier: Carrier, property: string): Schema | undefined {
112
- const input = carrier.input as Shape | null | undefined
113
- const properties = input?.properties
114
-
115
- if (
116
- input === undefined ||
117
- input === null ||
118
- properties === undefined ||
119
- !(property in properties)
120
- )
121
- return undefined
122
-
123
- const schema = properties[property]
124
-
125
- delete properties[property]
126
-
127
- if (input.required !== undefined)
128
- input.required = input.required.filter((name) => name !== property)
129
-
130
- return schema
131
- }
132
-
133
- /**
134
- * A schema restricted to the properties a whitelist admits, and an array's items where it
135
- * describes an array. What is not an object of properties is left alone: a whitelist has
136
- * nothing to say about a string.
137
- */
138
- export function restrict(
139
- schema: Schema | undefined,
140
- allowed: Set<string>
141
- ): Schema | undefined {
142
- const shape = schema as Shape | null | undefined
143
-
144
- if (shape === undefined || shape === null) return schema
145
-
146
- if (shape.items !== undefined)
147
- return { ...shape, items: restrict(shape.items, allowed) } as unknown as Schema
148
-
149
- if (shape.properties === undefined) return schema
150
-
151
- const properties: Record<string, Schema> = {}
152
-
153
- for (const [name, property] of Object.entries(shape.properties))
154
- if (allowed.has(name)) properties[name] = property
155
-
156
- const restricted: Shape = { ...shape, properties }
157
-
158
- if (shape.required !== undefined)
159
- restricted.required = shape.required.filter((name) => allowed.has(name))
160
-
161
- return restricted as unknown as Schema
162
- }
163
-
164
- /**
165
- * What a schema is read as here: the keywords these narrow, and whatever else it carries.
166
- * `Schema` as core declares it requires `properties`, which a schema of a string has not,
167
- * so the two are cast through rather than assigned.
168
- */
169
- /** Whatever states an input: an explanation as the operation gave it, or as a route left it. */
170
- interface Carrier {
171
- input?: Schema
172
- }
173
-
174
- interface Shape {
175
- properties?: Record<string, Schema>
176
- required?: string[]
177
- items?: Schema
178
- [keyword: string]: unknown
179
- }