@toa.io/extensions.exposition 1.0.0-alpha.291 → 1.0.0-alpha.293

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (526) hide show
  1. package/components/identity.basic/package.json +8 -0
  2. package/components/identity.federation/package.json +8 -0
  3. package/components/identity.passkeys/package.json +8 -0
  4. package/components/identity.tokens/package.json +10 -0
  5. package/package.json +25 -13
  6. package/transpiled/Discovery/Explorer.js +1 -1
  7. package/transpiled/Discovery/Explorer.js.map +1 -1
  8. package/transpiled/Discovery/Site.js +1 -1
  9. package/transpiled/Discovery/Site.js.map +1 -1
  10. package/transpiled/Discovery/trunk.js +1 -1
  11. package/transpiled/Discovery/trunk.js.map +1 -1
  12. package/transpiled/Endpoint.js +3 -0
  13. package/transpiled/Endpoint.js.map +1 -1
  14. package/transpiled/Factory.js +1 -1
  15. package/transpiled/Factory.js.map +1 -1
  16. package/transpiled/Gateway.js +1 -1
  17. package/transpiled/Gateway.js.map +1 -1
  18. package/transpiled/HTTP/Server.d.ts +1 -1
  19. package/transpiled/HTTP/Server.js +1 -1
  20. package/transpiled/HTTP/Server.js.map +1 -1
  21. package/transpiled/Introspection.d.ts +6 -0
  22. package/transpiled/Introspection.js +1 -0
  23. package/transpiled/Introspection.js.map +1 -1
  24. package/transpiled/MCP/Server.d.ts +1 -1
  25. package/transpiled/MCP/Server.js +1 -1
  26. package/transpiled/MCP/Server.js.map +1 -1
  27. package/transpiled/MCP/discover.d.ts +1 -1
  28. package/transpiled/MCP/schema.js +2 -2
  29. package/transpiled/Query.d.ts +2 -12
  30. package/transpiled/Query.js +3 -13
  31. package/transpiled/Query.js.map +1 -1
  32. package/transpiled/RPC/Dispatcher.d.ts +1 -1
  33. package/transpiled/RPC/Dispatcher.js +2 -2
  34. package/transpiled/RPC/Dispatcher.js.map +1 -1
  35. package/transpiled/RTD/Endpoint.d.ts +2 -3
  36. package/transpiled/RTD/Tree.js +1 -1
  37. package/transpiled/RTD/Tree.js.map +1 -1
  38. package/transpiled/RTD/factory.js +1 -1
  39. package/transpiled/RTD/factory.js.map +1 -1
  40. package/transpiled/RTD/syntax/index.d.ts +1 -2
  41. package/transpiled/RTD/syntax/index.js +1 -2
  42. package/transpiled/RTD/syntax/index.js.map +1 -1
  43. package/transpiled/Tenant.js +1 -1
  44. package/transpiled/Tenant.js.map +1 -1
  45. package/transpiled/directives/auth/Authorization.js +1 -1
  46. package/transpiled/directives/auth/Authorization.js.map +1 -1
  47. package/transpiled/directives/io/IO.js +1 -1
  48. package/transpiled/directives/io/IO.js.map +1 -1
  49. package/transpiled/directives/oauth/documents.d.ts +1 -1
  50. package/transpiled/index.d.ts +0 -2
  51. package/transpiled/index.js +0 -2
  52. package/transpiled/index.js.map +1 -1
  53. package/transpiled/service.js +1 -1
  54. package/transpiled/service.js.map +1 -1
  55. package/ui/dist/_app/immutable/assets/0.Cu0AnR_8.css +2 -0
  56. package/ui/dist/_app/immutable/assets/2.BghF56l_.css +1 -0
  57. package/ui/dist/_app/immutable/assets/ui.C8aD6zzF.css +1 -0
  58. package/ui/dist/_app/immutable/chunks/B8GvXrmq.js +1 -0
  59. package/ui/dist/_app/immutable/chunks/BVDJTrf4.js +3 -0
  60. package/ui/dist/_app/immutable/chunks/D6q28_Ok.js +86 -0
  61. package/ui/dist/_app/immutable/chunks/{D9tE1yyO.js → DVlaUfVU.js} +1 -1
  62. package/ui/dist/_app/immutable/chunks/DpB73ZB6.js +6 -0
  63. package/ui/dist/_app/immutable/entry/app.CTava8yn.js +2 -0
  64. package/ui/dist/_app/immutable/entry/start.yWN0gSLA.js +1 -0
  65. package/ui/dist/_app/immutable/nodes/0.HKRDBYrC.js +1 -0
  66. package/ui/dist/_app/immutable/nodes/1.CLa0ydOi.js +1 -0
  67. package/ui/dist/_app/immutable/nodes/2.C9Kaym8C.js +8 -0
  68. package/ui/dist/_app/immutable/nodes/3.C1X4_rXZ.js +1 -0
  69. package/ui/dist/_app/immutable/nodes/4.DdzDIi9E.js +1 -0
  70. package/ui/dist/_app/immutable/nodes/5.DpbmCMdw.js +1 -0
  71. package/ui/dist/_app/version.json +1 -1
  72. package/ui/dist/index.html +12 -12
  73. package/CHANGELOG.md +0 -35
  74. package/components/identity.bans/tsconfig.tsbuildinfo +0 -1
  75. package/components/identity.basic/source/lib/credentials.test.ts +0 -18
  76. package/components/identity.basic/tsconfig.tsbuildinfo +0 -1
  77. package/components/identity.clients/source/lib/canonical.test.ts +0 -43
  78. package/components/identity.clients/source/lib/cimd.test.ts +0 -122
  79. package/components/identity.clients/source/lib/redirect.test.ts +0 -47
  80. package/components/identity.clients/tsconfig.tsbuildinfo +0 -1
  81. package/components/identity.credentials/source/list.test.ts +0 -70
  82. package/components/identity.credentials/tsconfig.tsbuildinfo +0 -1
  83. package/components/identity.federation/source/lib/discovery.test.ts +0 -60
  84. package/components/identity.federation/source/list.test.ts +0 -41
  85. package/components/identity.federation/tsconfig.tsbuildinfo +0 -1
  86. package/components/identity.grants/tsconfig.tsbuildinfo +0 -1
  87. package/components/identity.keys/tsconfig.tsbuildinfo +0 -1
  88. package/components/identity.otp/tsconfig.tsbuildinfo +0 -1
  89. package/components/identity.passkeys/source/errors.test.ts +0 -34
  90. package/components/identity.passkeys/source/webauthn.test.ts +0 -26
  91. package/components/identity.passkeys/tsconfig.tsbuildinfo +0 -1
  92. package/components/identity.roles/tsconfig.tsbuildinfo +0 -1
  93. package/components/identity.tokens/source/authenticate.test.ts +0 -112
  94. package/components/identity.tokens/source/decrypt.test.ts +0 -216
  95. package/components/identity.tokens/source/encrypt.test.ts +0 -150
  96. package/components/identity.tokens/source/issue.test.ts +0 -73
  97. package/components/identity.tokens/source/lib/form.test.ts +0 -25
  98. package/components/identity.tokens/source/lib/paseto.test.ts +0 -62
  99. package/components/identity.tokens/tsconfig.tsbuildinfo +0 -1
  100. package/context.toa.yaml +0 -31
  101. package/cucumber.mjs +0 -7
  102. package/documentation/.assets/ia3-dark.jpg +0 -0
  103. package/documentation/.assets/ia3-light.jpg +0 -0
  104. package/documentation/.assets/overview-dark.jpg +0 -0
  105. package/documentation/.assets/overview-light.jpg +0 -0
  106. package/documentation/.assets/role-scopes-dark.jpg +0 -0
  107. package/documentation/.assets/role-scopes-light.jpg +0 -0
  108. package/documentation/.assets/rtd-dark.jpg +0 -0
  109. package/documentation/.assets/rtd-light.jpg +0 -0
  110. package/documentation/access.md +0 -350
  111. package/documentation/authorities.md +0 -51
  112. package/documentation/cache.md +0 -72
  113. package/documentation/components.md +0 -472
  114. package/documentation/consent.md +0 -101
  115. package/documentation/credentials.md +0 -88
  116. package/documentation/dev.md +0 -30
  117. package/documentation/discovery.md +0 -81
  118. package/documentation/flow.md +0 -44
  119. package/documentation/help.md +0 -122
  120. package/documentation/identity.md +0 -304
  121. package/documentation/introspection.md +0 -123
  122. package/documentation/io.md +0 -167
  123. package/documentation/ip.md +0 -24
  124. package/documentation/map.md +0 -123
  125. package/documentation/mcp.md +0 -183
  126. package/documentation/notes/desync.jpg +0 -0
  127. package/documentation/notes/peers.md +0 -59
  128. package/documentation/notes/sse.md +0 -71
  129. package/documentation/notes/throttling.md +0 -122
  130. package/documentation/oauth.md +0 -180
  131. package/documentation/octets.md +0 -334
  132. package/documentation/passkeys.md +0 -11
  133. package/documentation/protocol.md +0 -120
  134. package/documentation/query.md +0 -324
  135. package/documentation/require.md +0 -15
  136. package/documentation/rpc.md +0 -154
  137. package/documentation/tracing.md +0 -70
  138. package/documentation/tree.md +0 -199
  139. package/features/access.feature +0 -596
  140. package/features/annotation.feature +0 -32
  141. package/features/auth.assert.feature +0 -55
  142. package/features/auth.bearer.feature +0 -120
  143. package/features/auth.claims.feature +0 -171
  144. package/features/auth.incept.feature +0 -166
  145. package/features/auth.input.feature +0 -59
  146. package/features/authorities.basic.feature +0 -141
  147. package/features/authorities.feature +0 -71
  148. package/features/authorities.federation.feature +0 -100
  149. package/features/authorities.tokens.feature +0 -117
  150. package/features/body.feature +0 -76
  151. package/features/cache.feature +0 -368
  152. package/features/configuration.feature +0 -206
  153. package/features/cors.feature +0 -127
  154. package/features/credentials.feature +0 -106
  155. package/features/debug.feature +0 -34
  156. package/features/dev.feature +0 -90
  157. package/features/directives.feature +0 -61
  158. package/features/discovery.feature +0 -213
  159. package/features/discovery.ui.feature +0 -213
  160. package/features/dynamic.feature +0 -192
  161. package/features/errors.feature +0 -258
  162. package/features/etag.feature +0 -239
  163. package/features/flow.feature +0 -148
  164. package/features/help.feature +0 -512
  165. package/features/identity.bans.feature +0 -200
  166. package/features/identity.basic.feature +0 -666
  167. package/features/identity.feature +0 -240
  168. package/features/identity.federation.feature +0 -396
  169. package/features/identity.otp.feature +0 -142
  170. package/features/identity.roles.feature +0 -568
  171. package/features/identity.tokens.custom.feature +0 -430
  172. package/features/identity.tokens.feature +0 -131
  173. package/features/interruptions.feature +0 -20
  174. package/features/introspection.feature +0 -565
  175. package/features/introspection.map.feature +0 -108
  176. package/features/io.feature +0 -204
  177. package/features/io.throttle.feature +0 -166
  178. package/features/map.feature +0 -360
  179. package/features/mcp.feature +0 -753
  180. package/features/methods.feature +0 -48
  181. package/features/oauth.clients.feature +0 -195
  182. package/features/oauth.discovery.feature +0 -164
  183. package/features/oauth.grants.feature +0 -301
  184. package/features/octets.cloudinary.feature +0 -233
  185. package/features/octets.download.feature +0 -194
  186. package/features/octets.entries.feature +0 -83
  187. package/features/octets.feature +0 -306
  188. package/features/octets.head.feature +0 -40
  189. package/features/octets.location.feature +0 -83
  190. package/features/octets.meta.feature +0 -117
  191. package/features/octets.workflows.feature +0 -565
  192. package/features/passkeys.feature +0 -66
  193. package/features/probes.feature +0 -18
  194. package/features/query.feature +0 -389
  195. package/features/realtime.feature +0 -34
  196. package/features/require.feature +0 -66
  197. package/features/response.feature +0 -103
  198. package/features/routes.feature +0 -224
  199. package/features/rpc.feature +0 -429
  200. package/features/server.feature +0 -21
  201. package/features/site/_app/immutable/asset.js +0 -1
  202. package/features/site/favicon.ico +0 -0
  203. package/features/site/index.html +0 -10
  204. package/features/steps/.env.example +0 -5
  205. package/features/steps/Captures.ts +0 -20
  206. package/features/steps/Cloudinary.ts +0 -12
  207. package/features/steps/Common.ts +0 -38
  208. package/features/steps/Components.ts +0 -115
  209. package/features/steps/Database.ts +0 -106
  210. package/features/steps/Gateway.ts +0 -240
  211. package/features/steps/HTTP.ts +0 -96
  212. package/features/steps/IDP.ts +0 -361
  213. package/features/steps/Identity.ts +0 -54
  214. package/features/steps/OTP.ts +0 -42
  215. package/features/steps/Parameters.ts +0 -162
  216. package/features/steps/Probe.ts +0 -38
  217. package/features/steps/Realtime.ts +0 -175
  218. package/features/steps/Workspace.ts +0 -48
  219. package/features/steps/components/audit/manifest.toa.yaml +0 -20
  220. package/features/steps/components/audit/operations/record.js +0 -5
  221. package/features/steps/components/echo/manifest.toa.yaml +0 -59
  222. package/features/steps/components/echo/operations/affect.js +0 -3
  223. package/features/steps/components/echo/operations/compute.js +0 -3
  224. package/features/steps/components/echo/operations/echo.js +0 -3
  225. package/features/steps/components/echo/operations/error.js +0 -7
  226. package/features/steps/components/echo/operations/identity.js +0 -3
  227. package/features/steps/components/echo/operations/parameters.js +0 -3
  228. package/features/steps/components/echo/operations/ping.js +0 -3
  229. package/features/steps/components/echo/operations/unwrap.js +0 -3
  230. package/features/steps/components/echo.beacon/manifest.toa.yaml +0 -2
  231. package/features/steps/components/echo.beacon/operations/hello.js +0 -3
  232. package/features/steps/components/greeter/manifest.toa.yaml +0 -5
  233. package/features/steps/components/greeter/operations/greet.js +0 -3
  234. package/features/steps/components/notify/manifest.toa.yaml +0 -20
  235. package/features/steps/components/notify/operations/send.js +0 -5
  236. package/features/steps/components/octets.tester/manifest.toa.yaml +0 -73
  237. package/features/steps/components/octets.tester/operations/authority.js +0 -3
  238. package/features/steps/components/octets.tester/operations/bar.js +0 -9
  239. package/features/steps/components/octets.tester/operations/baz.js +0 -9
  240. package/features/steps/components/octets.tester/operations/concat.js +0 -5
  241. package/features/steps/components/octets.tester/operations/echo.js +0 -5
  242. package/features/steps/components/octets.tester/operations/err.js +0 -14
  243. package/features/steps/components/octets.tester/operations/foo.js +0 -5
  244. package/features/steps/components/octets.tester/operations/id.js +0 -5
  245. package/features/steps/components/octets.tester/operations/identity.js +0 -5
  246. package/features/steps/components/octets.tester/operations/lenna.png +0 -0
  247. package/features/steps/components/octets.tester/operations/redirect.js +0 -17
  248. package/features/steps/components/octets.tester/operations/yex.js +0 -14
  249. package/features/steps/components/octets.tester/operations/yield.js +0 -11
  250. package/features/steps/components/orders/manifest.toa.yaml +0 -30
  251. package/features/steps/components/orders/operations/create.js +0 -7
  252. package/features/steps/components/pots/manifest.toa.yaml +0 -91
  253. package/features/steps/components/pots/migrations/0002-indexes.yaml +0 -4
  254. package/features/steps/components/pricing/manifest.toa.yaml +0 -13
  255. package/features/steps/components/pricing/operations/quote.js +0 -3
  256. package/features/steps/components/sequences/manifest.toa.yaml +0 -11
  257. package/features/steps/components/sequences/operations/numbers.js +0 -5
  258. package/features/steps/components/sequences/operations/tokens.js +0 -14
  259. package/features/steps/components/users/manifest.toa.yaml +0 -30
  260. package/features/steps/components/users/operations/create.js +0 -11
  261. package/features/steps/components/users.properties/manifest.toa.yaml +0 -22
  262. package/features/steps/map.ts +0 -30
  263. package/features/steps/tsconfig.json +0 -9
  264. package/features/streams.feature +0 -35
  265. package/features/timestamps.feature +0 -41
  266. package/features/timing.feature +0 -49
  267. package/features/tracing.feature +0 -123
  268. package/schemas/annotation.cos.yaml +0 -125
  269. package/schemas/call.cos.yaml +0 -18
  270. package/schemas/directive.cos.yaml +0 -7
  271. package/schemas/method.cos.yaml +0 -23
  272. package/schemas/node.cos.yaml +0 -22
  273. package/schemas/query.cos.yaml +0 -31
  274. package/schemas/querystring.cos.yaml +0 -19
  275. package/schemas/range.cos.yaml +0 -10
  276. package/schemas/route.cos.yaml +0 -6
  277. package/source/Annotation.ts +0 -89
  278. package/source/Branch.test.ts +0 -40
  279. package/source/Branch.ts +0 -44
  280. package/source/Composition.ts +0 -51
  281. package/source/Context.ts +0 -11
  282. package/source/Directive.test.ts +0 -199
  283. package/source/Directive.ts +0 -248
  284. package/source/Discovery/Explorer.ts +0 -34
  285. package/source/Discovery/Site.test.ts +0 -147
  286. package/source/Discovery/Site.ts +0 -202
  287. package/source/Discovery/index.ts +0 -3
  288. package/source/Discovery/tree.test.ts +0 -175
  289. package/source/Discovery/tree.ts +0 -77
  290. package/source/Discovery/trunk.ts +0 -33
  291. package/source/Endpoint.test.ts +0 -67
  292. package/source/Endpoint.ts +0 -157
  293. package/source/Factory.ts +0 -42
  294. package/source/Gateway.ts +0 -390
  295. package/source/HTTP/Context.ts +0 -143
  296. package/source/HTTP/Probe.ts +0 -99
  297. package/source/HTTP/Server.ts +0 -430
  298. package/source/HTTP/Timing.ts +0 -14
  299. package/source/HTTP/address.test.ts +0 -28
  300. package/source/HTTP/address.ts +0 -16
  301. package/source/HTTP/exceptions.ts +0 -99
  302. package/source/HTTP/formats/form.ts +0 -21
  303. package/source/HTTP/formats/index.ts +0 -36
  304. package/source/HTTP/formats/json.ts +0 -14
  305. package/source/HTTP/formats/msgpack.ts +0 -14
  306. package/source/HTTP/formats/text.ts +0 -10
  307. package/source/HTTP/formats/yaml.test.ts +0 -22
  308. package/source/HTTP/formats/yaml.ts +0 -40
  309. package/source/HTTP/index.ts +0 -6
  310. package/source/HTTP/messages.test.ts +0 -196
  311. package/source/HTTP/messages.ts +0 -186
  312. package/source/HTTP/types.ts +0 -39
  313. package/source/Interception.ts +0 -37
  314. package/source/Introspection.ts +0 -179
  315. package/source/MCP/Server.ts +0 -335
  316. package/source/MCP/discover.ts +0 -51
  317. package/source/MCP/errors.ts +0 -80
  318. package/source/MCP/index.ts +0 -1
  319. package/source/MCP/schema.test.ts +0 -91
  320. package/source/MCP/schema.ts +0 -94
  321. package/source/MCP/tools.ts +0 -144
  322. package/source/MCP/types.ts +0 -84
  323. package/source/Mapping.ts +0 -101
  324. package/source/Query.test.ts +0 -54
  325. package/source/Query.ts +0 -277
  326. package/source/RPC/Context.ts +0 -75
  327. package/source/RPC/Dispatcher.ts +0 -150
  328. package/source/RPC/errors.test.ts +0 -77
  329. package/source/RPC/errors.ts +0 -82
  330. package/source/RPC/index.ts +0 -1
  331. package/source/RPC/names.test.ts +0 -141
  332. package/source/RPC/names.ts +0 -176
  333. package/source/RPC/types.ts +0 -34
  334. package/source/RTD/Context.ts +0 -16
  335. package/source/RTD/Directives.ts +0 -126
  336. package/source/RTD/Endpoint.ts +0 -27
  337. package/source/RTD/Match.ts +0 -11
  338. package/source/RTD/Method.ts +0 -39
  339. package/source/RTD/Node.ts +0 -169
  340. package/source/RTD/Route.ts +0 -93
  341. package/source/RTD/Tree.ts +0 -137
  342. package/source/RTD/expiration.test.ts +0 -81
  343. package/source/RTD/factory.ts +0 -105
  344. package/source/RTD/index.ts +0 -8
  345. package/source/RTD/segment.test.ts +0 -35
  346. package/source/RTD/segment.ts +0 -51
  347. package/source/RTD/syntax/index.ts +0 -2
  348. package/source/RTD/syntax/parse.test.ts +0 -196
  349. package/source/RTD/syntax/parse.ts +0 -171
  350. package/source/RTD/syntax/types.ts +0 -69
  351. package/source/RTD/walk.test.ts +0 -147
  352. package/source/Remotes.test.ts +0 -79
  353. package/source/Remotes.ts +0 -39
  354. package/source/Tenant.ts +0 -73
  355. package/source/const.ts +0 -45
  356. package/source/deployment.ts +0 -96
  357. package/source/directives/auth/Anonymous.test.ts +0 -70
  358. package/source/directives/auth/Anonymous.ts +0 -36
  359. package/source/directives/auth/Anyone.ts +0 -23
  360. package/source/directives/auth/Assert.ts +0 -43
  361. package/source/directives/auth/Authorization.test.ts +0 -24
  362. package/source/directives/auth/Authorization.ts +0 -388
  363. package/source/directives/auth/Delegate.test.ts +0 -36
  364. package/source/directives/auth/Delegate.ts +0 -54
  365. package/source/directives/auth/Echo.ts +0 -24
  366. package/source/directives/auth/Federation.ts +0 -104
  367. package/source/directives/auth/Id.ts +0 -37
  368. package/source/directives/auth/Incept.ts +0 -117
  369. package/source/directives/auth/Input.ts +0 -92
  370. package/source/directives/auth/Role.test.ts +0 -147
  371. package/source/directives/auth/Role.ts +0 -99
  372. package/source/directives/auth/Rule.ts +0 -59
  373. package/source/directives/auth/Scheme.ts +0 -31
  374. package/source/directives/auth/create.ts +0 -11
  375. package/source/directives/auth/index.ts +0 -3
  376. package/source/directives/auth/schemes.test.ts +0 -18
  377. package/source/directives/auth/schemes.ts +0 -39
  378. package/source/directives/auth/split.ts +0 -14
  379. package/source/directives/auth/types.ts +0 -75
  380. package/source/directives/cache/Cache.ts +0 -92
  381. package/source/directives/cache/Control.ts +0 -81
  382. package/source/directives/cache/Exact.ts +0 -7
  383. package/source/directives/cache/etag.ts +0 -38
  384. package/source/directives/cache/index.ts +0 -3
  385. package/source/directives/cache/types.ts +0 -9
  386. package/source/directives/cors/CORS.test.ts +0 -75
  387. package/source/directives/cors/CORS.ts +0 -88
  388. package/source/directives/cors/index.ts +0 -3
  389. package/source/directives/dev/Development.ts +0 -41
  390. package/source/directives/dev/Faulty.ts +0 -31
  391. package/source/directives/dev/Sleep.ts +0 -53
  392. package/source/directives/dev/Stub.ts +0 -14
  393. package/source/directives/dev/Throw.ts +0 -14
  394. package/source/directives/dev/index.ts +0 -3
  395. package/source/directives/dev/types.ts +0 -5
  396. package/source/directives/flow/Compose.ts +0 -98
  397. package/source/directives/flow/Fetch.ts +0 -86
  398. package/source/directives/flow/Flow.ts +0 -43
  399. package/source/directives/flow/index.ts +0 -3
  400. package/source/directives/flow/types.ts +0 -7
  401. package/source/directives/help/Family.ts +0 -122
  402. package/source/directives/help/Help.test.ts +0 -227
  403. package/source/directives/help/Help.ts +0 -47
  404. package/source/directives/help/Parameters.ts +0 -47
  405. package/source/directives/help/described.ts +0 -57
  406. package/source/directives/help/index.ts +0 -45
  407. package/source/directives/index.ts +0 -33
  408. package/source/directives/io/Directive.ts +0 -17
  409. package/source/directives/io/IO.ts +0 -118
  410. package/source/directives/io/Input.ts +0 -55
  411. package/source/directives/io/Message.ts +0 -1
  412. package/source/directives/io/Output.ts +0 -81
  413. package/source/directives/io/Status.test.ts +0 -88
  414. package/source/directives/io/Status.ts +0 -47
  415. package/source/directives/io/Throttle.ts +0 -30
  416. package/source/directives/io/index.ts +0 -3
  417. package/source/directives/io/lib/throttle/Configuration.test.ts +0 -72
  418. package/source/directives/io/lib/throttle/Configuration.ts +0 -68
  419. package/source/directives/io/lib/throttle/Keys.ts +0 -53
  420. package/source/directives/io/lib/throttle/Quotas.test.ts +0 -411
  421. package/source/directives/io/lib/throttle/Quotas.ts +0 -190
  422. package/source/directives/io/lib/throttle/Sync.test.ts +0 -163
  423. package/source/directives/io/lib/throttle/Sync.ts +0 -93
  424. package/source/directives/io/lib/throttle/Warning.test.ts +0 -32
  425. package/source/directives/io/lib/throttle/Warning.ts +0 -29
  426. package/source/directives/io/lib/throttle/components/Component.ts +0 -7
  427. package/source/directives/io/lib/throttle/components/IP.ts +0 -30
  428. package/source/directives/io/lib/throttle/components/Identity.ts +0 -19
  429. package/source/directives/io/lib/throttle/components/Path.ts +0 -8
  430. package/source/directives/io/lib/throttle/components/Route.ts +0 -19
  431. package/source/directives/io/lib/throttle/components/Segment.ts +0 -19
  432. package/source/directives/io/lib/throttle/components/index.ts +0 -19
  433. package/source/directives/io/lib/throttle/conditions/Condition.ts +0 -5
  434. package/source/directives/io/lib/throttle/conditions/Status.ts +0 -17
  435. package/source/directives/io/lib/throttle/conditions/index.ts +0 -11
  436. package/source/directives/io/lib/throttle/index.ts +0 -4
  437. package/source/directives/io/schemas.test.ts +0 -40
  438. package/source/directives/io/schemas.ts +0 -16
  439. package/source/directives/map/Authority.ts +0 -15
  440. package/source/directives/map/Buffer.ts +0 -15
  441. package/source/directives/map/Claims.ts +0 -63
  442. package/source/directives/map/Directive.ts +0 -4
  443. package/source/directives/map/Headers.ts +0 -60
  444. package/source/directives/map/Language.ts +0 -45
  445. package/source/directives/map/Languages.ts +0 -17
  446. package/source/directives/map/Map.ts +0 -85
  447. package/source/directives/map/Mapping.ts +0 -45
  448. package/source/directives/map/Properties.ts +0 -15
  449. package/source/directives/map/Segments.ts +0 -52
  450. package/source/directives/map/index.ts +0 -3
  451. package/source/directives/mcp/MCP.ts +0 -33
  452. package/source/directives/mcp/Tool.test.ts +0 -56
  453. package/source/directives/mcp/Tool.ts +0 -32
  454. package/source/directives/mcp/index.ts +0 -6
  455. package/source/directives/oauth/Discovery.ts +0 -66
  456. package/source/directives/oauth/documents.ts +0 -110
  457. package/source/directives/oauth/index.ts +0 -3
  458. package/source/directives/octets/Context.ts +0 -23
  459. package/source/directives/octets/Delete.ts +0 -96
  460. package/source/directives/octets/Directive.ts +0 -21
  461. package/source/directives/octets/Get.ts +0 -88
  462. package/source/directives/octets/Octets.ts +0 -82
  463. package/source/directives/octets/Put.ts +0 -186
  464. package/source/directives/octets/Workflow.ts +0 -60
  465. package/source/directives/octets/bytes.test.ts +0 -33
  466. package/source/directives/octets/bytes.ts +0 -18
  467. package/source/directives/octets/index.ts +0 -3
  468. package/source/directives/octets/schemas.test.ts +0 -20
  469. package/source/directives/octets/schemas.ts +0 -15
  470. package/source/directives/octets/types.ts +0 -9
  471. package/source/directives/octets/workflows/Execution.ts +0 -130
  472. package/source/directives/octets/workflows/Workflow.ts +0 -51
  473. package/source/directives/octets/workflows/index.ts +0 -1
  474. package/source/directives/require/Directive.ts +0 -5
  475. package/source/directives/require/Headers.ts +0 -19
  476. package/source/directives/require/Require.ts +0 -27
  477. package/source/directives/require/index.ts +0 -3
  478. package/source/discovery.ts +0 -1
  479. package/source/exceptions.ts +0 -47
  480. package/source/index.ts +0 -12
  481. package/source/io.ts +0 -4
  482. package/source/manifest.test.ts +0 -56
  483. package/source/manifest.ts +0 -56
  484. package/source/octets.d.ts +0 -17
  485. package/source/root.ts +0 -59
  486. package/source/schemas.test.ts +0 -31
  487. package/source/schemas.ts +0 -15
  488. package/source/service.ts +0 -94
  489. package/source/shortcuts.ts +0 -14
  490. package/source/userland.ts +0 -47
  491. package/transpiled/Annotation.d.ts +0 -70
  492. package/transpiled/Annotation.js +0 -2
  493. package/transpiled/Annotation.js.map +0 -1
  494. package/transpiled/RTD/syntax/parse.d.ts +0 -4
  495. package/transpiled/RTD/syntax/parse.js +0 -112
  496. package/transpiled/RTD/syntax/parse.js.map +0 -1
  497. package/transpiled/RTD/syntax/types.d.ts +0 -52
  498. package/transpiled/RTD/syntax/types.js +0 -11
  499. package/transpiled/RTD/syntax/types.js.map +0 -1
  500. package/transpiled/const.d.ts +0 -36
  501. package/transpiled/const.js +0 -37
  502. package/transpiled/const.js.map +0 -1
  503. package/transpiled/deployment.d.ts +0 -6
  504. package/transpiled/deployment.js +0 -76
  505. package/transpiled/deployment.js.map +0 -1
  506. package/transpiled/manifest.d.ts +0 -3
  507. package/transpiled/manifest.js +0 -39
  508. package/transpiled/manifest.js.map +0 -1
  509. package/transpiled/schemas.d.ts +0 -9
  510. package/transpiled/schemas.js +0 -9
  511. package/transpiled/schemas.js.map +0 -1
  512. package/transpiled/shortcuts.d.ts +0 -3
  513. package/transpiled/shortcuts.js +0 -13
  514. package/transpiled/shortcuts.js.map +0 -1
  515. package/tsconfig.json +0 -13
  516. package/tsconfig.tsbuildinfo +0 -1
  517. package/ui/dist/_app/immutable/assets/0.Bl7vLmIK.css +0 -2
  518. package/ui/dist/_app/immutable/assets/2.BC0-Jhqu.css +0 -1
  519. package/ui/dist/_app/immutable/chunks/B_pK3U1C.js +0 -6
  520. package/ui/dist/_app/immutable/chunks/CiKbPLyY.js +0 -1
  521. package/ui/dist/_app/immutable/chunks/DjIYL2zC.js +0 -3
  522. package/ui/dist/_app/immutable/entry/app.DMqmL4NY.js +0 -2
  523. package/ui/dist/_app/immutable/entry/start.CRe7HWBI.js +0 -1
  524. package/ui/dist/_app/immutable/nodes/0.D9m-6cbM.js +0 -1
  525. package/ui/dist/_app/immutable/nodes/1.Cgi_RcSO.js +0 -1
  526. package/ui/dist/_app/immutable/nodes/2.D_Cbxgz4.js +0 -14
@@ -1,196 +0,0 @@
1
- import { describe, it } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import { parse } from './parse.js'
5
-
6
- describe('routes', () => {
7
- it('should parse route', async () => {
8
- const declaration = {
9
- '/': {},
10
- '/foo': {}
11
- }
12
-
13
- const node = parse(declaration)
14
-
15
- assert.strictEqual(node.routes.length, 2)
16
- assert.strictEqual(node.routes[0].path, '/')
17
- assert.strictEqual(node.routes[1].path, '/foo')
18
- })
19
-
20
- it('should parse nested routes', async () => {
21
- const declaration = {
22
- '/': {
23
- '/foo': {},
24
- '/bar': {}
25
- }
26
- }
27
-
28
- const node = parse(declaration)
29
- const root = node.routes[0].node
30
-
31
- assert.strictEqual(root.routes.length, 2)
32
- assert.strictEqual(root.routes[0].path, '/foo')
33
- assert.strictEqual(root.routes[1].path, '/bar')
34
- })
35
- })
36
-
37
- describe('methods', () => {
38
- it('should parse methods', () => {
39
- const declaration = {
40
- '/': {
41
- GET: {
42
- endpoint: 'observe'
43
- }
44
- }
45
- }
46
-
47
- const node = parse(declaration)
48
- const root = node.routes[0].node
49
-
50
- assert.strictEqual(root.methods.length, 1)
51
- assert.strictEqual(root.methods[0].verb, 'GET')
52
- assert.partialDeepStrictEqual(root.methods[0].mapping, { endpoint: 'observe' })
53
- })
54
-
55
- it('should parse endpoint shortcut', async () => {
56
- const declaration = {
57
- '/': {
58
- GET: 'observe'
59
- }
60
- }
61
-
62
- const node = parse(declaration)
63
- const root = node.routes[0].node
64
-
65
- assert.strictEqual(root.methods.length, 1)
66
- assert.strictEqual(root.methods[0].verb, 'GET')
67
- assert.partialDeepStrictEqual(root.methods[0].mapping, { endpoint: 'observe' })
68
- })
69
-
70
- it('should parse fq endpoint', async () => {
71
- const declaration = {
72
- '/': {
73
- GET: 'dummies.dummy.observe'
74
- }
75
- }
76
-
77
- const node = parse(declaration)
78
- const root = node.routes[0].node
79
-
80
- assert.strictEqual(root.methods.length, 1)
81
- assert.strictEqual(root.methods[0].verb, 'GET')
82
-
83
- assert.partialDeepStrictEqual(root.methods[0].mapping, {
84
- namespace: 'dummies',
85
- component: 'dummy',
86
- endpoint: 'observe'
87
- })
88
- })
89
-
90
- it('should parse fq endpoint within default namespace', async () => {
91
- const declaration = {
92
- '/': {
93
- GET: 'dummy.observe'
94
- }
95
- }
96
-
97
- const node = parse(declaration)
98
- const root = node.routes[0].node
99
-
100
- assert.strictEqual(root.methods.length, 1)
101
- assert.strictEqual(root.methods[0].verb, 'GET')
102
-
103
- assert.partialDeepStrictEqual(root.methods[0].mapping, {
104
- namespace: 'default',
105
- component: 'dummy',
106
- endpoint: 'observe'
107
- })
108
- })
109
-
110
- it('should parse directives', async () => {
111
- const declaration = {
112
- '/': {
113
- GET: {
114
- 'auth:incept': 'id',
115
- endpoint: 'observe'
116
- }
117
- }
118
- }
119
-
120
- const node = parse(declaration)
121
- const root = node.routes[0].node
122
-
123
- assert.deepStrictEqual(root.methods[0].directives, [
124
- { family: 'auth', name: 'incept', value: 'id' }
125
- ])
126
- })
127
- })
128
-
129
- describe('directives', () => {
130
- it('should parse shortcuts', async () => {
131
- const declaration = {
132
- '/': {
133
- foo: 'baz'
134
- }
135
- }
136
-
137
- const shortcuts = new Map<string, string>([['foo', 'dev:foo']])
138
-
139
- const node = parse(declaration, shortcuts)
140
- const root = node.routes[0].node
141
-
142
- assert.strictEqual(root.directives.length, 1)
143
- assert.strictEqual(root.directives[0].family, 'dev')
144
- assert.strictEqual(root.directives[0].name, 'foo')
145
- assert.strictEqual(root.directives[0].value, 'baz')
146
- })
147
- })
148
-
149
- describe('validation', () => {
150
- it('should throw on unknown key', async () => {
151
- const declaration = { hello: 'world' }
152
-
153
- assert.throws(
154
- () => parse(declaration),
155
- (error: any) => /RTD parse error: unknown key 'hello'/.test(error.message)
156
- )
157
- })
158
-
159
- it('should throw on invalid mapping', async () => {
160
- const declaration = {
161
- '/': {
162
- GET: {
163
- endpoint: 'observe',
164
- hello: 'world'
165
- }
166
- }
167
- }
168
-
169
- assert.throws(
170
- () => parse(declaration),
171
- (error: any) => /\/methods\/0\/mapping/.test(error.message)
172
- )
173
- })
174
- })
175
-
176
- it('should expand ranges', async () => {
177
- const declaration = {
178
- '/': {
179
- GET: {
180
- endpoint: 'enumerate',
181
- query: {
182
- omit: 3,
183
- limit: 2
184
- }
185
- }
186
- }
187
- }
188
-
189
- const node = parse(declaration)
190
- const query = node.routes[0].node.methods[0].mapping?.query
191
-
192
- assert.partialDeepStrictEqual(query, {
193
- omit: { value: 3, range: [3, 3] },
194
- limit: { value: 2, range: [2, 2] }
195
- })
196
- })
@@ -1,171 +0,0 @@
1
- import * as schemas from '../../schemas.js'
2
- import {
3
- verbs,
4
- type Node,
5
- type Route,
6
- type Method,
7
- type Mapping,
8
- type Directive,
9
- type Range
10
- } from './types.js'
11
-
12
- export function parse(input: object, shortcuts?: Shortcuts): Node {
13
- const node = parseNode(input, shortcuts)
14
-
15
- schemas.node.validate(node)
16
-
17
- return node
18
- }
19
-
20
- function parseNode(input: object | string, shortcuts?: Shortcuts): Node {
21
- const node = createNode()
22
-
23
- if (typeof input === 'string') {
24
- node.forward = input
25
-
26
- return node
27
- }
28
-
29
- for (const [key, value] of Object.entries(input) as Array<[keyof Node, unknown]>)
30
- switch (key) {
31
- case 'protected':
32
- case 'isolated':
33
- node[key] = value as boolean
34
- break
35
- case 'forward':
36
- node[key] = value as string
37
- break
38
-
39
- default:
40
- // eslint-disable-next-line max-depth
41
- if (key[0] === '/') {
42
- const route = parseRoute(key, value as Node, shortcuts)
43
-
44
- node.routes.push(route)
45
-
46
- continue
47
- }
48
-
49
- // eslint-disable-next-line max-depth
50
- if (verbs.has(key)) {
51
- const method = parseMethod(key, value as Mapping, shortcuts)
52
-
53
- node.methods.push(method)
54
-
55
- continue
56
- }
57
-
58
- // eslint-disable-next-line no-case-declarations
59
- const directive = parseDirective(key, value, shortcuts)
60
-
61
- // eslint-disable-next-line max-depth
62
- if (directive !== null) {
63
- node.directives.push(directive)
64
-
65
- continue
66
- }
67
-
68
- throw new Error(`RTD parse error: unknown key '${key}'`)
69
- }
70
-
71
- return node
72
- }
73
-
74
- export function createNode(): Node {
75
- return {
76
- routes: [],
77
- methods: [],
78
- directives: []
79
- }
80
- }
81
-
82
- function parseRoute(path: string, value: Node, shortcuts?: Shortcuts): Route {
83
- const node = parse(value, shortcuts)
84
-
85
- return createRoute(path, node)
86
- }
87
-
88
- function createRoute(path: string, node: Node): Route {
89
- return { path, node }
90
- }
91
-
92
- function parseMethod(
93
- verb: string,
94
- value: Mapping | string,
95
- shortcuts?: Shortcuts
96
- ): Method {
97
- const mapping = typeof value === 'string' ? { endpoint: value } : value
98
-
99
- parseEndpoint(mapping)
100
- parseQuery(mapping)
101
-
102
- const directives = parseDirectives(mapping, shortcuts)
103
-
104
- return { verb, mapping, directives }
105
- }
106
-
107
- function parseEndpoint(mapping: Mapping): void {
108
- if (mapping.endpoint === undefined) return
109
-
110
- const [endpoiont, component, namespace] = mapping.endpoint.split('.').reverse()
111
-
112
- if (component !== undefined) {
113
- mapping.component = component
114
- mapping.namespace = namespace ?? mapping.namespace ?? 'default'
115
- mapping.endpoint = endpoiont
116
- }
117
- }
118
-
119
- function parseQuery(mapping: any): void {
120
- const query = mapping.query
121
-
122
- if (query === undefined || query === null) return
123
-
124
- if (typeof query.limit === 'number') query.limit = expandRange(query.limit as number)
125
-
126
- if (typeof query.omit === 'number') query.omit = expandRange(query.omit as number)
127
- }
128
-
129
- function parseDirectives(
130
- mapping: Record<string, any>,
131
- shortcuts?: Shortcuts
132
- ): Directive[] {
133
- const directives: Directive[] = []
134
-
135
- for (const [key, value] of Object.entries(mapping)) {
136
- const directive = parseDirective(key, value, shortcuts)
137
-
138
- if (directive === null) continue
139
-
140
- directives.push(directive)
141
-
142
- // eslint-disable-next-line @typescript-eslint/no-dynamic-delete
143
- delete mapping[key]
144
- }
145
-
146
- return directives
147
- }
148
-
149
- function parseDirective(
150
- key: string,
151
- value: any,
152
- shortcuts?: Shortcuts
153
- ): Directive | null {
154
- if (shortcuts?.has(key) === true) key = shortcuts.get(key)! // eslint-disable-line @typescript-eslint/no-non-null-assertion
155
-
156
- const match = key.match(DIRECTIVE_RX)
157
-
158
- if (match === null) return null
159
-
160
- const { family, name } = match.groups as { family: string; name: string }
161
-
162
- return { family, name, value }
163
- }
164
-
165
- function expandRange(range: number): Range {
166
- return { value: range, range: [range, range] }
167
- }
168
-
169
- const DIRECTIVE_RX = /^(?<family>\w{1,32}):(?<name>\w{1,32})$/
170
-
171
- export type Shortcuts = Map<string, string>
@@ -1,69 +0,0 @@
1
- export interface Node {
2
- protected?: boolean
3
- isolated?: boolean
4
- forward?: string
5
- routes: Route[]
6
- methods: Method[]
7
- directives: Directive[]
8
- }
9
-
10
- export interface Route {
11
- path: string
12
- node: Node
13
- }
14
-
15
- export interface Method {
16
- verb: string
17
- mapping?: Mapping
18
- directives: Directive[]
19
- }
20
-
21
- export interface Directive {
22
- family: string
23
- name: string
24
- value: any
25
- }
26
-
27
- export interface Mapping {
28
- namespace?: string
29
- component?: string
30
- endpoint: string
31
- query?: Query | null
32
-
33
- /**
34
- * Whether the operation this maps to answers a page of a collection, and so takes the
35
- * `omit` and `limit` a page is taken by. Written where the component's manifest is read,
36
- * beside `namespace` and `component`, and not declared.
37
- */
38
- paged?: boolean
39
- }
40
-
41
- export interface Query {
42
- id?: string
43
- criteria?: string
44
- search?: boolean
45
- sample?: number
46
- sort?: string
47
- omit?: Range
48
- limit?: Range
49
- selectors?: string[]
50
- projection?: string[]
51
- parameters?: string[]
52
- deleted?: boolean
53
- }
54
-
55
- export interface Range {
56
- value?: number
57
- range: [number, number]
58
- }
59
-
60
- export const verbs = new Set<string>([
61
- 'GET',
62
- 'HEAD',
63
- 'POST',
64
- 'PUT',
65
- 'PATCH',
66
- 'DELETE',
67
- 'LOCK',
68
- 'UNLOCK'
69
- ])
@@ -1,147 +0,0 @@
1
- import { describe, it, mock } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import { Tree } from './Tree.js'
5
- import { address, name } from '../RPC/names.js'
6
- import type { EndpointsFactory } from '../Endpoint.js'
7
- import type { DirectiveFactory } from './Directives.js'
8
- import type * as syntax from './syntax/index.js'
9
-
10
- const endpoints = {} as unknown as EndpointsFactory
11
-
12
- const directives = {
13
- create: () => ({
14
- precall: async () => null,
15
- settle: async () => undefined,
16
- dispose: () => undefined
17
- }),
18
- dispose: mock.fn()
19
- } as unknown as DirectiveFactory
20
-
21
- const node = (
22
- path: string,
23
- verbs: string[] = [],
24
- routes: syntax.Route[] = []
25
- ): syntax.Route => ({
26
- path,
27
- node: {
28
- routes,
29
- methods: verbs.map((verb) => ({ verb, directives: [] })),
30
- directives: []
31
- }
32
- })
33
-
34
- const trunk = (routes: syntax.Route[], verbs: string[] = []): syntax.Node => ({
35
- routes,
36
- methods: verbs.map((verb) => ({ verb, directives: [] })),
37
- directives: []
38
- })
39
-
40
- /** What a walk names, which is what a caller of `/.rpc` would write. */
41
- function names(tree: Tree): string[] {
42
- return [...tree.walk()]
43
- .map(({ segments, verb }) => name(segments, verb))
44
- .filter((named): named is string => named !== null)
45
- }
46
-
47
- describe('walk', () => {
48
- it('should name the trunk by its verb alone', () => {
49
- const tree = new Tree(trunk([], ['GET']), endpoints, directives)
50
-
51
- assert.deepEqual(names(tree), ['GET'])
52
- })
53
-
54
- it('should name every method of every route', () => {
55
- const tree = new Tree(
56
- trunk([node('/pots', ['GET', 'POST'], [node('/:id', ['GET', 'DELETE'])])]),
57
- endpoints,
58
- directives
59
- )
60
-
61
- assert.deepEqual(names(tree).sort(), [
62
- 'pots.GET',
63
- 'pots.POST',
64
- 'pots._id.DELETE',
65
- 'pots._id.GET'
66
- ])
67
- })
68
-
69
- it('should walk a branch that was merged', () => {
70
- const tree = new Tree(trunk([]), endpoints, directives)
71
-
72
- tree.merge(trunk([node('/pots', ['GET'])]), {
73
- namespace: 'default',
74
- component: 'pots'
75
- })
76
-
77
- assert.deepEqual(names(tree), ['pots.GET'])
78
- })
79
-
80
- it('should name a tail', () => {
81
- const tree = new Tree(
82
- trunk([node('/files', [], [node('/**', ['GET'])])]),
83
- endpoints,
84
- directives
85
- )
86
-
87
- assert.deepEqual(names(tree), ['files.__.GET'])
88
- })
89
-
90
- it('should skip an intermediate node, whose route answers in its place', () => {
91
- const tree = new Tree(
92
- trunk([
93
- // `/posts` is intermediate: `/posts/` is answered by its `/` route, not by itself
94
- node('/posts', ['PATCH'], [node('/', ['PUT'])])
95
- ]),
96
- endpoints,
97
- directives
98
- )
99
-
100
- assert.deepEqual(names(tree), ['posts.PUT'])
101
- })
102
-
103
- it('should name nothing where a segment cannot be spelled', () => {
104
- const tree = new Tree(
105
- trunk([node('/v1.0', ['GET']), node('/pots', ['GET'])]),
106
- endpoints,
107
- directives
108
- )
109
-
110
- assert.deepEqual(names(tree), ['pots.GET'])
111
- })
112
-
113
- it('should name what the tree then matches', () => {
114
- const tree = new Tree(
115
- trunk(
116
- [
117
- node('/pots', ['GET'], [node('/:id', ['GET']), node('/hot', ['GET'])]),
118
- node('/files', [], [node('/**', ['GET'])])
119
- ],
120
- ['GET']
121
- ),
122
- endpoints,
123
- directives
124
- )
125
-
126
- const params = { id: 'a1b2', '**': 'a/b/c' }
127
-
128
- for (const { segments, verb } of tree.walk()) {
129
- const named = name(segments, verb)
130
-
131
- assert.notStrictEqual(named, null, 'every walked method has a name')
132
-
133
- const { path } = address(named!, params)
134
- const match = tree.match(path)
135
-
136
- assert.notStrictEqual(
137
- match,
138
- null,
139
- `'${named!}' resolves to '${path}', which matches`
140
- )
141
- assert.ok(
142
- verb in match!.node.methods,
143
- `'${named!}' matches a node that answers ${verb}`
144
- )
145
- }
146
- })
147
- })
@@ -1,79 +0,0 @@
1
- import { it, beforeEach, mock } from 'node:test'
2
- import assert from 'node:assert/strict'
3
- import { isDeepStrictEqual } from 'node:util'
4
-
5
- import { generate } from 'randomstring'
6
- import { Connector } from '@toa.io/core'
7
- import { Remotes } from './Remotes.js'
8
- import type { Host } from './Factory.js'
9
-
10
- const host = {
11
- remote: mock.fn(async () => ({
12
- connect: mock.fn(() => undefined),
13
- link: mock.fn(() => undefined)
14
- }))
15
- } as unknown as Host
16
-
17
- const namespace = generate()
18
- const name = generate()
19
-
20
- let remotes: Remotes
21
-
22
- beforeEach(() => {
23
- remotes = new Remotes(host)
24
- })
25
-
26
- it('should create remote', async () => {
27
- const remote = await remotes.discover(namespace, name)
28
-
29
- assert.ok(
30
- host.remote.mock.calls.some(
31
- (call: any) =>
32
- call.arguments.length === 2 &&
33
- isPartial(call.arguments[0], { namespace, name }) &&
34
- call.arguments[1] !== null &&
35
- call.arguments[1] !== undefined
36
- )
37
- )
38
-
39
- assert.deepStrictEqual(remote, await host.remote.mock.calls[0].result)
40
- })
41
-
42
- it('should be instance of Connector', async () => {
43
- assert.ok(remotes instanceof Connector)
44
- })
45
-
46
- it('should depend on created remotes', async () => {
47
- const remote = await remotes.discover(namespace, name)
48
-
49
- assert.ok(
50
- remote.link.mock.calls.some(
51
- (call: any) =>
52
- call.arguments.length === 1 && isDeepStrictEqual(call.arguments[0], remotes)
53
- )
54
- )
55
- })
56
-
57
- it('should attribute calls to the gateway', async () => {
58
- await remotes.discover(namespace, name)
59
-
60
- assert.ok(
61
- host.remote.mock.calls.some(
62
- (call: any) =>
63
- call.arguments.length === 2 &&
64
- call.arguments[0] !== null &&
65
- call.arguments[0] !== undefined &&
66
- isDeepStrictEqual(call.arguments[1], { service: 'exposition' })
67
- )
68
- )
69
- })
70
-
71
- function isPartial(actual, expected) {
72
- try {
73
- assert.partialDeepStrictEqual(actual, expected)
74
-
75
- return true
76
- } catch {
77
- return false
78
- }
79
- }
package/source/Remotes.ts DELETED
@@ -1,39 +0,0 @@
1
- import { Locator, Connector, type Remote } from '@toa.io/core'
2
- import type { Source } from '@toa.io/core/types'
3
- import { type Host } from './Factory.js'
4
-
5
- export class Remotes extends Connector {
6
- private readonly host: Host
7
- private readonly cache: Record<string, Promise<Remote>> = {}
8
-
9
- public constructor(host: Host) {
10
- super()
11
- this.host = host
12
- }
13
-
14
- public async discover(
15
- namespace: string,
16
- name: string,
17
- version: string = 'local'
18
- ): Promise<Remote> {
19
- const locator = new Locator(name, namespace)
20
- const key = locator.id + ':' + version
21
-
22
- this.cache[key] ??= this.locate(locator)
23
-
24
- return this.cache[key]
25
- }
26
-
27
- private async locate(locator: Locator): Promise<Remote> {
28
- // the gateway is the origin of every call it forwards
29
- const remote = await this.host.remote(locator, SOURCE)
30
-
31
- this.depends(remote)
32
-
33
- await remote.connect()
34
-
35
- return remote
36
- }
37
- }
38
-
39
- const SOURCE: Source = { service: 'exposition' }