mcp-auth-server 0.0.0-stage → 0.1.0

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 (476) hide show
  1. package/README.md +207 -2
  2. package/bin/keygen.mjs +26 -0
  3. package/lib/adapters/express/express.middleware.d.ts +4 -0
  4. package/lib/adapters/express/express.middleware.js +23 -0
  5. package/lib/adapters/express/express.middleware.js.map +1 -0
  6. package/lib/adapters/fastify/fastify.plugin.d.ts +4 -0
  7. package/lib/adapters/fastify/fastify.plugin.js +32 -0
  8. package/lib/adapters/fastify/fastify.plugin.js.map +1 -0
  9. package/lib/adapters/fetch/create.fetch.handler.d.ts +3 -0
  10. package/lib/adapters/fetch/create.fetch.handler.js +13 -0
  11. package/lib/adapters/fetch/create.fetch.handler.js.map +1 -0
  12. package/lib/adapters/fetch/to.http.request.d.ts +3 -0
  13. package/lib/adapters/fetch/to.http.request.js +22 -0
  14. package/lib/adapters/fetch/to.http.request.js.map +1 -0
  15. package/lib/adapters/fetch/to.response.d.ts +3 -0
  16. package/lib/adapters/fetch/to.response.js +10 -0
  17. package/lib/adapters/fetch/to.response.js.map +1 -0
  18. package/lib/adapters/koa/koa.middleware.d.ts +4 -0
  19. package/lib/adapters/koa/koa.middleware.js +19 -0
  20. package/lib/adapters/koa/koa.middleware.js.map +1 -0
  21. package/lib/adapters/node/create.node.handler.d.ts +4 -0
  22. package/lib/adapters/node/create.node.handler.js +16 -0
  23. package/lib/adapters/node/create.node.handler.js.map +1 -0
  24. package/lib/adapters/node/node.ssrf.guard.d.ts +2 -0
  25. package/lib/adapters/node/node.ssrf.guard.js +16 -0
  26. package/lib/adapters/node/node.ssrf.guard.js.map +1 -0
  27. package/lib/adapters/node/parse.node.body.d.ts +3 -0
  28. package/lib/adapters/node/parse.node.body.js +16 -0
  29. package/lib/adapters/node/parse.node.body.js.map +1 -0
  30. package/lib/adapters/node/read.node.body.d.ts +3 -0
  31. package/lib/adapters/node/read.node.body.js +10 -0
  32. package/lib/adapters/node/read.node.body.js.map +1 -0
  33. package/lib/adapters/node/to.node.http.request.d.ts +4 -0
  34. package/lib/adapters/node/to.node.http.request.js +20 -0
  35. package/lib/adapters/node/to.node.http.request.js.map +1 -0
  36. package/lib/adapters/node/write.node.response.d.ts +4 -0
  37. package/lib/adapters/node/write.node.response.js +10 -0
  38. package/lib/adapters/node/write.node.response.js.map +1 -0
  39. package/lib/cache/lru.metadata.cache.d.ts +10 -0
  40. package/lib/cache/lru.metadata.cache.js +31 -0
  41. package/lib/cache/lru.metadata.cache.js.map +1 -0
  42. package/lib/functions/body/parse.body.d.ts +2 -0
  43. package/lib/functions/body/parse.body.js +20 -0
  44. package/lib/functions/body/parse.body.js.map +1 -0
  45. package/lib/functions/body/parse.query.d.ts +2 -0
  46. package/lib/functions/body/parse.query.js +16 -0
  47. package/lib/functions/body/parse.query.js.map +1 -0
  48. package/lib/functions/cimd/assert.public.host.d.ts +2 -0
  49. package/lib/functions/cimd/assert.public.host.js +15 -0
  50. package/lib/functions/cimd/assert.public.host.js.map +1 -0
  51. package/lib/functions/cimd/cache.seconds.d.ts +2 -0
  52. package/lib/functions/cimd/cache.seconds.js +16 -0
  53. package/lib/functions/cimd/cache.seconds.js.map +1 -0
  54. package/lib/functions/cimd/create.metadata.resolver.d.ts +5 -0
  55. package/lib/functions/cimd/create.metadata.resolver.js +53 -0
  56. package/lib/functions/cimd/create.metadata.resolver.js.map +1 -0
  57. package/lib/functions/cimd/host.matches.d.ts +2 -0
  58. package/lib/functions/cimd/host.matches.js +5 -0
  59. package/lib/functions/cimd/host.matches.js.map +1 -0
  60. package/lib/functions/cimd/is.metadata.client.id.d.ts +2 -0
  61. package/lib/functions/cimd/is.metadata.client.id.js +14 -0
  62. package/lib/functions/cimd/is.metadata.client.id.js.map +1 -0
  63. package/lib/functions/cimd/is.private.ipv4.d.ts +2 -0
  64. package/lib/functions/cimd/is.private.ipv4.js +18 -0
  65. package/lib/functions/cimd/is.private.ipv4.js.map +1 -0
  66. package/lib/functions/cimd/is.private.ipv6.d.ts +2 -0
  67. package/lib/functions/cimd/is.private.ipv6.js +17 -0
  68. package/lib/functions/cimd/is.private.ipv6.js.map +1 -0
  69. package/lib/functions/cimd/read.limited.d.ts +2 -0
  70. package/lib/functions/cimd/read.limited.js +32 -0
  71. package/lib/functions/cimd/read.limited.js.map +1 -0
  72. package/lib/functions/cimd/validate.metadata.document.d.ts +3 -0
  73. package/lib/functions/cimd/validate.metadata.document.js +25 -0
  74. package/lib/functions/cimd/validate.metadata.document.js.map +1 -0
  75. package/lib/functions/consent/consent.styles.d.ts +2 -0
  76. package/lib/functions/consent/consent.styles.js +20 -0
  77. package/lib/functions/consent/consent.styles.js.map +1 -0
  78. package/lib/functions/consent/escape.html.d.ts +2 -0
  79. package/lib/functions/consent/escape.html.js +5 -0
  80. package/lib/functions/consent/escape.html.js.map +1 -0
  81. package/lib/functions/consent/render.default.consent.d.ts +3 -0
  82. package/lib/functions/consent/render.default.consent.js +50 -0
  83. package/lib/functions/consent/render.default.consent.js.map +1 -0
  84. package/lib/functions/crypto/random.id.d.ts +2 -0
  85. package/lib/functions/crypto/random.id.js +5 -0
  86. package/lib/functions/crypto/random.id.js.map +1 -0
  87. package/lib/functions/crypto/random.token.d.ts +2 -0
  88. package/lib/functions/crypto/random.token.js +9 -0
  89. package/lib/functions/crypto/random.token.js.map +1 -0
  90. package/lib/functions/crypto/sha256.base64.url.d.ts +2 -0
  91. package/lib/functions/crypto/sha256.base64.url.js +10 -0
  92. package/lib/functions/crypto/sha256.base64.url.js.map +1 -0
  93. package/lib/functions/crypto/sha256.digest.d.ts +2 -0
  94. package/lib/functions/crypto/sha256.digest.js +5 -0
  95. package/lib/functions/crypto/sha256.digest.js.map +1 -0
  96. package/lib/functions/crypto/sha256.hex.d.ts +2 -0
  97. package/lib/functions/crypto/sha256.hex.js +9 -0
  98. package/lib/functions/crypto/sha256.hex.js.map +1 -0
  99. package/lib/functions/crypto/to.base64.url.d.ts +2 -0
  100. package/lib/functions/crypto/to.base64.url.js +10 -0
  101. package/lib/functions/crypto/to.base64.url.js.map +1 -0
  102. package/lib/functions/http/form.params.d.ts +2 -0
  103. package/lib/functions/http/form.params.js +5 -0
  104. package/lib/functions/http/form.params.js.map +1 -0
  105. package/lib/functions/http/header.value.d.ts +3 -0
  106. package/lib/functions/http/header.value.js +8 -0
  107. package/lib/functions/http/header.value.js.map +1 -0
  108. package/lib/functions/http/json.response.d.ts +3 -0
  109. package/lib/functions/http/json.response.js +9 -0
  110. package/lib/functions/http/json.response.js.map +1 -0
  111. package/lib/functions/http/oauth.error.response.d.ts +3 -0
  112. package/lib/functions/http/oauth.error.response.js +9 -0
  113. package/lib/functions/http/oauth.error.response.js.map +1 -0
  114. package/lib/functions/http/plain.error.response.d.ts +3 -0
  115. package/lib/functions/http/plain.error.response.js +5 -0
  116. package/lib/functions/http/plain.error.response.js.map +1 -0
  117. package/lib/functions/http/query.param.d.ts +3 -0
  118. package/lib/functions/http/query.param.js +8 -0
  119. package/lib/functions/http/query.param.js.map +1 -0
  120. package/lib/functions/http/redirect.response.d.ts +3 -0
  121. package/lib/functions/http/redirect.response.js +5 -0
  122. package/lib/functions/http/redirect.response.js.map +1 -0
  123. package/lib/functions/http/text.value.d.ts +2 -0
  124. package/lib/functions/http/text.value.js +5 -0
  125. package/lib/functions/http/text.value.js.map +1 -0
  126. package/lib/functions/http/trim.trailing.slashes.d.ts +2 -0
  127. package/lib/functions/http/trim.trailing.slashes.js +10 -0
  128. package/lib/functions/http/trim.trailing.slashes.js.map +1 -0
  129. package/lib/functions/jwt/sign.access.token.d.ts +4 -0
  130. package/lib/functions/jwt/sign.access.token.js +21 -0
  131. package/lib/functions/jwt/sign.access.token.js.map +1 -0
  132. package/lib/functions/jwt/verify.access.token.d.ts +4 -0
  133. package/lib/functions/jwt/verify.access.token.js +16 -0
  134. package/lib/functions/jwt/verify.access.token.js.map +1 -0
  135. package/lib/functions/keys/der.length.d.ts +2 -0
  136. package/lib/functions/keys/der.length.js +12 -0
  137. package/lib/functions/keys/der.length.js.map +1 -0
  138. package/lib/functions/keys/is.rsa.key.d.ts +2 -0
  139. package/lib/functions/keys/is.rsa.key.js +8 -0
  140. package/lib/functions/keys/is.rsa.key.js.map +1 -0
  141. package/lib/functions/keys/normalize.pem.d.ts +2 -0
  142. package/lib/functions/keys/normalize.pem.js +16 -0
  143. package/lib/functions/keys/normalize.pem.js.map +1 -0
  144. package/lib/functions/keys/pkcs1.to.pkcs8.d.ts +2 -0
  145. package/lib/functions/keys/pkcs1.to.pkcs8.js +14 -0
  146. package/lib/functions/keys/pkcs1.to.pkcs8.js.map +1 -0
  147. package/lib/functions/keys/resolve.key.pair.d.ts +3 -0
  148. package/lib/functions/keys/resolve.key.pair.js +27 -0
  149. package/lib/functions/keys/resolve.key.pair.js.map +1 -0
  150. package/lib/functions/keys/signing.key.from.env.d.ts +2 -0
  151. package/lib/functions/keys/signing.key.from.env.js +14 -0
  152. package/lib/functions/keys/signing.key.from.env.js.map +1 -0
  153. package/lib/functions/keys/wrap.pem.d.ts +2 -0
  154. package/lib/functions/keys/wrap.pem.js +11 -0
  155. package/lib/functions/keys/wrap.pem.js.map +1 -0
  156. package/lib/functions/redirect/build.error.redirect.d.ts +2 -0
  157. package/lib/functions/redirect/build.error.redirect.js +9 -0
  158. package/lib/functions/redirect/build.error.redirect.js.map +1 -0
  159. package/lib/functions/redirect/build.redirect.d.ts +2 -0
  160. package/lib/functions/redirect/build.redirect.js +12 -0
  161. package/lib/functions/redirect/build.redirect.js.map +1 -0
  162. package/lib/functions/redirect/describe.redirect.target.d.ts +2 -0
  163. package/lib/functions/redirect/describe.redirect.target.js +8 -0
  164. package/lib/functions/redirect/describe.redirect.target.js.map +1 -0
  165. package/lib/functions/redirect/is.allowed.redirect.uri.d.ts +3 -0
  166. package/lib/functions/redirect/is.allowed.redirect.uri.js +19 -0
  167. package/lib/functions/redirect/is.allowed.redirect.uri.js.map +1 -0
  168. package/lib/functions/redirect/is.loopback.redirect.d.ts +2 -0
  169. package/lib/functions/redirect/is.loopback.redirect.js +13 -0
  170. package/lib/functions/redirect/is.loopback.redirect.js.map +1 -0
  171. package/lib/functions/redirect/is.safe.metadata.redirect.uri.d.ts +2 -0
  172. package/lib/functions/redirect/is.safe.metadata.redirect.uri.js +20 -0
  173. package/lib/functions/redirect/is.safe.metadata.redirect.uri.js.map +1 -0
  174. package/lib/functions/redirect/parse.url.d.ts +2 -0
  175. package/lib/functions/redirect/parse.url.js +14 -0
  176. package/lib/functions/redirect/parse.url.js.map +1 -0
  177. package/lib/functions/server/attach.and.continue.d.ts +6 -0
  178. package/lib/functions/server/attach.and.continue.js +15 -0
  179. package/lib/functions/server/attach.and.continue.js.map +1 -0
  180. package/lib/functions/server/authenticate.request.d.ts +5 -0
  181. package/lib/functions/server/authenticate.request.js +24 -0
  182. package/lib/functions/server/authenticate.request.js.map +1 -0
  183. package/lib/functions/server/awaiting.consent.d.ts +5 -0
  184. package/lib/functions/server/awaiting.consent.js +18 -0
  185. package/lib/functions/server/awaiting.consent.js.map +1 -0
  186. package/lib/functions/server/build.routes.d.ts +4 -0
  187. package/lib/functions/server/build.routes.js +40 -0
  188. package/lib/functions/server/build.routes.js.map +1 -0
  189. package/lib/functions/server/build.upstream.context.d.ts +6 -0
  190. package/lib/functions/server/build.upstream.context.js +11 -0
  191. package/lib/functions/server/build.upstream.context.js.map +1 -0
  192. package/lib/functions/server/challenge.response.d.ts +4 -0
  193. package/lib/functions/server/challenge.response.js +14 -0
  194. package/lib/functions/server/challenge.response.js.map +1 -0
  195. package/lib/functions/server/continue.with.user.d.ts +5 -0
  196. package/lib/functions/server/continue.with.user.js +18 -0
  197. package/lib/functions/server/continue.with.user.js.map +1 -0
  198. package/lib/functions/server/create.client.resolver.d.ts +6 -0
  199. package/lib/functions/server/create.client.resolver.js +26 -0
  200. package/lib/functions/server/create.client.resolver.js.map +1 -0
  201. package/lib/functions/server/create.mcp.auth.context.d.ts +4 -0
  202. package/lib/functions/server/create.mcp.auth.context.js +38 -0
  203. package/lib/functions/server/create.mcp.auth.context.js.map +1 -0
  204. package/lib/functions/server/create.mcp.auth.d.ts +4 -0
  205. package/lib/functions/server/create.mcp.auth.js +25 -0
  206. package/lib/functions/server/create.mcp.auth.js.map +1 -0
  207. package/lib/functions/server/deny.authorization.d.ts +5 -0
  208. package/lib/functions/server/deny.authorization.js +13 -0
  209. package/lib/functions/server/deny.authorization.js.map +1 -0
  210. package/lib/functions/server/exchange.authorization.code.d.ts +4 -0
  211. package/lib/functions/server/exchange.authorization.code.js +32 -0
  212. package/lib/functions/server/exchange.authorization.code.js.map +1 -0
  213. package/lib/functions/server/find.route.d.ts +4 -0
  214. package/lib/functions/server/find.route.js +5 -0
  215. package/lib/functions/server/find.route.js.map +1 -0
  216. package/lib/functions/server/handle.request.d.ts +6 -0
  217. package/lib/functions/server/handle.request.js +21 -0
  218. package/lib/functions/server/handle.request.js.map +1 -0
  219. package/lib/functions/server/has.credentials.d.ts +3 -0
  220. package/lib/functions/server/has.credentials.js +9 -0
  221. package/lib/functions/server/has.credentials.js.map +1 -0
  222. package/lib/functions/server/issue.authorization.code.d.ts +5 -0
  223. package/lib/functions/server/issue.authorization.code.js +24 -0
  224. package/lib/functions/server/issue.authorization.code.js.map +1 -0
  225. package/lib/functions/server/issue.tokens.d.ts +4 -0
  226. package/lib/functions/server/issue.tokens.js +30 -0
  227. package/lib/functions/server/issue.tokens.js.map +1 -0
  228. package/lib/functions/server/load.pending.d.ts +5 -0
  229. package/lib/functions/server/load.pending.js +13 -0
  230. package/lib/functions/server/load.pending.js.map +1 -0
  231. package/lib/functions/server/rotate.refresh.token.d.ts +4 -0
  232. package/lib/functions/server/rotate.refresh.token.js +33 -0
  233. package/lib/functions/server/rotate.refresh.token.js.map +1 -0
  234. package/lib/functions/server/token.failure.d.ts +3 -0
  235. package/lib/functions/server/token.failure.js +9 -0
  236. package/lib/functions/server/token.failure.js.map +1 -0
  237. package/lib/functions/sql/from.better.sqlite3.d.ts +10 -0
  238. package/lib/functions/sql/from.better.sqlite3.js +11 -0
  239. package/lib/functions/sql/from.better.sqlite3.js.map +1 -0
  240. package/lib/functions/sql/from.bun.sqlite.d.ts +7 -0
  241. package/lib/functions/sql/from.bun.sqlite.js +5 -0
  242. package/lib/functions/sql/from.bun.sqlite.js.map +1 -0
  243. package/lib/functions/sql/from.d1.d.ts +11 -0
  244. package/lib/functions/sql/from.d1.js +8 -0
  245. package/lib/functions/sql/from.d1.js.map +1 -0
  246. package/lib/functions/sql/from.node.sqlite.d.ts +7 -0
  247. package/lib/functions/sql/from.node.sqlite.js +5 -0
  248. package/lib/functions/sql/from.node.sqlite.js.map +1 -0
  249. package/lib/functions/sql/from.pg.d.ts +7 -0
  250. package/lib/functions/sql/from.pg.js +5 -0
  251. package/lib/functions/sql/from.pg.js.map +1 -0
  252. package/lib/functions/sql/from.postgres.js.d.ts +5 -0
  253. package/lib/functions/sql/from.postgres.js.js +5 -0
  254. package/lib/functions/sql/from.postgres.js.js.map +1 -0
  255. package/lib/functions/sql/optional.date.d.ts +2 -0
  256. package/lib/functions/sql/optional.date.js +5 -0
  257. package/lib/functions/sql/optional.date.js.map +1 -0
  258. package/lib/functions/sql/optional.number.d.ts +2 -0
  259. package/lib/functions/sql/optional.number.js +5 -0
  260. package/lib/functions/sql/optional.number.js.map +1 -0
  261. package/lib/functions/sql/optional.text.d.ts +2 -0
  262. package/lib/functions/sql/optional.text.js +5 -0
  263. package/lib/functions/sql/optional.text.js.map +1 -0
  264. package/lib/functions/sql/row.to.client.d.ts +4 -0
  265. package/lib/functions/sql/row.to.client.js +18 -0
  266. package/lib/functions/sql/row.to.client.js.map +1 -0
  267. package/lib/functions/sql/row.to.code.d.ts +4 -0
  268. package/lib/functions/sql/row.to.code.js +21 -0
  269. package/lib/functions/sql/row.to.code.js.map +1 -0
  270. package/lib/functions/sql/row.to.pending.d.ts +4 -0
  271. package/lib/functions/sql/row.to.pending.js +21 -0
  272. package/lib/functions/sql/row.to.pending.js.map +1 -0
  273. package/lib/functions/sql/row.to.refresh.token.d.ts +4 -0
  274. package/lib/functions/sql/row.to.refresh.token.js +22 -0
  275. package/lib/functions/sql/row.to.refresh.token.js.map +1 -0
  276. package/lib/functions/sql/sql.schema.d.ts +3 -0
  277. package/lib/functions/sql/sql.schema.js +62 -0
  278. package/lib/functions/sql/sql.schema.js.map +1 -0
  279. package/lib/functions/sql/to.dialect.sql.d.ts +3 -0
  280. package/lib/functions/sql/to.dialect.sql.js +13 -0
  281. package/lib/functions/sql/to.dialect.sql.js.map +1 -0
  282. package/lib/functions/upstream/app.session.upstream.d.ts +4 -0
  283. package/lib/functions/upstream/app.session.upstream.js +18 -0
  284. package/lib/functions/upstream/app.session.upstream.js.map +1 -0
  285. package/lib/functions/upstream/entra.upstream.d.ts +11 -0
  286. package/lib/functions/upstream/entra.upstream.js +16 -0
  287. package/lib/functions/upstream/entra.upstream.js.map +1 -0
  288. package/lib/functions/upstream/oidc.upstream.d.ts +4 -0
  289. package/lib/functions/upstream/oidc.upstream.js +82 -0
  290. package/lib/functions/upstream/oidc.upstream.js.map +1 -0
  291. package/lib/functions/upstream/verify.id.token.d.ts +3 -0
  292. package/lib/functions/upstream/verify.id.token.js +16 -0
  293. package/lib/functions/upstream/verify.id.token.js.map +1 -0
  294. package/lib/handlers/authorization.server.metadata.handler.d.ts +4 -0
  295. package/lib/handlers/authorization.server.metadata.handler.js +24 -0
  296. package/lib/handlers/authorization.server.metadata.handler.js.map +1 -0
  297. package/lib/handlers/authorize.handler.d.ts +5 -0
  298. package/lib/handlers/authorize.handler.js +58 -0
  299. package/lib/handlers/authorize.handler.js.map +1 -0
  300. package/lib/handlers/callback.handler.d.ts +5 -0
  301. package/lib/handlers/callback.handler.js +32 -0
  302. package/lib/handlers/callback.handler.js.map +1 -0
  303. package/lib/handlers/consent.decision.handler.d.ts +5 -0
  304. package/lib/handlers/consent.decision.handler.js +30 -0
  305. package/lib/handlers/consent.decision.handler.js.map +1 -0
  306. package/lib/handlers/consent.page.handler.d.ts +5 -0
  307. package/lib/handlers/consent.page.handler.js +43 -0
  308. package/lib/handlers/consent.page.handler.js.map +1 -0
  309. package/lib/handlers/protected.resource.metadata.handler.d.ts +4 -0
  310. package/lib/handlers/protected.resource.metadata.handler.js +9 -0
  311. package/lib/handlers/protected.resource.metadata.handler.js.map +1 -0
  312. package/lib/handlers/register.handler.d.ts +5 -0
  313. package/lib/handlers/register.handler.js +44 -0
  314. package/lib/handlers/register.handler.js.map +1 -0
  315. package/lib/handlers/resume.handler.d.ts +5 -0
  316. package/lib/handlers/resume.handler.js +25 -0
  317. package/lib/handlers/resume.handler.js.map +1 -0
  318. package/lib/handlers/revoke.handler.d.ts +5 -0
  319. package/lib/handlers/revoke.handler.js +27 -0
  320. package/lib/handlers/revoke.handler.js.map +1 -0
  321. package/lib/handlers/token.handler.d.ts +5 -0
  322. package/lib/handlers/token.handler.js +22 -0
  323. package/lib/handlers/token.handler.js.map +1 -0
  324. package/lib/mcp.auth.entra.d.ts +4 -0
  325. package/lib/mcp.auth.entra.js +11 -0
  326. package/lib/mcp.auth.entra.js.map +1 -0
  327. package/lib/mcp.auth.express.d.ts +4 -0
  328. package/lib/mcp.auth.express.js +11 -0
  329. package/lib/mcp.auth.express.js.map +1 -0
  330. package/lib/mcp.auth.fastify.d.ts +4 -0
  331. package/lib/mcp.auth.fastify.js +11 -0
  332. package/lib/mcp.auth.fastify.js.map +1 -0
  333. package/lib/mcp.auth.fetch.d.ts +6 -0
  334. package/lib/mcp.auth.fetch.js +15 -0
  335. package/lib/mcp.auth.fetch.js.map +1 -0
  336. package/lib/mcp.auth.koa.d.ts +4 -0
  337. package/lib/mcp.auth.koa.js +11 -0
  338. package/lib/mcp.auth.koa.js.map +1 -0
  339. package/lib/mcp.auth.memory.d.ts +4 -0
  340. package/lib/mcp.auth.memory.js +11 -0
  341. package/lib/mcp.auth.memory.js.map +1 -0
  342. package/lib/mcp.auth.mongodb.d.ts +6 -0
  343. package/lib/mcp.auth.mongodb.js +11 -0
  344. package/lib/mcp.auth.mongodb.js.map +1 -0
  345. package/lib/mcp.auth.node.d.ts +9 -0
  346. package/lib/mcp.auth.node.js +21 -0
  347. package/lib/mcp.auth.node.js.map +1 -0
  348. package/lib/mcp.auth.postgres.d.ts +11 -0
  349. package/lib/mcp.auth.postgres.js +20 -0
  350. package/lib/mcp.auth.postgres.js.map +1 -0
  351. package/lib/mcp.auth.server.d.ts +42 -0
  352. package/lib/mcp.auth.server.js +35 -0
  353. package/lib/mcp.auth.server.js.map +1 -0
  354. package/lib/mcp.auth.sqlite.d.ts +13 -0
  355. package/lib/mcp.auth.sqlite.js +24 -0
  356. package/lib/mcp.auth.sqlite.js.map +1 -0
  357. package/lib/storage/memory.storage.d.ts +30 -0
  358. package/lib/storage/memory.storage.js +91 -0
  359. package/lib/storage/memory.storage.js.map +1 -0
  360. package/lib/storage/mongodb.storage.d.ts +41 -0
  361. package/lib/storage/mongodb.storage.js +172 -0
  362. package/lib/storage/mongodb.storage.js.map +1 -0
  363. package/lib/storage/sql.storage.d.ts +35 -0
  364. package/lib/storage/sql.storage.js +128 -0
  365. package/lib/storage/sql.storage.js.map +1 -0
  366. package/lib/types/access.token.input.type.d.ts +9 -0
  367. package/lib/types/access.token.input.type.js +3 -0
  368. package/lib/types/access.token.input.type.js.map +1 -0
  369. package/lib/types/app.session.upstream.options.type.d.ts +7 -0
  370. package/lib/types/app.session.upstream.options.type.js +3 -0
  371. package/lib/types/app.session.upstream.options.type.js.map +1 -0
  372. package/lib/types/authenticate.result.type.d.ts +10 -0
  373. package/lib/types/authenticate.result.type.js +3 -0
  374. package/lib/types/authenticate.result.type.js.map +1 -0
  375. package/lib/types/authenticated.user.type.d.ts +5 -0
  376. package/lib/types/authenticated.user.type.js +3 -0
  377. package/lib/types/authenticated.user.type.js.map +1 -0
  378. package/lib/types/authorization.code.record.type.d.ts +11 -0
  379. package/lib/types/authorization.code.record.type.js +3 -0
  380. package/lib/types/authorization.code.record.type.js.map +1 -0
  381. package/lib/types/cimd.options.type.d.ts +16 -0
  382. package/lib/types/cimd.options.type.js +3 -0
  383. package/lib/types/cimd.options.type.js.map +1 -0
  384. package/lib/types/client.metadata.type.d.ts +7 -0
  385. package/lib/types/client.metadata.type.js +3 -0
  386. package/lib/types/client.metadata.type.js.map +1 -0
  387. package/lib/types/client.record.type.d.ts +11 -0
  388. package/lib/types/client.record.type.js +3 -0
  389. package/lib/types/client.record.type.js.map +1 -0
  390. package/lib/types/consent.model.type.d.ts +15 -0
  391. package/lib/types/consent.model.type.js +3 -0
  392. package/lib/types/consent.model.type.js.map +1 -0
  393. package/lib/types/consent.record.type.d.ts +5 -0
  394. package/lib/types/consent.record.type.js +3 -0
  395. package/lib/types/consent.record.type.js.map +1 -0
  396. package/lib/types/http.request.type.d.ts +9 -0
  397. package/lib/types/http.request.type.js +3 -0
  398. package/lib/types/http.request.type.js.map +1 -0
  399. package/lib/types/http.response.type.d.ts +6 -0
  400. package/lib/types/http.response.type.js +3 -0
  401. package/lib/types/http.response.type.js.map +1 -0
  402. package/lib/types/i.metadata.cache.d.ts +6 -0
  403. package/lib/types/i.metadata.cache.js +3 -0
  404. package/lib/types/i.metadata.cache.js.map +1 -0
  405. package/lib/types/i.storage.d.ts +25 -0
  406. package/lib/types/i.storage.js +3 -0
  407. package/lib/types/i.storage.js.map +1 -0
  408. package/lib/types/i.upstream.d.ts +11 -0
  409. package/lib/types/i.upstream.js +3 -0
  410. package/lib/types/i.upstream.js.map +1 -0
  411. package/lib/types/key.pair.type.d.ts +5 -0
  412. package/lib/types/key.pair.type.js +3 -0
  413. package/lib/types/key.pair.type.js.map +1 -0
  414. package/lib/types/logger.type.d.ts +6 -0
  415. package/lib/types/logger.type.js +3 -0
  416. package/lib/types/logger.type.js.map +1 -0
  417. package/lib/types/mcp.auth.context.type.d.ts +29 -0
  418. package/lib/types/mcp.auth.context.type.js +3 -0
  419. package/lib/types/mcp.auth.context.type.js.map +1 -0
  420. package/lib/types/mcp.auth.options.type.d.ts +39 -0
  421. package/lib/types/mcp.auth.options.type.js +3 -0
  422. package/lib/types/mcp.auth.options.type.js.map +1 -0
  423. package/lib/types/mcp.auth.type.d.ts +14 -0
  424. package/lib/types/mcp.auth.type.js +3 -0
  425. package/lib/types/mcp.auth.type.js.map +1 -0
  426. package/lib/types/metadata.resolution.type.d.ts +9 -0
  427. package/lib/types/metadata.resolution.type.js +3 -0
  428. package/lib/types/metadata.resolution.type.js.map +1 -0
  429. package/lib/types/mongo.storage.options.type.d.ts +13 -0
  430. package/lib/types/mongo.storage.options.type.js +3 -0
  431. package/lib/types/mongo.storage.options.type.js.map +1 -0
  432. package/lib/types/oidc.upstream.options.type.d.ts +9 -0
  433. package/lib/types/oidc.upstream.options.type.js +3 -0
  434. package/lib/types/oidc.upstream.options.type.js.map +1 -0
  435. package/lib/types/pending.authorization.type.d.ts +14 -0
  436. package/lib/types/pending.authorization.type.js +3 -0
  437. package/lib/types/pending.authorization.type.js.map +1 -0
  438. package/lib/types/pending.filter.type.d.ts +5 -0
  439. package/lib/types/pending.filter.type.js +3 -0
  440. package/lib/types/pending.filter.type.js.map +1 -0
  441. package/lib/types/redirect.policy.type.d.ts +5 -0
  442. package/lib/types/redirect.policy.type.js +3 -0
  443. package/lib/types/redirect.policy.type.js.map +1 -0
  444. package/lib/types/refresh.token.record.type.d.ts +11 -0
  445. package/lib/types/refresh.token.record.type.js +3 -0
  446. package/lib/types/refresh.token.record.type.js.map +1 -0
  447. package/lib/types/resolved.client.type.d.ts +7 -0
  448. package/lib/types/resolved.client.type.js +3 -0
  449. package/lib/types/resolved.client.type.js.map +1 -0
  450. package/lib/types/route.name.type.d.ts +2 -0
  451. package/lib/types/route.name.type.js +3 -0
  452. package/lib/types/route.name.type.js.map +1 -0
  453. package/lib/types/route.type.d.ts +10 -0
  454. package/lib/types/route.type.js +3 -0
  455. package/lib/types/route.type.js.map +1 -0
  456. package/lib/types/sql.dialect.type.d.ts +2 -0
  457. package/lib/types/sql.dialect.type.js +3 -0
  458. package/lib/types/sql.dialect.type.js.map +1 -0
  459. package/lib/types/sql.executor.type.d.ts +4 -0
  460. package/lib/types/sql.executor.type.js +3 -0
  461. package/lib/types/sql.executor.type.js.map +1 -0
  462. package/lib/types/sql.storage.options.type.d.ts +4 -0
  463. package/lib/types/sql.storage.options.type.js +3 -0
  464. package/lib/types/sql.storage.options.type.js.map +1 -0
  465. package/lib/types/upstream.begin.type.d.ts +9 -0
  466. package/lib/types/upstream.begin.type.js +3 -0
  467. package/lib/types/upstream.begin.type.js.map +1 -0
  468. package/lib/types/upstream.context.type.d.ts +10 -0
  469. package/lib/types/upstream.context.type.js +3 -0
  470. package/lib/types/upstream.context.type.js.map +1 -0
  471. package/lib/types/verify.result.type.d.ts +6 -0
  472. package/lib/types/verify.result.type.js +3 -0
  473. package/lib/types/verify.result.type.js.map +1 -0
  474. package/package.json +107 -5
  475. package/sql/postgres.sql +61 -0
  476. package/sql/sqlite.sql +61 -0
@@ -0,0 +1,5 @@
1
+ import type AuthenticateResultType from '../../types/authenticate.result.type';
2
+ import type HttpRequestType from '../../types/http.request.type';
3
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
4
+ declare const authenticateRequest: <TUser>(context: McpAuthContextType<TUser>, headers: HttpRequestType["headers"], rpcBody?: unknown) => Promise<AuthenticateResultType<TUser>>;
5
+ export default authenticateRequest;
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const header_value_1 = __importDefault(require("../http/header.value"));
7
+ const text_value_1 = __importDefault(require("../http/text.value"));
8
+ const verify_access_token_1 = __importDefault(require("../jwt/verify.access.token"));
9
+ const challenge_response_1 = __importDefault(require("./challenge.response"));
10
+ const authenticateRequest = async (context, headers, rpcBody) => {
11
+ const bearer = /^Bearer (\S+)$/i.exec((0, header_value_1.default)(headers, 'authorization') ?? '')?.[1];
12
+ if (!bearer)
13
+ return (0, challenge_response_1.default)(context, rpcBody, false, 'missing_token');
14
+ const verified = await (0, verify_access_token_1.default)(await context.getKeys(), bearer, context.issuer, context.options.resource, context.now());
15
+ if ('reason' in verified)
16
+ return (0, challenge_response_1.default)(context, rpcBody, true, verified.reason);
17
+ const subject = (0, text_value_1.default)(verified.claims.sub);
18
+ const user = subject ? await context.options.loadActiveUser(subject) : null;
19
+ if (!user)
20
+ return (0, challenge_response_1.default)(context, rpcBody, true, 'user_inactive');
21
+ return { user, claims: verified.claims };
22
+ };
23
+ exports.default = authenticateRequest;
24
+ //# sourceMappingURL=authenticate.request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"authenticate.request.js","sourceRoot":"","sources":["../../../src/functions/server/authenticate.request.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAKb,wEAA+C;AAC/C,oEAA2C;AAC3C,qFAA2D;AAC3D,8EAAqD;AAErD,MAAM,mBAAmB,GAAG,KAAK,EAAS,OAAkC,EAAE,OAAmC,EAAE,OAAiB,EAA0C,EAAE;IAC/K,MAAM,MAAM,GAAuB,iBAAiB,CAAC,IAAI,CAAC,IAAA,sBAAW,EAAC,OAAO,EAAE,eAAe,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5G,IAAI,CAAC,MAAM;QAAE,OAAO,IAAA,4BAAiB,EAAC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,CAAC,CAAC;IAEhF,MAAM,QAAQ,GAAG,MAAM,IAAA,6BAAiB,EAAC,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IACnI,IAAI,QAAQ,IAAI,QAAQ;QAAE,OAAO,IAAA,4BAAiB,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAE5F,MAAM,OAAO,GAAuB,IAAA,oBAAS,EAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACnE,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,IAAI,CAAC,IAAI;QAAE,OAAO,IAAA,4BAAiB,EAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,eAAe,CAAC,CAAC;IAC7E,OAAO,EAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAC,CAAC;AACxC,CAAC,CAAC;AACF,kBAAe,mBAAmB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type HttpRequestType from '../../types/http.request.type';
2
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
3
+ import type PendingAuthorizationType from '../../types/pending.authorization.type';
4
+ declare const awaitingConsent: (context: McpAuthContextType<any>, request: HttpRequestType, state: unknown) => Promise<PendingAuthorizationType | null>;
5
+ export default awaitingConsent;
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const text_value_1 = __importDefault(require("../http/text.value"));
7
+ const awaitingConsent = async (context, request, state) => {
8
+ const stateId = (0, text_value_1.default)(state);
9
+ const pending = stateId ? await context.options.storage.getPendingAuthorization(stateId, context.now()) : null;
10
+ if (!pending?.userId)
11
+ return null;
12
+ const { upstream } = context.options;
13
+ if (upstream.verifyUser && !(await upstream.verifyUser(request, pending.userId)))
14
+ return null;
15
+ return pending;
16
+ };
17
+ exports.default = awaitingConsent;
18
+ //# sourceMappingURL=awaiting.consent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"awaiting.consent.js","sourceRoot":"","sources":["../../../src/functions/server/awaiting.consent.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAKb,oEAA2C;AAE3C,MAAM,eAAe,GAAG,KAAK,EAAE,OAAgC,EAAE,OAAwB,EAAE,KAAc,EAA4C,EAAE;IACtJ,MAAM,OAAO,GAAuB,IAAA,oBAAS,EAAC,KAAK,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC/G,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,OAAO,IAAI,CAAC;IAClC,MAAM,EAAC,QAAQ,EAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IACnC,IAAI,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC,MAAM,QAAQ,CAAC,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9F,OAAO,OAAO,CAAC;AAChB,CAAC,CAAC;AACF,kBAAe,eAAe,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
2
+ import type RouteType from '../../types/route.type';
3
+ declare const buildRoutes: (context: McpAuthContextType<any>) => RouteType[];
4
+ export default buildRoutes;
@@ -0,0 +1,40 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const trim_trailing_slashes_1 = __importDefault(require("../http/trim.trailing.slashes"));
7
+ const authorization_server_metadata_handler_1 = __importDefault(require("../../handlers/authorization.server.metadata.handler"));
8
+ const authorize_handler_1 = __importDefault(require("../../handlers/authorize.handler"));
9
+ const callback_handler_1 = __importDefault(require("../../handlers/callback.handler"));
10
+ const consent_decision_handler_1 = __importDefault(require("../../handlers/consent.decision.handler"));
11
+ const consent_page_handler_1 = __importDefault(require("../../handlers/consent.page.handler"));
12
+ const protected_resource_metadata_handler_1 = __importDefault(require("../../handlers/protected.resource.metadata.handler"));
13
+ const register_handler_1 = __importDefault(require("../../handlers/register.handler"));
14
+ const resume_handler_1 = __importDefault(require("../../handlers/resume.handler"));
15
+ const revoke_handler_1 = __importDefault(require("../../handlers/revoke.handler"));
16
+ const token_handler_1 = __importDefault(require("../../handlers/token.handler"));
17
+ const buildRoutes = (context) => {
18
+ const { basePath, callbackPath } = context;
19
+ const { upstream, resource } = context.options;
20
+ const resourcePath = (0, trim_trailing_slashes_1.default)(new URL(resource).pathname);
21
+ const withRequest = (handler) => (request) => handler(context, request);
22
+ const metadata = (path, handler) => ({ method: 'GET', path, name: 'metadata', handler });
23
+ const protectedResource = () => (0, protected_resource_metadata_handler_1.default)(context);
24
+ const authorizationServer = () => (0, authorization_server_metadata_handler_1.default)(context);
25
+ return [
26
+ metadata('/.well-known/oauth-protected-resource', protectedResource),
27
+ ...(resourcePath ? [metadata(`/.well-known/oauth-protected-resource${resourcePath}`, protectedResource)] : []),
28
+ ...['/.well-known/oauth-authorization-server', '/.well-known/openid-configuration'].flatMap((path) => [...new Set([path, `${path}${basePath}`, `${basePath}${path}`])].map((full) => metadata(full, authorizationServer))),
29
+ ...(context.registrationEnabled ? [{ method: 'POST', path: `${basePath}/register`, name: 'register', handler: withRequest(register_handler_1.default) }] : []),
30
+ { method: 'GET', path: `${basePath}/authorize`, name: 'authorize', handler: withRequest(authorize_handler_1.default) },
31
+ ...(upstream.callback ? [{ method: 'GET', path: `${basePath}${callbackPath}`, name: 'callback', handler: withRequest(callback_handler_1.default) }] : []),
32
+ ...(upstream.resume ? [{ method: 'GET', path: `${basePath}/oauth/resume`, name: 'resume', handler: withRequest(resume_handler_1.default) }] : []),
33
+ { method: 'GET', path: `${basePath}/oauth/consent`, name: 'consent', handler: withRequest(consent_page_handler_1.default) },
34
+ { method: 'POST', path: `${basePath}/oauth/consent`, name: 'consent', handler: withRequest(consent_decision_handler_1.default) },
35
+ { method: 'POST', path: `${basePath}/token`, name: 'token', handler: withRequest(token_handler_1.default) },
36
+ { method: 'POST', path: `${basePath}/revoke`, name: 'revoke', handler: withRequest(revoke_handler_1.default) }
37
+ ];
38
+ };
39
+ exports.default = buildRoutes;
40
+ //# sourceMappingURL=build.routes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.routes.js","sourceRoot":"","sources":["../../../src/functions/server/build.routes.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,0FAAgE;AAChE,iIAAsG;AACtG,yFAAgE;AAChE,uFAA8D;AAC9D,uGAA6E;AAC7E,+FAAqE;AACrE,6HAAkG;AAClG,uFAA8D;AAC9D,mFAA0D;AAC1D,mFAA0D;AAC1D,iFAAwD;AAKxD,MAAM,WAAW,GAAG,CAAC,OAAgC,EAAe,EAAE;IACrE,MAAM,EAAC,QAAQ,EAAE,YAAY,EAAC,GAAG,OAAO,CAAC;IACzC,MAAM,EAAC,QAAQ,EAAE,QAAQ,EAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAC7C,MAAM,YAAY,GAAW,IAAA,+BAAmB,EAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC;IAC7E,MAAM,WAAW,GAChB,CAAC,OAAyG,EAAwB,EAAE,CACpI,CAAC,OAAO,EAAE,EAAE,CACX,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC5B,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,OAA6B,EAAa,EAAE,CAAC,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAC,CAAC,CAAC;IAChI,MAAM,iBAAiB,GAAyB,GAAG,EAAE,CAAC,IAAA,6CAAgC,EAAC,OAAO,CAAC,CAAC;IAChG,MAAM,mBAAmB,GAAyB,GAAG,EAAE,CAAC,IAAA,+CAAkC,EAAC,OAAO,CAAC,CAAC;IAEpG,OAAO;QACN,QAAQ,CAAC,uCAAuC,EAAE,iBAAiB,CAAC;QACpE,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,wCAAwC,YAAY,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9G,GAAG,CAAC,yCAAyC,EAAE,mCAAmC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAY,EAAe,EAAE,CACzH,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,QAAQ,EAAE,EAAE,GAAG,QAAQ,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAY,EAAa,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC,CACtI;QACD,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,WAAW,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,0BAAe,CAAC,EAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9J,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,YAAY,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,2BAAgB,CAAC,EAAC;QACzG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,GAAG,YAAY,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC,0BAAe,CAAC,EAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzJ,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,eAAe,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,wBAAa,CAAC,EAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACjJ,EAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,QAAQ,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,8BAAkB,CAAC,EAAC;QAC7G,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC,kCAAsB,CAAC,EAAC;QAClH,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,uBAAY,CAAC,EAAC;QAC9F,EAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,wBAAa,CAAC,EAAC;KACjG,CAAC;AACH,CAAC,CAAC;AACF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type HttpRequestType from '../../types/http.request.type';
2
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
3
+ import type PendingAuthorizationType from '../../types/pending.authorization.type';
4
+ import type UpstreamContextType from '../../types/upstream.context.type';
5
+ declare const buildUpstreamContext: (context: McpAuthContextType<any>, request: HttpRequestType, pending: PendingAuthorizationType) => UpstreamContextType;
6
+ export default buildUpstreamContext;
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const buildUpstreamContext = (context, request, pending) => ({
4
+ request,
5
+ pending,
6
+ issuer: context.issuer,
7
+ callbackUrl: `${context.issuer}${context.callbackPath}`,
8
+ resumeUrl: `${context.issuer}/oauth/resume?state=${encodeURIComponent(pending.stateId)}`
9
+ });
10
+ exports.default = buildUpstreamContext;
11
+ //# sourceMappingURL=build.upstream.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"build.upstream.context.js","sourceRoot":"","sources":["../../../src/functions/server/build.upstream.context.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAOb,MAAM,oBAAoB,GAAG,CAAC,OAAgC,EAAE,OAAwB,EAAE,OAAiC,EAAuB,EAAE,CAAC,CAAC;IACrJ,OAAO;IACP,OAAO;IACP,MAAM,EAAE,OAAO,CAAC,MAAM;IACtB,WAAW,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE;IACvD,SAAS,EAAE,GAAG,OAAO,CAAC,MAAM,uBAAuB,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;CACxF,CAAC,CAAC;AACH,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type AuthenticateResultType from '../../types/authenticate.result.type';
2
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
3
+ declare const challengeResponse: (context: McpAuthContextType<any>, rpcBody: unknown, tokenSent: boolean, reason: string) => AuthenticateResultType<any>;
4
+ export default challengeResponse;
@@ -0,0 +1,14 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const challengeResponse = (context, rpcBody, tokenSent, reason) => {
4
+ const metadata = `resource_metadata="${context.resourceMetadataUrl}"`;
5
+ const id = rpcBody && 'object' === typeof rpcBody && !Array.isArray(rpcBody) ? (rpcBody.id ?? null) : null;
6
+ return {
7
+ status: 401,
8
+ reason,
9
+ headers: { 'www-authenticate': tokenSent ? `Bearer error="invalid_token", ${metadata}` : `Bearer ${metadata}`, 'content-type': 'application/json' },
10
+ body: { jsonrpc: '2.0', id, error: { code: -32000, message: 'Authentication Required' } }
11
+ };
12
+ };
13
+ exports.default = challengeResponse;
14
+ //# sourceMappingURL=challenge.response.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"challenge.response.js","sourceRoot":"","sources":["../../../src/functions/server/challenge.response.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAKb,MAAM,iBAAiB,GAAG,CAAC,OAAgC,EAAE,OAAgB,EAAE,SAAkB,EAAE,MAAc,EAA+B,EAAE;IACjJ,MAAM,QAAQ,GAAW,sBAAsB,OAAO,CAAC,mBAAmB,GAAG,CAAC;IAC9E,MAAM,EAAE,GAAY,OAAO,IAAI,QAAQ,KAAK,OAAO,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAE,OAA0B,CAAC,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxI,OAAO;QACN,MAAM,EAAE,GAAG;QACX,MAAM;QACN,OAAO,EAAE,EAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC,CAAC,iCAAiC,QAAQ,EAAE,CAAC,CAAC,CAAC,UAAU,QAAQ,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAC;QACjJ,IAAI,EAAE,EAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,EAAC,IAAI,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,yBAAyB,EAAC,EAAC;KACrF,CAAC;AACH,CAAC,CAAC;AACF,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type HttpResponseType from '../../types/http.response.type';
2
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
3
+ import type PendingAuthorizationType from '../../types/pending.authorization.type';
4
+ declare const continueWithUser: (context: McpAuthContextType<any>, pending: PendingAuthorizationType) => Promise<HttpResponseType>;
5
+ export default continueWithUser;
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const plain_error_response_1 = __importDefault(require("../http/plain.error.response"));
7
+ const redirect_response_1 = __importDefault(require("../http/redirect.response"));
8
+ const issue_authorization_code_1 = __importDefault(require("./issue.authorization.code"));
9
+ const continueWithUser = async (context, pending) => {
10
+ const { storage } = context.options;
11
+ if (!(await storage.hasConsent(pending.clientId, pending.userId))) {
12
+ return (0, redirect_response_1.default)(`${context.issuer}/oauth/consent?state=${encodeURIComponent(pending.stateId)}`);
13
+ }
14
+ const taken = await storage.takePendingAuthorization(pending.stateId, { now: context.now(), hasUser: true });
15
+ return taken ? (0, issue_authorization_code_1.default)(context, taken) : (0, plain_error_response_1.default)(400, 'Invalid or expired authorization request');
16
+ };
17
+ exports.default = continueWithUser;
18
+ //# sourceMappingURL=continue.with.user.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"continue.with.user.js","sourceRoot":"","sources":["../../../src/functions/server/continue.with.user.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAKb,wFAA8D;AAC9D,kFAAyD;AACzD,0FAAgE;AAEhE,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAAgC,EAAE,OAAiC,EAA6B,EAAE;IACjI,MAAM,EAAC,OAAO,EAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAClC,IAAI,CAAC,CAAC,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,MAAgB,CAAC,CAAC,EAAE,CAAC;QAC7E,OAAO,IAAA,2BAAgB,EAAC,GAAG,OAAO,CAAC,MAAM,wBAAwB,kBAAkB,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACzG,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;IAC3G,OAAO,KAAK,CAAC,CAAC,CAAC,IAAA,kCAAsB,EAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAA,8BAAkB,EAAC,GAAG,EAAE,0CAA0C,CAAC,CAAC;AAC7H,CAAC,CAAC;AACF,kBAAe,gBAAgB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type McpAuthOptionsType from '../../types/mcp.auth.options.type';
2
+ import type ResolvedClientType from '../../types/resolved.client.type';
3
+ declare const createClientResolver: (options: McpAuthOptionsType<any>, now: () => Date, cimdEnabled: boolean) => ((clientId: string) => Promise<ResolvedClientType | {
4
+ error: string;
5
+ }>);
6
+ export default createClientResolver;
@@ -0,0 +1,26 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const lru_metadata_cache_1 = __importDefault(require("../../cache/lru.metadata.cache"));
7
+ const create_metadata_resolver_1 = __importDefault(require("../cimd/create.metadata.resolver"));
8
+ const is_metadata_client_id_1 = __importDefault(require("../cimd/is.metadata.client.id"));
9
+ const createClientResolver = (options, now, cimdEnabled) => {
10
+ const cache = options.cimd?.cache ?? new lru_metadata_cache_1.default(500, () => now().getTime());
11
+ const resolveMetadata = (0, create_metadata_resolver_1.default)(options.cimd ?? {}, cache);
12
+ return async (clientId) => {
13
+ if (cimdEnabled && (0, is_metadata_client_id_1.default)(clientId)) {
14
+ const resolution = await resolveMetadata(clientId);
15
+ if (!resolution.ok) {
16
+ options.logger?.info?.('MCP client metadata rejected', { clientId, reason: resolution.reason });
17
+ return { error: 'client metadata document is invalid or unreachable' };
18
+ }
19
+ return { clientId, clientName: resolution.metadata.client_name.slice(0, 200), redirectUris: resolution.metadata.redirect_uris, metadataDocument: true };
20
+ }
21
+ const client = await options.storage.getClient(clientId);
22
+ return client ? { clientId, clientName: client.clientName, redirectUris: client.redirectUris, metadataDocument: false } : { error: 'unknown client_id' };
23
+ };
24
+ };
25
+ exports.default = createClientResolver;
26
+ //# sourceMappingURL=create.client.resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.client.resolver.js","sourceRoot":"","sources":["../../../src/functions/server/create.client.resolver.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,wFAA8D;AAG9D,gGAAsE;AACtE,0FAA+D;AAE/D,MAAM,oBAAoB,GAAG,CAAC,OAAgC,EAAE,GAAe,EAAE,WAAoB,EAAyE,EAAE;IAC/K,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,IAAI,IAAI,4BAAgB,CAAC,GAAG,EAAE,GAAW,EAAE,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9F,MAAM,eAAe,GAAG,IAAA,kCAAsB,EAAC,OAAO,CAAC,IAAI,IAAI,EAAE,EAAE,KAAK,CAAC,CAAC;IAE1E,OAAO,KAAK,EAAE,QAAgB,EAAiD,EAAE;QAChF,IAAI,WAAW,IAAI,IAAA,+BAAkB,EAAC,QAAQ,CAAC,EAAE,CAAC;YACjD,MAAM,UAAU,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC;gBACpB,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,8BAA8B,EAAE,EAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAC,CAAC,CAAC;gBAC9F,OAAO,EAAC,KAAK,EAAE,oDAAoD,EAAC,CAAC;YACtE,CAAC;YACD,OAAO,EAAC,QAAQ,EAAE,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,EAAE,IAAI,EAAC,CAAC;QACvJ,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzD,OAAO,MAAM,CAAC,CAAC,CAAC,EAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,gBAAgB,EAAE,KAAK,EAAC,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,mBAAmB,EAAC,CAAC;IACtJ,CAAC,CAAC;AACH,CAAC,CAAC;AACF,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
2
+ import type McpAuthOptionsType from '../../types/mcp.auth.options.type';
3
+ declare const createMcpAuthContext: <TUser>(options: McpAuthOptionsType<TUser>) => McpAuthContextType<TUser>;
4
+ export default createMcpAuthContext;
@@ -0,0 +1,38 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const trim_trailing_slashes_1 = __importDefault(require("../http/trim.trailing.slashes"));
7
+ const render_default_consent_1 = __importDefault(require("../consent/render.default.consent"));
8
+ const resolve_key_pair_1 = __importDefault(require("../keys/resolve.key.pair"));
9
+ const create_client_resolver_1 = __importDefault(require("./create.client.resolver"));
10
+ const createMcpAuthContext = (options) => {
11
+ const issuer = (0, trim_trailing_slashes_1.default)(options.issuer);
12
+ const now = options.now ?? (() => new Date());
13
+ const cimdEnabled = options.cimd?.enabled ?? true;
14
+ let keys;
15
+ return {
16
+ options,
17
+ issuer,
18
+ basePath: (0, trim_trailing_slashes_1.default)(new URL(issuer).pathname),
19
+ callbackPath: options.callbackPath ?? '/oauth/callback',
20
+ productName: options.productName ?? 'MCP server',
21
+ redirectPolicy: { httpsHosts: options.redirects?.httpsHosts ?? [], customSchemes: options.redirects?.customSchemes ?? [] },
22
+ ttl: {
23
+ accessToken: options.ttl?.accessToken ?? 3600,
24
+ refreshToken: options.ttl?.refreshToken ?? 2592000,
25
+ pending: options.ttl?.pending ?? 600,
26
+ code: options.ttl?.code ?? 60
27
+ },
28
+ now,
29
+ registrationEnabled: options.registration?.enabled ?? true,
30
+ cimdEnabled,
31
+ renderConsent: options.renderConsent ?? render_default_consent_1.default,
32
+ resourceMetadataUrl: `${issuer}/.well-known/oauth-protected-resource`,
33
+ getKeys: () => (keys ??= (0, resolve_key_pair_1.default)(options.signingKey, options.verificationKey)),
34
+ resolveClient: (0, create_client_resolver_1.default)(options, now, cimdEnabled)
35
+ };
36
+ };
37
+ exports.default = createMcpAuthContext;
38
+ //# sourceMappingURL=create.mcp.auth.context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.mcp.auth.context.js","sourceRoot":"","sources":["../../../src/functions/server/create.mcp.auth.context.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAEb,0FAAgE;AAGhE,+FAAqE;AACrE,gFAAsD;AACtD,sFAA4D;AAE5D,MAAM,oBAAoB,GAAG,CAAQ,OAAkC,EAA6B,EAAE;IACrG,MAAM,MAAM,GAAW,IAAA,+BAAmB,EAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,GAAG,GAAe,OAAO,CAAC,GAAG,IAAI,CAAC,GAAS,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;IAChE,MAAM,WAAW,GAAY,OAAO,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,CAAC;IAC3D,IAAI,IAAmD,CAAC;IAExD,OAAO;QACN,OAAO;QACP,MAAM;QACN,QAAQ,EAAE,IAAA,+BAAmB,EAAC,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC;QACvD,YAAY,EAAE,OAAO,CAAC,YAAY,IAAI,iBAAiB;QACvD,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,YAAY;QAChD,cAAc,EAAE,EAAC,UAAU,EAAE,OAAO,CAAC,SAAS,EAAE,UAAU,IAAI,EAAE,EAAE,aAAa,EAAE,OAAO,CAAC,SAAS,EAAE,aAAa,IAAI,EAAE,EAAC;QACxH,GAAG,EAAE;YACJ,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE,WAAW,IAAI,IAAI;YAC7C,YAAY,EAAE,OAAO,CAAC,GAAG,EAAE,YAAY,IAAI,OAAO;YAClD,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,IAAI,GAAG;YACpC,IAAI,EAAE,OAAO,CAAC,GAAG,EAAE,IAAI,IAAI,EAAE;SAC7B;QACD,GAAG;QACH,mBAAmB,EAAE,OAAO,CAAC,YAAY,EAAE,OAAO,IAAI,IAAI;QAC1D,WAAW;QACX,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,gCAAoB;QAC5D,mBAAmB,EAAE,GAAG,MAAM,uCAAuC;QACrE,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC,IAAI,KAAK,IAAA,0BAAc,EAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,eAAe,CAAC,CAAC;QACrF,aAAa,EAAE,IAAA,gCAAoB,EAAC,OAAO,EAAE,GAAG,EAAE,WAAW,CAAC;KAC9D,CAAC;AACH,CAAC,CAAC;AACF,kBAAe,oBAAoB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type McpAuthOptionsType from '../../types/mcp.auth.options.type';
2
+ import type McpAuthType from '../../types/mcp.auth.type';
3
+ declare const createMcpAuth: <TUser = unknown>(options: McpAuthOptionsType<TUser>) => McpAuthType<TUser>;
4
+ export default createMcpAuth;
@@ -0,0 +1,25 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const authenticate_request_1 = __importDefault(require("./authenticate.request"));
7
+ const build_routes_1 = __importDefault(require("./build.routes"));
8
+ const create_mcp_auth_context_1 = __importDefault(require("./create.mcp.auth.context"));
9
+ const find_route_1 = __importDefault(require("./find.route"));
10
+ const handle_request_1 = __importDefault(require("./handle.request"));
11
+ const createMcpAuth = (options) => {
12
+ const context = (0, create_mcp_auth_context_1.default)(options);
13
+ const routes = (0, build_routes_1.default)(context);
14
+ return {
15
+ issuer: context.issuer,
16
+ resource: options.resource,
17
+ routes,
18
+ hasRoute: (request) => !!(0, find_route_1.default)(routes, request),
19
+ handle: (request) => (0, handle_request_1.default)(context, routes, request),
20
+ authenticate: (headers, rpcBody) => (0, authenticate_request_1.default)(context, headers, rpcBody),
21
+ deleteExpired: () => options.storage.deleteExpired(context.now())
22
+ };
23
+ };
24
+ exports.default = createMcpAuth;
25
+ //# sourceMappingURL=create.mcp.auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.mcp.auth.js","sourceRoot":"","sources":["../../../src/functions/server/create.mcp.auth.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAKb,kFAAyD;AACzD,kEAAyC;AACzC,wFAA6D;AAC7D,8DAAqC;AACrC,sEAA6C;AAE7C,MAAM,aAAa,GAAG,CAAkB,OAAkC,EAAsB,EAAE;IACjG,MAAM,OAAO,GAAG,IAAA,iCAAoB,EAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,IAAA,sBAAW,EAAC,OAAO,CAAC,CAAC;IAEpC,OAAO;QACN,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM;QACN,QAAQ,EAAE,CAAC,OAAwB,EAAW,EAAE,CAAC,CAAC,CAAC,IAAA,oBAAS,EAAC,MAAM,EAAE,OAAO,CAAC;QAC7E,MAAM,EAAE,CAAC,OAAwB,EAAE,EAAE,CAAC,IAAA,wBAAa,EAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC;QAC7E,YAAY,EAAE,CAAC,OAAmC,EAAE,OAAiB,EAAE,EAAE,CAAC,IAAA,8BAAmB,EAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC;QACxH,aAAa,EAAE,GAAkB,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;KAChF,CAAC;AACH,CAAC,CAAC;AACF,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type HttpResponseType from '../../types/http.response.type';
2
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
3
+ import type PendingAuthorizationType from '../../types/pending.authorization.type';
4
+ declare const denyAuthorization: (context: McpAuthContextType<any>, pending: PendingAuthorizationType, description?: string) => Promise<HttpResponseType>;
5
+ export default denyAuthorization;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const redirect_response_1 = __importDefault(require("../http/redirect.response"));
7
+ const build_error_redirect_1 = __importDefault(require("../redirect/build.error.redirect"));
8
+ const denyAuthorization = async (context, pending, description = 'sign-in failed') => {
9
+ await context.options.storage.deletePendingAuthorization(pending.stateId);
10
+ return (0, redirect_response_1.default)((0, build_error_redirect_1.default)(pending.redirectUri, context.issuer, 'access_denied', description, pending.clientState));
11
+ };
12
+ exports.default = denyAuthorization;
13
+ //# sourceMappingURL=deny.authorization.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deny.authorization.js","sourceRoot":"","sources":["../../../src/functions/server/deny.authorization.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAKb,kFAAyD;AACzD,4FAAkE;AAElE,MAAM,iBAAiB,GAAG,KAAK,EAAE,OAAgC,EAAE,OAAiC,EAAE,cAAsB,gBAAgB,EAA6B,EAAE;IAC1K,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,OAAO,IAAA,2BAAgB,EAAC,IAAA,8BAAkB,EAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC;AACrI,CAAC,CAAC;AACF,kBAAe,iBAAiB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type HttpResponseType from '../../types/http.response.type';
2
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
3
+ declare const exchangeAuthorizationCode: (context: McpAuthContextType<any>, params: Record<string, unknown>) => Promise<HttpResponseType>;
4
+ export default exchangeAuthorizationCode;
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const random_id_1 = __importDefault(require("../crypto/random.id"));
7
+ const sha256_base64_url_1 = __importDefault(require("../crypto/sha256.base64.url"));
8
+ const sha256_hex_1 = __importDefault(require("../crypto/sha256.hex"));
9
+ const text_value_1 = __importDefault(require("../http/text.value"));
10
+ const issue_tokens_1 = __importDefault(require("./issue.tokens"));
11
+ const token_failure_1 = __importDefault(require("./token.failure"));
12
+ const codeVerifierPattern = /^[A-Za-z0-9\-._~]{43,128}$/;
13
+ const exchangeAuthorizationCode = async (context, params) => {
14
+ const [code, clientId, redirectUri, codeVerifier, resource] = ['code', 'client_id', 'redirect_uri', 'code_verifier', 'resource'].map((name) => (0, text_value_1.default)(params[name]));
15
+ if (!code || !clientId || !redirectUri || !codeVerifier)
16
+ return (0, token_failure_1.default)('invalid_request', 'code, client_id, redirect_uri and code_verifier are required');
17
+ if (!codeVerifierPattern.test(codeVerifier))
18
+ return (0, token_failure_1.default)('invalid_grant', 'code_verifier is malformed');
19
+ const claimedAt = context.now();
20
+ const stored = await context.options.storage.claimAuthorizationCode(await (0, sha256_hex_1.default)(code), claimedAt);
21
+ if (!stored)
22
+ return (0, token_failure_1.default)('invalid_grant', 'authorization code is invalid, expired or already used');
23
+ if (stored.clientId !== clientId ||
24
+ stored.redirectUri !== redirectUri ||
25
+ stored.codeChallenge !== (await (0, sha256_base64_url_1.default)(codeVerifier)) ||
26
+ (resource && stored.resource !== resource)) {
27
+ return (0, token_failure_1.default)('invalid_grant', 'authorization code does not match the request');
28
+ }
29
+ return (0, issue_tokens_1.default)(context, clientId, stored.userId, (0, random_id_1.default)(), new Date(claimedAt.getTime() + context.ttl.refreshToken * 1000));
30
+ };
31
+ exports.default = exchangeAuthorizationCode;
32
+ //# sourceMappingURL=exchange.authorization.code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exchange.authorization.code.js","sourceRoot":"","sources":["../../../src/functions/server/exchange.authorization.code.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAIb,oEAA2C;AAC3C,oFAA0D;AAC1D,sEAA6C;AAC7C,oEAA2C;AAC3C,kEAAyC;AACzC,oEAA2C;AAE3C,MAAM,mBAAmB,GAAW,4BAA4B,CAAC;AAEjE,MAAM,yBAAyB,GAAG,KAAK,EAAE,OAAgC,EAAE,MAA+B,EAA6B,EAAE;IACxI,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,IAAY,EAAsB,EAAE,CACzK,IAAA,oBAAS,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CACvB,CAAC;IACF,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,IAAI,CAAC,YAAY;QAAE,OAAO,IAAA,uBAAY,EAAC,iBAAiB,EAAE,8DAA8D,CAAC,CAAC;IAChK,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;QAAE,OAAO,IAAA,uBAAY,EAAC,eAAe,EAAE,4BAA4B,CAAC,CAAC;IAEhH,MAAM,SAAS,GAAS,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,sBAAsB,CAAC,MAAM,IAAA,oBAAS,EAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;IACtG,IAAI,CAAC,MAAM;QAAE,OAAO,IAAA,uBAAY,EAAC,eAAe,EAAE,wDAAwD,CAAC,CAAC;IAE5G,IACC,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAC5B,MAAM,CAAC,WAAW,KAAK,WAAW;QAClC,MAAM,CAAC,aAAa,KAAK,CAAC,MAAM,IAAA,2BAAe,EAAC,YAAY,CAAC,CAAC;QAC9D,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,EACzC,CAAC;QACF,OAAO,IAAA,uBAAY,EAAC,eAAe,EAAE,+CAA+C,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,IAAA,sBAAW,EAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,IAAA,mBAAQ,GAAE,EAAE,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC;AACnI,CAAC,CAAC;AACF,kBAAe,yBAAyB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type HttpRequestType from '../../types/http.request.type';
2
+ import type RouteType from '../../types/route.type';
3
+ declare const findRoute: (routes: RouteType[], request: HttpRequestType) => RouteType | undefined;
4
+ export default findRoute;
@@ -0,0 +1,5 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const findRoute = (routes, request) => routes.find((route) => route.method === request.method.toUpperCase() && route.path === request.path);
4
+ exports.default = findRoute;
5
+ //# sourceMappingURL=find.route.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"find.route.js","sourceRoot":"","sources":["../../../src/functions/server/find.route.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAKb,MAAM,SAAS,GAAG,CAAC,MAAmB,EAAE,OAAwB,EAAyB,EAAE,CAC1F,MAAM,CAAC,IAAI,CAAC,CAAC,KAAgB,EAAW,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAC1H,kBAAe,SAAS,CAAC"}
@@ -0,0 +1,6 @@
1
+ import type HttpRequestType from '../../types/http.request.type';
2
+ import type HttpResponseType from '../../types/http.response.type';
3
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
4
+ import type RouteType from '../../types/route.type';
5
+ declare const handleRequest: (context: McpAuthContextType<any>, routes: RouteType[], request: HttpRequestType) => Promise<HttpResponseType>;
6
+ export default handleRequest;
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const json_response_1 = __importDefault(require("../http/json.response"));
7
+ const oauth_error_response_1 = __importDefault(require("../http/oauth.error.response"));
8
+ const find_route_1 = __importDefault(require("./find.route"));
9
+ const limited = ['register', 'token', 'revoke'];
10
+ const handleRequest = async (context, routes, request) => {
11
+ const route = (0, find_route_1.default)(routes, request);
12
+ if (!route)
13
+ return (0, json_response_1.default)(404, { error: 'not_found' });
14
+ const { rateLimit } = context.options;
15
+ if (rateLimit && limited.includes(route.name) && !(await rateLimit(request.ip ?? 'unknown', route.name))) {
16
+ return (0, oauth_error_response_1.default)(429, 'rate_limited', 'too many requests', { 'retry-after': '60' });
17
+ }
18
+ return route.handler(request);
19
+ };
20
+ exports.default = handleRequest;
21
+ //# sourceMappingURL=handle.request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handle.request.js","sourceRoot":"","sources":["../../../src/functions/server/handle.request.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAOb,0EAAiD;AACjD,wFAA8D;AAC9D,8DAAqC;AAErC,MAAM,OAAO,GAAoB,CAAC,UAAU,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;AAEjE,MAAM,aAAa,GAAG,KAAK,EAAE,OAAgC,EAAE,MAAmB,EAAE,OAAwB,EAA6B,EAAE;IAC1I,MAAM,KAAK,GAA0B,IAAA,oBAAS,EAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAA,uBAAY,EAAC,GAAG,EAAE,EAAC,KAAK,EAAE,WAAW,EAAC,CAAC,CAAC;IAC3D,MAAM,EAAC,SAAS,EAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IACpC,IAAI,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,SAAS,CAAC,OAAO,CAAC,EAAE,IAAI,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;QAC1G,OAAO,IAAA,8BAAkB,EAAC,GAAG,EAAE,cAAc,EAAE,mBAAmB,EAAE,EAAC,aAAa,EAAE,IAAI,EAAC,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAC/B,CAAC,CAAC;AACF,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type HttpRequestType from '../../types/http.request.type';
2
+ declare const hasCredentials: (request: HttpRequestType, params: Record<string, unknown>) => boolean;
3
+ export default hasCredentials;
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const header_value_1 = __importDefault(require("../http/header.value"));
7
+ const hasCredentials = (request, params) => undefined !== params.client_secret || !!(0, header_value_1.default)(request.headers, 'authorization');
8
+ exports.default = hasCredentials;
9
+ //# sourceMappingURL=has.credentials.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has.credentials.js","sourceRoot":"","sources":["../../../src/functions/server/has.credentials.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAGb,wEAA+C;AAE/C,MAAM,cAAc,GAAG,CAAC,OAAwB,EAAE,MAA+B,EAAW,EAAE,CAC7F,SAAS,KAAK,MAAM,CAAC,aAAa,IAAI,CAAC,CAAC,IAAA,sBAAW,EAAC,OAAO,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AACvF,kBAAe,cAAc,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type HttpResponseType from '../../types/http.response.type';
2
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
3
+ import type PendingAuthorizationType from '../../types/pending.authorization.type';
4
+ declare const issueAuthorizationCode: (context: McpAuthContextType<any>, pending: PendingAuthorizationType) => Promise<HttpResponseType>;
5
+ export default issueAuthorizationCode;
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const random_token_1 = __importDefault(require("../crypto/random.token"));
7
+ const sha256_hex_1 = __importDefault(require("../crypto/sha256.hex"));
8
+ const build_redirect_1 = __importDefault(require("../redirect/build.redirect"));
9
+ const redirect_response_1 = __importDefault(require("../http/redirect.response"));
10
+ const issueAuthorizationCode = async (context, pending) => {
11
+ const code = (0, random_token_1.default)(32);
12
+ await context.options.storage.saveAuthorizationCode({
13
+ codeHash: await (0, sha256_hex_1.default)(code),
14
+ clientId: pending.clientId,
15
+ redirectUri: pending.redirectUri,
16
+ codeChallenge: pending.codeChallenge,
17
+ resource: pending.resource,
18
+ userId: pending.userId,
19
+ expiresAt: new Date(context.now().getTime() + context.ttl.code * 1000)
20
+ });
21
+ return (0, redirect_response_1.default)((0, build_redirect_1.default)(pending.redirectUri, context.issuer, { code, state: pending.clientState }));
22
+ };
23
+ exports.default = issueAuthorizationCode;
24
+ //# sourceMappingURL=issue.authorization.code.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue.authorization.code.js","sourceRoot":"","sources":["../../../src/functions/server/issue.authorization.code.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAKb,0EAAiD;AACjD,sEAA6C;AAC7C,gFAAuD;AACvD,kFAAyD;AAEzD,MAAM,sBAAsB,GAAG,KAAK,EAAE,OAAgC,EAAE,OAAiC,EAA6B,EAAE;IACvI,MAAM,IAAI,GAAW,IAAA,sBAAW,EAAC,EAAE,CAAC,CAAC;IACrC,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,qBAAqB,CAAC;QACnD,QAAQ,EAAE,MAAM,IAAA,oBAAS,EAAC,IAAI,CAAC;QAC/B,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAgB;QAChC,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;KACtE,CAAC,CAAC;IACH,OAAO,IAAA,2BAAgB,EAAC,IAAA,wBAAa,EAAC,OAAO,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,WAAW,EAAC,CAAC,CAAC,CAAC;AACjH,CAAC,CAAC;AACF,kBAAe,sBAAsB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type HttpResponseType from '../../types/http.response.type';
2
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
3
+ declare const issueTokens: (context: McpAuthContextType<any>, clientId: string, userId: string, familyId: string, expiresAt: Date, parentHash?: string) => Promise<HttpResponseType>;
4
+ export default issueTokens;
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const random_token_1 = __importDefault(require("../crypto/random.token"));
7
+ const sha256_hex_1 = __importDefault(require("../crypto/sha256.hex"));
8
+ const json_response_1 = __importDefault(require("../http/json.response"));
9
+ const sign_access_token_1 = __importDefault(require("../jwt/sign.access.token"));
10
+ const token_failure_1 = __importDefault(require("./token.failure"));
11
+ const issueTokens = async (context, clientId, userId, familyId, expiresAt, parentHash) => {
12
+ const { storage, resource } = context.options;
13
+ const refreshToken = (0, random_token_1.default)(32);
14
+ await storage.saveRefreshToken({ tokenHash: await (0, sha256_hex_1.default)(refreshToken), familyId, clientId, userId, resource, expiresAt });
15
+ if (parentHash && (await storage.findRefreshToken(parentHash))?.revokedAt) {
16
+ await storage.revokeRefreshTokenFamily(familyId, context.now());
17
+ return (0, token_failure_1.default)('invalid_grant', 'refresh token was revoked during rotation');
18
+ }
19
+ const accessToken = await (0, sign_access_token_1.default)(await context.getKeys(), {
20
+ issuer: context.issuer,
21
+ resource,
22
+ userId,
23
+ clientId,
24
+ ttlSeconds: context.ttl.accessToken,
25
+ now: context.now()
26
+ });
27
+ return (0, json_response_1.default)(200, { access_token: accessToken, token_type: 'Bearer', expires_in: context.ttl.accessToken, refresh_token: refreshToken }, { 'cache-control': 'no-store', pragma: 'no-cache' });
28
+ };
29
+ exports.default = issueTokens;
30
+ //# sourceMappingURL=issue.tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue.tokens.js","sourceRoot":"","sources":["../../../src/functions/server/issue.tokens.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAIb,0EAAiD;AACjD,sEAA6C;AAC7C,0EAAiD;AACjD,iFAAuD;AACvD,oEAA2C;AAE3C,MAAM,WAAW,GAAG,KAAK,EACxB,OAAgC,EAChC,QAAgB,EAChB,MAAc,EACd,QAAgB,EAChB,SAAe,EACf,UAAmB,EACS,EAAE;IAC9B,MAAM,EAAC,OAAO,EAAE,QAAQ,EAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAC5C,MAAM,YAAY,GAAW,IAAA,sBAAW,EAAC,EAAE,CAAC,CAAC;IAC7C,MAAM,OAAO,CAAC,gBAAgB,CAAC,EAAC,SAAS,EAAE,MAAM,IAAA,oBAAS,EAAC,YAAY,CAAC,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAC,CAAC,CAAC;IAC5H,IAAI,UAAU,IAAI,CAAC,MAAM,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QAC3E,MAAM,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAChE,OAAO,IAAA,uBAAY,EAAC,eAAe,EAAE,2CAA2C,CAAC,CAAC;IACnF,CAAC;IACD,MAAM,WAAW,GAAW,MAAM,IAAA,2BAAe,EAAC,MAAM,OAAO,CAAC,OAAO,EAAE,EAAE;QAC1E,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ;QACR,MAAM;QACN,QAAQ;QACR,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW;QACnC,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;KAClB,CAAC,CAAC;IACH,OAAO,IAAA,uBAAY,EAClB,GAAG,EACH,EAAC,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,aAAa,EAAE,YAAY,EAAC,EACnH,EAAC,eAAe,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAC,CACjD,CAAC;AACH,CAAC,CAAC;AACF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type HttpRequestType from '../../types/http.request.type';
2
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
3
+ import type PendingAuthorizationType from '../../types/pending.authorization.type';
4
+ declare const loadPending: (context: McpAuthContextType<any>, request: HttpRequestType) => Promise<PendingAuthorizationType | null>;
5
+ export default loadPending;
@@ -0,0 +1,13 @@
1
+ 'use strict';
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const query_param_1 = __importDefault(require("../http/query.param"));
7
+ const loadPending = async (context, request) => {
8
+ const state = (0, query_param_1.default)(request, 'state');
9
+ const pending = state ? await context.options.storage.getPendingAuthorization(state, context.now()) : null;
10
+ return pending && !pending.userId ? pending : null;
11
+ };
12
+ exports.default = loadPending;
13
+ //# sourceMappingURL=load.pending.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"load.pending.js","sourceRoot":"","sources":["../../../src/functions/server/load.pending.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;AAKb,sEAA6C;AAE7C,MAAM,WAAW,GAAG,KAAK,EAAE,OAAgC,EAAE,OAAwB,EAA4C,EAAE;IAClI,MAAM,KAAK,GAAuB,IAAA,qBAAU,EAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAC/D,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC3G,OAAO,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;AACpD,CAAC,CAAC;AACF,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type HttpResponseType from '../../types/http.response.type';
2
+ import type McpAuthContextType from '../../types/mcp.auth.context.type';
3
+ declare const rotateRefreshToken: (context: McpAuthContextType<any>, params: Record<string, unknown>) => Promise<HttpResponseType>;
4
+ export default rotateRefreshToken;