1declare namespace InternalFSBinding { 2 class FSReqCallback<ResultType = unknown> { 3 constructor(bigint?: boolean); 4 oncomplete: ((error: Error) => void) | ((error: null, result: ResultType) => void); 5 context: ReadFileContext; 6 } 7 8 interface ReadFileContext { 9 fd: number | undefined; 10 isUserFd: boolean | undefined; 11 size: number; 12 callback: (err?: Error, data?: string | Buffer) => unknown; 13 buffers: Buffer[]; 14 buffer: Buffer; 15 pos: number; 16 encoding: string; 17 err: Error | null; 18 signal: unknown /* AbortSignal | undefined */; 19 } 20 21 interface FSSyncContext { 22 fd?: number; 23 path?: string; 24 dest?: string; 25 errno?: string; 26 message?: string; 27 syscall?: string; 28 error?: Error; 29 } 30 31 type Buffer = Uint8Array; 32 type Stream = object; 33 type StringOrBuffer = string | Buffer; 34 35 const kUsePromises: unique symbol; 36 37 class FileHandle { 38 constructor(fd: number, offset: number, length: number); 39 fd: number; 40 getAsyncId(): number; 41 close(): Promise<void>; 42 onread: () => void; 43 stream: Stream; 44 } 45 46 class StatWatcher { 47 constructor(useBigint: boolean); 48 initialized: boolean; 49 start(path: string, interval: number): number; 50 getAsyncId(): number; 51 close(): void; 52 ref(): void; 53 unref(): void; 54 onchange: (status: number, eventType: string, filename: string | Buffer) => void; 55 } 56 57 function access(path: StringOrBuffer, mode: number, req: FSReqCallback): void; 58 function access(path: StringOrBuffer, mode: number, req: undefined, ctx: FSSyncContext): void; 59 function access(path: StringOrBuffer, mode: number, usePromises: typeof kUsePromises): Promise<void>; 60 61 function chmod(path: string, mode: number, req: FSReqCallback): void; 62 function chmod(path: string, mode: number, req: undefined, ctx: FSSyncContext): void; 63 function chmod(path: string, mode: number, usePromises: typeof kUsePromises): Promise<void>; 64 65 function chown(path: string, uid: number, gid: number, req: FSReqCallback): void; 66 function chown(path: string, uid: number, gid: number, req: undefined, ctx: FSSyncContext): void; 67 function chown(path: string, uid: number, gid: number, usePromises: typeof kUsePromises): Promise<void>; 68 69 function close(fd: number, req: FSReqCallback): void; 70 function close(fd: number, req: undefined, ctx: FSSyncContext): void; 71 72 function copyFile(src: StringOrBuffer, dest: StringOrBuffer, mode: number, req: FSReqCallback): void; 73 function copyFile(src: StringOrBuffer, dest: StringOrBuffer, mode: number, req: undefined, ctx: FSSyncContext): void; 74 function copyFile(src: StringOrBuffer, dest: StringOrBuffer, mode: number, usePromises: typeof kUsePromises): Promise<void>; 75 76 function fchmod(fd: number, mode: number, req: FSReqCallback): void; 77 function fchmod(fd: number, mode: number, req: undefined, ctx: FSSyncContext): void; 78 function fchmod(fd: number, mode: number, usePromises: typeof kUsePromises): Promise<void>; 79 80 function fchown(fd: number, uid: number, gid: number, req: FSReqCallback): void; 81 function fchown(fd: number, uid: number, gid: number, req: undefined, ctx: FSSyncContext): void; 82 function fchown(fd: number, uid: number, gid: number, usePromises: typeof kUsePromises): Promise<void>; 83 84 function fdatasync(fd: number, req: FSReqCallback): void; 85 function fdatasync(fd: number, req: undefined, ctx: FSSyncContext): void; 86 function fdatasync(fd: number, usePromises: typeof kUsePromises): Promise<void>; 87 88 function fstat(fd: number, useBigint: boolean, req: FSReqCallback<Float64Array | BigUint64Array>): void; 89 function fstat(fd: number, useBigint: true, req: FSReqCallback<BigUint64Array>): void; 90 function fstat(fd: number, useBigint: false, req: FSReqCallback<Float64Array>): void; 91 function fstat(fd: number, useBigint: boolean, req: undefined, ctx: FSSyncContext): Float64Array | BigUint64Array; 92 function fstat(fd: number, useBigint: true, req: undefined, ctx: FSSyncContext): BigUint64Array; 93 function fstat(fd: number, useBigint: false, req: undefined, ctx: FSSyncContext): Float64Array; 94 function fstat(fd: number, useBigint: boolean, usePromises: typeof kUsePromises): Promise<Float64Array | BigUint64Array>; 95 function fstat(fd: number, useBigint: true, usePromises: typeof kUsePromises): Promise<BigUint64Array>; 96 function fstat(fd: number, useBigint: false, usePromises: typeof kUsePromises): Promise<Float64Array>; 97 98 function fsync(fd: number, req: FSReqCallback): void; 99 function fsync(fd: number, req: undefined, ctx: FSSyncContext): void; 100 function fsync(fd: number, usePromises: typeof kUsePromises): Promise<void>; 101 102 function ftruncate(fd: number, len: number, req: FSReqCallback): void; 103 function ftruncate(fd: number, len: number, req: undefined, ctx: FSSyncContext): void; 104 function ftruncate(fd: number, len: number, usePromises: typeof kUsePromises): Promise<void>; 105 106 function futimes(fd: number, atime: number, mtime: number, req: FSReqCallback): void; 107 function futimes(fd: number, atime: number, mtime: number, req: undefined, ctx: FSSyncContext): void; 108 function futimes(fd: number, atime: number, mtime: number, usePromises: typeof kUsePromises): Promise<void>; 109 110 function internalModuleReadJSON(path: string): [] | [string, boolean]; 111 function internalModuleStat(path: string): number; 112 113 function lchown(path: string, uid: number, gid: number, req: FSReqCallback): void; 114 function lchown(path: string, uid: number, gid: number, req: undefined, ctx: FSSyncContext): void; 115 function lchown(path: string, uid: number, gid: number, usePromises: typeof kUsePromises): Promise<void>; 116 117 function link(existingPath: string, newPath: string, req: FSReqCallback): void; 118 function link(existingPath: string, newPath: string, req: undefined, ctx: FSSyncContext): void; 119 function link(existingPath: string, newPath: string, usePromises: typeof kUsePromises): Promise<void>; 120 121 function lstat(path: StringOrBuffer, useBigint: boolean, req: FSReqCallback<Float64Array | BigUint64Array>): void; 122 function lstat(path: StringOrBuffer, useBigint: true, req: FSReqCallback<BigUint64Array>): void; 123 function lstat(path: StringOrBuffer, useBigint: false, req: FSReqCallback<Float64Array>): void; 124 function lstat(path: StringOrBuffer, useBigint: boolean, req: undefined, ctx: FSSyncContext): Float64Array | BigUint64Array; 125 function lstat(path: StringOrBuffer, useBigint: true, req: undefined, ctx: FSSyncContext): BigUint64Array; 126 function lstat(path: StringOrBuffer, useBigint: false, req: undefined, ctx: FSSyncContext): Float64Array; 127 function lstat(path: StringOrBuffer, useBigint: boolean, usePromises: typeof kUsePromises): Promise<Float64Array | BigUint64Array>; 128 function lstat(path: StringOrBuffer, useBigint: true, usePromises: typeof kUsePromises): Promise<BigUint64Array>; 129 function lstat(path: StringOrBuffer, useBigint: false, usePromises: typeof kUsePromises): Promise<Float64Array>; 130 131 function lutimes(path: string, atime: number, mtime: number, req: FSReqCallback): void; 132 function lutimes(path: string, atime: number, mtime: number, req: undefined, ctx: FSSyncContext): void; 133 function lutimes(path: string, atime: number, mtime: number, usePromises: typeof kUsePromises): Promise<void>; 134 135 function mkdtemp(prefix: string, encoding: unknown, req: FSReqCallback<string>): void; 136 function mkdtemp(prefix: string, encoding: unknown, req: undefined, ctx: FSSyncContext): string; 137 function mkdtemp(prefix: string, encoding: unknown, usePromises: typeof kUsePromises): Promise<string>; 138 139 function mkdir(path: string, mode: number, recursive: boolean, req: FSReqCallback<void | string>): void; 140 function mkdir(path: string, mode: number, recursive: true, req: FSReqCallback<string>): void; 141 function mkdir(path: string, mode: number, recursive: false, req: FSReqCallback<void>): void; 142 function mkdir(path: string, mode: number, recursive: boolean, req: undefined, ctx: FSSyncContext): void | string; 143 function mkdir(path: string, mode: number, recursive: true, req: undefined, ctx: FSSyncContext): string; 144 function mkdir(path: string, mode: number, recursive: false, req: undefined, ctx: FSSyncContext): void; 145 function mkdir(path: string, mode: number, recursive: boolean, usePromises: typeof kUsePromises): Promise<void | string>; 146 function mkdir(path: string, mode: number, recursive: true, usePromises: typeof kUsePromises): Promise<string>; 147 function mkdir(path: string, mode: number, recursive: false, usePromises: typeof kUsePromises): Promise<void>; 148 149 function open(path: StringOrBuffer, flags: number, mode: number, req: FSReqCallback<number>): void; 150 function open(path: StringOrBuffer, flags: number, mode: number, req: undefined, ctx: FSSyncContext): number; 151 152 function openFileHandle(path: StringOrBuffer, flags: number, mode: number, usePromises: typeof kUsePromises): Promise<FileHandle>; 153 154 function read(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number, req: FSReqCallback<number>): void; 155 function read(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number, req: undefined, ctx: FSSyncContext): number; 156 function read(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number, usePromises: typeof kUsePromises): Promise<number>; 157 158 function readBuffers(fd: number, buffers: ArrayBufferView[], position: number, req: FSReqCallback<number>): void; 159 function readBuffers(fd: number, buffers: ArrayBufferView[], position: number, req: undefined, ctx: FSSyncContext): number; 160 function readBuffers(fd: number, buffers: ArrayBufferView[], position: number, usePromises: typeof kUsePromises): Promise<number>; 161 162 function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: boolean, req: FSReqCallback<string[] | [string[], number[]]>): void; 163 function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: true, req: FSReqCallback<[string[], number[]]>): void; 164 function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: false, req: FSReqCallback<string[]>): void; 165 function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: boolean, req: undefined, ctx: FSSyncContext): string[] | [string[], number[]]; 166 function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: true, req: undefined, ctx: FSSyncContext): [string[], number[]]; 167 function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: false, req: undefined, ctx: FSSyncContext): string[]; 168 function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: boolean, usePromises: typeof kUsePromises): Promise<string[] | [string[], number[]]>; 169 function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: true, usePromises: typeof kUsePromises): Promise<[string[], number[]]>; 170 function readdir(path: StringOrBuffer, encoding: unknown, withFileTypes: false, usePromises: typeof kUsePromises): Promise<string[]>; 171 172 function readlink(path: StringOrBuffer, encoding: unknown, req: FSReqCallback<string | Buffer>): void; 173 function readlink(path: StringOrBuffer, encoding: unknown, req: undefined, ctx: FSSyncContext): string | Buffer; 174 function readlink(path: StringOrBuffer, encoding: unknown, usePromises: typeof kUsePromises): Promise<string | Buffer>; 175 176 function realpath(path: StringOrBuffer, encoding: unknown, req: FSReqCallback<string | Buffer>): void; 177 function realpath(path: StringOrBuffer, encoding: unknown, req: undefined, ctx: FSSyncContext): string | Buffer; 178 function realpath(path: StringOrBuffer, encoding: unknown, usePromises: typeof kUsePromises): Promise<string | Buffer>; 179 180 function rename(oldPath: string, newPath: string, req: FSReqCallback): void; 181 function rename(oldPath: string, newPath: string, req: undefined, ctx: FSSyncContext): void; 182 function rename(oldPath: string, newPath: string, usePromises: typeof kUsePromises): Promise<void>; 183 184 function rmdir(path: string, req: FSReqCallback): void; 185 function rmdir(path: string, req: undefined, ctx: FSSyncContext): void; 186 function rmdir(path: string, usePromises: typeof kUsePromises): Promise<void>; 187 188 function stat(path: StringOrBuffer, useBigint: boolean, req: FSReqCallback<Float64Array | BigUint64Array>): void; 189 function stat(path: StringOrBuffer, useBigint: true, req: FSReqCallback<BigUint64Array>): void; 190 function stat(path: StringOrBuffer, useBigint: false, req: FSReqCallback<Float64Array>): void; 191 function stat(path: StringOrBuffer, useBigint: boolean, req: undefined, ctx: FSSyncContext): Float64Array | BigUint64Array; 192 function stat(path: StringOrBuffer, useBigint: true, req: undefined, ctx: FSSyncContext): BigUint64Array; 193 function stat(path: StringOrBuffer, useBigint: false, req: undefined, ctx: FSSyncContext): Float64Array; 194 function stat(path: StringOrBuffer, useBigint: boolean, usePromises: typeof kUsePromises): Promise<Float64Array | BigUint64Array>; 195 function stat(path: StringOrBuffer, useBigint: true, usePromises: typeof kUsePromises): Promise<BigUint64Array>; 196 function stat(path: StringOrBuffer, useBigint: false, usePromises: typeof kUsePromises): Promise<Float64Array>; 197 198 function symlink(target: StringOrBuffer, path: StringOrBuffer, type: number, req: FSReqCallback): void; 199 function symlink(target: StringOrBuffer, path: StringOrBuffer, type: number, req: undefined, ctx: FSSyncContext): void; 200 function symlink(target: StringOrBuffer, path: StringOrBuffer, type: number, usePromises: typeof kUsePromises): Promise<void>; 201 202 function unlink(path: string, req: FSReqCallback): void; 203 function unlink(path: string, req: undefined, ctx: FSSyncContext): void; 204 function unlink(path: string, usePromises: typeof kUsePromises): Promise<void>; 205 206 function utimes(path: string, atime: number, mtime: number, req: FSReqCallback): void; 207 function utimes(path: string, atime: number, mtime: number, req: undefined, ctx: FSSyncContext): void; 208 function utimes(path: string, atime: number, mtime: number, usePromises: typeof kUsePromises): Promise<void>; 209 210 function writeBuffer(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number | null, req: FSReqCallback<number>): void; 211 function writeBuffer(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number | null, req: undefined, ctx: FSSyncContext): number; 212 function writeBuffer(fd: number, buffer: ArrayBufferView, offset: number, length: number, position: number | null, usePromises: typeof kUsePromises): Promise<number>; 213 214 function writeBuffers(fd: number, buffers: ArrayBufferView[], position: number, req: FSReqCallback<number>): void; 215 function writeBuffers(fd: number, buffers: ArrayBufferView[], position: number, req: undefined, ctx: FSSyncContext): number; 216 function writeBuffers(fd: number, buffers: ArrayBufferView[], position: number, usePromises: typeof kUsePromises): Promise<number>; 217 218 function writeString(fd: number, value: string, pos: unknown, encoding: unknown, req: FSReqCallback<number>): void; 219 function writeString(fd: number, value: string, pos: unknown, encoding: unknown, req: undefined, ctx: FSSyncContext): number; 220 function writeString(fd: number, value: string, pos: unknown, encoding: unknown, usePromises: typeof kUsePromises): Promise<number>; 221} 222 223declare function InternalBinding(binding: 'fs'): { 224 FSReqCallback: typeof InternalFSBinding.FSReqCallback; 225 226 FileHandle: typeof InternalFSBinding.FileHandle; 227 228 kUsePromises: typeof InternalFSBinding.kUsePromises; 229 230 statValues: Float64Array; 231 bigintStatValues: BigUint64Array; 232 233 kFsStatsFieldsNumber: number; 234 StatWatcher: typeof InternalFSBinding.StatWatcher; 235 236 access: typeof InternalFSBinding.access; 237 chmod: typeof InternalFSBinding.chmod; 238 chown: typeof InternalFSBinding.chown; 239 close: typeof InternalFSBinding.close; 240 copyFile: typeof InternalFSBinding.copyFile; 241 fchmod: typeof InternalFSBinding.fchmod; 242 fchown: typeof InternalFSBinding.fchown; 243 fdatasync: typeof InternalFSBinding.fdatasync; 244 fstat: typeof InternalFSBinding.fstat; 245 fsync: typeof InternalFSBinding.fsync; 246 ftruncate: typeof InternalFSBinding.ftruncate; 247 futimes: typeof InternalFSBinding.futimes; 248 internalModuleReadJSON: typeof InternalFSBinding.internalModuleReadJSON; 249 internalModuleStat: typeof InternalFSBinding.internalModuleStat; 250 lchown: typeof InternalFSBinding.lchown; 251 link: typeof InternalFSBinding.link; 252 lstat: typeof InternalFSBinding.lstat; 253 lutimes: typeof InternalFSBinding.lutimes; 254 mkdtemp: typeof InternalFSBinding.mkdtemp; 255 mkdir: typeof InternalFSBinding.mkdir; 256 open: typeof InternalFSBinding.open; 257 openFileHandle: typeof InternalFSBinding.openFileHandle; 258 read: typeof InternalFSBinding.read; 259 readBuffers: typeof InternalFSBinding.readBuffers; 260 readdir: typeof InternalFSBinding.readdir; 261 readlink: typeof InternalFSBinding.readlink; 262 realpath: typeof InternalFSBinding.realpath; 263 rename: typeof InternalFSBinding.rename; 264 rmdir: typeof InternalFSBinding.rmdir; 265 stat: typeof InternalFSBinding.stat; 266 symlink: typeof InternalFSBinding.symlink; 267 unlink: typeof InternalFSBinding.unlink; 268 utimes: typeof InternalFSBinding.utimes; 269 writeBuffer: typeof InternalFSBinding.writeBuffer; 270 writeBuffers: typeof InternalFSBinding.writeBuffers; 271 writeString: typeof InternalFSBinding.writeString; 272}; 273