@stacksjs/dtsx
Version:
A modern, fast .d.ts generation tool, powered by Bun.
101 lines (100 loc) • 3.6 kB
TypeScript
/**
* Validate that a path is safe and within the allowed root directory
*/
export declare function validatePath(filePath: string, config?: SecurityConfig): string;
/**
* Validate multiple paths
*/
export declare function validatePaths(filePaths: string[], config?: SecurityConfig): string[];
/**
* Check if a path matches any blocked pattern
*/
export declare function isBlockedPath(filePath: string, config?: SecurityConfig): boolean;
/**
* Validate file size
*/
export declare function validateFileSize(filePath: string, config?: SecurityConfig): Promise<number>;
/**
* Check if path is a symbolic link
*/
export declare function isSymlink(filePath: string): Promise<boolean>;
/**
* Validate that a path is not a symlink (or follow it if allowed)
*/
export declare function validateSymlink(filePath: string, config?: SecurityConfig): Promise<string>;
/**
* Full path validation including all security checks
*/
export declare function validateFilePath(filePath: string, config?: SecurityConfig): Promise<{ path: string, size: number }>;
/**
* Validate a batch of files with total size limit
*/
export declare function validateFileBatch(filePaths: string[], config?: SecurityConfig): Promise<{ paths: string[], totalSize: number }>;
/**
* Create a timeout wrapper for async operations
*/
export declare function withTimeout<T>(promise: Promise<T>, timeoutMs: number, operation?: string): Promise<T>;
/**
* Create a secure file processor with all protections
*/
export declare function createSecureProcessor<T>(processor: (filePath: string) => Promise<T>, config?: SecurityConfig): (filePath: string) => Promise<T>;
/**
* Create a secure batch processor
*/
export declare function createSecureBatchProcessor<T>(processor: (filePaths: string[]) => Promise<T>, config?: SecurityConfig): (filePaths: string[]) => Promise<T>;
/**
* Sanitize a filename to prevent path traversal
*/
export declare function sanitizeFilename(filename: string): string;
/**
* Check if a path is safe (doesn't contain traversal sequences)
*/
export declare function isSafePath(path: string): boolean;
/**
* Create security middleware for the generator
*/
export declare function createSecurityMiddleware(config?: SecurityConfig): {
validatePath: (filePath: string) => string
validatePaths: (filePaths: string[]) => string[]
validateFile: (filePath: string) => Promise<{ path: string, size: number }>
validateBatch: (filePaths: string[]) => Promise<{ paths: string[], totalSize: number }>
withTimeout: <T>(promise: Promise<T>, operation?: string) => Promise<T>
secureProcessor: <T>(processor: (filePath: string) => Promise<T>) => (filePath: string) => Promise<T>
isBlocked: (filePath: string) => boolean
getConfig: () => Required<SecurityConfig>
};
/**
* Default security configuration
*/
export declare const DEFAULT_SECURITY_CONFIG: Required<SecurityConfig>;
/**
* Security configuration options
*/
export declare interface SecurityConfig {
rootDir?: string
maxFileSize?: number
maxTotalSize?: number
timeout?: number
followSymlinks?: boolean
maxFiles?: number
blockedPatterns?: string[]
}
/**
* Security error codes
*/
export type SecurityErrorCode = | 'PATH_TRAVERSAL'
| 'FILE_TOO_LARGE'
| 'TOTAL_SIZE_EXCEEDED'
| 'TIMEOUT'
| 'SYMLINK_NOT_ALLOWED'
| 'MAX_FILES_EXCEEDED'
| 'BLOCKED_PATTERN'
| 'INVALID_PATH';
/**
* Security validation error
*/
export declare class SecurityError extends Error {
public readonly code: SecurityErrorCode;
public readonly path?: string;
constructor(message: string, code: SecurityErrorCode, path?: string);
}