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.
- package/README.md +207 -2
- package/bin/keygen.mjs +26 -0
- package/lib/adapters/express/express.middleware.d.ts +4 -0
- package/lib/adapters/express/express.middleware.js +23 -0
- package/lib/adapters/express/express.middleware.js.map +1 -0
- package/lib/adapters/fastify/fastify.plugin.d.ts +4 -0
- package/lib/adapters/fastify/fastify.plugin.js +32 -0
- package/lib/adapters/fastify/fastify.plugin.js.map +1 -0
- package/lib/adapters/fetch/create.fetch.handler.d.ts +3 -0
- package/lib/adapters/fetch/create.fetch.handler.js +13 -0
- package/lib/adapters/fetch/create.fetch.handler.js.map +1 -0
- package/lib/adapters/fetch/to.http.request.d.ts +3 -0
- package/lib/adapters/fetch/to.http.request.js +22 -0
- package/lib/adapters/fetch/to.http.request.js.map +1 -0
- package/lib/adapters/fetch/to.response.d.ts +3 -0
- package/lib/adapters/fetch/to.response.js +10 -0
- package/lib/adapters/fetch/to.response.js.map +1 -0
- package/lib/adapters/koa/koa.middleware.d.ts +4 -0
- package/lib/adapters/koa/koa.middleware.js +19 -0
- package/lib/adapters/koa/koa.middleware.js.map +1 -0
- package/lib/adapters/node/create.node.handler.d.ts +4 -0
- package/lib/adapters/node/create.node.handler.js +16 -0
- package/lib/adapters/node/create.node.handler.js.map +1 -0
- package/lib/adapters/node/node.ssrf.guard.d.ts +2 -0
- package/lib/adapters/node/node.ssrf.guard.js +16 -0
- package/lib/adapters/node/node.ssrf.guard.js.map +1 -0
- package/lib/adapters/node/parse.node.body.d.ts +3 -0
- package/lib/adapters/node/parse.node.body.js +16 -0
- package/lib/adapters/node/parse.node.body.js.map +1 -0
- package/lib/adapters/node/read.node.body.d.ts +3 -0
- package/lib/adapters/node/read.node.body.js +10 -0
- package/lib/adapters/node/read.node.body.js.map +1 -0
- package/lib/adapters/node/to.node.http.request.d.ts +4 -0
- package/lib/adapters/node/to.node.http.request.js +20 -0
- package/lib/adapters/node/to.node.http.request.js.map +1 -0
- package/lib/adapters/node/write.node.response.d.ts +4 -0
- package/lib/adapters/node/write.node.response.js +10 -0
- package/lib/adapters/node/write.node.response.js.map +1 -0
- package/lib/cache/lru.metadata.cache.d.ts +10 -0
- package/lib/cache/lru.metadata.cache.js +31 -0
- package/lib/cache/lru.metadata.cache.js.map +1 -0
- package/lib/functions/body/parse.body.d.ts +2 -0
- package/lib/functions/body/parse.body.js +20 -0
- package/lib/functions/body/parse.body.js.map +1 -0
- package/lib/functions/body/parse.query.d.ts +2 -0
- package/lib/functions/body/parse.query.js +16 -0
- package/lib/functions/body/parse.query.js.map +1 -0
- package/lib/functions/cimd/assert.public.host.d.ts +2 -0
- package/lib/functions/cimd/assert.public.host.js +15 -0
- package/lib/functions/cimd/assert.public.host.js.map +1 -0
- package/lib/functions/cimd/cache.seconds.d.ts +2 -0
- package/lib/functions/cimd/cache.seconds.js +16 -0
- package/lib/functions/cimd/cache.seconds.js.map +1 -0
- package/lib/functions/cimd/create.metadata.resolver.d.ts +5 -0
- package/lib/functions/cimd/create.metadata.resolver.js +53 -0
- package/lib/functions/cimd/create.metadata.resolver.js.map +1 -0
- package/lib/functions/cimd/host.matches.d.ts +2 -0
- package/lib/functions/cimd/host.matches.js +5 -0
- package/lib/functions/cimd/host.matches.js.map +1 -0
- package/lib/functions/cimd/is.metadata.client.id.d.ts +2 -0
- package/lib/functions/cimd/is.metadata.client.id.js +14 -0
- package/lib/functions/cimd/is.metadata.client.id.js.map +1 -0
- package/lib/functions/cimd/is.private.ipv4.d.ts +2 -0
- package/lib/functions/cimd/is.private.ipv4.js +18 -0
- package/lib/functions/cimd/is.private.ipv4.js.map +1 -0
- package/lib/functions/cimd/is.private.ipv6.d.ts +2 -0
- package/lib/functions/cimd/is.private.ipv6.js +17 -0
- package/lib/functions/cimd/is.private.ipv6.js.map +1 -0
- package/lib/functions/cimd/read.limited.d.ts +2 -0
- package/lib/functions/cimd/read.limited.js +32 -0
- package/lib/functions/cimd/read.limited.js.map +1 -0
- package/lib/functions/cimd/validate.metadata.document.d.ts +3 -0
- package/lib/functions/cimd/validate.metadata.document.js +25 -0
- package/lib/functions/cimd/validate.metadata.document.js.map +1 -0
- package/lib/functions/consent/consent.styles.d.ts +2 -0
- package/lib/functions/consent/consent.styles.js +20 -0
- package/lib/functions/consent/consent.styles.js.map +1 -0
- package/lib/functions/consent/escape.html.d.ts +2 -0
- package/lib/functions/consent/escape.html.js +5 -0
- package/lib/functions/consent/escape.html.js.map +1 -0
- package/lib/functions/consent/render.default.consent.d.ts +3 -0
- package/lib/functions/consent/render.default.consent.js +50 -0
- package/lib/functions/consent/render.default.consent.js.map +1 -0
- package/lib/functions/crypto/random.id.d.ts +2 -0
- package/lib/functions/crypto/random.id.js +5 -0
- package/lib/functions/crypto/random.id.js.map +1 -0
- package/lib/functions/crypto/random.token.d.ts +2 -0
- package/lib/functions/crypto/random.token.js +9 -0
- package/lib/functions/crypto/random.token.js.map +1 -0
- package/lib/functions/crypto/sha256.base64.url.d.ts +2 -0
- package/lib/functions/crypto/sha256.base64.url.js +10 -0
- package/lib/functions/crypto/sha256.base64.url.js.map +1 -0
- package/lib/functions/crypto/sha256.digest.d.ts +2 -0
- package/lib/functions/crypto/sha256.digest.js +5 -0
- package/lib/functions/crypto/sha256.digest.js.map +1 -0
- package/lib/functions/crypto/sha256.hex.d.ts +2 -0
- package/lib/functions/crypto/sha256.hex.js +9 -0
- package/lib/functions/crypto/sha256.hex.js.map +1 -0
- package/lib/functions/crypto/to.base64.url.d.ts +2 -0
- package/lib/functions/crypto/to.base64.url.js +10 -0
- package/lib/functions/crypto/to.base64.url.js.map +1 -0
- package/lib/functions/http/form.params.d.ts +2 -0
- package/lib/functions/http/form.params.js +5 -0
- package/lib/functions/http/form.params.js.map +1 -0
- package/lib/functions/http/header.value.d.ts +3 -0
- package/lib/functions/http/header.value.js +8 -0
- package/lib/functions/http/header.value.js.map +1 -0
- package/lib/functions/http/json.response.d.ts +3 -0
- package/lib/functions/http/json.response.js +9 -0
- package/lib/functions/http/json.response.js.map +1 -0
- package/lib/functions/http/oauth.error.response.d.ts +3 -0
- package/lib/functions/http/oauth.error.response.js +9 -0
- package/lib/functions/http/oauth.error.response.js.map +1 -0
- package/lib/functions/http/plain.error.response.d.ts +3 -0
- package/lib/functions/http/plain.error.response.js +5 -0
- package/lib/functions/http/plain.error.response.js.map +1 -0
- package/lib/functions/http/query.param.d.ts +3 -0
- package/lib/functions/http/query.param.js +8 -0
- package/lib/functions/http/query.param.js.map +1 -0
- package/lib/functions/http/redirect.response.d.ts +3 -0
- package/lib/functions/http/redirect.response.js +5 -0
- package/lib/functions/http/redirect.response.js.map +1 -0
- package/lib/functions/http/text.value.d.ts +2 -0
- package/lib/functions/http/text.value.js +5 -0
- package/lib/functions/http/text.value.js.map +1 -0
- package/lib/functions/http/trim.trailing.slashes.d.ts +2 -0
- package/lib/functions/http/trim.trailing.slashes.js +10 -0
- package/lib/functions/http/trim.trailing.slashes.js.map +1 -0
- package/lib/functions/jwt/sign.access.token.d.ts +4 -0
- package/lib/functions/jwt/sign.access.token.js +21 -0
- package/lib/functions/jwt/sign.access.token.js.map +1 -0
- package/lib/functions/jwt/verify.access.token.d.ts +4 -0
- package/lib/functions/jwt/verify.access.token.js +16 -0
- package/lib/functions/jwt/verify.access.token.js.map +1 -0
- package/lib/functions/keys/der.length.d.ts +2 -0
- package/lib/functions/keys/der.length.js +12 -0
- package/lib/functions/keys/der.length.js.map +1 -0
- package/lib/functions/keys/is.rsa.key.d.ts +2 -0
- package/lib/functions/keys/is.rsa.key.js +8 -0
- package/lib/functions/keys/is.rsa.key.js.map +1 -0
- package/lib/functions/keys/normalize.pem.d.ts +2 -0
- package/lib/functions/keys/normalize.pem.js +16 -0
- package/lib/functions/keys/normalize.pem.js.map +1 -0
- package/lib/functions/keys/pkcs1.to.pkcs8.d.ts +2 -0
- package/lib/functions/keys/pkcs1.to.pkcs8.js +14 -0
- package/lib/functions/keys/pkcs1.to.pkcs8.js.map +1 -0
- package/lib/functions/keys/resolve.key.pair.d.ts +3 -0
- package/lib/functions/keys/resolve.key.pair.js +27 -0
- package/lib/functions/keys/resolve.key.pair.js.map +1 -0
- package/lib/functions/keys/signing.key.from.env.d.ts +2 -0
- package/lib/functions/keys/signing.key.from.env.js +14 -0
- package/lib/functions/keys/signing.key.from.env.js.map +1 -0
- package/lib/functions/keys/wrap.pem.d.ts +2 -0
- package/lib/functions/keys/wrap.pem.js +11 -0
- package/lib/functions/keys/wrap.pem.js.map +1 -0
- package/lib/functions/redirect/build.error.redirect.d.ts +2 -0
- package/lib/functions/redirect/build.error.redirect.js +9 -0
- package/lib/functions/redirect/build.error.redirect.js.map +1 -0
- package/lib/functions/redirect/build.redirect.d.ts +2 -0
- package/lib/functions/redirect/build.redirect.js +12 -0
- package/lib/functions/redirect/build.redirect.js.map +1 -0
- package/lib/functions/redirect/describe.redirect.target.d.ts +2 -0
- package/lib/functions/redirect/describe.redirect.target.js +8 -0
- package/lib/functions/redirect/describe.redirect.target.js.map +1 -0
- package/lib/functions/redirect/is.allowed.redirect.uri.d.ts +3 -0
- package/lib/functions/redirect/is.allowed.redirect.uri.js +19 -0
- package/lib/functions/redirect/is.allowed.redirect.uri.js.map +1 -0
- package/lib/functions/redirect/is.loopback.redirect.d.ts +2 -0
- package/lib/functions/redirect/is.loopback.redirect.js +13 -0
- package/lib/functions/redirect/is.loopback.redirect.js.map +1 -0
- package/lib/functions/redirect/is.safe.metadata.redirect.uri.d.ts +2 -0
- package/lib/functions/redirect/is.safe.metadata.redirect.uri.js +20 -0
- package/lib/functions/redirect/is.safe.metadata.redirect.uri.js.map +1 -0
- package/lib/functions/redirect/parse.url.d.ts +2 -0
- package/lib/functions/redirect/parse.url.js +14 -0
- package/lib/functions/redirect/parse.url.js.map +1 -0
- package/lib/functions/server/attach.and.continue.d.ts +6 -0
- package/lib/functions/server/attach.and.continue.js +15 -0
- package/lib/functions/server/attach.and.continue.js.map +1 -0
- package/lib/functions/server/authenticate.request.d.ts +5 -0
- package/lib/functions/server/authenticate.request.js +24 -0
- package/lib/functions/server/authenticate.request.js.map +1 -0
- package/lib/functions/server/awaiting.consent.d.ts +5 -0
- package/lib/functions/server/awaiting.consent.js +18 -0
- package/lib/functions/server/awaiting.consent.js.map +1 -0
- package/lib/functions/server/build.routes.d.ts +4 -0
- package/lib/functions/server/build.routes.js +40 -0
- package/lib/functions/server/build.routes.js.map +1 -0
- package/lib/functions/server/build.upstream.context.d.ts +6 -0
- package/lib/functions/server/build.upstream.context.js +11 -0
- package/lib/functions/server/build.upstream.context.js.map +1 -0
- package/lib/functions/server/challenge.response.d.ts +4 -0
- package/lib/functions/server/challenge.response.js +14 -0
- package/lib/functions/server/challenge.response.js.map +1 -0
- package/lib/functions/server/continue.with.user.d.ts +5 -0
- package/lib/functions/server/continue.with.user.js +18 -0
- package/lib/functions/server/continue.with.user.js.map +1 -0
- package/lib/functions/server/create.client.resolver.d.ts +6 -0
- package/lib/functions/server/create.client.resolver.js +26 -0
- package/lib/functions/server/create.client.resolver.js.map +1 -0
- package/lib/functions/server/create.mcp.auth.context.d.ts +4 -0
- package/lib/functions/server/create.mcp.auth.context.js +38 -0
- package/lib/functions/server/create.mcp.auth.context.js.map +1 -0
- package/lib/functions/server/create.mcp.auth.d.ts +4 -0
- package/lib/functions/server/create.mcp.auth.js +25 -0
- package/lib/functions/server/create.mcp.auth.js.map +1 -0
- package/lib/functions/server/deny.authorization.d.ts +5 -0
- package/lib/functions/server/deny.authorization.js +13 -0
- package/lib/functions/server/deny.authorization.js.map +1 -0
- package/lib/functions/server/exchange.authorization.code.d.ts +4 -0
- package/lib/functions/server/exchange.authorization.code.js +32 -0
- package/lib/functions/server/exchange.authorization.code.js.map +1 -0
- package/lib/functions/server/find.route.d.ts +4 -0
- package/lib/functions/server/find.route.js +5 -0
- package/lib/functions/server/find.route.js.map +1 -0
- package/lib/functions/server/handle.request.d.ts +6 -0
- package/lib/functions/server/handle.request.js +21 -0
- package/lib/functions/server/handle.request.js.map +1 -0
- package/lib/functions/server/has.credentials.d.ts +3 -0
- package/lib/functions/server/has.credentials.js +9 -0
- package/lib/functions/server/has.credentials.js.map +1 -0
- package/lib/functions/server/issue.authorization.code.d.ts +5 -0
- package/lib/functions/server/issue.authorization.code.js +24 -0
- package/lib/functions/server/issue.authorization.code.js.map +1 -0
- package/lib/functions/server/issue.tokens.d.ts +4 -0
- package/lib/functions/server/issue.tokens.js +30 -0
- package/lib/functions/server/issue.tokens.js.map +1 -0
- package/lib/functions/server/load.pending.d.ts +5 -0
- package/lib/functions/server/load.pending.js +13 -0
- package/lib/functions/server/load.pending.js.map +1 -0
- package/lib/functions/server/rotate.refresh.token.d.ts +4 -0
- package/lib/functions/server/rotate.refresh.token.js +33 -0
- package/lib/functions/server/rotate.refresh.token.js.map +1 -0
- package/lib/functions/server/token.failure.d.ts +3 -0
- package/lib/functions/server/token.failure.js +9 -0
- package/lib/functions/server/token.failure.js.map +1 -0
- package/lib/functions/sql/from.better.sqlite3.d.ts +10 -0
- package/lib/functions/sql/from.better.sqlite3.js +11 -0
- package/lib/functions/sql/from.better.sqlite3.js.map +1 -0
- package/lib/functions/sql/from.bun.sqlite.d.ts +7 -0
- package/lib/functions/sql/from.bun.sqlite.js +5 -0
- package/lib/functions/sql/from.bun.sqlite.js.map +1 -0
- package/lib/functions/sql/from.d1.d.ts +11 -0
- package/lib/functions/sql/from.d1.js +8 -0
- package/lib/functions/sql/from.d1.js.map +1 -0
- package/lib/functions/sql/from.node.sqlite.d.ts +7 -0
- package/lib/functions/sql/from.node.sqlite.js +5 -0
- package/lib/functions/sql/from.node.sqlite.js.map +1 -0
- package/lib/functions/sql/from.pg.d.ts +7 -0
- package/lib/functions/sql/from.pg.js +5 -0
- package/lib/functions/sql/from.pg.js.map +1 -0
- package/lib/functions/sql/from.postgres.js.d.ts +5 -0
- package/lib/functions/sql/from.postgres.js.js +5 -0
- package/lib/functions/sql/from.postgres.js.js.map +1 -0
- package/lib/functions/sql/optional.date.d.ts +2 -0
- package/lib/functions/sql/optional.date.js +5 -0
- package/lib/functions/sql/optional.date.js.map +1 -0
- package/lib/functions/sql/optional.number.d.ts +2 -0
- package/lib/functions/sql/optional.number.js +5 -0
- package/lib/functions/sql/optional.number.js.map +1 -0
- package/lib/functions/sql/optional.text.d.ts +2 -0
- package/lib/functions/sql/optional.text.js +5 -0
- package/lib/functions/sql/optional.text.js.map +1 -0
- package/lib/functions/sql/row.to.client.d.ts +4 -0
- package/lib/functions/sql/row.to.client.js +18 -0
- package/lib/functions/sql/row.to.client.js.map +1 -0
- package/lib/functions/sql/row.to.code.d.ts +4 -0
- package/lib/functions/sql/row.to.code.js +21 -0
- package/lib/functions/sql/row.to.code.js.map +1 -0
- package/lib/functions/sql/row.to.pending.d.ts +4 -0
- package/lib/functions/sql/row.to.pending.js +21 -0
- package/lib/functions/sql/row.to.pending.js.map +1 -0
- package/lib/functions/sql/row.to.refresh.token.d.ts +4 -0
- package/lib/functions/sql/row.to.refresh.token.js +22 -0
- package/lib/functions/sql/row.to.refresh.token.js.map +1 -0
- package/lib/functions/sql/sql.schema.d.ts +3 -0
- package/lib/functions/sql/sql.schema.js +62 -0
- package/lib/functions/sql/sql.schema.js.map +1 -0
- package/lib/functions/sql/to.dialect.sql.d.ts +3 -0
- package/lib/functions/sql/to.dialect.sql.js +13 -0
- package/lib/functions/sql/to.dialect.sql.js.map +1 -0
- package/lib/functions/upstream/app.session.upstream.d.ts +4 -0
- package/lib/functions/upstream/app.session.upstream.js +18 -0
- package/lib/functions/upstream/app.session.upstream.js.map +1 -0
- package/lib/functions/upstream/entra.upstream.d.ts +11 -0
- package/lib/functions/upstream/entra.upstream.js +16 -0
- package/lib/functions/upstream/entra.upstream.js.map +1 -0
- package/lib/functions/upstream/oidc.upstream.d.ts +4 -0
- package/lib/functions/upstream/oidc.upstream.js +82 -0
- package/lib/functions/upstream/oidc.upstream.js.map +1 -0
- package/lib/functions/upstream/verify.id.token.d.ts +3 -0
- package/lib/functions/upstream/verify.id.token.js +16 -0
- package/lib/functions/upstream/verify.id.token.js.map +1 -0
- package/lib/handlers/authorization.server.metadata.handler.d.ts +4 -0
- package/lib/handlers/authorization.server.metadata.handler.js +24 -0
- package/lib/handlers/authorization.server.metadata.handler.js.map +1 -0
- package/lib/handlers/authorize.handler.d.ts +5 -0
- package/lib/handlers/authorize.handler.js +58 -0
- package/lib/handlers/authorize.handler.js.map +1 -0
- package/lib/handlers/callback.handler.d.ts +5 -0
- package/lib/handlers/callback.handler.js +32 -0
- package/lib/handlers/callback.handler.js.map +1 -0
- package/lib/handlers/consent.decision.handler.d.ts +5 -0
- package/lib/handlers/consent.decision.handler.js +30 -0
- package/lib/handlers/consent.decision.handler.js.map +1 -0
- package/lib/handlers/consent.page.handler.d.ts +5 -0
- package/lib/handlers/consent.page.handler.js +43 -0
- package/lib/handlers/consent.page.handler.js.map +1 -0
- package/lib/handlers/protected.resource.metadata.handler.d.ts +4 -0
- package/lib/handlers/protected.resource.metadata.handler.js +9 -0
- package/lib/handlers/protected.resource.metadata.handler.js.map +1 -0
- package/lib/handlers/register.handler.d.ts +5 -0
- package/lib/handlers/register.handler.js +44 -0
- package/lib/handlers/register.handler.js.map +1 -0
- package/lib/handlers/resume.handler.d.ts +5 -0
- package/lib/handlers/resume.handler.js +25 -0
- package/lib/handlers/resume.handler.js.map +1 -0
- package/lib/handlers/revoke.handler.d.ts +5 -0
- package/lib/handlers/revoke.handler.js +27 -0
- package/lib/handlers/revoke.handler.js.map +1 -0
- package/lib/handlers/token.handler.d.ts +5 -0
- package/lib/handlers/token.handler.js +22 -0
- package/lib/handlers/token.handler.js.map +1 -0
- package/lib/mcp.auth.entra.d.ts +4 -0
- package/lib/mcp.auth.entra.js +11 -0
- package/lib/mcp.auth.entra.js.map +1 -0
- package/lib/mcp.auth.express.d.ts +4 -0
- package/lib/mcp.auth.express.js +11 -0
- package/lib/mcp.auth.express.js.map +1 -0
- package/lib/mcp.auth.fastify.d.ts +4 -0
- package/lib/mcp.auth.fastify.js +11 -0
- package/lib/mcp.auth.fastify.js.map +1 -0
- package/lib/mcp.auth.fetch.d.ts +6 -0
- package/lib/mcp.auth.fetch.js +15 -0
- package/lib/mcp.auth.fetch.js.map +1 -0
- package/lib/mcp.auth.koa.d.ts +4 -0
- package/lib/mcp.auth.koa.js +11 -0
- package/lib/mcp.auth.koa.js.map +1 -0
- package/lib/mcp.auth.memory.d.ts +4 -0
- package/lib/mcp.auth.memory.js +11 -0
- package/lib/mcp.auth.memory.js.map +1 -0
- package/lib/mcp.auth.mongodb.d.ts +6 -0
- package/lib/mcp.auth.mongodb.js +11 -0
- package/lib/mcp.auth.mongodb.js.map +1 -0
- package/lib/mcp.auth.node.d.ts +9 -0
- package/lib/mcp.auth.node.js +21 -0
- package/lib/mcp.auth.node.js.map +1 -0
- package/lib/mcp.auth.postgres.d.ts +11 -0
- package/lib/mcp.auth.postgres.js +20 -0
- package/lib/mcp.auth.postgres.js.map +1 -0
- package/lib/mcp.auth.server.d.ts +42 -0
- package/lib/mcp.auth.server.js +35 -0
- package/lib/mcp.auth.server.js.map +1 -0
- package/lib/mcp.auth.sqlite.d.ts +13 -0
- package/lib/mcp.auth.sqlite.js +24 -0
- package/lib/mcp.auth.sqlite.js.map +1 -0
- package/lib/storage/memory.storage.d.ts +30 -0
- package/lib/storage/memory.storage.js +91 -0
- package/lib/storage/memory.storage.js.map +1 -0
- package/lib/storage/mongodb.storage.d.ts +41 -0
- package/lib/storage/mongodb.storage.js +172 -0
- package/lib/storage/mongodb.storage.js.map +1 -0
- package/lib/storage/sql.storage.d.ts +35 -0
- package/lib/storage/sql.storage.js +128 -0
- package/lib/storage/sql.storage.js.map +1 -0
- package/lib/types/access.token.input.type.d.ts +9 -0
- package/lib/types/access.token.input.type.js +3 -0
- package/lib/types/access.token.input.type.js.map +1 -0
- package/lib/types/app.session.upstream.options.type.d.ts +7 -0
- package/lib/types/app.session.upstream.options.type.js +3 -0
- package/lib/types/app.session.upstream.options.type.js.map +1 -0
- package/lib/types/authenticate.result.type.d.ts +10 -0
- package/lib/types/authenticate.result.type.js +3 -0
- package/lib/types/authenticate.result.type.js.map +1 -0
- package/lib/types/authenticated.user.type.d.ts +5 -0
- package/lib/types/authenticated.user.type.js +3 -0
- package/lib/types/authenticated.user.type.js.map +1 -0
- package/lib/types/authorization.code.record.type.d.ts +11 -0
- package/lib/types/authorization.code.record.type.js +3 -0
- package/lib/types/authorization.code.record.type.js.map +1 -0
- package/lib/types/cimd.options.type.d.ts +16 -0
- package/lib/types/cimd.options.type.js +3 -0
- package/lib/types/cimd.options.type.js.map +1 -0
- package/lib/types/client.metadata.type.d.ts +7 -0
- package/lib/types/client.metadata.type.js +3 -0
- package/lib/types/client.metadata.type.js.map +1 -0
- package/lib/types/client.record.type.d.ts +11 -0
- package/lib/types/client.record.type.js +3 -0
- package/lib/types/client.record.type.js.map +1 -0
- package/lib/types/consent.model.type.d.ts +15 -0
- package/lib/types/consent.model.type.js +3 -0
- package/lib/types/consent.model.type.js.map +1 -0
- package/lib/types/consent.record.type.d.ts +5 -0
- package/lib/types/consent.record.type.js +3 -0
- package/lib/types/consent.record.type.js.map +1 -0
- package/lib/types/http.request.type.d.ts +9 -0
- package/lib/types/http.request.type.js +3 -0
- package/lib/types/http.request.type.js.map +1 -0
- package/lib/types/http.response.type.d.ts +6 -0
- package/lib/types/http.response.type.js +3 -0
- package/lib/types/http.response.type.js.map +1 -0
- package/lib/types/i.metadata.cache.d.ts +6 -0
- package/lib/types/i.metadata.cache.js +3 -0
- package/lib/types/i.metadata.cache.js.map +1 -0
- package/lib/types/i.storage.d.ts +25 -0
- package/lib/types/i.storage.js +3 -0
- package/lib/types/i.storage.js.map +1 -0
- package/lib/types/i.upstream.d.ts +11 -0
- package/lib/types/i.upstream.js +3 -0
- package/lib/types/i.upstream.js.map +1 -0
- package/lib/types/key.pair.type.d.ts +5 -0
- package/lib/types/key.pair.type.js +3 -0
- package/lib/types/key.pair.type.js.map +1 -0
- package/lib/types/logger.type.d.ts +6 -0
- package/lib/types/logger.type.js +3 -0
- package/lib/types/logger.type.js.map +1 -0
- package/lib/types/mcp.auth.context.type.d.ts +29 -0
- package/lib/types/mcp.auth.context.type.js +3 -0
- package/lib/types/mcp.auth.context.type.js.map +1 -0
- package/lib/types/mcp.auth.options.type.d.ts +39 -0
- package/lib/types/mcp.auth.options.type.js +3 -0
- package/lib/types/mcp.auth.options.type.js.map +1 -0
- package/lib/types/mcp.auth.type.d.ts +14 -0
- package/lib/types/mcp.auth.type.js +3 -0
- package/lib/types/mcp.auth.type.js.map +1 -0
- package/lib/types/metadata.resolution.type.d.ts +9 -0
- package/lib/types/metadata.resolution.type.js +3 -0
- package/lib/types/metadata.resolution.type.js.map +1 -0
- package/lib/types/mongo.storage.options.type.d.ts +13 -0
- package/lib/types/mongo.storage.options.type.js +3 -0
- package/lib/types/mongo.storage.options.type.js.map +1 -0
- package/lib/types/oidc.upstream.options.type.d.ts +9 -0
- package/lib/types/oidc.upstream.options.type.js +3 -0
- package/lib/types/oidc.upstream.options.type.js.map +1 -0
- package/lib/types/pending.authorization.type.d.ts +14 -0
- package/lib/types/pending.authorization.type.js +3 -0
- package/lib/types/pending.authorization.type.js.map +1 -0
- package/lib/types/pending.filter.type.d.ts +5 -0
- package/lib/types/pending.filter.type.js +3 -0
- package/lib/types/pending.filter.type.js.map +1 -0
- package/lib/types/redirect.policy.type.d.ts +5 -0
- package/lib/types/redirect.policy.type.js +3 -0
- package/lib/types/redirect.policy.type.js.map +1 -0
- package/lib/types/refresh.token.record.type.d.ts +11 -0
- package/lib/types/refresh.token.record.type.js +3 -0
- package/lib/types/refresh.token.record.type.js.map +1 -0
- package/lib/types/resolved.client.type.d.ts +7 -0
- package/lib/types/resolved.client.type.js +3 -0
- package/lib/types/resolved.client.type.js.map +1 -0
- package/lib/types/route.name.type.d.ts +2 -0
- package/lib/types/route.name.type.js +3 -0
- package/lib/types/route.name.type.js.map +1 -0
- package/lib/types/route.type.d.ts +10 -0
- package/lib/types/route.type.js +3 -0
- package/lib/types/route.type.js.map +1 -0
- package/lib/types/sql.dialect.type.d.ts +2 -0
- package/lib/types/sql.dialect.type.js +3 -0
- package/lib/types/sql.dialect.type.js.map +1 -0
- package/lib/types/sql.executor.type.d.ts +4 -0
- package/lib/types/sql.executor.type.js +3 -0
- package/lib/types/sql.executor.type.js.map +1 -0
- package/lib/types/sql.storage.options.type.d.ts +4 -0
- package/lib/types/sql.storage.options.type.js +3 -0
- package/lib/types/sql.storage.options.type.js.map +1 -0
- package/lib/types/upstream.begin.type.d.ts +9 -0
- package/lib/types/upstream.begin.type.js +3 -0
- package/lib/types/upstream.begin.type.js.map +1 -0
- package/lib/types/upstream.context.type.d.ts +10 -0
- package/lib/types/upstream.context.type.js +3 -0
- package/lib/types/upstream.context.type.js.map +1 -0
- package/lib/types/verify.result.type.d.ts +6 -0
- package/lib/types/verify.result.type.js +3 -0
- package/lib/types/verify.result.type.js.map +1 -0
- package/package.json +107 -5
- package/sql/postgres.sql +61 -0
- 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,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":"AAAA,YAAY,CAAC;;AAab,MAAqB,YAAY;IACf,OAAO,CAAuB;IAC9B,OAAO,CAAuB;IAC9B,KAAK,CAAuB;IAC5B,aAAa,CAAuB;IACpC,QAAQ,CAAuB;IAC/B,WAAW,CAAS;IACpB,UAAU,CAA8B;IACxC,YAAY,CAA6B;IAE1D,YAAY,EAAM,EAAE,UAAmC,EAAE;QACxD,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,OAAO,IAAI,mBAAmB,CAAC,CAAC;QAClF,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,qBAAqB,IAAI,kCAAkC,CAAC,CAAC;QAC/G,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,kBAAkB,IAAI,+BAA+B,CAAC,CAAC;QACvG,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,aAAa,IAAI,0BAA0B,CAAC,CAAC;QACrG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,IAAI,oBAAoB,CAAC,CAAC;QACrF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,QAAQ,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,CAAC,CAAC,MAAc,EAAW,EAAE,CAAC,MAAM,CAAC,CAAC;QAC9E,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC,KAAc,EAAU,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACzF,CAAC;IAED,KAAK,CAAC,aAAa;QAClB,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,CAAC,EAAC,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;QAC9D,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAC,OAAO,EAAE,CAAC,EAAC,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;QAC7D,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,EAAC,SAAS,EAAE,CAAC,EAAC,EAAE,EAAC,kBAAkB,EAAE,CAAC,EAAC,CAAC,CAAC;QACxE,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,CAAC,EAAC,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;QAC5D,MAAM,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,EAAC,SAAS,EAAE,CAAC,EAAC,EAAE,EAAC,kBAAkB,EAAE,CAAC,EAAC,CAAC,CAAC;QACtE,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAC,SAAS,EAAE,CAAC,EAAC,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;QACrE,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,CAAC,EAAC,CAAC,CAAC;QACpD,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,EAAC,SAAS,EAAE,CAAC,EAAC,EAAE,EAAC,kBAAkB,EAAE,CAAC,EAAC,CAAC,CAAC;QAC9E,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,EAAC,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;IACvF,CAAC;IAEO,QAAQ,CAAC,GAAa;QAC7B,OAAO;YACN,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;YACvC,YAAY,EAAE,GAAG,CAAC,YAAY;YAC9B,eAAe,EAAE,GAAG,CAAC,eAAe,IAAI,SAAS;YACjD,uBAAuB,EAAE,MAAM;YAC/B,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,SAAS,EAAE,GAAG,CAAC,SAAS;SACxB,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,GAAa;QAC9B,MAAM,MAAM,GAAY,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,OAAO;YACN,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,UAAU,EAAE,GAAG,CAAC,UAAU,IAAI,SAAS;YACvC,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,WAAW,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;YACzC,oBAAoB,EAAE,GAAG,CAAC,oBAAoB,IAAI,SAAS;YAC3D,MAAM,EAAE,SAAS,KAAK,MAAM,IAAI,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YACvF,eAAe,EAAE,GAAG,CAAC,eAAe,IAAI,SAAS;YACjD,SAAS,EAAE,GAAG,CAAC,SAAS;SACxB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,GAAa;QAC3B,OAAO;YACN,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,aAAa,EAAE,GAAG,CAAC,aAAa;YAChC,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChD,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS;YAC/B,SAAS,EAAE,GAAG,CAAC,SAAS;SACxB,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,GAAa;QACnC,OAAO;YACN,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAChD,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,MAAM,EAAE,GAAG,CAAC,MAAM,IAAI,SAAS;YAC/B,SAAS,EAAE,GAAG,CAAC,SAAS,IAAI,SAAS;YACrC,SAAS,EAAE,GAAG,CAAC,SAAS;SACxB,CAAC;IACH,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,QAAgB;QAC/B,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC,QAAQ,EAAC,CAAC,CAAC;QACnD,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACxC,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,MAAwB;QACxC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAC5B,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,eAAe,EAAE,MAAM,CAAC,eAAe;YACvC,uBAAuB,EAAE,MAAM,CAAC,uBAAuB;YACvD,UAAU,EAAE,MAAM,CAAC,UAAU;YAC7B,aAAa,EAAE,MAAM,CAAC,aAAa;YACnC,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS,EAAE,MAAM,CAAC,SAAS;SAC3B,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,OAAiC;QAC/D,MAAM,EAAC,MAAM,EAAE,GAAG,IAAI,EAAC,GAAG,OAAO,CAAC;QAClC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAC5B,GAAG,IAAI;YACP,mBAAmB,EAAE,MAAM;YAC3B,GAAG,CAAC,SAAS,KAAK,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAC,CAAC;YAC9E,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE;SACrB,CAAC,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,uBAAuB,CAAC,OAAe,EAAE,GAAS;QACvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAC,OAAO,EAAE,SAAS,EAAE,EAAC,GAAG,EAAE,GAAG,EAAC,EAAC,CAAC,CAAC;QACzE,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,gCAAgC,CAAC,OAAe,EAAE,MAAc,EAAE,GAAS,EAAE,WAAoB;QACtG,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAC9C,EAAC,OAAO,EAAE,SAAS,EAAE,EAAC,GAAG,EAAE,GAAG,EAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,EAAC,EACtE,EAAC,IAAI,EAAE,EAAC,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,eAAe,EAAE,WAAW,EAAE,SAAS,EAAE,GAAG,EAAC,EAAC,EACnG,EAAC,cAAc,EAAE,OAAO,EAAC,CACzB,CAAC;QACF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,OAAe,EAAE,MAAyB;QACxE,MAAM,KAAK,GAAa,EAAC,OAAO,EAAE,SAAS,EAAE,EAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAC,EAAC,CAAC;QAChE,IAAI,SAAS,KAAK,MAAM,CAAC,OAAO;YAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,EAAC,OAAO,EAAE,MAAM,CAAC,OAAO,EAAC,CAAC;QACtF,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QACvD,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,0BAA0B,CAAC,OAAe;QAC/C,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAC,OAAO,EAAC,CAAC,CAAC;IACzC,CAAC;IAED,KAAK,CAAC,qBAAqB,CAAC,IAAiC;QAC5D,MAAM,EAAC,MAAM,EAAE,GAAG,IAAI,EAAC,GAAG,IAAI,CAAC;QAC/B,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAC,CAAC,CAAC;IAClI,CAAC;IAED,KAAK,CAAC,sBAAsB,CAAC,QAAgB,EAAE,GAAS;QACvD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAC5C,EAAC,QAAQ,EAAE,MAAM,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,EAAE,SAAS,EAAE,EAAC,GAAG,EAAE,GAAG,EAAC,EAAC,EAC3D,EAAC,IAAI,EAAE,EAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAC,EAAC,EACrC,EAAC,cAAc,EAAE,OAAO,EAAC,CACzB,CAAC;QACF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,KAA6B;QACnD,MAAM,EAAC,MAAM,EAAE,GAAG,IAAI,EAAC,GAAG,KAAK,CAAC;QAChC,MAAM,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAC,GAAG,IAAI,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAC,CAAC,CAAC;IAC1I,CAAC;IAED,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QACvC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAC,SAAS,EAAC,CAAC,CAAC;QAC1D,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,iBAAiB,CAAC,SAAiB,EAAE,GAAS;QACnD,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CACpD,EAAC,SAAS,EAAE,MAAM,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,EAAE,SAAS,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,EAAE,SAAS,EAAE,EAAC,GAAG,EAAE,GAAG,EAAC,EAAC,EACzF,EAAC,IAAI,EAAE,EAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAC,EAAC,EACrC,EAAC,cAAc,EAAE,OAAO,EAAC,CACzB,CAAC;QACF,OAAO,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC9C,CAAC;IAED,KAAK,CAAC,wBAAwB,CAAC,QAAgB,EAAE,GAAS;QACzD,MAAM,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,EAAC,QAAQ,EAAE,SAAS,EAAE,EAAC,OAAO,EAAE,KAAK,EAAC,EAAC,EAAE,EAAC,IAAI,EAAE,EAAC,SAAS,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,EAAC,EAAC,CAAC,CAAC;IACxH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,QAAgB,EAAE,MAAc;QAChD,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAC,EAAE,EAAC,UAAU,EAAE,EAAC,GAAG,EAAE,CAAC,EAAC,EAAC,CAAC,CAAC,CAAC;IACzH,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,OAA0B;QAC7C,MAAM,MAAM,GAAa,EAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAC,CAAC;QAC3G,IAAI,CAAC;YACJ,MAAM,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,EAAC,YAAY,EAAE,EAAC,GAAG,MAAM,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAC,EAAC,EAAE,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;QAClI,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,IAAI,KAAK,KAAM,KAAyB,CAAC,IAAI;gBAAE,MAAM,KAAK,CAAC;QAC5D,CAAC;IACF,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,GAAS;QAC5B,KAAK,MAAM,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC;YAAE,MAAM,UAAU,CAAC,UAAU,CAAC,EAAC,SAAS,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,EAAC,CAAC,CAAC;IAChI,CAAC;CACD;AArMD,+BAqMC"}
|