@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,141 +0,0 @@
1
- import { describe, it } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import * as http from '../HTTP/index.js'
5
- import { segment } from '../RTD/segment.js'
6
- import { address, name, refusal } from './names.js'
7
-
8
- describe('address', () => {
9
- it('should resolve a name without variables', () => {
10
- assert.deepEqual(address('pots.GET', {}), {
11
- path: '/pots/',
12
- verb: 'GET',
13
- variables: []
14
- })
15
- })
16
-
17
- it('should resolve the trunk', () => {
18
- assert.deepEqual(address('GET', {}), { path: '/', verb: 'GET', variables: [] })
19
- })
20
-
21
- it('should substitute a variable and report it taken', () => {
22
- assert.deepEqual(address('pots._id.GET', { id: 'a1b2', title: 'Kettle' }), {
23
- path: '/pots/a1b2/',
24
- verb: 'GET',
25
- variables: ['id']
26
- })
27
- })
28
-
29
- it('should substitute every variable', () => {
30
- assert.deepEqual(address('users._user.pots._id.PATCH', { user: 'bob', id: 'a1b2' }), {
31
- path: '/users/bob/pots/a1b2/',
32
- verb: 'PATCH',
33
- variables: ['user', 'id']
34
- })
35
- })
36
-
37
- it('should let a tail carry separators', () => {
38
- assert.deepEqual(address('files.__.GET', { '**': 'a/b/c' }), {
39
- path: '/files/a/b/c/',
40
- verb: 'GET',
41
- variables: ['**']
42
- })
43
- })
44
-
45
- it('should not confuse a trailing literal with a verb', () => {
46
- assert.deepEqual(address('pots.GET.POST', {}), {
47
- path: '/pots/GET/',
48
- verb: 'POST',
49
- variables: []
50
- })
51
- })
52
-
53
- it('should refuse a name that states no verb', () => {
54
- assert.throws(() => address('pots._id', { id: 'a1b2' }), http.NotFound)
55
- })
56
-
57
- it('should refuse a verb no method uses', () => {
58
- assert.throws(() => address('pots.FETCH', {}), http.NotFound)
59
- })
60
-
61
- it('should refuse a segment no name can spell', () => {
62
- assert.throws(() => address('pots/v1.GET', {}), http.NotFound)
63
- assert.throws(() => address('a_b.GET', {}), http.NotFound)
64
- assert.throws(() => address('pots..GET', {}), http.NotFound)
65
- })
66
-
67
- it('should refuse a variable of no name', () => {
68
- assert.throws(() => address('pots._.GET', { '': 'a1b2' }), http.NotFound)
69
- })
70
-
71
- it('should refuse a missing variable', () => {
72
- assert.throws(() => address('pots._id.GET', {}), http.BadRequest)
73
- })
74
-
75
- it('should refuse a variable that would divide the path', () => {
76
- assert.throws(() => address('pots._id.GET', { id: 'a/b' }), http.BadRequest)
77
- assert.throws(() => address('pots._id.GET', { id: 'a?b' }), http.BadRequest)
78
- assert.throws(() => address('pots._id.GET', { id: 'a#b' }), http.BadRequest)
79
- })
80
-
81
- it('should refuse a tail that would end the path', () => {
82
- assert.throws(() => address('files.__.GET', { '**': 'a?b' }), http.BadRequest)
83
- })
84
- })
85
-
86
- describe('name', () => {
87
- it('should name the trunk by its verb alone', () => {
88
- assert.equal(name(segment('/'), 'GET'), 'GET')
89
- })
90
-
91
- it('should name a route', () => {
92
- assert.equal(name(segment('/pots'), 'GET'), 'pots.GET')
93
- assert.equal(name(segment('/identity/tokens'), 'POST'), 'identity.tokens.POST')
94
- })
95
-
96
- it('should mark a variable', () => {
97
- assert.equal(name(segment('/pots/:id'), 'GET'), 'pots._id.GET')
98
- assert.equal(
99
- name(segment('/identity/tokens/:identity'), 'POST'),
100
- 'identity.tokens._identity.POST'
101
- )
102
- })
103
-
104
- it('should mark a tail', () => {
105
- assert.equal(name(segment('/files/**'), 'GET'), 'files.__.GET')
106
- })
107
-
108
- it('should keep a hyphen', () => {
109
- assert.equal(name(segment('/jpeg-or-png'), 'GET'), 'jpeg-or-png.GET')
110
- })
111
-
112
- it('should name nothing where a segment cannot be spelled', () => {
113
- assert.equal(name(segment('/v1.0/pots'), 'GET'), null)
114
- assert.equal(name(segment('/a_b'), 'GET'), null)
115
- assert.equal(name(segment('/pots/*'), 'GET'), null)
116
- assert.equal(name(segment('/messages/:sender-:recipient'), 'GET'), null)
117
- })
118
-
119
- it('should round-trip what it names', () => {
120
- const named = name(segment('/pots/:id'), 'GET')!
121
-
122
- assert.deepEqual(address(named, { id: 'a1b2' }), {
123
- path: '/pots/a1b2/',
124
- verb: 'GET',
125
- variables: ['id']
126
- })
127
- })
128
- })
129
-
130
- describe('refusal', () => {
131
- it('should name nothing where every segment can be spelled', () => {
132
- assert.equal(refusal(segment('/pots/:id')), null)
133
- })
134
-
135
- it('should name the segment as it was declared', () => {
136
- assert.equal(refusal(segment('/v1.0/pots')), 'v1.0')
137
- assert.equal(refusal(segment('/pots/a_b')), 'a_b')
138
- assert.equal(refusal(segment('/pots/*')), '*')
139
- assert.equal(refusal(segment('/messages/:sender-:recipient')), ':sender-:recipient')
140
- })
141
- })
@@ -1,176 +0,0 @@
1
- import * as http from '../HTTP/index.js'
2
- import { verbs } from '../RTD/syntax/index.js'
3
- import type { Segment } from '../RTD/segment.js'
4
- import { QUERY, type Params } from './types.js'
5
-
6
- /**
7
- * What a name resolves to: the path the call is made at, and the verb it is made with.
8
- *
9
- * A name is the route template with its variables marked and the verb appended as a segment
10
- * of its own — `pots._id.GET`. The revision names the characters a tool's name may hold, and
11
- * `/` is not among them, so segments are joined by `.` — which a segment cannot hold either,
12
- * so nothing in a name can be mistaken for anything else, and the verb is always last.
13
- */
14
- export interface Address {
15
- path: string
16
- verb: string
17
-
18
- /** the `params` the path took, which are therefore not the operation's input */
19
- variables: string[]
20
- }
21
-
22
- export function address(method: string, params: Params): Address {
23
- const parts = method.split(SEPARATOR)
24
- const verb = parts.pop()!
25
-
26
- if (!verbs.has(verb)) throw new http.NotFound(`'${method}' names no method`)
27
-
28
- const variables: string[] = []
29
- const fragments: string[] = []
30
-
31
- for (const part of parts) {
32
- const key = parameter(part)
33
-
34
- if (key === null) {
35
- fragments.push(literal(part, method))
36
-
37
- continue
38
- }
39
-
40
- if (part !== TAIL && !NAMEABLE.test(key))
41
- throw new http.NotFound(`'${method}' names no procedure`)
42
-
43
- const value = params[key]
44
-
45
- if (value === undefined || value === null)
46
- throw new http.BadRequest(`'${method}' requires the parameter '${key}'`)
47
-
48
- const fragment = String(value)
49
-
50
- // `__` stands for the rest of the path and may carry separators; a variable is one segment
51
- if (!(part === TAIL ? TAILED : OPAQUE).test(fragment))
52
- throw new http.BadRequest(`The parameter '${key}' cannot be a path of its own`)
53
-
54
- variables.push(key)
55
- fragments.push(fragment)
56
- }
57
-
58
- // a route is matched with its trailing slash, and the trunk is the bare one
59
- const path = fragments.length === 0 ? '/' : `/${fragments.join('/')}/`
60
-
61
- return { path, verb, variables }
62
- }
63
-
64
- /**
65
- * What the call carries, as a request carries it: the path took its variables, `query` is
66
- * the querystring, and the rest is the body.
67
- */
68
- export function split(
69
- params: Params,
70
- variables: string[]
71
- ): { query?: Params; input?: Params } {
72
- const input: Params = {}
73
- let query: Params | undefined
74
-
75
- for (const [key, value] of Object.entries(params)) {
76
- if (variables.includes(key)) continue
77
-
78
- if (key !== QUERY) {
79
- input[key] = value
80
-
81
- continue
82
- }
83
-
84
- if (typeof value !== 'object' || value === null || Array.isArray(value))
85
- throw new http.BadRequest(`'${QUERY}' must be an object`)
86
-
87
- query = value as Params
88
- }
89
-
90
- // an absent body is what a request without one has, and the mapping fills it as it does
91
- return { query, input: Object.keys(input).length === 0 ? undefined : input }
92
- }
93
-
94
- /** The parameter a part reads, or nothing where the part is a literal segment. */
95
- function parameter(part: string): string | null {
96
- if (part === TAIL) return WILDCARD
97
-
98
- return part[0] === VARIABLE ? part.slice(1) : null
99
- }
100
-
101
- /** A segment a name cannot spell is a segment no name has, so this one names nothing. */
102
- function literal(part: string, method: string): string {
103
- if (!NAMEABLE.test(part)) throw new http.NotFound(`'${method}' names no procedure`)
104
-
105
- return part
106
- }
107
-
108
- /** The name of a method on this route, or nothing where the route has none. */
109
- export function name(segments: Segment[], verb: string): string | null {
110
- const parts: string[] = []
111
-
112
- for (const segment of segments) {
113
- const part = component(segment)
114
-
115
- if (part === null) return null
116
-
117
- parts.push(part)
118
- }
119
-
120
- parts.push(verb)
121
-
122
- return parts.join(SEPARATOR)
123
- }
124
-
125
- /** The segment that leaves a route unnameable, as it was declared, or nothing where none does. */
126
- export function refusal(segments: Segment[]): string | null {
127
- for (const segment of segments)
128
- if (component(segment) === null) return declared(segment)
129
-
130
- return null
131
- }
132
-
133
- function component(segment: Segment): string | null {
134
- if (segment.fragment !== null)
135
- return NAMEABLE.test(segment.fragment) ? segment.fragment : null
136
-
137
- if (segment.wildcard === true) return TAIL
138
-
139
- // it stands for a segment the caller cannot name, so there is nothing to substitute
140
- if (segment.placeholder === null) return null
141
-
142
- return NAMEABLE.test(segment.placeholder) ? VARIABLE + segment.placeholder : null
143
- }
144
-
145
- /** The route as it was declared, which is how a message about it should read. */
146
- export function template(segments: Segment[]): string {
147
- return '/' + segments.map(declared).join('/')
148
- }
149
-
150
- function declared(segment: Segment): string {
151
- if (segment.fragment !== null) return segment.fragment
152
-
153
- if (segment.wildcard === true) return '**'
154
-
155
- return segment.placeholder === null ? '*' : ':' + segment.placeholder
156
- }
157
-
158
- const SEPARATOR = '.'
159
- const VARIABLE = '_'
160
- const TAIL = '__'
161
-
162
- /** How the RTD names the rest of a path, wherever a parameter of it is read. */
163
- const WILDCARD = '**'
164
-
165
- /**
166
- * What a segment may hold to have a name. `_` is the convention's own, and every other
167
- * character a client leaves alone is here: a client shows a model the name with the rest
168
- * turned into `_`, and two names must not become one.
169
- */
170
- const NAMEABLE = /^[A-Za-z0-9-]+$/
171
-
172
- /** A segment ends at what divides or ends a path. */
173
- const OPAQUE = /^[^/?#]*$/
174
-
175
- /** A tail is several segments, so it keeps the divider and loses only what ends a path. */
176
- const TAILED = /^[^?#]*$/
@@ -1,34 +0,0 @@
1
- /** The version every call and every response states. */
2
- export const VERSION = '2.0'
3
-
4
- /**
5
- * The member `params` reserves for what a querystring would carry. An operation's input is
6
- * free to have an `id` or a `limit` of its own, so the two cannot share one object.
7
- */
8
- export const QUERY = 'query'
9
-
10
- export type Params = Record<string, unknown>
11
-
12
- export interface Call {
13
- jsonrpc: string
14
- method: string
15
- params?: Params
16
-
17
- /** Absent makes this a notification: it runs, and nothing is returned for it. */
18
- id?: string | number
19
- }
20
-
21
- export interface Response {
22
- jsonrpc: string
23
-
24
- /** `null` where the request was not readable enough to carry one. */
25
- id: string | number | null
26
- result?: unknown
27
- error?: Failure
28
- }
29
-
30
- export interface Failure {
31
- code: number
32
- message: string
33
- data?: unknown
34
- }
@@ -1,16 +0,0 @@
1
- import { type DirectiveFactory } from './Directives.js'
2
- import { type EndpointsFactory } from './Endpoint.js'
3
- import type { Directive } from './syntax/index.js'
4
-
5
- export interface Context<TExtension = any> {
6
- readonly protected: boolean
7
- readonly endpoints: EndpointsFactory
8
- readonly directives: {
9
- readonly factory: DirectiveFactory
10
- stack: Directive[]
11
- }
12
-
13
- /** The route being built, accumulated on the way down and restored on the way up. */
14
- path: string
15
- readonly extension: TExtension
16
- }
@@ -1,126 +0,0 @@
1
- import type { Parameter } from './Match.js'
2
- import type * as syntax from './syntax/index.js'
3
- import type { Context, OutgoingMessage, Options } from '../HTTP/index.js'
4
- import type { Output } from '../io.js'
5
- import type { Introspection } from '../Introspection.js'
6
- import type { extensions } from '@toa.io/core/types'
7
-
8
- type Host = extensions.Host
9
-
10
- export interface Directives {
11
- /**
12
- * The directives of one family on this method, or nothing where it declares none of it.
13
- * For a consumer of a declaration rather than of a stage: what a method is published as
14
- * is stated on the route, and read where the publishing happens.
15
- */
16
- declared: <T>(family: string) => T[] | undefined
17
-
18
- precall: (context: Context, parameters: Parameter[]) => Promise<Output>
19
-
20
- /** What this route's directives make of what its method says about itself. */
21
- explain: (
22
- context: Context,
23
- introspection: Introspection
24
- ) => Promise<Introspection | null>
25
- settle: (context: Context, response: OutgoingMessage) => Promise<void>
26
- dispose: () => void
27
- }
28
-
29
- export interface DirectiveFactory {
30
- create: (directives: syntax.Directive[], route: string) => Directives
31
-
32
- /** Whether this declaration is carried into the nodes below the one it is on. */
33
- inheritable: (directive: syntax.Directive) => boolean
34
-
35
- /** Runs every family's `preflight`, which is request-scoped and needs no node. */
36
- preflight: (context: Context) => Promise<void>
37
-
38
- /** Runs every family's `depart`, the counterpart of `preflight`. */
39
- depart: (context: Context, response: OutgoingMessage) => Promise<void>
40
-
41
- dispose: () => void
42
- }
43
-
44
- export interface DirectiveSet {
45
- family: DirectiveFamily
46
- directives: any[]
47
-
48
- /** qualified directive names, e.g. `auth:id` */
49
- names?: string[]
50
- }
51
-
52
- export interface DirectiveFamily<TDirective = any, TExtension = any> {
53
- readonly name: string
54
- readonly mandatory: boolean
55
-
56
- /**
57
- * Whether a declaration applies to everything below the node it is on, as every directive
58
- * does unless it says otherwise. A family that describes what one node *is* sets this
59
- * `false`: inherited, it would say the same thing of every resource under it.
60
- */
61
- readonly inherited?: boolean
62
-
63
- create: (name: string, ...rest: any[]) => TDirective
64
-
65
- /**
66
- * Called once per gateway with what the host provides and how the gateway is configured,
67
- * before any directive is created.
68
- */
69
- mount?: (host: Host, options: Options) => void
70
-
71
- /**
72
- * Puts the directives of one route in the order they must run in. Called once, when
73
- * the set is built — the order cannot depend on the request.
74
- */
75
- arrange?: (directives: TDirective[]) => void
76
-
77
- /**
78
- * Request-scoped, before anything is routed. It takes no directives: no node is known
79
- * yet, and a request that carries several calls has no single node at all. What a
80
- * directive declares is call-scoped by definition, so only what a family does on its
81
- * own behalf — authenticating a credential — belongs here. It answers nothing: a stage
82
- * that runs before a route is known has no reply to make, and refuses by throwing.
83
- */
84
- preflight?: (request: Context & TExtension) => void | Promise<void>
85
-
86
- /** Call-scoped, with what the node declares. Runs once per call. */
87
- precall?: (
88
- directives: TDirective[],
89
- request: Context & TExtension,
90
- parameters: Parameter[]
91
- ) => Output | Promise<Output>
92
-
93
- /**
94
- * What this family's directives make of what the method says about itself, which is
95
- * what `OPTIONS` answers and what a tool is described by. `null` refuses: the method
96
- * is not reachable by this caller, and is not described at all.
97
- *
98
- * There is no request here — no route variable has a value and no body has arrived, which
99
- * is why no parameters are passed — so a directive that can only tell from one hands back
100
- * what it was given.
101
- */
102
- explain?: (
103
- directives: TDirective[],
104
- request: Context & TExtension,
105
- introspection: Introspection
106
- ) => Introspection | null | Promise<Introspection | null>
107
-
108
- /** Call-scoped, on the message that call produced. */
109
- settle?: (
110
- directives: TDirective[],
111
- request: Context & TExtension,
112
- response: OutgoingMessage
113
- ) => void | Promise<void>
114
-
115
- /**
116
- * Request-scoped, on the message going back — the counterpart of `preflight`, and
117
- * likewise without directives. A reply the whole request carries, such as a re-issued
118
- * credential, is written here rather than by a call that would not own it.
119
- */
120
- depart?: (
121
- request: Context & TExtension,
122
- response: OutgoingMessage
123
- ) => void | Promise<void>
124
-
125
- dispose?: (directives: TDirective[]) => void
126
- }
@@ -1,27 +0,0 @@
1
- import { type Context } from './Context.js'
2
- import type * as http from '../HTTP/index.js'
3
- import type * as syntax from './syntax/index.js'
4
- import type * as RTD from './index.js'
5
- import type { Introspection, Schema } from '../Introspection.js'
6
-
7
- export interface Endpoint {
8
- call: (
9
- context: http.Context,
10
- parameters: RTD.Parameter[]
11
- ) => Promise<http.OutgoingMessage>
12
-
13
- explain: (parameters: RTD.Parameter[]) => Promise<Introspection>
14
-
15
- /**
16
- * What picks the records a call is about — `criteria`, `sort` and the rest. Not part of
17
- * what the resource says about itself: it is the same of every queryable one. A
18
- * procedure carries it, because there it is something the caller sends.
19
- */
20
- selection: () => Record<string, Schema> | null
21
-
22
- close: () => Promise<void>
23
- }
24
-
25
- export interface EndpointsFactory {
26
- create: (method: syntax.Method, context: Context) => Endpoint
27
- }
@@ -1,11 +0,0 @@
1
- import { type Node } from './Node.js'
2
-
3
- export interface Match {
4
- node: Node
5
- parameters: Parameter[]
6
- }
7
-
8
- export interface Parameter {
9
- name: string
10
- value: string
11
- }
@@ -1,39 +0,0 @@
1
- import type { Parameter } from './Match.js'
2
- import type { Endpoint } from './Endpoint.js'
3
- import type { Directives } from './Directives.js'
4
- import type { Context } from '../HTTP/index.js'
5
- import { order } from '../Introspection.js'
6
- import type { Introspection } from '../Introspection.js'
7
-
8
- export class Method {
9
- public readonly endpoint: Endpoint | null
10
- public readonly directives: Directives
11
-
12
- public constructor(endpoint: Endpoint | null, directives: Directives) {
13
- this.endpoint = endpoint
14
- this.directives = directives
15
- }
16
-
17
- /**
18
- * What this method says about itself, as its directives leave it, or nothing where they
19
- * refuse this caller. A method of no endpoint — one a directive answers on its own —
20
- * states nothing of its own, and its directives still have their say.
21
- */
22
- public async explain(
23
- context: Context,
24
- parameters: Parameter[]
25
- ): Promise<Introspection | null> {
26
- const introspection =
27
- this.endpoint === null ? {} : await this.endpoint.explain(parameters)
28
-
29
- const described = await this.directives.explain(context, introspection)
30
-
31
- return described === null ? null : order(described)
32
- }
33
-
34
- public async close(): Promise<void> {
35
- await this.endpoint?.close()
36
- }
37
- }
38
-
39
- export type Methods = Record<string, Method>