@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,91 +0,0 @@
1
- import { describe, it } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import { annotations, input, output } from './schema.js'
5
- import type { Introspection, Schema } from '../Introspection.js'
6
-
7
- const schema = (value: object): Schema => value as unknown as Schema
8
-
9
- describe('input', () => {
10
- it('should ask for a route variable by the name the template gives it', () => {
11
- assert.deepEqual(input({ route: { id: schema({ type: 'string' }) } }, ['id']), {
12
- type: 'object',
13
- properties: { id: { type: 'string' } },
14
- required: ['id'],
15
- additionalProperties: false
16
- })
17
- })
18
-
19
- it('should ask for a variable the operation does not declare', () => {
20
- assert.deepEqual(input({}, ['id']), {
21
- type: 'object',
22
- properties: { id: { type: 'string' } },
23
- required: ['id'],
24
- additionalProperties: false
25
- })
26
- })
27
-
28
- it('should carry the querystring under a name of its own', () => {
29
- const introspection: Introspection = { query: { limit: schema({ type: 'integer' }) } }
30
- const { properties } = input(introspection, []) as { properties: Record<string, any> }
31
-
32
- assert.equal(properties.query.type, 'object')
33
- assert.deepEqual(properties.query.properties, { limit: { type: 'integer' } })
34
- })
35
-
36
- it('should leave a header where a call has nowhere to put one', () => {
37
- const introspection: Introspection = {
38
- headers: { token: { header: 'x-access-token', type: 'string' } }
39
- }
40
-
41
- assert.deepEqual(input(introspection, []), {
42
- type: 'object',
43
- properties: {},
44
- additionalProperties: false
45
- })
46
- })
47
-
48
- it('should take the body as it is, requiring what it requires', () => {
49
- const introspection: Introspection = {
50
- input: schema({
51
- type: 'object',
52
- properties: { title: { type: 'string' }, volume: { type: 'number' } },
53
- required: ['title']
54
- })
55
- }
56
-
57
- assert.deepEqual(input(introspection, []), {
58
- type: 'object',
59
- properties: { title: { type: 'string' }, volume: { type: 'number' } },
60
- required: ['title'],
61
- additionalProperties: false
62
- })
63
- })
64
- })
65
-
66
- describe('output', () => {
67
- it('should state a schema the operation declared', () => {
68
- const declared = schema({ type: 'object', properties: { id: { type: 'string' } } })
69
-
70
- assert.deepEqual(output({ output: declared }), declared)
71
- })
72
-
73
- it('should state none where the operation declared none', () => {
74
- // an operation's `output` is optional and normalizes to `{}`, which describes nothing
75
- assert.equal(output({ output: schema({}) }), undefined)
76
- assert.equal(output({}), undefined)
77
- })
78
- })
79
-
80
- describe('annotations', () => {
81
- it('should read what the verb says of the call', () => {
82
- assert.deepEqual(annotations('GET'), { readOnlyHint: true })
83
- assert.deepEqual(annotations('HEAD'), { readOnlyHint: true })
84
- assert.deepEqual(annotations('DELETE'), {
85
- destructiveHint: true,
86
- idempotentHint: true
87
- })
88
- assert.deepEqual(annotations('PUT'), { idempotentHint: true })
89
- assert.equal(annotations('POST'), undefined)
90
- })
91
- })
@@ -1,94 +0,0 @@
1
- import type { Introspection, Schema } from '../Introspection.js'
2
- import type { Annotations } from './types.js'
3
-
4
- /**
5
- * What a tool takes, which is what the procedure takes: a route variable by the name the
6
- * template gives it, the querystring under a name of its own, and what is left is the body.
7
- *
8
- * A `map:headers` property is not here: a call carries no headers of its own, so there is
9
- * nowhere for a model to put one.
10
- */
11
- // eslint-disable-next-line max-params
12
- export function input(
13
- introspection: Introspection,
14
- variables: string[],
15
- selection: Record<string, Schema> | null
16
- ): object {
17
- const properties: Record<string, unknown> = {}
18
- const required: string[] = []
19
-
20
- /*
21
- * By the name the template gives it, which is what the tool's own name states and what
22
- * resolving it consumes. A `map:segments` renaming is the gateway's, as invisible here as
23
- * it is to whoever writes the path; and a variable the operation does not declare has no
24
- * schema of its own, being a segment.
25
- */
26
- for (const variable of variables) {
27
- properties[variable] = introspection.route?.[variable] ?? { type: 'string' }
28
- required.push(variable)
29
- }
30
-
31
- /*
32
- * It is a querystring on the wire, which is nothing a model knows or needs to; what it is
33
- * to a caller is the part of a call that picks what the call is about. What selects
34
- * records is stated here and not in the resource's own description, where it would be the
35
- * same sentence on every queryable resource there is.
36
- */
37
- const query = { ...introspection.query, ...selection }
38
-
39
- if (Object.keys(query).length > 0)
40
- properties.query = {
41
- type: 'object',
42
- description:
43
- 'Which records the call works on: what to match, in what order, ' +
44
- 'and how many at once.',
45
- properties: query
46
- }
47
-
48
- const body = introspection.input as Shape | null | undefined
49
-
50
- if (body?.properties !== undefined) {
51
- Object.assign(properties, body.properties)
52
- required.push(...(body.required ?? []))
53
- }
54
-
55
- const schema: Record<string, unknown> = { type: 'object', properties }
56
-
57
- if (required.length > 0) schema.required = required
58
-
59
- // what a name does not state is not a parameter, and a model should not invent one
60
- schema.additionalProperties = false
61
-
62
- return schema
63
- }
64
-
65
- /**
66
- * What a tool answers with, where that is worth stating. An operation's `output` is optional
67
- * and normalizes to `{}`, which describes nothing — and a schema the revision would have the
68
- * reply validated against is worse said emptily than left unsaid.
69
- */
70
- export function output(introspection: Introspection): object | undefined {
71
- const schema = introspection.output as Shape | null | undefined
72
-
73
- if (schema === undefined || schema === null) return undefined
74
-
75
- return Object.keys(schema).length === 0 ? undefined : (schema as object)
76
- }
77
-
78
- /** What the verb says of the call, which the revision has a client treat as a hint. */
79
- export function annotations(verb: string): Annotations | undefined {
80
- const value: Annotations = {}
81
-
82
- if (verb === 'GET' || verb === 'HEAD') value.readOnlyHint = true
83
-
84
- if (verb === 'DELETE') value.destructiveHint = true
85
-
86
- if (verb === 'PUT' || verb === 'DELETE') value.idempotentHint = true
87
-
88
- return Object.keys(value).length === 0 ? undefined : value
89
- }
90
-
91
- interface Shape {
92
- properties?: Record<string, Schema>
93
- required?: string[]
94
- }
@@ -1,144 +0,0 @@
1
- import * as http from '../HTTP/index.js'
2
- import { fork } from '../RPC/Context.js'
3
- import { address, name, split } from '../RPC/names.js'
4
- import { METHOD_NOT_FOUND, failure, refusal, response } from './errors.js'
5
- import { annotations, input, output } from './schema.js'
6
- import { FAMILY, MCP, type Tool as Declaration } from '../directives/mcp/index.js'
7
- import { describing } from '../Introspection.js'
8
- import { variables } from '../RTD/segment.js'
9
- import type { Tree } from '../RTD/index.js'
10
- import type { Params, Result, Tool } from './types.js'
11
-
12
- /**
13
- * Every method this caller may reach that is published as a tool, named as the procedure
14
- * it is.
15
- *
16
- * A method is a tool where it says so with `mcp:tool`, and a default denies: a tree holds
17
- * what an application serves, and most of it is machinery a model has no business reading.
18
- * What a caller may then do with one is what `auth` says. The tree is walked once and each
19
- * method describes itself, which is where that is decided and where `io` and `map` say what
20
- * may be sent.
21
- *
22
- * Sorted, because the revision asks for an order a client can cache on.
23
- */
24
- export async function list(tree: Tree, request: http.Context): Promise<Tool[]> {
25
- const tools: Tool[] = []
26
-
27
- /*
28
- * A description, not the request asking. What refuses a credentialed request at an
29
- * `anonymous` route does not refuse the call a tool makes, and a list that says otherwise
30
- * disagrees with what `tools/call` then does.
31
- */
32
- const context = describing(request)
33
-
34
- for (const { segments, verb, method } of tree.walk()) {
35
- if (!MCP.published(method.directives.declared<Declaration>(FAMILY))) continue
36
-
37
- const named = name(segments, verb)
38
-
39
- // a route a name cannot spell is a route nothing addresses, here or at `/.rpc`
40
- if (named === null) continue
41
-
42
- const params = variables(segments)
43
- const introspection = await method.explain(context, params)
44
-
45
- if (introspection === null) continue
46
-
47
- const described = introspection.description
48
- const schema = output(introspection)
49
- const hints = annotations(verb)
50
-
51
- // in the order the revision documents one, which is the order it is read in
52
- const tool: Tool = {
53
- name: named,
54
- ...(introspection.title === undefined ? {} : { title: introspection.title }),
55
- ...(described === undefined ? {} : { description: described }),
56
- inputSchema: input(
57
- introspection,
58
- params.map((param) => param.name),
59
- method.endpoint?.selection() ?? null
60
- ),
61
- ...(schema === undefined ? {} : { outputSchema: schema }),
62
- ...(hints === undefined ? {} : { annotations: hints })
63
- }
64
-
65
- tools.push(tool)
66
- }
67
-
68
- return tools.sort((one, other) => (one.name < other.name ? -1 : 1))
69
- }
70
-
71
- /**
72
- * The call the tool is. Its arguments are the procedure's parameters, taken apart the way a
73
- * request carries them, and what answers is the same `route` an ordinary request goes to.
74
- *
75
- * A name that is not a published tool is answered as no tool at all, whether or not a route
76
- * would have taken it: what an application did not publish is not reachable here by guessing
77
- * its name. What the caller may then do with one that is published is still `auth`'s to say.
78
- */
79
- export async function call(scope: Scope, named: string, args: Params): Promise<Result> {
80
- if (!published(scope.tree, named))
81
- throw new http.NotFound(
82
- response(
83
- null,
84
- failure(METHOD_NOT_FOUND, `'${named}' is not a tool this server publishes`)
85
- )
86
- )
87
-
88
- const { path, verb, variables } = address(named, args)
89
- const { query, input: body } = split(args, variables)
90
- const clone = fork(scope.context, path, verb, query, body)
91
-
92
- try {
93
- const message = await scope.route(clone)
94
-
95
- // what `io:output` restricts, over this call's reply rather than the envelope
96
- await http.shape(clone, message)
97
-
98
- return result(message.body)
99
- } catch (exception) {
100
- /*
101
- * What the route made of this call is a value a model reads and may correct itself by:
102
- * an operation that refused, an argument `io:input` would not take, a record that is
103
- * not there, an identity `auth` would not let it act on. A credential is none of those
104
- * — that is the client's to fix and not the model's, so it is answered as it is — and
105
- * neither is a fault of this server, which is a protocol error and stays one.
106
- */
107
- if (
108
- exception instanceof http.ClientError &&
109
- !(exception instanceof http.Unauthorized)
110
- )
111
- return { content: [{ type: 'text', text: refusal(exception) }], isError: true }
112
-
113
- throw exception
114
- }
115
- }
116
-
117
- /** Everything a call needs that is not the call: the request it is of, and what answers it. */
118
- export interface Scope {
119
- context: http.Context
120
- route: http.Processor
121
- tree: Tree
122
- }
123
-
124
- /**
125
- * Whether the tree publishes this name as a tool. What `auth` makes of the caller is not
126
- * asked here — the declaration is the route's and does not vary by who is calling, and the
127
- * call that follows is authorized as any request to that route is.
128
- */
129
- function published(tree: Tree, named: string): boolean {
130
- for (const { segments, verb, method } of tree.walk())
131
- if (name(segments, verb) === named)
132
- return MCP.published(method.directives.declared<Declaration>(FAMILY))
133
-
134
- return false
135
- }
136
-
137
- function result(body: unknown): Result {
138
- if (body === undefined || body === null) return { content: [] }
139
-
140
- return {
141
- content: [{ type: 'text', text: JSON.stringify(body) }],
142
- structuredContent: body
143
- }
144
- }
@@ -1,84 +0,0 @@
1
- /** The revision this endpoint serves, where a request carries its own metadata. */
2
- export const MODERN = '2026-07-28'
3
-
4
- /** The newest revision reached by an `initialize` handshake, which is what clients still send. */
5
- export const LEGACY = '2025-11-25'
6
-
7
- export const VERSIONS = [MODERN, LEGACY]
8
-
9
- /** The version every JSON-RPC message states, which is not the protocol's. */
10
- export const JSONRPC = '2.0'
11
-
12
- /** The prefix the revision reserves for itself in `_meta`. */
13
- export const RESERVED = 'io.modelcontextprotocol/'
14
-
15
- export const PROTOCOL_VERSION = RESERVED + 'protocolVersion'
16
- export const CLIENT_CAPABILITIES = RESERVED + 'clientCapabilities'
17
- export const SERVER_INFO = RESERVED + 'serverInfo'
18
-
19
- export type Params = Record<string, unknown>
20
-
21
- export interface Message {
22
- jsonrpc: string
23
- method: string
24
- params?: Params
25
-
26
- /** Absent makes this a notification, which is answered by not answering. */
27
- id?: string | number
28
- }
29
-
30
- export interface Failure {
31
- code: number
32
- message: string
33
- data?: unknown
34
- }
35
-
36
- export interface Response {
37
- jsonrpc: string
38
- id: string | number | null
39
- result?: unknown
40
- error?: Failure
41
- }
42
-
43
- /**
44
- * How long a complete result may be held, and by whom. `private` is a result that is the
45
- * caller's alone — a list `auth` filtered for their identity is not another caller's list.
46
- */
47
- export interface Cache {
48
- ttlMs: number
49
- cacheScope: 'public' | 'private'
50
- }
51
-
52
- /** What a tool answers with: what a model reads, and the reply itself. */
53
- export interface Result {
54
- content: Content[]
55
- structuredContent?: unknown
56
-
57
- /** The operation refused, which is something a model can read and correct. */
58
- isError?: boolean
59
- }
60
-
61
- export interface Content {
62
- type: 'text'
63
- text: string
64
- }
65
-
66
- export interface Tool {
67
- name: string
68
-
69
- /** what a person is shown where a client lists this tool; a name is an address */
70
- title?: string
71
-
72
- /** what the route states this method is */
73
- description?: string
74
- inputSchema: object
75
- outputSchema?: object
76
- annotations?: Annotations
77
- }
78
-
79
- /** What the verb says about the call, which the revision asks a client to treat as a hint. */
80
- export interface Annotations {
81
- readOnlyHint?: boolean
82
- destructiveHint?: boolean
83
- idempotentHint?: boolean
84
- }
package/source/Mapping.ts DELETED
@@ -1,101 +0,0 @@
1
- import { type Parameter } from './RTD/index.js'
2
- import { Query } from './Query.js'
3
- import type { Introspection, Schema } from './Introspection.js'
4
- import type { QueryString } from './Query.js'
5
- import type * as http from './HTTP/index.js'
6
- import type * as syntax from './RTD/syntax/index.js'
7
- import type * as core from '@toa.io/core/types'
8
-
9
- export abstract class Mapping {
10
- protected readonly query: Query
11
- public abstract readonly queryable: boolean
12
-
13
- public constructor(query: Query) {
14
- this.query = query
15
- }
16
-
17
- public static create(query?: syntax.Query | null, paged?: boolean): Mapping {
18
- const q = new Query(query!, paged)
19
-
20
- return queryable(query) ? new QueryableMapping(q) : new InputMapping(q)
21
- }
22
-
23
- public explain(introspection: Introspection): Record<string, Schema> | null {
24
- return this.query.explain(introspection)
25
- }
26
-
27
- /** What picks the records a call is about; see `Query.selection`. */
28
- public selection(): Record<string, Schema> | null {
29
- return this.query.selection()
30
- }
31
-
32
- protected assign(input: any, qs: QueryString): void {
33
- if (qs.parameters !== null) {
34
- if (typeof input !== 'object' || input === null)
35
- throw new Error('Input must be an object to embed query parameters')
36
-
37
- Object.assign(input, qs.parameters)
38
- }
39
- }
40
-
41
- public abstract fit(
42
- input: any,
43
- query: http.Query,
44
- parameters: Parameter[]
45
- ): core.Request
46
- }
47
-
48
- class QueryableMapping extends Mapping {
49
- public override readonly queryable = true
50
-
51
- public fit(input: any, query: http.Query, parameters: Parameter[]): core.Request {
52
- const request: core.Request = {}
53
- const qs = this.query.fit(query, parameters)
54
-
55
- if (input === undefined && qs.parameters !== null) input = {}
56
-
57
- this.assign(input, qs)
58
-
59
- if (input !== undefined) request.input = input
60
-
61
- if (qs.query !== null) request.query = qs.query
62
-
63
- return request
64
- }
65
- }
66
-
67
- class InputMapping extends Mapping {
68
- public override readonly queryable = false
69
-
70
- public fit(input: any, query: http.Query, parameters: Parameter[]): core.Request {
71
- const request: core.Request = {}
72
- const qs = this.query.fit(query, parameters)
73
-
74
- if (
75
- input === undefined &&
76
- (this.query.parameterized || parameters.length > 0 || qs.parameters !== null)
77
- )
78
- input = {}
79
-
80
- if (parameters.length > 0) {
81
- if (typeof input !== 'object' || input === null)
82
- throw new Error('Input must be an object to embed parameters')
83
-
84
- for (const parameter of parameters) input[parameter.name] = parameter.value
85
- }
86
-
87
- this.assign(input, qs)
88
-
89
- if (input !== undefined) request.input = input
90
-
91
- return request
92
- }
93
- }
94
-
95
- export function queryable(query?: syntax.Query | null): boolean {
96
- if (query === undefined || query === null) return false
97
-
98
- const keys = Object.keys(query)
99
-
100
- return !(keys.length === 1 && keys[0] === 'parameters')
101
- }
@@ -1,54 +0,0 @@
1
- import { it } from 'node:test'
2
- import assert from 'node:assert/strict'
3
-
4
- import { Query } from './Query.js'
5
- import { type Parameter, type syntax } from './RTD/index.js'
6
-
7
- it('should combine request criteria', async () => {
8
- const query: syntax.Query = {
9
- criteria: 'foo==1;',
10
- omit: { range: [0, 1] },
11
- limit: { range: [0, 1] }
12
- }
13
-
14
- const parameters: Parameter[] = [
15
- { name: 'bar', value: '2' },
16
- { name: 'baz', value: '3' }
17
- ]
18
-
19
- const instance = new Query(query)
20
- const result = instance.fit({ criteria: 'qux==4' }, parameters)
21
-
22
- assert.deepStrictEqual(result.query!.criteria, '(bar=="2";baz=="3");(foo==1);(qux==4)')
23
- })
24
-
25
- it('should quote parameter values', async () => {
26
- const query: syntax.Query = {
27
- omit: { range: [0, 1] },
28
- limit: { range: [0, 1] }
29
- }
30
-
31
- const parameters: Parameter[] = [{ name: 'user', value: 'me"),(user=="victim' }]
32
-
33
- const instance = new Query(query)
34
- const result = instance.fit({}, parameters)
35
-
36
- assert.deepStrictEqual(result.query!.criteria, '(user=="me\\"),(user==\\"victim")')
37
- })
38
-
39
- it('should set id parameter as query.id', async () => {
40
- const query: syntax.Query = {
41
- omit: { range: [0, 1] },
42
- limit: { range: [0, 1] }
43
- }
44
-
45
- const id = '87782631058445da81cb82f78b20c223'
46
-
47
- const parameters: Parameter[] = [{ name: 'id', value: id }]
48
-
49
- const instance = new Query(query)
50
- const result = instance.fit({}, parameters)
51
-
52
- assert.strictEqual(result.query!.criteria, undefined)
53
- assert.deepStrictEqual(result.query!.id, id)
54
- })