@_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,324 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public-surface types for `createIdP` — the user-facing options object,
|
|
3
|
+
* the returned handle, the `success` callback contract, and observation
|
|
4
|
+
* hook event shapes.
|
|
5
|
+
*/
|
|
6
|
+
import type { AuditLog } from "../ports/audit-log";
|
|
7
|
+
import type { ConfigStore } from "../ports/config-store";
|
|
8
|
+
import type { KeyStore } from "../ports/key-store";
|
|
9
|
+
import type { MethodStore } from "../ports/method-store";
|
|
10
|
+
import type { SessionStore } from "../ports/session-store";
|
|
11
|
+
import type { TokenStore } from "../ports/token-store";
|
|
12
|
+
import type { AuthError } from "./error";
|
|
13
|
+
import type { AnyAuthMethodFactory } from "./method";
|
|
14
|
+
import type { Result } from "./result";
|
|
15
|
+
import type { SubjectClaim, SubjectSchema } from "./subject";
|
|
16
|
+
import type { ClientConfig, StateKeyRing, TenantContext, TenantId, ThemeConfig } from "./tenant";
|
|
17
|
+
import type { PickerContext, PickerMethod } from "./picker";
|
|
18
|
+
/**
|
|
19
|
+
* Input handed to the user's `success` callback. The framework provides
|
|
20
|
+
* everything needed to map the upstream / credential result into the
|
|
21
|
+
* issued subject.
|
|
22
|
+
*
|
|
23
|
+
* `methodKind` tells you **which provider** produced the result (e.g.
|
|
24
|
+
* `"google"`); `methodId` tells you **which tenant-local instance** of
|
|
25
|
+
* that provider was used (e.g. `"google-workspace"` vs
|
|
26
|
+
* `"google-personal"`). Use `methodKind` for provider-specific branches;
|
|
27
|
+
* use `methodId` for instance-specific routing.
|
|
28
|
+
*/
|
|
29
|
+
export type SuccessMapInput = {
|
|
30
|
+
tenant: TenantContext;
|
|
31
|
+
methodId: string;
|
|
32
|
+
methodKind: string;
|
|
33
|
+
/** Upstream system's stable identifier (from `MethodResult.success`). */
|
|
34
|
+
providerSubject: string;
|
|
35
|
+
/** Typed per method via the factory's `P` generic at the call site. */
|
|
36
|
+
properties: unknown;
|
|
37
|
+
context: Record<string, unknown> | null;
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* Optional observation hook payload — fires after the subject claim has
|
|
41
|
+
* already been minted. **Does not** influence the issued subject; use it
|
|
42
|
+
* for audit, analytics, side effects only.
|
|
43
|
+
*/
|
|
44
|
+
export type SuccessEvent = SuccessMapInput & {
|
|
45
|
+
/** The final subject claim that became the JWT `sub`. */
|
|
46
|
+
claim: SubjectClaim;
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Optional observation hook payload — fires on a failed auth attempt.
|
|
50
|
+
* Carries enough id information for operators to find the offending flow
|
|
51
|
+
* / config row without leaking secrets.
|
|
52
|
+
*/
|
|
53
|
+
export type FailureEvent = {
|
|
54
|
+
tenantId: TenantId | null;
|
|
55
|
+
clientId: string | null;
|
|
56
|
+
methodId?: string;
|
|
57
|
+
methodKind?: string;
|
|
58
|
+
flowId?: string;
|
|
59
|
+
error: AuthError;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Optional hook called at `/token` time, after PKCE has succeeded and
|
|
63
|
+
* after the `success` callback has produced a `SubjectClaim`, but
|
|
64
|
+
* **before** the access/refresh response is returned. Use this when you
|
|
65
|
+
* prefer not to persist upstream tokens in the code payload itself (see
|
|
66
|
+
* the "alternative split" note in the plan §"Code payload
|
|
67
|
+
* confidentiality"). If it throws, the IdP responds with OAuth
|
|
68
|
+
* `server_error` and the token issuance is aborted.
|
|
69
|
+
*/
|
|
70
|
+
export type PersistUpstreamTokens = (input: {
|
|
71
|
+
tenant: TenantContext;
|
|
72
|
+
methodId: string;
|
|
73
|
+
methodKind: string;
|
|
74
|
+
providerSubject: string;
|
|
75
|
+
properties: unknown;
|
|
76
|
+
subjectClaim: SubjectClaim;
|
|
77
|
+
}) => Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* Optional hook called for RFC 8693 token-exchange requests at
|
|
80
|
+
* `/token`. The host decides whether the authenticated subject can
|
|
81
|
+
* obtain a token scoped to `request.audience` (a new tenant), and
|
|
82
|
+
* returns either:
|
|
83
|
+
*
|
|
84
|
+
* - the `SubjectClaim` representing the subject's identity at the
|
|
85
|
+
* new audience (often the same shape but different `properties` —
|
|
86
|
+
* e.g. a different role), or
|
|
87
|
+
* - an `AuthError` (typically `authError.invalidTarget(...)` if the
|
|
88
|
+
* subject can't access that audience).
|
|
89
|
+
*
|
|
90
|
+
* If this hook is not supplied, token-exchange requests are rejected
|
|
91
|
+
* with `unsupported_grant_type`. This is the graceful-degradation
|
|
92
|
+
* default — the grant simply isn't enabled.
|
|
93
|
+
*
|
|
94
|
+
* The library does NOT inspect the audience string; it's an opaque
|
|
95
|
+
* `TenantId` that the host's `ConfigStore` must be able to resolve.
|
|
96
|
+
*/
|
|
97
|
+
export type ExchangeAudience = (currentClaim: SubjectClaim, request: {
|
|
98
|
+
/** The target tenant id (RFC 8693 `audience`). Opaque to the library. */
|
|
99
|
+
audience: string;
|
|
100
|
+
/** Subset of subject_token scopes the caller asked for. */
|
|
101
|
+
requestedScopes?: string[];
|
|
102
|
+
/** The authenticated client doing the exchange. */
|
|
103
|
+
clientId: string;
|
|
104
|
+
/** Tenant the subject_token came from. */
|
|
105
|
+
fromTenantId: string;
|
|
106
|
+
}) => Promise<SubjectClaim | AuthError>;
|
|
107
|
+
/**
|
|
108
|
+
* RFC 7591 Dynamic Client Registration request body, normalized to the
|
|
109
|
+
* library's type system. The framework's `/register` handler parses the
|
|
110
|
+
* raw JSON, validates structure, then calls the host's `registerClient`
|
|
111
|
+
* hook with this shape. The host owns persistence — writing through its
|
|
112
|
+
* own `ConfigStore` — and returns the final `ClientConfig`.
|
|
113
|
+
*/
|
|
114
|
+
export type RegisterClientRequest = {
|
|
115
|
+
client_name?: string;
|
|
116
|
+
redirect_uris: string[];
|
|
117
|
+
/** RFC 7591 §2 — defaults to `["authorization_code"]`. */
|
|
118
|
+
grant_types?: string[];
|
|
119
|
+
/** RFC 7591 §2 — defaults to `["code"]`. */
|
|
120
|
+
response_types?: string[];
|
|
121
|
+
/** RFC 7591 §2 — `"none"` = public client, otherwise confidential. */
|
|
122
|
+
token_endpoint_auth_method?: "none" | "client_secret_basic" | "client_secret_post";
|
|
123
|
+
scope?: string;
|
|
124
|
+
/** OIDC RP-Initiated Logout 1.0 §2. */
|
|
125
|
+
post_logout_redirect_uris?: string[];
|
|
126
|
+
/** OIDC Core §8.1. */
|
|
127
|
+
sector_identifier_uri?: string;
|
|
128
|
+
/** Free-form metadata the host may interpret. */
|
|
129
|
+
contacts?: string[];
|
|
130
|
+
};
|
|
131
|
+
/**
|
|
132
|
+
* RFC 7591 §3.2.1 response body. Returned verbatim from `/register` when
|
|
133
|
+
* the host hook produces a `ClientConfig`. `client_secret` is included
|
|
134
|
+
* only for confidential clients; public clients omit it.
|
|
135
|
+
*/
|
|
136
|
+
export type RegisterClientResponse = {
|
|
137
|
+
client_id: string;
|
|
138
|
+
client_secret?: string;
|
|
139
|
+
client_id_issued_at: number;
|
|
140
|
+
client_secret_expires_at?: number;
|
|
141
|
+
redirect_uris: string[];
|
|
142
|
+
grant_types?: string[];
|
|
143
|
+
response_types?: string[];
|
|
144
|
+
token_endpoint_auth_method?: string;
|
|
145
|
+
client_name?: string;
|
|
146
|
+
};
|
|
147
|
+
/**
|
|
148
|
+
* Optional Dynamic Client Registration hook. Hosts that want to expose
|
|
149
|
+
* RFC 7591 client provisioning supply this; the framework validates the
|
|
150
|
+
* wire format, then defers persistence to the host. If absent, the
|
|
151
|
+
* `/register` endpoint returns `invalid_request` so RPs receive a clear
|
|
152
|
+
* "not enabled" signal rather than a 404.
|
|
153
|
+
*
|
|
154
|
+
* The hook receives the parsed request, the resolved tenant, and the
|
|
155
|
+
* plaintext client secret (if any) the framework minted — hosts hash it
|
|
156
|
+
* with `hashClientSecret` before storing on `ClientConfig.secretHash`,
|
|
157
|
+
* then return the final `ClientConfig` along with the secret in the
|
|
158
|
+
* `RegisterClientResponse` so the RP can record it.
|
|
159
|
+
*/
|
|
160
|
+
export type RegisterClient = (input: {
|
|
161
|
+
tenant: TenantContext;
|
|
162
|
+
request: RegisterClientRequest;
|
|
163
|
+
}) => Promise<Result<{
|
|
164
|
+
client: ClientConfig;
|
|
165
|
+
secret?: string;
|
|
166
|
+
}, AuthError>>;
|
|
167
|
+
/**
|
|
168
|
+
* Optional override for the default provider picker shown when an
|
|
169
|
+
* `/authorize` request has multiple enabled methods and no `method_id`.
|
|
170
|
+
*
|
|
171
|
+
* The library ships a minimal styled default (see `src/ui/picker.ts`);
|
|
172
|
+
* supply this to render a fully custom selection screen. The returned
|
|
173
|
+
* `Response` is sent as-is; the framework applies `cache-control: no-store`
|
|
174
|
+
* unless the response already sets a `Cache-Control` header.
|
|
175
|
+
*/
|
|
176
|
+
export type RenderPicker = (methods: PickerMethod[], ctx: PickerContext) => Response | Promise<Response>;
|
|
177
|
+
export type IdPOptions = {
|
|
178
|
+
/**
|
|
179
|
+
* Tenant resolution for the first request in a flow. Not consulted on
|
|
180
|
+
* callbacks — the framework recovers `(tenantId, flowId)` from the
|
|
181
|
+
* MAC-bound state envelope, partitioned host, or `flowId`-in-URI
|
|
182
|
+
* mechanism (see plan §"Tenant Recovery Across Redirects").
|
|
183
|
+
*/
|
|
184
|
+
resolveTenant: (req: Request) => Promise<Result<TenantId, AuthError>>;
|
|
185
|
+
/** Opt-in for partitioned callback hosts (recovery mechanism #2). */
|
|
186
|
+
callbackHostFor?: (tenantId: TenantId) => string;
|
|
187
|
+
/**
|
|
188
|
+
* HMAC-SHA-256 key ring used to MAC the minimal state envelope. The
|
|
189
|
+
* envelope carries only `{ tenantId, flowId, nonce, kid }` — never
|
|
190
|
+
* sensitive data — so a global ring is acceptable and necessary
|
|
191
|
+
* (tenant config can't be loaded until we know the tenant). Operators
|
|
192
|
+
* who prefer storing the ring inside `KeyStore` can use the
|
|
193
|
+
* `loadStateKeyRingFromKeyStore` helper.
|
|
194
|
+
*
|
|
195
|
+
* REQUIRED.
|
|
196
|
+
*/
|
|
197
|
+
stateKeys: StateKeyRing;
|
|
198
|
+
configStore: ConfigStore;
|
|
199
|
+
tokenStore: TokenStore;
|
|
200
|
+
keyStore: KeyStore;
|
|
201
|
+
/** Required: flow records need strong CAS / atomic delete-on-read. */
|
|
202
|
+
sessionStore: SessionStore;
|
|
203
|
+
/** Optional but recommended for any production deployment. */
|
|
204
|
+
auditLog?: AuditLog;
|
|
205
|
+
/** Optional — falls back to `ConfigStore` for `MethodConfig` lookups. */
|
|
206
|
+
methodStore?: MethodStore;
|
|
207
|
+
/** Issuer URL. Function form lets multi-tenant deployments derive it per request. */
|
|
208
|
+
issuerUrl: string | ((req: Request) => string);
|
|
209
|
+
/**
|
|
210
|
+
* Available method factories. **The KEY of this record MUST equal
|
|
211
|
+
* `factory.kind`.** `createIdP` throws on construction if any key
|
|
212
|
+
* disagrees with its factory's declared `kind`, with a list of
|
|
213
|
+
* offending keys in the error message.
|
|
214
|
+
*/
|
|
215
|
+
methods: Record<string, AnyAuthMethodFactory>;
|
|
216
|
+
subjects: SubjectSchema;
|
|
217
|
+
/**
|
|
218
|
+
* REQUIRED. Maps method result → issued subject. Runs at `/token` time,
|
|
219
|
+
* after PKCE check, with the same conceptual role as the existing
|
|
220
|
+
* `auth.success` callback in `issuer.ts`.
|
|
221
|
+
*/
|
|
222
|
+
success: (input: SuccessMapInput) => Promise<SubjectClaim>;
|
|
223
|
+
theme?: ThemeConfig;
|
|
224
|
+
hooks?: {
|
|
225
|
+
/** Observation only — does NOT influence the subject. */
|
|
226
|
+
onSuccess?: (event: SuccessEvent) => Promise<void>;
|
|
227
|
+
onFailure?: (event: FailureEvent) => Promise<void>;
|
|
228
|
+
};
|
|
229
|
+
/**
|
|
230
|
+
* Optional escape hatch for high-sensitivity deployments — see the
|
|
231
|
+
* `PersistUpstreamTokens` type doc.
|
|
232
|
+
*/
|
|
233
|
+
persistUpstreamTokens?: PersistUpstreamTokens;
|
|
234
|
+
/**
|
|
235
|
+
* Optional RFC 8693 token-exchange hook. If absent, exchange
|
|
236
|
+
* requests at `/token` return `unsupported_grant_type`. See the
|
|
237
|
+
* `ExchangeAudience` type doc for the contract.
|
|
238
|
+
*/
|
|
239
|
+
exchangeAudience?: ExchangeAudience;
|
|
240
|
+
/**
|
|
241
|
+
* Optional override for the default provider picker. See `RenderPicker`.
|
|
242
|
+
*/
|
|
243
|
+
renderPicker?: RenderPicker;
|
|
244
|
+
/**
|
|
245
|
+
* Optional RFC 7591 Dynamic Client Registration hook. See
|
|
246
|
+
* `RegisterClient` for the contract. When absent, `/register` rejects
|
|
247
|
+
* with `invalid_request: "dynamic client registration is not enabled"`.
|
|
248
|
+
*/
|
|
249
|
+
registerClient?: RegisterClient;
|
|
250
|
+
/**
|
|
251
|
+
* Optional hook that builds the `TenantContext.request.custom` blob for
|
|
252
|
+
* each request the framework processes (the initial `/authorize`, the
|
|
253
|
+
* `/cb/*` callback, and any subsequent direct token endpoint hit).
|
|
254
|
+
*
|
|
255
|
+
* The returned record flows through to methods' `MethodContext`, to the
|
|
256
|
+
* `success` callback's `SuccessMapInput.context`, and to authorize-time
|
|
257
|
+
* `FlowRecord.context` (which is then re-presented on the
|
|
258
|
+
* `/cb/*` side as the flow proceeds). Typical contents: a request id,
|
|
259
|
+
* decoded JWT claims from a host edge layer, mTLS cert info, geo
|
|
260
|
+
* hints — anything per-request the host wants methods or `success` to
|
|
261
|
+
* see.
|
|
262
|
+
*
|
|
263
|
+
* Without this hook, `tenant.request.custom` is `{}` and
|
|
264
|
+
* `SuccessMapInput.context` is `null`. There is no semantic difference
|
|
265
|
+
* between an absent hook and one that returns `{}`.
|
|
266
|
+
*/
|
|
267
|
+
buildCustomContext?: (req: Request) => Record<string, unknown> | Promise<Record<string, unknown>>;
|
|
268
|
+
/**
|
|
269
|
+
* Optional vendor scope → claim-names map. Merged on top of OIDC Core
|
|
270
|
+
* §5.4 when building the id_token + `/userinfo` response. Lets a host
|
|
271
|
+
* expose its own identity vocabulary (`tenant_id`, `org_role`, etc.)
|
|
272
|
+
* via custom scope names. The standard §5.4 mapping always wins on
|
|
273
|
+
* collision, so an entry for `email` is silently ignored.
|
|
274
|
+
*
|
|
275
|
+
* Per-client scope allowlist still applies — a client must list a
|
|
276
|
+
* custom scope in `ClientConfig.scopes` to be allowed to request it.
|
|
277
|
+
*
|
|
278
|
+
* ```ts
|
|
279
|
+
* customScopeClaims: {
|
|
280
|
+
* tenant: ["tenant_id", "tenant_role", "tenant_roles"],
|
|
281
|
+
* org: ["organization_id", "org_role"],
|
|
282
|
+
* }
|
|
283
|
+
* ```
|
|
284
|
+
*/
|
|
285
|
+
customScopeClaims?: Record<string, ReadonlyArray<string>>;
|
|
286
|
+
/**
|
|
287
|
+
* Optional override for the framework's `Set-Cookie` defaults.
|
|
288
|
+
*
|
|
289
|
+
* Production deployments should rely on the built-in defaults
|
|
290
|
+
* (`secure: true`, no domain, `path: "/"`). Local development over plain
|
|
291
|
+
* HTTP — where Chrome rejects `Secure` cookies — can pass
|
|
292
|
+
* `cookies: { secure: false }` so the `idp.flow` / `auth.*` cookies
|
|
293
|
+
* round-trip on `localhost`. `domain` and `path` are passed through to
|
|
294
|
+
* every framework-issued cookie that doesn't set them itself.
|
|
295
|
+
*/
|
|
296
|
+
cookies?: {
|
|
297
|
+
secure?: boolean;
|
|
298
|
+
domain?: string;
|
|
299
|
+
path?: string;
|
|
300
|
+
};
|
|
301
|
+
};
|
|
302
|
+
/**
|
|
303
|
+
* The returned IdP handle. `handle(req)` is the single fetch-style
|
|
304
|
+
* entrypoint suitable for `export default { fetch: idp.handle }` on
|
|
305
|
+
* Cloudflare Workers; the per-endpoint primitives are exposed for
|
|
306
|
+
* embedding inside a larger app (e.g. mounting alongside admin routes).
|
|
307
|
+
*/
|
|
308
|
+
export type IdP = {
|
|
309
|
+
handle: (req: Request) => Promise<Response>;
|
|
310
|
+
authorize: (req: Request) => Promise<Response>;
|
|
311
|
+
token: (req: Request) => Promise<Response>;
|
|
312
|
+
userinfo: (req: Request) => Promise<Response>;
|
|
313
|
+
jwks: (req: Request) => Promise<Response>;
|
|
314
|
+
discovery: (req: Request) => Promise<Response>;
|
|
315
|
+
revoke: (req: Request) => Promise<Response>;
|
|
316
|
+
introspect: (req: Request) => Promise<Response>;
|
|
317
|
+
/** OIDC RP-Initiated Logout 1.0. */
|
|
318
|
+
endSession: (req: Request) => Promise<Response>;
|
|
319
|
+
/** RFC 9126 Pushed Authorization Requests. */
|
|
320
|
+
par: (req: Request) => Promise<Response>;
|
|
321
|
+
/** RFC 7591 Dynamic Client Registration. */
|
|
322
|
+
register: (req: Request) => Promise<Response>;
|
|
323
|
+
};
|
|
324
|
+
//# sourceMappingURL=idp.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"idp.d.ts","sourceRoot":"","sources":["../../../src/types/idp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `AuthMethod` — the core pluggable authentication abstraction.
|
|
3
|
+
*
|
|
4
|
+
* AD2: methods are **data + handler functions**, not framework modules. They
|
|
5
|
+
* depend on Web Fetch `Request`/`Response` (Web standards available on every
|
|
6
|
+
* runtime) and on a small `MethodContext` of plain data. The full allowed
|
|
7
|
+
* import set for files under `src/methods/` is `src/types/`,
|
|
8
|
+
* `src/domain/crypto`, `src/ui/forms`, sibling `src/methods/*`, and
|
|
9
|
+
* method-specific third-party libraries (e.g. `zod`,
|
|
10
|
+
* `@simplewebauthn/server`); methods MUST NOT import from `src/http/`,
|
|
11
|
+
* `src/adapters/`, or `src/ports/`, and never from Hono or any other HTTP
|
|
12
|
+
* framework. This `types/method.ts` file in particular is enforced
|
|
13
|
+
* framework-import-free by CI lint. See ARCHITECTURE.md §"Methods plug
|
|
14
|
+
* in alongside this stack" for the full contract.
|
|
15
|
+
*
|
|
16
|
+
* Cookies and other policy-sensitive response headers are returned as data
|
|
17
|
+
* (`SetCookie[]`, `CachePolicy`) and applied to the final `Response` by the
|
|
18
|
+
* HTTP layer. The HTTP layer also strips a fixed allowlist-violating set of
|
|
19
|
+
* headers from method-returned `Response` instances (`Set-Cookie`, security
|
|
20
|
+
* headers, `Cache-Control`) so methods cannot bypass framework policy. See
|
|
21
|
+
* `ARCHITECTURE.md` §"Response sanitization".
|
|
22
|
+
*/
|
|
23
|
+
import type { v1 } from "@standard-schema/spec";
|
|
24
|
+
import type { AuthError } from "./error";
|
|
25
|
+
import type { FlowRecord } from "./flow";
|
|
26
|
+
import type { Result } from "./result";
|
|
27
|
+
import type { MethodType, TenantContext, TenantId } from "./tenant";
|
|
28
|
+
/**
|
|
29
|
+
* A built, ready-to-dispatch auth method instance for a particular tenant.
|
|
30
|
+
*
|
|
31
|
+
* Generics:
|
|
32
|
+
* - `P`: properties type emitted to the user's `success` callback on a
|
|
33
|
+
* successful authentication. Typed per method.
|
|
34
|
+
* - `S`: method-private state stashed in `FlowRecord.methodState`. Opaque
|
|
35
|
+
* to the framework; the method reads and writes it through
|
|
36
|
+
* `MethodContext.methodState` and `MethodResult.challenge.saveMethodState`.
|
|
37
|
+
*/
|
|
38
|
+
export type AuthMethod<P = unknown, S = unknown> = {
|
|
39
|
+
/**
|
|
40
|
+
* Tenant-local instance id. Populated by the factory from
|
|
41
|
+
* `MethodConfig.id`. The framework dispatches URL routes by this value.
|
|
42
|
+
*/
|
|
43
|
+
id: string;
|
|
44
|
+
/**
|
|
45
|
+
* Factory kind. Populated by the factory from `MethodConfig.kind`. Used to
|
|
46
|
+
* tell the user's `success` callback which provider produced the result.
|
|
47
|
+
*/
|
|
48
|
+
kind: string;
|
|
49
|
+
type: MethodType;
|
|
50
|
+
/**
|
|
51
|
+
* Routes the method declares. Key format: `"GET /authorize"`,
|
|
52
|
+
* `"POST /callback"`, etc. The HTTP layer mounts these under
|
|
53
|
+
* `/<AuthMethod.id>/*` (tenant-local instance id, so two instances of the
|
|
54
|
+
* same factory get distinct URL spaces).
|
|
55
|
+
*/
|
|
56
|
+
routes: Record<string, MethodHandler<P, S>>;
|
|
57
|
+
/**
|
|
58
|
+
* Token-exchange function for the `/token` endpoint when the method
|
|
59
|
+
* participates in client-credentials-style flows (e.g. `m2m`). Most
|
|
60
|
+
* redirect-based methods do not set this.
|
|
61
|
+
*/
|
|
62
|
+
client?: ClientFn<P>;
|
|
63
|
+
};
|
|
64
|
+
export type MethodHandler<P, S> = (ctx: MethodContext<S>) => Promise<MethodResult<P, S>>;
|
|
65
|
+
/**
|
|
66
|
+
* Per-request context handed to a method handler.
|
|
67
|
+
*
|
|
68
|
+
* Methods **do not** receive raw `MethodConfig.config`. The factory captured
|
|
69
|
+
* the validated config via closure in `build`, so the handler only sees
|
|
70
|
+
* request-scoped data here.
|
|
71
|
+
*
|
|
72
|
+
* `cookies` is `ReadonlyMap` because methods don't get to mutate the
|
|
73
|
+
* incoming cookie jar — they return `SetCookie[]` instructions and the
|
|
74
|
+
* framework applies them.
|
|
75
|
+
*/
|
|
76
|
+
export type MethodContext<S = unknown> = {
|
|
77
|
+
/** The raw Web Fetch `Request`. Web standard, not Hono `Context`. */
|
|
78
|
+
request: Request;
|
|
79
|
+
/** Path within the method's mount, e.g. `"/callback"` (without the `/<id>` prefix). */
|
|
80
|
+
subPath: string;
|
|
81
|
+
tenant: TenantContext;
|
|
82
|
+
/** `null` while `/authorize` is being initiated; populated on callback. */
|
|
83
|
+
flow: FlowRecord | null;
|
|
84
|
+
/**
|
|
85
|
+
* Shortcut to `flow?.methodState`, narrowed to this method's `S` generic.
|
|
86
|
+
* `null` when there is no flow yet or no state has been written.
|
|
87
|
+
*/
|
|
88
|
+
methodState: S | null;
|
|
89
|
+
/** Parsed cookies from the incoming `Request`. Read-only. */
|
|
90
|
+
cookies: ReadonlyMap<string, string>;
|
|
91
|
+
/**
|
|
92
|
+
* Framework-supplied dispatch data. Populated for the `GET /authorize`
|
|
93
|
+
* initiation so the method can build an upstream redirect carrying the
|
|
94
|
+
* framework-minted state envelope; `null` for callback handlers (the
|
|
95
|
+
* framework has already verified `state` and the flow record by then,
|
|
96
|
+
* and the relevant data is on `flow`).
|
|
97
|
+
*/
|
|
98
|
+
dispatch: MethodDispatchData | null;
|
|
99
|
+
};
|
|
100
|
+
/** Framework-supplied data available to the method at `/authorize` time. */
|
|
101
|
+
export type MethodDispatchData = {
|
|
102
|
+
/**
|
|
103
|
+
* The MAC-signed state envelope the method must include in any upstream
|
|
104
|
+
* redirect. Opaque to the method.
|
|
105
|
+
*/
|
|
106
|
+
state: string;
|
|
107
|
+
/**
|
|
108
|
+
* Fully qualified callback URL the upstream provider should redirect to.
|
|
109
|
+
* Methods include this as `redirect_uri` (OAuth) or its equivalent.
|
|
110
|
+
*/
|
|
111
|
+
callbackUrl: string;
|
|
112
|
+
/** The issuer URL of this IdP. Methods may include in upstream OIDC requests. */
|
|
113
|
+
issuerUrl: string;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Discriminated union returned by a `MethodHandler`. The HTTP layer applies
|
|
117
|
+
* the result: rendering the challenge response, kicking off token issuance
|
|
118
|
+
* on success, or surfacing the error.
|
|
119
|
+
*/
|
|
120
|
+
export type MethodResult<P = unknown, S = unknown> =
|
|
121
|
+
/**
|
|
122
|
+
* Render UI / redirect to upstream / otherwise pause the flow waiting for
|
|
123
|
+
* the user agent. `setCookies` is applied via the framework's serializer
|
|
124
|
+
* (which enforces `Secure`, `SameSite`, `HttpOnly` defaults).
|
|
125
|
+
* `saveMethodState` is merged into `FlowRecord.methodState` and persisted
|
|
126
|
+
* **before** the response is sent — the user agent never sees the
|
|
127
|
+
* upstream redirect until the upstream verifier / nonce / state is
|
|
128
|
+
* durably saved.
|
|
129
|
+
*/
|
|
130
|
+
{
|
|
131
|
+
kind: "challenge";
|
|
132
|
+
/** Body + non-policy headers. Policy-sensitive headers are stripped. */
|
|
133
|
+
response: Response;
|
|
134
|
+
setCookies?: SetCookie[];
|
|
135
|
+
saveMethodState?: S;
|
|
136
|
+
/** Serialized into a `Cache-Control` header by the framework. */
|
|
137
|
+
cache?: CachePolicy;
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Authentication succeeded. The HTTP layer hands `providerSubject` +
|
|
141
|
+
* `properties` to the user's `IdPOptions.success` callback to mint the
|
|
142
|
+
* final `SubjectClaim`. Methods never construct the final subject.
|
|
143
|
+
*/
|
|
144
|
+
| {
|
|
145
|
+
kind: "success";
|
|
146
|
+
/** Upstream system's stable identifier for the authenticated principal. */
|
|
147
|
+
providerSubject: string;
|
|
148
|
+
properties: P;
|
|
149
|
+
setCookies?: SetCookie[];
|
|
150
|
+
}
|
|
151
|
+
/** User refused / failed auth in a non-error way (e.g. consent declined). */
|
|
152
|
+
| {
|
|
153
|
+
kind: "denied";
|
|
154
|
+
reason: string;
|
|
155
|
+
setCookies?: SetCookie[];
|
|
156
|
+
}
|
|
157
|
+
/** Method hit an error. The HTTP layer maps to a standards-compliant response. */
|
|
158
|
+
| {
|
|
159
|
+
kind: "error";
|
|
160
|
+
error: AuthError;
|
|
161
|
+
};
|
|
162
|
+
/**
|
|
163
|
+
* Cache policy for `MethodResult.challenge`. Methods do **not** set
|
|
164
|
+
* `Cache-Control` directly — the framework strips that header from any
|
|
165
|
+
* method-returned `Response`. Opt in to caching via this typed field; the
|
|
166
|
+
* framework serializes it.
|
|
167
|
+
*/
|
|
168
|
+
export type CachePolicy = {
|
|
169
|
+
/** Seconds. `0` ≡ `no-store`. Default for auth UI. */
|
|
170
|
+
maxAge?: number;
|
|
171
|
+
/** Shared (CDN) cache TTL. */
|
|
172
|
+
sMaxAge?: number;
|
|
173
|
+
/** Adds `Cache-Control: private`. */
|
|
174
|
+
isPrivate?: boolean;
|
|
175
|
+
/** For static assets only. */
|
|
176
|
+
immutable?: boolean;
|
|
177
|
+
};
|
|
178
|
+
/**
|
|
179
|
+
* Cookie instruction returned from a method, applied by the framework's
|
|
180
|
+
* cookie serializer. Defaults enforced: `Secure` in production, `SameSite`
|
|
181
|
+
* defaults to `Lax`, `HttpOnly` defaults to true for any cookie name in the
|
|
182
|
+
* framework's reserved namespace (`auth.*` / `idp.*`).
|
|
183
|
+
*/
|
|
184
|
+
export type SetCookie = {
|
|
185
|
+
name: string;
|
|
186
|
+
/** `null` clears the cookie (`Max-Age=0`). */
|
|
187
|
+
value: string | null;
|
|
188
|
+
maxAge?: number;
|
|
189
|
+
path?: string;
|
|
190
|
+
domain?: string;
|
|
191
|
+
httpOnly?: boolean;
|
|
192
|
+
secure?: boolean;
|
|
193
|
+
sameSite?: "lax" | "strict" | "none";
|
|
194
|
+
};
|
|
195
|
+
/**
|
|
196
|
+
* Token-exchange function for methods that participate in `/token`
|
|
197
|
+
* (currently just `m2m`). Returns the same `P` properties shape as a
|
|
198
|
+
* `MethodResult.success`.
|
|
199
|
+
*/
|
|
200
|
+
export type ClientFn<P> = (input: {
|
|
201
|
+
clientID: string;
|
|
202
|
+
clientSecret: string;
|
|
203
|
+
params: Record<string, string>;
|
|
204
|
+
}) => Promise<Result<P, AuthError>>;
|
|
205
|
+
/**
|
|
206
|
+
* Factory that turns a tenant's per-method config into an `AuthMethod`.
|
|
207
|
+
*
|
|
208
|
+
* The factory owns config validation. The framework validates
|
|
209
|
+
* `MethodConfig.config` against `configSchema` before calling `build`;
|
|
210
|
+
* methods never observe `Record<string, unknown>` at runtime.
|
|
211
|
+
*
|
|
212
|
+
* `build` may be async (e.g. to fetch an OIDC discovery doc / JWKS). The
|
|
213
|
+
* result is cached per `(tenantId, MethodConfig.id)` — TTL matches the
|
|
214
|
+
* `ConfigStore` cache TTL; invalidation fires when tenant config changes.
|
|
215
|
+
*
|
|
216
|
+
* The framework verifies the returned `AuthMethod.id` and `AuthMethod.kind`
|
|
217
|
+
* match the `input.id` / `input.kind` passed into `build`. Mismatch fails
|
|
218
|
+
* the load with audit `factory_id_mismatch`.
|
|
219
|
+
*/
|
|
220
|
+
export type AnyAuthMethodFactory = AuthMethodFactory<any, // P — properties emitted to success callback
|
|
221
|
+
any, // S — method-private state
|
|
222
|
+
any>;
|
|
223
|
+
export type AuthMethodFactory<P = unknown, S = unknown, Cfg = unknown> = {
|
|
224
|
+
/** Matches `MethodConfig.kind`. Multiple `MethodConfig` rows may share the same `kind`. */
|
|
225
|
+
kind: string;
|
|
226
|
+
/**
|
|
227
|
+
* Standard Schema for the tenant-supplied config blob. The framework
|
|
228
|
+
* runs this after `ConfigStore` returns a tenant's `MethodConfig.config`
|
|
229
|
+
* and rejects loads that don't validate (audit + log). The validated
|
|
230
|
+
* value is threaded into `build`.
|
|
231
|
+
*
|
|
232
|
+
* Any validation library implementing [Standard Schema v1] satisfies
|
|
233
|
+
* this contract — Zod 3.24+, Valibot 1.0+, Arktype 2.0+, Effect Schema,
|
|
234
|
+
* etc. This decouples the library from any one validator's version
|
|
235
|
+
* choices.
|
|
236
|
+
*
|
|
237
|
+
* [Standard Schema v1]: https://github.com/standard-schema/standard-schema
|
|
238
|
+
*/
|
|
239
|
+
configSchema: v1.StandardSchema<unknown, Cfg>;
|
|
240
|
+
/**
|
|
241
|
+
* Build a concrete `AuthMethod` from validated config plus the binding
|
|
242
|
+
* context. The factory **must** set `AuthMethod.id` to `input.id` and
|
|
243
|
+
* `AuthMethod.kind` to `input.kind` — the framework verifies and audits
|
|
244
|
+
* on mismatch (`factory_id_mismatch`).
|
|
245
|
+
*/
|
|
246
|
+
build: (input: {
|
|
247
|
+
/** `MethodConfig.id` — tenant-local instance id, becomes `AuthMethod.id`. */
|
|
248
|
+
id: string;
|
|
249
|
+
/** `MethodConfig.kind` — factory id, becomes `AuthMethod.kind`. */
|
|
250
|
+
kind: string;
|
|
251
|
+
tenantId: TenantId;
|
|
252
|
+
/** Validated against `configSchema`. */
|
|
253
|
+
config: Cfg;
|
|
254
|
+
}) => Promise<AuthMethod<P, S>>;
|
|
255
|
+
};
|
|
256
|
+
//# sourceMappingURL=method.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"method.d.ts","sourceRoot":"","sources":["../../../src/types/method.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public-surface types for the default provider picker and any
|
|
3
|
+
* host-supplied override (`IdPOptions.renderPicker`). Kept under `types/`
|
|
4
|
+
* — separate from `ui/picker.ts` which holds the default renderer — so
|
|
5
|
+
* the public-API layer doesn't depend on the UI implementation file.
|
|
6
|
+
*/
|
|
7
|
+
/** Minimal shape of a method as seen by the picker. */
|
|
8
|
+
export type PickerMethod = {
|
|
9
|
+
/** Tenant-local id (e.g. "google-workspace"). Goes into method_id. */
|
|
10
|
+
id: string;
|
|
11
|
+
/** Factory kind (e.g. "google"). Identifies the provider family. */
|
|
12
|
+
kind: string;
|
|
13
|
+
/** "redirect" for upstream OAuth/OIDC, "credential" for password/code/passkey. */
|
|
14
|
+
type: string;
|
|
15
|
+
/** Optional human-readable label provided by tenant config. */
|
|
16
|
+
displayName?: string;
|
|
17
|
+
};
|
|
18
|
+
/** Query params propagated into each picker option's link. */
|
|
19
|
+
export type PickerContext = {
|
|
20
|
+
clientId: string;
|
|
21
|
+
redirectUri: string;
|
|
22
|
+
state?: string | null;
|
|
23
|
+
scope?: string | null;
|
|
24
|
+
nonce?: string | null;
|
|
25
|
+
codeChallenge?: string | null;
|
|
26
|
+
codeChallengeMethod?: string | null;
|
|
27
|
+
audience?: string | null;
|
|
28
|
+
prompt?: string | null;
|
|
29
|
+
uiLocales?: string | null;
|
|
30
|
+
};
|
|
31
|
+
//# sourceMappingURL=picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"picker.d.ts","sourceRoot":"","sources":["../../../src/types/picker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,uDAAuD;AACvD,MAAM,MAAM,YAAY,GAAG;IACzB,sEAAsE;IACtE,EAAE,EAAE,MAAM,CAAA;IACV,oEAAoE;IACpE,IAAI,EAAE,MAAM,CAAA;IACZ,kFAAkF;IAClF,IAAI,EAAE,MAAM,CAAA;IACZ,+DAA+D;IAC/D,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB,CAAA;AAED,8DAA8D;AAC9D,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,EAAE,MAAM,CAAA;IAChB,WAAW,EAAE,MAAM,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,mBAAmB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACnC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACxB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B,CAAA"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Result<T, E> — explicit success / failure encoding used throughout the domain.
|
|
3
|
+
*
|
|
4
|
+
* Domain functions return `Result` instead of throwing. The HTTP layer is the
|
|
5
|
+
* one place that converts `AuthError` into an HTTP response. Keeping the domain
|
|
6
|
+
* throw-free makes composition (chaining validators, branching on error code)
|
|
7
|
+
* straightforward and avoids hidden control flow.
|
|
8
|
+
*
|
|
9
|
+
* AD5 in `docs/plans/claude/idp-rebuild-plan.md`.
|
|
10
|
+
*/
|
|
11
|
+
import type { AuthError } from "./error";
|
|
12
|
+
export type Result<T, E = AuthError> = {
|
|
13
|
+
ok: true;
|
|
14
|
+
value: T;
|
|
15
|
+
} | {
|
|
16
|
+
ok: false;
|
|
17
|
+
error: E;
|
|
18
|
+
};
|
|
19
|
+
export declare const ok: <T>(value: T) => Result<T, never>;
|
|
20
|
+
export declare const err: <E>(error: E) => Result<never, E>;
|
|
21
|
+
export declare const isOk: <T, E>(r: Result<T, E>) => r is {
|
|
22
|
+
ok: true;
|
|
23
|
+
value: T;
|
|
24
|
+
};
|
|
25
|
+
export declare const isErr: <T, E>(r: Result<T, E>) => r is {
|
|
26
|
+
ok: false;
|
|
27
|
+
error: E;
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=result.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../../src/types/result.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAExC,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,SAAS,IAC/B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACtB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAA;AAE3B,eAAO,MAAM,EAAE,GAAI,CAAC,SAAS,CAAC,KAAG,MAAM,CAAC,CAAC,EAAE,KAAK,CAA0B,CAAA;AAC1E,eAAO,MAAM,GAAG,GAAI,CAAC,SAAS,CAAC,KAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAA2B,CAAA;AAE5E,eAAO,MAAM,IAAI,GAAI,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAAC,IAAI;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CACvD,CAAA;AACf,eAAO,MAAM,KAAK,GAAI,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,KAAG,CAAC,IAAI;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CACxD,CAAA"}
|