{"version":3,"sources":["../../src/auth/types.ts"],"sourcesContent":["import type { Principal } from '../core';\nimport type { OAuth2ClientConfig, OAuth2Token, UserInfo } from '../oauth2/types';\nimport type { KVRepository, Session, SessionRepository } from '../session/types';\nimport type { CookieOptions } from '../utils/http';\n\nexport type LoggedHandler = (principal: Principal) => Promise<void>;\nexport type AuthorizedHandler = (\n  request: Request,\n  registrationId: string,\n  userInfo: UserInfo,\n  token?: OAuth2Token\n) => Promise<Principal>;\n\nexport interface AuthConfig {\n  timing?: boolean;\n  kvRepository: KVRepository;\n  sessionRepository: SessionRepository;\n  cookie?: CookieOptions & { name?: string };\n  turnstileSecretKey?: string;\n  oauth2?: {\n    client?: OAuth2ClientConfig;\n  };\n}\n\nexport interface AuthService {\n  // basic\n  csrf: (request: Request) => Promise<Response>;\n  logout: (request: Request) => Promise<Response>;\n  logged: (request: Request, onLogged?: LoggedHandler) => Promise<Response>;\n\n  // oauth2\n  oauth2State: (request: Request) => Promise<Response>;\n  oauth2Nonce: (request: Request) => Promise<Response>;\n  oauth2Authorization: (request: Request) => Promise<Response>;\n  loginOAuth2Code: (request: Request, onAuthorized: AuthorizedHandler) => Promise<Response>;\n  loginOAuth2Native: (request: Request, onAuthorized: AuthorizedHandler) => Promise<Response>;\n  loginOAuth2Onetap: (\n    request: Request,\n    onAuthorized: AuthorizedHandler,\n    registrationId?: string\n  ) => Promise<Response>;\n\n  // email & phone\n  sendEmailVerificationCode: (\n    request: Request,\n    sender: (data: { email: string; verificationCode: string }) => Promise<void>\n  ) => Promise<Response>;\n  sendPhoneVerificationCode: (\n    request: Request,\n    sender: (data: { phone: string; verificationCode: string }) => Promise<void>\n  ) => Promise<Response>;\n\n  loginEmail: (request: Request, onAuthorized: AuthorizedHandler) => Promise<Response>;\n  loginPhone: (request: Request, onAuthorized: AuthorizedHandler) => Promise<Response>;\n\n  // session management\n  kick: (principal: Principal) => Promise<void>;\n  isAuthenticated: (request: Request) => Promise<boolean>;\n  getSession: <T extends boolean>(\n    request: Request,\n    create: T\n  ) => Promise<T extends true ? Session : Session | null>;\n  deleteSession: (sessionId: string) => Promise<void>;\n  getPrincipal: (request: Request) => Promise<Principal | null>;\n  listSessions: (principal: Principal) => Promise<Session[]>;\n  cleanupExpiredSessions: (cleanupCount?: number) => Promise<Response>;\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}