UNPKG

recoder-code

Version:

🚀 AI-powered development platform - Chat with 32+ models, build projects, automate workflows. Free models included!

108 lines (107 loc) • 2.96 kB
/** * User Entity * Represents users who can publish and manage packages */ import { Package } from './Package'; import { Download } from './Download'; import { ApiKey } from './ApiKey'; export declare enum UserRole { USER = "user", MAINTAINER = "maintainer", ADMIN = "admin", MODERATOR = "moderator" } export declare enum UserStatus { ACTIVE = "active", SUSPENDED = "suspended", PENDING = "pending", BANNED = "banned" } export declare class User { id: string; username: string; email: string; full_name?: string; bio?: string; avatar_url?: string; website?: string; location?: string; timezone?: string; password_hash: string; npm_username?: string; npm_email?: string; role: UserRole; status: UserStatus; email_verified: boolean; is_active: boolean; github_username?: string; twitter_username?: string; preferences?: { email_notifications: boolean; weekly_digest: boolean; security_alerts: boolean; marketing_emails: boolean; theme: 'light' | 'dark' | 'auto'; language: string; }; permissions?: { can_publish: boolean; can_unpublish: boolean; can_deprecate: boolean; can_manage_teams: boolean; can_moderate: boolean; max_package_size: number; max_packages: number; }; stats?: { packages_published: number; total_downloads: number; followers: number; following: number; packages_maintained: number; }; organizations?: string[]; verification_token?: string; verification_expires?: Date; reset_token?: string; reset_expires?: Date; last_login?: Date; last_login_ip?: string; login_count: number; suspended_until?: Date; suspension_reason?: string; created_at: Date; updated_at: Date; packages: Package[]; downloads: Download[]; api_keys: ApiKey[]; get is_admin(): boolean; get is_moderator(): boolean; get is_maintainer(): boolean; get can_publish(): boolean; get can_manage(): boolean; get display_name(): string; get npm_display_name(): string; recordLogin(ip?: string): void; suspend(reason: string, until?: Date): void; unsuspend(): void; ban(reason: string): void; activate(): void; verifyEmail(): void; generateVerificationToken(): string; generateResetToken(): string; clearResetToken(): void; updateStats(statsUpdate: Partial<User['stats']>): void; addOrganization(org: string): void; removeOrganization(org: string): void; hasPermission(permission: keyof User['permissions']): boolean; canAccessPackage(pkg: Package): boolean; canModifyPackage(pkg: Package): boolean; getRateLimits(): { requests: number; window: number; }; toNpmFormat(): any; toPublicFormat(): any; toPrivateFormat(): any; }