{"_id":"@gentleduck/auth","_rev":"29-deacdf5812baecdc27d956d553fbbbbc","name":"@gentleduck/auth","dist-tags":{"latest":"5.16.0"},"versions":{"0.2.0":{"name":"@gentleduck/auth","version":"0.2.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@0.2.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"7dc8d4922fcad95c4ba9e50f83822d0f77727a3d","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-0.2.0.tgz","fileCount":748,"integrity":"sha512-z7CoC4QvjybznXZwv2nM5EBJ2syaDFPHs/lEVqkHt3WZbHmrxBfzeMG8c4EpnWX5SxgomxDplwDsfNFaQ7T/Kw==","signatures":[{"sig":"MEUCIB7UFloo3F3WyZsU1nx5uxDYPv1m2ssw7zot1sXKe3x2AiEAyGzuFeDdSvOfBfz5EbSS7EwzZ5QLeOCfhX7stv6rwJ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5492644},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./providers/password":{"import":{"types":"./dist/providers/password/index.d.ts","default":"./dist/providers/password/index.js"},"require":{"types":"./dist/providers/password/index.d.cts","default":"./dist/providers/password/index.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"32a90fa975862200bf10e462e53c44f4e6fd1b02","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","benchmark":"bun run scripts/benchmark.ts","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"10.9.8","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.6","tsdown":"catalog:","vitest":"catalog:","typescript":"catalog:","@types/react":"^19.2.14","@gentleduck/iam":"workspace:*","@node-rs/argon2":">=2 <3","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1","drizzle-orm":">=0.30 <2","@gentleduck/iam":"workspace:*","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":">=10 <14"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_0.2.0_1780033637762_0.3861284004797101","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@gentleduck/auth","version":"2.0.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@2.0.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"3f7c362038faa62dc089ea60661516ba63a9b489","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-2.0.0.tgz","fileCount":811,"integrity":"sha512-plTZWftXn+tHp3Go5IwCmJbibEUONtAheFHZP6eFjlvJ6na4Ecpx4FFwCor41r4fo4rpYYsmkKe2MFRBiDA53Q==","signatures":[{"sig":"MEUCIA4M8qxN9XM72kWagGJVgjXVQgBVl3mOFLMoJ4bm0E1/AiEAqQPH1yip7z4Pj5axD1+vzo6CcKHXSIfT0bp8e5CRnyg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6015145},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./providers/password":{"import":{"types":"./dist/providers/password/index.d.ts","default":"./dist/providers/password/index.js"},"require":{"types":"./dist/providers/password/index.d.cts","default":"./dist/providers/password/index.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"573fd126c9f8b656efe3a9f7d184498de237d265","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","benchmark":"bun run scripts/benchmark.ts","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"10.9.8","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.7","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"catalog:","@types/react":"^19.2.17","@gentleduck/iam":"workspace:*","@node-rs/argon2":"2.0.2","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@gentleduck/iam":"workspace:*","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_2.0.0_1781899787490_0.49355918027226187","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@gentleduck/auth","version":"3.0.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@3.0.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"bf93294ddc3ba7990dc8d1557c25961b8984ee5a","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-3.0.0.tgz","fileCount":811,"integrity":"sha512-HATLrpSkM1LUkv7dKmN1kfD0IviYIX1tXrE7zd6uMd72b0XJGc+rC9+iI3HRZfaaKAMdwd+jsBYQxB/vZ/8ZFw==","signatures":[{"sig":"MEQCIGLaN0uCRvmXsFyEm5DElkJ/JmPjmKZvudpKjJZIXepVAiB+RyXSXcoUwlnnMmCZEeWGHBex6g69QFbnHtWWmybZBQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6015145},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./providers/password":{"import":{"types":"./dist/providers/password/index.d.ts","default":"./dist/providers/password/index.js"},"require":{"types":"./dist/providers/password/index.d.cts","default":"./dist/providers/password/index.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"13342045c692420cbe6ea62158d414ec02ce07fd","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","benchmark":"bun run scripts/benchmark.ts","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"10.9.8","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.7","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"catalog:","@types/react":"^19.2.17","@gentleduck/iam":"workspace:*","@node-rs/argon2":"2.0.2","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@gentleduck/iam":"workspace:*","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_3.0.0_1781933202336_0.32278142540580745","host":"s3://npm-registry-packages-npm-production"}},"4.0.0":{"name":"@gentleduck/auth","version":"4.0.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@4.0.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"92a199c639866b11f6be6b313b85e502a40e51ff","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-4.0.0.tgz","fileCount":811,"integrity":"sha512-xMfbquC5JAVEvn3n2cwhMRZOG2ZOudJ11XI3zmcPpHEMYl1IjvIzn+XEcYgpTIj/cgByHSsqCd1LtmBuCKZs7A==","signatures":[{"sig":"MEQCIGB3hMLI59vhDNW4IxKsuZRNbovwYuuDGS9lQkXhyXHMAiBM7ZCtrJoUTExxK9a5ddan0upei2cxdpyyp5pZ75ZtdQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6086394},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./providers/password":{"import":{"types":"./dist/providers/password/index.d.ts","default":"./dist/providers/password/index.js"},"require":{"types":"./dist/providers/password/index.d.cts","default":"./dist/providers/password/index.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"03b5953cc7b2314c009f0f07352ff772adc4025a","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","benchmark":"bun run scripts/benchmark.ts","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"10.9.8","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.7","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/react":"^19.2.17","@gentleduck/iam":"workspace:*","@node-rs/argon2":"2.0.2","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@gentleduck/iam":"workspace:*","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_4.0.0_1782144970421_0.7814131539491835","host":"s3://npm-registry-packages-npm-production"}},"4.0.1":{"name":"@gentleduck/auth","version":"4.0.1","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@4.0.1","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"9ce7201976c6879f0e4cfb2f22bf42abfd464b07","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-4.0.1.tgz","fileCount":811,"integrity":"sha512-gh+weQ7AJYFYAjmiceDfywwBiA5oE3kWli6DtuMudhfrG9OiNVkcZkU+QkCtMfTowPGryKrDk4Kiom45HpO3Yw==","signatures":[{"sig":"MEUCIQC9WjwIoA19ag+8DmPoVxwF32GYFcYyHxl9iktHjBVtGwIgaTni8F0OISPfxusZyZGg4UsbwvGbausRSLvJubCghhw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6084592},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./providers/password":{"import":{"types":"./dist/providers/password/index.d.ts","default":"./dist/providers/password/index.js"},"require":{"types":"./dist/providers/password/index.d.cts","default":"./dist/providers/password/index.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"d38561e810437fd4bb615c084c6709424b788130","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","benchmark":"bun run scripts/benchmark.ts","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"10.9.8","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.7","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/react":"^19.2.17","@gentleduck/iam":"workspace:*","@node-rs/argon2":"2.0.2","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@gentleduck/iam":"workspace:*","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_4.0.1_1782147797106_0.3678977494111475","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@gentleduck/auth","version":"5.0.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.0.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"f59f39029cd51679118fcfda61b2623cef9a5e99","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.0.0.tgz","fileCount":815,"integrity":"sha512-4dGFV9ID81mNMOnYk57/m8O3K5gL3v10pbxQe0fEFsFrFC2eO29gX/s5wdKxrDl292caXbLqXrFxX/6a5FUiQg==","signatures":[{"sig":"MEYCIQCGWhHHCXxc3DZwjxgt4mw7b9WYjWWji+CMhQ230kjtwgIhAIFS+yCs3noJlYGWa+T09aKEFhgNj1hNsTz35QljLYFM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6091973},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./providers/password":{"import":{"types":"./dist/providers/password/index.d.ts","default":"./dist/providers/password/index.js"},"require":{"types":"./dist/providers/password/index.d.cts","default":"./dist/providers/password/index.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"37f51bbbb2eebadbe814dd7a7054ccfede209801","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","benchmark":"bun run scripts/benchmark.ts","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"10.9.8","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"react":"^19.2.7","tsdown":"^0.22.3","vitest":"^4.1.9","typescript":"^6.0.3","@types/react":"^19.2.17","@gentleduck/iam":"workspace:*","@node-rs/argon2":"2.0.2","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@gentleduck/iam":"workspace:*","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.0.0_1782165202250_0.8116025618442375","host":"s3://npm-registry-packages-npm-production"}},"5.1.0":{"name":"@gentleduck/auth","version":"5.1.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.1.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"b2680f4b86c67f242f52e737932c9f477530d5d5","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.1.0.tgz","fileCount":913,"integrity":"sha512-9Ue7gEdQ/sjwyJi4fx3Kw3wSVs3LnP/r5xorFpaFunlOIQYT2h/kLi72P81VEgD3s09Laf4gwBenoCT2bFqJlw==","signatures":[{"sig":"MEUCIQCFw2oMy3mVf00OCewsFZ6ehINk1eAIrbc3cTuIbuvz0gIgZPEsDfQKMUwwJx/BhuByudL0fSs8jLSdqi0Y6f+yil0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6016140},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"da7e82ef41f042f9593d4f6d4e09f5d8cae482a9","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","test:e2e":"vitest run e2e","benchmark":"bun run scripts/benchmark.ts","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"12.0.2","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","dependencies":{"uuid":"^11.0.0","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^6.0.3","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.0.2","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.1.0_1786969506194_0.7000435171052646","host":"s3://npm-registry-packages-npm-production"}},"5.2.0":{"name":"@gentleduck/auth","version":"5.2.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.2.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"6ae7eaa907497a5f77e1df5b06c0c180b6ded7c2","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.2.0.tgz","fileCount":949,"integrity":"sha512-AYRIUkmgc7poMlA5fxTw6HHLbpLIxYeyYvj9qG5sPwVXUcxsKW3YxoNazOrOIREdrlj4HRoVNUAIiimq8X+/Xw==","signatures":[{"sig":"MEUCIQCw61/i5dGFW2A6foxZqjP2SYdVVu+3PUtBBhjGKjWhFAIgKIbb0etDensZeTSfZ5+Ib+8IGYi6PmGUX7OlQ8/OHWA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6068050},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"38371f1e2ff3ee0dbc6307243f6c86617eb9f15c","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","test:e2e":"vitest run e2e","benchmark":"bun run scripts/benchmark.ts","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"12.0.2","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","dependencies":{"uuid":"^11.0.0","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^6.0.3","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.0.2","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.2.0_1787122451279_0.9329191203929459","host":"s3://npm-registry-packages-npm-production"}},"5.3.0":{"name":"@gentleduck/auth","version":"5.3.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.3.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"adec65ee4f50cd24562b73c5f5ac909b4d221906","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.3.0.tgz","fileCount":1033,"integrity":"sha512-T8Fef0bZhOAQ2B8jjsov7deZXD+OrRs0P8yKuQwEYXFuVPsmlpP8NbaV7MrbdxIgm5XpcBWzGt8GPpne/fAMMA==","signatures":[{"sig":"MEYCIQCW3KGzSb/fQTBIkdG6/9CxaRXkEmIRCrJFo+x4RCMMQQIhAJikGUZuGniYvQdomjFHR0rw3WZZ+zOV6n0e1wNoL387","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7119715},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"3ca9c9b954f50468e9a1c27bb04031816c4eed10","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run e2e","benchmark":"bun run scripts/benchmark.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"12.0.2","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","dependencies":{"uuid":"^11.0.0","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^6.0.3","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.0.2","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.3.0_1787412149882_0.7849980939670052","host":"s3://npm-registry-packages-npm-production"}},"5.3.1":{"name":"@gentleduck/auth","version":"5.3.1","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.3.1","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"74df652a1f40fc2c20f1a712e06bddc084ecc6aa","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.3.1.tgz","fileCount":1065,"integrity":"sha512-QItL4Azoiaq9BdULL9GyMqQyN5Ol4bvrx1lUimgCDzFa2cXVBXpvCvS2ohwqfYav4AA7dP33N2piY3JhSLBIkA==","signatures":[{"sig":"MEUCIBuOVM8t2rMcE3OtVSGceLy5h4eAouA8hJUdT2OhdHC4AiEAy5ms3jqHXd9B2U2+tuUHIZi/1ZnT1DFsjl5+Or5AJks=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7123816},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"40bfda38827020d0753d8ee81da2720610ad3067","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run e2e","benchmark":"bun run scripts/benchmark.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"12.0.2","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","dependencies":{"uuid":"^11.0.0","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^6.0.3","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.0.2","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.3.1_1787733352096_0.2843374166532757","host":"s3://npm-registry-packages-npm-production"}},"5.3.2":{"name":"@gentleduck/auth","version":"5.3.2","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.3.2","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"ffba6d23cf5286f4810bd4dca1451e7738e4aae0","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.3.2.tgz","fileCount":1065,"integrity":"sha512-CUptaCvW8U6jDQPLrtS+aUEYBBqHD44qdyyGU6xr+jEpR/vCkjB/OmLWN+lC5zoy4QhrVI9/DqgcXmr1E968Sg==","signatures":[{"sig":"MEYCIQDCYgxQHF/wItpH9IYwoKrrBhbRd2UcLMRbaDuOYWZezwIhAIF2MF0m7BhlFmY60z5xn4/5duYE53PgrL99fgCbvkYM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7144576},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"426436aa35b489729a182185eb67625b49ef7a2c","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run e2e","benchmark":"bun run scripts/benchmark.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"12.0.2","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","dependencies":{"uuid":"^11.0.0","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^6.0.3","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.0.2","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.3.2_1787744957461_0.1296593169906488","host":"s3://npm-registry-packages-npm-production"}},"5.3.4":{"name":"@gentleduck/auth","version":"5.3.4","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.3.4","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"ea176f1e78015a8b89c54cf7f74050eef034b814","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.3.4.tgz","fileCount":1065,"integrity":"sha512-ttWrRjS5XnjwQBxbDGZnj93+HH3nblKVbysU5SThLp6clzg9BAp5IZhxdvKBlZQtKvUb5wfOIG1PWXsrX/I38Q==","signatures":[{"sig":"MEUCIQCEQ0ipLvwYlJrUEb6qR65U7VaKflXzhSirHtskIPjHgwIgTiVUxIie6RriR4HBByhqAsD4R95jVl/SMcGjVzj8dXw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7160471},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"9058ea518858b81749d7bf7e9931ab89612d69db","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run e2e","benchmark":"bun run scripts/benchmark.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"12.0.2","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"26.7.0","dependencies":{"uuid":"^11.0.0","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^6.0.3","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.0.2","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.3.4_1787754488779_0.5269877784401285","host":"s3://npm-registry-packages-npm-production"}},"5.3.5":{"name":"@gentleduck/auth","version":"5.3.5","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.3.5","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"370591a24c3d12feaa6691ddf6087dd8b66993be","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.3.5.tgz","fileCount":1087,"integrity":"sha512-p5EBLrmKA0Vz2eZJFF6F1sVXmTBcSJZ0VA3EriGWlvzrskJjvt3LpPWB0HmVXqFWtdPyBEeXAbDZ16obz15UOQ==","signatures":[{"sig":"MEYCIQCmb6f4xJHoKD7SK3ikY0SYYvZ3NqLp8epTQe3H8j1cKQIhAOUZuJbfwN9fjqwC1Y6rBgrU1n/s2y4ONtQqrKMUwJZL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7393161},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"7a1ce886a482a963ca16db5430d1d827b862733c","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run e2e","benchmark":"bun run scripts/benchmark.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"11.11.0","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.0","dependencies":{"uuid":"^14.0.2","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.3.5_1788373320701_0.47360486960054016","host":"s3://npm-registry-packages-npm-production"}},"5.3.6":{"name":"@gentleduck/auth","version":"5.3.6","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.3.6","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"1b23261ebe21bcb4ce83cea04e0eae9c9984da77","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.3.6.tgz","fileCount":1088,"integrity":"sha512-F7uy3MtSfqBNkVJcnUHlXoft3nm4K7WylNg83aIii0lATozyaWemwOz/pu5EpFj3ED24HSHLZ8IS4jRQ5j8tVQ==","signatures":[{"sig":"MEYCIQDayPjlOlszD8e5Owz47aN/571upzAcTG74LJLS2JsFeAIhAIaJuNUZi1KGc9+gcBbAq7uYL+k1Ugw1R1QPxZHxddCw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7544192},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"18ff42dfbe7b8a90442e022139d22ae9d05a3a0f","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run e2e","benchmark":"bun run scripts/benchmark.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"11.11.0","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.0","dependencies":{"uuid":"^14.0.2","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.3.6_1788387814359_0.982134046828192","host":"s3://npm-registry-packages-npm-production"}},"5.4.0":{"name":"@gentleduck/auth","version":"5.4.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.4.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"49cfe761f002a523dc01f7e317655942a52f9221","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.4.0.tgz","fileCount":1088,"integrity":"sha512-7yBTTLnZHnkChPzhvlu4poIWEuwUEBehFKejJUp0Ny6D+N0Ba57LJwCgUTufiby7tdcEz1nOgWaVAng6zAxOEg==","signatures":[{"sig":"MEUCIQCTUeh6fdNcWFJfnbfpvJDWSjvYoHbsZp7TZ53qmdGvlQIgEiHyl71iOzQH8f7mxyHdHDVzIwDLkQp76/2w9fT/eq0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7563789},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"a177c46be68b12817d0fcaf28a4db820509b6055","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run e2e","benchmark":"bun run scripts/benchmark.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"11.11.0","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.0","dependencies":{"uuid":"^14.0.2","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.4.0_1788389409045_0.5534925954659766","host":"s3://npm-registry-packages-npm-production"}},"5.4.1":{"name":"@gentleduck/auth","version":"5.4.1","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.4.1","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"8ba0f7df6c96b2312759392f40a69a11eecbb3f9","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.4.1.tgz","fileCount":1130,"integrity":"sha512-bGxulMFoRPv38VQE+UhFP612lW83s9lqk3vOF7xJB5592hIkIs6aEqoArIhSFqpepOsxQcMsexA+35pbKqXMkQ==","signatures":[{"sig":"MEUCIQCeMRk/u7JWp1GzFiZpu5U+tcpn9jiAJP/fu5E4QZjD6AIgHH9Yr6DQ96Kwx2L+VYHby0ribbByZ3j+WWzok2VS1iM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDzrqxuP1pc6zRQxkItRzmJW6PLU6Uk34MzY2ATfeqwXwIhAJo58+81fSf1j74F2hDIYa2OcHGiXf/23+lKJLDfyTBP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8668961},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"9353a686f59ef0f4f1e4a64a81dcf36ffaafba4b","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"11.11.0","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.0","dependencies":{"uuid":"^14.0.2","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.4.1_1788476075597_0.03590352653517814","host":"s3://npm-registry-packages-npm-production"}},"5.5.0":{"name":"@gentleduck/auth","version":"5.5.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.5.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"efbe3dcb08652b2c2adfe985f2714c9f135114af","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.5.0.tgz","fileCount":658,"integrity":"sha512-CTYjc2AgVcBEZrv3QprSaQCI2oCy7YGBdI7wRlQraqVgWvM6XBKWdoLWdL7u8iI4xyiQlEf9P8g1V9L9UmqvaQ==","signatures":[{"sig":"MEQCICfRbVBG0VnL+Iki4I30GNrGstAykXB7p1F8EKz+B4yPAiB9CIiu+pDa+GmhNVPHeQrTTOJaP7WGaWUWK3vW74MPCA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIAqWy4J6IeoHzHrI5HVnIlwKsw1KwF/JEGXNZN3hoaQ5AiEA4ZaVJKirq4FlA6Qtaj/MRfCJ0k0l69gGjU58xXdbLMw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5458894},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"9353a686f59ef0f4f1e4a64a81dcf36ffaafba4b","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"11.11.0","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.0","dependencies":{"uuid":"^14.0.2","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.5.0_1788479466485_0.47333760074642117","host":"s3://npm-registry-packages-npm-production"}},"5.5.1":{"name":"@gentleduck/auth","version":"5.5.1","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.5.1","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"924989f0203ea0d8b0e8080ffe50fcf5fb1ad267","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.5.1.tgz","fileCount":1136,"integrity":"sha512-BOlpzu88Al6h3+v2X5WzjjEuBAQ6UWWtmD74umEs671IUWMLvsQXJ1vU4pYPLkg14scJU/sYawh+fqwSmkS1cA==","signatures":[{"sig":"MEQCIGAcu4yqKCQprnGdPJozZX1CMptfbnIQvJnLZxuEgpTdAiBISAbBvx67pXpt8zZv9I+ZIKM6aKgfaZPmwOQChV26hw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQClZ0NmbKDGR8bqK9++F/XZyM8dV/pXzWPoX9TzHTvNxwIhAP5+l0n6kDThhkvDu/Xb5MDqrdjdipnNcGLNFkLa2VrM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8774110},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"9353a686f59ef0f4f1e4a64a81dcf36ffaafba4b","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"11.11.0","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.0","dependencies":{"uuid":"^14.0.2","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.5.1_1788479699630_0.4282099093834213","host":"s3://npm-registry-packages-npm-production"}},"5.6.0":{"name":"@gentleduck/auth","version":"5.6.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.6.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"fddbb61411117ec3a0be09108c67695eafa1af0a","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.6.0.tgz","fileCount":1136,"integrity":"sha512-YhVJXyceT6mdm5+udMuTr54Zu2Tnnv8br+Bb0srj749KM4k6ETDH43Tpe3iLs5PyheELCRLQ/Qs12kc2FNuQfQ==","signatures":[{"sig":"MEQCIHWEOWZez0wdtsANNxg8L5Hj6aj6XnUlVFeNXr27qjefAiA/vOeIwQYWS9AkGe9VWnx2z20ctPV2PTpO3rL4AmL3aA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCpHqHFHUUCcgONeJbAXLlYqGNDRpx4/Glho21ajRqkkgIhALuLIHCSJ1buvKrBDgpZ30p4EuCHOpjHQiP4+XeJJy3j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":8799711},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"9353a686f59ef0f4f1e4a64a81dcf36ffaafba4b","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"11.11.0","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.0","dependencies":{"uuid":"^14.0.2","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.6.0_1788503733911_0.6860578227579943","host":"s3://npm-registry-packages-npm-production"}},"5.7.0":{"name":"@gentleduck/auth","version":"5.7.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.7.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"bf27935f68a9176412811150915484e7267da9aa","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.7.0.tgz","fileCount":1160,"integrity":"sha512-49BnvKWgpLD3pP+diXxigWdEoVm9iBxU5+PSXlD86P9sP4c5FzNM2YGoXtNiaHxowhBBPZ8cben2e5gx2NxL2g==","signatures":[{"sig":"MEUCIEwo4lc10wmnvArG4nSnZEhs+/HnOtKQcGuGBkTGoF/sAiEA5FzWA9CnfDQLe7G8YBXdl5HFOdRvreFC0RHrnSKPY7I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDOJhazhAnvrnI73urwVj9L2EXjIBoe4zS+c5RN1wI5UAIgflNFLYoZ5BpyPk0HnpOkJvezROUOg5PHClH2xoCiS5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9056070},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"9353a686f59ef0f4f1e4a64a81dcf36ffaafba4b","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"11.11.0","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.0","dependencies":{"uuid":"^14.0.2","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.7.0_1788508638870_0.4849038516366626","host":"s3://npm-registry-packages-npm-production"}},"5.7.1":{"name":"@gentleduck/auth","version":"5.7.1","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.7.1","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"64e8ad59afb902b0204dca1b8b654d43ee502042","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.7.1.tgz","fileCount":1160,"integrity":"sha512-2m/cVk2M3KF/DIK6BEK+l+rToeCIbuqWyE9fRmq+68VTsmU0wRoYVyZQyMtgrsXH+AvAuhc8WijCUUWV1OhrMQ==","signatures":[{"sig":"MEYCIQCnpRZLyWQxGNFfWWF0sCs8sh6uScWaeOEkEO7nm6OTigIhAI7+xn5C+C1Aa2dSMkbqQOaIPXVZDfLIHVmwO+H759YT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD7aymAaYOsiPuZI+fxG0QQ40QvdkJnfdjFyF+SOxnKZQIgYand/aZ9hS1lRBn+WBiTNPH3He3fStslLI8684Ff2wg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9063288},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"d4d1f73fda285f78d9f31d5f95e60e25573a6d7b","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"11.11.0","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.0","dependencies":{"uuid":"^14.0.2","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.7.1_1788701689680_0.10914851929085789","host":"s3://npm-registry-packages-npm-production"}},"5.8.0":{"name":"@gentleduck/auth","version":"5.8.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":"GentleDuck (https://www.gentleduck.org)","license":"MIT","_id":"@gentleduck/auth@5.8.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"9f46bea823057b390d430d526bd75862f7779963","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.8.0.tgz","fileCount":1160,"integrity":"sha512-u7bz3UVBJ9N3FQlHy33CaR166W0lK9oRAEuhTIGpDLbl/oiNerMMMMON4pLsEIzsYt0B3Xuq1fGpzpk8bq1UXw==","signatures":[{"sig":"MEUCIFWLvZDHnSnTRqK9pWHsE00x66EHWP5lq0TFyZzzypUbAiEA2S4AsdsVWE4HPBxmz9sgKM0WIzc8e/RsB40D+z6Cta8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIEsrVBzfDUw6k6CrL9DlVSbXm9TDEOZDj/eYYHsPEiQ9AiAUHJCkxS5Jcwg2FcIJYwjXFPumd0U8lKeCnqrrFrBFQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9089294},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","shasum":"9f46bea823057b390d430d526bd75862f7779963","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./adapters/sql":{"import":{"types":"./dist/adapters/sql/index.d.ts","default":"./dist/adapters/sql/index.js"},"require":{"types":"./dist/adapters/sql/index.d.cts","default":"./dist/adapters/sql/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"_integrity":"sha512-u7bz3UVBJ9N3FQlHy33CaR166W0lK9oRAEuhTIGpDLbl/oiNerMMMMON4pLsEIzsYt0B3Xuq1fGpzpk8bq1UXw==","repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"10.8.3","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","dependencies":{"uuid":"^14.0.2","@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"0.0.1","@gentleduck/vitest-config":"0.0.1","@gentleduck/typescript-config":"0.1.0"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"^5.8.1","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.8.0_1788790108751_0.21845573487804182","host":"s3://npm-registry-packages-npm-production"}},"5.9.0":{"name":"@gentleduck/auth","version":"5.9.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":"GentleDuck (https://www.gentleduck.org)","license":"MIT","_id":"@gentleduck/auth@5.9.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"041fa4d587e4bdb96e4a3899aa989c8ba8d2ede6","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.9.0.tgz","fileCount":1210,"integrity":"sha512-xtkhuQUj7myZRThucvFXZ4uKJ2OF8eNRqsXxFcpdXTgTirAGLppHCKQTVFxW633H9FToChLFg0DfU/mZW+JFMw==","signatures":[{"sig":"MEUCIQCXtCmw6xCeuNIXpuBz1MHS8wQlUyMESTIoxB36JoR3SwIgNsKABVwkEQpdnZ9PxAHU5DnDammogbdKQNalqapUFfw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDobaj7ixEy7TlfHsBr9UK2PGMx/izsVHzk7d5DTgr11gIgF7argYJrMY6Uvh2rUWrm7b+2i+0nIGJX1ebtguGGgzs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9734658},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","shasum":"041fa4d587e4bdb96e4a3899aa989c8ba8d2ede6","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./adapters/drizzle":{"import":{"types":"./dist/adapters/drizzle/index.d.ts","default":"./dist/adapters/drizzle/index.js"},"require":{"types":"./dist/adapters/drizzle/index.d.cts","default":"./dist/adapters/drizzle/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-sqlite.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck","test:coverage":"vitest run --project unit --coverage","bench:adapters":"bun run scripts/bench-adapters.ts"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"_integrity":"sha512-xtkhuQUj7myZRThucvFXZ4uKJ2OF8eNRqsXxFcpdXTgTirAGLppHCKQTVFxW633H9FToChLFg0DfU/mZW+JFMw==","repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"10.8.3","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","dependencies":{"@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"0.0.1","@gentleduck/vitest-config":"0.0.1","@gentleduck/typescript-config":"0.1.0"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"^5.9.0","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.9.0_1789657698464_0.2640332479148195","host":"s3://npm-registry-packages-npm-production"}},"5.10.0":{"name":"@gentleduck/auth","version":"5.10.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.10.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"5edb8eb50be895508ef06e1712162880f495c0b2","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.10.0.tgz","fileCount":1210,"integrity":"sha512-IPdUCUnVBpvfMVFFp0f0YEO7vyzckMpFxdL/z9qb1zFZMjIgII9hKF1J0GqILUi34p8QSjd+mv4cniJevIH/cg==","signatures":[{"sig":"MEQCICXiIa7K9W42z+2n4CEO0VqKoX6lSAo/37WBvbbiq/KWAiASkADtwfpTeTpeuAo+DCOp243gEVM/ohfRXMdEdu5/cQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIA/htika6MAJluhUHm0X8sXn96ePdtKgwhH29tXunUB8AiANdvJcJHVljGTzABO/xpe8p8mNdna50mpWRWzB2KGJJg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9778145},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./adapters/drizzle":{"import":{"types":"./dist/adapters/drizzle/index.d.ts","default":"./dist/adapters/drizzle/index.js"},"require":{"types":"./dist/adapters/drizzle/index.d.cts","default":"./dist/adapters/drizzle/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"5b701e657b1df1afb8e59e69a00c4d58b8799691","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-sqlite.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck","test:coverage":"vitest run --project unit --coverage","bench:adapters":"bun run scripts/bench-adapters.ts"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"11.11.0","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"25.8.0","dependencies":{"@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"workspace:^","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.10.0_1789659439141_0.17691144170630957","host":"s3://npm-registry-packages-npm-production"}},"5.11.0":{"name":"@gentleduck/auth","version":"5.11.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":"GentleDuck (https://www.gentleduck.org)","license":"MIT","_id":"@gentleduck/auth@5.11.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"fd88c9de0545cc0a751d0cd190dc33104dd972ee","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.11.0.tgz","fileCount":1231,"integrity":"sha512-8p/mPCXjaOhmAFKjSa4p0ZvCip3mWK42D6lpxTyp4lQqy21lnhut1vkzWmF5aK5kL/HNZmOoKzoHu2qfRTijPg==","signatures":[{"sig":"MEQCIHc5xatNsCuXxX+ayRo7jtJ6Gyk+o5wHUbNPgXqwbe8UAiA0j8XUFCMiA3CTBDUSnCfZc+XE1jjjoqoXNm5xf+9msg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFfRIbuDS2bGJbhEuUZyl8y82nJevUY/WwsAPoxmq7QhAiEAhCqVaRa/4e8gT+6xGv98SUigTL3cNaW9wGxoUw9t9fM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9431398},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","shasum":"fd88c9de0545cc0a751d0cd190dc33104dd972ee","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./adapters":{"import":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"require":{"types":"./dist/adapters/index.d.cts","default":"./dist/adapters/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./adapters/drizzle":{"import":{"types":"./dist/adapters/drizzle/index.d.ts","default":"./dist/adapters/drizzle/index.js"},"require":{"types":"./dist/adapters/drizzle/index.d.cts","default":"./dist/adapters/drizzle/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-sqlite.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck","test:coverage":"vitest run --project unit --coverage","bench:adapters":"bun run scripts/bench-adapters.ts"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"_integrity":"sha512-8p/mPCXjaOhmAFKjSa4p0ZvCip3mWK42D6lpxTyp4lQqy21lnhut1vkzWmF5aK5kL/HNZmOoKzoHu2qfRTijPg==","repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"10.8.3","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","dependencies":{"@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"0.0.1","@gentleduck/vitest-config":"0.0.1","@gentleduck/typescript-config":"0.1.0"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"^5.9.0","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.11.0_1789748847928_0.25106897266720574","host":"s3://npm-registry-packages-npm-production"}},"5.12.0":{"name":"@gentleduck/auth","version":"5.12.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":"GentleDuck (https://www.gentleduck.org)","license":"MIT","_id":"@gentleduck/auth@5.12.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"a6796d593b19f626d9c785c8367d02486e768984","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.12.0.tgz","fileCount":1259,"integrity":"sha512-qoMqqAAPAvv+uQeJQcq8+tH+jxz+tGkW2Pz3HW6oKpTSLNW9qOTZ+WFLtW0p59ip8VCdAlrdzja2OewtsQzY8A==","signatures":[{"sig":"MEYCIQCF2gWAUdHY8Fow8ZkPiNR9f4ygrdVBBk7dwJM5UirArQIhAKs8eAi6WJ1CKubphmukOdSlLvT+Wp8u8J08dHGOJF48","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBEreWJuz7yRNA6A2aBYlbKsMt2FhZqofr2Ox1pB7GIqAiAfSJUiMdhXICZZ8kkTlTuUqhwk5lQsDvpiWOz2hWYErQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":9891197},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","shasum":"a6796d593b19f626d9c785c8367d02486e768984","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./adapters":{"import":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"require":{"types":"./dist/adapters/index.d.cts","default":"./dist/adapters/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./adapters/drizzle":{"import":{"types":"./dist/adapters/drizzle/index.d.ts","default":"./dist/adapters/drizzle/index.js"},"require":{"types":"./dist/adapters/drizzle/index.d.cts","default":"./dist/adapters/drizzle/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-sqlite.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck","test:coverage":"vitest run --project unit --coverage","bench:adapters":"bun run scripts/bench-adapters.ts"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"_integrity":"sha512-qoMqqAAPAvv+uQeJQcq8+tH+jxz+tGkW2Pz3HW6oKpTSLNW9qOTZ+WFLtW0p59ip8VCdAlrdzja2OewtsQzY8A==","repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"10.8.3","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","dependencies":{"@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"0.0.1","@gentleduck/vitest-config":"0.0.1","@gentleduck/typescript-config":"0.1.0"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","svelte":"^4 || ^5","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"^5.9.0","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"svelte":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.12.0_1789768119247_0.2397664066081966","host":"s3://npm-registry-packages-npm-production"}},"5.13.0":{"name":"@gentleduck/auth","version":"5.13.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":"GentleDuck (https://www.gentleduck.org)","license":"MIT","_id":"@gentleduck/auth@5.13.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"bin":{"duck-auth":"dist/cli/index.js"},"dist":{"shasum":"f663152153e6340084d745fa95ab9000fc5d8529","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.13.0.tgz","fileCount":1310,"integrity":"sha512-4bM7NPQxzINcMlTNZngNh7F7Bh/BAFDN5DkxxT+h286nc7rzHvzXfqpcAFJZAR7Zfsyxz1eu2xMoP+lj+VZNfg==","signatures":[{"sig":"MEUCIQCKh8t7Z3n4vjjjxTVHt1RSaiq+pfQQ9l6r+4iUzblC6wIgSCwlPEqvnAzPPvTlaX/yPn+5zc6U3HXyUniZw2tts+Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQD5+6TCrwpAJvicbL3EEnan4Ga+iefhtc3DTBipCszd4gIhALm2aOiTYqmmyRLwETvPOKUIl3URNnwNzLevnO4E2+dt","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10633866},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","shasum":"f663152153e6340084d745fa95ab9000fc5d8529","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./cli":{"import":{"types":"./dist/cli/index.d.ts","default":"./dist/cli/index.js"},"require":{"types":"./dist/cli/index.d.cts","default":"./dist/cli/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./i18n":{"import":{"types":"./dist/i18n/index.d.ts","default":"./dist/i18n/index.js"},"require":{"types":"./dist/i18n/index.d.cts","default":"./dist/i18n/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./adapters":{"import":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"require":{"types":"./dist/adapters/index.d.cts","default":"./dist/adapters/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./channels/ses":{"import":{"types":"./dist/channels/ses/index.d.ts","default":"./dist/channels/ses/index.js"},"require":{"types":"./dist/channels/ses/index.d.cts","default":"./dist/channels/ses/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./channels/smtp":{"import":{"types":"./dist/channels/smtp/index.d.ts","default":"./dist/channels/smtp/index.js"},"require":{"types":"./dist/channels/smtp/index.d.cts","default":"./dist/channels/smtp/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./telemetry/otel":{"import":{"types":"./dist/telemetry/otel/index.d.ts","default":"./dist/telemetry/otel/index.js"},"require":{"types":"./dist/telemetry/otel/index.d.cts","default":"./dist/telemetry/otel/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./channels/resend":{"import":{"types":"./dist/channels/resend/index.d.ts","default":"./dist/channels/resend/index.js"},"require":{"types":"./dist/channels/resend/index.d.cts","default":"./dist/channels/resend/index.cjs"}},"./channels/twilio":{"import":{"types":"./dist/channels/twilio/index.d.ts","default":"./dist/channels/twilio/index.js"},"require":{"types":"./dist/channels/twilio/index.d.cts","default":"./dist/channels/twilio/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./adapters/drizzle":{"import":{"types":"./dist/adapters/drizzle/index.d.ts","default":"./dist/adapters/drizzle/index.js"},"require":{"types":"./dist/adapters/drizzle/index.d.cts","default":"./dist/adapters/drizzle/index.cjs"}},"./channels/console":{"import":{"types":"./dist/channels/console/index.d.ts","default":"./dist/channels/console/index.js"},"require":{"types":"./dist/channels/console/index.d.cts","default":"./dist/channels/console/index.cjs"}},"./channels/webpush":{"import":{"types":"./dist/channels/webpush/index.d.ts","default":"./dist/channels/webpush/index.js"},"require":{"types":"./dist/channels/webpush/index.d.cts","default":"./dist/channels/webpush/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-sqlite.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck","test:coverage":"vitest run --project unit --coverage","bench:adapters":"bun run scripts/bench-adapters.ts"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"_integrity":"sha512-4bM7NPQxzINcMlTNZngNh7F7Bh/BAFDN5DkxxT+h286nc7rzHvzXfqpcAFJZAR7Zfsyxz1eu2xMoP+lj+VZNfg==","repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"10.8.3","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","dependencies":{"@types/node":"^26.1.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","react":"^19.2.7","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^4.1.9","ioredis":"^6.0.0","@types/pg":"^8.21.0","typescript":"^7.0.2","@types/react":"^19.2.17","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/better-sqlite3":"^9.6.0","@gentleduck/tsdown-config":"0.0.1","@gentleduck/vitest-config":"0.0.1","@gentleduck/typescript-config":"0.1.0"},"peerDependencies":{"vue":"^3","react":"^18 || ^19","resend":">=3","svelte":"^4 || ^5","twilio":">=4","solid-js":"^1.9.13","web-push":">=3","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <12","@gentleduck/iam":"^5.9.0","@node-rs/argon2":">=2 <3","@opentelemetry/api":">=1 <2","@aws-sdk/client-kms":">=3 <4","@aws-sdk/client-ses":">=3 <4","@simplewebauthn/server":"^13.3.1"},"peerDependenciesMeta":{"vue":{"optional":true},"react":{"optional":true},"resend":{"optional":true},"svelte":{"optional":true},"twilio":{"optional":true},"solid-js":{"optional":true},"web-push":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"@gentleduck/iam":{"optional":true},"@node-rs/argon2":{"optional":true},"@opentelemetry/api":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@aws-sdk/client-ses":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.13.0_1789901202298_0.22309540971779462","host":"s3://npm-registry-packages-npm-production"}},"5.14.0":{"name":"@gentleduck/auth","version":"5.14.0","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next","react"],"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","_id":"@gentleduck/auth@5.14.0","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"homepage":"https://gentleduck.org/duck-auth","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"dist":{"shasum":"11503e0a687013d776afdb3c7c9684c519ffd929","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.14.0.tgz","fileCount":1177,"integrity":"sha512-qtQolWWfdSIUqFG+/sOrxMipLyuzmBVvGnSmM4EOzX/QRGX6RnlDHBEQUnySc0Dcgf7YeLGsbbB18Z8Upgt50g==","signatures":[{"sig":"MEYCIQCoIWmKACJbZJpQ6i74i6bn+hjAlalVTxcC0p5GfjmMMwIhAM5IiKjPDWtpur8uQ8OkLAetYmdNSZ5VSdaRvZeHAUuU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDBGkuREChDWmyoOf34FoR7f938HKwqDXNHaX+IWQ1JLwIgFKuCv+Z6kmqyld+YBNKg/gQLAxNQ6sL3VF8A+8KNn3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10837040},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./adapters":{"import":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"require":{"types":"./dist/adapters/index.d.cts","default":"./dist/adapters/index.cjs"}},"./client/vue":{"import":{"types":"./dist/client/vue/index.d.ts","default":"./dist/client/vue/index.js"},"require":{"types":"./dist/client/vue/index.d.cts","default":"./dist/client/vue/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./client/react":{"import":{"types":"./dist/client/react/index.d.ts","default":"./dist/client/react/index.js"},"require":{"types":"./dist/client/react/index.d.cts","default":"./dist/client/react/index.cjs"}},"./client/solid":{"import":{"types":"./dist/client/solid/index.d.ts","default":"./dist/client/solid/index.js"},"require":{"types":"./dist/client/solid/index.d.cts","default":"./dist/client/solid/index.cjs"}},"./client/svelte":{"import":{"types":"./dist/client/svelte/index.d.ts","default":"./dist/client/svelte/index.js"},"require":{"types":"./dist/client/svelte/index.d.cts","default":"./dist/client/svelte/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./client/vanilla":{"import":{"types":"./dist/client/vanilla/index.d.ts","default":"./dist/client/vanilla/index.js"},"require":{"types":"./dist/client/vanilla/index.d.cts","default":"./dist/client/vanilla/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./adapters/drizzle":{"import":{"types":"./dist/adapters/drizzle/index.d.ts","default":"./dist/adapters/drizzle/index.js"},"require":{"types":"./dist/adapters/drizzle/index.d.cts","default":"./dist/adapters/drizzle/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./providers/oauth/core":{"import":{"types":"./dist/providers/oauth/core/index.d.ts","default":"./dist/providers/oauth/core/index.js"},"require":{"types":"./dist/providers/oauth/core/index.d.cts","default":"./dist/providers/oauth/core/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./client/react/storybook":{"import":{"types":"./dist/client/react/storybook/index.d.ts","default":"./dist/client/react/storybook/index.js"},"require":{"types":"./dist/client/react/storybook/index.d.cts","default":"./dist/client/react/storybook/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"f0c1f842e6f524d2fa2471531cfd33660bd20f98","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit && bun test ./src/adapters/drizzle/sqlite/__tests__/compliance.bun.ts","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-sqlite.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck && tsc -p tsconfig.bun.json --noEmit --pretty false --skipLibCheck","test:coverage":"vitest run --project unit --coverage","bench:adapters":"bun run scripts/bench-adapters.ts"},"_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"10.9.8","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@types/node":"^26.1.0","@gentleduck/error":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","koa":"^3.2.1","vue":"^3.5.43","hono":"^4.12.34","rxjs":"^7.0.0","jsdom":"^30.0.1","react":"^19.2.7","elysia":"^1.4.30","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^5.0.1","express":"^5.2.1","fastify":"^5.12.5","ioredis":"^6.0.0","solid-js":"^1.9.13","@types/pg":"^8.21.0","react-dom":"^19.2.7","@types/koa":"^3.0.3","typescript":"^7.0.2","@nestjs/core":"^12.0.4","@types/react":"^19.2.17","@grpc/grpc-js":"^1.14.5","@nestjs/common":"^12.0.4","@types/express":"^5.0.0","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","@types/react-dom":"^19.2.3","reflect-metadata":"^0.2.0","@node-saml/node-saml":"^5.1.0","@types/better-sqlite3":"^9.6.0","@simplewebauthn/server":"^14.0.3","@nestjs/platform-express":"^12.0.4","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"pg":">=8","vue":"^3","react":"^18 || ^19","mysql2":">=2","solid-js":"^1.9.13","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <13","better-sqlite3":">=7","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1 || ^14.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"vue":{"optional":true},"react":{"optional":true},"mysql2":{"optional":true},"solid-js":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"better-sqlite3":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/auth_5.14.0_1790618180896_0.7235868505831773","host":"s3://npm-registry-packages-npm-production"}},"5.16.0":{"_id":"@gentleduck/auth@5.16.0","bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"dist":{"shasum":"8d655c98f17d821a1fd7a5df5977f272d90b49a3","tarball":"https://registry.npmjs.org/@gentleduck/auth/-/auth-5.16.0.tgz","fileCount":1104,"integrity":"sha512-pFmN20h6NZdPY8qecXYCWgDOel+u8SEaUxhiwpHYU2GGVC2dJm+vcTRK4xi/fAXa6rhBQGZ/rNztUg7Dxx8kRA==","signatures":[{"sig":"MEUCIQDtpokpf/LNdG2Ye/xUL3OZf0tDoYhMBpXTvz7pY52+KwIgUfhrC97e1CCEvp9lEQNEtRGkkWcT8xdaZM/Y3uy92NE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDEqVYmFpsur9bSvmYmBfuukBfVS4DGirwoYvUvvD3kNwIhAMtekeoa8jv+TErUtuZ5R9gewsWabFiFVaN2aKWpEKls"}],"unpackedSize":10230953},"main":"dist/index.js","name":"@gentleduck/auth","type":"module","types":"dist/index.d.ts","author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"module":"dist/index.js","$schema":"https://json.schemastore.org/package.json","engines":{"node":">=22.0.0"},"exports":{".":{"import":{"types":"./dist/index.d.ts","default":"./dist/index.js"},"require":{"types":"./dist/index.d.cts","default":"./dist/index.cjs"}},"./core":{"import":{"types":"./dist/core/index.d.ts","default":"./dist/core/index.js"},"require":{"types":"./dist/core/index.d.cts","default":"./dist/core/index.cjs"}},"./oidc":{"import":{"types":"./dist/oidc/index.d.ts","default":"./dist/oidc/index.js"},"require":{"types":"./dist/oidc/index.d.cts","default":"./dist/oidc/index.cjs"}},"./test":{"import":{"types":"./dist/test/index.d.ts","default":"./dist/test/index.js"},"require":{"types":"./dist/test/index.d.cts","default":"./dist/test/index.cjs"}},"./oidc/op":{"import":{"types":"./dist/oidc/op/index.d.ts","default":"./dist/oidc/op/index.js"},"require":{"types":"./dist/oidc/op/index.d.cts","default":"./dist/oidc/op/index.cjs"}},"./adapters":{"import":{"types":"./dist/adapters/index.d.ts","default":"./dist/adapters/index.js"},"require":{"types":"./dist/adapters/index.d.cts","default":"./dist/adapters/index.cjs"}},"./server/koa":{"import":{"types":"./dist/server/koa/index.d.ts","default":"./dist/server/koa/index.js"},"require":{"types":"./dist/server/koa/index.d.cts","default":"./dist/server/koa/index.cjs"}},"./core/errors":{"import":{"types":"./dist/core/errors.d.ts","default":"./dist/core/errors.js"},"require":{"types":"./dist/core/errors.d.cts","default":"./dist/core/errors.cjs"}},"./core/events":{"import":{"types":"./dist/core/events/index.d.ts","default":"./dist/core/events/index.js"},"require":{"types":"./dist/core/events/index.d.cts","default":"./dist/core/events/index.cjs"}},"./server/grpc":{"import":{"types":"./dist/server/grpc/index.d.ts","default":"./dist/server/grpc/index.js"},"require":{"types":"./dist/server/grpc/index.d.cts","default":"./dist/server/grpc/index.cjs"}},"./server/hono":{"import":{"types":"./dist/server/hono/index.d.ts","default":"./dist/server/hono/index.js"},"require":{"types":"./dist/server/hono/index.d.cts","default":"./dist/server/hono/index.cjs"}},"./server/next":{"import":{"types":"./dist/server/next/index.d.ts","default":"./dist/server/next/index.js"},"require":{"types":"./dist/server/next/index.d.cts","default":"./dist/server/next/index.cjs"}},"./limiters/mock":{"import":{"types":"./dist/limiters/mock/index.d.ts","default":"./dist/limiters/mock/index.js"},"require":{"types":"./dist/limiters/mock/index.d.cts","default":"./dist/limiters/mock/index.cjs"}},"./providers/mfa":{"import":{"types":"./dist/providers/mfa/index.d.ts","default":"./dist/providers/mfa/index.js"},"require":{"types":"./dist/providers/mfa/index.d.cts","default":"./dist/providers/mfa/index.cjs"}},"./server/elysia":{"import":{"types":"./dist/server/elysia/index.d.ts","default":"./dist/server/elysia/index.js"},"require":{"types":"./dist/server/elysia/index.d.cts","default":"./dist/server/elysia/index.cjs"}},"./server/nestjs":{"import":{"types":"./dist/server/nestjs/index.d.ts","default":"./dist/server/nestjs/index.js"},"require":{"types":"./dist/server/nestjs/index.d.cts","default":"./dist/server/nestjs/index.cjs"}},"./adapters/redis":{"import":{"types":"./dist/adapters/redis/index.d.ts","default":"./dist/adapters/redis/index.js"},"require":{"types":"./dist/adapters/redis/index.d.cts","default":"./dist/adapters/redis/index.cjs"}},"./core/transport":{"import":{"types":"./dist/core/transport/index.d.ts","default":"./dist/core/transport/index.js"},"require":{"types":"./dist/core/transport/index.d.cts","default":"./dist/core/transport/index.cjs"}},"./limiters/redis":{"import":{"types":"./dist/limiters/redis/index.d.ts","default":"./dist/limiters/redis/index.js"},"require":{"types":"./dist/limiters/redis/index.d.cts","default":"./dist/limiters/redis/index.cjs"}},"./providers/saml":{"import":{"types":"./dist/providers/saml/index.d.ts","default":"./dist/providers/saml/index.js"},"require":{"types":"./dist/providers/saml/index.d.cts","default":"./dist/providers/saml/index.cjs"}},"./server/express":{"import":{"types":"./dist/server/express/index.d.ts","default":"./dist/server/express/index.js"},"require":{"types":"./dist/server/express/index.d.cts","default":"./dist/server/express/index.cjs"}},"./server/fastify":{"import":{"types":"./dist/server/fastify/index.d.ts","default":"./dist/server/fastify/index.js"},"require":{"types":"./dist/server/fastify/index.d.cts","default":"./dist/server/fastify/index.cjs"}},"./server/generic":{"import":{"types":"./dist/server/generic/index.d.ts","default":"./dist/server/generic/index.js"},"require":{"types":"./dist/server/generic/index.d.cts","default":"./dist/server/generic/index.cjs"}},"./adapters/memory":{"import":{"types":"./dist/adapters/memory/index.d.ts","default":"./dist/adapters/memory/index.js"},"require":{"types":"./dist/adapters/memory/index.d.cts","default":"./dist/adapters/memory/index.cjs"}},"./adapters/valkey":{"import":{"types":"./dist/adapters/valkey/index.d.ts","default":"./dist/adapters/valkey/index.js"},"require":{"types":"./dist/adapters/valkey/index.d.cts","default":"./dist/adapters/valkey/index.cjs"}},"./core/dataAtRest":{"import":{"types":"./dist/core/dataAtRest/index.d.ts","default":"./dist/core/dataAtRest/index.js"},"require":{"types":"./dist/core/dataAtRest/index.d.cts","default":"./dist/core/dataAtRest/index.cjs"}},"./limiters/memory":{"import":{"types":"./dist/limiters/memory/index.d.ts","default":"./dist/limiters/memory/index.js"},"require":{"types":"./dist/limiters/memory/index.d.cts","default":"./dist/limiters/memory/index.cjs"}},"./limiters/valkey":{"import":{"types":"./dist/limiters/valkey/index.d.ts","default":"./dist/limiters/valkey/index.js"},"require":{"types":"./dist/limiters/valkey/index.d.cts","default":"./dist/limiters/valkey/index.cjs"}},"./adapters/drizzle":{"import":{"types":"./dist/adapters/drizzle/index.d.ts","default":"./dist/adapters/drizzle/index.js"},"require":{"types":"./dist/adapters/drizzle/index.d.cts","default":"./dist/adapters/drizzle/index.cjs"}},"./core/idempotency":{"import":{"types":"./dist/core/idempotency/index.d.ts","default":"./dist/core/idempotency/index.js"},"require":{"types":"./dist/core/idempotency/index.d.cts","default":"./dist/core/idempotency/index.cjs"}},"./providers/api-key":{"import":{"types":"./dist/providers/api-key/index.d.ts","default":"./dist/providers/api-key/index.js"},"require":{"types":"./dist/providers/api-key/index.d.cts","default":"./dist/providers/api-key/index.cjs"}},"./providers/passkey":{"import":{"types":"./dist/providers/passkey/index.d.ts","default":"./dist/providers/passkey/index.js"},"require":{"types":"./dist/providers/passkey/index.d.cts","default":"./dist/providers/passkey/index.cjs"}},"./oidc/op/drizzle/pg":{"import":{"types":"./dist/oidc/op/drizzle/pg.d.ts","default":"./dist/oidc/op/drizzle/pg.js"},"require":{"types":"./dist/oidc/op/drizzle/pg.d.cts","default":"./dist/oidc/op/drizzle/pg.cjs"}},"./adapters/drizzle/pg":{"import":{"types":"./dist/adapters/drizzle/pg/index.d.ts","default":"./dist/adapters/drizzle/pg/index.js"},"require":{"types":"./dist/adapters/drizzle/pg/index.d.cts","default":"./dist/adapters/drizzle/pg/index.cjs"}},"./providers/passwords":{"import":{"types":"./dist/providers/passwords/index.d.ts","default":"./dist/providers/passwords/index.js"},"require":{"types":"./dist/providers/passwords/index.d.cts","default":"./dist/providers/passwords/index.cjs"}},"./providers/magic-link":{"import":{"types":"./dist/providers/magic-link/index.d.ts","default":"./dist/providers/magic-link/index.js"},"require":{"types":"./dist/providers/magic-link/index.d.cts","default":"./dist/providers/magic-link/index.cjs"}},"./providers/oauth/core":{"import":{"types":"./dist/providers/oauth/core/index.d.ts","default":"./dist/providers/oauth/core/index.js"},"require":{"types":"./dist/providers/oauth/core/index.d.cts","default":"./dist/providers/oauth/core/index.cjs"}},"./oidc/op/drizzle/mysql":{"import":{"types":"./dist/oidc/op/drizzle/mysql.d.ts","default":"./dist/oidc/op/drizzle/mysql.js"},"require":{"types":"./dist/oidc/op/drizzle/mysql.d.cts","default":"./dist/oidc/op/drizzle/mysql.cjs"}},"./providers/oauth/apple":{"import":{"types":"./dist/providers/oauth/apple/index.d.ts","default":"./dist/providers/oauth/apple/index.js"},"require":{"types":"./dist/providers/oauth/apple/index.d.cts","default":"./dist/providers/oauth/apple/index.cjs"}},"./adapters/drizzle/mysql":{"import":{"types":"./dist/adapters/drizzle/mysql/index.d.ts","default":"./dist/adapters/drizzle/mysql/index.js"},"require":{"types":"./dist/adapters/drizzle/mysql/index.d.cts","default":"./dist/adapters/drizzle/mysql/index.cjs"}},"./oidc/op/drizzle/sqlite":{"import":{"types":"./dist/oidc/op/drizzle/sqlite.d.ts","default":"./dist/oidc/op/drizzle/sqlite.js"},"require":{"types":"./dist/oidc/op/drizzle/sqlite.d.cts","default":"./dist/oidc/op/drizzle/sqlite.cjs"}},"./providers/oauth/github":{"import":{"types":"./dist/providers/oauth/github/index.d.ts","default":"./dist/providers/oauth/github/index.js"},"require":{"types":"./dist/providers/oauth/github/index.d.cts","default":"./dist/providers/oauth/github/index.cjs"}},"./providers/oauth/google":{"import":{"types":"./dist/providers/oauth/google/index.d.ts","default":"./dist/providers/oauth/google/index.js"},"require":{"types":"./dist/providers/oauth/google/index.d.cts","default":"./dist/providers/oauth/google/index.cjs"}},"./adapters/drizzle/sqlite":{"import":{"types":"./dist/adapters/drizzle/sqlite/index.d.ts","default":"./dist/adapters/drizzle/sqlite/index.js"},"require":{"types":"./dist/adapters/drizzle/sqlite/index.d.cts","default":"./dist/adapters/drizzle/sqlite/index.cjs"}},"./providers/oauth/discord":{"import":{"types":"./dist/providers/oauth/discord/index.d.ts","default":"./dist/providers/oauth/discord/index.js"},"require":{"types":"./dist/providers/oauth/discord/index.d.cts","default":"./dist/providers/oauth/discord/index.cjs"}},"./providers/oauth/linkedin":{"import":{"types":"./dist/providers/oauth/linkedin/index.d.ts","default":"./dist/providers/oauth/linkedin/index.js"},"require":{"types":"./dist/providers/oauth/linkedin/index.d.cts","default":"./dist/providers/oauth/linkedin/index.cjs"}},"./providers/oauth/microsoft":{"import":{"types":"./dist/providers/oauth/microsoft/index.d.ts","default":"./dist/providers/oauth/microsoft/index.js"},"require":{"types":"./dist/providers/oauth/microsoft/index.d.cts","default":"./dist/providers/oauth/microsoft/index.cjs"}}},"gitHead":"b13242469bf9a7d7fdaba736ed4fd23eb4c804bd","license":"MIT","scripts":{"dev":"tsdown --watch","lint":"biome lint --write ./","test":"vitest run --project unit && bun test ./src/adapters/drizzle/sqlite/__tests__/compliance.bun.ts","build":"tsdown","clean":"rimraf dist .cache .turbo node_modules","format":"biome format --write ./","findings":"bun run scripts/collect-findings.ts","test:e2e":"vitest run --project e2e","benchmark":"bun run scripts/benchmark.ts","dead-keys":"bun run scripts/audit-dead-keys.ts","e2e:schema":"drizzle-kit generate --config src/test/drizzle-e2e.config.ts && node src/test/pg-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-mysql.config.ts && node src/test/mysql-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-sqlite.config.ts && node src/test/sqlite-e2e-schema.mjs && drizzle-kit generate --config src/test/drizzle-e2e-oidc-pg.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-mysql.config.ts && drizzle-kit generate --config src/test/drizzle-e2e-oidc-sqlite.config.ts && node src/test/oidc-e2e-schema.mjs","check-types":"tsc -p tsconfig.json --noEmit --pretty false --skipLibCheck && tsc -p tsconfig.bun.json --noEmit --pretty false --skipLibCheck","test:coverage":"vitest run --project unit --coverage","bench:adapters":"bun run scripts/bench-adapters.ts"},"version":"5.16.0","_npmUser":{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"},"homepage":"https://gentleduck.org/duck-auth","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next"],"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"_npmVersion":"10.9.8","description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","directories":{},"maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"sideEffects":false,"_nodeVersion":"22.23.2","dependencies":{"@types/node":"^26.1.0","@gentleduck/error":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.23.0","koa":"^3.2.1","hono":"^4.12.34","rxjs":"^7.0.0","elysia":"^1.4.30","mysql2":"^3.23.4","tsdown":"^0.22.3","vitest":"^5.0.1","express":"^5.2.1","fastify":"^5.12.5","ioredis":"^6.0.0","@types/pg":"^8.21.0","@types/koa":"^3.0.3","typescript":"^7.0.2","@nestjs/core":"^12.0.4","@grpc/grpc-js":"^1.14.5","@nestjs/common":"^12.0.4","@types/express":"^5.0.0","better-sqlite3":"^13.0.3","@node-rs/argon2":"2.1.0","reflect-metadata":"^0.2.0","@node-saml/node-saml":"^5.1.0","@types/better-sqlite3":"^9.6.0","@simplewebauthn/server":"^14.0.3","@nestjs/platform-express":"^12.0.4","@gentleduck/tsdown-config":"workspace:*","@gentleduck/vitest-config":"workspace:*","@gentleduck/typescript-config":"workspace:*"},"peerDependencies":{"pg":">=8","mysql2":">=2","drizzle-orm":"^0.45.2","@nestjs/common":">=10 <13","better-sqlite3":">=7","@node-rs/argon2":">=2 <3","@aws-sdk/client-kms":">=3 <4","@simplewebauthn/server":"^13.3.1 || ^14.0.0"},"peerDependenciesMeta":{"pg":{"optional":true},"mysql2":{"optional":true},"drizzle-orm":{"optional":true},"@nestjs/common":{"optional":true},"better-sqlite3":{"optional":true},"@node-rs/argon2":{"optional":true},"@aws-sdk/client-kms":{"optional":true},"@simplewebauthn/server":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/auth_5.16.0_1790708336883_0.5149422318317107"}}},"time":{"created":"2026-05-29T05:47:17.599Z","modified":"2026-09-29T18:58:57.250Z","0.2.0":"2026-05-29T05:47:17.945Z","2.0.0":"2026-06-19T20:09:47.691Z","3.0.0":"2026-06-20T05:26:42.537Z","4.0.0":"2026-06-22T16:16:10.615Z","4.0.1":"2026-06-22T17:03:17.323Z","5.0.0":"2026-06-22T21:53:22.449Z","5.1.0":"2026-08-17T12:25:06.357Z","5.2.0":"2026-08-19T06:54:11.491Z","5.3.0":"2026-08-22T15:22:30.104Z","5.3.1":"2026-08-26T08:35:52.343Z","5.3.2":"2026-08-26T11:49:17.678Z","5.3.4":"2026-08-26T14:28:09.038Z","5.3.5":"2026-09-02T18:22:00.932Z","5.3.6":"2026-09-02T22:23:34.547Z","5.4.0":"2026-09-02T22:50:09.227Z","5.4.1":"2026-09-03T22:54:35.775Z","5.5.0":"2026-09-03T23:51:06.609Z","5.5.1":"2026-09-03T23:54:59.838Z","5.6.0":"2026-09-04T06:35:34.118Z","5.7.0":"2026-09-04T07:57:19.067Z","5.7.1":"2026-09-06T13:34:49.828Z","5.8.0":"2026-09-07T14:08:28.902Z","5.9.0":"2026-09-17T15:08:18.737Z","5.10.0":"2026-09-17T15:37:19.291Z","5.11.0":"2026-09-18T16:27:28.063Z","5.12.0":"2026-09-18T21:48:39.420Z","5.13.0":"2026-09-20T10:46:42.454Z","5.14.0":"2026-09-28T17:56:21.115Z","5.16.0":"2026-09-29T18:58:57.035Z"},"bugs":{"url":"https://github.com/gentleeduck/duck-iam/issues"},"author":{"url":"https://www.gentleduck.org","name":"GentleDuck"},"license":"MIT","homepage":"https://gentleduck.org/duck-auth","keywords":["auth","authentication","passkey","webauthn","oauth","magic-link","mfa","totp","jwt","session","csrf","passwordless","iam","rbac","abac","express","hono","next"],"repository":{"url":"git+https://github.com/gentleeduck/duck-iam.git","type":"git","directory":"packages/duck-auth"},"description":"Authentication for modern TypeScript apps. Faceted, framework-agnostic, transport-pluggable. Pairs with @gentleduck/iam.","maintainers":[{"name":"wildduck","email":"ahmedayobbusiness@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"./public/logo-dark.svg\" alt=\"@gentleduck/auth\" width=\"120\"/>\n</p>\n\n<h1 align=\"center\">@gentleduck/auth</h1>\n\n<p align=\"center\">\n  Faceted, framework-agnostic, transport-pluggable authentication for TypeScript. Pairs with <a href=\"https://www.npmjs.com/package/@gentleduck/iam\"><code>@gentleduck/iam</code></a> for authorization.\n</p>\n\n<p align=\"center\">\n  <a href=\"./LICENSE\">MIT</a> -\n  <a href=\"./CHANGELOG.md\">Changelog</a> -\n  <a href=\"./SECURITY.md\">Security</a> -\n  <a href=\"https://gentleduck.org/duck-auth\">Docs</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@gentleduck/auth\"><img src=\"https://img.shields.io/npm/v/@gentleduck/auth.svg\" alt=\"npm\"/></a>\n  <a href=\"https://www.npmjs.com/package/@gentleduck/auth\"><img src=\"https://img.shields.io/npm/dm/@gentleduck/auth.svg\" alt=\"downloads\"/></a>\n  <a href=\"./LICENSE\"><img src=\"https://img.shields.io/npm/l/@gentleduck/auth.svg\" alt=\"MIT\"/></a>\n</p>\n\n---\n\nEvery TypeScript auth library makes you choose framework lock-in (NextAuth, Auth.js), a hosted control plane (Clerk, WorkOS, Stytch), or DIY-on-Lucia + passport + your own glue. `@gentleduck/auth` is the third option, but unified: framework-agnostic core, batteries-included adapters, no hosted plane. Wire it into Express, Hono, Next.js, Fastify, Koa, NestJS, Elysia, gRPC, or your own router with one adapter import.\n\nZero hosted dependencies. Tree-shakeable subpath exports. Lazy peer deps for the heavy bits (argon2, simplewebauthn, the AWS KMS client, the database drivers).\n\n## Install\n\n```bash\nnpm install @gentleduck/auth\n# or\nbun add @gentleduck/auth\n```\n\nInstall only what you wire:\n\n| Package | When you need it |\n|---|---|\n| `@node-rs/argon2` | Argon2id password hashing (FIPS / HIPAA presets) |\n| `@simplewebauthn/server` | Passkey / WebAuthn-MFA |\n| `@aws-sdk/client-kms` | AWS KMS envelope encryption at rest |\n| `drizzle-orm` + `pg`, `mysql2` or `better-sqlite3` | Drizzle adapter (pg / mysql / sqlite) |\n| `ioredis` or `@upstash/redis` | Redis-backed session / idempotency / limiter / events / DPoP-nonce stores |\n| `@node-saml/node-saml` | SAML 2.0 SP |\n| `@nestjs/common` | NestJS adapter |\n\n## Quick start\n\n```typescript\nimport { createAuth } from '@gentleduck/auth/core'\nimport { MemoryAdapter } from '@gentleduck/auth/adapters/memory'\nimport { MemoryLimiter } from '@gentleduck/auth/limiters/memory'\nimport { Argon2idHasher, passwords } from '@gentleduck/auth/providers/passwords'\n\nconst storage = new MemoryAdapter()\n\nexport const auth = createAuth({\n  baseUrl: 'http://localhost:3000',\n  stores: storage,\n  limiter: new MemoryLimiter({ max: 5, windowMs: 60_000 }),\n  providers: [passwords({ hasher: new Argon2idHasher() })],\n})\n\nconst identity = await auth.identities.create({ profile: { username: 'a', email: 'a@x.com' } })\nawait auth.passwords.set(identity.id, 'correct-horse-battery', auth.cfg.stores.credentials)\n\nconst result = await auth.flows.signIn({\n  providerId: 'password',\n  input: { email: 'a@x.com', password: 'correct-horse-battery' },\n})\n// result.session, result.sid, result.intents[]\n```\n\n`createAuth` is the factory that wires the facets, picks sane defaults (a `CookieTransport` named `duck-sid`, `InMemoryEvents`), and registers the providers you pass. `passwords()` hashes with `Argon2idHasher` unless you pass `hasher`, so install `@node-rs/argon2` or pass `ScryptHasher`. For full control, instantiate `AuthEngine` directly - both APIs accept the same primitives.\n\n## Architecture\n\n`AuthEngine` is the root: every state-changing operation lives behind one named facet so adapters, transports, and providers compose without back-channel coupling.\n\n| Facet | Owns |\n|---|---|\n| `identities` | profile CRUD, link/unlink, soft-delete + grace-period restore, GDPR export, bulk import |\n| `sessions` | rotateOrCreate (single privilege-changing API), getBySid, revoke, revokeAllForIdentity, gc |\n| `credentials` | password / api-key / oauth / passkey / recovery / totp / webauthn-mfa rows; CAS rotation |\n| `passwords` | strength + cap validation, constant-time verify, needsRehash + auto-rehash, common-list reject |\n| `passkeys` | list / revoke / revokeAll, scoped to the identity that holds them |\n| `mfa` | TOTP enrollment + verify, backup-code mint/verify, WebAuthn-MFA |\n| `apiKeys` | mint / list / rotate / revoke / revokeAll / verify + scope checks, tenant-bound issuance |\n| `flows` | signIn / signOut / signUp (multi-stage) / password-reset / email-verification / account-deletion / linkProvider / unlinkProvider / impersonate / step-up / step-down |\n| `csrf` | double-submit + origin-only + sec-fetch-site gates, `__Host-` cookie |\n| `webhooks` | HMAC + timestamp + tolerance, retry w/ backoff, dead-letter, SSRF-guarded URLs |\n| `events` | typed bus, lockout / signin.success / signin.failed / suspicious / session.revoked / mfa.removed |\n| `hijack` | IP / UA drift detection + step-up / rotate / revoke reaction policy |\n| `anomaly` | pluggable detectors (impossible-travel, device-fingerprint), composition + decision ladder |\n| `orgs` | org + membership CRUD, role sanitisation, multi-tenant guard |\n\nPlus `m2m` (`client_credentials` OAuth2 grant), `compliance` (GDPR / HIPAA / SOC2 / FIPS presets), `plugin` (named install + facet extension), and `audit` (admin-mutation hook with redaction).\n\n## Providers\n\n| Path | What |\n|---|---|\n| `@gentleduck/auth/providers/passwords` | Email + password |\n| `@gentleduck/auth/providers/magic-link` | Passwordless one-time link |\n| `@gentleduck/auth/providers/passkey` | WebAuthn passkey (lazy peerDep on `@simplewebauthn/server`) |\n| `@gentleduck/auth/providers/api-key` | Long-lived bearer keys via `ApiKeysFacet` |\n| `@gentleduck/auth/providers/oauth/google` | Google OAuth (PKCE + nonce) |\n| `@gentleduck/auth/providers/oauth/github` | GitHub OAuth (PKCE + state) |\n| `@gentleduck/auth/providers/oauth/microsoft` | Microsoft / Entra ID OAuth |\n| `@gentleduck/auth/providers/oauth/discord` | Discord OAuth |\n| `@gentleduck/auth/providers/oauth/linkedin` | LinkedIn OAuth |\n| `@gentleduck/auth/providers/oauth/apple` | Sign in with Apple |\n| `@gentleduck/auth/providers/oauth/core` | Any other OAuth 2.0 / OIDC IdP: `oProvider` over an `OAuthClient` |\n| `@gentleduck/auth/providers/saml` | Wrapper over a `@node-saml/node-saml` client you build: SP-initiated + IdP-initiated SSO, SP metadata XML generation, Single Logout (SP- and IdP-initiated) |\n\n## Transports\n\n```typescript\nimport {\n  CookieTransport,    // __Host- prefix + HttpOnly + SameSite=Lax (default)\n  BearerTransport,    // opaque tokens in Authorization header\n  JwtTransport,       // HS256 / RS256 / ES256 / EdDSA + JWKS rotation\n  CompositeTransport, // chain multiple transports\n} from '@gentleduck/auth/core/transport'\n\nimport {\n  DPoPVerifier,\n  MemoryDPoPNonceStore,\n  computeJwkThumbprint,\n  bindPayloadToDPoP,\n} from '@gentleduck/auth/core/transport' // RFC 9449\n```\n\n## Storage adapters\n\n```typescript\nimport { MemoryAdapter } from '@gentleduck/auth/adapters/memory'\nimport { DrizzlePgAdapter } from '@gentleduck/auth/adapters/drizzle/pg'\nimport { DrizzleMysqlAdapter } from '@gentleduck/auth/adapters/drizzle/mysql'\nimport { DrizzleSqliteAdapter } from '@gentleduck/auth/adapters/drizzle/sqlite'\nimport {\n  RedisSessionImpl,\n  RedisEvents,\n  RedisDPoPNonceStore,\n} from '@gentleduck/auth/adapters/redis'\nimport { RedisLimiter } from '@gentleduck/auth/limiters/redis'\nimport { FakeRedis } from '@gentleduck/auth/test' // in-tree, for tests\n\n// One class per dialect, implementing the three store contracts. The constructor takes a\n// connection string, a driver pool, or a drizzle handle you already have.\nconst storage = new DrizzlePgAdapter('postgres://localhost/app')\nconst { identities, credentials, sessions } = storage\n```\n\n### What a call costs\n\np50 at the adapter boundary - drizzle building the SQL, the driver, the round trip and the row mapping -\nover 50k identities and 100k logins on every backend, on one laptop under everyday load:\n\n| call | Memory | SQLite | Postgres | MySQL |\n| --- | --- | --- | --- | --- |\n| `find({ id })` | 3 µs | 0.089 ms | 0.280 ms | 0.255 ms |\n| `find({ email })` | 7 µs | 0.090 ms | 0.299 ms | 0.259 ms |\n| `find({ providerId, providerSub })` | 8 µs | 0.112 ms | 0.383 ms | 0.282 ms |\n| `create (2 logins)` | 2.125 ms | 0.632 ms | 0.650 ms | 1.184 ms |\n| `erase` | 3 µs | 0.543 ms | 0.499 ms | 1.348 ms |\n| `link` | 0.630 ms | 0.454 ms | 0.549 ms | 1.404 ms |\n| `patchMetadata` | 4 µs | 0.282 ms | 0.271 ms | 0.906 ms |\n\nReads are index-driven on every dialect and the driver round trip costs ~5x the query it carries. Writes\nare one statement on Postgres (`create` and `erase` are each a single CTE) and a transaction on the\nothers, which have no `RETURNING` or no DML inside a `WITH`. Memory's `create` and `link` are the\noutliers: both check a login against every row the adapter holds, which is a test double being one, not a\nstore to run 50k accounts through.\n\nRun it yourself with `bun run bench:adapters` - it starts and removes its own containers. The plans, the\np95s, the method behind these and what is deliberately left unoptimised are in\n[`src/adapters/README.md`](./src/adapters/README.md).\n\n## Transactions\n\nEvery SQL-backed write and read can run on a transaction you own. `withTransaction(tx)`\nreturns a view of the engine bound to your transaction handle; the handle is opaque to\nduck-auth and is handed straight back to your adapter.\n\n```typescript\nconst pending = await db.transaction(async (tx) => {\n  const auth = engine.withTransaction(tx)\n  await auth.identities.softDelete(identityId)\n  await auth.sessions.revokeAllForIdentity(identityId)\n  await tx.delete(users).where(eq(users.id, identityId))\n  return auth.pending\n})\nawait pending.flush()   // publish the events only once the commit landed\n```\n\nNested calls inherit it: `auth.flows.completeAccountDeletion()` reaches\n`identities.softDelete`, `sessions.revokeAllForIdentity` and `credentials.delete`, and all\nthree land on your transaction. Reads are bound too, so a read inside the transaction sees\nthat transaction's own uncommitted writes.\n\n**Events do not fire inside a transaction.** They buffer in `pending` and publish when you\ncall `flush()`. A rolled-back delete therefore never appears in the audit trail as a\ncompleted one. Call `flush()` after your commit; call `pending.discard()` if you rolled\nback deliberately and want the buffer dropped. `pending.peek()` inspects the buffer without\ndraining it.\n\n### What is and isn't transactional\n\n| Surface | In a transaction? | On rollback |\n|---|---|---|\n| `identities`, `sessions`, `credentials` - writes and reads | yes | undone |\n| `flows.*`, including nested facet calls | yes | undone |\n| `mfa`, `apiKeys`, `passwords` credential writes | yes | undone |\n| `orgs` | interface ready; no shipped SQL adapter | n/a |\n| events | buffered in `pending` | never published |\n| `deliver` calls (verification / reset mail) | **no - sent immediately** | mail already delivered |\n| `limiter` counters | **no** | token stays consumed |\n| `hijack` / `anomaly` scoring | **no** | scores stand |\n\nThe last two rows are guards: they decide *whether* to do the work, they write nothing to SQL,\nand they are not reachable on the bound view at all - use `engine.limiter`,\n`engine.hijack` and `engine.anomaly` outside the transaction. A flow that sends mail should be\ncalled outside a transaction, or split so the send happens after the commit; no rollback\ncan retract a delivered email.\n\n**An engine with no transaction supplied behaves exactly as before:** writes go to its own\nconnection and events publish immediately.\n\n### Adapter support\n\n`withTransaction` needs the adapter you passed as `stores` to implement `withClient` - one\ncall rebinds every facet, since they share its connection. The drizzle pg, mysql and sqlite\nadapters do. Memory, redis and valkey do not - they cannot join a SQL transaction - and nor\ncan a bag you assembled facet by facet, so `withTransaction` throws `AUTH_MISCONFIGURED`\nrather than silently leaving those writes outside your transaction.\n\n### Every mutating call answers with what it did\n\nA write that returns `void` cannot be told apart from one that matched nothing, and forces a\nsecond read for something the statement already had. Every mutating call returns the row,\nthe rows, or the count it touched. A single-row call that matched nothing rejects, and `.orNull()`\nreads that as `null`; a bulk one answers `[]` or `0`. Where the\ndialect has `RETURNING` this is the same round trip.\n\n```typescript\nconst identity = await auth.identities.softDelete(id)\n// `deletedAt` is when the grace window CLOSES, so the deadline you show the user\n// comes off the write itself rather than a second reading of the clock.\nidentity.deletedAt        // Date | null\nidentity.emailVerified    // false - the address is free to be claimed meanwhile\n\nconst erased = await auth.identities.erase(id, { reason: 'gdpr' })\n// The row as it was: after the delete there is nothing left to read.\n\nconst ended = await auth.sessions.revokeAllForIdentity(id)\nconst notice = `Signed out of ${ended.length} devices`   // no second query; already read to emit events\n```\n\n| Surface | Calls | Answers with |\n|---|---|---|\n| `identities` | `softDelete`, `restore`, `erase`, `link`, `unlink` | the row |\n| `sessions` | `revoke`, `revokeByHash` | the session ended |\n| `sessions` | `revokeAllForIdentity` | the sessions ended |\n| `cfg.stores.credentials` | `revoke` / `revokeByKind`, `delete` / `deleteByKind` | the row / the rows |\n| `apiKeys` | `revoke` / `revokeAll` | the key / the keys revoked |\n| `passkeys` | `revoke` / `revokeAll` | the passkey / the passkeys revoked, without the secret |\n| `mfa` | `removeTotp`, `removeWebauthnMfa`, `removeBackupCodes` | `{ removed }` - the count, not the rows, which carry the secret |\n| `orgs` | `removeMember`, `setRoles` | the membership, with the **sanitized** role set actually stored |\n| `flows` | `completeAccountDeletion`, `cancelAccountDeletion`, `completeEmailVerification`, `linkProvider`, `unlinkProvider` | `identity`, alongside the fields they already returned |\n| `webhooks` | `deliverOne` | one `Delivery` per eligible endpoint |\n| `pending` | `flush`, `discard` | `{ published }` / `{ discarded }` |\n| `anomaly` | `unregister` | whether it removed anything |\n\nAssertions (`apiKeys.requireScopes`), `hijack.applyReaction`, registrations (`anomaly.register`, `providers.register`) and\n`plugins.dispose` stay `void`: they throw or they do not, and a return value would be noise.\n\n### Batch writes\n\nBatch forms take a list and answer the rows they wrote:\n\n```typescript\nconst written = await auth.identities.updateProfileMany([\n  { id: a, patch: { displayName: 'A' }, expectedVersion: 3 },\n  { id: b, patch: { displayName: 'B' }, expectedVersion: 7 },\n])\nwritten.map((row) => row.id)  // [a] when b lost its version race\n```\n\nAvailable on `identities` (`softDeleteMany`, `restoreMany`, `eraseMany`, `updateProfileMany`,\n`linkMany`, `unlinkMany`) and `sessions` (`revokeAllForIdentities`, `revokeByHashes`). Each collapses to one\nstatement per table where the adapter can express it and loops otherwise, so every adapter\nsupports every batch form.\n\nA **hard** failure - a constraint violation - throws and aborts your transaction, so one\nbad row rolls the whole batch back. A **soft** failure - a lost optimistic-lock race, a\nmissing row - leaves that row out of the answer and does not throw.\n\n## Events\n\nEach handler picks where it runs. An `origin` handler runs once, on the server that emitted, inside\nthat request's async context. A `fleet` handler, the default, runs on every server; on the others it\ngets a copy of the payload and no request context.\n\n```typescript\nimport { redisEvents } from '@gentleduck/auth/adapters/redis'\n\nconst auth = createAuth({ events: redisEvents({ redis }) /* ... */ })\n\n// A write that must happen once: origin.\nauth.events.on('session.revoked', (e) => auditLog.write(e), { delivery: 'origin' })\n\n// State every server keeps: fleet.\nauth.events.on('authz.revoked', ({ identityId }) => decisionCache.drop(identityId))\n```\n\n`fleet` handlers need `redisEvents` once there is more than one server, since the in-process default\nruns them on one. `strict({ env: 'production' })` refuses the in-process bus while it holds a `fleet`\nhandler, and passes it when every handler is `origin`. It sees only the handlers registered before it\nruns, so call it after every `on()` and `use()`. Webhooks go out as `origin`, once per emit.\n\n## Server adapters\n\nduck-auth ships no routes and no client. Your app writes its own routes over `auth.flows.*` and calls them\nwith its own `fetch`. Each adapter carries only the glue: a CSRF guard, the caller's address and user agent,\nan intents writer, the actor context and the error mapping.\n\n```typescript\nimport { AuthError } from '@gentleduck/auth/core'\nimport { applyIntents, expressCaller, expressCsrf, toHeaders } from '@gentleduck/auth/server/express'\nimport { errorToHttp } from '@gentleduck/auth/server/generic'\n\napp.use('/auth', expressCsrf(auth))\n\napp.post('/auth/signin', async (req, res) => {\n  const { providerId, input } = req.body ?? {}\n  if (typeof providerId !== 'string') throw new AuthError('AUTH_INVALID_PARAMETERS')\n  const headers = toHeaders(req.headers)\n  const { intents } = await auth.flows.signIn({\n    input,\n    providerId,\n    ...expressCaller(req),\n    previousSid: auth.transport.extract({ headers }) ?? undefined,\n  })\n  applyIntents(intents, res)\n})\n\napp.post('/auth/signout', async (req, res) => {\n  const sid = auth.transport.extract({ headers: toHeaders(req.headers) })\n  applyIntents(sid ? (await auth.flows.signOut(sid)).intents : auth.transport.revoke(), res)\n})\n\n// A refusal throws an AuthError; `errorToHttp` maps it to the status and body\napp.use((err, _req, res, _next) => {\n  const { status, body } = errorToHttp(err)\n  res.status(status).json(body)\n})\n```\n\n| Framework | Import | Glue |\n|---|---|---|\n| Express | `@gentleduck/auth/server/express` | `expressCsrf`, `expressCaller`, `applyIntents`, `expressActorContext` |\n| Hono | `@gentleduck/auth/server/hono` | `honoCsrf`, `honoCaller`, `honoActorContext` |\n| Fastify | `@gentleduck/auth/server/fastify` | `fastifyCsrf`, `fastifyCaller`, `fastifyWithActor` |\n| Koa | `@gentleduck/auth/server/koa` | `koaCsrf`, `koaCaller`, `koaApplyIntents`, `koaActorContext` |\n| NestJS | `@gentleduck/auth/server/nestjs` | `makeCsrfGuard`, `makeGuard`, `nestCaller`, `NestExceptionFilter`, `CurrentSession` |\n| Elysia | `@gentleduck/auth/server/elysia` | `elysiaCsrf`, `elysiaCaller`, `elysiaWithActor` |\n| Next.js | `@gentleduck/auth/server/next` | `withNextCsrf`, `nextCaller`, `nextWithActor` |\n| gRPC | `@gentleduck/auth/server/grpc` | `withGrpc` |\n| Web Fetch | `@gentleduck/auth/server/generic` | `executeIntents`, `jsonResponse`, `errorResponse`, `errorToHttp`, `readBodyJson` |\n\nWhat your routes now own:\n\n- **CSRF** on sign-in, sign-out, provider begin and every other mutation.\n- **The OAuth callback stays unguarded.** Apple posts it cross-site by design and the signed state is the\n  proof. Read the query on a GET, the urlencoded body on a POST, and pass `cookieHeader` and `previousSid`.\n- **`csrfHash` out of any session you answer with.** It is server-side state; the browser holds the plaintext.\n- **A step-up before destroying a factor.** Check `auth.flows.checkStepUp(session, { aal: 2 })` before\n  removing TOTP or regenerating backup codes, and rate-limit TOTP verification on `stepup:${identityId}`.\n- **The session's tenant** passed to `auth.mfa.*`, which reads unscoped without one.\n\n`examples/duck-auth` has the full route set for all eight frameworks.\n\n## Delivery\n\nEvery outbound token - magic link, email verification, password reset, account deletion and its undo\nlink - goes to one `deliver` callback on the engine config. The library signs the URL and hands over the\nrecipient's identity, the template vars and the tenant; the host picks the transport and writes the\ntemplate. Every message's `vars` has the signed `url` and its lifetime `ttlMin`; switching on `kind` narrows\nthem further (`requiresMfa` on a password reset, `restorableUntil` on the undo link). Throw from it to report a failure: the flow answers the caller the same either way and reports\nthe refusal as a `signin.failed` event, never the thrown text.\n\n```typescript\nconst auth = createAuth({\n  baseUrl: 'https://app.example.com',\n  deliver: async ({ identity, kind, vars }) => {\n    if (kind === 'magic-link') return mailer.send(identity.profile.email, signInTemplate(vars.url))\n    await mailer.send(identity.profile.email, genericTemplate(kind, vars))\n  },\n  // ...\n})\n```\n\n## Captcha verifiers\n\n```typescript\nimport {\n  authTurnstileVerifier,\n  authHCaptchaVerifier,\n  authRecaptchaV3Verifier,\n} from '@gentleduck/auth/core'\n```\n\n## Tooling\n\n| Path | What |\n|---|---|\n| `@gentleduck/auth/oidc` | OIDC discovery-doc + JWKS helper |\n| `@gentleduck/auth/oidc/op` | Full OAuth2/OIDC OP: `/authorize` (code + S256 PKCE), `/token` (auth_code + refresh, family-rotated), `/userinfo`, `/introspect`, `/revoke`, `/register` (RFC 7591 Dynamic Client Registration) |\n| `@gentleduck/auth/oidc/op/drizzle/pg` | Postgres Drizzle stores for the OIDC OP (5 tables, GC helper) |\n| `@gentleduck/auth/oidc/op/drizzle/sqlite` | SQLite Drizzle stores for the OIDC OP |\n| `@gentleduck/auth/oidc/op/drizzle/mysql` | MySQL Drizzle stores for the OIDC OP |\n\n## Production primitives\n\n- **`AuthEngine.strict({ env: 'production' })`** - boot-time validation: rejects `secure: false` cookie transport, `NoopLimiter`, memory stores, missing `lockout` listener, non-HTTPS `baseUrl`\n- **`JwtTransport.rotateSignKey()` + `retireVerifyKey(kid)`** - zero-downtime JWKS rotation with overlap window\n- **`applyCompliancePreset(cfg, 'gdpr' | 'hipaa' | 'soc2' | 'fips')`** - a free function over the config, not an engine method: it ratchets the three session TTLs down to the named floor. The password, MFA and api-key floors are provider-level - pass the same preset to `passwords({ compliance })` and its siblings - and `strict()` enforces the rest, including data-at-rest\n- **`WebhookDeliverer`** - HMAC body + timestamp + freshness tolerance, exponential backoff, dead-letter sink, SSRF guard on endpoint URLs, `redirect: 'error'` on dispatch\n- **`auth.hijack` + `auth.anomaly`** - drift detection, decision ladder (allow / step-up / deny), pluggable signals\n- **`redisIdempotency` / `valkeyIdempotency`** - per-(identity, key) tombstone + poll for the host's replay-safe mutating routes; the host holds it, the engine does not\n- **DPoP** (RFC 9449) - proof-of-possession on bearer tokens with `ath` binding and server nonce\n- **Tenant boundary**: every adapter respects `ctx.tenantId`; M2M + api-key providers refuse cross-tenant identification\n\n## Security posture\n\n`AuthEngine.strict()` runs every production-grade gate before boot.\n\nSee [`SECURITY.md`](./SECURITY.md) for the STRIDE / OWASP ASVS mapping of every threat the library mitigates and every threat the host app must own.\n\n## Module sizes (gzipped)\n\n| Module | Size |\n|--------|------|\n| Core `AuthEngine` (typical import) | ~22 KB |\n| Each transport | 2 - 6 KB |\n| Each provider | 1.5 - 8 KB |\n| Each adapter | 2 - 9 KB |\n| Each server middleware | 2 - 4 KB |\n\nReal deployments importing only what they wire end up at 25 - 60 KB total. The \"import everything\" worst case (`import * from '@gentleduck/auth'`) is not the intended usage.\n\n## Docs\n\n- Site: [gentleduck.org/duck-auth](https://gentleduck.org/duck-auth)\n- Reference app: [`apps/duck-auth-demo`](https://github.com/gentleeduck/duck-iam/tree/main/apps/duck-auth-demo) - every flow exercised end-to-end\n- Sibling repos: [`@gentleduck/iam`](https://www.npmjs.com/package/@gentleduck/iam), [`@gentleduck/ui`](https://github.com/gentleeduck/duck-ui), [`@gentleduck/upload`](https://github.com/gentleeduck/duck-upload), [`@gentleduck/md`](https://github.com/gentleeduck/duck-md)\n\n## Contributing\n\nPR checklist + style notes in the repo's [`CONTRIBUTING.md`](https://github.com/gentleeduck/duck-iam/blob/main/CONTRIBUTING.md).\nSecurity disclosures: [`SECURITY.md`](./SECURITY.md).\n\n## License\n\nMIT. See [`LICENSE`](./LICENSE).\n","readmeFilename":"README.md"}