@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,81 +0,0 @@
1
- import { Stream } from 'node:stream'
2
- import { console } from 'openspan'
3
- import * as schemas from './schemas.js'
4
- import type { Message } from './Message.js'
5
- import type { Directive } from './Directive.js'
6
- import type { Input as Context } from '../../io.js'
7
- import type { OutgoingMessage } from '../../HTTP/index.js'
8
-
9
- export class Output implements Directive {
10
- /** whether the reply passes whole, which is when the schema is the operation's own */
11
- public readonly disabled: boolean = false
12
-
13
- /** what a reply may carry, which is therefore what the output schema states */
14
- public readonly allowed: Set<string>
15
- private readonly omitted: boolean = true
16
- private readonly permissions: string[] = []
17
-
18
- public constructor(permissions: Permissions) {
19
- if (typeof permissions === 'boolean')
20
- if (permissions) this.disabled = true
21
- else this.omitted = false
22
- else this.permissions = permissions
23
-
24
- this.allowed = new Set(this.permissions)
25
- }
26
-
27
- public static validate(permissions: unknown): asserts permissions is Permissions {
28
- schemas.output.validate(permissions, "Incorrect 'io:output' format")
29
- }
30
-
31
- public precall(context: Context): void {
32
- context.pipelines.response.push(this.restriction(context))
33
- }
34
-
35
- private restriction(context: Context) {
36
- return (message: OutgoingMessage): void => {
37
- // what the gateway built is its own — a code and a message — and a restriction has
38
- // nothing to say about it; everything else is a reply the operation returned, and is
39
- // restricted whatever status it carries
40
- const error = message.authentic === true
41
- const stream = message.body instanceof Stream
42
- const none = message.body === undefined || message.body === null
43
-
44
- if (this.disabled || error || stream || none) return
45
-
46
- if (typeof message.body !== 'object' || this.permissions.length === 0) {
47
- if (this.omitted)
48
- console.warn(
49
- "Permissions for 'io:output' are not specified properly, response omitted",
50
- { path: context.url.pathname }
51
- )
52
-
53
- delete message.body
54
-
55
- return
56
- }
57
-
58
- schemas.message.validate<Message>(
59
- message.body,
60
- "'io:output' expects response to be an object or array of objects"
61
- )
62
-
63
- if (Array.isArray(message.body))
64
- message.body = message.body.map((entity) => this.fit(entity as Message))
65
- else message.body = this.fit(message.body)
66
- }
67
- }
68
-
69
- /** Runs per entity of a collection, hence the set and the absence of intermediates. */
70
- private fit(message: Message): Message {
71
- const output: Message = {}
72
-
73
- // the keys of the entity, so that the response keeps the order it was built in
74
- for (const key of Object.keys(message))
75
- if (this.allowed.has(key)) output[key] = message[key]
76
-
77
- return output
78
- }
79
- }
80
-
81
- export type Permissions = string[] | boolean
@@ -1,88 +0,0 @@
1
- import { it } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import { Status } from './Status.js'
5
- import { Output } from './Output.js'
6
- import type { Input as Context } from '../../io.js'
7
- import type { OutgoingMessage } from '../../HTTP/index.js'
8
-
9
- const status = new Status('status')
10
-
11
- function context(): Context {
12
- return {
13
- pipelines: { body: [], response: [] },
14
- url: { pathname: '/' }
15
- } as unknown as Context
16
- }
17
-
18
- it('should take the status from the property and remove it', () => {
19
- const response: OutgoingMessage = { body: { status: 400, error: 'invalid_request' } }
20
-
21
- status.settle(context(), response)
22
-
23
- assert.equal(response.status, 400)
24
- assert.deepEqual(response.body, { error: 'invalid_request' })
25
- })
26
-
27
- it('should leave a reply that states no status alone', () => {
28
- const response: OutgoingMessage = { body: { id: 'x' } }
29
-
30
- status.settle(context(), response)
31
-
32
- assert.equal(response.status, undefined)
33
- assert.deepEqual(response.body, { id: 'x' })
34
- })
35
-
36
- it('should refuse a status that is not one', () => {
37
- for (const value of ['400', null, {}, true])
38
- assert.throws(() => {
39
- status.settle(context(), { body: { status: value } } as OutgoingMessage)
40
- }, /`io:status` expects 'status' to be a number/)
41
- })
42
-
43
- it('should refuse a declaration that is not a property name', () => {
44
- for (const value of [1, null, {}, ['status']])
45
- assert.throws(() => Status.validate(value), /`io:status` must be a string/)
46
- })
47
-
48
- it('should have a reply it named the status of restricted, whatever that status is', () => {
49
- for (const stated of [200, 400]) {
50
- const ctx = context()
51
- const output = new Output(['code', 'error'])
52
-
53
- output.precall(ctx, [])
54
-
55
- const response: OutgoingMessage = {
56
- body: { status: stated, code: 'SplxlO', error: 'invalid_grant', secret: 'x' }
57
- }
58
-
59
- status.settle(ctx, response)
60
-
61
- for (const transform of ctx.pipelines.response) transform(response)
62
-
63
- assert.equal(response.status, stated)
64
- assert.deepEqual(response.body, { code: 'SplxlO', error: 'invalid_grant' })
65
- }
66
- })
67
-
68
- it('should leave a failure the gateway built alone, on such a route too', () => {
69
- const ctx = context()
70
- const output = new Output(['code'])
71
-
72
- output.precall(ctx, [])
73
-
74
- // what `Server.fail` builds out of an exception, on a route that also declares `io:status`
75
- const response: OutgoingMessage = {
76
- status: 422,
77
- authentic: true,
78
- body: { code: 'NOT_FOUND', message: 'nope' }
79
- }
80
-
81
- for (const transform of ctx.pipelines.response) transform(response)
82
-
83
- assert.deepEqual(
84
- response.body,
85
- { code: 'NOT_FOUND', message: 'nope' },
86
- 'a code and a message are not what a restriction has anything to say about'
87
- )
88
- })
@@ -1,47 +0,0 @@
1
- import assert from 'node:assert'
2
- import type { Directive } from './Directive.js'
3
- import type * as http from '../../HTTP/index.js'
4
-
5
- /**
6
- * The status of the reply, taken from a property of what the operation returned and removed
7
- * from it — an outcome the operation knows and the transport does not, like a protocol that
8
- * states its error as a body rather than as a status of its own.
9
- *
10
- * Settled rather than transformed, so the status is set before anything reads it. A reply of
11
- * 300 or above is left as the operation built it, which `io:output` does not restrict: a
12
- * failure and a success are different shapes, and one list of permitted properties does not
13
- * describe both.
14
- */
15
- export class Status implements Directive {
16
- private readonly property: string
17
-
18
- public constructor(property: unknown) {
19
- this.property = property as string
20
- }
21
-
22
- public static validate(value: unknown): asserts value is string {
23
- assert.ok(typeof value === 'string', '`io:status` must be a string')
24
- }
25
-
26
- public precall(): void {
27
- // nothing to do until the operation has answered
28
- }
29
-
30
- public settle(_: unknown, response: http.OutgoingMessage): void {
31
- const body: unknown = response.body
32
-
33
- if (body === null || typeof body !== 'object' || !(this.property in body)) return
34
-
35
- const value: unknown = (body as Record<string, unknown>)[this.property]
36
-
37
- assert.ok(
38
- typeof value === 'number',
39
- `\`io:status\` expects '${this.property}' to be a number`
40
- )
41
-
42
- response.status = value
43
-
44
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
45
- delete (body as Record<string, unknown>)[this.property]
46
- }
47
- }
@@ -1,30 +0,0 @@
1
- import { TooManyRequests } from '../../HTTP/index.js'
2
- import * as schemas from './schemas.js'
3
- import { parse, Quotas, type Declaration, type Sync } from './lib/throttle/index.js'
4
- import type * as http from '../../HTTP/index.js'
5
- import type { Parameter } from '../../RTD/index.js'
6
- import type { Directive } from './Directive.js'
7
-
8
- export class Throttle implements Directive {
9
- private readonly quotas: Quotas
10
-
11
- public constructor(declaration: Declaration, sync: Sync, route: string) {
12
- this.quotas = Quotas.create(parse(declaration), route)
13
-
14
- sync.register(this.quotas)
15
- }
16
-
17
- public static validate(declaration: unknown): asserts declaration is Declaration {
18
- schemas.throttle.validate(declaration, "Incorrect 'io:throttle' format")
19
- }
20
-
21
- public precall(context: http.Context, parameters: Parameter[]): void {
22
- const retry = this.quotas.check(context, parameters)
23
-
24
- if (retry > 0) throw new TooManyRequests(retry)
25
- }
26
-
27
- public settle(context: http.Context, output: http.OutgoingMessage): void {
28
- this.quotas.use(context, output)
29
- }
30
- }
@@ -1,3 +0,0 @@
1
- import { IO } from './IO.js'
2
-
3
- export const io = new IO()
@@ -1,72 +0,0 @@
1
- import { it } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import { parse, type Configuration } from './Configuration.js'
5
-
6
- const rest: Omit<Configuration, 'key' | 'condition'> = {
7
- interval: 1,
8
- requests: 1
9
- }
10
-
11
- it('should convert key', () => {
12
- const result: Partial<Configuration> = {
13
- key: [
14
- {
15
- method: 'ip'
16
- }
17
- ]
18
- }
19
-
20
- assert.partialDeepStrictEqual(parse({ key: 'ip', ...rest }), result)
21
- assert.partialDeepStrictEqual(parse({ key: ['ip'], ...rest }), result)
22
- })
23
-
24
- it('should convert condition', () => {
25
- assert.partialDeepStrictEqual(
26
- parse({ key: ['ip', 'path'], condition: { status: '404' }, ...rest }),
27
- {
28
- condition: [
29
- {
30
- method: 'status',
31
- options: '404'
32
- }
33
- ]
34
- }
35
- )
36
-
37
- assert.partialDeepStrictEqual(
38
- parse({ key: 'ip', condition: { status: '404' }, ...rest }),
39
- {
40
- condition: [
41
- {
42
- method: 'status',
43
- options: '404'
44
- }
45
- ]
46
- }
47
- )
48
- })
49
-
50
- it('should convert a key component that takes an argument', () => {
51
- assert.partialDeepStrictEqual(parse({ key: { segment: 'id' }, ...rest }), {
52
- key: [
53
- {
54
- method: 'segment',
55
- options: 'id'
56
- }
57
- ]
58
- })
59
- })
60
-
61
- it('should convert a mixed key', () => {
62
- assert.partialDeepStrictEqual(
63
- parse({ key: ['route', { segment: 'id' }, 'identity'], ...rest }),
64
- {
65
- key: [
66
- { method: 'route' },
67
- { method: 'segment', options: 'id' },
68
- { method: 'identity' }
69
- ]
70
- }
71
- )
72
- })
@@ -1,68 +0,0 @@
1
- export interface Configuration {
2
- key: KeyComponent[]
3
- condition?: KeyCondition[]
4
- requests: number
5
- interval: number
6
- }
7
-
8
- interface Rule<T, K = unknown> {
9
- method: T
10
- options?: K
11
- }
12
-
13
- export type KeyComponentMethod = 'ip' | 'path' | 'route' | 'identity' | 'segment'
14
- export type KeyConditionMethod = 'status'
15
-
16
- export type KeyComponent = Rule<KeyComponentMethod>
17
- export type KeyCondition = Rule<KeyConditionMethod>
18
-
19
- /** A bare component, or the one that takes an argument. */
20
- type KeyEntry = KeyComponentMethod | { segment: string }
21
- type KeyDeclaration = KeyEntry | KeyEntry[]
22
-
23
- type ConditionDeclaration =
24
- | Record<KeyConditionMethod, unknown>
25
- | Array<Record<KeyConditionMethod, unknown>>
26
-
27
- export interface Declaration extends Omit<Configuration, 'key' | 'condition'> {
28
- key: KeyDeclaration
29
- condition?: ConditionDeclaration
30
- }
31
-
32
- export function parse(declaration: Declaration): Configuration {
33
- const { key, condition, requests, interval } = declaration
34
-
35
- return {
36
- key: mapKey(key),
37
- condition: mapCondition(condition),
38
- requests,
39
- interval: interval * 1000
40
- }
41
- }
42
-
43
- function mapKey(declaration: KeyDeclaration): KeyComponent[] {
44
- const entries = Array.isArray(declaration) ? declaration : [declaration]
45
-
46
- // a bare `path`, or `segment: id` for the ones that take an argument
47
- return entries.flatMap((entry): KeyComponent[] =>
48
- typeof entry === 'string'
49
- ? [{ method: entry }]
50
- : Object.entries(entry).map(([method, options]) => ({
51
- method: method as KeyComponentMethod,
52
- options
53
- }))
54
- )
55
- }
56
-
57
- function mapCondition(declaration?: ConditionDeclaration): KeyCondition[] | undefined {
58
- if (declaration === undefined) return
59
-
60
- // reduce to a single object, then map entries to rules
61
- const conditions = Array.isArray(declaration) ? declaration : [declaration]
62
- const single = conditions.reduce((acc, condition) => ({ ...acc, ...condition }), {})
63
-
64
- return Object.entries(single).map(([method, options]) => ({
65
- method,
66
- options
67
- })) as KeyCondition[]
68
- }
@@ -1,53 +0,0 @@
1
- import { createHash } from 'node:crypto'
2
- import { Components, type Component } from './components/index.js'
3
- import { Conditions, type Condition } from './conditions/index.js'
4
- import type { KeyComponent, KeyCondition } from './Configuration.js'
5
- import type { Parameter } from '../../../../RTD/index.js'
6
- import type { Input as Context, Output } from '../../../../io.js'
7
-
8
- const NONE: Parameter[] = []
9
-
10
- export class Keys {
11
- private readonly components: Component[]
12
- private readonly conditions?: Condition[]
13
-
14
- public constructor(components: Component[], conditions?: Condition[]) {
15
- this.components = components
16
- this.conditions = conditions
17
- }
18
-
19
- public static create(
20
- componentRules: KeyComponent[],
21
- conditionRules?: KeyCondition[],
22
- route: string = ''
23
- ): Keys {
24
- const components = componentRules.map(
25
- (rule) => new Components[rule.method](rule.options, route)
26
- )
27
-
28
- const conditions = conditionRules?.map(
29
- (rule) => new Conditions[rule.method](rule.options)
30
- )
31
-
32
- return new this(components, conditions)
33
- }
34
-
35
- /** The key of the request, or nothing when a component cannot key it. */
36
- public get(context: Context, parameters: Parameter[] = NONE): string | undefined {
37
- const hash = createHash('sha256')
38
-
39
- for (const component of this.components) {
40
- const part = component.get(context, parameters)
41
-
42
- if (part === undefined) return
43
-
44
- hash.update(part)
45
- }
46
-
47
- return hash.digest('hex')
48
- }
49
-
50
- public matches(input: Context, output: Output): boolean {
51
- return this.conditions?.some((condition) => !condition.match(input, output)) !== true
52
- }
53
- }