@kitstack/nest-powertools
Version:
A comprehensive collection of NestJS powertools, decorators, and utilities to supercharge your backend development
77 lines (76 loc) • 1.84 kB
TypeScript
import type { ExecutionContext } from '@nestjs/common';
export declare enum DefaultRoles {
ADMIN = "admin",
USER = "user",
MODERATOR = "moderator",
GUEST = "guest"
}
export declare enum SortOrder {
ASC = "ASC",
DESC = "DESC"
}
export declare enum ResponseStatus {
SUCCESS = "success",
ERROR = "error",
WARNING = "warning"
}
export declare enum LogLevel {
ERROR = "error",
WARN = "warn",
INFO = "info",
DEBUG = "debug"
}
export interface CustomAuthGuard {
canActivate(context: ExecutionContext, user: any, requiredPermissions?: string[]): boolean | Promise<boolean>;
}
export interface AuthConfig {
guard?: CustomAuthGuard;
roles?: string[] | DefaultRoles[];
permissions?: string[];
customValidator?: (user: any, context: ExecutionContext) => boolean | Promise<boolean>;
}
export interface GuardRegistry {
[key: string]: CustomAuthGuard;
}
export interface PaginationQuery {
page?: number;
limit?: number;
sortBy?: string;
sortOrder?: SortOrder;
}
export interface PaginatedResponse<T> {
data: T[];
total: number;
page: number;
limit: number;
totalPages: number;
}
export interface CacheOptions {
ttl?: number;
key?: string;
}
export interface ValidationOptions {
transform?: boolean;
whitelist?: boolean;
forbidNonWhitelisted?: boolean;
}
export interface RateLimitOptions {
windowMs?: number;
max?: number;
message?: string;
strategy?: 'delay' | 'reject';
delayAfter?: number;
delayMs?: number;
maxDelayMs?: number;
delayMultiplier?: number;
enableLogging?: boolean;
}
export interface LoggingOptions {
includeBody?: boolean;
includeHeaders?: boolean;
excludeFields?: string[];
}
export interface ApiResponseConfig {
status: number;
description: string;
}