UNPKG

@clerk/shared

Version:

Internal package utils used by the Clerk SDKs

115 lines (114 loc) 3.79 kB
import { ClerkResource } from "./resource.mjs"; import { OAuthStrategy, Web3Strategy } from "./strategies.mjs"; import { PhoneCodeChannel } from "./phoneCodeChannel.mjs"; import { UserSettingsJSONSnapshot } from "./snapshots.mjs"; import { ClerkResourceJSON } from "./json.mjs"; //#region src/types/userSettings.d.ts type Attribute = 'email_address' | 'phone_number' | 'username' | 'first_name' | 'last_name' | 'password' | 'web3_wallet' | 'authenticator_app' | 'backup_code' | 'passkey'; type VerificationStrategy = 'email_link' | 'email_code' | 'phone_code' | 'totp' | 'backup_code'; type OAuthProviderSettings = { enabled: boolean; required: boolean; authenticatable: boolean; strategy: OAuthStrategy; name: string; logo_url: string | null; }; type AttributeDataJSON = { enabled: boolean; required: boolean; immutable?: boolean; verifications: VerificationStrategy[]; used_for_first_factor: boolean; first_factors: VerificationStrategy[]; used_for_second_factor: boolean; second_factors: VerificationStrategy[]; verify_at_sign_up: boolean; channels?: PhoneCodeChannel[]; }; type AttributeData = AttributeDataJSON & { name: Attribute; }; type SignInData = { second_factor: { required: boolean; enabled: boolean; }; }; type SignUpModes = 'public' | 'restricted' | 'waitlist'; type SignUpData = { allowlist_only: boolean; progressive: boolean; captcha_enabled: boolean; mode: SignUpModes; legal_consent_enabled: boolean; mfa?: { required: boolean; }; }; type PasswordSettingsData = { allowed_special_characters: string; disable_hibp: boolean; min_length: number; max_length: number; require_special_char: boolean; require_numbers: boolean; require_uppercase: boolean; require_lowercase: boolean; show_zxcvbn: boolean; min_zxcvbn_strength: number; }; type UsernameSettingsData = { min_length: number; max_length: number; }; type PasskeySettingsData = { allow_autofill: boolean; show_sign_in_button: boolean; }; type OAuthProviders = { [provider in OAuthStrategy]: OAuthProviderSettings }; type EnterpriseSSOSettings = { enabled: boolean; self_serve_sso: boolean; }; type AttributesJSON = { [attribute in Attribute]: AttributeDataJSON }; type Attributes = { [attribute in Attribute]: AttributeData }; type Actions = { delete_self: boolean; create_organization: boolean; }; interface UserSettingsJSON extends ClerkResourceJSON { id: never; object: never; attributes: AttributesJSON; actions: Actions; social: OAuthProviders; enterprise_sso: EnterpriseSSOSettings; sign_in: SignInData; sign_up: SignUpData; password_settings: PasswordSettingsData; passkey_settings: PasskeySettingsData; username_settings: UsernameSettingsData; } interface UserSettingsResource extends ClerkResource { id?: undefined; social: OAuthProviders; enterpriseSSO: EnterpriseSSOSettings; attributes: Attributes; actions: Actions; signIn: SignInData; signUp: SignUpData; passwordSettings: PasswordSettingsData; usernameSettings: UsernameSettingsData; passkeySettings: PasskeySettingsData; socialProviderStrategies: OAuthStrategy[]; authenticatableSocialStrategies: OAuthStrategy[]; web3FirstFactors: Web3Strategy[]; alternativePhoneCodeChannels: PhoneCodeChannel[]; enabledFirstFactorIdentifiers: Attribute[]; instanceIsPasswordBased: boolean; hasValidAuthFactor: boolean; __internal_toSnapshot: () => UserSettingsJSONSnapshot; } //#endregion export { Actions, Attribute, AttributeData, AttributeDataJSON, Attributes, AttributesJSON, EnterpriseSSOSettings, OAuthProviderSettings, OAuthProviders, PasskeySettingsData, PasswordSettingsData, SignInData, SignUpData, SignUpModes, UserSettingsJSON, UserSettingsResource, UsernameSettingsData, VerificationStrategy };