@robelest/convex-auth 0.0.4-preview.2 → 0.0.4-preview.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +67 -26
- package/dist/authorization/index.d.ts +63 -0
- package/dist/authorization/index.d.ts.map +1 -0
- package/dist/authorization/index.js +63 -0
- package/dist/authorization/index.js.map +1 -0
- package/dist/bin.js +6185 -0
- package/dist/client/core/types.d.ts +20 -0
- package/dist/client/core/types.d.ts.map +1 -0
- package/dist/client/index.d.ts +2 -299
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +407 -534
- package/dist/client/index.js.map +1 -1
- package/dist/component/_generated/api.d.ts +42 -0
- package/dist/component/_generated/api.d.ts.map +1 -1
- package/dist/component/_generated/api.js.map +1 -1
- package/dist/component/_generated/component.d.ts +2546 -90
- package/dist/component/_generated/component.d.ts.map +1 -1
- package/dist/component/client/core/types.d.ts +2 -0
- package/dist/component/client/index.d.ts +2 -0
- package/dist/component/convex.config.d.ts +2 -2
- package/dist/component/functions.d.ts +11 -9
- package/dist/component/functions.d.ts.map +1 -1
- package/dist/component/functions.js.map +1 -1
- package/dist/component/index.d.ts +7 -11
- package/dist/component/index.js +2 -3
- package/dist/component/model.d.ts +153 -0
- package/dist/component/model.d.ts.map +1 -0
- package/dist/component/model.js +349 -0
- package/dist/component/model.js.map +1 -0
- package/dist/component/providers/anonymous.d.ts +54 -0
- package/dist/component/providers/anonymous.d.ts.map +1 -0
- package/dist/component/providers/credentials.d.ts +5 -5
- package/dist/component/providers/credentials.d.ts.map +1 -1
- package/dist/component/providers/device.d.ts +67 -0
- package/dist/component/providers/device.d.ts.map +1 -0
- package/dist/component/providers/email.d.ts +62 -0
- package/dist/component/providers/email.d.ts.map +1 -0
- package/dist/component/providers/oauth.d.ts.map +1 -1
- package/dist/component/providers/oauth.js.map +1 -1
- package/dist/component/providers/passkey.d.ts +57 -0
- package/dist/component/providers/passkey.d.ts.map +1 -0
- package/dist/component/providers/password.d.ts +88 -0
- package/dist/component/providers/password.d.ts.map +1 -0
- package/dist/component/providers/phone.d.ts +48 -0
- package/dist/component/providers/phone.d.ts.map +1 -0
- package/dist/component/providers/sso.d.ts +50 -0
- package/dist/component/providers/sso.d.ts.map +1 -0
- package/dist/component/providers/totp.d.ts +45 -0
- package/dist/component/providers/totp.d.ts.map +1 -0
- package/dist/component/public/enterprise/audit.d.ts +73 -0
- package/dist/component/public/enterprise/audit.d.ts.map +1 -0
- package/dist/component/public/enterprise/audit.js +108 -0
- package/dist/component/public/enterprise/audit.js.map +1 -0
- package/dist/component/public/enterprise/core.d.ts +176 -0
- package/dist/component/public/enterprise/core.d.ts.map +1 -0
- package/dist/component/public/enterprise/core.js +292 -0
- package/dist/component/public/enterprise/core.js.map +1 -0
- package/dist/component/public/enterprise/domains.d.ts +174 -0
- package/dist/component/public/enterprise/domains.d.ts.map +1 -0
- package/dist/component/public/enterprise/domains.js +271 -0
- package/dist/component/public/enterprise/domains.js.map +1 -0
- package/dist/component/public/enterprise/scim.d.ts +245 -0
- package/dist/component/public/enterprise/scim.d.ts.map +1 -0
- package/dist/component/public/enterprise/scim.js +344 -0
- package/dist/component/public/enterprise/scim.js.map +1 -0
- package/dist/component/public/enterprise/secrets.d.ts +78 -0
- package/dist/component/public/enterprise/secrets.d.ts.map +1 -0
- package/dist/component/public/enterprise/secrets.js +118 -0
- package/dist/component/public/enterprise/secrets.js.map +1 -0
- package/dist/component/public/enterprise/webhooks.d.ts +211 -0
- package/dist/component/public/enterprise/webhooks.d.ts.map +1 -0
- package/dist/component/public/enterprise/webhooks.js +300 -0
- package/dist/component/public/enterprise/webhooks.js.map +1 -0
- package/dist/component/public/factors/devices.d.ts +157 -0
- package/dist/component/public/factors/devices.d.ts.map +1 -0
- package/dist/component/public/factors/devices.js +216 -0
- package/dist/component/public/factors/devices.js.map +1 -0
- package/dist/component/public/factors/passkeys.d.ts +175 -0
- package/dist/component/public/factors/passkeys.d.ts.map +1 -0
- package/dist/component/public/factors/passkeys.js +238 -0
- package/dist/component/public/factors/passkeys.js.map +1 -0
- package/dist/component/public/factors/totp.d.ts +189 -0
- package/dist/component/public/factors/totp.d.ts.map +1 -0
- package/dist/component/public/factors/totp.js +254 -0
- package/dist/component/public/factors/totp.js.map +1 -0
- package/dist/component/public/groups/core.d.ts +137 -0
- package/dist/component/public/groups/core.d.ts.map +1 -0
- package/dist/component/public/groups/core.js +321 -0
- package/dist/component/public/groups/core.js.map +1 -0
- package/dist/component/public/groups/invites.d.ts +217 -0
- package/dist/component/public/groups/invites.d.ts.map +1 -0
- package/dist/component/public/groups/invites.js +457 -0
- package/dist/component/public/groups/invites.js.map +1 -0
- package/dist/component/public/groups/members.d.ts +204 -0
- package/dist/component/public/groups/members.d.ts.map +1 -0
- package/dist/component/public/groups/members.js +355 -0
- package/dist/component/public/groups/members.js.map +1 -0
- package/dist/component/public/identity/accounts.d.ts +147 -0
- package/dist/component/public/identity/accounts.d.ts.map +1 -0
- package/dist/component/public/identity/accounts.js +200 -0
- package/dist/component/public/identity/accounts.js.map +1 -0
- package/dist/component/public/identity/codes.d.ts +104 -0
- package/dist/component/public/identity/codes.d.ts.map +1 -0
- package/dist/component/public/identity/codes.js +140 -0
- package/dist/component/public/identity/codes.js.map +1 -0
- package/dist/component/public/identity/sessions.d.ts +128 -0
- package/dist/component/public/identity/sessions.d.ts.map +1 -0
- package/dist/component/public/identity/sessions.js +192 -0
- package/dist/component/public/identity/sessions.js.map +1 -0
- package/dist/component/public/identity/tokens.d.ts +169 -0
- package/dist/component/public/identity/tokens.d.ts.map +1 -0
- package/dist/component/public/identity/tokens.js +227 -0
- package/dist/component/public/identity/tokens.js.map +1 -0
- package/dist/component/public/identity/users.d.ts +212 -0
- package/dist/component/public/identity/users.d.ts.map +1 -0
- package/dist/component/public/identity/users.js +311 -0
- package/dist/component/public/identity/users.js.map +1 -0
- package/dist/component/public/identity/verifiers.d.ts +116 -0
- package/dist/component/public/identity/verifiers.d.ts.map +1 -0
- package/dist/component/public/identity/verifiers.js +154 -0
- package/dist/component/public/identity/verifiers.js.map +1 -0
- package/dist/component/public/security/keys.d.ts +209 -0
- package/dist/component/public/security/keys.d.ts.map +1 -0
- package/dist/component/public/security/keys.js +319 -0
- package/dist/component/public/security/keys.js.map +1 -0
- package/dist/component/public/security/limits.d.ts +114 -0
- package/dist/component/public/security/limits.d.ts.map +1 -0
- package/dist/component/public/security/limits.js +169 -0
- package/dist/component/public/security/limits.js.map +1 -0
- package/dist/component/public.d.ts +24 -271
- package/dist/component/public.d.ts.map +1 -1
- package/dist/component/public.js +21 -1229
- package/dist/component/schema.d.ts +473 -110
- package/dist/component/schema.js +162 -73
- package/dist/component/schema.js.map +1 -1
- package/dist/component/server/auth.d.ts +318 -373
- package/dist/component/server/auth.d.ts.map +1 -1
- package/dist/component/server/auth.js +204 -123
- package/dist/component/server/auth.js.map +1 -1
- package/dist/component/server/authError.js +34 -0
- package/dist/component/server/authError.js.map +1 -0
- package/dist/component/server/{providers.js → config.js} +43 -12
- package/dist/component/server/config.js.map +1 -0
- package/dist/component/server/cookies.js +3 -0
- package/dist/component/server/cookies.js.map +1 -1
- package/dist/component/server/core.js +713 -0
- package/dist/component/server/core.js.map +1 -0
- package/dist/component/server/crypto.js +38 -0
- package/dist/component/server/crypto.js.map +1 -0
- package/dist/component/server/{implementation/db.js → db.js} +2 -1
- package/dist/component/server/db.js.map +1 -0
- package/dist/component/server/device.js +109 -0
- package/dist/component/server/device.js.map +1 -0
- package/dist/component/server/enterprise/config.js +46 -0
- package/dist/component/server/enterprise/config.js.map +1 -0
- package/dist/component/server/enterprise/domain.js +885 -0
- package/dist/component/server/enterprise/domain.js.map +1 -0
- package/dist/component/server/enterprise/http.js +766 -0
- package/dist/component/server/enterprise/http.js.map +1 -0
- package/dist/component/server/enterprise/oidc.js +248 -0
- package/dist/component/server/enterprise/oidc.js.map +1 -0
- package/dist/component/server/enterprise/policy.js +85 -0
- package/dist/component/server/enterprise/policy.js.map +1 -0
- package/dist/component/server/enterprise/saml.js +338 -0
- package/dist/component/server/enterprise/saml.js.map +1 -0
- package/dist/component/server/enterprise/scim.js +97 -0
- package/dist/component/server/enterprise/scim.js.map +1 -0
- package/dist/component/server/enterprise/shared.js +51 -0
- package/dist/component/server/enterprise/shared.js.map +1 -0
- package/dist/component/server/errors.d.ts +1 -0
- package/dist/component/server/errors.js +24 -16
- package/dist/component/server/errors.js.map +1 -1
- package/dist/component/server/http.js +288 -0
- package/dist/component/server/http.js.map +1 -0
- package/dist/component/server/identity.js +13 -0
- package/dist/component/server/identity.js.map +1 -0
- package/dist/{server/implementation → component/server}/keys.js +9 -31
- package/dist/component/server/keys.js.map +1 -0
- package/dist/component/server/limits.js +61 -0
- package/dist/component/server/limits.js.map +1 -0
- package/dist/component/server/mutations/account.js +44 -0
- package/dist/component/server/mutations/account.js.map +1 -0
- package/dist/component/server/{implementation/mutations → mutations}/code.js +7 -4
- package/dist/component/server/mutations/code.js.map +1 -0
- package/dist/component/server/mutations/invalidate.js +32 -0
- package/dist/component/server/mutations/invalidate.js.map +1 -0
- package/dist/component/server/mutations/oauth.js +110 -0
- package/dist/component/server/mutations/oauth.js.map +1 -0
- package/dist/component/server/mutations/refresh.js +119 -0
- package/dist/component/server/mutations/refresh.js.map +1 -0
- package/dist/component/server/mutations/register.js +83 -0
- package/dist/component/server/mutations/register.js.map +1 -0
- package/dist/component/server/mutations/retrieve.js +65 -0
- package/dist/component/server/mutations/retrieve.js.map +1 -0
- package/dist/component/server/mutations/signature.js +32 -0
- package/dist/component/server/mutations/signature.js.map +1 -0
- package/dist/component/server/{implementation/mutations → mutations}/signin.js +2 -2
- package/dist/component/server/mutations/signin.js.map +1 -0
- package/dist/component/server/mutations/signout.js +27 -0
- package/dist/component/server/mutations/signout.js.map +1 -0
- package/dist/component/server/mutations/store/refs.js +15 -0
- package/dist/component/server/mutations/store/refs.js.map +1 -0
- package/dist/component/server/mutations/store.js +85 -0
- package/dist/component/server/mutations/store.js.map +1 -0
- package/dist/component/server/mutations/verifier.js +18 -0
- package/dist/component/server/mutations/verifier.js.map +1 -0
- package/dist/component/server/mutations/verify.js +98 -0
- package/dist/component/server/mutations/verify.js.map +1 -0
- package/dist/component/server/oauth.js +106 -60
- package/dist/component/server/oauth.js.map +1 -1
- package/dist/component/server/passkey.js +328 -0
- package/dist/component/server/passkey.js.map +1 -0
- package/dist/{server/implementation → component/server}/redirects.js +13 -11
- package/dist/component/server/redirects.js.map +1 -0
- package/dist/component/server/refresh.js +96 -0
- package/dist/component/server/refresh.js.map +1 -0
- package/dist/component/server/runtime.d.ts +136 -0
- package/dist/component/server/runtime.d.ts.map +1 -0
- package/dist/component/server/runtime.js +413 -0
- package/dist/component/server/runtime.js.map +1 -0
- package/dist/{server/implementation → component/server}/sessions.js +14 -8
- package/dist/component/server/sessions.js.map +1 -0
- package/dist/component/server/signin.js +201 -0
- package/dist/component/server/signin.js.map +1 -0
- package/dist/component/server/tokens.js +17 -0
- package/dist/component/server/tokens.js.map +1 -0
- package/dist/component/server/totp.js +148 -0
- package/dist/component/server/totp.js.map +1 -0
- package/dist/component/server/types.d.ts +387 -298
- package/dist/component/server/types.d.ts.map +1 -1
- package/dist/component/server/{implementation/types.js → types.js} +1 -1
- package/dist/component/server/types.js.map +1 -0
- package/dist/component/server/{implementation/users.js → users.js} +54 -35
- package/dist/component/server/users.js.map +1 -0
- package/dist/component/server/utils.js +110 -4
- package/dist/component/server/utils.js.map +1 -1
- package/dist/core/types.d.ts +369 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/factors/device.js +105 -0
- package/dist/factors/device.js.map +1 -0
- package/dist/factors/passkey.js +181 -0
- package/dist/factors/passkey.js.map +1 -0
- package/dist/factors/totp.js +122 -0
- package/dist/factors/totp.js.map +1 -0
- package/dist/providers/anonymous.d.ts +3 -9
- package/dist/providers/anonymous.d.ts.map +1 -1
- package/dist/providers/anonymous.js +1 -18
- package/dist/providers/anonymous.js.map +1 -1
- package/dist/providers/credentials.d.ts +8 -10
- package/dist/providers/credentials.d.ts.map +1 -1
- package/dist/providers/credentials.js +3 -5
- package/dist/providers/credentials.js.map +1 -1
- package/dist/providers/device.d.ts +18 -10
- package/dist/providers/device.d.ts.map +1 -1
- package/dist/providers/device.js +4 -8
- package/dist/providers/device.js.map +1 -1
- package/dist/providers/email.d.ts +50 -23
- package/dist/providers/email.d.ts.map +1 -1
- package/dist/providers/email.js +58 -34
- package/dist/providers/email.js.map +1 -1
- package/dist/providers/index.d.ts +7 -3
- package/dist/providers/index.js +4 -1
- package/dist/providers/oauth.d.ts.map +1 -1
- package/dist/providers/oauth.js.map +1 -1
- package/dist/providers/passkey.d.ts +12 -9
- package/dist/providers/passkey.d.ts.map +1 -1
- package/dist/providers/passkey.js +1 -7
- package/dist/providers/passkey.js.map +1 -1
- package/dist/providers/password.d.ts +6 -12
- package/dist/providers/password.d.ts.map +1 -1
- package/dist/providers/password.js +189 -89
- package/dist/providers/password.js.map +1 -1
- package/dist/providers/phone.d.ts +40 -11
- package/dist/providers/phone.d.ts.map +1 -1
- package/dist/providers/phone.js +52 -21
- package/dist/providers/phone.js.map +1 -1
- package/dist/providers/sso.d.ts +50 -0
- package/dist/providers/sso.d.ts.map +1 -0
- package/dist/providers/sso.js +34 -0
- package/dist/providers/sso.js.map +1 -0
- package/dist/providers/totp.d.ts +12 -9
- package/dist/providers/totp.d.ts.map +1 -1
- package/dist/providers/totp.js +1 -7
- package/dist/providers/totp.js.map +1 -1
- package/dist/runtime/browser.js +68 -0
- package/dist/runtime/browser.js.map +1 -0
- package/dist/runtime/invite.js +51 -0
- package/dist/runtime/invite.js.map +1 -0
- package/dist/runtime/proxy.js +70 -0
- package/dist/runtime/proxy.js.map +1 -0
- package/dist/runtime/storage.js +37 -0
- package/dist/runtime/storage.js.map +1 -0
- package/dist/server/auth.d.ts +335 -370
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +204 -123
- package/dist/server/auth.js.map +1 -1
- package/dist/server/authError.d.ts +46 -0
- package/dist/server/authError.d.ts.map +1 -0
- package/dist/server/authError.js +34 -0
- package/dist/server/authError.js.map +1 -0
- package/dist/server/config.d.ts +1 -0
- package/dist/server/{providers.js → config.js} +43 -12
- package/dist/server/config.js.map +1 -0
- package/dist/server/cookies.d.ts +1 -38
- package/dist/server/cookies.js +3 -0
- package/dist/server/cookies.js.map +1 -1
- package/dist/server/core.d.ts +1436 -0
- package/dist/server/core.d.ts.map +1 -0
- package/dist/server/core.js +713 -0
- package/dist/server/core.js.map +1 -0
- package/dist/server/crypto.d.ts +8 -0
- package/dist/server/crypto.d.ts.map +1 -0
- package/dist/server/crypto.js +38 -0
- package/dist/server/crypto.js.map +1 -0
- package/dist/server/db.d.ts +1 -0
- package/dist/server/{implementation/db.js → db.js} +2 -1
- package/dist/server/db.js.map +1 -0
- package/dist/server/device.d.ts +1 -0
- package/dist/server/device.js +109 -0
- package/dist/server/device.js.map +1 -0
- package/dist/server/enterprise/config.d.ts +1 -0
- package/dist/server/enterprise/config.js +46 -0
- package/dist/server/enterprise/config.js.map +1 -0
- package/dist/server/enterprise/domain.d.ts +409 -0
- package/dist/server/enterprise/domain.d.ts.map +1 -0
- package/dist/server/enterprise/domain.js +885 -0
- package/dist/server/enterprise/domain.js.map +1 -0
- package/dist/server/enterprise/http.d.ts +26 -0
- package/dist/server/enterprise/http.d.ts.map +1 -0
- package/dist/server/enterprise/http.js +766 -0
- package/dist/server/enterprise/http.js.map +1 -0
- package/dist/server/enterprise/oidc.d.ts +1 -0
- package/dist/server/enterprise/oidc.js +248 -0
- package/dist/server/enterprise/oidc.js.map +1 -0
- package/dist/server/enterprise/policy.d.ts +1 -0
- package/dist/server/enterprise/policy.js +85 -0
- package/dist/server/enterprise/policy.js.map +1 -0
- package/dist/server/enterprise/saml.d.ts +1 -0
- package/dist/server/enterprise/saml.js +338 -0
- package/dist/server/enterprise/saml.js.map +1 -0
- package/dist/server/enterprise/scim.d.ts +1 -0
- package/dist/server/enterprise/scim.js +97 -0
- package/dist/server/enterprise/scim.js.map +1 -0
- package/dist/server/enterprise/shared.d.ts +5 -0
- package/dist/server/enterprise/shared.d.ts.map +1 -0
- package/dist/server/enterprise/shared.js +51 -0
- package/dist/server/enterprise/shared.js.map +1 -0
- package/dist/server/enterprise/validators.d.ts +1 -0
- package/dist/server/enterprise/validators.js +60 -0
- package/dist/server/enterprise/validators.js.map +1 -0
- package/dist/server/errors.d.ts +33 -1
- package/dist/server/errors.d.ts.map +1 -1
- package/dist/server/errors.js +44 -1
- package/dist/server/errors.js.map +1 -1
- package/dist/server/http.d.ts +59 -0
- package/dist/server/http.d.ts.map +1 -0
- package/dist/server/http.js +288 -0
- package/dist/server/http.js.map +1 -0
- package/dist/server/identity.d.ts +1 -0
- package/dist/server/identity.js +13 -0
- package/dist/server/identity.js.map +1 -0
- package/dist/server/index.d.ts +4 -182
- package/dist/server/index.js +4 -376
- package/dist/server/keys.d.ts +1 -0
- package/dist/{component/server/implementation → server}/keys.js +9 -31
- package/dist/server/keys.js.map +1 -0
- package/dist/server/limits.d.ts +1 -0
- package/dist/server/limits.js +61 -0
- package/dist/server/limits.js.map +1 -0
- package/dist/server/mounts.d.ts +647 -0
- package/dist/server/mounts.d.ts.map +1 -0
- package/dist/server/mounts.js +643 -0
- package/dist/server/mounts.js.map +1 -0
- package/dist/server/mutations/account.d.ts +30 -0
- package/dist/server/mutations/account.d.ts.map +1 -0
- package/dist/server/mutations/account.js +44 -0
- package/dist/server/mutations/account.js.map +1 -0
- package/dist/server/mutations/code.d.ts +30 -0
- package/dist/server/mutations/code.d.ts.map +1 -0
- package/dist/server/{implementation/mutations → mutations}/code.js +7 -4
- package/dist/server/mutations/code.js.map +1 -0
- package/dist/server/mutations/index.d.ts +14 -0
- package/dist/server/mutations/index.js +15 -0
- package/dist/server/mutations/invalidate.d.ts +20 -0
- package/dist/server/mutations/invalidate.d.ts.map +1 -0
- package/dist/server/mutations/invalidate.js +32 -0
- package/dist/server/mutations/invalidate.js.map +1 -0
- package/dist/server/mutations/oauth.d.ts +28 -0
- package/dist/server/mutations/oauth.d.ts.map +1 -0
- package/dist/server/mutations/oauth.js +110 -0
- package/dist/server/mutations/oauth.js.map +1 -0
- package/dist/server/mutations/refresh.d.ts +21 -0
- package/dist/server/mutations/refresh.d.ts.map +1 -0
- package/dist/server/mutations/refresh.js +119 -0
- package/dist/server/mutations/refresh.js.map +1 -0
- package/dist/server/mutations/register.d.ts +38 -0
- package/dist/server/mutations/register.d.ts.map +1 -0
- package/dist/server/mutations/register.js +83 -0
- package/dist/server/mutations/register.js.map +1 -0
- package/dist/server/mutations/retrieve.d.ts +33 -0
- package/dist/server/mutations/retrieve.d.ts.map +1 -0
- package/dist/server/mutations/retrieve.js +65 -0
- package/dist/server/mutations/retrieve.js.map +1 -0
- package/dist/server/mutations/signature.d.ts +22 -0
- package/dist/server/mutations/signature.d.ts.map +1 -0
- package/dist/server/mutations/signature.js +32 -0
- package/dist/server/mutations/signature.js.map +1 -0
- package/dist/server/mutations/signin.d.ts +22 -0
- package/dist/server/mutations/signin.d.ts.map +1 -0
- package/dist/server/{implementation/mutations → mutations}/signin.js +2 -2
- package/dist/server/mutations/signin.js.map +1 -0
- package/dist/server/mutations/signout.d.ts +16 -0
- package/dist/server/mutations/signout.d.ts.map +1 -0
- package/dist/server/mutations/signout.js +27 -0
- package/dist/server/mutations/signout.js.map +1 -0
- package/dist/server/mutations/store/refs.d.ts +12 -0
- package/dist/server/mutations/store/refs.d.ts.map +1 -0
- package/dist/server/mutations/store/refs.js +15 -0
- package/dist/server/mutations/store/refs.js.map +1 -0
- package/dist/server/mutations/store.d.ts +306 -0
- package/dist/server/mutations/store.d.ts.map +1 -0
- package/dist/server/mutations/store.js +85 -0
- package/dist/server/mutations/store.js.map +1 -0
- package/dist/server/mutations/verifier.d.ts +13 -0
- package/dist/server/mutations/verifier.d.ts.map +1 -0
- package/dist/server/mutations/verifier.js +18 -0
- package/dist/server/mutations/verifier.js.map +1 -0
- package/dist/server/mutations/verify.d.ts +26 -0
- package/dist/server/mutations/verify.d.ts.map +1 -0
- package/dist/server/mutations/verify.js +98 -0
- package/dist/server/mutations/verify.js.map +1 -0
- package/dist/server/oauth.d.ts +1 -48
- package/dist/server/oauth.js +107 -64
- package/dist/server/oauth.js.map +1 -1
- package/dist/server/passkey.d.ts +27 -0
- package/dist/server/passkey.d.ts.map +1 -0
- package/dist/server/passkey.js +328 -0
- package/dist/server/passkey.js.map +1 -0
- package/dist/server/redirects.d.ts +1 -0
- package/dist/{component/server/implementation → server}/redirects.js +13 -11
- package/dist/server/redirects.js.map +1 -0
- package/dist/server/refresh.d.ts +1 -0
- package/dist/server/refresh.js +96 -0
- package/dist/server/refresh.js.map +1 -0
- package/dist/server/runtime.d.ts +136 -0
- package/dist/server/runtime.d.ts.map +1 -0
- package/dist/server/runtime.js +413 -0
- package/dist/server/runtime.js.map +1 -0
- package/dist/server/sessions.d.ts +1 -0
- package/dist/{component/server/implementation → server}/sessions.js +14 -8
- package/dist/server/sessions.js.map +1 -0
- package/dist/server/signin.d.ts +1 -0
- package/dist/server/signin.js +201 -0
- package/dist/server/signin.js.map +1 -0
- package/dist/server/ssr.d.ts +226 -0
- package/dist/server/ssr.d.ts.map +1 -0
- package/dist/server/ssr.js +786 -0
- package/dist/server/ssr.js.map +1 -0
- package/dist/server/templates.d.ts +1 -21
- package/dist/server/templates.js +2 -1
- package/dist/server/templates.js.map +1 -1
- package/dist/server/tokens.d.ts +1 -0
- package/dist/server/tokens.js +17 -0
- package/dist/server/tokens.js.map +1 -0
- package/dist/server/totp.d.ts +1 -0
- package/dist/server/totp.js +148 -0
- package/dist/server/totp.js.map +1 -0
- package/dist/server/types.d.ts +498 -306
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +108 -1
- package/dist/server/types.js.map +1 -0
- package/dist/server/users.d.ts +1 -0
- package/dist/server/{implementation/users.js → users.js} +54 -35
- package/dist/server/users.js.map +1 -0
- package/dist/server/utils.d.ts +1 -6
- package/dist/server/utils.js +110 -4
- package/dist/server/utils.js.map +1 -1
- package/package.json +49 -46
- package/src/authorization/index.ts +83 -0
- package/src/cli/bin.ts +5 -0
- package/src/cli/command.ts +6 -5
- package/src/cli/index.ts +456 -248
- package/src/cli/keys.ts +3 -0
- package/src/client/core/types.ts +437 -0
- package/src/client/factors/device.ts +160 -0
- package/src/client/factors/passkey.ts +282 -0
- package/src/client/factors/totp.ts +150 -0
- package/src/client/index.ts +745 -989
- package/src/client/runtime/browser.ts +112 -0
- package/src/client/runtime/invite.ts +65 -0
- package/src/client/runtime/proxy.ts +111 -0
- package/src/client/runtime/storage.ts +79 -0
- package/src/component/_generated/api.ts +42 -0
- package/src/component/_generated/component.ts +3123 -102
- package/src/component/functions.ts +38 -22
- package/src/component/index.ts +10 -20
- package/src/component/model.ts +449 -0
- package/src/component/public/enterprise/audit.ts +120 -0
- package/src/component/public/enterprise/core.ts +354 -0
- package/src/component/public/enterprise/domains.ts +323 -0
- package/src/component/public/enterprise/scim.ts +396 -0
- package/src/component/public/enterprise/secrets.ts +132 -0
- package/src/component/public/enterprise/webhooks.ts +306 -0
- package/src/component/public/factors/devices.ts +223 -0
- package/src/component/public/factors/passkeys.ts +242 -0
- package/src/component/public/factors/totp.ts +258 -0
- package/src/component/public/groups/core.ts +481 -0
- package/src/component/public/groups/invites.ts +602 -0
- package/src/component/public/groups/members.ts +409 -0
- package/src/component/public/identity/accounts.ts +206 -0
- package/src/component/public/identity/codes.ts +148 -0
- package/src/component/public/identity/sessions.ts +209 -0
- package/src/component/public/identity/tokens.ts +250 -0
- package/src/component/public/identity/users.ts +354 -0
- package/src/component/public/identity/verifiers.ts +157 -0
- package/src/component/public/security/keys.ts +365 -0
- package/src/component/public/security/limits.ts +173 -0
- package/src/component/public.ts +26 -1766
- package/src/component/schema.ts +273 -100
- package/src/providers/anonymous.ts +10 -20
- package/src/providers/credentials.ts +14 -22
- package/src/providers/device.ts +3 -14
- package/src/providers/email.ts +83 -47
- package/src/providers/index.ts +7 -0
- package/src/providers/oauth.ts +5 -3
- package/src/providers/passkey.ts +0 -13
- package/src/providers/password.ts +307 -130
- package/src/providers/phone.ts +81 -37
- package/src/providers/sso.ts +54 -0
- package/src/providers/totp.ts +0 -13
- package/src/samlify.d.ts +53 -0
- package/src/server/auth.ts +701 -247
- package/src/server/authError.ts +44 -0
- package/src/server/{providers.ts → config.ts} +84 -15
- package/src/server/cookies.ts +8 -1
- package/src/server/core.ts +2095 -0
- package/src/server/crypto.ts +88 -0
- package/src/server/{implementation/db.ts → db.ts} +90 -15
- package/src/server/device.ts +221 -0
- package/src/server/enterprise/config.ts +51 -0
- package/src/server/enterprise/domain.ts +1751 -0
- package/src/server/enterprise/http.ts +1324 -0
- package/src/server/enterprise/oidc.ts +500 -0
- package/src/server/enterprise/policy.ts +128 -0
- package/src/server/enterprise/saml.ts +578 -0
- package/src/server/enterprise/scim.ts +135 -0
- package/src/server/enterprise/shared.ts +134 -0
- package/src/server/enterprise/validators.ts +93 -0
- package/src/server/errors.ts +130 -119
- package/src/server/http.ts +531 -0
- package/src/server/identity.ts +18 -0
- package/src/server/index.ts +32 -650
- package/src/server/{implementation/keys.ts → keys.ts} +16 -44
- package/src/server/limits.ts +134 -0
- package/src/server/mounts.ts +948 -0
- package/src/server/mutations/account.ts +76 -0
- package/src/server/{implementation/mutations → mutations}/code.ts +22 -11
- package/src/server/mutations/index.ts +13 -0
- package/src/server/mutations/invalidate.ts +50 -0
- package/src/server/mutations/oauth.ts +237 -0
- package/src/server/mutations/refresh.ts +298 -0
- package/src/server/mutations/register.ts +200 -0
- package/src/server/mutations/retrieve.ts +109 -0
- package/src/server/mutations/signature.ts +50 -0
- package/src/server/{implementation/mutations → mutations}/signin.ts +9 -7
- package/src/server/mutations/signout.ts +43 -0
- package/src/server/mutations/store/refs.ts +10 -0
- package/src/server/mutations/store.ts +138 -0
- package/src/server/mutations/verifier.ts +34 -0
- package/src/server/mutations/verify.ts +202 -0
- package/src/server/oauth.ts +243 -131
- package/src/server/passkey.ts +784 -0
- package/src/server/{implementation/redirects.ts → redirects.ts} +21 -16
- package/src/server/refresh.ts +222 -0
- package/src/server/runtime.ts +880 -0
- package/src/server/{implementation/sessions.ts → sessions.ts} +33 -25
- package/src/server/signin.ts +438 -0
- package/src/server/ssr.ts +1764 -0
- package/src/server/templates.ts +8 -3
- package/src/server/{implementation/tokens.ts → tokens.ts} +11 -5
- package/src/server/totp.ts +349 -0
- package/src/server/types.ts +972 -207
- package/src/server/{implementation/users.ts → users.ts} +129 -75
- package/src/server/utils.ts +192 -5
- package/src/test.ts +28 -4
- package/dist/bin.cjs +0 -27757
- package/dist/component/providers/email.js +0 -47
- package/dist/component/providers/email.js.map +0 -1
- package/dist/component/public.js.map +0 -1
- package/dist/component/server/implementation/db.js.map +0 -1
- package/dist/component/server/implementation/device.js +0 -135
- package/dist/component/server/implementation/device.js.map +0 -1
- package/dist/component/server/implementation/index.d.ts +0 -870
- package/dist/component/server/implementation/index.d.ts.map +0 -1
- package/dist/component/server/implementation/index.js +0 -610
- package/dist/component/server/implementation/index.js.map +0 -1
- package/dist/component/server/implementation/keys.js.map +0 -1
- package/dist/component/server/implementation/mutations/account.js +0 -39
- package/dist/component/server/implementation/mutations/account.js.map +0 -1
- package/dist/component/server/implementation/mutations/code.js.map +0 -1
- package/dist/component/server/implementation/mutations/index.js +0 -70
- package/dist/component/server/implementation/mutations/index.js.map +0 -1
- package/dist/component/server/implementation/mutations/invalidate.js +0 -29
- package/dist/component/server/implementation/mutations/invalidate.js.map +0 -1
- package/dist/component/server/implementation/mutations/oauth.js +0 -51
- package/dist/component/server/implementation/mutations/oauth.js.map +0 -1
- package/dist/component/server/implementation/mutations/refresh.js +0 -85
- package/dist/component/server/implementation/mutations/refresh.js.map +0 -1
- package/dist/component/server/implementation/mutations/register.js +0 -65
- package/dist/component/server/implementation/mutations/register.js.map +0 -1
- package/dist/component/server/implementation/mutations/retrieve.js +0 -50
- package/dist/component/server/implementation/mutations/retrieve.js.map +0 -1
- package/dist/component/server/implementation/mutations/signature.js +0 -27
- package/dist/component/server/implementation/mutations/signature.js.map +0 -1
- package/dist/component/server/implementation/mutations/signin.js.map +0 -1
- package/dist/component/server/implementation/mutations/signout.js +0 -27
- package/dist/component/server/implementation/mutations/signout.js.map +0 -1
- package/dist/component/server/implementation/mutations/store.js +0 -12
- package/dist/component/server/implementation/mutations/store.js.map +0 -1
- package/dist/component/server/implementation/mutations/verifier.js +0 -16
- package/dist/component/server/implementation/mutations/verifier.js.map +0 -1
- package/dist/component/server/implementation/mutations/verify.js +0 -105
- package/dist/component/server/implementation/mutations/verify.js.map +0 -1
- package/dist/component/server/implementation/passkey.js +0 -307
- package/dist/component/server/implementation/passkey.js.map +0 -1
- package/dist/component/server/implementation/provider.js +0 -19
- package/dist/component/server/implementation/provider.js.map +0 -1
- package/dist/component/server/implementation/ratelimit.js +0 -48
- package/dist/component/server/implementation/ratelimit.js.map +0 -1
- package/dist/component/server/implementation/redirects.js.map +0 -1
- package/dist/component/server/implementation/refresh.js +0 -109
- package/dist/component/server/implementation/refresh.js.map +0 -1
- package/dist/component/server/implementation/sessions.js.map +0 -1
- package/dist/component/server/implementation/signin.js +0 -148
- package/dist/component/server/implementation/signin.js.map +0 -1
- package/dist/component/server/implementation/tokens.js +0 -15
- package/dist/component/server/implementation/tokens.js.map +0 -1
- package/dist/component/server/implementation/totp.js +0 -142
- package/dist/component/server/implementation/totp.js.map +0 -1
- package/dist/component/server/implementation/types.d.ts +0 -42
- package/dist/component/server/implementation/types.d.ts.map +0 -1
- package/dist/component/server/implementation/types.js.map +0 -1
- package/dist/component/server/implementation/users.js.map +0 -1
- package/dist/component/server/implementation/utils.js +0 -56
- package/dist/component/server/implementation/utils.js.map +0 -1
- package/dist/component/server/providers.js.map +0 -1
- package/dist/component/server/templates.js +0 -84
- package/dist/component/server/templates.js.map +0 -1
- package/dist/server/cookies.d.ts.map +0 -1
- package/dist/server/implementation/db.d.ts +0 -86
- package/dist/server/implementation/db.d.ts.map +0 -1
- package/dist/server/implementation/db.js.map +0 -1
- package/dist/server/implementation/device.d.ts +0 -30
- package/dist/server/implementation/device.d.ts.map +0 -1
- package/dist/server/implementation/device.js +0 -135
- package/dist/server/implementation/device.js.map +0 -1
- package/dist/server/implementation/index.d.ts +0 -870
- package/dist/server/implementation/index.d.ts.map +0 -1
- package/dist/server/implementation/index.js +0 -610
- package/dist/server/implementation/index.js.map +0 -1
- package/dist/server/implementation/keys.d.ts +0 -66
- package/dist/server/implementation/keys.d.ts.map +0 -1
- package/dist/server/implementation/keys.js.map +0 -1
- package/dist/server/implementation/mutations/account.d.ts +0 -27
- package/dist/server/implementation/mutations/account.d.ts.map +0 -1
- package/dist/server/implementation/mutations/account.js +0 -39
- package/dist/server/implementation/mutations/account.js.map +0 -1
- package/dist/server/implementation/mutations/code.d.ts +0 -29
- package/dist/server/implementation/mutations/code.d.ts.map +0 -1
- package/dist/server/implementation/mutations/code.js.map +0 -1
- package/dist/server/implementation/mutations/index.d.ts +0 -310
- package/dist/server/implementation/mutations/index.d.ts.map +0 -1
- package/dist/server/implementation/mutations/index.js +0 -70
- package/dist/server/implementation/mutations/index.js.map +0 -1
- package/dist/server/implementation/mutations/invalidate.d.ts +0 -18
- package/dist/server/implementation/mutations/invalidate.d.ts.map +0 -1
- package/dist/server/implementation/mutations/invalidate.js +0 -29
- package/dist/server/implementation/mutations/invalidate.js.map +0 -1
- package/dist/server/implementation/mutations/oauth.d.ts +0 -23
- package/dist/server/implementation/mutations/oauth.d.ts.map +0 -1
- package/dist/server/implementation/mutations/oauth.js +0 -51
- package/dist/server/implementation/mutations/oauth.js.map +0 -1
- package/dist/server/implementation/mutations/refresh.d.ts +0 -20
- package/dist/server/implementation/mutations/refresh.d.ts.map +0 -1
- package/dist/server/implementation/mutations/refresh.js +0 -85
- package/dist/server/implementation/mutations/refresh.js.map +0 -1
- package/dist/server/implementation/mutations/register.d.ts +0 -37
- package/dist/server/implementation/mutations/register.d.ts.map +0 -1
- package/dist/server/implementation/mutations/register.js +0 -65
- package/dist/server/implementation/mutations/register.js.map +0 -1
- package/dist/server/implementation/mutations/retrieve.d.ts +0 -31
- package/dist/server/implementation/mutations/retrieve.d.ts.map +0 -1
- package/dist/server/implementation/mutations/retrieve.js +0 -50
- package/dist/server/implementation/mutations/retrieve.js.map +0 -1
- package/dist/server/implementation/mutations/signature.d.ts +0 -19
- package/dist/server/implementation/mutations/signature.d.ts.map +0 -1
- package/dist/server/implementation/mutations/signature.js +0 -27
- package/dist/server/implementation/mutations/signature.js.map +0 -1
- package/dist/server/implementation/mutations/signin.d.ts +0 -21
- package/dist/server/implementation/mutations/signin.d.ts.map +0 -1
- package/dist/server/implementation/mutations/signin.js.map +0 -1
- package/dist/server/implementation/mutations/signout.d.ts +0 -14
- package/dist/server/implementation/mutations/signout.d.ts.map +0 -1
- package/dist/server/implementation/mutations/signout.js +0 -27
- package/dist/server/implementation/mutations/signout.js.map +0 -1
- package/dist/server/implementation/mutations/store.d.ts +0 -11
- package/dist/server/implementation/mutations/store.d.ts.map +0 -1
- package/dist/server/implementation/mutations/store.js +0 -12
- package/dist/server/implementation/mutations/store.js.map +0 -1
- package/dist/server/implementation/mutations/verifier.d.ts +0 -11
- package/dist/server/implementation/mutations/verifier.d.ts.map +0 -1
- package/dist/server/implementation/mutations/verifier.js +0 -16
- package/dist/server/implementation/mutations/verifier.js.map +0 -1
- package/dist/server/implementation/mutations/verify.d.ts +0 -25
- package/dist/server/implementation/mutations/verify.d.ts.map +0 -1
- package/dist/server/implementation/mutations/verify.js +0 -105
- package/dist/server/implementation/mutations/verify.js.map +0 -1
- package/dist/server/implementation/passkey.d.ts +0 -24
- package/dist/server/implementation/passkey.d.ts.map +0 -1
- package/dist/server/implementation/passkey.js +0 -307
- package/dist/server/implementation/passkey.js.map +0 -1
- package/dist/server/implementation/provider.d.ts +0 -10
- package/dist/server/implementation/provider.d.ts.map +0 -1
- package/dist/server/implementation/provider.js +0 -19
- package/dist/server/implementation/provider.js.map +0 -1
- package/dist/server/implementation/ratelimit.d.ts +0 -10
- package/dist/server/implementation/ratelimit.d.ts.map +0 -1
- package/dist/server/implementation/ratelimit.js +0 -48
- package/dist/server/implementation/ratelimit.js.map +0 -1
- package/dist/server/implementation/redirects.d.ts +0 -10
- package/dist/server/implementation/redirects.d.ts.map +0 -1
- package/dist/server/implementation/redirects.js.map +0 -1
- package/dist/server/implementation/refresh.d.ts +0 -37
- package/dist/server/implementation/refresh.d.ts.map +0 -1
- package/dist/server/implementation/refresh.js +0 -109
- package/dist/server/implementation/refresh.js.map +0 -1
- package/dist/server/implementation/sessions.d.ts +0 -29
- package/dist/server/implementation/sessions.d.ts.map +0 -1
- package/dist/server/implementation/sessions.js.map +0 -1
- package/dist/server/implementation/signin.d.ts +0 -55
- package/dist/server/implementation/signin.d.ts.map +0 -1
- package/dist/server/implementation/signin.js +0 -148
- package/dist/server/implementation/signin.js.map +0 -1
- package/dist/server/implementation/tokens.d.ts +0 -11
- package/dist/server/implementation/tokens.d.ts.map +0 -1
- package/dist/server/implementation/tokens.js +0 -15
- package/dist/server/implementation/tokens.js.map +0 -1
- package/dist/server/implementation/totp.d.ts +0 -31
- package/dist/server/implementation/totp.d.ts.map +0 -1
- package/dist/server/implementation/totp.js +0 -142
- package/dist/server/implementation/totp.js.map +0 -1
- package/dist/server/implementation/types.d.ts +0 -189
- package/dist/server/implementation/types.d.ts.map +0 -1
- package/dist/server/implementation/types.js +0 -97
- package/dist/server/implementation/types.js.map +0 -1
- package/dist/server/implementation/users.d.ts +0 -30
- package/dist/server/implementation/users.d.ts.map +0 -1
- package/dist/server/implementation/users.js.map +0 -1
- package/dist/server/implementation/utils.d.ts +0 -19
- package/dist/server/implementation/utils.d.ts.map +0 -1
- package/dist/server/implementation/utils.js +0 -56
- package/dist/server/implementation/utils.js.map +0 -1
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js.map +0 -1
- package/dist/server/oauth.d.ts.map +0 -1
- package/dist/server/providers.d.ts +0 -72
- package/dist/server/providers.d.ts.map +0 -1
- package/dist/server/providers.js.map +0 -1
- package/dist/server/templates.d.ts.map +0 -1
- package/dist/server/utils.d.ts.map +0 -1
- package/dist/server/version.d.ts +0 -5
- package/dist/server/version.d.ts.map +0 -1
- package/dist/server/version.js +0 -6
- package/dist/server/version.js.map +0 -1
- package/src/cli/utils.ts +0 -248
- package/src/server/implementation/device.ts +0 -307
- package/src/server/implementation/index.ts +0 -1583
- package/src/server/implementation/mutations/account.ts +0 -50
- package/src/server/implementation/mutations/index.ts +0 -157
- package/src/server/implementation/mutations/invalidate.ts +0 -42
- package/src/server/implementation/mutations/oauth.ts +0 -73
- package/src/server/implementation/mutations/refresh.ts +0 -175
- package/src/server/implementation/mutations/register.ts +0 -100
- package/src/server/implementation/mutations/retrieve.ts +0 -79
- package/src/server/implementation/mutations/signature.ts +0 -39
- package/src/server/implementation/mutations/signout.ts +0 -35
- package/src/server/implementation/mutations/store.ts +0 -7
- package/src/server/implementation/mutations/verifier.ts +0 -24
- package/src/server/implementation/mutations/verify.ts +0 -194
- package/src/server/implementation/passkey.ts +0 -620
- package/src/server/implementation/provider.ts +0 -36
- package/src/server/implementation/ratelimit.ts +0 -79
- package/src/server/implementation/refresh.ts +0 -172
- package/src/server/implementation/signin.ts +0 -296
- package/src/server/implementation/totp.ts +0 -342
- package/src/server/implementation/types.ts +0 -444
- package/src/server/implementation/utils.ts +0 -91
- package/src/server/version.ts +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"passkey.js","names":[],"sources":["../../src/client/factors/passkey.ts"],"sourcesContent":["import { Fx } from \"@robelest/fx\";\n\nimport { base64urlDecode, base64urlEncode } from \"../runtime/browser\";\nimport type {\n AuthSession,\n ConvexTransport,\n PasskeyClient,\n SignInActionResult,\n SignInResult,\n} from \"../core/types\";\n\ntype PasskeyDeps = {\n proxy: string | undefined;\n convex: ConvexTransport;\n requireApiRefs: () => { signIn: any };\n proxyFetch: (body: Record<string, unknown>) => Promise<any>;\n setTokenAndMaybeWait: (\n args:\n | {\n shouldStore: true;\n tokens: AuthSession | null;\n waitForHandshake: boolean;\n context: { provider?: string; flow: string };\n }\n | {\n shouldStore: false;\n tokens: { token: string } | null;\n waitForHandshake: boolean;\n context: { provider?: string; flow: string };\n },\n ) => Promise<boolean>;\n};\n\n/** @internal */\nexport function createPasskeyClient(deps: PasskeyDeps): PasskeyClient {\n const { proxy, convex, requireApiRefs, proxyFetch, setTokenAndMaybeWait } =\n deps;\n\n const handleSignedInResult = async (\n result: SignInActionResult,\n flow: string,\n ): Promise<SignInResult> => {\n return Fx.run(\n Fx.match(result, result.kind, {\n signedIn: (signedInResult) =>\n Fx.from({\n ok: async () => {\n const signingIn = await setTokenAndMaybeWait(\n proxy\n ? {\n shouldStore: false as const,\n tokens:\n signedInResult.tokens === null\n ? null\n : { token: signedInResult.tokens.token },\n waitForHandshake: true,\n context: { provider: \"passkey\", flow },\n }\n : {\n shouldStore: true as const,\n tokens: signedInResult.tokens,\n waitForHandshake: true,\n context: { provider: \"passkey\", flow },\n },\n );\n return signingIn\n ? ({ kind: \"signedIn\" as const } as SignInResult)\n : ({ kind: \"started\" as const } as SignInResult);\n },\n err: (e) => e as never,\n }),\n redirect: () => Fx.succeed({ kind: \"started\" as const }),\n started: () => Fx.succeed({ kind: \"started\" as const }),\n passkeyOptions: () => Fx.succeed({ kind: \"started\" as const }),\n totpRequired: () => Fx.succeed({ kind: \"started\" as const }),\n totpSetup: () => Fx.succeed({ kind: \"started\" as const }),\n deviceCode: () => Fx.succeed({ kind: \"started\" as const }),\n }),\n );\n };\n\n return {\n isSupported: (): boolean => {\n return (\n typeof window !== \"undefined\" &&\n typeof window.PublicKeyCredential !== \"undefined\"\n );\n },\n\n isAutofillSupported: async (): Promise<boolean> => {\n if (typeof window === \"undefined\") return false;\n if (typeof window.PublicKeyCredential === \"undefined\") return false;\n if (\n typeof (window.PublicKeyCredential as any)\n .isConditionalMediationAvailable !== \"function\"\n ) {\n return false;\n }\n return (\n window.PublicKeyCredential as any\n ).isConditionalMediationAvailable();\n },\n\n register: async (opts?: {\n name?: string;\n email?: string;\n userName?: string;\n userDisplayName?: string;\n }): Promise<SignInResult> => {\n const phase1Params = {\n flow: \"registerOptions\",\n email: opts?.email,\n userName: opts?.userName,\n userDisplayName: opts?.userDisplayName,\n };\n\n let phase1Result: SignInActionResult;\n if (proxy) {\n phase1Result = (await proxyFetch({\n action: \"auth:signIn\",\n args: { provider: \"passkey\", params: phase1Params },\n })) as SignInActionResult;\n } else {\n phase1Result = (await convex.action(requireApiRefs().signIn, {\n provider: \"passkey\",\n params: phase1Params,\n })) as SignInActionResult;\n }\n\n if (phase1Result.kind !== \"passkeyOptions\") {\n throw new Error(\"Server did not return passkey registration options\");\n }\n\n const options = phase1Result.options;\n const createOptions: CredentialCreationOptions = {\n publicKey: {\n rp: options.rp,\n user: {\n id: base64urlDecode(options.user.id).buffer as ArrayBuffer,\n name: options.user.name,\n displayName: options.user.displayName,\n },\n challenge: base64urlDecode(options.challenge).buffer as ArrayBuffer,\n pubKeyCredParams: options.pubKeyCredParams,\n timeout: options.timeout,\n attestation: options.attestation,\n authenticatorSelection: options.authenticatorSelection,\n excludeCredentials: (options.excludeCredentials ?? []).map(\n (cred: any) => ({\n type: cred.type ?? \"public-key\",\n id: base64urlDecode(cred.id).buffer as ArrayBuffer,\n transports: cred.transports,\n }),\n ),\n },\n };\n\n const credential = (await navigator.credentials.create(\n createOptions,\n )) as PublicKeyCredential | null;\n if (!credential) {\n throw new Error(\"Passkey registration was cancelled\");\n }\n\n const response = credential.response as AuthenticatorAttestationResponse;\n const transports =\n typeof response.getTransports === \"function\"\n ? response.getTransports()\n : undefined;\n\n const phase2Params = {\n flow: \"registerVerify\",\n clientDataJSON: base64urlEncode(response.clientDataJSON),\n attestationObject: base64urlEncode(response.attestationObject),\n transports,\n passkeyName: opts?.name,\n email: opts?.email,\n };\n\n let phase2Result: SignInActionResult;\n if (proxy) {\n phase2Result = (await proxyFetch({\n action: \"auth:signIn\",\n args: {\n provider: \"passkey\",\n params: phase2Params,\n verifier: phase1Result.verifier,\n },\n })) as SignInActionResult;\n } else {\n phase2Result = (await convex.action(requireApiRefs().signIn, {\n provider: \"passkey\",\n params: phase2Params,\n verifier: phase1Result.verifier,\n })) as SignInActionResult;\n }\n\n return handleSignedInResult(phase2Result, \"registerVerify\");\n },\n\n authenticate: async (opts?: {\n email?: string;\n autofill?: boolean;\n }): Promise<SignInResult> => {\n const phase1Params = {\n flow: \"authOptions\",\n email: opts?.email,\n };\n\n let phase1Result: SignInActionResult;\n if (proxy) {\n phase1Result = (await proxyFetch({\n action: \"auth:signIn\",\n args: { provider: \"passkey\", params: phase1Params },\n })) as SignInActionResult;\n } else {\n phase1Result = (await convex.action(requireApiRefs().signIn, {\n provider: \"passkey\",\n params: phase1Params,\n })) as SignInActionResult;\n }\n\n if (phase1Result.kind !== \"passkeyOptions\") {\n throw new Error(\"Server did not return passkey authentication options\");\n }\n\n const options = phase1Result.options;\n const getOptions: CredentialRequestOptions = {\n publicKey: {\n challenge: base64urlDecode(options.challenge).buffer as ArrayBuffer,\n timeout: options.timeout,\n rpId: options.rpId,\n userVerification: options.userVerification,\n allowCredentials: (options.allowCredentials ?? []).map(\n (cred: any) => ({\n type: cred.type ?? \"public-key\",\n id: base64urlDecode(cred.id).buffer as ArrayBuffer,\n transports: cred.transports,\n }),\n ),\n },\n ...(opts?.autofill ? { mediation: \"conditional\" as any } : {}),\n };\n\n const credential = (await navigator.credentials.get(\n getOptions,\n )) as PublicKeyCredential | null;\n if (!credential) {\n throw new Error(\"Passkey authentication was cancelled\");\n }\n\n const response = credential.response as AuthenticatorAssertionResponse;\n const phase2Params = {\n flow: \"authVerify\",\n credentialId: base64urlEncode(credential.rawId),\n clientDataJSON: base64urlEncode(response.clientDataJSON),\n authenticatorData: base64urlEncode(response.authenticatorData),\n signature: base64urlEncode(response.signature),\n };\n\n let phase2Result: SignInActionResult;\n if (proxy) {\n phase2Result = (await proxyFetch({\n action: \"auth:signIn\",\n args: {\n provider: \"passkey\",\n params: phase2Params,\n verifier: phase1Result.verifier,\n },\n })) as SignInActionResult;\n } else {\n phase2Result = (await convex.action(requireApiRefs().signIn, {\n provider: \"passkey\",\n params: phase2Params,\n verifier: phase1Result.verifier,\n })) as SignInActionResult;\n }\n\n return handleSignedInResult(phase2Result, \"authVerify\");\n },\n };\n}\n"],"mappings":";;;;;AAkCA,SAAgB,oBAAoB,MAAkC;CACpE,MAAM,EAAE,OAAO,QAAQ,gBAAgB,YAAY,yBACjD;CAEF,MAAM,uBAAuB,OAC3B,QACA,SAC0B;AAC1B,SAAO,GAAG,IACR,GAAG,MAAM,QAAQ,OAAO,MAAM;GAC5B,WAAW,mBACT,GAAG,KAAK;IACN,IAAI,YAAY;AAmBd,YAlBkB,MAAM,qBACtB,QACI;MACE,aAAa;MACb,QACE,eAAe,WAAW,OACtB,OACA,EAAE,OAAO,eAAe,OAAO,OAAO;MAC5C,kBAAkB;MAClB,SAAS;OAAE,UAAU;OAAW;OAAM;MACvC,GACD;MACE,aAAa;MACb,QAAQ,eAAe;MACvB,kBAAkB;MAClB,SAAS;OAAE,UAAU;OAAW;OAAM;MACvC,CACN,GAEI,EAAE,MAAM,YAAqB,GAC7B,EAAE,MAAM,WAAoB;;IAEnC,MAAM,MAAM;IACb,CAAC;GACJ,gBAAgB,GAAG,QAAQ,EAAE,MAAM,WAAoB,CAAC;GACxD,eAAe,GAAG,QAAQ,EAAE,MAAM,WAAoB,CAAC;GACvD,sBAAsB,GAAG,QAAQ,EAAE,MAAM,WAAoB,CAAC;GAC9D,oBAAoB,GAAG,QAAQ,EAAE,MAAM,WAAoB,CAAC;GAC5D,iBAAiB,GAAG,QAAQ,EAAE,MAAM,WAAoB,CAAC;GACzD,kBAAkB,GAAG,QAAQ,EAAE,MAAM,WAAoB,CAAC;GAC3D,CAAC,CACH;;AAGH,QAAO;EACL,mBAA4B;AAC1B,UACE,OAAO,WAAW,eAClB,OAAO,OAAO,wBAAwB;;EAI1C,qBAAqB,YAA8B;AACjD,OAAI,OAAO,WAAW,YAAa,QAAO;AAC1C,OAAI,OAAO,OAAO,wBAAwB,YAAa,QAAO;AAC9D,OACE,OAAQ,OAAO,oBACZ,oCAAoC,WAEvC,QAAO;AAET,UACE,OAAO,oBACP,iCAAiC;;EAGrC,UAAU,OAAO,SAKY;GAC3B,MAAM,eAAe;IACnB,MAAM;IACN,OAAO,MAAM;IACb,UAAU,MAAM;IAChB,iBAAiB,MAAM;IACxB;GAED,IAAI;AACJ,OAAI,MACF,gBAAgB,MAAM,WAAW;IAC/B,QAAQ;IACR,MAAM;KAAE,UAAU;KAAW,QAAQ;KAAc;IACpD,CAAC;OAEF,gBAAgB,MAAM,OAAO,OAAO,gBAAgB,CAAC,QAAQ;IAC3D,UAAU;IACV,QAAQ;IACT,CAAC;AAGJ,OAAI,aAAa,SAAS,iBACxB,OAAM,IAAI,MAAM,qDAAqD;GAGvE,MAAM,UAAU,aAAa;GAC7B,MAAM,gBAA2C,EAC/C,WAAW;IACT,IAAI,QAAQ;IACZ,MAAM;KACJ,IAAI,gBAAgB,QAAQ,KAAK,GAAG,CAAC;KACrC,MAAM,QAAQ,KAAK;KACnB,aAAa,QAAQ,KAAK;KAC3B;IACD,WAAW,gBAAgB,QAAQ,UAAU,CAAC;IAC9C,kBAAkB,QAAQ;IAC1B,SAAS,QAAQ;IACjB,aAAa,QAAQ;IACrB,wBAAwB,QAAQ;IAChC,qBAAqB,QAAQ,sBAAsB,EAAE,EAAE,KACpD,UAAe;KACd,MAAM,KAAK,QAAQ;KACnB,IAAI,gBAAgB,KAAK,GAAG,CAAC;KAC7B,YAAY,KAAK;KAClB,EACF;IACF,EACF;GAED,MAAM,aAAc,MAAM,UAAU,YAAY,OAC9C,cACD;AACD,OAAI,CAAC,WACH,OAAM,IAAI,MAAM,qCAAqC;GAGvD,MAAM,WAAW,WAAW;GAC5B,MAAM,aACJ,OAAO,SAAS,kBAAkB,aAC9B,SAAS,eAAe,GACxB;GAEN,MAAM,eAAe;IACnB,MAAM;IACN,gBAAgB,gBAAgB,SAAS,eAAe;IACxD,mBAAmB,gBAAgB,SAAS,kBAAkB;IAC9D;IACA,aAAa,MAAM;IACnB,OAAO,MAAM;IACd;GAED,IAAI;AACJ,OAAI,MACF,gBAAgB,MAAM,WAAW;IAC/B,QAAQ;IACR,MAAM;KACJ,UAAU;KACV,QAAQ;KACR,UAAU,aAAa;KACxB;IACF,CAAC;OAEF,gBAAgB,MAAM,OAAO,OAAO,gBAAgB,CAAC,QAAQ;IAC3D,UAAU;IACV,QAAQ;IACR,UAAU,aAAa;IACxB,CAAC;AAGJ,UAAO,qBAAqB,cAAc,iBAAiB;;EAG7D,cAAc,OAAO,SAGQ;GAC3B,MAAM,eAAe;IACnB,MAAM;IACN,OAAO,MAAM;IACd;GAED,IAAI;AACJ,OAAI,MACF,gBAAgB,MAAM,WAAW;IAC/B,QAAQ;IACR,MAAM;KAAE,UAAU;KAAW,QAAQ;KAAc;IACpD,CAAC;OAEF,gBAAgB,MAAM,OAAO,OAAO,gBAAgB,CAAC,QAAQ;IAC3D,UAAU;IACV,QAAQ;IACT,CAAC;AAGJ,OAAI,aAAa,SAAS,iBACxB,OAAM,IAAI,MAAM,uDAAuD;GAGzE,MAAM,UAAU,aAAa;GAC7B,MAAM,aAAuC;IAC3C,WAAW;KACT,WAAW,gBAAgB,QAAQ,UAAU,CAAC;KAC9C,SAAS,QAAQ;KACjB,MAAM,QAAQ;KACd,kBAAkB,QAAQ;KAC1B,mBAAmB,QAAQ,oBAAoB,EAAE,EAAE,KAChD,UAAe;MACd,MAAM,KAAK,QAAQ;MACnB,IAAI,gBAAgB,KAAK,GAAG,CAAC;MAC7B,YAAY,KAAK;MAClB,EACF;KACF;IACD,GAAI,MAAM,WAAW,EAAE,WAAW,eAAsB,GAAG,EAAE;IAC9D;GAED,MAAM,aAAc,MAAM,UAAU,YAAY,IAC9C,WACD;AACD,OAAI,CAAC,WACH,OAAM,IAAI,MAAM,uCAAuC;GAGzD,MAAM,WAAW,WAAW;GAC5B,MAAM,eAAe;IACnB,MAAM;IACN,cAAc,gBAAgB,WAAW,MAAM;IAC/C,gBAAgB,gBAAgB,SAAS,eAAe;IACxD,mBAAmB,gBAAgB,SAAS,kBAAkB;IAC9D,WAAW,gBAAgB,SAAS,UAAU;IAC/C;GAED,IAAI;AACJ,OAAI,MACF,gBAAgB,MAAM,WAAW;IAC/B,QAAQ;IACR,MAAM;KACJ,UAAU;KACV,QAAQ;KACR,UAAU,aAAa;KACxB;IACF,CAAC;OAEF,gBAAgB,MAAM,OAAO,OAAO,gBAAgB,CAAC,QAAQ;IAC3D,UAAU;IACV,QAAQ;IACR,UAAU,aAAa;IACxB,CAAC;AAGJ,UAAO,qBAAqB,cAAc,aAAa;;EAE1D"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
//#region src/client/factors/totp.ts
|
|
2
|
+
/** @internal */
|
|
3
|
+
function createTotpClient(deps) {
|
|
4
|
+
const { proxy, convex, requireApiRefs, proxyFetch, setTokenAndMaybeWait } = deps;
|
|
5
|
+
return {
|
|
6
|
+
setup: async (opts) => {
|
|
7
|
+
const params = { flow: "setup" };
|
|
8
|
+
if (opts?.name) params.name = opts.name;
|
|
9
|
+
if (opts?.accountName) params.accountName = opts.accountName;
|
|
10
|
+
if (proxy) {
|
|
11
|
+
const result$1 = await proxyFetch({
|
|
12
|
+
action: "auth:signIn",
|
|
13
|
+
args: {
|
|
14
|
+
provider: "totp",
|
|
15
|
+
params
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
return {
|
|
19
|
+
uri: result$1.totpSetup.uri,
|
|
20
|
+
secret: result$1.totpSetup.secret,
|
|
21
|
+
verifier: result$1.verifier,
|
|
22
|
+
totpId: result$1.totpSetup.totpId
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
const result = await convex.action(requireApiRefs().signIn, {
|
|
26
|
+
provider: "totp",
|
|
27
|
+
params
|
|
28
|
+
});
|
|
29
|
+
return {
|
|
30
|
+
uri: result.totpSetup.uri,
|
|
31
|
+
secret: result.totpSetup.secret,
|
|
32
|
+
verifier: result.verifier,
|
|
33
|
+
totpId: result.totpSetup.totpId
|
|
34
|
+
};
|
|
35
|
+
},
|
|
36
|
+
confirm: async (opts) => {
|
|
37
|
+
const params = {
|
|
38
|
+
flow: "confirm",
|
|
39
|
+
code: opts.code,
|
|
40
|
+
totpId: opts.totpId
|
|
41
|
+
};
|
|
42
|
+
if (proxy) {
|
|
43
|
+
const result$1 = await proxyFetch({
|
|
44
|
+
action: "auth:signIn",
|
|
45
|
+
args: {
|
|
46
|
+
provider: "totp",
|
|
47
|
+
params,
|
|
48
|
+
verifier: opts.verifier
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
if (result$1.tokens) await setTokenAndMaybeWait({
|
|
52
|
+
shouldStore: false,
|
|
53
|
+
tokens: result$1.tokens === null ? null : { token: result$1.tokens.token },
|
|
54
|
+
waitForHandshake: true,
|
|
55
|
+
context: {
|
|
56
|
+
provider: "totp",
|
|
57
|
+
flow: "confirm"
|
|
58
|
+
}
|
|
59
|
+
});
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const result = await convex.action(requireApiRefs().signIn, {
|
|
63
|
+
provider: "totp",
|
|
64
|
+
params,
|
|
65
|
+
verifier: opts.verifier
|
|
66
|
+
});
|
|
67
|
+
if (result.tokens) await setTokenAndMaybeWait({
|
|
68
|
+
shouldStore: true,
|
|
69
|
+
tokens: result.tokens ?? null,
|
|
70
|
+
waitForHandshake: true,
|
|
71
|
+
context: {
|
|
72
|
+
provider: "totp",
|
|
73
|
+
flow: "confirm"
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
},
|
|
77
|
+
verify: async (opts) => {
|
|
78
|
+
const params = {
|
|
79
|
+
flow: "verify",
|
|
80
|
+
code: opts.code
|
|
81
|
+
};
|
|
82
|
+
if (proxy) {
|
|
83
|
+
const result$1 = await proxyFetch({
|
|
84
|
+
action: "auth:signIn",
|
|
85
|
+
args: {
|
|
86
|
+
provider: "totp",
|
|
87
|
+
params,
|
|
88
|
+
verifier: opts.verifier
|
|
89
|
+
}
|
|
90
|
+
});
|
|
91
|
+
if (result$1.tokens) await setTokenAndMaybeWait({
|
|
92
|
+
shouldStore: false,
|
|
93
|
+
tokens: result$1.tokens === null ? null : { token: result$1.tokens.token },
|
|
94
|
+
waitForHandshake: true,
|
|
95
|
+
context: {
|
|
96
|
+
provider: "totp",
|
|
97
|
+
flow: "verify"
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
const result = await convex.action(requireApiRefs().signIn, {
|
|
103
|
+
provider: "totp",
|
|
104
|
+
params,
|
|
105
|
+
verifier: opts.verifier
|
|
106
|
+
});
|
|
107
|
+
if (result.tokens) await setTokenAndMaybeWait({
|
|
108
|
+
shouldStore: true,
|
|
109
|
+
tokens: result.tokens ?? null,
|
|
110
|
+
waitForHandshake: true,
|
|
111
|
+
context: {
|
|
112
|
+
provider: "totp",
|
|
113
|
+
flow: "verify"
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
//#endregion
|
|
121
|
+
export { createTotpClient };
|
|
122
|
+
//# sourceMappingURL=totp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"totp.js","names":["result"],"sources":["../../src/client/factors/totp.ts"],"sourcesContent":["import type { AuthSession, ConvexTransport, TotpClient } from \"../core/types\";\n\ntype TotpDeps = {\n proxy: string | undefined;\n convex: ConvexTransport;\n requireApiRefs: () => { signIn: any };\n proxyFetch: (body: Record<string, unknown>) => Promise<any>;\n setTokenAndMaybeWait: (\n args:\n | {\n shouldStore: true;\n tokens: AuthSession | null;\n waitForHandshake: boolean;\n context: { provider?: string; flow: string };\n }\n | {\n shouldStore: false;\n tokens: { token: string } | null;\n waitForHandshake: boolean;\n context: { provider?: string; flow: string };\n },\n ) => Promise<boolean>;\n};\n\n/** @internal */\nexport function createTotpClient(deps: TotpDeps): TotpClient {\n const { proxy, convex, requireApiRefs, proxyFetch, setTokenAndMaybeWait } =\n deps;\n\n return {\n setup: async (opts?: {\n name?: string;\n accountName?: string;\n }): Promise<{\n uri: string;\n secret: string;\n verifier: string;\n totpId: string;\n }> => {\n const params: Record<string, any> = { flow: \"setup\" };\n if (opts?.name) params.name = opts.name;\n if (opts?.accountName) params.accountName = opts.accountName;\n\n if (proxy) {\n const result = await proxyFetch({\n action: \"auth:signIn\",\n args: { provider: \"totp\", params },\n });\n return {\n uri: result.totpSetup.uri,\n secret: result.totpSetup.secret,\n verifier: result.verifier,\n totpId: result.totpSetup.totpId,\n };\n }\n\n const result = await convex.action(requireApiRefs().signIn, {\n provider: \"totp\",\n params,\n });\n return {\n uri: result.totpSetup.uri,\n secret: result.totpSetup.secret,\n verifier: result.verifier,\n totpId: result.totpSetup.totpId,\n };\n },\n\n confirm: async (opts: {\n code: string;\n verifier: string;\n totpId: string;\n }): Promise<void> => {\n const params: Record<string, any> = {\n flow: \"confirm\",\n code: opts.code,\n totpId: opts.totpId,\n };\n\n if (proxy) {\n const result = await proxyFetch({\n action: \"auth:signIn\",\n args: { provider: \"totp\", params, verifier: opts.verifier },\n });\n if (result.tokens) {\n await setTokenAndMaybeWait({\n shouldStore: false,\n tokens:\n result.tokens === null ? null : { token: result.tokens.token },\n waitForHandshake: true,\n context: { provider: \"totp\", flow: \"confirm\" },\n });\n }\n return;\n }\n\n const result = await convex.action(requireApiRefs().signIn, {\n provider: \"totp\",\n params,\n verifier: opts.verifier,\n });\n if (result.tokens) {\n await setTokenAndMaybeWait({\n shouldStore: true,\n tokens: (result.tokens as AuthSession | null) ?? null,\n waitForHandshake: true,\n context: { provider: \"totp\", flow: \"confirm\" },\n });\n }\n },\n\n verify: async (opts: { code: string; verifier: string }): Promise<void> => {\n const params: Record<string, any> = {\n flow: \"verify\",\n code: opts.code,\n };\n\n if (proxy) {\n const result = await proxyFetch({\n action: \"auth:signIn\",\n args: { provider: \"totp\", params, verifier: opts.verifier },\n });\n if (result.tokens) {\n await setTokenAndMaybeWait({\n shouldStore: false,\n tokens:\n result.tokens === null ? null : { token: result.tokens.token },\n waitForHandshake: true,\n context: { provider: \"totp\", flow: \"verify\" },\n });\n }\n return;\n }\n\n const result = await convex.action(requireApiRefs().signIn, {\n provider: \"totp\",\n params,\n verifier: opts.verifier,\n });\n if (result.tokens) {\n await setTokenAndMaybeWait({\n shouldStore: true,\n tokens: (result.tokens as AuthSession | null) ?? null,\n waitForHandshake: true,\n context: { provider: \"totp\", flow: \"verify\" },\n });\n }\n },\n };\n}\n"],"mappings":";;AAyBA,SAAgB,iBAAiB,MAA4B;CAC3D,MAAM,EAAE,OAAO,QAAQ,gBAAgB,YAAY,yBACjD;AAEF,QAAO;EACL,OAAO,OAAO,SAQR;GACJ,MAAM,SAA8B,EAAE,MAAM,SAAS;AACrD,OAAI,MAAM,KAAM,QAAO,OAAO,KAAK;AACnC,OAAI,MAAM,YAAa,QAAO,cAAc,KAAK;AAEjD,OAAI,OAAO;IACT,MAAMA,WAAS,MAAM,WAAW;KAC9B,QAAQ;KACR,MAAM;MAAE,UAAU;MAAQ;MAAQ;KACnC,CAAC;AACF,WAAO;KACL,KAAKA,SAAO,UAAU;KACtB,QAAQA,SAAO,UAAU;KACzB,UAAUA,SAAO;KACjB,QAAQA,SAAO,UAAU;KAC1B;;GAGH,MAAM,SAAS,MAAM,OAAO,OAAO,gBAAgB,CAAC,QAAQ;IAC1D,UAAU;IACV;IACD,CAAC;AACF,UAAO;IACL,KAAK,OAAO,UAAU;IACtB,QAAQ,OAAO,UAAU;IACzB,UAAU,OAAO;IACjB,QAAQ,OAAO,UAAU;IAC1B;;EAGH,SAAS,OAAO,SAIK;GACnB,MAAM,SAA8B;IAClC,MAAM;IACN,MAAM,KAAK;IACX,QAAQ,KAAK;IACd;AAED,OAAI,OAAO;IACT,MAAMA,WAAS,MAAM,WAAW;KAC9B,QAAQ;KACR,MAAM;MAAE,UAAU;MAAQ;MAAQ,UAAU,KAAK;MAAU;KAC5D,CAAC;AACF,QAAIA,SAAO,OACT,OAAM,qBAAqB;KACzB,aAAa;KACb,QACEA,SAAO,WAAW,OAAO,OAAO,EAAE,OAAOA,SAAO,OAAO,OAAO;KAChE,kBAAkB;KAClB,SAAS;MAAE,UAAU;MAAQ,MAAM;MAAW;KAC/C,CAAC;AAEJ;;GAGF,MAAM,SAAS,MAAM,OAAO,OAAO,gBAAgB,CAAC,QAAQ;IAC1D,UAAU;IACV;IACA,UAAU,KAAK;IAChB,CAAC;AACF,OAAI,OAAO,OACT,OAAM,qBAAqB;IACzB,aAAa;IACb,QAAS,OAAO,UAAiC;IACjD,kBAAkB;IAClB,SAAS;KAAE,UAAU;KAAQ,MAAM;KAAW;IAC/C,CAAC;;EAIN,QAAQ,OAAO,SAA4D;GACzE,MAAM,SAA8B;IAClC,MAAM;IACN,MAAM,KAAK;IACZ;AAED,OAAI,OAAO;IACT,MAAMA,WAAS,MAAM,WAAW;KAC9B,QAAQ;KACR,MAAM;MAAE,UAAU;MAAQ;MAAQ,UAAU,KAAK;MAAU;KAC5D,CAAC;AACF,QAAIA,SAAO,OACT,OAAM,qBAAqB;KACzB,aAAa;KACb,QACEA,SAAO,WAAW,OAAO,OAAO,EAAE,OAAOA,SAAO,OAAO,OAAO;KAChE,kBAAkB;KAClB,SAAS;MAAE,UAAU;MAAQ,MAAM;MAAU;KAC9C,CAAC;AAEJ;;GAGF,MAAM,SAAS,MAAM,OAAO,OAAO,gBAAgB,CAAC,QAAQ;IAC1D,UAAU;IACV;IACA,UAAU,KAAK;IAChB,CAAC;AACF,OAAI,OAAO,OACT,OAAM,qBAAqB;IACzB,aAAa;IACb,QAAS,OAAO,UAAiC;IACjD,kBAAkB;IAClB,SAAS;KAAE,UAAU;KAAQ,MAAM;KAAU;IAC9C,CAAC;;EAGP"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { GenericActionCtxWithAuthConfig } from "../server/types.js";
|
|
2
2
|
import { DocumentByName, GenericDataModel, WithoutSystemFields } from "convex/server";
|
|
3
3
|
import { Value } from "convex/values";
|
|
4
4
|
|
|
@@ -25,7 +25,7 @@ interface AnonymousConfig<DataModel extends GenericDataModel> {
|
|
|
25
25
|
* Convex ActionCtx in case you want to read from or write to
|
|
26
26
|
* the database.
|
|
27
27
|
*/
|
|
28
|
-
ctx: GenericActionCtxWithAuthConfig<DataModel>) => WithoutSystemFields<DocumentByName<DataModel, "
|
|
28
|
+
ctx: GenericActionCtxWithAuthConfig<DataModel>) => WithoutSystemFields<DocumentByName<DataModel, "User">> & {
|
|
29
29
|
isAnonymous: true;
|
|
30
30
|
};
|
|
31
31
|
}
|
|
@@ -48,13 +48,7 @@ declare class Anonymous<DataModel extends GenericDataModel = GenericDataModel> {
|
|
|
48
48
|
readonly type: "credentials";
|
|
49
49
|
readonly config: AnonymousConfig<DataModel>;
|
|
50
50
|
constructor(config?: AnonymousConfig<DataModel>);
|
|
51
|
-
/** @internal Convert to the internal materialized config shape. */
|
|
52
|
-
_toMaterialized(): ConvexCredentialsConfig;
|
|
53
51
|
}
|
|
54
|
-
/**
|
|
55
|
-
* @deprecated Use `new Anonymous(config)` instead.
|
|
56
|
-
*/
|
|
57
|
-
declare function anonymous<DataModel extends GenericDataModel>(config?: AnonymousConfig<DataModel>): ConvexCredentialsConfig;
|
|
58
52
|
//#endregion
|
|
59
|
-
export { Anonymous, AnonymousConfig
|
|
53
|
+
export { Anonymous, AnonymousConfig };
|
|
60
54
|
//# sourceMappingURL=anonymous.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anonymous.d.ts","names":[],"sources":["../../src/providers/anonymous.ts"],"mappings":";;;;;;;;
|
|
1
|
+
{"version":3,"file":"anonymous.d.ts","names":[],"sources":["../../src/providers/anonymous.ts"],"mappings":";;;;;;;;UA4BiB,eAAA,mBAAkC,gBAAA;EAAlB;;;;EAK/B,EAAA;EASyB;;;;EAJzB,OAAA;EAUK;;;EANH,MAAA,EAAQ,MAAA,SAAe,KAAA;EAOZ;;AAkBf;;EApBI,GAAA,EAAK,8BAAA,CAA+B,SAAA,MACjC,mBAAA,CAAoB,cAAA,CAAe,SAAA;IACtC,WAAA;EAAA;AAAA;;;;;;;;;;;;;;;cAkBS,SAAA,mBAA4B,gBAAA,GAAmB,gBAAA;EAAA,SACjD,EAAA;EAAA,SACA,IAAA;EAAA,SACA,MAAA,EAAQ,eAAA,CAAgB,SAAA;cAG/B,MAAA,GAAQ,eAAA,CAAgB,SAAA;AAAA"}
|
|
@@ -4,17 +4,6 @@ import { Credentials } from "./credentials.js";
|
|
|
4
4
|
/**
|
|
5
5
|
* Anonymous authentication provider.
|
|
6
6
|
*
|
|
7
|
-
* ```ts
|
|
8
|
-
* import { Anonymous } from "@robelest/convex-auth/providers";
|
|
9
|
-
*
|
|
10
|
-
* new Anonymous()
|
|
11
|
-
* ```
|
|
12
|
-
*
|
|
13
|
-
* @module
|
|
14
|
-
*/
|
|
15
|
-
/**
|
|
16
|
-
* Anonymous authentication provider.
|
|
17
|
-
*
|
|
18
7
|
* Creates a new anonymous user account without requiring any
|
|
19
8
|
* user-provided information. Useful for guest access or
|
|
20
9
|
* progressive profiling.
|
|
@@ -53,13 +42,7 @@ var Anonymous = class {
|
|
|
53
42
|
})._toMaterialized();
|
|
54
43
|
}
|
|
55
44
|
};
|
|
56
|
-
/**
|
|
57
|
-
* @deprecated Use `new Anonymous(config)` instead.
|
|
58
|
-
*/
|
|
59
|
-
function anonymous(config = {}) {
|
|
60
|
-
return new Anonymous(config)._toMaterialized();
|
|
61
|
-
}
|
|
62
45
|
|
|
63
46
|
//#endregion
|
|
64
|
-
export { Anonymous
|
|
47
|
+
export { Anonymous };
|
|
65
48
|
//# sourceMappingURL=anonymous.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anonymous.js","names":[],"sources":["../../src/providers/anonymous.ts"],"sourcesContent":["/**\n * Anonymous authentication provider.\n *\n * ```ts\n * import { Anonymous } from \"@robelest/convex-auth/providers\";\n *\n * new Anonymous()\n * ```\n *\n * @module\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"anonymous.js","names":[],"sources":["../../src/providers/anonymous.ts"],"sourcesContent":["/**\n * Anonymous authentication provider.\n *\n * ```ts\n * import { Anonymous } from \"@robelest/convex-auth/providers\";\n *\n * new Anonymous()\n * ```\n *\n * @module\n */\n\nimport {\n DocumentByName,\n GenericDataModel,\n WithoutSystemFields,\n} from \"convex/server\";\nimport { Value } from \"convex/values\";\n\nimport type {\n GenericActionCtxWithAuthConfig,\n ConvexCredentialsConfig,\n} from \"../server/types\";\nimport { Credentials } from \"./credentials\";\n\n/**\n * The available options to an {@link Anonymous} provider for Convex Auth.\n */\nexport interface AnonymousConfig<DataModel extends GenericDataModel> {\n /**\n * Uniquely identifies the provider, allowing to use\n * multiple different {@link Anonymous} providers.\n */\n id?: string;\n /**\n * Perform checks on provided params and customize the user\n * information stored after sign in.\n */\n profile?: (\n /**\n * The values passed to the `signIn` function.\n */\n params: Record<string, Value | undefined>,\n /**\n * Convex ActionCtx in case you want to read from or write to\n * the database.\n */\n ctx: GenericActionCtxWithAuthConfig<DataModel>,\n ) => WithoutSystemFields<DocumentByName<DataModel, \"User\">> & {\n isAnonymous: true;\n };\n}\n\n/**\n * Anonymous authentication provider.\n *\n * Creates a new anonymous user account without requiring any\n * user-provided information. Useful for guest access or\n * progressive profiling.\n *\n * @example\n * ```ts\n * import { Anonymous } from \"@robelest/convex-auth/providers\";\n *\n * new Anonymous()\n * ```\n */\nexport class Anonymous<DataModel extends GenericDataModel = GenericDataModel> {\n readonly id: string;\n readonly type = \"credentials\" as const;\n readonly config: AnonymousConfig<DataModel>;\n\n constructor(\n config: AnonymousConfig<DataModel> = {} as AnonymousConfig<DataModel>,\n ) {\n this.id = config.id ?? \"anonymous\";\n this.config = config;\n }\n\n /** @internal Convert to the internal materialized config shape. */\n _toMaterialized(): ConvexCredentialsConfig {\n const config = this.config;\n const provider = this.id;\n\n return new Credentials<DataModel>({\n id: \"anonymous\",\n authorize: async (params, ctx) => {\n const profile = config.profile?.(params, ctx) ?? { isAnonymous: true };\n const { user } = await ctx.auth.account.create(ctx, {\n provider,\n account: { id: crypto.randomUUID() },\n profile: profile as any,\n });\n return { userId: user._id };\n },\n ...config,\n })._toMaterialized();\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAmEA,IAAa,YAAb,MAA8E;CAC5E,AAAS;CACT,AAAS,OAAO;CAChB,AAAS;CAET,YACE,SAAqC,EAAE,EACvC;AACA,OAAK,KAAK,OAAO,MAAM;AACvB,OAAK,SAAS;;;CAIhB,kBAA2C;EACzC,MAAM,SAAS,KAAK;EACpB,MAAM,WAAW,KAAK;AAEtB,SAAO,IAAI,YAAuB;GAChC,IAAI;GACJ,WAAW,OAAO,QAAQ,QAAQ;IAChC,MAAM,UAAU,OAAO,UAAU,QAAQ,IAAI,IAAI,EAAE,aAAa,MAAM;IACtE,MAAM,EAAE,SAAS,MAAM,IAAI,KAAK,QAAQ,OAAO,KAAK;KAClD;KACA,SAAS,EAAE,IAAI,OAAO,YAAY,EAAE;KAC3B;KACV,CAAC;AACF,WAAO,EAAE,QAAQ,KAAK,KAAK;;GAE7B,GAAG;GACJ,CAAC,CAAC,iBAAiB"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
import "../
|
|
2
|
-
import { AuthProviderConfig, ConvexCredentialsConfig, GenericActionCtxWithAuthConfig } from "../server/types.js";
|
|
1
|
+
import { AuthProviderConfig, GenericActionCtxWithAuthConfig } from "../server/types.js";
|
|
3
2
|
import { GenericDataModel } from "convex/server";
|
|
4
3
|
import { GenericId, Value } from "convex/values";
|
|
5
4
|
|
|
6
5
|
//#region src/providers/credentials.d.ts
|
|
7
6
|
/**
|
|
8
7
|
* Configuration for the Credentials provider.
|
|
8
|
+
*
|
|
9
|
+
* @typeParam DataModel - The Convex data model.
|
|
9
10
|
*/
|
|
10
11
|
interface CredentialsConfig<DataModel extends GenericDataModel = GenericDataModel> {
|
|
11
12
|
/** Uniquely identifies the provider. Defaults to `"credentials"`. */
|
|
@@ -16,8 +17,8 @@ interface CredentialsConfig<DataModel extends GenericDataModel = GenericDataMode
|
|
|
16
17
|
* @returns A user ID for successful login, or `null` to reject.
|
|
17
18
|
*/
|
|
18
19
|
authorize: (credentials: Partial<Record<string, Value | undefined>>, ctx: GenericActionCtxWithAuthConfig<DataModel>) => Promise<{
|
|
19
|
-
userId: GenericId<"
|
|
20
|
-
sessionId?: GenericId<"
|
|
20
|
+
userId: GenericId<"User">;
|
|
21
|
+
sessionId?: GenericId<"Session">;
|
|
21
22
|
} | null>;
|
|
22
23
|
/**
|
|
23
24
|
* Provide hashing and verification functions for account secrets.
|
|
@@ -38,6 +39,8 @@ interface CredentialsConfig<DataModel extends GenericDataModel = GenericDataMode
|
|
|
38
39
|
* This is the escape hatch for fully custom auth logic. For email/password
|
|
39
40
|
* flows, use the `Password` class instead.
|
|
40
41
|
*
|
|
42
|
+
* @typeParam DataModel - The Convex data model.
|
|
43
|
+
*
|
|
41
44
|
* @example
|
|
42
45
|
* ```ts
|
|
43
46
|
* import { Credentials } from "@robelest/convex-auth/providers";
|
|
@@ -55,12 +58,7 @@ declare class Credentials<DataModel extends GenericDataModel = GenericDataModel>
|
|
|
55
58
|
readonly type: "credentials";
|
|
56
59
|
readonly config: CredentialsConfig<DataModel>;
|
|
57
60
|
constructor(config: CredentialsConfig<DataModel>);
|
|
58
|
-
/** @internal Convert to the internal materialized config shape. */
|
|
59
|
-
_toMaterialized(): ConvexCredentialsConfig;
|
|
60
61
|
}
|
|
61
|
-
/** @deprecated Use `new Credentials(config)` instead. */
|
|
62
|
-
declare function credentials<DataModel extends GenericDataModel>(config: CredentialsConfig<DataModel>): ConvexCredentialsConfig;
|
|
63
|
-
type CredentialsUserConfig<DataModel extends GenericDataModel = GenericDataModel> = CredentialsConfig<DataModel>;
|
|
64
62
|
//#endregion
|
|
65
|
-
export { Credentials, CredentialsConfig
|
|
63
|
+
export { Credentials, CredentialsConfig };
|
|
66
64
|
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.d.ts","names":[],"sources":["../../src/providers/credentials.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","names":[],"sources":["../../src/providers/credentials.ts"],"mappings":";;;;;;;;;;UA8BiB,iBAAA,mBACG,gBAAA,GAAmB,gBAAA;EAAnB;EAGlB,EAAA;EAAA;;;;;EAMA,SAAA,GACE,WAAA,EAAa,OAAA,CAAQ,MAAA,SAAe,KAAA,gBACpC,GAAA,EAAK,8BAAA,CAA+B,SAAA,MACjC,OAAA;IACH,MAAA,EAAQ,SAAA;IACR,SAAA,GAAY,SAAA;EAAA;EAFT;;;EAOL,MAAA;IACE,UAAA,GAAa,MAAA,aAAmB,OAAA;IAChC,YAAA,GAAe,MAAA,UAAgB,IAAA,aAAiB,OAAA;EAAA;EADnC;;;;EAOf,cAAA,IAAkB,kBAAA;AAAA;;;;;AAuBpB;;;;;;;;;;;;;;;;cAAa,WAAA,mBACO,gBAAA,GAAmB,gBAAA;EAAA,SAE5B,EAAA;EAAA,SACA,IAAA;EAAA,SACA,MAAA,EAAQ,iBAAA,CAAkB,SAAA;cAEvB,MAAA,EAAQ,iBAAA,CAAkB,SAAA;AAAA"}
|
|
@@ -5,6 +5,8 @@
|
|
|
5
5
|
* This is the escape hatch for fully custom auth logic. For email/password
|
|
6
6
|
* flows, use the `Password` class instead.
|
|
7
7
|
*
|
|
8
|
+
* @typeParam DataModel - The Convex data model.
|
|
9
|
+
*
|
|
8
10
|
* @example
|
|
9
11
|
* ```ts
|
|
10
12
|
* import { Credentials } from "@robelest/convex-auth/providers";
|
|
@@ -34,11 +36,7 @@ var Credentials = class {
|
|
|
34
36
|
};
|
|
35
37
|
}
|
|
36
38
|
};
|
|
37
|
-
/** @deprecated Use `new Credentials(config)` instead. */
|
|
38
|
-
function credentials(config) {
|
|
39
|
-
return new Credentials(config)._toMaterialized();
|
|
40
|
-
}
|
|
41
39
|
|
|
42
40
|
//#endregion
|
|
43
|
-
export { Credentials
|
|
41
|
+
export { Credentials };
|
|
44
42
|
//# sourceMappingURL=credentials.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"credentials.js","names":[],"sources":["../../src/providers/credentials.ts"],"sourcesContent":["/**\n * Credentials provider for custom authentication flows.\n *\n * ```ts\n * import { Credentials } from \"@robelest/convex-auth/providers\";\n *\n * new Credentials({\n * authorize: async (credentials, ctx) => {\n * // Your custom logic here...\n * },\n * })\n * ```\n *\n * @module\n */\n\nimport {
|
|
1
|
+
{"version":3,"file":"credentials.js","names":[],"sources":["../../src/providers/credentials.ts"],"sourcesContent":["/**\n * Credentials provider for custom authentication flows.\n *\n * ```ts\n * import { Credentials } from \"@robelest/convex-auth/providers\";\n *\n * new Credentials({\n * authorize: async (credentials, ctx) => {\n * // Your custom logic here...\n * },\n * })\n * ```\n *\n * @module\n */\n\nimport { GenericDataModel } from \"convex/server\";\nimport { GenericId, Value } from \"convex/values\";\n\nimport type {\n AuthProviderConfig,\n ConvexCredentialsConfig,\n GenericActionCtxWithAuthConfig,\n} from \"../server/types\";\n\n/**\n * Configuration for the Credentials provider.\n *\n * @typeParam DataModel - The Convex data model.\n */\nexport interface CredentialsConfig<\n DataModel extends GenericDataModel = GenericDataModel,\n> {\n /** Uniquely identifies the provider. Defaults to `\"credentials\"`. */\n id?: string;\n /**\n * Handle credentials received from the client-side `signIn` call.\n *\n * @returns A user ID for successful login, or `null` to reject.\n */\n authorize: (\n credentials: Partial<Record<string, Value | undefined>>,\n ctx: GenericActionCtxWithAuthConfig<DataModel>,\n ) => Promise<{\n userId: GenericId<\"User\">;\n sessionId?: GenericId<\"Session\">;\n } | null>;\n /**\n * Provide hashing and verification functions for account secrets.\n */\n crypto?: {\n hashSecret: (secret: string) => Promise<string>;\n verifySecret: (secret: string, hash: string) => Promise<boolean>;\n };\n /**\n * Extra providers used internally (e.g. email verification in password flow).\n * Not exposed to clients.\n */\n extraProviders?: (AuthProviderConfig | undefined)[];\n}\n\n/**\n * Credentials provider for custom authentication flows.\n *\n * This is the escape hatch for fully custom auth logic. For email/password\n * flows, use the `Password` class instead.\n *\n * @typeParam DataModel - The Convex data model.\n *\n * @example\n * ```ts\n * import { Credentials } from \"@robelest/convex-auth/providers\";\n *\n * new Credentials({\n * authorize: async (credentials, ctx) => {\n * const user = await validateUser(credentials);\n * return user ? { userId: user._id } : null;\n * },\n * })\n * ```\n */\nexport class Credentials<\n DataModel extends GenericDataModel = GenericDataModel,\n> {\n readonly id: string;\n readonly type = \"credentials\" as const;\n readonly config: CredentialsConfig<DataModel>;\n\n constructor(config: CredentialsConfig<DataModel>) {\n this.id = config.id ?? \"credentials\";\n this.config = config;\n }\n\n /** @internal Convert to the internal materialized config shape. */\n _toMaterialized(): ConvexCredentialsConfig {\n return {\n ...this.config,\n id: this.id,\n type: \"credentials\",\n } as ConvexCredentialsConfig;\n }\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;AAiFA,IAAa,cAAb,MAEE;CACA,AAAS;CACT,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,QAAsC;AAChD,OAAK,KAAK,OAAO,MAAM;AACvB,OAAK,SAAS;;;CAIhB,kBAA2C;AACzC,SAAO;GACL,GAAG,KAAK;GACR,IAAI,KAAK;GACT,MAAM;GACP"}
|
|
@@ -1,6 +1,18 @@
|
|
|
1
|
-
import { DeviceProviderConfig } from "../server/types.js";
|
|
2
|
-
|
|
3
1
|
//#region src/providers/device.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Device authorization provider (RFC 8628).
|
|
4
|
+
*
|
|
5
|
+
* Enables input-constrained devices (CLIs, TVs, IoT) to authenticate
|
|
6
|
+
* by displaying a short code that the user enters on a secondary device.
|
|
7
|
+
*
|
|
8
|
+
* ```ts
|
|
9
|
+
* import { Device } from "@robelest/convex-auth/providers";
|
|
10
|
+
*
|
|
11
|
+
* new Device()
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @module
|
|
15
|
+
*/
|
|
4
16
|
/**
|
|
5
17
|
* Configuration for the Device authorization provider.
|
|
6
18
|
*/
|
|
@@ -35,9 +47,11 @@ interface DeviceConfig {
|
|
|
35
47
|
*
|
|
36
48
|
* @example
|
|
37
49
|
* ```ts
|
|
50
|
+
* import { createAuth } from "@robelest/convex-auth/component";
|
|
38
51
|
* import { Device } from "@robelest/convex-auth/providers";
|
|
52
|
+
* import { components } from "./_generated/api";
|
|
39
53
|
*
|
|
40
|
-
* const auth =
|
|
54
|
+
* const auth = createAuth(components.auth, {
|
|
41
55
|
* providers: [new Device()],
|
|
42
56
|
* });
|
|
43
57
|
* ```
|
|
@@ -47,13 +61,7 @@ declare class Device {
|
|
|
47
61
|
readonly type: "device";
|
|
48
62
|
readonly config: DeviceConfig;
|
|
49
63
|
constructor(config?: DeviceConfig);
|
|
50
|
-
/** @internal Convert to the internal materialized config shape. */
|
|
51
|
-
_toMaterialized(): DeviceProviderConfig;
|
|
52
64
|
}
|
|
53
|
-
/**
|
|
54
|
-
* @deprecated Use `new Device(config)` instead.
|
|
55
|
-
*/
|
|
56
|
-
declare function device(config?: DeviceConfig): DeviceProviderConfig;
|
|
57
65
|
//#endregion
|
|
58
|
-
export { Device, DeviceConfig
|
|
66
|
+
export { Device, DeviceConfig };
|
|
59
67
|
//# sourceMappingURL=device.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.d.ts","names":[],"sources":["../../src/providers/device.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"device.d.ts","names":[],"sources":["../../src/providers/device.ts"],"mappings":";;AAoBA;;;;;;;;;;;AA4CA;;;;;UA5CiB,YAAA;EA+CN;;;;EA1CT,OAAA;EA4CqC;EA1CrC,cAAA;;EAEA,SAAA;;EAEA,QAAA;;;;;;;;EAQA,eAAA;AAAA;;;;;;;;;;;;;;;;;;;;cAyBW,MAAA;EAAA,SACF,EAAA;EAAA,SACA,IAAA;EAAA,SACA,MAAA,EAAQ,YAAA;cAEL,MAAA,GAAQ,YAAA;AAAA"}
|
package/dist/providers/device.js
CHANGED
|
@@ -11,9 +11,11 @@ const DEFAULT_CHARSET = "BCDFGHJKLMNPQRSTVWXZ";
|
|
|
11
11
|
*
|
|
12
12
|
* @example
|
|
13
13
|
* ```ts
|
|
14
|
+
* import { createAuth } from "@robelest/convex-auth/component";
|
|
14
15
|
* import { Device } from "@robelest/convex-auth/providers";
|
|
16
|
+
* import { components } from "./_generated/api";
|
|
15
17
|
*
|
|
16
|
-
* const auth =
|
|
18
|
+
* const auth = createAuth(components.auth, {
|
|
17
19
|
* providers: [new Device()],
|
|
18
20
|
* });
|
|
19
21
|
* ```
|
|
@@ -39,13 +41,7 @@ var Device = class {
|
|
|
39
41
|
};
|
|
40
42
|
}
|
|
41
43
|
};
|
|
42
|
-
/**
|
|
43
|
-
* @deprecated Use `new Device(config)` instead.
|
|
44
|
-
*/
|
|
45
|
-
function device(config) {
|
|
46
|
-
return new Device(config)._toMaterialized();
|
|
47
|
-
}
|
|
48
44
|
|
|
49
45
|
//#endregion
|
|
50
|
-
export { Device
|
|
46
|
+
export { Device };
|
|
51
47
|
//# sourceMappingURL=device.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"device.js","names":[],"sources":["../../src/providers/device.ts"],"sourcesContent":["/**\n * Device authorization provider (RFC 8628).\n *\n * Enables input-constrained devices (CLIs, TVs, IoT) to authenticate\n * by displaying a short code that the user enters on a secondary device.\n *\n * ```ts\n * import { Device } from \"@robelest/convex-auth/providers\";\n *\n * new Device()\n * ```\n *\n * @module\n */\n\nimport type { DeviceProviderConfig } from \"../server/types\";\n\n/**\n * Configuration for the Device authorization provider.\n */\nexport interface DeviceConfig {\n /**\n * User code character set.\n * Default: `\"BCDFGHJKLMNPQRSTVWXZ\"` (base-20, no vowels per RFC 8628 §6.1).\n */\n charset?: string;\n /** User code length (before formatting). Default: 8. */\n userCodeLength?: number;\n /** Device code + user code lifetime in seconds. Default: 900 (15 min). */\n expiresIn?: number;\n /** Minimum polling interval in seconds. Default: 5. */\n interval?: number;\n /**\n * Base URL for the verification page where users enter the device code.\n *\n * Example: `\"http://localhost:3000/device\"` or `\"https://myapp.com/device\"`.\n *\n * If not provided, falls back to `SITE_URL + \"/device\"`.\n */\n verificationUri?: string;\n}\n\n/** No-vowel base-20 charset per RFC 8628 §6.1 recommendation. */\nconst DEFAULT_CHARSET = \"BCDFGHJKLMNPQRSTVWXZ\";\n\n/**\n * Device authorization provider (RFC 8628).\n *\n * Enables input-constrained devices (CLIs, TVs, IoT) to authenticate\n * by displaying a short user code. The user visits a verification page\n * on a secondary device, signs in with any existing provider, and\n * enters the code to authorize the device.\n *\n * @example\n * ```ts\n * import { Device } from \"@robelest/convex-auth/providers\";\n *\n * const auth =
|
|
1
|
+
{"version":3,"file":"device.js","names":[],"sources":["../../src/providers/device.ts"],"sourcesContent":["/**\n * Device authorization provider (RFC 8628).\n *\n * Enables input-constrained devices (CLIs, TVs, IoT) to authenticate\n * by displaying a short code that the user enters on a secondary device.\n *\n * ```ts\n * import { Device } from \"@robelest/convex-auth/providers\";\n *\n * new Device()\n * ```\n *\n * @module\n */\n\nimport type { DeviceProviderConfig } from \"../server/types\";\n\n/**\n * Configuration for the Device authorization provider.\n */\nexport interface DeviceConfig {\n /**\n * User code character set.\n * Default: `\"BCDFGHJKLMNPQRSTVWXZ\"` (base-20, no vowels per RFC 8628 §6.1).\n */\n charset?: string;\n /** User code length (before formatting). Default: 8. */\n userCodeLength?: number;\n /** Device code + user code lifetime in seconds. Default: 900 (15 min). */\n expiresIn?: number;\n /** Minimum polling interval in seconds. Default: 5. */\n interval?: number;\n /**\n * Base URL for the verification page where users enter the device code.\n *\n * Example: `\"http://localhost:3000/device\"` or `\"https://myapp.com/device\"`.\n *\n * If not provided, falls back to `SITE_URL + \"/device\"`.\n */\n verificationUri?: string;\n}\n\n/** No-vowel base-20 charset per RFC 8628 §6.1 recommendation. */\nconst DEFAULT_CHARSET = \"BCDFGHJKLMNPQRSTVWXZ\";\n\n/**\n * Device authorization provider (RFC 8628).\n *\n * Enables input-constrained devices (CLIs, TVs, IoT) to authenticate\n * by displaying a short user code. The user visits a verification page\n * on a secondary device, signs in with any existing provider, and\n * enters the code to authorize the device.\n *\n * @example\n * ```ts\n * import { createAuth } from \"@robelest/convex-auth/component\";\n * import { Device } from \"@robelest/convex-auth/providers\";\n * import { components } from \"./_generated/api\";\n *\n * const auth = createAuth(components.auth, {\n * providers: [new Device()],\n * });\n * ```\n */\nexport class Device {\n readonly id: string;\n readonly type = \"device\" as const;\n readonly config: DeviceConfig;\n\n constructor(config: DeviceConfig = {}) {\n this.id = \"device\";\n this.config = config;\n }\n\n /** @internal Convert to the internal materialized config shape. */\n _toMaterialized(): DeviceProviderConfig {\n return {\n id: this.id,\n type: \"device\",\n charset: this.config.charset ?? DEFAULT_CHARSET,\n userCodeLength: this.config.userCodeLength ?? 8,\n expiresIn: this.config.expiresIn ?? 900,\n interval: this.config.interval ?? 5,\n verificationUri: this.config.verificationUri,\n };\n }\n}\n"],"mappings":";;AA2CA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;AAqBxB,IAAa,SAAb,MAAoB;CAClB,AAAS;CACT,AAAS,OAAO;CAChB,AAAS;CAET,YAAY,SAAuB,EAAE,EAAE;AACrC,OAAK,KAAK;AACV,OAAK,SAAS;;;CAIhB,kBAAwC;AACtC,SAAO;GACL,IAAI,KAAK;GACT,MAAM;GACN,SAAS,KAAK,OAAO,WAAW;GAChC,gBAAgB,KAAK,OAAO,kBAAkB;GAC9C,WAAW,KAAK,OAAO,aAAa;GACpC,UAAU,KAAK,OAAO,YAAY;GAClC,iBAAiB,KAAK,OAAO;GAC9B"}
|
|
@@ -1,35 +1,62 @@
|
|
|
1
|
-
import { EmailConfig, EmailUserConfig } from "../server/types.js";
|
|
2
|
-
import { GenericDataModel } from "convex/server";
|
|
3
|
-
|
|
4
1
|
//#region src/providers/email.d.ts
|
|
5
2
|
/**
|
|
6
|
-
* Email
|
|
7
|
-
* for sign-in.
|
|
3
|
+
* Email (magic link / OTP) authentication provider.
|
|
8
4
|
*
|
|
9
|
-
*
|
|
10
|
-
|
|
11
|
-
|
|
5
|
+
* @module
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* User-facing configuration for the {@link Email} provider.
|
|
12
9
|
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
10
|
+
* Use this to wire your email delivery service into Convex Auth's magic-link
|
|
11
|
+
* or OTP flow.
|
|
12
|
+
*/
|
|
13
|
+
interface EmailProviderConfig {
|
|
14
|
+
/** Sender address (e.g. "My App <noreply@example.com>"). */
|
|
15
|
+
from: string;
|
|
16
|
+
/** Send the verification email. Receives the Convex action context. */
|
|
17
|
+
send: (ctx: any, opts: {
|
|
18
|
+
from: string;
|
|
19
|
+
to: string;
|
|
20
|
+
subject: string;
|
|
21
|
+
html: string;
|
|
22
|
+
}) => Promise<void>;
|
|
23
|
+
/** Override to generate a custom verification token. */
|
|
24
|
+
generateVerificationToken?: () => Promise<string>;
|
|
25
|
+
/** Provider ID override. Defaults to "email". */
|
|
26
|
+
id?: string;
|
|
27
|
+
/** Token expiration in seconds. Defaults to 86400 (24 hours). */
|
|
28
|
+
maxAge?: number;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Email provider for magic-link or one-time-code sign-in.
|
|
15
32
|
*
|
|
33
|
+
* Sends verification emails through your `send()` implementation and converts
|
|
34
|
+
* the result into Convex Auth's internal email-provider runtime shape.
|
|
35
|
+
*
|
|
36
|
+
* @example
|
|
16
37
|
* ```ts
|
|
17
|
-
* import
|
|
18
|
-
* import { Auth } from "@robelest/convex-auth/component";
|
|
38
|
+
* import { Email } from "@robelest/convex-auth/providers";
|
|
19
39
|
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
40
|
+
* const email = new Email({
|
|
41
|
+
* from: "My App <noreply@example.com>",
|
|
42
|
+
* send: async (_ctx, { to, subject, html }) => {
|
|
43
|
+
* await resend.emails.send({ from: "noreply@example.com", to, subject, html });
|
|
44
|
+
* },
|
|
24
45
|
* });
|
|
25
46
|
* ```
|
|
26
|
-
*
|
|
27
|
-
* Make sure the token has high enough entropy to be secure.
|
|
28
|
-
*
|
|
29
|
-
* @param config - Email provider options including `sendVerificationRequest`.
|
|
30
|
-
* @returns An `EmailConfig` to include in your `providers` array.
|
|
31
47
|
*/
|
|
32
|
-
declare
|
|
48
|
+
declare class Email {
|
|
49
|
+
readonly config: EmailProviderConfig;
|
|
50
|
+
readonly id: string;
|
|
51
|
+
readonly type: "email";
|
|
52
|
+
/**
|
|
53
|
+
* Create an email provider instance.
|
|
54
|
+
*
|
|
55
|
+
* @param config - Email transport and provider settings.
|
|
56
|
+
* @throws {Error} When `config.from` is empty or whitespace-only.
|
|
57
|
+
*/
|
|
58
|
+
constructor(config: EmailProviderConfig);
|
|
59
|
+
}
|
|
33
60
|
//#endregion
|
|
34
|
-
export {
|
|
61
|
+
export { Email, EmailProviderConfig };
|
|
35
62
|
//# sourceMappingURL=email.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"email.d.ts","names":[],"sources":["../../src/providers/email.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"email.d.ts","names":[],"sources":["../../src/providers/email.ts"],"mappings":";;AAeA;;;;;;;;;;UAAiB,mBAAA;EAMb;EAJF,IAAA;EAOA;EALA,IAAA,GACE,GAAA,OACA,IAAA;IAAQ,IAAA;IAAc,EAAA;IAAY,OAAA;IAAiB,IAAA;EAAA,MAChD,OAAA;EA2BW;EAzBhB,yBAAA,SAAkC,OAAA;EAmCqB;EAjCvD,EAAA;EAiCoC;EA/BpC,MAAA;AAAA;;;;;;;;;;;;;;;;;;;cAqBW,KAAA;EAAA,SAUiB,MAAA,EAAQ,mBAAA;EAAA,SAT3B,EAAA;EAAA,SACA,IAAA;;;;;;;cAQmB,MAAA,EAAQ,mBAAA;AAAA"}
|