@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,28 +0,0 @@
1
- import { it } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import { address } from './address.js'
5
- import type { IncomingMessage } from './types.js'
6
-
7
- const request = (headers: Record<string, string>): IncomingMessage =>
8
- ({ headers, socket: { remoteAddress: '9.9.9.9' } }) as unknown as IncomingMessage
9
-
10
- it('should be nothing without a header named', () => {
11
- assert.equal(address(request({ 'x-forwarded-for': '1.1.1.1' })), undefined)
12
- })
13
-
14
- it('should be the last value of the named header', () => {
15
- assert.equal(
16
- address(request({ 'x-forwarded-for': '1.1.1.1, 2.2.2.2' }), 'x-forwarded-for'),
17
- '2.2.2.2'
18
- )
19
- assert.equal(
20
- address(request({ 'cf-connecting-ip': '3.3.3.3' }), 'cf-connecting-ip'),
21
- '3.3.3.3'
22
- )
23
- })
24
-
25
- it('should be nothing when the named header is absent or empty', () => {
26
- assert.equal(address(request({}), 'x-real-ip'), undefined)
27
- assert.equal(address(request({ 'x-real-ip': ' ' }), 'x-real-ip'), undefined)
28
- })
@@ -1,16 +0,0 @@
1
- import type { IncomingMessage } from './types.js'
2
-
3
- /**
4
- * The client address: the value of the header the deployment names, and nothing otherwise.
5
- * Of a header holding a list, the last value is the one the edge in front appended. The
6
- * connection's address is never it: behind an edge it is the edge's.
7
- */
8
- export function address(request: IncomingMessage, header?: string): string | undefined {
9
- if (header === undefined) return
10
-
11
- const value = request.headers[header]
12
- const raw = Array.isArray(value) ? value[value.length - 1] : value
13
- const last = raw?.slice(raw.lastIndexOf(',') + 1).trim()
14
-
15
- return last === '' ? undefined : last
16
- }
@@ -1,99 +0,0 @@
1
- export class Exception extends Error {
2
- public readonly status: number
3
- public readonly body?: any
4
-
5
- /** Headers the status is not complete without, like `Retry-After` on a 429. */
6
- public readonly headers?: Headers
7
-
8
- protected constructor(status: number, body?: any, headers?: Headers) {
9
- super()
10
- this.status = status
11
- this.body = body
12
- this.headers = headers
13
- }
14
- }
15
-
16
- export class ClientError extends Exception {}
17
-
18
- export class BadRequest extends ClientError {
19
- public constructor(body?: any) {
20
- super(400, body)
21
- }
22
- }
23
-
24
- export class Unauthorized extends ClientError {
25
- public constructor(body?: any) {
26
- super(401, body)
27
- }
28
- }
29
-
30
- export class Forbidden extends ClientError {
31
- public constructor(body?: any) {
32
- super(403, body)
33
- }
34
- }
35
-
36
- export class NotFound extends ClientError {
37
- public constructor(body?: any) {
38
- super(404, body)
39
- }
40
- }
41
-
42
- export class MethodNotAllowed extends ClientError {
43
- public constructor(headers?: Headers) {
44
- super(405, undefined, headers)
45
- }
46
- }
47
-
48
- export class NotAcceptable extends ClientError {
49
- public constructor() {
50
- super(406)
51
- }
52
- }
53
-
54
- export class Conflict extends ClientError {
55
- public constructor(body?: any) {
56
- super(409, body)
57
- }
58
- }
59
-
60
- export class PreconditionFailed extends ClientError {
61
- public constructor() {
62
- super(412)
63
- }
64
- }
65
-
66
- export class RequestEntityTooLarge extends ClientError {
67
- public constructor(body?: any) {
68
- super(413, body)
69
- }
70
- }
71
-
72
- export class UnsupportedMediaType extends ClientError {
73
- public constructor() {
74
- super(415)
75
- }
76
- }
77
-
78
- export class UnprocessableEntity extends ClientError {
79
- public constructor(body?: any) {
80
- super(422, body)
81
- }
82
- }
83
-
84
- export class TooManyRequests extends ClientError {
85
- /** @param retry Seconds until the request would be admitted. */
86
- public constructor(retry?: number) {
87
- super(
88
- 429,
89
- undefined,
90
- retry === undefined ? undefined : new Headers({ 'retry-after': String(retry) })
91
- )
92
- }
93
- }
94
-
95
- export class ServiceUnavailable extends Exception {
96
- public constructor(body?: any) {
97
- super(503, body)
98
- }
99
- }
@@ -1,21 +0,0 @@
1
- export const type = 'application/x-www-form-urlencoded'
2
-
3
- /**
4
- * A form is read and never written: it is what an HTML form and a handful of protocols send,
5
- * and nothing asks for a reply in it.
6
- *
7
- * A name repeated in a form is a list, which is how a form says one — `URLSearchParams` keeps
8
- * every value, and a name given once stays the string it was written as.
9
- */
10
- export function decode(buffer: Buffer, charset = 'utf-8'): any {
11
- const params = new URLSearchParams(buffer.toString(charset as BufferEncoding))
12
- const value: Record<string, string | string[]> = {}
13
-
14
- for (const name of new Set(params.keys())) {
15
- const values = params.getAll(name)
16
-
17
- value[name] = values.length === 1 ? values[0] : values
18
- }
19
-
20
- return value
21
- }
@@ -1,36 +0,0 @@
1
- import * as json from './json.js'
2
- import * as yaml from './yaml.js'
3
- import * as msgpack from './msgpack.js'
4
- import * as text from './text.js'
5
- import * as form from './form.js'
6
-
7
- /** What a reply may be encoded as, and so what `accept` is negotiated against. */
8
- export const formats: Record<string, Format> = {
9
- [json.type]: json,
10
- [yaml.type]: yaml,
11
- [text.type]: text,
12
- [msgpack.type]: msgpack
13
- }
14
-
15
- export const types = Object.keys(formats)
16
-
17
- /**
18
- * What a request body may arrive as. Everything a reply may be, and a form besides — which
19
- * is read and never written, so it is not something a reply can be asked for.
20
- */
21
- export const decoders: Record<string, Decoder> = {
22
- ...formats,
23
- [form.type]: form
24
- }
25
-
26
- export interface Decoder {
27
- readonly type: string
28
-
29
- decode: (buffer: Buffer, charset?: string) => any
30
- }
31
-
32
- export interface Format extends Decoder {
33
- readonly multipart: string
34
-
35
- encode: (value: any) => Buffer
36
- }
@@ -1,14 +0,0 @@
1
- export const type = 'application/json'
2
- export const multipart = 'multipart/json'
3
-
4
- export function decode(buffer: Buffer, charset = 'utf-8'): any {
5
- const text = buffer.toString(charset as BufferEncoding)
6
-
7
- return JSON.parse(text)
8
- }
9
-
10
- export function encode(value: any): Buffer {
11
- const text = JSON.stringify(value)
12
-
13
- return Buffer.from(text)
14
- }
@@ -1,14 +0,0 @@
1
- import { pack, unpack } from 'msgpackr'
2
-
3
- export function decode(buffer: Buffer): any {
4
- return unpack(buffer)
5
- }
6
-
7
- export function encode(value: any): Buffer {
8
- if (typeof value === 'object' && value !== null) Object.setPrototypeOf(value, null)
9
-
10
- return pack(value)
11
- }
12
-
13
- export const type = 'application/msgpack'
14
- export const multipart = 'multipart/msgpack'
@@ -1,10 +0,0 @@
1
- export const type = 'text/plain'
2
- export const multipart = 'multipart/text'
3
-
4
- export function decode(buffer: Buffer, charset = 'utf-8'): any {
5
- return buffer.toString(charset as BufferEncoding)
6
- }
7
-
8
- export function encode(value: { toString: () => string }): Buffer {
9
- return Buffer.from(value.toString())
10
- }
@@ -1,22 +0,0 @@
1
- import { it } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import { encode } from './yaml.js'
5
-
6
- it('encodes error values as their public properties', () => {
7
- const value = new (class InvalidUsernameError extends Error {
8
- public readonly code = 'INVALID_USERNAME'
9
- public override readonly message = 'Username is not meeting the requirements'
10
- })()
11
-
12
- assert.strictEqual(
13
- encode(value).toString(),
14
- 'code: INVALID_USERNAME\nmessage: Username is not meeting the requirements\n'
15
- )
16
- })
17
-
18
- it('writes a value the way its toJSON says', () => {
19
- const secret = { unwrap: () => 's3cret', toJSON: () => '<REDACTED>' }
20
-
21
- assert.strictEqual(encode({ a: 1, b: secret }).toString(), 'a: 1\nb: <REDACTED>\n')
22
- })
@@ -1,40 +0,0 @@
1
- import { yaml } from '@toa.io/generic'
2
-
3
- export const type = 'application/yaml'
4
- export const multipart = 'multipart/yaml'
5
-
6
- export function decode(buffer: Buffer, charset = 'utf-8'): any {
7
- const text = buffer.toString(charset as BufferEncoding)
8
-
9
- return yaml.load(text)
10
- }
11
-
12
- export function encode(value: any): Buffer {
13
- const serializable =
14
- value instanceof Error ? Object.assign({}, value) : represent(value)
15
- const text = yaml.dump(serializable, { lineWidth: -1, noRefs: true })
16
-
17
- return Buffer.from(text)
18
- }
19
-
20
- /** What says how it is to be written — a redacted secret — is written that way, as in JSON. */
21
- function represent(value: unknown): unknown {
22
- if (
23
- typeof value !== 'object' ||
24
- value === null ||
25
- value instanceof Date ||
26
- Buffer.isBuffer(value)
27
- )
28
- return value
29
-
30
- if ('toJSON' in value && typeof value.toJSON === 'function') return value.toJSON()
31
-
32
- if (Array.isArray(value)) return value.map(represent)
33
-
34
- const object = value as Record<string, unknown>
35
- const represented: Record<string, unknown> = {}
36
-
37
- for (const key of Object.keys(object)) represented[key] = represent(object[key])
38
-
39
- return represented
40
- }
@@ -1,6 +0,0 @@
1
- export * from './Server.js'
2
- export * from './messages.js'
3
- export * from './exceptions.js'
4
- export * from './Context.js'
5
- export * from './types.js'
6
- export * from './Probe.js'
@@ -1,196 +0,0 @@
1
- import { describe, it, beforeEach } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import { PassThrough, Readable } from 'node:stream'
5
- import * as streamConsumers from 'node:stream/consumers'
6
- import { generate } from 'randomstring'
7
- import * as msgpack from 'msgpackr'
8
- import { multipart, read, type OutgoingMessage } from './messages.js'
9
- import { BadRequest, UnsupportedMediaType } from './exceptions.js'
10
- import { formats, types } from './formats/index.js'
11
- import { Timing } from './Timing.js'
12
- import type * as http from 'node:http'
13
- import type { Context } from './Context.js'
14
-
15
- beforeEach(() => {
16
- resetCalls()
17
- })
18
-
19
- describe('read', () => {
20
- it('should parse application/json', async () => {
21
- const path = generate()
22
- const headers = { 'content-type': 'application/json' }
23
- const input = { [generate()]: generate() }
24
- const json = JSON.stringify(input)
25
- const context = createContext(path, headers, json)
26
- const output = await read(context)
27
-
28
- assert.deepStrictEqual(output, input)
29
- })
30
-
31
- it('should parse application/yaml', async () => {
32
- const path = generate()
33
- const headers = { 'content-type': 'application/yaml' }
34
- const yaml = 'foo: 1'
35
- const request = createContext(path, headers, yaml)
36
- const value = await read(request)
37
-
38
- assert.deepStrictEqual(value, { foo: 1 })
39
- })
40
-
41
- it('should parse application/mskpack', async () => {
42
- const path = generate()
43
- const headers = { 'content-type': 'application/msgpack' }
44
- const input = { [generate()]: generate() }
45
- const msg = msgpack.encode(input)
46
- const request = createContext(path, headers, msg)
47
- const output = await read(request)
48
-
49
- assert.deepStrictEqual(output, input)
50
- })
51
-
52
- it('should parse text/plain', async () => {
53
- const path = generate()
54
- const headers = { 'content-type': 'text/plain' }
55
- const input = generate()
56
- const request = createContext(path, headers, input)
57
- const output = await read(request)
58
-
59
- assert.deepStrictEqual(output, input)
60
- })
61
-
62
- it('should parse application/json with charset parameter', async () => {
63
- const path = generate()
64
- const headers = { 'content-type': 'application/json; charset=utf-8' }
65
- const input = { [generate()]: generate() }
66
- const json = JSON.stringify(input)
67
- const context = createContext(path, headers, json)
68
- const output = await read(context)
69
-
70
- assert.deepStrictEqual(output, input)
71
- })
72
-
73
- it('should throw on unsupported request media type', async () => {
74
- const path = generate()
75
- const headers = { 'content-type': 'wtf/' + generate() }
76
- const request = createContext(path, headers)
77
-
78
- await assert.rejects(read(request), UnsupportedMediaType)
79
- })
80
-
81
- it('should throw on malformed content', async () => {
82
- const path = generate()
83
- const text = '{ "foo": "val... oops '
84
- const headers = { 'content-type': 'application/json' }
85
- const request = createContext(path, headers, text)
86
-
87
- await assert.rejects(read(request), BadRequest)
88
- })
89
-
90
- it('should parse application/x-www-form-urlencoded', async () => {
91
- const headers = { 'content-type': 'application/x-www-form-urlencoded' }
92
- const form = 'grant_type=authorization_code&code=SplxlO&scope=a+b'
93
- const request = createContext(generate(), headers, form)
94
-
95
- assert.deepStrictEqual(await read(request), {
96
- grant_type: 'authorization_code',
97
- code: 'SplxlO',
98
- scope: 'a b'
99
- })
100
- })
101
-
102
- it('should read a repeated form name as the list it is', async () => {
103
- const headers = { 'content-type': 'application/x-www-form-urlencoded' }
104
- const request = createContext(generate(), headers, 'resource=one&resource=two')
105
-
106
- assert.deepStrictEqual(await read(request), { resource: ['one', 'two'] })
107
- })
108
-
109
- it('should not offer a form as a reply encoding', () => {
110
- assert.ok(
111
- !types.includes('application/x-www-form-urlencoded'),
112
- 'a form is read and never written'
113
- )
114
- })
115
-
116
- it('should output correct mulitpart format', async () => {
117
- const response = new (class extends PassThrough {
118
- public readonly headers = new Headers()
119
-
120
- public setHeader(key: string, value: string): this {
121
- this.headers.set(key, value)
122
-
123
- return this
124
- }
125
- })()
126
-
127
- const context = { encoder: formats['text/plain'] } as unknown as Context
128
- const message = {
129
- body: Readable.from(['Hello', 'New', 'World'])
130
- } as unknown as OutgoingMessage
131
-
132
- const framed = multipart(message, context, response as unknown as http.ServerResponse)
133
-
134
- const result = await streamConsumers.text(framed)
135
-
136
- assert.strictEqual(
137
- result,
138
- [
139
- '--cut',
140
- '',
141
- 'ACK',
142
- '--cut',
143
- '',
144
- 'Hello',
145
- '--cut',
146
- '',
147
- 'New',
148
- '--cut',
149
- '',
150
- 'World',
151
- '--cut',
152
- '',
153
- 'FIN',
154
- '--cut--'
155
- ].join('\r\n')
156
- )
157
- })
158
- })
159
-
160
- export function createContext(
161
- url: string,
162
- headers: Record<string, string> = {},
163
- content: string | Buffer = ''
164
- ): Context {
165
- const data = Buffer.isBuffer(content) ? content : Buffer.from(content)
166
- const stream = Readable.from(data)
167
- let consumed = false
168
-
169
- const mock: Partial<Context> = {
170
- request: Object.assign(stream, {
171
- url,
172
- headers
173
- }) as unknown as Context['request'],
174
- url: new URL(url, 'https://host.local'),
175
- timing: new Timing(),
176
- buffer: async () => {
177
- if (consumed) throw new Error('Request body already consumed')
178
-
179
- consumed = true
180
-
181
- return data
182
- }
183
- }
184
-
185
- return mock as unknown as Context
186
- }
187
-
188
- function resetCalls(target = [], seen = new Set()) {
189
- if (target === null || typeof target !== 'object' || seen.has(target)) return
190
-
191
- seen.add(target)
192
-
193
- for (const value of Object.values(target))
194
- if (typeof value === 'function' && value.mock !== undefined) value.mock.resetCalls()
195
- else resetCalls(value, seen)
196
- }