UNPKG

prisma-zod-generator

Version:

Prisma 2+ generator to emit Zod schemas from your Prisma schema

140 lines (139 loc) 3.96 kB
/** * Concurrency Control Utilities * * Provides mutex, semaphore, and atomic operation utilities * to prevent race conditions in PZG Pro */ export interface MutexLock { release(): void; } /** * Simple mutex implementation for async operations */ export declare class Mutex { private locked; private waitQueue; acquire(): Promise<MutexLock>; private createLock; isLocked(): boolean; } /** * Semaphore for limiting concurrent operations */ export declare class Semaphore { private permits; private waitQueue; constructor(permits: number); acquire(): Promise<() => void>; private release; available(): number; } /** * Read-Write lock for concurrent read access */ export declare class ReadWriteLock { private readers; private writers; private readWaitQueue; private writeWaitQueue; acquireRead(): Promise<() => void>; acquireWrite(): Promise<() => void>; private releaseRead; private releaseWrite; } /** * Atomic counter for safe increment/decrement operations */ export declare class AtomicCounter { private value; private mutex; increment(): Promise<number>; decrement(): Promise<number>; get(): Promise<number>; set(newValue: number): Promise<void>; compareAndSwap(expected: number, newValue: number): Promise<boolean>; } /** * Thread-safe Map implementation */ export declare class ConcurrentMap<K, V> { private map; private rwLock; get(key: K): Promise<V | undefined>; set(key: K, value: V): Promise<void>; delete(key: K): Promise<boolean>; has(key: K): Promise<boolean>; size(): Promise<number>; keys(): Promise<K[]>; values(): Promise<V[]>; entries(): Promise<[K, V][]>; clear(): Promise<void>; forEach(callback: (value: V, key: K) => void): Promise<void>; /** * Atomic update operation - ensures consistency */ update(key: K, updater: (current: V | undefined) => V): Promise<V>; /** * Atomic upsert operation */ upsert(key: K, initial: V, updater: (current: V) => V): Promise<V>; } /** * Thread-safe Array implementation */ export declare class ConcurrentArray<T> { private array; private mutex; push(...items: T[]): Promise<number>; pop(): Promise<T | undefined>; shift(): Promise<T | undefined>; unshift(...items: T[]): Promise<number>; length(): Promise<number>; get(index: number): Promise<T | undefined>; set(index: number, value: T): Promise<void>; slice(start?: number, end?: number): Promise<T[]>; filter(predicate: (value: T, index: number) => boolean): Promise<T[]>; forEach(callback: (value: T, index: number) => void): Promise<void>; clear(): Promise<void>; /** * Atomic batch operation */ batch<R>(operation: (array: T[]) => R): Promise<R>; } /** * Debounce utility for preventing rapid successive calls */ export declare function debounce<T extends (...args: any[]) => any>(fn: T, delay: number): (...args: Parameters<T>) => Promise<ReturnType<T>>; /** * Circuit breaker pattern for fault tolerance */ export declare class CircuitBreaker { private threshold; private timeout; private monitoringPeriod; private state; private failureCount; private nextAttempt; private successCount; constructor(threshold?: number, timeout?: number, monitoringPeriod?: number); execute<T>(operation: () => Promise<T>): Promise<T>; private onSuccess; private onFailure; getState(): string; reset(): void; } /** * Rate limiter for controlling request frequency */ export declare class RateLimiter { private capacity; private refillRate; private refillPeriod; private tokens; private lastRefill; constructor(capacity: number, refillRate: number, // tokens per second refillPeriod?: number); acquire(tokensRequested?: number): Promise<boolean>; private refill; available(): number; }