@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,41 +0,0 @@
1
- import { Stub } from './Stub.js'
2
- import { Throw } from './Throw.js'
3
- import { Sleep } from './Sleep.js'
4
- import { Faulty } from './Faulty.js'
5
- import { type Directive } from './types.js'
6
- import type { Input, Output } from '../../io.js'
7
- import type { DirectiveFamily } from '../../RTD/index.js'
8
-
9
- export class Development implements DirectiveFamily<Directive> {
10
- public readonly name: string = 'dev'
11
- public readonly mandatory: boolean = false
12
-
13
- public create(name: string, value: unknown): Directive {
14
- const Class = constructors[name]
15
-
16
- if (Class === undefined) throw new Error(`Directive 'dev:${name}' is not implemented`)
17
-
18
- return new Class(value)
19
- }
20
-
21
- public async precall(directives: Directive[], input: Input): Promise<Output> {
22
- let output = null
23
-
24
- for (const directive of directives) {
25
- const out = await directive.apply(input)
26
-
27
- if (out !== null)
28
- if (output !== null) throw new Error('`dev` directives ambiguous output')
29
- else output = out
30
- }
31
-
32
- return output
33
- }
34
- }
35
-
36
- const constructors: Record<string, new (value: any) => Directive> = {
37
- stub: Stub,
38
- throw: Throw,
39
- sleep: Sleep,
40
- faulty: Faulty
41
- }
@@ -1,31 +0,0 @@
1
- import assert from 'node:assert'
2
- import { ServiceUnavailable } from '../../HTTP/index.js'
3
- import { cors } from '../cors/index.js'
4
- import type { Output } from '../../io.js'
5
- import type { Directive } from './types.js'
6
-
7
- export class Faulty implements Directive {
8
- private static readonly warned = false
9
- private readonly probability: number
10
-
11
- public constructor(probability: number) {
12
- assert.ok(
13
- typeof probability === 'number',
14
- '`dev:faulty` directive value must be a number'
15
- )
16
- assert.ok(
17
- probability > 0 && probability <= 1,
18
- '`dev:faulty` directive value must be in the range (0, 1]'
19
- )
20
-
21
- this.probability = probability
22
-
23
- cors.allow('faulty')
24
- }
25
-
26
- public async apply(): Promise<Output> {
27
- if (Math.random() > this.probability) return null
28
-
29
- throw new ServiceUnavailable()
30
- }
31
- }
@@ -1,53 +0,0 @@
1
- import assert from 'node:assert'
2
- import { setTimeout } from 'node:timers/promises'
3
- import { console } from 'openspan'
4
- import { cors } from '../cors/index.js'
5
- import { BadRequest } from '../../HTTP/index.js'
6
- import type { Directive } from './types.js'
7
- import type { Input, Output } from '../../io.js'
8
-
9
- export class Sleep implements Directive {
10
- private static warned = false
11
- private readonly maximum: number
12
-
13
- public constructor(value: number) {
14
- assert.ok(Number.isInteger(value), '`dev:sleep` directive value must be an integer')
15
-
16
- if (!Sleep.warned) {
17
- console.warn('Sleep directive is enabled', { maximum: value })
18
- Sleep.warned = true
19
- }
20
-
21
- cors.allow('sleep')
22
- this.maximum = value
23
- }
24
-
25
- public async apply(input: Input): Promise<Output> {
26
- const value = input.request.headers.sleep as string | undefined
27
-
28
- if (value === undefined) return null
29
-
30
- const [min, max] = this.parse(value)
31
-
32
- if (min < 0 || max < 0 || min > max || max > this.maximum)
33
- throw new BadRequest('Invalid sleep duration')
34
-
35
- const duration = Math.floor(Math.random() * (max - min)) + min
36
-
37
- await setTimeout(duration)
38
-
39
- return null
40
- }
41
-
42
- private parse(value: string): [number, number] {
43
- try {
44
- const pair = JSON.parse(value) as [number, number]
45
-
46
- if (!Array.isArray(pair) || pair.length !== 2) throw new Error()
47
-
48
- return pair
49
- } catch {
50
- throw new BadRequest('Invalid sleep duration value')
51
- }
52
- }
53
- }
@@ -1,14 +0,0 @@
1
- import type { Output } from '../../io.js'
2
- import type { Directive } from './types.js'
3
-
4
- export class Stub implements Directive {
5
- private readonly value: unknown
6
-
7
- public constructor(value: unknown) {
8
- this.value = value
9
- }
10
-
11
- public apply(): Output {
12
- return { body: this.value }
13
- }
14
- }
@@ -1,14 +0,0 @@
1
- import type { Output } from '../../io.js'
2
- import type { Directive } from './types.js'
3
-
4
- export class Throw implements Directive {
5
- private readonly message: string
6
-
7
- public constructor(message: string) {
8
- this.message = message
9
- }
10
-
11
- public apply(): Output {
12
- throw new Error(this.message)
13
- }
14
- }
@@ -1,3 +0,0 @@
1
- import { Development } from './Development.js'
2
-
3
- export const dev = new Development()
@@ -1,5 +0,0 @@
1
- import type { Input, Output } from '../../io.js'
2
-
3
- export interface Directive {
4
- apply: (input: Input) => Promise<Output> | Output
5
- }
@@ -1,98 +0,0 @@
1
- import { once } from 'node:events'
2
- import * as assert from 'node:assert'
3
- import { Readable } from 'node:stream'
4
- import { console } from 'openspan'
5
- import type { Directive } from './types.js'
6
- import type { Input as Context } from '../../io.js'
7
- import type { OutgoingMessage } from '../../HTTP/index.js'
8
-
9
- export class Compose implements Directive {
10
- private readonly expressions: Expression[]
11
-
12
- public constructor(composition: any) {
13
- this.expressions = build(composition)
14
- }
15
-
16
- public attach(context: Context): void {
17
- context.pipelines.response.push(async (message: OutgoingMessage) => {
18
- if (!(message.body instanceof Readable)) {
19
- console.warn('Response body is not a stream, skipping composition')
20
-
21
- return
22
- }
23
-
24
- assert.ok(message.body instanceof Readable, 'Response body is not a stream')
25
-
26
- assert.ok(
27
- // @ts-expect-error -- objectMode is not defined in the type definition
28
- message.body._readableState.objectMode,
29
- 'Response stream is not in object mode'
30
- )
31
-
32
- const $ = await this.compose(message.body)
33
-
34
- message.body = this.execute($)
35
- })
36
- }
37
-
38
- private async compose(stream: Readable): Promise<unknown[]> {
39
- const $: unknown[] = []
40
-
41
- stream.on('data', (data) => $.push(data))
42
-
43
- await once(stream, 'end')
44
-
45
- return $
46
- }
47
-
48
- private execute($: unknown[]): unknown {
49
- let exception: Error | undefined
50
-
51
- for (const expression of this.expressions)
52
- try {
53
- return expression($)
54
- } catch (e: unknown) {
55
- exception = e as Error
56
- console.debug('Chunks composition failed', { cause: exception.message })
57
- }
58
-
59
- throw exception!
60
- }
61
- }
62
-
63
- function build(composition: any): Expression[] {
64
- return Array.isArray(composition)
65
- ? composition.map((variant) => compile(variant as object | string))
66
- : [compile(composition as object | string)]
67
- }
68
-
69
- function compile(composition: object | string): Expression {
70
- const text =
71
- typeof composition === 'string'
72
- ? `return ${composition}`
73
- : `return ${json(composition)}`
74
-
75
- // eslint-disable-next-line @typescript-eslint/no-implied-eval,no-new-func
76
- return new Function('$', text) as Expression
77
- }
78
-
79
- function json(node: object | string): string {
80
- if (typeof node === 'string')
81
- if (node.startsWith('\\')) return `"${node}"`
82
- else return node
83
-
84
- if (Array.isArray(node))
85
- return `[${node.map((v) => json(v as object | string)).join(',')}]`
86
-
87
- if (node.constructor !== Object) return JSON.stringify(node)
88
-
89
- return (
90
- '{' +
91
- Object.entries(node)
92
- .map(([key, value]) => `"${key}": ${json(value as object | string)}`)
93
- .join(',') +
94
- '}'
95
- )
96
- }
97
-
98
- type Expression = ($: unknown[]) => unknown
@@ -1,86 +0,0 @@
1
- import { Readable } from 'node:stream'
2
- import assert from 'node:assert'
3
- import { match } from 'matchacho'
4
- import { NotFound } from '../../HTTP/index.js'
5
- import type { Directive } from './types.js'
6
- import type { ReadableStream } from 'node:stream/web'
7
- import type { Remotes } from '../../Remotes.js'
8
- import type { Maybe } from '@toa.io/core/types'
9
- import type { Component } from '@toa.io/core'
10
- import type { Output } from '../../io.js'
11
- import type { Input } from '../octets/types.js'
12
- import type { Parameter } from '../../RTD/index.js'
13
-
14
- export class Fetch implements Directive {
15
- private readonly connecting: Promise<Component>
16
- private remote: Component | null = null
17
- private readonly operation: string
18
-
19
- public constructor(endpoint: string, discovery: Remotes) {
20
- assert.equal(typeof endpoint, 'string', '`flow:fetch` must be a string')
21
-
22
- const [operation, name, namespace = 'default'] = endpoint.split('.').reverse()
23
-
24
- this.operation = operation
25
- this.connecting = discovery.discover(namespace, name)
26
- }
27
-
28
- public async apply(input: Input, parameters: Parameter[]): Promise<Output> {
29
- if ('if-none-match' in input.request.headers) return { status: 304 }
30
-
31
- this.remote ??= await this.connecting
32
-
33
- const request = await this.remote.invoke<Maybe<Request | string>>(this.operation, {
34
- input: {
35
- authority: input.authority,
36
- path: input.request.url,
37
- parameters: Object.fromEntries(parameters.map(({ name, value }) => [name, value]))
38
- }
39
- })
40
-
41
- if (request instanceof Error) throw new NotFound(request)
42
-
43
- const { url, options } = match<Request>(
44
- request,
45
- String,
46
- { url: request },
47
- (request: Request): Request => ({
48
- url: request.url,
49
- options: {
50
- method: request.options?.method ?? 'GET',
51
- body: request.options?.body,
52
- headers: request.options?.headers
53
- }
54
- })
55
- )
56
-
57
- const response = await fetch(url, options)
58
-
59
- if (!response.ok) throw new NotFound()
60
-
61
- const headers = new Headers()
62
-
63
- for (const header of ['content-type', 'content-length', 'etag']) {
64
- const value = response.headers.get(header)
65
-
66
- if (value !== null) headers.set(header, value)
67
- }
68
-
69
- return {
70
- headers,
71
- body:
72
- response.body === null ? null : Readable.fromWeb(response.body as ReadableStream)
73
- }
74
- }
75
- }
76
-
77
- interface Request {
78
- url: string
79
- options?: RequestOptions
80
- }
81
-
82
- interface RequestOptions {
83
- method?: string
84
- body?: string
85
- headers?: Record<string, string>
86
- }
@@ -1,43 +0,0 @@
1
- import { Fetch } from './Fetch.js'
2
- import { Compose } from './Compose.js'
3
- import type { Directive } from './types.js'
4
- import type { Input, Output } from '../../io.js'
5
- import type { DirectiveFamily, Parameter } from '../../RTD/index.js'
6
- import type { Remotes } from '../../Remotes.js'
7
-
8
- export class Flow implements DirectiveFamily<Directive> {
9
- public readonly name: string = 'flow'
10
- public readonly mandatory: boolean = false
11
-
12
- public create(name: string, value: unknown, remotes: Remotes): Directive {
13
- const Class = constructors[name]
14
-
15
- if (Class === undefined)
16
- throw new Error(`Directive '${this.name}:${name}' is not implemented`)
17
-
18
- return new Class(value, remotes)
19
- }
20
-
21
- public async precall(
22
- directives: Directive[],
23
- input: Input,
24
- parameters: Parameter[]
25
- ): Promise<Output> {
26
- for (const directive of directives) {
27
- if (directive.attach !== undefined) directive.attach(input)
28
-
29
- if (directive.apply === undefined) continue
30
-
31
- const output = await directive.apply(input, parameters)
32
-
33
- if (output !== null) return output
34
- }
35
-
36
- return null
37
- }
38
- }
39
-
40
- const constructors: Record<string, new (value: any, discovery: Remotes) => Directive> = {
41
- fetch: Fetch,
42
- compose: Compose
43
- }
@@ -1,3 +0,0 @@
1
- import { Flow } from './Flow.js'
2
-
3
- export const flow = new Flow()
@@ -1,7 +0,0 @@
1
- import type { Input as Context, Input, Output } from '../../io.js'
2
- import type { Parameter } from '../../RTD/index.js'
3
-
4
- export interface Directive {
5
- apply?: (input: Input, parameters: Parameter[]) => Promise<Output>
6
- attach?: (context: Context) => void
7
- }
@@ -1,122 +0,0 @@
1
- import assert from 'node:assert'
2
- import { Help } from './Help.js'
3
- import { Parameters } from './Parameters.js'
4
- import type { Introspection, Schema } from '../../Introspection.js'
5
- import type { Described } from './described.js'
6
- import type { Context } from '../../HTTP/index.js'
7
- import type { DirectiveFamily } from '../../RTD/index.js'
8
-
9
- /** The name the family is declared under, and what a consumer of one asks a method for. */
10
- export const FAMILY = 'help'
11
-
12
- export type Directive = Help | Parameters
13
-
14
- export class Family implements DirectiveFamily<Directive> {
15
- public readonly name = FAMILY
16
- public readonly mandatory = false
17
-
18
- /**
19
- * What a node says of itself is not said of what is under it: inherited, `help:node`
20
- * would describe every resource below as the one it was written for. The rest go with
21
- * it — a sentence about one method is not true of the next, and a route variable a
22
- * template does not have is not one at all.
23
- */
24
- public readonly inherited = false
25
-
26
- /** What the nearest declaration says of the method, or nothing where none does. */
27
- public static method(directives: Directive[] | undefined): Help | null {
28
- return stated(directives, 'method')
29
- }
30
-
31
- /** And the same of the resource the method is on. */
32
- public static node(directives: Directive[] | undefined): Help | null {
33
- return stated(directives, 'node')
34
- }
35
-
36
- // eslint-disable-next-line max-params
37
- public create(name: string, value: unknown, _: unknown, route: string): Directive {
38
- if (name === 'node' || name === 'method') return new Help(name, value)
39
-
40
- assert.ok(name === 'route' || name === 'query', `Unknown directive: help:${name}`)
41
-
42
- return new Parameters(name, value, route)
43
- }
44
-
45
- /** What the route states this method and its parameters are. */
46
- public explain(
47
- directives: Directive[],
48
- _: Context,
49
- introspection: Introspection
50
- ): Introspection | null {
51
- const help = Family.method(directives)
52
-
53
- // what is hidden is hidden from every answer at once, this being the one place they
54
- // all read; the method itself is reached as it always was
55
- if (help?.hidden === true) return null
56
-
57
- const described: Introspection = {
58
- ...introspection,
59
- ...(help?.title === undefined ? {} : { title: help.title }),
60
- ...(help?.description === undefined ? {} : { description: help.description })
61
- }
62
-
63
- // a schema says `title` and `description` of what it describes, which is where these go
64
- for (const subject of PARAMETERS) {
65
- const declaration = declared(directives, subject)
66
-
67
- if (declaration === null) continue
68
-
69
- const parameters = declaration.parameters
70
-
71
- for (const [name, stated] of Object.entries(parameters)) {
72
- const schema = described[subject]?.[name]
73
-
74
- /*
75
- * A route variable is one because the template names it, whether or not the
76
- * operation declares it as input — and only then is it answered. `:id` on an
77
- * observation is the ordinary case: it is taken by the query, so nothing describes
78
- * it and the caller is not told it is a path parameter at all.
79
- *
80
- * Anything else is described only where it is already answered: a querystring
81
- * parameter is one only where the mapping takes it, and a segment `map:segments`
82
- * renames is answered under the property it fills.
83
- */
84
- if (schema === undefined && !declaration.variables.includes(name)) continue
85
-
86
- // written where the shape states it, whatever the schema already said
87
- const merged = { ...schema } as Record<string, unknown>
88
-
89
- delete merged.title
90
- delete merged.description
91
-
92
- described[subject] ??= {}
93
- described[subject]![name] = Object.assign(merged, stated) as unknown as Schema
94
- }
95
- }
96
-
97
- return described
98
- }
99
- }
100
-
101
- const PARAMETERS = ['route', 'query'] as const
102
-
103
- function stated(directives: Directive[] | undefined, subject: string): Help | null {
104
- const help = directives?.find(
105
- (directive) => directive instanceof Help && directive.subject === subject
106
- )
107
-
108
- return (help as Help | undefined) ?? null
109
- }
110
-
111
- function declared(
112
- directives: Directive[] | undefined,
113
- subject: string
114
- ): Parameters | null {
115
- const found = directives?.find(
116
- (directive) => directive instanceof Parameters && directive.subject === subject
117
- )
118
-
119
- return (found as Parameters | undefined) ?? null
120
- }
121
-
122
- export type { Described }