{"version":3,"sources":["../src/index.ts"],"sourcesContent":["// ── Types ──\n\nexport interface AuthonUser {\n  id: string;\n  projectId: string;\n  email: string | null;\n  displayName: string | null;\n  avatarUrl: string | null;\n  phone: string | null;\n  emailVerified: boolean;\n  phoneVerified: boolean;\n  isBanned: boolean;\n  publicMetadata: Record<string, unknown> | null;\n  lastSignInAt: string | null;\n  signInCount: number;\n  createdAt: string;\n  updatedAt: string;\n}\n\nexport interface AuthonSession {\n  id: string;\n  userId: string;\n  ipAddress: string | null;\n  userAgent: string | null;\n  deviceName: string | null;\n  lastActiveAt: string | null;\n  createdAt: string;\n  expiresAt: string;\n}\n\nexport interface AuthonProvider {\n  provider: string;\n  enabled: boolean;\n  sortOrder: number;\n  configured: boolean;\n}\n\nexport interface BrandingConfig {\n  logoDataUrl?: string;\n  brandName?: string;\n  primaryColorStart?: string;\n  primaryColorEnd?: string;\n  lightBg?: string;\n  lightText?: string;\n  darkBg?: string;\n  darkText?: string;\n  borderRadius?: number;\n  providerOrder?: string[];\n  hiddenProviders?: string[];\n  showEmailPassword?: boolean;\n  showDivider?: boolean;\n  termsUrl?: string;\n  privacyUrl?: string;\n  customCss?: string;\n  locale?: string;\n  showSecuredBy?: boolean;\n  showWeb3?: boolean;\n  showPasswordless?: boolean;\n  showPasskey?: boolean;\n  passwordlessMethod?: 'magic_link' | 'email_otp' | 'both';\n}\n\nexport interface SessionConfig {\n  accessTokenTtl?: number;\n  refreshTokenTtl?: number;\n  maxSessions?: number;\n  singleSession?: boolean;\n}\n\nexport interface AuthTokens {\n  accessToken: string;\n  refreshToken: string;\n  expiresIn: number;\n  user: AuthonUser;\n}\n\nexport interface AuthTokenRefreshResponse extends AuthTokens {\n  /** The replacement provider session created by refresh-token rotation. */\n  sessionId: string;\n}\n\nexport interface AuthorizationCodeOptions {\n  responseType: 'code';\n  redirectUri: string;\n  codeChallenge: string;\n  codeChallengeMethod: 'S256';\n  state: string;\n}\n\nexport interface AuthorizationCodeResult {\n  authorizationCode: string;\n  state: string;\n  expiresIn: number;\n}\n\nexport interface AuthorizationCodeExchangeRequest {\n  grantType: 'authorization_code';\n  code: string;\n  codeVerifier: string;\n  redirectUri: string;\n}\n\nexport interface AuthorizationCodeExchangeResponse extends AuthTokenRefreshResponse {}\n\nexport interface WebhookEvent {\n  id: string;\n  type: string;\n  projectId: string;\n  timestamp: string;\n  data: Record<string, unknown>;\n}\n\n// ── MFA Types ──\n\nexport interface MfaSetupResponse {\n  secret: string;\n  qrCodeUri: string;\n  backupCodes: string[];\n}\n\nexport interface MfaStatus {\n  enabled: boolean;\n  backupCodesRemaining: number;\n}\n\nexport interface MfaVerifyResponse {\n  accessToken: string;\n  refreshToken: string;\n  expiresIn: number;\n  user: AuthonUser;\n}\n\n// ── Passwordless Types ──\n\nexport interface PasswordlessResult {\n  message: string;\n}\n\n// ── Passkey Types ──\n\nexport interface PasskeyCredential {\n  id: string;\n  name: string | null;\n  createdAt: string;\n  lastUsedAt: string | null;\n}\n\n// ── Web3 Types ──\n\nexport type Web3Chain = 'evm' | 'solana';\nexport type Web3WalletType =\n  | 'metamask'\n  | 'pexus'\n  | 'walletconnect'\n  | 'coinbase'\n  | 'phantom'\n  | 'trust'\n  | 'other';\n\nexport interface Web3Wallet {\n  id: string;\n  address: string;\n  chain: Web3Chain;\n  walletType: Web3WalletType;\n  chainId: number | null;\n  createdAt: string;\n}\n\nexport interface Web3NonceResponse {\n  message: string;\n  nonce: string;\n}\n\n// ── Session Types ──\n\nexport interface SessionInfo {\n  id: string;\n  ipAddress: string | null;\n  userAgent: string | null;\n  createdAt: string;\n  lastActiveAt: string | null;\n}\n\n// ── Organization Types ──\n\nexport interface AuthonOrganization {\n  id: string;\n  projectId: string;\n  name: string;\n  slug: string;\n  logoUrl: string | null;\n  metadata: Record<string, any> | null;\n  maxMembers: number;\n  createdBy: string;\n  createdAt: string;\n  updatedAt: string;\n}\n\nexport interface OrganizationMember {\n  id: string;\n  organizationId: string;\n  userId: string;\n  role: 'owner' | 'admin' | 'member';\n  joinedAt: string;\n  createdAt: string;\n}\n\nexport interface OrganizationInvitation {\n  id: string;\n  organizationId: string;\n  email: string;\n  role: string;\n  status: 'pending' | 'accepted' | 'rejected' | 'expired';\n  invitedBy: string;\n  expiresAt: string;\n  createdAt: string;\n}\n\nexport interface CreateOrganizationParams {\n  name: string;\n  slug?: string;\n  logoUrl?: string;\n  metadata?: Record<string, any>;\n  maxMembers?: number;\n}\n\nexport interface UpdateOrganizationParams {\n  name?: string;\n  slug?: string;\n  logoUrl?: string;\n  metadata?: Record<string, any>;\n  maxMembers?: number;\n}\n\nexport interface InviteMemberParams {\n  email: string;\n  role?: 'admin' | 'member';\n}\n\nexport interface OrganizationListResponse {\n  data: AuthonOrganization[];\n  total: number;\n  page: number;\n  limit: number;\n}\n\n// ── Audit Log Types ──\n\nexport interface AuditLogEntry {\n  id: string;\n  projectId: string;\n  actorType: 'user' | 'admin' | 'system' | 'api_key';\n  actorId: string | null;\n  event: string;\n  targetType: string | null;\n  targetId: string | null;\n  metadata: Record<string, any> | null;\n  ipAddress: string | null;\n  userAgent: string | null;\n  createdAt: string;\n}\n\nexport interface AuditLogQueryParams {\n  event?: string;\n  actorId?: string;\n  targetId?: string;\n  dateFrom?: string;\n  dateTo?: string;\n  page?: number;\n  limit?: number;\n}\n\nexport interface AuditLogListResponse {\n  data: AuditLogEntry[];\n  total: number;\n  page: number;\n  limit: number;\n}\n\nexport interface AuditLogStats {\n  [eventType: string]: number;\n}\n\n// ── JWT Template Types ──\n\nexport interface JwtClaimMapping {\n  key: string;\n  source?: string;\n  value?: string;\n}\n\nexport interface JwtTemplate {\n  id: string;\n  projectId: string;\n  name: string;\n  isDefault: boolean;\n  claims: JwtClaimMapping[];\n  allowedLifetime: number | null;\n  createdAt: string;\n  updatedAt: string;\n}\n\nexport interface CreateJwtTemplateParams {\n  name: string;\n  claims: JwtClaimMapping[];\n  allowedLifetime?: number;\n}\n\nexport interface UpdateJwtTemplateParams {\n  name?: string;\n  claims?: JwtClaimMapping[];\n  allowedLifetime?: number | null;\n}\n\nexport interface JwtPreviewResponse {\n  token: string;\n  decoded: Record<string, any>;\n}\n\n// ── Constants ──\n\nexport const OAUTH_PROVIDERS = [\n  'google',\n  'apple',\n  'kakao',\n  'naver',\n  'facebook',\n  'github',\n  'discord',\n  'x',\n  'line',\n  'microsoft',\n] as const;\n\nexport type OAuthProviderType = (typeof OAUTH_PROVIDERS)[number];\n\nexport const PROVIDER_DISPLAY_NAMES: Record<OAuthProviderType, string> = {\n  google: 'Google',\n  apple: 'Apple',\n  kakao: 'Kakao',\n  naver: 'Naver',\n  facebook: 'Facebook',\n  github: 'GitHub',\n  discord: 'Discord',\n  x: 'X',\n  line: 'LINE',\n  microsoft: 'Microsoft',\n};\n\nexport const PROVIDER_COLORS: Record<OAuthProviderType, { bg: string; text: string }> = {\n  google: { bg: '#ffffff', text: '#1f1f1f' },\n  apple: { bg: '#000000', text: '#ffffff' },\n  kakao: { bg: '#FEE500', text: '#191919' },\n  naver: { bg: '#03C75A', text: '#ffffff' },\n  facebook: { bg: '#1877F2', text: '#ffffff' },\n  github: { bg: '#24292e', text: '#ffffff' },\n  discord: { bg: '#5865F2', text: '#ffffff' },\n  x: { bg: '#000000', text: '#ffffff' },\n  line: { bg: '#06C755', text: '#ffffff' },\n  microsoft: { bg: '#ffffff', text: '#1f1f1f' },\n};\n\nexport const WEBHOOK_EVENTS = [\n  'user.created',\n  'user.updated',\n  'user.deleted',\n  'user.banned',\n  'user.unbanned',\n  'session.created',\n  'session.rotated',\n  'session.ended',\n  'session.revoked',\n  'provider.linked',\n  'provider.unlinked',\n] as const;\n\nexport type WebhookEventType = (typeof WEBHOOK_EVENTS)[number];\n\nexport const API_KEY_PREFIXES = {\n  PUBLISHABLE_LIVE: 'pk_live_',\n  PUBLISHABLE_TEST: 'pk_test_',\n  SECRET_LIVE: 'sk_live_',\n  SECRET_TEST: 'sk_test_',\n} as const;\n\nexport const DEFAULT_BRANDING: BrandingConfig = {\n  primaryColorStart: '#7c3aed',\n  primaryColorEnd: '#4f46e5',\n  lightBg: '#ffffff',\n  lightText: '#111827',\n  darkBg: '#0f172a',\n  darkText: '#f1f5f9',\n  borderRadius: 12,\n  showEmailPassword: true,\n  showDivider: true,\n  showSecuredBy: true,\n  locale: 'en',\n};\n\nexport const DEFAULT_SESSION_CONFIG: SessionConfig = {\n  accessTokenTtl: 900,\n  refreshTokenTtl: 604800,\n  maxSessions: 5,\n  singleSession: false,\n};\n\nexport const AUDIT_EVENTS = {\n  AUTH_SIGNUP: 'auth.signup',\n  AUTH_SIGNIN: 'auth.signin',\n  AUTH_SIGNIN_FAILED: 'auth.signin.failed',\n  AUTH_SIGNOUT: 'auth.signout',\n  AUTH_TOKEN_REFRESH: 'auth.token.refresh',\n  AUTH_MFA_SETUP: 'auth.mfa.setup',\n  AUTH_MFA_VERIFY: 'auth.mfa.verify',\n  AUTH_PASSKEY_REGISTER: 'auth.passkey.register',\n  AUTH_WEB3_VERIFY: 'auth.web3.verify',\n  ADMIN_USER_BANNED: 'admin.user.banned',\n  ADMIN_USER_UNBANNED: 'admin.user.unbanned',\n  ADMIN_USER_DELETED: 'admin.user.deleted',\n  ORG_CREATED: 'org.created',\n  ORG_DELETED: 'org.deleted',\n  ORG_MEMBER_ADDED: 'org.member.added',\n  ORG_MEMBER_REMOVED: 'org.member.removed',\n  ORG_MEMBER_ROLE_CHANGED: 'org.member.role_changed',\n  ORG_INVITATION_SENT: 'org.invitation.sent',\n  ORG_INVITATION_ACCEPTED: 'org.invitation.accepted',\n} as const;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAiUO,IAAM,kBAAkB;AAAA,EAC7B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,IAAM,yBAA4D;AAAA,EACvE,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,OAAO;AAAA,EACP,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,SAAS;AAAA,EACT,GAAG;AAAA,EACH,MAAM;AAAA,EACN,WAAW;AACb;AAEO,IAAM,kBAA2E;AAAA,EACtF,QAAQ,EAAE,IAAI,WAAW,MAAM,UAAU;AAAA,EACzC,OAAO,EAAE,IAAI,WAAW,MAAM,UAAU;AAAA,EACxC,OAAO,EAAE,IAAI,WAAW,MAAM,UAAU;AAAA,EACxC,OAAO,EAAE,IAAI,WAAW,MAAM,UAAU;AAAA,EACxC,UAAU,EAAE,IAAI,WAAW,MAAM,UAAU;AAAA,EAC3C,QAAQ,EAAE,IAAI,WAAW,MAAM,UAAU;AAAA,EACzC,SAAS,EAAE,IAAI,WAAW,MAAM,UAAU;AAAA,EAC1C,GAAG,EAAE,IAAI,WAAW,MAAM,UAAU;AAAA,EACpC,MAAM,EAAE,IAAI,WAAW,MAAM,UAAU;AAAA,EACvC,WAAW,EAAE,IAAI,WAAW,MAAM,UAAU;AAC9C;AAEO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAIO,IAAM,mBAAmB;AAAA,EAC9B,kBAAkB;AAAA,EAClB,kBAAkB;AAAA,EAClB,aAAa;AAAA,EACb,aAAa;AACf;AAEO,IAAM,mBAAmC;AAAA,EAC9C,mBAAmB;AAAA,EACnB,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,WAAW;AAAA,EACX,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,cAAc;AAAA,EACd,mBAAmB;AAAA,EACnB,aAAa;AAAA,EACb,eAAe;AAAA,EACf,QAAQ;AACV;AAEO,IAAM,yBAAwC;AAAA,EACnD,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,aAAa;AAAA,EACb,eAAe;AACjB;AAEO,IAAM,eAAe;AAAA,EAC1B,aAAa;AAAA,EACb,aAAa;AAAA,EACb,oBAAoB;AAAA,EACpB,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,gBAAgB;AAAA,EAChB,iBAAiB;AAAA,EACjB,uBAAuB;AAAA,EACvB,kBAAkB;AAAA,EAClB,mBAAmB;AAAA,EACnB,qBAAqB;AAAA,EACrB,oBAAoB;AAAA,EACpB,aAAa;AAAA,EACb,aAAa;AAAA,EACb,kBAAkB;AAAA,EAClB,oBAAoB;AAAA,EACpB,yBAAyB;AAAA,EACzB,qBAAqB;AAAA,EACrB,yBAAyB;AAC3B;","names":[]}