@_mustachio/openauth 0.9.2 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/adapters/d1/audit-log.js +15 -0
- package/dist/esm/adapters/d1/config-store.js +45 -0
- package/dist/esm/adapters/d1/index.js +12 -0
- package/dist/esm/adapters/d1/key-store.js +116 -0
- package/dist/esm/adapters/d1/method-store.js +52 -0
- package/dist/esm/adapters/d1/migrations.js +77 -0
- package/dist/esm/adapters/d1/session-store.js +134 -0
- package/dist/esm/adapters/d1/session.js +18 -0
- package/dist/esm/adapters/d1/token-store.js +140 -0
- package/dist/esm/adapters/durable-object/index.js +3 -0
- package/dist/esm/adapters/durable-object/session-store.js +139 -0
- package/dist/esm/adapters/durable-object/types.js +0 -0
- package/dist/esm/adapters/dynamo/audit-log.js +23 -0
- package/dist/esm/adapters/dynamo/client.js +0 -0
- package/dist/esm/adapters/dynamo/config-store.js +57 -0
- package/dist/esm/adapters/dynamo/index.js +10 -0
- package/dist/esm/adapters/dynamo/key-store.js +188 -0
- package/dist/esm/adapters/dynamo/method-store.js +72 -0
- package/dist/esm/adapters/dynamo/passkey-credential-store.js +83 -0
- package/dist/esm/adapters/dynamo/sdk.js +128 -0
- package/dist/esm/adapters/dynamo/session-store.js +173 -0
- package/dist/esm/adapters/dynamo/token-store.js +178 -0
- package/dist/esm/adapters/kms/in-memory-backing.js +28 -0
- package/dist/esm/adapters/kms/index.js +5 -0
- package/dist/esm/adapters/kms/key-store.js +129 -0
- package/dist/esm/adapters/kms/sdk.js +23 -0
- package/dist/esm/adapters/kms/types.js +0 -0
- package/dist/esm/adapters/kv/audit-log.js +21 -0
- package/dist/esm/adapters/kv/config-store.js +43 -0
- package/dist/esm/adapters/kv/index.js +5 -0
- package/dist/esm/adapters/kv/method-store.js +63 -0
- package/dist/esm/adapters/kv/types.js +0 -0
- package/dist/esm/adapters/memory/audit-log.js +16 -0
- package/dist/esm/adapters/memory/clock.js +5 -0
- package/dist/esm/adapters/memory/config-store.js +31 -0
- package/dist/esm/adapters/memory/index.js +10 -0
- package/dist/esm/adapters/memory/key-store.js +78 -0
- package/dist/esm/adapters/memory/method-store.js +43 -0
- package/dist/esm/adapters/memory/passkey-credential-store.js +53 -0
- package/dist/esm/adapters/memory/session-store.js +104 -0
- package/dist/esm/adapters/memory/token-store.js +104 -0
- package/dist/esm/adapters/postgres/audit-log.js +16 -0
- package/dist/esm/adapters/postgres/config-store.js +48 -0
- package/dist/esm/adapters/postgres/executor.js +21 -0
- package/dist/esm/adapters/postgres/index.js +13 -0
- package/dist/esm/adapters/postgres/key-store.js +191 -0
- package/dist/esm/adapters/postgres/method-store.js +61 -0
- package/dist/esm/adapters/postgres/migrations.js +111 -0
- package/dist/esm/adapters/postgres/passkey-credential-store.js +80 -0
- package/dist/esm/adapters/postgres/session-store.js +135 -0
- package/dist/esm/adapters/postgres/token-store.js +151 -0
- package/dist/esm/client.js +35 -12
- package/dist/esm/domain/audit.js +13 -0
- package/dist/esm/domain/authorize.js +217 -0
- package/dist/esm/domain/callback.js +176 -0
- package/dist/esm/domain/client-auth.js +61 -0
- package/dist/esm/domain/client-credentials.js +91 -0
- package/dist/esm/domain/crypto.js +97 -0
- package/dist/esm/domain/discovery.js +83 -0
- package/dist/esm/domain/dpop.js +122 -0
- package/dist/esm/domain/id-token.js +94 -0
- package/dist/esm/domain/introspect.js +55 -0
- package/dist/esm/domain/jwt.js +71 -0
- package/dist/esm/domain/logout.js +75 -0
- package/dist/esm/domain/method-cache.js +136 -0
- package/dist/esm/domain/method-dispatch.js +36 -0
- package/dist/esm/domain/method-route.js +111 -0
- package/dist/esm/domain/par.js +51 -0
- package/dist/esm/domain/pkce.js +16 -0
- package/dist/esm/domain/refresh.js +102 -0
- package/dist/esm/domain/register.js +74 -0
- package/dist/esm/domain/revoke.js +81 -0
- package/dist/esm/domain/state-envelope.js +80 -0
- package/dist/esm/domain/token-exchange.js +102 -0
- package/dist/esm/domain/token.js +246 -0
- package/dist/esm/domain/userinfo.js +62 -0
- package/dist/esm/http/context.js +7 -0
- package/dist/esm/http/cookies.js +98 -0
- package/dist/esm/http/errors.js +71 -0
- package/dist/esm/http/handlers/authorize.js +250 -0
- package/dist/esm/http/handlers/callback.js +53 -0
- package/dist/esm/http/handlers/end-session.js +64 -0
- package/dist/esm/http/handlers/metadata.js +37 -0
- package/dist/esm/http/handlers/method-route.js +87 -0
- package/dist/esm/http/handlers/par.js +53 -0
- package/dist/esm/http/handlers/register.js +46 -0
- package/dist/esm/http/handlers/revocation.js +98 -0
- package/dist/esm/http/handlers/token.js +197 -0
- package/dist/esm/http/handlers/userinfo.js +60 -0
- package/dist/esm/http/middleware/error.js +15 -0
- package/dist/esm/http/middleware/tenant.js +102 -0
- package/dist/esm/http/resolver.js +15 -0
- package/dist/esm/http/router.js +45 -0
- package/dist/esm/http/schemas/authorize.js +30 -0
- package/dist/esm/http/schemas/end-session.js +13 -0
- package/dist/esm/http/schemas/par.js +9 -0
- package/dist/esm/http/schemas/register.js +16 -0
- package/dist/esm/http/schemas/revocation.js +18 -0
- package/dist/esm/http/schemas/token.js +57 -0
- package/dist/esm/index.js +126 -9
- package/dist/esm/methods/code.js +221 -0
- package/dist/esm/methods/m2m.js +41 -0
- package/dist/esm/methods/oauth2-factory.js +84 -0
- package/dist/esm/methods/oauth2-generic.js +196 -0
- package/dist/esm/methods/oidc-generic.js +53 -0
- package/dist/esm/methods/passkey.js +275 -0
- package/dist/esm/methods/password-hash.js +79 -0
- package/dist/esm/methods/password.js +166 -0
- package/dist/esm/methods/providers/apple.js +29 -0
- package/dist/esm/methods/providers/cognito.js +37 -0
- package/dist/esm/methods/providers/discord.js +28 -0
- package/dist/esm/methods/providers/facebook.js +42 -0
- package/dist/esm/methods/providers/github.js +29 -0
- package/dist/esm/methods/providers/google.js +29 -0
- package/dist/esm/methods/providers/index.js +17 -0
- package/dist/esm/methods/providers/jumpcloud.js +27 -0
- package/dist/esm/methods/providers/keycloak.js +32 -0
- package/dist/esm/methods/providers/linkedin.js +28 -0
- package/dist/esm/methods/providers/microsoft.js +28 -0
- package/dist/esm/methods/providers/slack.js +30 -0
- package/dist/esm/methods/providers/spotify.js +28 -0
- package/dist/esm/methods/providers/twitch.js +28 -0
- package/dist/esm/methods/providers/x.js +28 -0
- package/dist/esm/methods/providers/yahoo.js +27 -0
- package/dist/esm/pkce.js +4 -16
- package/dist/esm/ports/audit-log.js +0 -0
- package/dist/esm/ports/config-store.js +0 -0
- package/dist/esm/ports/key-store.js +0 -0
- package/dist/esm/ports/method-store.js +0 -0
- package/dist/esm/ports/session-store.js +0 -0
- package/dist/esm/ports/token-store.js +0 -0
- package/dist/esm/types/authorization.js +0 -0
- package/dist/esm/types/error.js +70 -0
- package/dist/esm/types/flow.js +0 -0
- package/dist/esm/types/idp.js +0 -0
- package/dist/esm/types/method.js +0 -0
- package/dist/esm/types/picker.js +0 -0
- package/dist/esm/types/result.js +11 -0
- package/dist/esm/types/subject.js +0 -0
- package/dist/esm/types/tenant.js +5 -0
- package/dist/esm/types/token.js +0 -0
- package/dist/esm/ui/forms.js +253 -0
- package/dist/esm/ui/index.js +8 -0
- package/dist/esm/ui/picker.js +49 -0
- package/dist/types/adapters/d1/audit-log.d.ts +19 -0
- package/dist/types/adapters/d1/audit-log.d.ts.map +1 -0
- package/dist/types/adapters/d1/config-store.d.ts +20 -0
- package/dist/types/adapters/d1/config-store.d.ts.map +1 -0
- package/dist/types/adapters/d1/index.d.ts +35 -0
- package/dist/types/adapters/d1/index.d.ts.map +1 -0
- package/dist/types/adapters/d1/key-store.d.ts +17 -0
- package/dist/types/adapters/d1/key-store.d.ts.map +1 -0
- package/dist/types/adapters/d1/method-store.d.ts +21 -0
- package/dist/types/adapters/d1/method-store.d.ts.map +1 -0
- package/dist/types/adapters/d1/migrations.d.ts +18 -0
- package/dist/types/adapters/d1/migrations.d.ts.map +1 -0
- package/dist/types/adapters/d1/session-store.d.ts +20 -0
- package/dist/types/adapters/d1/session-store.d.ts.map +1 -0
- package/dist/types/adapters/d1/session.d.ts +18 -0
- package/dist/types/adapters/d1/session.d.ts.map +1 -0
- package/dist/types/adapters/d1/token-store.d.ts +29 -0
- package/dist/types/adapters/d1/token-store.d.ts.map +1 -0
- package/dist/types/adapters/d1/types.d.ts +43 -0
- package/dist/types/adapters/d1/types.d.ts.map +1 -0
- package/dist/types/adapters/durable-object/index.d.ts +17 -0
- package/dist/types/adapters/durable-object/index.d.ts.map +1 -0
- package/dist/types/adapters/durable-object/session-store.d.ts +21 -0
- package/dist/types/adapters/durable-object/session-store.d.ts.map +1 -0
- package/dist/types/adapters/durable-object/types.d.ts +23 -0
- package/dist/types/adapters/durable-object/types.d.ts.map +1 -0
- package/dist/types/adapters/dynamo/audit-log.d.ts +19 -0
- package/dist/types/adapters/dynamo/audit-log.d.ts.map +1 -0
- package/dist/types/adapters/dynamo/client.d.ts +111 -0
- package/dist/types/adapters/dynamo/client.d.ts.map +1 -0
- package/dist/types/adapters/dynamo/config-store.d.ts +21 -0
- package/dist/types/adapters/dynamo/config-store.d.ts.map +1 -0
- package/dist/types/adapters/dynamo/index.d.ts +60 -0
- package/dist/types/adapters/dynamo/index.d.ts.map +1 -0
- package/dist/types/adapters/dynamo/key-store.d.ts +23 -0
- package/dist/types/adapters/dynamo/key-store.d.ts.map +1 -0
- package/dist/types/adapters/dynamo/method-store.d.ts +20 -0
- package/dist/types/adapters/dynamo/method-store.d.ts.map +1 -0
- package/dist/types/adapters/dynamo/passkey-credential-store.d.ts +47 -0
- package/dist/types/adapters/dynamo/passkey-credential-store.d.ts.map +1 -0
- package/dist/types/adapters/dynamo/sdk.d.ts +23 -0
- package/dist/types/adapters/dynamo/sdk.d.ts.map +1 -0
- package/dist/types/adapters/dynamo/session-store.d.ts +20 -0
- package/dist/types/adapters/dynamo/session-store.d.ts.map +1 -0
- package/dist/types/adapters/dynamo/token-store.d.ts +29 -0
- package/dist/types/adapters/dynamo/token-store.d.ts.map +1 -0
- package/dist/types/adapters/kms/in-memory-backing.d.ts +9 -0
- package/dist/types/adapters/kms/in-memory-backing.d.ts.map +1 -0
- package/dist/types/adapters/kms/index.d.ts +35 -0
- package/dist/types/adapters/kms/index.d.ts.map +1 -0
- package/dist/types/adapters/kms/key-store.d.ts +20 -0
- package/dist/types/adapters/kms/key-store.d.ts.map +1 -0
- package/dist/types/adapters/kms/sdk.d.ts +16 -0
- package/dist/types/adapters/kms/sdk.d.ts.map +1 -0
- package/dist/types/adapters/kms/types.d.ts +58 -0
- package/dist/types/adapters/kms/types.d.ts.map +1 -0
- package/dist/types/adapters/kv/audit-log.d.ts +22 -0
- package/dist/types/adapters/kv/audit-log.d.ts.map +1 -0
- package/dist/types/adapters/kv/config-store.d.ts +25 -0
- package/dist/types/adapters/kv/config-store.d.ts.map +1 -0
- package/dist/types/adapters/kv/index.d.ts +21 -0
- package/dist/types/adapters/kv/index.d.ts.map +1 -0
- package/dist/types/adapters/kv/method-store.d.ts +23 -0
- package/dist/types/adapters/kv/method-store.d.ts.map +1 -0
- package/dist/types/adapters/kv/types.d.ts +28 -0
- package/dist/types/adapters/kv/types.d.ts.map +1 -0
- package/dist/types/adapters/memory/audit-log.d.ts +18 -0
- package/dist/types/adapters/memory/audit-log.d.ts.map +1 -0
- package/dist/types/adapters/memory/clock.d.ts +7 -0
- package/dist/types/adapters/memory/clock.d.ts.map +1 -0
- package/dist/types/adapters/memory/config-store.d.ts +19 -0
- package/dist/types/adapters/memory/config-store.d.ts.map +1 -0
- package/dist/types/adapters/memory/index.d.ts +15 -0
- package/dist/types/adapters/memory/index.d.ts.map +1 -0
- package/dist/types/adapters/memory/key-store.d.ts +17 -0
- package/dist/types/adapters/memory/key-store.d.ts.map +1 -0
- package/dist/types/adapters/memory/method-store.d.ts +26 -0
- package/dist/types/adapters/memory/method-store.d.ts.map +1 -0
- package/dist/types/adapters/memory/passkey-credential-store.d.ts +43 -0
- package/dist/types/adapters/memory/passkey-credential-store.d.ts.map +1 -0
- package/dist/types/adapters/memory/session-store.d.ts +21 -0
- package/dist/types/adapters/memory/session-store.d.ts.map +1 -0
- package/dist/types/adapters/memory/token-store.d.ts +29 -0
- package/dist/types/adapters/memory/token-store.d.ts.map +1 -0
- package/dist/types/adapters/postgres/audit-log.d.ts +18 -0
- package/dist/types/adapters/postgres/audit-log.d.ts.map +1 -0
- package/dist/types/adapters/postgres/config-store.d.ts +21 -0
- package/dist/types/adapters/postgres/config-store.d.ts.map +1 -0
- package/dist/types/adapters/postgres/executor.d.ts +48 -0
- package/dist/types/adapters/postgres/executor.d.ts.map +1 -0
- package/dist/types/adapters/postgres/index.d.ts +39 -0
- package/dist/types/adapters/postgres/index.d.ts.map +1 -0
- package/dist/types/adapters/postgres/key-store.d.ts +23 -0
- package/dist/types/adapters/postgres/key-store.d.ts.map +1 -0
- package/dist/types/adapters/postgres/method-store.d.ts +21 -0
- package/dist/types/adapters/postgres/method-store.d.ts.map +1 -0
- package/dist/types/adapters/postgres/migrations.d.ts +22 -0
- package/dist/types/adapters/postgres/migrations.d.ts.map +1 -0
- package/dist/types/adapters/postgres/passkey-credential-store.d.ts +48 -0
- package/dist/types/adapters/postgres/passkey-credential-store.d.ts.map +1 -0
- package/dist/types/adapters/postgres/session-store.d.ts +20 -0
- package/dist/types/adapters/postgres/session-store.d.ts.map +1 -0
- package/dist/types/adapters/postgres/token-store.d.ts +30 -0
- package/dist/types/adapters/postgres/token-store.d.ts.map +1 -0
- package/dist/types/client.d.ts +20 -1
- package/dist/types/client.d.ts.map +1 -1
- package/dist/types/domain/audit.d.ts +17 -0
- package/dist/types/domain/audit.d.ts.map +1 -0
- package/dist/types/domain/authorize.d.ts +125 -0
- package/dist/types/domain/authorize.d.ts.map +1 -0
- package/dist/types/domain/callback.d.ts +70 -0
- package/dist/types/domain/callback.d.ts.map +1 -0
- package/dist/types/domain/client-auth.d.ts +57 -0
- package/dist/types/domain/client-auth.d.ts.map +1 -0
- package/dist/types/domain/client-credentials.d.ts +54 -0
- package/dist/types/domain/client-credentials.d.ts.map +1 -0
- package/dist/types/domain/crypto.d.ts +53 -0
- package/dist/types/domain/crypto.d.ts.map +1 -0
- package/dist/types/domain/discovery.d.ts +81 -0
- package/dist/types/domain/discovery.d.ts.map +1 -0
- package/dist/types/domain/dpop.d.ts +61 -0
- package/dist/types/domain/dpop.d.ts.map +1 -0
- package/dist/types/domain/id-token.d.ts +83 -0
- package/dist/types/domain/id-token.d.ts.map +1 -0
- package/dist/types/domain/introspect.d.ts +79 -0
- package/dist/types/domain/introspect.d.ts.map +1 -0
- package/dist/types/domain/jwt.d.ts +74 -0
- package/dist/types/domain/jwt.d.ts.map +1 -0
- package/dist/types/domain/logout.d.ts +69 -0
- package/dist/types/domain/logout.d.ts.map +1 -0
- package/dist/types/domain/method-cache.d.ts +42 -0
- package/dist/types/domain/method-cache.d.ts.map +1 -0
- package/dist/types/domain/method-dispatch.d.ts +37 -0
- package/dist/types/domain/method-dispatch.d.ts.map +1 -0
- package/dist/types/domain/method-route.d.ts +77 -0
- package/dist/types/domain/method-route.d.ts.map +1 -0
- package/dist/types/domain/par.d.ts +62 -0
- package/dist/types/domain/par.d.ts.map +1 -0
- package/dist/types/domain/pkce.d.ts +15 -0
- package/dist/types/domain/pkce.d.ts.map +1 -0
- package/dist/types/domain/refresh.d.ts +52 -0
- package/dist/types/domain/refresh.d.ts.map +1 -0
- package/dist/types/domain/register.d.ts +33 -0
- package/dist/types/domain/register.d.ts.map +1 -0
- package/dist/types/domain/revoke.d.ts +61 -0
- package/dist/types/domain/revoke.d.ts.map +1 -0
- package/dist/types/domain/state-envelope.d.ts +30 -0
- package/dist/types/domain/state-envelope.d.ts.map +1 -0
- package/dist/types/domain/token-exchange.d.ts +69 -0
- package/dist/types/domain/token-exchange.d.ts.map +1 -0
- package/dist/types/domain/token.d.ts +140 -0
- package/dist/types/domain/token.d.ts.map +1 -0
- package/dist/types/domain/userinfo.d.ts +61 -0
- package/dist/types/domain/userinfo.d.ts.map +1 -0
- package/dist/types/http/context.d.ts +66 -0
- package/dist/types/http/context.d.ts.map +1 -0
- package/dist/types/http/cookies.d.ts +45 -0
- package/dist/types/http/cookies.d.ts.map +1 -0
- package/dist/types/http/errors.d.ts +36 -0
- package/dist/types/http/errors.d.ts.map +1 -0
- package/dist/types/http/handlers/authorize.d.ts +3 -0
- package/dist/types/http/handlers/authorize.d.ts.map +1 -0
- package/dist/types/http/handlers/callback.d.ts +3 -0
- package/dist/types/http/handlers/callback.d.ts.map +1 -0
- package/dist/types/http/handlers/end-session.d.ts +3 -0
- package/dist/types/http/handlers/end-session.d.ts.map +1 -0
- package/dist/types/http/handlers/metadata.d.ts +4 -0
- package/dist/types/http/handlers/metadata.d.ts.map +1 -0
- package/dist/types/http/handlers/method-route.d.ts +3 -0
- package/dist/types/http/handlers/method-route.d.ts.map +1 -0
- package/dist/types/http/handlers/par.d.ts +3 -0
- package/dist/types/http/handlers/par.d.ts.map +1 -0
- package/dist/types/http/handlers/register.d.ts +3 -0
- package/dist/types/http/handlers/register.d.ts.map +1 -0
- package/dist/types/http/handlers/revocation.d.ts +4 -0
- package/dist/types/http/handlers/revocation.d.ts.map +1 -0
- package/dist/types/http/handlers/token.d.ts +3 -0
- package/dist/types/http/handlers/token.d.ts.map +1 -0
- package/dist/types/http/handlers/userinfo.d.ts +3 -0
- package/dist/types/http/handlers/userinfo.d.ts.map +1 -0
- package/dist/types/http/middleware/error.d.ts +9 -0
- package/dist/types/http/middleware/error.d.ts.map +1 -0
- package/dist/types/http/middleware/tenant.d.ts +30 -0
- package/dist/types/http/middleware/tenant.d.ts.map +1 -0
- package/dist/types/http/resolver.d.ts +22 -0
- package/dist/types/http/resolver.d.ts.map +1 -0
- package/dist/types/http/router.d.ts +21 -0
- package/dist/types/http/router.d.ts.map +1 -0
- package/dist/types/http/schemas/authorize.d.ts +92 -0
- package/dist/types/http/schemas/authorize.d.ts.map +1 -0
- package/dist/types/http/schemas/end-session.d.ts +31 -0
- package/dist/types/http/schemas/end-session.d.ts.map +1 -0
- package/dist/types/http/schemas/par.d.ts +20 -0
- package/dist/types/http/schemas/par.d.ts.map +1 -0
- package/dist/types/http/schemas/register.d.ts +42 -0
- package/dist/types/http/schemas/register.d.ts.map +1 -0
- package/dist/types/http/schemas/revocation.d.ts +41 -0
- package/dist/types/http/schemas/revocation.d.ts.map +1 -0
- package/dist/types/http/schemas/token.d.ts +227 -0
- package/dist/types/http/schemas/token.d.ts.map +1 -0
- package/dist/types/index.d.ts +63 -13
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/methods/code.d.ts +96 -0
- package/dist/types/methods/code.d.ts.map +1 -0
- package/dist/types/methods/m2m.d.ts +41 -0
- package/dist/types/methods/m2m.d.ts.map +1 -0
- package/dist/types/methods/oauth2-factory.d.ts +133 -0
- package/dist/types/methods/oauth2-factory.d.ts.map +1 -0
- package/dist/types/methods/oauth2-generic.d.ts +75 -0
- package/dist/types/methods/oauth2-generic.d.ts.map +1 -0
- package/dist/types/methods/oidc-generic.d.ts +26 -0
- package/dist/types/methods/oidc-generic.d.ts.map +1 -0
- package/dist/types/methods/passkey.d.ts +106 -0
- package/dist/types/methods/passkey.d.ts.map +1 -0
- package/dist/types/methods/password-hash.d.ts +25 -0
- package/dist/types/methods/password-hash.d.ts.map +1 -0
- package/dist/types/methods/password.d.ts +70 -0
- package/dist/types/methods/password.d.ts.map +1 -0
- package/dist/types/methods/providers/apple.d.ts +29 -0
- package/dist/types/methods/providers/apple.d.ts.map +1 -0
- package/dist/types/methods/providers/cognito.d.ts +36 -0
- package/dist/types/methods/providers/cognito.d.ts.map +1 -0
- package/dist/types/methods/providers/discord.d.ts +22 -0
- package/dist/types/methods/providers/discord.d.ts.map +1 -0
- package/dist/types/methods/providers/facebook.d.ts +29 -0
- package/dist/types/methods/providers/facebook.d.ts.map +1 -0
- package/dist/types/methods/providers/github.d.ts +25 -0
- package/dist/types/methods/providers/github.d.ts.map +1 -0
- package/dist/types/methods/providers/google.d.ts +28 -0
- package/dist/types/methods/providers/google.d.ts.map +1 -0
- package/dist/types/methods/providers/index.d.ts +24 -0
- package/dist/types/methods/providers/index.d.ts.map +1 -0
- package/dist/types/methods/providers/jumpcloud.d.ts +22 -0
- package/dist/types/methods/providers/jumpcloud.d.ts.map +1 -0
- package/dist/types/methods/providers/keycloak.d.ts +30 -0
- package/dist/types/methods/providers/keycloak.d.ts.map +1 -0
- package/dist/types/methods/providers/linkedin.d.ts +22 -0
- package/dist/types/methods/providers/linkedin.d.ts.map +1 -0
- package/dist/types/methods/providers/microsoft.d.ts +30 -0
- package/dist/types/methods/providers/microsoft.d.ts.map +1 -0
- package/dist/types/methods/providers/slack.d.ts +25 -0
- package/dist/types/methods/providers/slack.d.ts.map +1 -0
- package/dist/types/methods/providers/spotify.d.ts +22 -0
- package/dist/types/methods/providers/spotify.d.ts.map +1 -0
- package/dist/types/methods/providers/twitch.d.ts +23 -0
- package/dist/types/methods/providers/twitch.d.ts.map +1 -0
- package/dist/types/methods/providers/x.d.ts +25 -0
- package/dist/types/methods/providers/x.d.ts.map +1 -0
- package/dist/types/methods/providers/yahoo.d.ts +22 -0
- package/dist/types/methods/providers/yahoo.d.ts.map +1 -0
- package/dist/types/pkce.d.ts +1 -2
- package/dist/types/pkce.d.ts.map +1 -1
- package/dist/types/ports/audit-log.d.ts +166 -0
- package/dist/types/ports/audit-log.d.ts.map +1 -0
- package/dist/types/ports/config-store.d.ts +32 -0
- package/dist/types/ports/config-store.d.ts.map +1 -0
- package/dist/types/ports/key-store.d.ts +98 -0
- package/dist/types/ports/key-store.d.ts.map +1 -0
- package/dist/types/ports/method-store.d.ts +29 -0
- package/dist/types/ports/method-store.d.ts.map +1 -0
- package/dist/types/ports/session-store.d.ts +109 -0
- package/dist/types/ports/session-store.d.ts.map +1 -0
- package/dist/types/ports/token-store.d.ts +105 -0
- package/dist/types/ports/token-store.d.ts.map +1 -0
- package/dist/types/types/authorization.d.ts +75 -0
- package/dist/types/types/authorization.d.ts.map +1 -0
- package/dist/types/types/error.d.ts +101 -0
- package/dist/types/types/error.d.ts.map +1 -0
- package/dist/types/types/flow.d.ts +97 -0
- package/dist/types/types/flow.d.ts.map +1 -0
- package/dist/types/types/idp.d.ts +324 -0
- package/dist/types/types/idp.d.ts.map +1 -0
- package/dist/types/types/method.d.ts +256 -0
- package/dist/types/types/method.d.ts.map +1 -0
- package/dist/types/types/picker.d.ts +31 -0
- package/dist/types/types/picker.d.ts.map +1 -0
- package/dist/types/types/result.d.ts +29 -0
- package/dist/types/types/result.d.ts.map +1 -0
- package/dist/types/types/subject.d.ts +47 -0
- package/dist/types/types/subject.d.ts.map +1 -0
- package/dist/types/types/tenant.d.ts +276 -0
- package/dist/types/types/tenant.d.ts.map +1 -0
- package/dist/types/types/token.d.ts +231 -0
- package/dist/types/types/token.d.ts.map +1 -0
- package/dist/types/ui/forms.d.ts +35 -0
- package/dist/types/ui/forms.d.ts.map +1 -0
- package/dist/types/ui/index.d.ts +14 -0
- package/dist/types/ui/index.d.ts.map +1 -0
- package/dist/types/ui/picker.d.ts +18 -0
- package/dist/types/ui/picker.d.ts.map +1 -0
- package/package.json +41 -6
- package/src/adapters/d1/audit-log.ts +32 -0
- package/src/adapters/d1/config-store.ts +67 -0
- package/src/adapters/d1/index.ts +41 -0
- package/src/adapters/d1/key-store.ts +218 -0
- package/src/adapters/d1/method-store.ts +103 -0
- package/src/adapters/d1/migrations.ts +89 -0
- package/src/adapters/d1/session-store.ts +230 -0
- package/src/adapters/d1/session.ts +38 -0
- package/src/adapters/d1/token-store.ts +251 -0
- package/src/adapters/d1/types.ts +53 -0
- package/src/adapters/durable-object/index.ts +23 -0
- package/src/adapters/durable-object/session-store.ts +227 -0
- package/src/adapters/durable-object/types.ts +25 -0
- package/src/adapters/dynamo/audit-log.ts +35 -0
- package/src/adapters/dynamo/client.ts +118 -0
- package/src/adapters/dynamo/config-store.ts +72 -0
- package/src/adapters/dynamo/index.ts +81 -0
- package/src/adapters/dynamo/key-store.ts +267 -0
- package/src/adapters/dynamo/method-store.ts +105 -0
- package/src/adapters/dynamo/passkey-credential-store.ts +132 -0
- package/src/adapters/dynamo/sdk.ts +189 -0
- package/src/adapters/dynamo/session-store.ts +229 -0
- package/src/adapters/dynamo/token-store.ts +248 -0
- package/src/adapters/kms/in-memory-backing.ts +36 -0
- package/src/adapters/kms/index.ts +39 -0
- package/src/adapters/kms/key-store.ts +176 -0
- package/src/adapters/kms/sdk.ts +39 -0
- package/src/adapters/kms/types.ts +61 -0
- package/src/adapters/kv/audit-log.ts +40 -0
- package/src/adapters/kv/config-store.ts +63 -0
- package/src/adapters/kv/index.ts +20 -0
- package/src/adapters/kv/method-store.ts +98 -0
- package/src/adapters/kv/types.ts +26 -0
- package/src/adapters/memory/audit-log.ts +28 -0
- package/src/adapters/memory/clock.ts +7 -0
- package/src/adapters/memory/config-store.ts +41 -0
- package/src/adapters/memory/index.ts +26 -0
- package/src/adapters/memory/key-store.ts +102 -0
- package/src/adapters/memory/method-store.ts +75 -0
- package/src/adapters/memory/passkey-credential-store.ts +97 -0
- package/src/adapters/memory/session-store.ts +171 -0
- package/src/adapters/memory/token-store.ts +181 -0
- package/src/adapters/postgres/audit-log.ts +34 -0
- package/src/adapters/postgres/config-store.ts +72 -0
- package/src/adapters/postgres/executor.ts +76 -0
- package/src/adapters/postgres/index.ts +60 -0
- package/src/adapters/postgres/key-store.ts +334 -0
- package/src/adapters/postgres/method-store.ts +104 -0
- package/src/adapters/postgres/migrations.ts +131 -0
- package/src/adapters/postgres/passkey-credential-store.ts +150 -0
- package/src/adapters/postgres/session-store.ts +216 -0
- package/src/adapters/postgres/token-store.ts +263 -0
- package/src/client.ts +82 -16
- package/src/domain/audit.ts +28 -0
- package/src/domain/authorize.ts +414 -0
- package/src/domain/callback.ts +268 -0
- package/src/domain/client-auth.ts +116 -0
- package/src/domain/client-credentials.ts +180 -0
- package/src/domain/crypto.ts +168 -0
- package/src/domain/discovery.ts +161 -0
- package/src/domain/dpop.ts +293 -0
- package/src/domain/id-token.ts +213 -0
- package/src/domain/introspect.ts +155 -0
- package/src/domain/jwt.ts +185 -0
- package/src/domain/logout.ts +180 -0
- package/src/domain/method-cache.ts +220 -0
- package/src/domain/method-dispatch.ts +95 -0
- package/src/domain/method-route.ts +213 -0
- package/src/domain/par.ts +141 -0
- package/src/domain/pkce.ts +37 -0
- package/src/domain/refresh.ts +210 -0
- package/src/domain/register.ts +168 -0
- package/src/domain/revoke.ts +161 -0
- package/src/domain/state-envelope.ts +142 -0
- package/src/domain/token-exchange.ts +243 -0
- package/src/domain/token.ts +483 -0
- package/src/domain/userinfo.ts +171 -0
- package/src/http/context.ts +90 -0
- package/src/http/cookies.ts +167 -0
- package/src/http/errors.ts +98 -0
- package/src/http/handlers/authorize.ts +362 -0
- package/src/http/handlers/callback.ts +77 -0
- package/src/http/handlers/end-session.ts +106 -0
- package/src/http/handlers/metadata.ts +49 -0
- package/src/http/handlers/method-route.ts +115 -0
- package/src/http/handlers/par.ts +84 -0
- package/src/http/handlers/register.ts +70 -0
- package/src/http/handlers/revocation.ts +151 -0
- package/src/http/handlers/token.ts +300 -0
- package/src/http/handlers/userinfo.ts +90 -0
- package/src/http/middleware/error.ts +26 -0
- package/src/http/middleware/tenant.ts +165 -0
- package/src/http/resolver.ts +34 -0
- package/src/http/router.ts +85 -0
- package/src/http/schemas/authorize.ts +85 -0
- package/src/http/schemas/end-session.ts +23 -0
- package/src/http/schemas/par.ts +23 -0
- package/src/http/schemas/register.ts +29 -0
- package/src/http/schemas/revocation.ts +23 -0
- package/src/http/schemas/token.ts +85 -0
- package/src/index.ts +283 -20
- package/src/methods/code.ts +359 -0
- package/src/methods/m2m.ts +82 -0
- package/src/methods/oauth2-factory.ts +151 -0
- package/src/methods/oauth2-generic.ts +360 -0
- package/src/methods/oidc-generic.ts +109 -0
- package/src/methods/passkey.ts +419 -0
- package/src/methods/password-hash.ts +134 -0
- package/src/methods/password.ts +298 -0
- package/src/methods/providers/apple.ts +42 -0
- package/src/methods/providers/cognito.ts +55 -0
- package/src/methods/providers/discord.ts +37 -0
- package/src/methods/providers/facebook.ts +54 -0
- package/src/methods/providers/github.ts +42 -0
- package/src/methods/providers/google.ts +43 -0
- package/src/methods/providers/index.ts +23 -0
- package/src/methods/providers/jumpcloud.ts +36 -0
- package/src/methods/providers/keycloak.ts +42 -0
- package/src/methods/providers/linkedin.ts +37 -0
- package/src/methods/providers/microsoft.ts +42 -0
- package/src/methods/providers/slack.ts +42 -0
- package/src/methods/providers/spotify.ts +37 -0
- package/src/methods/providers/twitch.ts +38 -0
- package/src/methods/providers/x.ts +40 -0
- package/src/methods/providers/yahoo.ts +36 -0
- package/src/pkce.ts +20 -21
- package/src/ports/CONSISTENCY.md +119 -0
- package/src/ports/audit-log.ts +177 -0
- package/src/ports/config-store.ts +34 -0
- package/src/ports/key-store.ts +106 -0
- package/src/ports/method-store.ts +41 -0
- package/src/ports/session-store.ts +131 -0
- package/src/ports/token-store.ts +116 -0
- package/src/types/authorization.ts +78 -0
- package/src/types/error.ts +146 -0
- package/src/types/flow.ts +99 -0
- package/src/types/idp.ts +365 -0
- package/src/types/method.ts +270 -0
- package/src/types/picker.ts +32 -0
- package/src/types/result.ts +23 -0
- package/src/types/subject.ts +50 -0
- package/src/types/tenant.ts +285 -0
- package/src/types/token.ts +236 -0
- package/src/ui/forms.ts +289 -0
- package/src/ui/index.ts +14 -0
- package/src/ui/picker.ts +63 -0
- package/dist/esm/issuer.js +0 -691
- package/dist/esm/jwt.js +0 -16
- package/dist/esm/keys.js +0 -113
- package/dist/esm/provider/apple.js +0 -28
- package/dist/esm/provider/arctic.js +0 -43
- package/dist/esm/provider/code.js +0 -58
- package/dist/esm/provider/cognito.js +0 -16
- package/dist/esm/provider/discord.js +0 -15
- package/dist/esm/provider/facebook.js +0 -24
- package/dist/esm/provider/github.js +0 -15
- package/dist/esm/provider/google.js +0 -25
- package/dist/esm/provider/index.js +0 -3
- package/dist/esm/provider/jumpcloud.js +0 -15
- package/dist/esm/provider/keycloak.js +0 -15
- package/dist/esm/provider/linkedin.js +0 -15
- package/dist/esm/provider/m2m.js +0 -16
- package/dist/esm/provider/microsoft.js +0 -24
- package/dist/esm/provider/oauth2.js +0 -119
- package/dist/esm/provider/oidc.js +0 -69
- package/dist/esm/provider/passkey.js +0 -315
- package/dist/esm/provider/password.js +0 -306
- package/dist/esm/provider/provider.js +0 -10
- package/dist/esm/provider/slack.js +0 -15
- package/dist/esm/provider/spotify.js +0 -15
- package/dist/esm/provider/twitch.js +0 -15
- package/dist/esm/provider/x.js +0 -16
- package/dist/esm/provider/yahoo.js +0 -15
- package/dist/esm/random.js +0 -27
- package/dist/esm/storage/aws.js +0 -39
- package/dist/esm/storage/cloudflare.js +0 -42
- package/dist/esm/storage/dynamo.js +0 -116
- package/dist/esm/storage/memory.js +0 -88
- package/dist/esm/storage/storage.js +0 -36
- package/dist/esm/subject.js +0 -7
- package/dist/esm/ui/base.js +0 -407
- package/dist/esm/ui/code.js +0 -151
- package/dist/esm/ui/form.js +0 -43
- package/dist/esm/ui/icon.js +0 -92
- package/dist/esm/ui/passkey.js +0 -329
- package/dist/esm/ui/password.js +0 -338
- package/dist/esm/ui/select.js +0 -187
- package/dist/esm/ui/theme.js +0 -115
- package/dist/esm/util.js +0 -54
- package/dist/types/issuer.d.ts +0 -607
- package/dist/types/issuer.d.ts.map +0 -1
- package/dist/types/jwt.d.ts +0 -6
- package/dist/types/jwt.d.ts.map +0 -1
- package/dist/types/keys.d.ts +0 -18
- package/dist/types/keys.d.ts.map +0 -1
- package/dist/types/provider/apple.d.ts +0 -108
- package/dist/types/provider/apple.d.ts.map +0 -1
- package/dist/types/provider/arctic.d.ts +0 -16
- package/dist/types/provider/arctic.d.ts.map +0 -1
- package/dist/types/provider/code.d.ts +0 -74
- package/dist/types/provider/code.d.ts.map +0 -1
- package/dist/types/provider/cognito.d.ts +0 -64
- package/dist/types/provider/cognito.d.ts.map +0 -1
- package/dist/types/provider/discord.d.ts +0 -38
- package/dist/types/provider/discord.d.ts.map +0 -1
- package/dist/types/provider/facebook.d.ts +0 -74
- package/dist/types/provider/facebook.d.ts.map +0 -1
- package/dist/types/provider/github.d.ts +0 -38
- package/dist/types/provider/github.d.ts.map +0 -1
- package/dist/types/provider/google.d.ts +0 -74
- package/dist/types/provider/google.d.ts.map +0 -1
- package/dist/types/provider/index.d.ts +0 -4
- package/dist/types/provider/index.d.ts.map +0 -1
- package/dist/types/provider/jumpcloud.d.ts +0 -38
- package/dist/types/provider/jumpcloud.d.ts.map +0 -1
- package/dist/types/provider/keycloak.d.ts +0 -67
- package/dist/types/provider/keycloak.d.ts.map +0 -1
- package/dist/types/provider/linkedin.d.ts +0 -6
- package/dist/types/provider/linkedin.d.ts.map +0 -1
- package/dist/types/provider/m2m.d.ts +0 -34
- package/dist/types/provider/m2m.d.ts.map +0 -1
- package/dist/types/provider/microsoft.d.ts +0 -89
- package/dist/types/provider/microsoft.d.ts.map +0 -1
- package/dist/types/provider/oauth2.d.ts +0 -133
- package/dist/types/provider/oauth2.d.ts.map +0 -1
- package/dist/types/provider/oidc.d.ts +0 -91
- package/dist/types/provider/oidc.d.ts.map +0 -1
- package/dist/types/provider/passkey.d.ts +0 -143
- package/dist/types/provider/passkey.d.ts.map +0 -1
- package/dist/types/provider/password.d.ts +0 -210
- package/dist/types/provider/password.d.ts.map +0 -1
- package/dist/types/provider/provider.d.ts +0 -29
- package/dist/types/provider/provider.d.ts.map +0 -1
- package/dist/types/provider/slack.d.ts +0 -59
- package/dist/types/provider/slack.d.ts.map +0 -1
- package/dist/types/provider/spotify.d.ts +0 -38
- package/dist/types/provider/spotify.d.ts.map +0 -1
- package/dist/types/provider/twitch.d.ts +0 -38
- package/dist/types/provider/twitch.d.ts.map +0 -1
- package/dist/types/provider/x.d.ts +0 -38
- package/dist/types/provider/x.d.ts.map +0 -1
- package/dist/types/provider/yahoo.d.ts +0 -38
- package/dist/types/provider/yahoo.d.ts.map +0 -1
- package/dist/types/random.d.ts +0 -3
- package/dist/types/random.d.ts.map +0 -1
- package/dist/types/storage/aws.d.ts +0 -4
- package/dist/types/storage/aws.d.ts.map +0 -1
- package/dist/types/storage/cloudflare.d.ts +0 -34
- package/dist/types/storage/cloudflare.d.ts.map +0 -1
- package/dist/types/storage/dynamo.d.ts +0 -65
- package/dist/types/storage/dynamo.d.ts.map +0 -1
- package/dist/types/storage/memory.d.ts +0 -49
- package/dist/types/storage/memory.d.ts.map +0 -1
- package/dist/types/storage/storage.d.ts +0 -15
- package/dist/types/storage/storage.d.ts.map +0 -1
- package/dist/types/subject.d.ts +0 -122
- package/dist/types/subject.d.ts.map +0 -1
- package/dist/types/ui/base.d.ts +0 -5
- package/dist/types/ui/base.d.ts.map +0 -1
- package/dist/types/ui/code.d.ts +0 -104
- package/dist/types/ui/code.d.ts.map +0 -1
- package/dist/types/ui/form.d.ts +0 -6
- package/dist/types/ui/form.d.ts.map +0 -1
- package/dist/types/ui/icon.d.ts +0 -6
- package/dist/types/ui/icon.d.ts.map +0 -1
- package/dist/types/ui/passkey.d.ts +0 -5
- package/dist/types/ui/passkey.d.ts.map +0 -1
- package/dist/types/ui/password.d.ts +0 -139
- package/dist/types/ui/password.d.ts.map +0 -1
- package/dist/types/ui/select.d.ts +0 -55
- package/dist/types/ui/select.d.ts.map +0 -1
- package/dist/types/ui/theme.d.ts +0 -207
- package/dist/types/ui/theme.d.ts.map +0 -1
- package/dist/types/util.d.ts +0 -8
- package/dist/types/util.d.ts.map +0 -1
- package/src/css.d.ts +0 -4
- package/src/issuer.ts +0 -1628
- package/src/jwt.ts +0 -17
- package/src/keys.ts +0 -139
- package/src/provider/apple.ts +0 -127
- package/src/provider/arctic.ts +0 -66
- package/src/provider/code.ts +0 -227
- package/src/provider/cognito.ts +0 -74
- package/src/provider/discord.ts +0 -45
- package/src/provider/facebook.ts +0 -84
- package/src/provider/github.ts +0 -45
- package/src/provider/google.ts +0 -85
- package/src/provider/index.ts +0 -3
- package/src/provider/jumpcloud.ts +0 -45
- package/src/provider/keycloak.ts +0 -75
- package/src/provider/linkedin.ts +0 -12
- package/src/provider/m2m.ts +0 -56
- package/src/provider/microsoft.ts +0 -100
- package/src/provider/oauth2.ts +0 -297
- package/src/provider/oidc.ts +0 -179
- package/src/provider/passkey.ts +0 -655
- package/src/provider/password.ts +0 -672
- package/src/provider/provider.ts +0 -33
- package/src/provider/slack.ts +0 -67
- package/src/provider/spotify.ts +0 -45
- package/src/provider/twitch.ts +0 -45
- package/src/provider/x.ts +0 -46
- package/src/provider/yahoo.ts +0 -45
- package/src/random.ts +0 -24
- package/src/storage/aws.ts +0 -59
- package/src/storage/cloudflare.ts +0 -77
- package/src/storage/dynamo.ts +0 -193
- package/src/storage/memory.ts +0 -135
- package/src/storage/storage.ts +0 -46
- package/src/subject.ts +0 -130
- package/src/ui/base.tsx +0 -118
- package/src/ui/code.tsx +0 -215
- package/src/ui/form.tsx +0 -40
- package/src/ui/icon.tsx +0 -95
- package/src/ui/passkey.tsx +0 -321
- package/src/ui/password.tsx +0 -405
- package/src/ui/select.tsx +0 -221
- package/src/ui/theme.ts +0 -319
- package/src/ui/ui.css +0 -252
- package/src/util.ts +0 -58
- /package/dist/esm/{css.d.js → adapters/d1/types.js} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"linkedin.d.ts","sourceRoot":"","sources":["../../../../src/methods/providers/linkedin.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,QAAA,MAAM,MAAM;;;;;;;;;;;;EAIV,CAAA;AAEF,eAAO,MAAM,eAAe,EAAE,iBAAiB,CAC7C,gBAAgB,EAChB,WAAW,EACX,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAkBvB,CAAA"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Microsoft — OIDC, tenant-templated. The `tenant` field is `"common"`,
|
|
3
|
+
* `"organizations"`, `"consumers"`, or a specific Entra tenant id /
|
|
4
|
+
* domain.
|
|
5
|
+
*
|
|
6
|
+
* Discovery is fetched per tenant; the result is cached inside the
|
|
7
|
+
* `MethodCache` so subsequent flows skip the round trip.
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import type { Oauth2Properties, Oauth2State } from "../oauth2-generic";
|
|
11
|
+
import type { AuthMethodFactory } from "../../types/method";
|
|
12
|
+
declare const schema: z.ZodObject<{
|
|
13
|
+
clientId: z.ZodString;
|
|
14
|
+
clientSecret: z.ZodString;
|
|
15
|
+
tenant: z.ZodOptional<z.ZodString>;
|
|
16
|
+
scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
17
|
+
}, "strip", z.ZodTypeAny, {
|
|
18
|
+
clientId: string;
|
|
19
|
+
clientSecret: string;
|
|
20
|
+
scopes?: string[] | undefined;
|
|
21
|
+
tenant?: string | undefined;
|
|
22
|
+
}, {
|
|
23
|
+
clientId: string;
|
|
24
|
+
clientSecret: string;
|
|
25
|
+
scopes?: string[] | undefined;
|
|
26
|
+
tenant?: string | undefined;
|
|
27
|
+
}>;
|
|
28
|
+
export declare const microsoftFactory: AuthMethodFactory<Oauth2Properties, Oauth2State, z.infer<typeof schema>>;
|
|
29
|
+
export {};
|
|
30
|
+
//# sourceMappingURL=microsoft.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"microsoft.d.ts","sourceRoot":"","sources":["../../../../src/methods/providers/microsoft.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,QAAA,MAAM,MAAM;;;;;;;;;;;;;;;EAKV,CAAA;AAEF,eAAO,MAAM,gBAAgB,EAAE,iBAAiB,CAC9C,gBAAgB,EAChB,WAAW,EACX,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAiBvB,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Slack — Sign in with Slack (OpenID Connect on Slack's own endpoints).
|
|
3
|
+
* Slack ships an id_token at the token endpoint; we treat it as OIDC.
|
|
4
|
+
*
|
|
5
|
+
* Default scopes: `openid email profile`.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import type { Oauth2Properties, Oauth2State } from "../oauth2-generic";
|
|
9
|
+
import type { AuthMethodFactory } from "../../types/method";
|
|
10
|
+
declare const schema: z.ZodObject<{
|
|
11
|
+
clientId: z.ZodString;
|
|
12
|
+
clientSecret: z.ZodString;
|
|
13
|
+
scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
clientId: string;
|
|
16
|
+
clientSecret: string;
|
|
17
|
+
scopes?: string[] | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
clientId: string;
|
|
20
|
+
clientSecret: string;
|
|
21
|
+
scopes?: string[] | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export declare const slackFactory: AuthMethodFactory<Oauth2Properties, Oauth2State, z.infer<typeof schema>>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=slack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slack.d.ts","sourceRoot":"","sources":["../../../../src/methods/providers/slack.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,QAAA,MAAM,MAAM;;;;;;;;;;;;EAIV,CAAA;AAEF,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAC1C,gBAAgB,EAChB,WAAW,EACX,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAoBvB,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Spotify — OAuth 2.0. Default scopes: `user-read-email user-read-private`.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import type { Oauth2Properties, Oauth2State } from "../oauth2-generic";
|
|
6
|
+
import type { AuthMethodFactory } from "../../types/method";
|
|
7
|
+
declare const schema: z.ZodObject<{
|
|
8
|
+
clientId: z.ZodString;
|
|
9
|
+
clientSecret: z.ZodString;
|
|
10
|
+
scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
clientId: string;
|
|
13
|
+
clientSecret: string;
|
|
14
|
+
scopes?: string[] | undefined;
|
|
15
|
+
}, {
|
|
16
|
+
clientId: string;
|
|
17
|
+
clientSecret: string;
|
|
18
|
+
scopes?: string[] | undefined;
|
|
19
|
+
}>;
|
|
20
|
+
export declare const spotifyFactory: AuthMethodFactory<Oauth2Properties, Oauth2State, z.infer<typeof schema>>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=spotify.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spotify.d.ts","sourceRoot":"","sources":["../../../../src/methods/providers/spotify.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,QAAA,MAAM,MAAM;;;;;;;;;;;;EAIV,CAAA;AAEF,eAAO,MAAM,cAAc,EAAE,iBAAiB,CAC5C,gBAAgB,EAChB,WAAW,EACX,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAkBvB,CAAA"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Twitch — OAuth 2.0 (Twitch supports OIDC but uses OAuth flows by
|
|
3
|
+
* default). Default scopes: `user:read:email`.
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import type { Oauth2Properties, Oauth2State } from "../oauth2-generic";
|
|
7
|
+
import type { AuthMethodFactory } from "../../types/method";
|
|
8
|
+
declare const schema: z.ZodObject<{
|
|
9
|
+
clientId: z.ZodString;
|
|
10
|
+
clientSecret: z.ZodString;
|
|
11
|
+
scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
clientId: string;
|
|
14
|
+
clientSecret: string;
|
|
15
|
+
scopes?: string[] | undefined;
|
|
16
|
+
}, {
|
|
17
|
+
clientId: string;
|
|
18
|
+
clientSecret: string;
|
|
19
|
+
scopes?: string[] | undefined;
|
|
20
|
+
}>;
|
|
21
|
+
export declare const twitchFactory: AuthMethodFactory<Oauth2Properties, Oauth2State, z.infer<typeof schema>>;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=twitch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"twitch.d.ts","sourceRoot":"","sources":["../../../../src/methods/providers/twitch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,QAAA,MAAM,MAAM;;;;;;;;;;;;EAIV,CAAA;AAEF,eAAO,MAAM,aAAa,EAAE,iBAAiB,CAC3C,gBAAgB,EAChB,WAAW,EACX,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAkBvB,CAAA"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* X (formerly Twitter) — OAuth 2.0 with PKCE. Default scope: `tweet.read users.read`.
|
|
3
|
+
*
|
|
4
|
+
* X requires PKCE on its OAuth 2.0 endpoints; `pkce` is left at the
|
|
5
|
+
* `"S256"` default.
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import type { Oauth2Properties, Oauth2State } from "../oauth2-generic";
|
|
9
|
+
import type { AuthMethodFactory } from "../../types/method";
|
|
10
|
+
declare const schema: z.ZodObject<{
|
|
11
|
+
clientId: z.ZodString;
|
|
12
|
+
clientSecret: z.ZodString;
|
|
13
|
+
scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
14
|
+
}, "strip", z.ZodTypeAny, {
|
|
15
|
+
clientId: string;
|
|
16
|
+
clientSecret: string;
|
|
17
|
+
scopes?: string[] | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
clientId: string;
|
|
20
|
+
clientSecret: string;
|
|
21
|
+
scopes?: string[] | undefined;
|
|
22
|
+
}>;
|
|
23
|
+
export declare const xFactory: AuthMethodFactory<Oauth2Properties, Oauth2State, z.infer<typeof schema>>;
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=x.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"x.d.ts","sourceRoot":"","sources":["../../../../src/methods/providers/x.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,QAAA,MAAM,MAAM;;;;;;;;;;;;EAIV,CAAA;AAEF,eAAO,MAAM,QAAQ,EAAE,iBAAiB,CACtC,gBAAgB,EAChB,WAAW,EACX,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAkBvB,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Yahoo — OIDC. Default scopes: `openid email profile`.
|
|
3
|
+
*/
|
|
4
|
+
import { z } from "zod";
|
|
5
|
+
import type { Oauth2Properties, Oauth2State } from "../oauth2-generic";
|
|
6
|
+
import type { AuthMethodFactory } from "../../types/method";
|
|
7
|
+
declare const schema: z.ZodObject<{
|
|
8
|
+
clientId: z.ZodString;
|
|
9
|
+
clientSecret: z.ZodString;
|
|
10
|
+
scopes: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
clientId: string;
|
|
13
|
+
clientSecret: string;
|
|
14
|
+
scopes?: string[] | undefined;
|
|
15
|
+
}, {
|
|
16
|
+
clientId: string;
|
|
17
|
+
clientSecret: string;
|
|
18
|
+
scopes?: string[] | undefined;
|
|
19
|
+
}>;
|
|
20
|
+
export declare const yahooFactory: AuthMethodFactory<Oauth2Properties, Oauth2State, z.infer<typeof schema>>;
|
|
21
|
+
export {};
|
|
22
|
+
//# sourceMappingURL=yahoo.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yahoo.d.ts","sourceRoot":"","sources":["../../../../src/methods/providers/yahoo.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AACtE,OAAO,KAAK,EAAc,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAEvE,QAAA,MAAM,MAAM;;;;;;;;;;;;EAIV,CAAA;AAEF,eAAO,MAAM,YAAY,EAAE,iBAAiB,CAC1C,gBAAgB,EAChB,WAAW,EACX,CAAC,CAAC,KAAK,CAAC,OAAO,MAAM,CAAC,CAiBvB,CAAA"}
|
package/dist/types/pkce.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
export declare function generatePKCE(length?: number): Promise<{
|
|
2
2
|
verifier: string;
|
|
3
3
|
challenge: string;
|
|
4
|
-
method:
|
|
4
|
+
method: "S256";
|
|
5
5
|
}>;
|
|
6
|
-
export declare function validatePKCE(verifier: string, challenge: string, method?: "S256" | "plain"): Promise<boolean>;
|
|
7
6
|
//# sourceMappingURL=pkce.d.ts.map
|
package/dist/types/pkce.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pkce.d.ts","sourceRoot":"","sources":["../../src/pkce.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"pkce.d.ts","sourceRoot":"","sources":["../../src/pkce.ts"],"names":[],"mappings":"AAyBA,wBAAsB,YAAY,CAAC,MAAM,GAAE,MAAW,GAAG,OAAO,CAAC;IAC/D,QAAQ,EAAE,MAAM,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,CAAA;CACf,CAAC,CASD"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `AuditLog` — append-only event log for security-relevant operations.
|
|
3
|
+
*
|
|
4
|
+
* Consistency: append-only, durable. Ordering across instances is **not**
|
|
5
|
+
* required; consumers (SIEM, dashboards) sort by `timestamp` and `actor`.
|
|
6
|
+
*
|
|
7
|
+
* Retention: defined by the adapter. 90 days minimum is the documented
|
|
8
|
+
* baseline for SOC 2 readiness.
|
|
9
|
+
*
|
|
10
|
+
* Audit-event payloads must **never** contain auth-code payloads, refresh
|
|
11
|
+
* tokens, access tokens, raw cookies, or any other secret. The framework's
|
|
12
|
+
* built-in events follow this rule; custom emitters must too.
|
|
13
|
+
*/
|
|
14
|
+
import type { TenantId } from "../types/tenant";
|
|
15
|
+
/**
|
|
16
|
+
* Discriminated event union. The framework emits these; user code may emit
|
|
17
|
+
* its own with `kind: "custom"`. Each event carries enough id information
|
|
18
|
+
* for operators to find the offending record without exposing secrets.
|
|
19
|
+
*/
|
|
20
|
+
export type AuditEvent = {
|
|
21
|
+
kind: "authorize_started";
|
|
22
|
+
tenantId: TenantId;
|
|
23
|
+
clientId: string;
|
|
24
|
+
methodId: string;
|
|
25
|
+
methodKind: string;
|
|
26
|
+
flowId: string;
|
|
27
|
+
} | {
|
|
28
|
+
kind: "authorize_succeeded";
|
|
29
|
+
tenantId: TenantId;
|
|
30
|
+
clientId: string;
|
|
31
|
+
methodId: string;
|
|
32
|
+
methodKind: string;
|
|
33
|
+
flowId: string;
|
|
34
|
+
subjectId: string;
|
|
35
|
+
} | {
|
|
36
|
+
kind: "authorize_failed";
|
|
37
|
+
tenantId: TenantId | null;
|
|
38
|
+
clientId: string | null;
|
|
39
|
+
methodId?: string;
|
|
40
|
+
methodKind?: string;
|
|
41
|
+
flowId?: string;
|
|
42
|
+
reason: string;
|
|
43
|
+
} | {
|
|
44
|
+
kind: "token_issued";
|
|
45
|
+
tenantId: TenantId;
|
|
46
|
+
clientId: string;
|
|
47
|
+
methodId: string;
|
|
48
|
+
methodKind: string;
|
|
49
|
+
subjectId: string;
|
|
50
|
+
/** Hash of the issued refresh token id — never the token itself. */
|
|
51
|
+
refreshTokenIdHash?: string;
|
|
52
|
+
/** OIDC Core §2 — set when the response carried an `id_token`. */
|
|
53
|
+
idTokenIssued?: boolean;
|
|
54
|
+
/** RFC 9449 — set when the access token is DPoP-bound. */
|
|
55
|
+
dpopBound?: boolean;
|
|
56
|
+
} | {
|
|
57
|
+
kind: "token_refreshed";
|
|
58
|
+
tenantId: TenantId;
|
|
59
|
+
clientId: string;
|
|
60
|
+
subjectId: string;
|
|
61
|
+
family: string;
|
|
62
|
+
} | {
|
|
63
|
+
kind: "token_exchanged";
|
|
64
|
+
/** Tenant the new tokens are scoped to. */
|
|
65
|
+
tenantId: TenantId;
|
|
66
|
+
/** Tenant the subject_token was originally issued for. */
|
|
67
|
+
fromTenantId: TenantId;
|
|
68
|
+
clientId: string;
|
|
69
|
+
subjectId: string;
|
|
70
|
+
/** Fresh refresh-token family for the issued tokens. */
|
|
71
|
+
family: string;
|
|
72
|
+
} | {
|
|
73
|
+
kind: "token_revoked";
|
|
74
|
+
tenantId: TenantId;
|
|
75
|
+
clientId: string | null;
|
|
76
|
+
subjectId?: string;
|
|
77
|
+
family?: string;
|
|
78
|
+
reason: string;
|
|
79
|
+
} | {
|
|
80
|
+
kind: "refresh_reuse_detected";
|
|
81
|
+
tenantId: TenantId;
|
|
82
|
+
clientId: string;
|
|
83
|
+
family: string;
|
|
84
|
+
} | {
|
|
85
|
+
/**
|
|
86
|
+
* Emitted by `/end_session` (OIDC RP-Initiated Logout 1.0 §2) after
|
|
87
|
+
* processing the logout request — regardless of whether a
|
|
88
|
+
* `post_logout_redirect_uri` was supplied. `subjectId` is present
|
|
89
|
+
* when the request carried an `id_token_hint` that successfully
|
|
90
|
+
* verified; absent otherwise.
|
|
91
|
+
*/
|
|
92
|
+
kind: "session_logout";
|
|
93
|
+
tenantId: TenantId;
|
|
94
|
+
clientId?: string;
|
|
95
|
+
subjectId?: string;
|
|
96
|
+
} | {
|
|
97
|
+
/**
|
|
98
|
+
* Emitted when a DPoP proof's `jti` is presented within the replay
|
|
99
|
+
* window (RFC 9449 §11.1). The request was rejected with
|
|
100
|
+
* `invalid_dpop_proof`. Operators / SIEM use this to spot
|
|
101
|
+
* stolen-key replay attempts.
|
|
102
|
+
*/
|
|
103
|
+
kind: "dpop_replay_detected";
|
|
104
|
+
tenantId: TenantId | null;
|
|
105
|
+
/** First-half of the offending jti so logs can correlate without storing it. */
|
|
106
|
+
jtiPrefix: string;
|
|
107
|
+
} | {
|
|
108
|
+
kind: "flow_replay_attempt";
|
|
109
|
+
tenantId: TenantId | null;
|
|
110
|
+
flowId: string;
|
|
111
|
+
} | {
|
|
112
|
+
kind: "flow_tenant_mismatch";
|
|
113
|
+
stateTenantId: TenantId;
|
|
114
|
+
flowTenantId: TenantId;
|
|
115
|
+
flowId: string;
|
|
116
|
+
} | {
|
|
117
|
+
kind: "flow_callback_mismatch";
|
|
118
|
+
tenantId: TenantId;
|
|
119
|
+
flowId: string;
|
|
120
|
+
expected: {
|
|
121
|
+
host: string;
|
|
122
|
+
path: string;
|
|
123
|
+
};
|
|
124
|
+
actual: {
|
|
125
|
+
host: string;
|
|
126
|
+
path: string;
|
|
127
|
+
};
|
|
128
|
+
} | {
|
|
129
|
+
kind: "factory_id_mismatch";
|
|
130
|
+
tenantId: TenantId;
|
|
131
|
+
methodId: string;
|
|
132
|
+
expectedKind: string;
|
|
133
|
+
actualKind: string;
|
|
134
|
+
} | {
|
|
135
|
+
kind: "invalid_method_config";
|
|
136
|
+
tenantId: TenantId;
|
|
137
|
+
methodId: string;
|
|
138
|
+
methodKind: string;
|
|
139
|
+
/** Zod error path string. Never the raw config blob. */
|
|
140
|
+
errorPath: string;
|
|
141
|
+
} | {
|
|
142
|
+
kind: "unknown_method_kind";
|
|
143
|
+
tenantId: TenantId;
|
|
144
|
+
methodId: string;
|
|
145
|
+
methodKind: string;
|
|
146
|
+
} | {
|
|
147
|
+
kind: "unrecoverable_flow";
|
|
148
|
+
reason: string;
|
|
149
|
+
host?: string;
|
|
150
|
+
} | {
|
|
151
|
+
kind: "custom";
|
|
152
|
+
type: string;
|
|
153
|
+
tenantId?: TenantId;
|
|
154
|
+
data: Record<string, unknown>;
|
|
155
|
+
};
|
|
156
|
+
export type AuditLog = {
|
|
157
|
+
/**
|
|
158
|
+
* Append a single event. Should not throw on durability failure; the
|
|
159
|
+
* adapter is responsible for buffering / retry. Returning never-rejects
|
|
160
|
+
* is acceptable so the IdP's hot paths are not gated on the log.
|
|
161
|
+
*/
|
|
162
|
+
log(event: AuditEvent & {
|
|
163
|
+
timestamp: number;
|
|
164
|
+
}): Promise<void>;
|
|
165
|
+
};
|
|
166
|
+
//# sourceMappingURL=audit-log.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-log.d.ts","sourceRoot":"","sources":["../../../src/ports/audit-log.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `ConfigStore` — tenant configuration lookup.
|
|
3
|
+
*
|
|
4
|
+
* Consistency contract: **eventual + bounded staleness (TTL ≤ 60 s).** This
|
|
5
|
+
* is a read-heavy, write-rare path; Cloudflare KV / read replicas are
|
|
6
|
+
* acceptable. Invalidation hook fires immediately on update so callers can
|
|
7
|
+
* drop stale entries earlier than TTL.
|
|
8
|
+
*
|
|
9
|
+
* See `ports/CONSISTENCY.md` for the full table.
|
|
10
|
+
*/
|
|
11
|
+
import type { Result } from "../types/result";
|
|
12
|
+
import type { TenantConfig, TenantId } from "../types/tenant";
|
|
13
|
+
export type ConfigStore = {
|
|
14
|
+
/**
|
|
15
|
+
* Look up a tenant's full config. Returns `tenant_not_found` if the id is
|
|
16
|
+
* unknown. Implementations should cache aggressively (TTL ≤ 60 s).
|
|
17
|
+
*/
|
|
18
|
+
getTenantConfig(id: TenantId): Promise<Result<TenantConfig>>;
|
|
19
|
+
/**
|
|
20
|
+
* Persist (create or update) a tenant's config. Implementations must
|
|
21
|
+
* trigger invalidation of any cached value for `id` before resolving so
|
|
22
|
+
* a subsequent `getTenantConfig` returns the new value.
|
|
23
|
+
*/
|
|
24
|
+
putTenantConfig(config: TenantConfig): Promise<Result<void>>;
|
|
25
|
+
/**
|
|
26
|
+
* Optional: signal to in-process caches that a tenant's config has been
|
|
27
|
+
* invalidated externally (e.g. via the management console). Adapters that
|
|
28
|
+
* don't expose cross-process invalidation may omit this.
|
|
29
|
+
*/
|
|
30
|
+
onInvalidate?(handler: (id: TenantId) => void): void;
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=config-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-store.d.ts","sourceRoot":"","sources":["../../../src/ports/config-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE7D,MAAM,MAAM,WAAW,GAAG;IACxB;;;OAGG;IACH,eAAe,CAAC,EAAE,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;IAE5D;;;;OAIG;IACH,eAAe,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAE5D;;;;OAIG;IACH,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,QAAQ,KAAK,IAAI,GAAG,IAAI,CAAA;CACrD,CAAA"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `KeyStore` — signing keys (JWT) and encryption keys (auth-code payload,
|
|
3
|
+
* other at-rest secrets).
|
|
4
|
+
*
|
|
5
|
+
* Per AD11, ES256 is the default signing algorithm; Ed25519 is supported.
|
|
6
|
+
*
|
|
7
|
+
* Consistency:
|
|
8
|
+
* - `currentSigningKey` — strong (active key must be unambiguous across
|
|
9
|
+
* the cluster).
|
|
10
|
+
* - `signingKeys` (JWKS) — eventual OK; verifiers tolerate brief lag
|
|
11
|
+
* during rotation.
|
|
12
|
+
* - Encryption keys — same as signing for consistency; rotated quarterly,
|
|
13
|
+
* old keys retained for `refreshTtl`.
|
|
14
|
+
*
|
|
15
|
+
* Note: `StateKeyRing` (HMAC keys for the `state` envelope) is **not** an
|
|
16
|
+
* abstraction over `KeyStore`. It is supplied directly via
|
|
17
|
+
* `IdPOptions.stateKeys` to avoid a bootstrap dependency on `KeyStore` for
|
|
18
|
+
* tenant resolution. A helper `loadStateKeyRingFromKeyStore` is offered
|
|
19
|
+
* for operators who choose to store the ring inside `KeyStore`.
|
|
20
|
+
*/
|
|
21
|
+
import type { Result } from "../types/result";
|
|
22
|
+
/** Asymmetric signing key. Public material is JWKS-exposed; private is server-only. */
|
|
23
|
+
export type SigningKey = {
|
|
24
|
+
kid: string;
|
|
25
|
+
/** JOSE `alg` value, e.g. `"ES256"` or `"EdDSA"`. */
|
|
26
|
+
alg: string;
|
|
27
|
+
/** JOSE `crv` for EC / OKP keys (`P-256`, `Ed25519`). Optional for other alg families. */
|
|
28
|
+
crv?: string;
|
|
29
|
+
/** JWK form of the public key — published in JWKS. */
|
|
30
|
+
publicJwk: Record<string, unknown>;
|
|
31
|
+
/**
|
|
32
|
+
* Opaque private-key handle. Concrete adapters interpret this:
|
|
33
|
+
* - In-memory / Postgres: a serialized JWK.
|
|
34
|
+
* - KMS-backed: a KMS key ARN / Cloudflare DO id.
|
|
35
|
+
*/
|
|
36
|
+
privateKeyRef: unknown;
|
|
37
|
+
/** Status used by JWKS rotation logic. */
|
|
38
|
+
status: "active" | "next" | "retired";
|
|
39
|
+
createdAt: number;
|
|
40
|
+
/** When this key may no longer be used to sign. Verification continues until removal. */
|
|
41
|
+
rotatedAt?: number;
|
|
42
|
+
};
|
|
43
|
+
/** Symmetric encryption key for the auth-code payload (and other at-rest data). */
|
|
44
|
+
export type EncryptionKey = {
|
|
45
|
+
kid: string;
|
|
46
|
+
/** JOSE `alg`, e.g. `"A256GCM"`. */
|
|
47
|
+
alg: string;
|
|
48
|
+
/** Opaque key handle (raw bytes for in-memory; KMS ref for cloud). */
|
|
49
|
+
keyRef: unknown;
|
|
50
|
+
status: "active" | "next" | "retired";
|
|
51
|
+
createdAt: number;
|
|
52
|
+
rotatedAt?: number;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Optional host-supplied envelope for wrapping private key material at rest.
|
|
56
|
+
*
|
|
57
|
+
* Adapters that persist signing-key private JWKs and encryption-key raw bytes
|
|
58
|
+
* to durable storage (Postgres, DynamoDB, …) accept a `KeyWrapper` so that
|
|
59
|
+
* material is encrypted with a key the database server cannot read. The
|
|
60
|
+
* canonical implementation backs `wrap` / `unwrap` with a cloud KMS
|
|
61
|
+
* (`AWS KMS Encrypt` / `Decrypt`, GCP KMS, Vault transit, etc.).
|
|
62
|
+
*
|
|
63
|
+
* Without a wrapper, `PostgresKeyStore` / `DynamoKeyStore` store private
|
|
64
|
+
* material in plaintext at rest — acceptable for dev / single-tenant
|
|
65
|
+
* operators with full-disk encryption who have accepted the trade-off, but
|
|
66
|
+
* **not** acceptable for production deployments with multi-tenant data. See
|
|
67
|
+
* `INTEGRATION.md` §4.
|
|
68
|
+
*/
|
|
69
|
+
export type KeyWrapper = {
|
|
70
|
+
/** Encrypt `plaintext` (≤ a few KB) under the host's master key. */
|
|
71
|
+
wrap(plaintext: Uint8Array): Promise<Uint8Array>;
|
|
72
|
+
/** Decrypt a value previously returned by `wrap`. */
|
|
73
|
+
unwrap(ciphertext: Uint8Array): Promise<Uint8Array>;
|
|
74
|
+
};
|
|
75
|
+
export type KeyStore = {
|
|
76
|
+
/** The unambiguous active signing key. Strong consistency. */
|
|
77
|
+
currentSigningKey(): Promise<Result<SigningKey>>;
|
|
78
|
+
/**
|
|
79
|
+
* All keys to publish in JWKS — active + recently rotated, within the
|
|
80
|
+
* verification overlap window. Eventual consistency acceptable.
|
|
81
|
+
*/
|
|
82
|
+
signingKeys(): Promise<Result<SigningKey[]>>;
|
|
83
|
+
/** Active encryption key for at-rest payload encryption. Strong consistency. */
|
|
84
|
+
currentEncryptionKey(): Promise<Result<EncryptionKey>>;
|
|
85
|
+
/**
|
|
86
|
+
* Look up a specific encryption key by `kid`. Used to decrypt payloads
|
|
87
|
+
* encrypted under a previous key during the overlap window.
|
|
88
|
+
*/
|
|
89
|
+
getEncryptionKey(kid: string): Promise<Result<EncryptionKey>>;
|
|
90
|
+
/**
|
|
91
|
+
* Rotate signing keys — promote `next` → `active`, retire current
|
|
92
|
+
* `active`, mint a new `next`. Phase 8 schedules this on a timer.
|
|
93
|
+
*/
|
|
94
|
+
rotateSigningKeys?(): Promise<Result<void>>;
|
|
95
|
+
/** Same as `rotateSigningKeys` for encryption keys. Quarterly cadence. */
|
|
96
|
+
rotateEncryptionKeys?(): Promise<Result<void>>;
|
|
97
|
+
};
|
|
98
|
+
//# sourceMappingURL=key-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"key-store.d.ts","sourceRoot":"","sources":["../../../src/ports/key-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAE7C,uFAAuF;AACvF,MAAM,MAAM,UAAU,GAAG;IACvB,GAAG,EAAE,MAAM,CAAA;IACX,qDAAqD;IACrD,GAAG,EAAE,MAAM,CAAA;IACX,0FAA0F;IAC1F,GAAG,CAAC,EAAE,MAAM,CAAA;IACZ,sDAAsD;IACtD,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAClC;;;;OAIG;IACH,aAAa,EAAE,OAAO,CAAA;IACtB,0CAA0C;IAC1C,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,yFAAyF;IACzF,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,mFAAmF;AACnF,MAAM,MAAM,aAAa,GAAG;IAC1B,GAAG,EAAE,MAAM,CAAA;IACX,oCAAoC;IACpC,GAAG,EAAE,MAAM,CAAA;IACX,sEAAsE;IACtE,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS,CAAA;IACrC,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,UAAU,GAAG;IACvB,oEAAoE;IACpE,IAAI,CAAC,SAAS,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;IAChD,qDAAqD;IACrD,MAAM,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAA;CACpD,CAAA;AAED,MAAM,MAAM,QAAQ,GAAG;IACrB,8DAA8D;IAC9D,iBAAiB,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAA;IAEhD;;;OAGG;IACH,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAA;IAE5C,gFAAgF;IAChF,oBAAoB,IAAI,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;IAEtD;;;OAGG;IACH,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAA;IAE7D;;;OAGG;IACH,iBAAiB,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAE3C,0EAA0E;IAC1E,oBAAoB,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;CAC/C,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `MethodStore` — per-tenant `MethodConfig` lookup.
|
|
3
|
+
*
|
|
4
|
+
* This is a subset of `ConfigStore` exposed as a separate port for two
|
|
5
|
+
* reasons:
|
|
6
|
+
* 1. Adapters may want to back `MethodStore` with a more frequently
|
|
7
|
+
* invalidated cache than the full tenant config.
|
|
8
|
+
* 2. The management console can update auth-method config independently
|
|
9
|
+
* of other tenant-level fields.
|
|
10
|
+
*
|
|
11
|
+
* Consistency: same as `ConfigStore` — eventual + bounded staleness
|
|
12
|
+
* (TTL ≤ 60 s). Invalidation hook fires on update.
|
|
13
|
+
*/
|
|
14
|
+
import type { Result } from "../types/result";
|
|
15
|
+
import type { MethodConfig, TenantId } from "../types/tenant";
|
|
16
|
+
export type MethodStore = {
|
|
17
|
+
/** All method instances configured for a tenant (enabled and disabled). */
|
|
18
|
+
listMethods(tenantId: TenantId): Promise<Result<MethodConfig[]>>;
|
|
19
|
+
/**
|
|
20
|
+
* Look up a single method instance by tenant-local id. Returns
|
|
21
|
+
* `method_not_found` if `methodId` does not exist in this tenant.
|
|
22
|
+
*/
|
|
23
|
+
getMethodConfig(tenantId: TenantId, methodId: string): Promise<Result<MethodConfig>>;
|
|
24
|
+
/** Persist (create or update) a method instance. Triggers invalidation. */
|
|
25
|
+
putMethodConfig(tenantId: TenantId, method: MethodConfig): Promise<Result<void>>;
|
|
26
|
+
/** Delete a method instance. Tokens issued by it remain valid until expiry. */
|
|
27
|
+
deleteMethodConfig(tenantId: TenantId, methodId: string): Promise<Result<void>>;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=method-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"method-store.d.ts","sourceRoot":"","sources":["../../../src/ports/method-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAE7D,MAAM,MAAM,WAAW,GAAG;IACxB,2EAA2E;IAC3E,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAA;IAEhE;;;OAGG;IACH,eAAe,CACb,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAA;IAEhC,2EAA2E;IAC3E,eAAe,CACb,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;IAExB,+EAA+E;IAC/E,kBAAkB,CAChB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;CACzB,CAAA"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `SessionStore` — flow records (required) and optional long-lived sessions.
|
|
3
|
+
*
|
|
4
|
+
* Flow records are the single server-side source of truth for an in-flight
|
|
5
|
+
* authorization. They are written at `/authorize`, updated when a method
|
|
6
|
+
* returns a `challenge` with `saveMethodState`, and consumed exactly once
|
|
7
|
+
* on the upstream callback.
|
|
8
|
+
*
|
|
9
|
+
* The framework owns flow-record I/O — methods only observe
|
|
10
|
+
* (`MethodContext.flow`) and request updates via
|
|
11
|
+
* `MethodResult.challenge.saveMethodState`. Methods MUST NOT call
|
|
12
|
+
* `saveFlow` / `consumeFlow` directly.
|
|
13
|
+
*
|
|
14
|
+
* See `ports/CONSISTENCY.md`.
|
|
15
|
+
*/
|
|
16
|
+
import type { FlowRecord } from "../types/flow";
|
|
17
|
+
import type { Result } from "../types/result";
|
|
18
|
+
export type SessionStore = {
|
|
19
|
+
/**
|
|
20
|
+
* Persist a new flow record under `flowId`. Strong, atomic write — the
|
|
21
|
+
* record must be visible to `consumeFlow` on any node by the time this
|
|
22
|
+
* resolves. `ttl` is in milliseconds and must equal `expiresAt -
|
|
23
|
+
* createdAt` on the supplied record (default 10 minutes).
|
|
24
|
+
*/
|
|
25
|
+
saveFlow(flowId: string, payload: FlowRecord, ttl: number): Promise<Result<void>>;
|
|
26
|
+
/**
|
|
27
|
+
* Merge `methodState` into an existing flow record. The framework calls
|
|
28
|
+
* this when a method handler returns
|
|
29
|
+
* `{ kind: "challenge", saveMethodState }`, **before** sending the
|
|
30
|
+
* upstream redirect response — the user agent never sees the redirect
|
|
31
|
+
* until `methodState` is durably saved.
|
|
32
|
+
*
|
|
33
|
+
* Returns `unknown_state` if `flowId` is missing or already consumed.
|
|
34
|
+
*/
|
|
35
|
+
updateFlowMethodState(flowId: string, methodState: unknown): Promise<Result<void>>;
|
|
36
|
+
/**
|
|
37
|
+
* **Peek** at a flow record without consuming it. Used by the method-route
|
|
38
|
+
* mount (Phase 4) where credential POSTs may need to dispatch the
|
|
39
|
+
* method multiple times before the flow is consumed on `success`.
|
|
40
|
+
*
|
|
41
|
+
* Consistency: strong (the record must be visible to a `consumeFlow`
|
|
42
|
+
* called immediately after). Returns `unknown_state` if missing /
|
|
43
|
+
* expired.
|
|
44
|
+
*
|
|
45
|
+
* The framework is the only legitimate caller; methods should never read
|
|
46
|
+
* the flow directly — they observe via `MethodContext.flow`.
|
|
47
|
+
*/
|
|
48
|
+
readFlow(flowId: string): Promise<Result<FlowRecord>>;
|
|
49
|
+
/**
|
|
50
|
+
* Atomic delete-on-read. Returns the full `FlowRecord` on success — the
|
|
51
|
+
* framework needs every field to snapshot into the auth-code payload
|
|
52
|
+
* before the record is gone. Concurrent calls with the same `flowId`
|
|
53
|
+
* resolve to exactly one winner; losers receive `unknown_state` which
|
|
54
|
+
* the HTTP layer maps to `invalid_request` (audit
|
|
55
|
+
* `flow_replay_attempt`).
|
|
56
|
+
*
|
|
57
|
+
* This is the **only** consume; the framework does not call it twice.
|
|
58
|
+
* Methods receive the in-memory record via `MethodContext.flow` for the
|
|
59
|
+
* rest of the callback request.
|
|
60
|
+
*/
|
|
61
|
+
consumeFlow(flowId: string): Promise<Result<FlowRecord>>;
|
|
62
|
+
/**
|
|
63
|
+
* Optional: long-lived session support (cross-request remember-me beyond
|
|
64
|
+
* the OAuth flow). Adapters that don't implement this can omit it; the
|
|
65
|
+
* framework only requires the flow-record methods above.
|
|
66
|
+
*/
|
|
67
|
+
createSession?(sessionId: string, payload: SessionRecord, ttl: number): Promise<Result<void>>;
|
|
68
|
+
readSession?(sessionId: string): Promise<Result<SessionRecord>>;
|
|
69
|
+
revokeSession?(sessionId: string): Promise<Result<void>>;
|
|
70
|
+
/**
|
|
71
|
+
* Optional: Pushed Authorization Request (RFC 9126) storage. Persists the
|
|
72
|
+
* pre-parsed `/authorize` parameters under an opaque `request_uri` for
|
|
73
|
+
* one-shot retrieval at `/authorize` time. Strong consistency + atomic
|
|
74
|
+
* delete-on-read — same semantics as `saveFlow` / `consumeFlow`.
|
|
75
|
+
*
|
|
76
|
+
* Adapters without these methods cannot satisfy `/par`; the framework's
|
|
77
|
+
* `/par` handler returns `invalid_request` when called against such a
|
|
78
|
+
* store. Implement both methods together (the framework only exposes
|
|
79
|
+
* the endpoint when both are present).
|
|
80
|
+
*/
|
|
81
|
+
savePar?(requestUri: string, payload: ParRecord, ttl: number): Promise<Result<void>>;
|
|
82
|
+
consumePar?(requestUri: string): Promise<Result<ParRecord>>;
|
|
83
|
+
};
|
|
84
|
+
/**
|
|
85
|
+
* Stored PAR payload. The `params` blob is the raw form/query record from
|
|
86
|
+
* `POST /par`, kept verbatim so the `/authorize` rehydrate path can feed
|
|
87
|
+
* it through the same Zod parser the direct path uses.
|
|
88
|
+
*/
|
|
89
|
+
export type ParRecord = {
|
|
90
|
+
requestUri: string;
|
|
91
|
+
/** Raw key/value record as posted to `/par` (excluding auth fields). */
|
|
92
|
+
params: Record<string, string>;
|
|
93
|
+
clientId: string;
|
|
94
|
+
/** Wall-clock issuance + absolute expiry (ms). */
|
|
95
|
+
issuedAt: number;
|
|
96
|
+
expiresAt: number;
|
|
97
|
+
};
|
|
98
|
+
/** Optional long-lived session payload (used by `createSession` family). */
|
|
99
|
+
export type SessionRecord = {
|
|
100
|
+
sessionId: string;
|
|
101
|
+
tenantId: string;
|
|
102
|
+
subjectId: string;
|
|
103
|
+
/** Wall-clock issued / expires timestamps (ms). */
|
|
104
|
+
issuedAt: number;
|
|
105
|
+
expiresAt: number;
|
|
106
|
+
/** Free-form metadata adapters may use (device, user agent fingerprint, etc.). */
|
|
107
|
+
metadata?: Record<string, unknown>;
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=session-store.d.ts.map
|