/*! * Copyright (C) Microsoft Corporation. All rights reserved. */ /** * Text encoding types supported by VFS operations * This mirrors Node.js BufferEncoding without requiring Node.js types */ export type VfsEncoding = 'ascii' | 'utf8' | 'utf-8' | 'utf16le' | 'ucs2' | 'ucs-2' | 'base64' | 'base64url' | 'latin1' | 'binary' | 'hex'; /** * Options for writing files */ export interface WriteFileOptions { /** Whether to create parent directories if they don't exist (default: true) */ createDirectories?: boolean; /** Text encoding to use (default: 'utf-8') */ encoding?: VfsEncoding; } /** * Configuration for VFS permissions */ export interface VfsConfig { /** Current working directory - base for relative paths */ cwd: string; /** Additional directories that can be read from */ additionalReadableDirectories?: string[]; /** Additional directories that can be written to */ additionalWritableDirectories?: string[]; /** Whether to allow reading from cwd (default: true) */ allowCwdRead?: boolean; /** Whether to allow writing to cwd (default: true) */ allowCwdWrite?: boolean; } /** * Core VFS interface for filesystem operations with permission control. This is an abstraction over the actual file system. A clone of what exists in PPUX */ export interface Vfs { readFile(path: string, encoding?: VfsEncoding): Promise; /** * Read a file as raw bytes without any encoding transformation. Use for binary assets * (fonts, images, wasm, etc.). Returns `Uint8Array` rather than Node's `Buffer` so the * interface stays runtime-agnostic; Node implementations may return a `Buffer` (a * `Uint8Array` subclass) and `fetch` accepts it directly as a request body. */ readFileBuffer(path: string): Promise; writeFile(path: string, content: string, options?: WriteFileOptions): Promise; readdir(path: string): Promise; mkdir(path: string, options?: { recursive?: boolean; }): Promise; exists(path: string): Promise; isDirectory(path: string): Promise; join(...paths: string[]): string; basename(path: string): string; dirname(path: string): string; getCwd(): string; unlink(path: string): Promise; rmdir(path: string): Promise; } export type ReadOnlyVfs = Pick; /** * File statistics interface */ export interface VfsFileStats { size: number; mtime: Date; ctime: Date; isFile(): boolean; isDirectory(): boolean; } //# sourceMappingURL=Vfs.types.d.ts.map