mcp-auth-server 0.0.0-stage → 0.1.1

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 @@
1
+ {"version":3,"file":"mcp.auth.koa.js","sourceRoot":"","sources":["../src/mcp.auth.koa.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAEb,mFAA0D;AAElD,wBAFD,wBAAa,CAEC;AACrB,MAAM,UAAU,GAAG,EAAE,CAAC;AACtB,kBAAe,UAAU,CAAC"}
@@ -0,0 +1,4 @@
1
+ import MemoryStorage from './storage/memory.storage';
2
+ export { MemoryStorage };
3
+ declare const McpAuthMemory: {};
4
+ export default McpAuthMemory;
@@ -0,0 +1,11 @@
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
+ exports.MemoryStorage = void 0;
7
+ const memory_storage_1 = __importDefault(require("./storage/memory.storage"));
8
+ exports.MemoryStorage = memory_storage_1.default;
9
+ const McpAuthMemory = {};
10
+ exports.default = McpAuthMemory;
11
+ //# sourceMappingURL=mcp.auth.memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.auth.memory.js","sourceRoot":"","sources":["../src/mcp.auth.memory.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAEb,8EAAqD;AAE7C,wBAFD,wBAAa,CAEC;AACrB,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,6 @@
1
+ import MongoStorage from './storage/mongodb.storage';
2
+ import type MongoStorageOptionsType from './types/mongo.storage.options.type';
3
+ export { MongoStorage };
4
+ export type { MongoStorageOptionsType };
5
+ declare const McpAuthMongodb: {};
6
+ export default McpAuthMongodb;
@@ -0,0 +1,11 @@
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
+ exports.MongoStorage = void 0;
7
+ const mongodb_storage_1 = __importDefault(require("./storage/mongodb.storage"));
8
+ exports.MongoStorage = mongodb_storage_1.default;
9
+ const McpAuthMongodb = {};
10
+ exports.default = McpAuthMongodb;
11
+ //# sourceMappingURL=mcp.auth.mongodb.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.auth.mongodb.js","sourceRoot":"","sources":["../src/mcp.auth.mongodb.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAEb,gFAAqD;AAI7C,uBAJD,yBAAY,CAIC;AAEpB,MAAM,cAAc,GAAG,EAAE,CAAC;AAC1B,kBAAe,cAAc,CAAC"}
@@ -0,0 +1,9 @@
1
+ import createNodeHandler from './adapters/node/create.node.handler';
2
+ import nodeSsrfGuard from './adapters/node/node.ssrf.guard';
3
+ import parseNodeBody from './adapters/node/parse.node.body';
4
+ import readNodeBody from './adapters/node/read.node.body';
5
+ import toNodeHttpRequest from './adapters/node/to.node.http.request';
6
+ import writeNodeResponse from './adapters/node/write.node.response';
7
+ export { createNodeHandler, nodeSsrfGuard, parseNodeBody, readNodeBody, toNodeHttpRequest, writeNodeResponse };
8
+ declare const McpAuthNode: {};
9
+ export default McpAuthNode;
@@ -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
+ exports.writeNodeResponse = exports.toNodeHttpRequest = exports.readNodeBody = exports.parseNodeBody = exports.nodeSsrfGuard = exports.createNodeHandler = void 0;
7
+ const create_node_handler_1 = __importDefault(require("./adapters/node/create.node.handler"));
8
+ exports.createNodeHandler = create_node_handler_1.default;
9
+ const node_ssrf_guard_1 = __importDefault(require("./adapters/node/node.ssrf.guard"));
10
+ exports.nodeSsrfGuard = node_ssrf_guard_1.default;
11
+ const parse_node_body_1 = __importDefault(require("./adapters/node/parse.node.body"));
12
+ exports.parseNodeBody = parse_node_body_1.default;
13
+ const read_node_body_1 = __importDefault(require("./adapters/node/read.node.body"));
14
+ exports.readNodeBody = read_node_body_1.default;
15
+ const to_node_http_request_1 = __importDefault(require("./adapters/node/to.node.http.request"));
16
+ exports.toNodeHttpRequest = to_node_http_request_1.default;
17
+ const write_node_response_1 = __importDefault(require("./adapters/node/write.node.response"));
18
+ exports.writeNodeResponse = write_node_response_1.default;
19
+ const McpAuthNode = {};
20
+ exports.default = McpAuthNode;
21
+ //# sourceMappingURL=mcp.auth.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.auth.node.js","sourceRoot":"","sources":["../src/mcp.auth.node.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAEb,8FAAoE;AAO5D,4BAPD,6BAAiB,CAOC;AANzB,sFAA4D;AAMjC,wBANpB,yBAAa,CAMoB;AALxC,sFAA4D;AAKlB,wBALnC,yBAAa,CAKmC;AAJvD,oFAA0D;AAID,uBAJlD,wBAAY,CAIkD;AAHrE,gGAAqE;AAGE,4BAHhE,8BAAiB,CAGgE;AAFxF,8FAAoE;AAEsB,4BAFnF,6BAAiB,CAEmF;AAC3G,MAAM,WAAW,GAAG,EAAE,CAAC;AACvB,kBAAe,WAAW,CAAC"}
@@ -0,0 +1,11 @@
1
+ import fromPg from './functions/sql/from.pg';
2
+ import fromPostgresJs from './functions/sql/from.postgres.js';
3
+ import SqlStorage from './storage/sql.storage';
4
+ import type SqlExecutorType from './types/sql.executor.type';
5
+ import type SqlStorageOptionsType from './types/sql.storage.options.type';
6
+ declare const postgresStorage: (executor: SqlExecutorType, options?: SqlStorageOptionsType) => SqlStorage;
7
+ declare const postgresSchema: (tablePrefix?: string) => string[];
8
+ export { postgresStorage, postgresSchema, fromPg, fromPostgresJs, SqlStorage };
9
+ export type { SqlExecutorType, SqlStorageOptionsType };
10
+ declare const McpAuthPostgres: {};
11
+ export default McpAuthPostgres;
@@ -0,0 +1,20 @@
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
+ exports.SqlStorage = exports.fromPostgresJs = exports.fromPg = exports.postgresSchema = exports.postgresStorage = void 0;
7
+ const from_pg_1 = __importDefault(require("./functions/sql/from.pg"));
8
+ exports.fromPg = from_pg_1.default;
9
+ const from_postgres_js_1 = __importDefault(require("./functions/sql/from.postgres.js"));
10
+ exports.fromPostgresJs = from_postgres_js_1.default;
11
+ const sql_schema_1 = __importDefault(require("./functions/sql/sql.schema"));
12
+ const sql_storage_1 = __importDefault(require("./storage/sql.storage"));
13
+ exports.SqlStorage = sql_storage_1.default;
14
+ const postgresStorage = (executor, options) => new sql_storage_1.default(executor, 'postgres', options);
15
+ exports.postgresStorage = postgresStorage;
16
+ const postgresSchema = (tablePrefix) => (0, sql_schema_1.default)('postgres', tablePrefix);
17
+ exports.postgresSchema = postgresSchema;
18
+ const McpAuthPostgres = {};
19
+ exports.default = McpAuthPostgres;
20
+ //# sourceMappingURL=mcp.auth.postgres.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.auth.postgres.js","sourceRoot":"","sources":["../src/mcp.auth.postgres.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAEb,sEAA6C;AAWJ,iBAXlC,iBAAM,CAWkC;AAV/C,wFAA8D;AAUb,yBAV1C,0BAAc,CAU0C;AAT/D,4EAAmD;AACnD,wEAA+C;AAQkB,qBAR1D,qBAAU,CAQ0D;AAH3E,MAAM,eAAe,GAAG,CAAC,QAAyB,EAAE,OAA+B,EAAc,EAAE,CAAC,IAAI,qBAAU,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AAG1I,0CAAe;AAFvB,MAAM,cAAc,GAAG,CAAC,WAAoB,EAAY,EAAE,CAAC,IAAA,oBAAS,EAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AAErE,wCAAc;AAEvC,MAAM,eAAe,GAAG,EAAE,CAAC;AAC3B,kBAAe,eAAe,CAAC"}
@@ -0,0 +1,42 @@
1
+ import createMcpAuth from './functions/server/create.mcp.auth';
2
+ import oidcUpstream from './functions/upstream/oidc.upstream';
3
+ import appSessionUpstream from './functions/upstream/app.session.upstream';
4
+ import LruMetadataCache from './cache/lru.metadata.cache';
5
+ import assertPublicHost from './functions/cimd/assert.public.host';
6
+ import isMetadataClientId from './functions/cimd/is.metadata.client.id';
7
+ import renderDefaultConsent from './functions/consent/render.default.consent';
8
+ import escapeHtml from './functions/consent/escape.html';
9
+ import normalizePem from './functions/keys/normalize.pem';
10
+ import signingKeyFromEnv from './functions/keys/signing.key.from.env';
11
+ import parseBody from './functions/body/parse.body';
12
+ import parseQuery from './functions/body/parse.query';
13
+ import sha256Hex from './functions/crypto/sha256.hex';
14
+ import type AppSessionUpstreamOptionsType from './types/app.session.upstream.options.type';
15
+ import type AuthenticatedUserType from './types/authenticated.user.type';
16
+ import type AuthenticateResultType from './types/authenticate.result.type';
17
+ import type AuthorizationCodeRecordType from './types/authorization.code.record.type';
18
+ import type CimdOptionsType from './types/cimd.options.type';
19
+ import type ClientMetadataType from './types/client.metadata.type';
20
+ import type ClientRecordType from './types/client.record.type';
21
+ import type ConsentModelType from './types/consent.model.type';
22
+ import type ConsentRecordType from './types/consent.record.type';
23
+ import type HttpRequestType from './types/http.request.type';
24
+ import type HttpResponseType from './types/http.response.type';
25
+ import type IMetadataCache from './types/i.metadata.cache';
26
+ import type IStorage from './types/i.storage';
27
+ import type IUpstream from './types/i.upstream';
28
+ import type LoggerType from './types/logger.type';
29
+ import type McpAuthOptionsType from './types/mcp.auth.options.type';
30
+ import type McpAuthType from './types/mcp.auth.type';
31
+ import type OidcUpstreamOptionsType from './types/oidc.upstream.options.type';
32
+ import type PendingAuthorizationType from './types/pending.authorization.type';
33
+ import type PendingFilterType from './types/pending.filter.type';
34
+ import type RefreshTokenRecordType from './types/refresh.token.record.type';
35
+ import type RouteNameType from './types/route.name.type';
36
+ import type RouteType from './types/route.type';
37
+ import type UpstreamBeginType from './types/upstream.begin.type';
38
+ import type UpstreamContextType from './types/upstream.context.type';
39
+ export { createMcpAuth, oidcUpstream, appSessionUpstream, LruMetadataCache, assertPublicHost, isMetadataClientId, renderDefaultConsent, escapeHtml, normalizePem, signingKeyFromEnv, parseBody, parseQuery, sha256Hex };
40
+ export type { AppSessionUpstreamOptionsType, AuthenticatedUserType, AuthenticateResultType, AuthorizationCodeRecordType, CimdOptionsType, ClientMetadataType, ClientRecordType, ConsentModelType, ConsentRecordType, HttpRequestType, HttpResponseType, IMetadataCache, IStorage, IUpstream, LoggerType, McpAuthOptionsType, McpAuthType, OidcUpstreamOptionsType, PendingAuthorizationType, PendingFilterType, RefreshTokenRecordType, RouteNameType, RouteType, UpstreamBeginType, UpstreamContextType };
41
+ declare const McpAuthServer: {};
42
+ export default McpAuthServer;
@@ -0,0 +1,35 @@
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
+ exports.sha256Hex = exports.parseQuery = exports.parseBody = exports.signingKeyFromEnv = exports.normalizePem = exports.escapeHtml = exports.renderDefaultConsent = exports.isMetadataClientId = exports.assertPublicHost = exports.LruMetadataCache = exports.appSessionUpstream = exports.oidcUpstream = exports.createMcpAuth = void 0;
7
+ const create_mcp_auth_1 = __importDefault(require("./functions/server/create.mcp.auth"));
8
+ exports.createMcpAuth = create_mcp_auth_1.default;
9
+ const oidc_upstream_1 = __importDefault(require("./functions/upstream/oidc.upstream"));
10
+ exports.oidcUpstream = oidc_upstream_1.default;
11
+ const app_session_upstream_1 = __importDefault(require("./functions/upstream/app.session.upstream"));
12
+ exports.appSessionUpstream = app_session_upstream_1.default;
13
+ const lru_metadata_cache_1 = __importDefault(require("./cache/lru.metadata.cache"));
14
+ exports.LruMetadataCache = lru_metadata_cache_1.default;
15
+ const assert_public_host_1 = __importDefault(require("./functions/cimd/assert.public.host"));
16
+ exports.assertPublicHost = assert_public_host_1.default;
17
+ const is_metadata_client_id_1 = __importDefault(require("./functions/cimd/is.metadata.client.id"));
18
+ exports.isMetadataClientId = is_metadata_client_id_1.default;
19
+ const render_default_consent_1 = __importDefault(require("./functions/consent/render.default.consent"));
20
+ exports.renderDefaultConsent = render_default_consent_1.default;
21
+ const escape_html_1 = __importDefault(require("./functions/consent/escape.html"));
22
+ exports.escapeHtml = escape_html_1.default;
23
+ const normalize_pem_1 = __importDefault(require("./functions/keys/normalize.pem"));
24
+ exports.normalizePem = normalize_pem_1.default;
25
+ const signing_key_from_env_1 = __importDefault(require("./functions/keys/signing.key.from.env"));
26
+ exports.signingKeyFromEnv = signing_key_from_env_1.default;
27
+ const parse_body_1 = __importDefault(require("./functions/body/parse.body"));
28
+ exports.parseBody = parse_body_1.default;
29
+ const parse_query_1 = __importDefault(require("./functions/body/parse.query"));
30
+ exports.parseQuery = parse_query_1.default;
31
+ const sha256_hex_1 = __importDefault(require("./functions/crypto/sha256.hex"));
32
+ exports.sha256Hex = sha256_hex_1.default;
33
+ const McpAuthServer = {};
34
+ exports.default = McpAuthServer;
35
+ //# sourceMappingURL=mcp.auth.server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.auth.server.js","sourceRoot":"","sources":["../src/mcp.auth.server.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAEb,yFAA+D;AAyC9D,wBAzCM,yBAAa,CAyCN;AAxCd,uFAA8D;AAyC7D,uBAzCM,uBAAY,CAyCN;AAxCb,qGAA2E;AAyC1E,6BAzCM,8BAAkB,CAyCN;AAxCnB,oFAA0D;AAyCzD,2BAzCM,4BAAgB,CAyCN;AAxCjB,6FAAmE;AAyClE,2BAzCM,4BAAgB,CAyCN;AAxCjB,mGAAwE;AAyCvE,6BAzCM,+BAAkB,CAyCN;AAxCnB,wGAA8E;AAyC7E,+BAzCM,gCAAoB,CAyCN;AAxCrB,kFAAyD;AAyCxD,qBAzCM,qBAAU,CAyCN;AAxCX,mFAA0D;AAyCzD,uBAzCM,uBAAY,CAyCN;AAxCb,iGAAsE;AAyCrE,4BAzCM,8BAAiB,CAyCN;AAxClB,6EAAoD;AAyCnD,oBAzCM,oBAAS,CAyCN;AAxCV,+EAAsD;AAyCrD,qBAzCM,qBAAU,CAyCN;AAxCX,+EAAsD;AAyCrD,oBAzCM,oBAAS,CAyCN;AA6BV,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,13 @@
1
+ import fromBetterSqlite3 from './functions/sql/from.better.sqlite3';
2
+ import fromBunSqlite from './functions/sql/from.bun.sqlite';
3
+ import fromD1 from './functions/sql/from.d1';
4
+ import fromNodeSqlite from './functions/sql/from.node.sqlite';
5
+ import SqlStorage from './storage/sql.storage';
6
+ import type SqlExecutorType from './types/sql.executor.type';
7
+ import type SqlStorageOptionsType from './types/sql.storage.options.type';
8
+ declare const sqliteStorage: (executor: SqlExecutorType, options?: SqlStorageOptionsType) => SqlStorage;
9
+ declare const sqliteSchema: (tablePrefix?: string) => string[];
10
+ export { sqliteStorage, sqliteSchema, fromBetterSqlite3, fromNodeSqlite, fromBunSqlite, fromD1, SqlStorage };
11
+ export type { SqlExecutorType, SqlStorageOptionsType };
12
+ declare const McpAuthSqlite: {};
13
+ export default McpAuthSqlite;
@@ -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
+ exports.SqlStorage = exports.fromD1 = exports.fromBunSqlite = exports.fromNodeSqlite = exports.fromBetterSqlite3 = exports.sqliteSchema = exports.sqliteStorage = void 0;
7
+ const from_better_sqlite3_1 = __importDefault(require("./functions/sql/from.better.sqlite3"));
8
+ exports.fromBetterSqlite3 = from_better_sqlite3_1.default;
9
+ const from_bun_sqlite_1 = __importDefault(require("./functions/sql/from.bun.sqlite"));
10
+ exports.fromBunSqlite = from_bun_sqlite_1.default;
11
+ const from_d1_1 = __importDefault(require("./functions/sql/from.d1"));
12
+ exports.fromD1 = from_d1_1.default;
13
+ const from_node_sqlite_1 = __importDefault(require("./functions/sql/from.node.sqlite"));
14
+ exports.fromNodeSqlite = from_node_sqlite_1.default;
15
+ const sql_schema_1 = __importDefault(require("./functions/sql/sql.schema"));
16
+ const sql_storage_1 = __importDefault(require("./storage/sql.storage"));
17
+ exports.SqlStorage = sql_storage_1.default;
18
+ const sqliteStorage = (executor, options) => new sql_storage_1.default(executor, 'sqlite', options);
19
+ exports.sqliteStorage = sqliteStorage;
20
+ const sqliteSchema = (tablePrefix) => (0, sql_schema_1.default)('sqlite', tablePrefix);
21
+ exports.sqliteSchema = sqliteSchema;
22
+ const McpAuthSqlite = {};
23
+ exports.default = McpAuthSqlite;
24
+ //# sourceMappingURL=mcp.auth.sqlite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.auth.sqlite.js","sourceRoot":"","sources":["../src/mcp.auth.sqlite.ts"],"names":[],"mappings":"AAAA,YAAY,CAAC;;;;;;AAEb,8FAAoE;AAa/B,4BAb9B,6BAAiB,CAa8B;AAZtD,sFAA4D;AAYY,wBAZjE,yBAAa,CAYiE;AAXrF,sEAA6C;AAW0C,iBAXhF,iBAAM,CAWgF;AAV7F,wFAA8D;AAUN,yBAVjD,0BAAc,CAUiD;AATtE,4EAAmD;AACnD,wEAA+C;AAQgD,qBARxF,qBAAU,CAQwF;AAHzG,MAAM,aAAa,GAAG,CAAC,QAAyB,EAAE,OAA+B,EAAc,EAAE,CAAC,IAAI,qBAAU,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;AAGtI,sCAAa;AAFrB,MAAM,YAAY,GAAG,CAAC,WAAoB,EAAY,EAAE,CAAC,IAAA,oBAAS,EAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AAEnE,oCAAY;AAEnC,MAAM,aAAa,GAAG,EAAE,CAAC;AACzB,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type AuthorizationCodeRecordType from '../types/authorization.code.record.type';
2
+ import type ClientRecordType from '../types/client.record.type';
3
+ import type ConsentRecordType from '../types/consent.record.type';
4
+ import type IStorage from '../types/i.storage';
5
+ import type PendingAuthorizationType from '../types/pending.authorization.type';
6
+ import type PendingFilterType from '../types/pending.filter.type';
7
+ import type RefreshTokenRecordType from '../types/refresh.token.record.type';
8
+ export default class MemoryStorage implements IStorage {
9
+ private clients;
10
+ private pending;
11
+ private codes;
12
+ private refreshTokens;
13
+ private consents;
14
+ getClient(clientId: string): Promise<ClientRecordType | null>;
15
+ saveClient(client: ClientRecordType): Promise<void>;
16
+ savePendingAuthorization(pending: PendingAuthorizationType): Promise<void>;
17
+ getPendingAuthorization(stateId: string, now: Date): Promise<PendingAuthorizationType | null>;
18
+ attachUserToPendingAuthorization(stateId: string, userId: string, now: Date, displayName?: string): Promise<PendingAuthorizationType | null>;
19
+ takePendingAuthorization(stateId: string, filter: PendingFilterType): Promise<PendingAuthorizationType | null>;
20
+ deletePendingAuthorization(stateId: string): Promise<void>;
21
+ saveAuthorizationCode(code: AuthorizationCodeRecordType): Promise<void>;
22
+ claimAuthorizationCode(codeHash: string, now: Date): Promise<AuthorizationCodeRecordType | null>;
23
+ saveRefreshToken(token: RefreshTokenRecordType): Promise<void>;
24
+ findRefreshToken(tokenHash: string): Promise<RefreshTokenRecordType | null>;
25
+ claimRefreshToken(tokenHash: string, now: Date): Promise<RefreshTokenRecordType | null>;
26
+ revokeRefreshTokenFamily(familyId: string, now: Date): Promise<void>;
27
+ hasConsent(clientId: string, userId: string): Promise<boolean>;
28
+ upsertConsent(consent: ConsentRecordType): Promise<void>;
29
+ deleteExpired(now: Date): Promise<void>;
30
+ }
@@ -0,0 +1,91 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class MemoryStorage {
4
+ clients = new Map();
5
+ pending = new Map();
6
+ codes = new Map();
7
+ refreshTokens = new Map();
8
+ consents = new Set();
9
+ async getClient(clientId) {
10
+ const client = this.clients.get(clientId);
11
+ return client ? { ...client } : null;
12
+ }
13
+ async saveClient(client) {
14
+ this.clients.set(client.clientId, { ...client });
15
+ }
16
+ async savePendingAuthorization(pending) {
17
+ this.pending.set(pending.stateId, { ...pending });
18
+ }
19
+ async getPendingAuthorization(stateId, now) {
20
+ const found = this.pending.get(stateId);
21
+ return found && found.expiresAt > now ? { ...found } : null;
22
+ }
23
+ async attachUserToPendingAuthorization(stateId, userId, now, displayName) {
24
+ const found = this.pending.get(stateId);
25
+ if (!found || found.expiresAt <= now || found.userId)
26
+ return null;
27
+ found.userId = userId;
28
+ found.userDisplayName = displayName;
29
+ return { ...found };
30
+ }
31
+ async takePendingAuthorization(stateId, filter) {
32
+ const found = this.pending.get(stateId);
33
+ if (!found || found.expiresAt <= filter.now)
34
+ return null;
35
+ if (undefined !== filter.hasUser && filter.hasUser !== !!found.userId)
36
+ return null;
37
+ this.pending.delete(stateId);
38
+ return { ...found };
39
+ }
40
+ async deletePendingAuthorization(stateId) {
41
+ this.pending.delete(stateId);
42
+ }
43
+ async saveAuthorizationCode(code) {
44
+ this.codes.set(code.codeHash, { ...code });
45
+ }
46
+ async claimAuthorizationCode(codeHash, now) {
47
+ const found = this.codes.get(codeHash);
48
+ if (!found || found.usedAt || found.expiresAt <= now)
49
+ return null;
50
+ found.usedAt = now;
51
+ return { ...found };
52
+ }
53
+ async saveRefreshToken(token) {
54
+ this.refreshTokens.set(token.tokenHash, { ...token });
55
+ }
56
+ async findRefreshToken(tokenHash) {
57
+ const found = this.refreshTokens.get(tokenHash);
58
+ return found ? { ...found } : null;
59
+ }
60
+ async claimRefreshToken(tokenHash, now) {
61
+ const found = this.refreshTokens.get(tokenHash);
62
+ if (!found || found.usedAt || found.revokedAt || found.expiresAt <= now)
63
+ return null;
64
+ found.usedAt = now;
65
+ return { ...found };
66
+ }
67
+ async revokeRefreshTokenFamily(familyId, now) {
68
+ for (const token of this.refreshTokens.values())
69
+ if (token.familyId === familyId && !token.revokedAt)
70
+ token.revokedAt = now;
71
+ }
72
+ async hasConsent(clientId, userId) {
73
+ return this.consents.has(JSON.stringify([clientId, userId]));
74
+ }
75
+ async upsertConsent(consent) {
76
+ this.consents.add(JSON.stringify([consent.clientId, consent.userId]));
77
+ }
78
+ async deleteExpired(now) {
79
+ for (const [key, value] of this.pending)
80
+ if (value.expiresAt <= now)
81
+ this.pending.delete(key);
82
+ for (const [key, value] of this.codes)
83
+ if (value.expiresAt <= now)
84
+ this.codes.delete(key);
85
+ for (const [key, value] of this.refreshTokens)
86
+ if (value.expiresAt <= now)
87
+ this.refreshTokens.delete(key);
88
+ }
89
+ }
90
+ exports.default = MemoryStorage;
91
+ //# sourceMappingURL=memory.storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory.storage.js","sourceRoot":"","sources":["../../src/storage/memory.storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { Db } from 'mongodb';
2
+ import type AuthorizationCodeRecordType from '../types/authorization.code.record.type';
3
+ import type ClientRecordType from '../types/client.record.type';
4
+ import type ConsentRecordType from '../types/consent.record.type';
5
+ import type IStorage from '../types/i.storage';
6
+ import type MongoStorageOptionsType from '../types/mongo.storage.options.type';
7
+ import type PendingAuthorizationType from '../types/pending.authorization.type';
8
+ import type PendingFilterType from '../types/pending.filter.type';
9
+ import type RefreshTokenRecordType from '../types/refresh.token.record.type';
10
+ export default class MongoStorage implements IStorage {
11
+ private readonly clients;
12
+ private readonly pending;
13
+ private readonly codes;
14
+ private readonly refreshTokens;
15
+ private readonly consents;
16
+ private readonly userIdField;
17
+ private readonly userIdToDb;
18
+ private readonly userIdFromDb;
19
+ constructor(db: Db, options?: MongoStorageOptionsType);
20
+ ensureIndexes(): Promise<void>;
21
+ private toClient;
22
+ private toPending;
23
+ private toCode;
24
+ private toRefreshToken;
25
+ getClient(clientId: string): Promise<ClientRecordType | null>;
26
+ saveClient(client: ClientRecordType): Promise<void>;
27
+ savePendingAuthorization(pending: PendingAuthorizationType): Promise<void>;
28
+ getPendingAuthorization(stateId: string, now: Date): Promise<PendingAuthorizationType | null>;
29
+ attachUserToPendingAuthorization(stateId: string, userId: string, now: Date, displayName?: string): Promise<PendingAuthorizationType | null>;
30
+ takePendingAuthorization(stateId: string, filter: PendingFilterType): Promise<PendingAuthorizationType | null>;
31
+ deletePendingAuthorization(stateId: string): Promise<void>;
32
+ saveAuthorizationCode(code: AuthorizationCodeRecordType): Promise<void>;
33
+ claimAuthorizationCode(codeHash: string, now: Date): Promise<AuthorizationCodeRecordType | null>;
34
+ saveRefreshToken(token: RefreshTokenRecordType): Promise<void>;
35
+ findRefreshToken(tokenHash: string): Promise<RefreshTokenRecordType | null>;
36
+ claimRefreshToken(tokenHash: string, now: Date): Promise<RefreshTokenRecordType | null>;
37
+ revokeRefreshTokenFamily(familyId: string, now: Date): Promise<void>;
38
+ hasConsent(clientId: string, userId: string): Promise<boolean>;
39
+ upsertConsent(consent: ConsentRecordType): Promise<void>;
40
+ deleteExpired(now: Date): Promise<void>;
41
+ }
@@ -0,0 +1,172 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ class MongoStorage {
4
+ clients;
5
+ pending;
6
+ codes;
7
+ refreshTokens;
8
+ consents;
9
+ userIdField;
10
+ userIdToDb;
11
+ userIdFromDb;
12
+ constructor(db, options = {}) {
13
+ this.clients = db.collection(options.collections?.clients ?? 'mcp_oauth_clients');
14
+ this.pending = db.collection(options.collections?.pendingAuthorizations ?? 'mcp_oauth_pending_authorizations');
15
+ this.codes = db.collection(options.collections?.authorizationCodes ?? 'mcp_oauth_authorization_codes');
16
+ this.refreshTokens = db.collection(options.collections?.refreshTokens ?? 'mcp_oauth_refresh_tokens');
17
+ this.consents = db.collection(options.collections?.consents ?? 'mcp_oauth_consents');
18
+ this.userIdField = options.userIdField ?? 'userId';
19
+ this.userIdToDb = options.userIdToDb ?? ((userId) => userId);
20
+ this.userIdFromDb = options.userIdFromDb ?? ((value) => String(value));
21
+ }
22
+ async ensureIndexes() {
23
+ await this.clients.createIndex({ clientId: 1 }, { unique: true });
24
+ await this.pending.createIndex({ stateId: 1 }, { unique: true });
25
+ await this.pending.createIndex({ expiresAt: 1 }, { expireAfterSeconds: 0 });
26
+ await this.codes.createIndex({ codeHash: 1 }, { unique: true });
27
+ await this.codes.createIndex({ expiresAt: 1 }, { expireAfterSeconds: 0 });
28
+ await this.refreshTokens.createIndex({ tokenHash: 1 }, { unique: true });
29
+ await this.refreshTokens.createIndex({ familyId: 1 });
30
+ await this.refreshTokens.createIndex({ expiresAt: 1 }, { expireAfterSeconds: 0 });
31
+ await this.consents.createIndex({ clientId: 1, [this.userIdField]: 1 }, { unique: true });
32
+ }
33
+ toClient(doc) {
34
+ return {
35
+ clientId: doc.clientId,
36
+ clientName: doc.clientName ?? undefined,
37
+ redirectUris: doc.redirectUris,
38
+ applicationType: doc.applicationType ?? undefined,
39
+ tokenEndpointAuthMethod: 'none',
40
+ grantTypes: doc.grantTypes,
41
+ responseTypes: doc.responseTypes,
42
+ createdAt: doc.createdAt
43
+ };
44
+ }
45
+ toPending(doc) {
46
+ const userId = doc[this.userIdField];
47
+ return {
48
+ stateId: doc.stateId,
49
+ clientId: doc.clientId,
50
+ clientName: doc.clientName ?? undefined,
51
+ redirectUri: doc.redirectUri,
52
+ codeChallenge: doc.codeChallenge,
53
+ resource: doc.resource,
54
+ clientState: doc.clientState ?? undefined,
55
+ upstreamCodeVerifier: doc.upstreamCodeVerifier ?? undefined,
56
+ userId: undefined === userId || null === userId ? undefined : this.userIdFromDb(userId),
57
+ userDisplayName: doc.userDisplayName ?? undefined,
58
+ expiresAt: doc.expiresAt
59
+ };
60
+ }
61
+ toCode(doc) {
62
+ return {
63
+ codeHash: doc.codeHash,
64
+ clientId: doc.clientId,
65
+ redirectUri: doc.redirectUri,
66
+ codeChallenge: doc.codeChallenge,
67
+ resource: doc.resource,
68
+ userId: this.userIdFromDb(doc[this.userIdField]),
69
+ usedAt: doc.usedAt ?? undefined,
70
+ expiresAt: doc.expiresAt
71
+ };
72
+ }
73
+ toRefreshToken(doc) {
74
+ return {
75
+ tokenHash: doc.tokenHash,
76
+ familyId: doc.familyId,
77
+ clientId: doc.clientId,
78
+ userId: this.userIdFromDb(doc[this.userIdField]),
79
+ resource: doc.resource,
80
+ usedAt: doc.usedAt ?? undefined,
81
+ revokedAt: doc.revokedAt ?? undefined,
82
+ expiresAt: doc.expiresAt
83
+ };
84
+ }
85
+ async getClient(clientId) {
86
+ const doc = await this.clients.findOne({ clientId });
87
+ return doc ? this.toClient(doc) : null;
88
+ }
89
+ async saveClient(client) {
90
+ await this.clients.insertOne({
91
+ clientId: client.clientId,
92
+ clientName: client.clientName,
93
+ redirectUris: client.redirectUris,
94
+ applicationType: client.applicationType,
95
+ tokenEndpointAuthMethod: client.tokenEndpointAuthMethod,
96
+ grantTypes: client.grantTypes,
97
+ responseTypes: client.responseTypes,
98
+ createdAt: client.createdAt,
99
+ updatedAt: client.createdAt
100
+ });
101
+ }
102
+ async savePendingAuthorization(pending) {
103
+ const { userId, ...rest } = pending;
104
+ await this.pending.insertOne({
105
+ ...rest,
106
+ codeChallengeMethod: 'S256',
107
+ ...(undefined === userId ? {} : { [this.userIdField]: this.userIdToDb(userId) }),
108
+ createdAt: new Date(),
109
+ updatedAt: new Date()
110
+ });
111
+ }
112
+ async getPendingAuthorization(stateId, now) {
113
+ const doc = await this.pending.findOne({ stateId, expiresAt: { $gt: now } });
114
+ return doc ? this.toPending(doc) : null;
115
+ }
116
+ async attachUserToPendingAuthorization(stateId, userId, now, displayName) {
117
+ const doc = await this.pending.findOneAndUpdate({ stateId, expiresAt: { $gt: now }, [this.userIdField]: { $exists: false } }, { $set: { [this.userIdField]: this.userIdToDb(userId), userDisplayName: displayName, updatedAt: now } }, { returnDocument: 'after' });
118
+ return doc ? this.toPending(doc) : null;
119
+ }
120
+ async takePendingAuthorization(stateId, filter) {
121
+ const query = { stateId, expiresAt: { $gt: filter.now } };
122
+ if (undefined !== filter.hasUser)
123
+ query[this.userIdField] = { $exists: filter.hasUser };
124
+ const doc = await this.pending.findOneAndDelete(query);
125
+ return doc ? this.toPending(doc) : null;
126
+ }
127
+ async deletePendingAuthorization(stateId) {
128
+ await this.pending.deleteOne({ stateId });
129
+ }
130
+ async saveAuthorizationCode(code) {
131
+ const { userId, ...rest } = code;
132
+ await this.codes.insertOne({ ...rest, [this.userIdField]: this.userIdToDb(userId), createdAt: new Date(), updatedAt: new Date() });
133
+ }
134
+ async claimAuthorizationCode(codeHash, now) {
135
+ const doc = await this.codes.findOneAndUpdate({ codeHash, usedAt: { $exists: false }, expiresAt: { $gt: now } }, { $set: { usedAt: now, updatedAt: now } }, { returnDocument: 'after' });
136
+ return doc ? this.toCode(doc) : null;
137
+ }
138
+ async saveRefreshToken(token) {
139
+ const { userId, ...rest } = token;
140
+ await this.refreshTokens.insertOne({ ...rest, [this.userIdField]: this.userIdToDb(userId), createdAt: new Date(), updatedAt: new Date() });
141
+ }
142
+ async findRefreshToken(tokenHash) {
143
+ const doc = await this.refreshTokens.findOne({ tokenHash });
144
+ return doc ? this.toRefreshToken(doc) : null;
145
+ }
146
+ async claimRefreshToken(tokenHash, now) {
147
+ const doc = await this.refreshTokens.findOneAndUpdate({ tokenHash, usedAt: { $exists: false }, revokedAt: { $exists: false }, expiresAt: { $gt: now } }, { $set: { usedAt: now, updatedAt: now } }, { returnDocument: 'after' });
148
+ return doc ? this.toRefreshToken(doc) : null;
149
+ }
150
+ async revokeRefreshTokenFamily(familyId, now) {
151
+ await this.refreshTokens.updateMany({ familyId, revokedAt: { $exists: false } }, { $set: { revokedAt: now, updatedAt: now } });
152
+ }
153
+ async hasConsent(clientId, userId) {
154
+ return !!(await this.consents.findOne({ clientId, [this.userIdField]: this.userIdToDb(userId) }, { projection: { _id: 1 } }));
155
+ }
156
+ async upsertConsent(consent) {
157
+ const filter = { clientId: consent.clientId, [this.userIdField]: this.userIdToDb(consent.userId) };
158
+ try {
159
+ await this.consents.updateOne(filter, { $setOnInsert: { ...filter, createdAt: new Date(), updatedAt: new Date() } }, { upsert: true });
160
+ }
161
+ catch (error) {
162
+ if (11000 !== error.code)
163
+ throw error;
164
+ }
165
+ }
166
+ async deleteExpired(now) {
167
+ for (const collection of [this.pending, this.codes, this.refreshTokens])
168
+ await collection.deleteMany({ expiresAt: { $lte: now } });
169
+ }
170
+ }
171
+ exports.default = MongoStorage;
172
+ //# sourceMappingURL=mongodb.storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mongodb.storage.js","sourceRoot":"","sources":["../../src/storage/mongodb.storage.ts"],"names":[],"mappings":"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"}