UNPKG

userdo

Version:

A Durable Object base class for building applications on Cloudflare Workers.

89 lines (88 loc) 3.21 kB
export type JwtPayload = { sub: string; email?: string; exp?: number; iat?: number; type?: string; }; /** * Simple JWT decoding without verification * @param token - JWT token to decode * @returns Decoded payload or null if invalid */ export declare function decodeJWT(token: string): JwtPayload | null; /** * JWT verification with secret - extracted from UserDO implementation * @param token - JWT token to verify * @param secret - JWT secret for verification * @returns Verification result with payload if valid */ export declare function verifyJWT(token: string, secret: string): Promise<{ ok: boolean; payload?: JwtPayload; error?: string; }>; /** * Hash email for ID generation - matches UserDO internal implementation * @param email - Email to hash * @returns Promise resolving to hex hash string */ export declare function hashEmailForId(email: string): Promise<string>; /** * Check if token is expired * @param payload - JWT payload * @returns true if token is expired */ export declare function isTokenExpired(payload: JwtPayload): boolean; /** * Extract email from token * @param token - JWT token * @returns Email string or null if not found */ export declare function getEmailFromToken(token: string): string | null; /** * Sign a JWT token with the given payload and secret * @param payload - JWT payload * @param secret - JWT secret * @returns Promise resolving to signed token */ export declare function signJWT(payload: JwtPayload, secret: string): Promise<string>; /** * Generate a UserDO-compatible access token * @param userId - User ID * @param email - User email * @param secret - JWT secret * @param expiresInMinutes - Token expiration in minutes (default: 15) * @returns Promise resolving to signed access token */ export declare function generateAccessToken(userId: string, email: string, secret: string, expiresInMinutes?: number): Promise<string>; /** * Generate a UserDO-compatible refresh token * @param userId - User ID * @param secret - JWT secret * @param expiresInDays - Token expiration in days (default: 7) * @returns Promise resolving to signed refresh token */ export declare function generateRefreshToken(userId: string, secret: string, expiresInDays?: number): Promise<string>; /** * Verify tokens with automatic refresh - decodes email from expired access token * @param token - Current access token (may be expired) * @param refreshToken - Refresh token (optional) * @param secret - JWT secret * @returns Verification result with payload and new token if refreshed */ export declare function verifyTokens(token: string, refreshToken: string | undefined, secret: string): Promise<{ ok: boolean; payload?: JwtPayload; newToken?: string; error?: string; }>; /** * Generate a UserDO-compatible password reset token * @param userId - User ID * @param email - User email * @param secret - JWT secret * @param expiresInMinutes - Token expiration in minutes (default: 60) * @returns Promise resolving to signed password reset token */ export declare function generatePasswordResetToken(userId: string, email: string, secret: string, expiresInMinutes?: number): Promise<string>;