Completed
Push — master ( cdadad...8d09a6 )
by Dimas
36:02 queued 17:12
created

libs/typings/node/fs.d.ts   F

Complexity

Total Complexity 307
Complexity/F 1

Size

Lines of Code 2133
Function Count 307

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 902
dl 0
loc 2133
rs 1.698
c 0
b 0
f 0
wmc 307
mnd 0
bc 0
fnc 307
bpm 0
cpm 1
noi 0

106 Functions

Rating   Name   Duplication   Size   Complexity  
A fs.d.ts ➔ writeSync 0 9 1
A ReadStream.prependOnceListener 0 2 1
A ReadStream.close 0 1 1
A fs.d.ts ➔ copyFile 0 11 1
A fs.d.ts ➔ chmodSync 0 7 1
A fs.d.ts ➔ futimes 0 8 1
A fs.d.ts ➔ lchmodSync 0 7 1
A fs.d.ts ➔ writev 0 13 1
A fs.d.ts ➔ writevSync 0 5 1
A fs.d.ts ➔ fstatSync 0 6 1
A Dir.closeSync 0 6 1
A fs.d.ts ➔ lchownSync 0 6 1
A fs.d.ts ➔ symlink 0 9 1
A fs.d.ts ➔ read 0 17 1
A WriteStream.on 0 2 1
A fs.d.ts ➔ appendFileSync 0 14 1
A fs.d.ts ➔ openSync 0 7 1
A ReadStream.once 0 2 1
A fs.d.ts ➔ chownSync 0 6 1
A fs.d.ts ➔ unlinkSync 0 6 1
A Dirent.isSocket 0 1 1
A fs.d.ts ➔ appendFile 0 14 1
A fs.d.ts ➔ link 0 7 1
A ReadStream.on 0 2 1
A fs.d.ts ➔ rename 0 9 1
A fs.d.ts ➔ rmdir 0 6 1
A fs.d.ts ➔ fchmod 0 7 1
A fs.d.ts ➔ futimesSync 0 8 1
A fs.d.ts ➔ fchmodSync 0 7 1
A WriteStream.prependOnceListener 0 2 1
A fs.d.ts ➔ truncateSync 0 7 1
A fs.d.ts ➔ truncate 0 7 1
A fs.d.ts ➔ linkSync 0 7 1
A Dirent.isFIFO 0 1 1
A fs.d.ts ➔ createReadStream 0 20 1
A fs.d.ts ➔ lstatSync 0 6 1
A fs.d.ts ➔ chmod 0 7 1
A fs.d.ts ➔ readlink 0 11 1
A fs.d.ts ➔ unlink 0 6 1
A fs.d.ts ➔ opendir 0 2 1
A WriteStream.once 0 2 1
A WriteStream.prependListener 0 2 1
A fs.d.ts ➔ readlinkSync 0 7 1
A Dir.read 0 7 1
A fs.d.ts ➔ lstat 0 6 1
A fs.d.ts ➔ statSync 0 6 1
A fs.d.ts ➔ lchown 0 6 1
A fs.d.ts ➔ mkdir 0 8 1
A fs.d.ts ➔ readdir 0 11 1
A fs.d.ts ➔ copyFileSync 0 12 1
A fs.d.ts ➔ ftruncate 0 7 1
A fs.d.ts ➔ writeFile 0 14 1
A fs.d.ts ➔ fstat 0 6 1
A fs.d.ts ➔ stat 0 6 1
A fs.d.ts ➔ exists 0 8 1
A WriteStream.close 0 1 1
A fs.d.ts ➔ unwatchFile 0 7 1
A fs.d.ts ➔ lchmod 0 7 1
A fs.d.ts ➔ readSync 0 10 1
A fs.d.ts ➔ mkdtemp 0 7 1
A fs.d.ts ➔ open 0 7 1
A fs.d.ts ➔ watch 0 15 1
A ReadStream.addListener 0 8 1
A fs.d.ts ➔ native 0 6 1
A Dirent.isCharacterDevice 0 1 1
A Dir.readSync 0 7 1
A Dirent.isSymbolicLink 0 1 1
A Dirent.isBlockDevice 0 1 1
A fs.d.ts ➔ closeSync 0 6 1
A fs.d.ts ➔ symlinkSync 0 9 1
A fs.d.ts ➔ readvSync 0 5 1
A Dirent.isDirectory 0 1 1
A fs.d.ts ➔ realpath 0 11 1
A WriteStream.addListener 0 8 1
A fs.d.ts ➔ ftruncateSync 0 7 1
A fs.d.ts ➔ fsyncSync 0 6 1
A fs.d.ts ➔ utimesSync 0 8 1
A fs.d.ts ➔ fchownSync 0 6 1
A fs.d.ts ➔ readFile 0 9 1
A fs.d.ts ➔ fsync 0 6 1
A fs.d.ts ➔ ___promisify__ 0 8 1
A fs.d.ts ➔ watchFile 0 5 1
A fs.d.ts ➔ write 0 16 1
A fs.d.ts ➔ readv 0 6 1
A ReadStream.prependListener 0 2 1
A Dirent.isFile 0 1 1
A fs.d.ts ➔ writeFileSync 0 14 1
A fs.d.ts ➔ createWriteStream 0 16 1
A fs.d.ts ➔ readdirSync 0 7 1
A fs.d.ts ➔ readFileSync 0 9 1
A Dir.close 0 6 1
A fs.d.ts ➔ opendirSync 0 2 1
A fs.d.ts ➔ close 0 6 1
A fs.d.ts ➔ mkdtempSync 0 7 1
A fs.d.ts ➔ chown 0 6 1
A fs.d.ts ➔ mkdirSync 0 8 1
A fs.d.ts ➔ rmdirSync 0 6 1
A fs.d.ts ➔ fdatasyncSync 0 6 1
A fs.d.ts ➔ accessSync 0 7 1
A fs.d.ts ➔ existsSync 0 7 1
A fs.d.ts ➔ realpathSync 0 7 1
A fs.d.ts ➔ fchown 0 6 1
A fs.d.ts ➔ access 0 7 1
A fs.d.ts ➔ fdatasync 0 6 1
A fs.d.ts ➔ utimes 0 8 1
A fs.d.ts ➔ renameSync 0 9 1

How to fix   Complexity   

Complexity

Complex classes like libs/typings/node/fs.d.ts often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
declare module "fs" {
2
    import * as stream from "stream";
3
    import * as events from "events";
4
    import { URL } from "url";
5
    import * as promises from 'fs/promises';
6
7
    export { promises };
8
    /**
9
     * Valid types for path values in "fs".
10
     */
11
    export type PathLike = string | Buffer | URL;
12
13
    export type NoParamCallback = (err: NodeJS.ErrnoException | null) => void;
14
15
    export type BufferEncodingOption = 'buffer' | { encoding: 'buffer' };
16
17
    export interface BaseEncodingOptions {
18
        encoding?: BufferEncoding | null;
19
    }
20
21
    export type OpenMode = number | string;
22
23
    export type Mode = number | string;
24
25
    export interface StatsBase<T> {
26
        isFile(): boolean;
27
        isDirectory(): boolean;
28
        isBlockDevice(): boolean;
29
        isCharacterDevice(): boolean;
30
        isSymbolicLink(): boolean;
31
        isFIFO(): boolean;
32
        isSocket(): boolean;
33
34
        dev: T;
35
        ino: T;
36
        mode: T;
37
        nlink: T;
38
        uid: T;
39
        gid: T;
40
        rdev: T;
41
        size: T;
42
        blksize: T;
43
        blocks: T;
44
        atimeMs: T;
45
        mtimeMs: T;
46
        ctimeMs: T;
47
        birthtimeMs: T;
48
        atime: Date;
49
        mtime: Date;
50
        ctime: Date;
51
        birthtime: Date;
52
    }
53
54
    export interface Stats extends StatsBase<number> {
55
    }
56
57
    export class Stats {
58
    }
59
60
    export class Dirent {
61
        isFile(): boolean;
62
        isDirectory(): boolean;
63
        isBlockDevice(): boolean;
64
        isCharacterDevice(): boolean;
65
        isSymbolicLink(): boolean;
66
        isFIFO(): boolean;
67
        isSocket(): boolean;
68
        name: string;
69
    }
70
71
    /**
72
     * A class representing a directory stream.
73
     */
74
    export class Dir {
75
        readonly path: string;
76
77
        /**
78
         * Asynchronously iterates over the directory via `readdir(3)` until all entries have been read.
79
         */
80
        [Symbol.asyncIterator](): AsyncIterableIterator<Dirent>;
81
82
        /**
83
         * Asynchronously close the directory's underlying resource handle.
84
         * Subsequent reads will result in errors.
85
         */
86
        close(): Promise<void>;
87
        close(cb: NoParamCallback): void;
88
89
        /**
90
         * Synchronously close the directory's underlying resource handle.
91
         * Subsequent reads will result in errors.
92
         */
93
        closeSync(): void;
94
95
        /**
96
         * Asynchronously read the next directory entry via `readdir(3)` as an `Dirent`.
97
         * After the read is completed, a value is returned that will be resolved with an `Dirent`, or `null` if there are no more directory entries to read.
98
         * Directory entries returned by this function are in no particular order as provided by the operating system's underlying directory mechanisms.
99
         */
100
        read(): Promise<Dirent | null>;
101
        read(cb: (err: NodeJS.ErrnoException | null, dirEnt: Dirent | null) => void): void;
102
103
        /**
104
         * Synchronously read the next directory entry via `readdir(3)` as a `Dirent`.
105
         * If there are no more directory entries to read, null will be returned.
106
         * Directory entries returned by this function are in no particular order as provided by the operating system's underlying directory mechanisms.
107
         */
108
        readSync(): Dirent;
109
    }
110
111
    export interface FSWatcher extends events.EventEmitter {
112
        close(): void;
113
114
        /**
115
         * events.EventEmitter
116
         *   1. change
117
         *   2. error
118
         */
119
        addListener(event: string, listener: (...args: any[]) => void): this;
120
        addListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
121
        addListener(event: "error", listener: (error: Error) => void): this;
122
        addListener(event: "close", listener: () => void): this;
123
124
        on(event: string, listener: (...args: any[]) => void): this;
125
        on(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
126
        on(event: "error", listener: (error: Error) => void): this;
127
        on(event: "close", listener: () => void): this;
128
129
        once(event: string, listener: (...args: any[]) => void): this;
130
        once(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
131
        once(event: "error", listener: (error: Error) => void): this;
132
        once(event: "close", listener: () => void): this;
133
134
        prependListener(event: string, listener: (...args: any[]) => void): this;
135
        prependListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
136
        prependListener(event: "error", listener: (error: Error) => void): this;
137
        prependListener(event: "close", listener: () => void): this;
138
139
        prependOnceListener(event: string, listener: (...args: any[]) => void): this;
140
        prependOnceListener(event: "change", listener: (eventType: string, filename: string | Buffer) => void): this;
141
        prependOnceListener(event: "error", listener: (error: Error) => void): this;
142
        prependOnceListener(event: "close", listener: () => void): this;
143
    }
144
145
    export class ReadStream extends stream.Readable {
146
        close(): void;
147
        bytesRead: number;
148
        path: string | Buffer;
149
        pending: boolean;
150
151
        /**
152
         * events.EventEmitter
153
         *   1. open
154
         *   2. close
155
         *   3. ready
156
         */
157
        addListener(event: "close", listener: () => void): this;
158
        addListener(event: "data", listener: (chunk: Buffer | string) => void): this;
159
        addListener(event: "end", listener: () => void): this;
160
        addListener(event: "error", listener: (err: Error) => void): this;
161
        addListener(event: "open", listener: (fd: number) => void): this;
162
        addListener(event: "pause", listener: () => void): this;
163
        addListener(event: "readable", listener: () => void): this;
164
        addListener(event: "ready", listener: () => void): this;
165
        addListener(event: "resume", listener: () => void): this;
166
        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
167
168
        on(event: "close", listener: () => void): this;
169
        on(event: "data", listener: (chunk: Buffer | string) => void): this;
170
        on(event: "end", listener: () => void): this;
171
        on(event: "error", listener: (err: Error) => void): this;
172
        on(event: "open", listener: (fd: number) => void): this;
173
        on(event: "pause", listener: () => void): this;
174
        on(event: "readable", listener: () => void): this;
175
        on(event: "ready", listener: () => void): this;
176
        on(event: "resume", listener: () => void): this;
177
        on(event: string | symbol, listener: (...args: any[]) => void): this;
178
179
        once(event: "close", listener: () => void): this;
180
        once(event: "data", listener: (chunk: Buffer | string) => void): this;
181
        once(event: "end", listener: () => void): this;
182
        once(event: "error", listener: (err: Error) => void): this;
183
        once(event: "open", listener: (fd: number) => void): this;
184
        once(event: "pause", listener: () => void): this;
185
        once(event: "readable", listener: () => void): this;
186
        once(event: "ready", listener: () => void): this;
187
        once(event: "resume", listener: () => void): this;
188
        once(event: string | symbol, listener: (...args: any[]) => void): this;
189
190
        prependListener(event: "close", listener: () => void): this;
191
        prependListener(event: "data", listener: (chunk: Buffer | string) => void): this;
192
        prependListener(event: "end", listener: () => void): this;
193
        prependListener(event: "error", listener: (err: Error) => void): this;
194
        prependListener(event: "open", listener: (fd: number) => void): this;
195
        prependListener(event: "pause", listener: () => void): this;
196
        prependListener(event: "readable", listener: () => void): this;
197
        prependListener(event: "ready", listener: () => void): this;
198
        prependListener(event: "resume", listener: () => void): this;
199
        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
200
201
        prependOnceListener(event: "close", listener: () => void): this;
202
        prependOnceListener(event: "data", listener: (chunk: Buffer | string) => void): this;
203
        prependOnceListener(event: "end", listener: () => void): this;
204
        prependOnceListener(event: "error", listener: (err: Error) => void): this;
205
        prependOnceListener(event: "open", listener: (fd: number) => void): this;
206
        prependOnceListener(event: "pause", listener: () => void): this;
207
        prependOnceListener(event: "readable", listener: () => void): this;
208
        prependOnceListener(event: "ready", listener: () => void): this;
209
        prependOnceListener(event: "resume", listener: () => void): this;
210
        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
211
    }
212
213
    export class WriteStream extends stream.Writable {
214
        close(): void;
215
        bytesWritten: number;
216
        path: string | Buffer;
217
        pending: boolean;
218
219
        /**
220
         * events.EventEmitter
221
         *   1. open
222
         *   2. close
223
         *   3. ready
224
         */
225
        addListener(event: "close", listener: () => void): this;
226
        addListener(event: "drain", listener: () => void): this;
227
        addListener(event: "error", listener: (err: Error) => void): this;
228
        addListener(event: "finish", listener: () => void): this;
229
        addListener(event: "open", listener: (fd: number) => void): this;
230
        addListener(event: "pipe", listener: (src: stream.Readable) => void): this;
231
        addListener(event: "ready", listener: () => void): this;
232
        addListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
233
        addListener(event: string | symbol, listener: (...args: any[]) => void): this;
234
235
        on(event: "close", listener: () => void): this;
236
        on(event: "drain", listener: () => void): this;
237
        on(event: "error", listener: (err: Error) => void): this;
238
        on(event: "finish", listener: () => void): this;
239
        on(event: "open", listener: (fd: number) => void): this;
240
        on(event: "pipe", listener: (src: stream.Readable) => void): this;
241
        on(event: "ready", listener: () => void): this;
242
        on(event: "unpipe", listener: (src: stream.Readable) => void): this;
243
        on(event: string | symbol, listener: (...args: any[]) => void): this;
244
245
        once(event: "close", listener: () => void): this;
246
        once(event: "drain", listener: () => void): this;
247
        once(event: "error", listener: (err: Error) => void): this;
248
        once(event: "finish", listener: () => void): this;
249
        once(event: "open", listener: (fd: number) => void): this;
250
        once(event: "pipe", listener: (src: stream.Readable) => void): this;
251
        once(event: "ready", listener: () => void): this;
252
        once(event: "unpipe", listener: (src: stream.Readable) => void): this;
253
        once(event: string | symbol, listener: (...args: any[]) => void): this;
254
255
        prependListener(event: "close", listener: () => void): this;
256
        prependListener(event: "drain", listener: () => void): this;
257
        prependListener(event: "error", listener: (err: Error) => void): this;
258
        prependListener(event: "finish", listener: () => void): this;
259
        prependListener(event: "open", listener: (fd: number) => void): this;
260
        prependListener(event: "pipe", listener: (src: stream.Readable) => void): this;
261
        prependListener(event: "ready", listener: () => void): this;
262
        prependListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
263
        prependListener(event: string | symbol, listener: (...args: any[]) => void): this;
264
265
        prependOnceListener(event: "close", listener: () => void): this;
266
        prependOnceListener(event: "drain", listener: () => void): this;
267
        prependOnceListener(event: "error", listener: (err: Error) => void): this;
268
        prependOnceListener(event: "finish", listener: () => void): this;
269
        prependOnceListener(event: "open", listener: (fd: number) => void): this;
270
        prependOnceListener(event: "pipe", listener: (src: stream.Readable) => void): this;
271
        prependOnceListener(event: "ready", listener: () => void): this;
272
        prependOnceListener(event: "unpipe", listener: (src: stream.Readable) => void): this;
273
        prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this;
274
    }
275
276
    /**
277
     * Asynchronous rename(2) - Change the name or location of a file or directory.
278
     * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
279
     * URL support is _experimental_.
280
     * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
281
     * URL support is _experimental_.
282
     */
283
    export function rename(oldPath: PathLike, newPath: PathLike, callback: NoParamCallback): void;
284
285
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
286
    export namespace rename {
287
        /**
288
         * Asynchronous rename(2) - Change the name or location of a file or directory.
289
         * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
290
         * URL support is _experimental_.
291
         * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
292
         * URL support is _experimental_.
293
         */
294
        function __promisify__(oldPath: PathLike, newPath: PathLike): Promise<void>;
295
    }
296
297
    /**
298
     * Synchronous rename(2) - Change the name or location of a file or directory.
299
     * @param oldPath A path to a file. If a URL is provided, it must use the `file:` protocol.
300
     * URL support is _experimental_.
301
     * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
302
     * URL support is _experimental_.
303
     */
304
    export function renameSync(oldPath: PathLike, newPath: PathLike): void;
305
306
    /**
307
     * Asynchronous truncate(2) - Truncate a file to a specified length.
308
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
309
     * @param len If not specified, defaults to `0`.
310
     */
311
    export function truncate(path: PathLike, len: number | undefined | null, callback: NoParamCallback): void;
312
313
    /**
314
     * Asynchronous truncate(2) - Truncate a file to a specified length.
315
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
316
     * URL support is _experimental_.
317
     */
318
    export function truncate(path: PathLike, callback: NoParamCallback): void;
319
320
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
321
    export namespace truncate {
322
        /**
323
         * Asynchronous truncate(2) - Truncate a file to a specified length.
324
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
325
         * @param len If not specified, defaults to `0`.
326
         */
327
        function __promisify__(path: PathLike, len?: number | null): Promise<void>;
328
    }
329
330
    /**
331
     * Synchronous truncate(2) - Truncate a file to a specified length.
332
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
333
     * @param len If not specified, defaults to `0`.
334
     */
335
    export function truncateSync(path: PathLike, len?: number | null): void;
336
337
    /**
338
     * Asynchronous ftruncate(2) - Truncate a file to a specified length.
339
     * @param fd A file descriptor.
340
     * @param len If not specified, defaults to `0`.
341
     */
342
    export function ftruncate(fd: number, len: number | undefined | null, callback: NoParamCallback): void;
343
344
    /**
345
     * Asynchronous ftruncate(2) - Truncate a file to a specified length.
346
     * @param fd A file descriptor.
347
     */
348
    export function ftruncate(fd: number, callback: NoParamCallback): void;
349
350
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
351
    export namespace ftruncate {
352
        /**
353
         * Asynchronous ftruncate(2) - Truncate a file to a specified length.
354
         * @param fd A file descriptor.
355
         * @param len If not specified, defaults to `0`.
356
         */
357
        function __promisify__(fd: number, len?: number | null): Promise<void>;
358
    }
359
360
    /**
361
     * Synchronous ftruncate(2) - Truncate a file to a specified length.
362
     * @param fd A file descriptor.
363
     * @param len If not specified, defaults to `0`.
364
     */
365
    export function ftruncateSync(fd: number, len?: number | null): void;
366
367
    /**
368
     * Asynchronous chown(2) - Change ownership of a file.
369
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
370
     */
371
    export function chown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void;
372
373
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
374
    export namespace chown {
375
        /**
376
         * Asynchronous chown(2) - Change ownership of a file.
377
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
378
         */
379
        function __promisify__(path: PathLike, uid: number, gid: number): Promise<void>;
380
    }
381
382
    /**
383
     * Synchronous chown(2) - Change ownership of a file.
384
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
385
     */
386
    export function chownSync(path: PathLike, uid: number, gid: number): void;
387
388
    /**
389
     * Asynchronous fchown(2) - Change ownership of a file.
390
     * @param fd A file descriptor.
391
     */
392
    export function fchown(fd: number, uid: number, gid: number, callback: NoParamCallback): void;
393
394
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
395
    export namespace fchown {
396
        /**
397
         * Asynchronous fchown(2) - Change ownership of a file.
398
         * @param fd A file descriptor.
399
         */
400
        function __promisify__(fd: number, uid: number, gid: number): Promise<void>;
401
    }
402
403
    /**
404
     * Synchronous fchown(2) - Change ownership of a file.
405
     * @param fd A file descriptor.
406
     */
407
    export function fchownSync(fd: number, uid: number, gid: number): void;
408
409
    /**
410
     * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
411
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
412
     */
413
    export function lchown(path: PathLike, uid: number, gid: number, callback: NoParamCallback): void;
414
415
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
416
    export namespace lchown {
417
        /**
418
         * Asynchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
419
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
420
         */
421
        function __promisify__(path: PathLike, uid: number, gid: number): Promise<void>;
422
    }
423
424
    /**
425
     * Synchronous lchown(2) - Change ownership of a file. Does not dereference symbolic links.
426
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
427
     */
428
    export function lchownSync(path: PathLike, uid: number, gid: number): void;
429
430
    /**
431
     * Asynchronous chmod(2) - Change permissions of a file.
432
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
433
     * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
434
     */
435
    export function chmod(path: PathLike, mode: Mode, callback: NoParamCallback): void;
436
437
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
438
    export namespace chmod {
439
        /**
440
         * Asynchronous chmod(2) - Change permissions of a file.
441
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
442
         * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
443
         */
444
        function __promisify__(path: PathLike, mode: Mode): Promise<void>;
445
    }
446
447
    /**
448
     * Synchronous chmod(2) - Change permissions of a file.
449
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
450
     * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
451
     */
452
    export function chmodSync(path: PathLike, mode: Mode): void;
453
454
    /**
455
     * Asynchronous fchmod(2) - Change permissions of a file.
456
     * @param fd A file descriptor.
457
     * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
458
     */
459
    export function fchmod(fd: number, mode: Mode, callback: NoParamCallback): void;
460
461
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
462
    export namespace fchmod {
463
        /**
464
         * Asynchronous fchmod(2) - Change permissions of a file.
465
         * @param fd A file descriptor.
466
         * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
467
         */
468
        function __promisify__(fd: number, mode: Mode): Promise<void>;
469
    }
470
471
    /**
472
     * Synchronous fchmod(2) - Change permissions of a file.
473
     * @param fd A file descriptor.
474
     * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
475
     */
476
    export function fchmodSync(fd: number, mode: Mode): void;
477
478
    /**
479
     * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
480
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
481
     * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
482
     */
483
    export function lchmod(path: PathLike, mode: Mode, callback: NoParamCallback): void;
484
485
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
486
    export namespace lchmod {
487
        /**
488
         * Asynchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
489
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
490
         * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
491
         */
492
        function __promisify__(path: PathLike, mode: Mode): Promise<void>;
493
    }
494
495
    /**
496
     * Synchronous lchmod(2) - Change permissions of a file. Does not dereference symbolic links.
497
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
498
     * @param mode A file mode. If a string is passed, it is parsed as an octal integer.
499
     */
500
    export function lchmodSync(path: PathLike, mode: Mode): void;
501
502
    /**
503
     * Asynchronous stat(2) - Get file status.
504
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
505
     */
506
    export function stat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
507
508
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
509
    export namespace stat {
510
        /**
511
         * Asynchronous stat(2) - Get file status.
512
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
513
         */
514
        function __promisify__(path: PathLike): Promise<Stats>;
515
    }
516
517
    /**
518
     * Synchronous stat(2) - Get file status.
519
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
520
     */
521
    export function statSync(path: PathLike): Stats;
522
523
    /**
524
     * Asynchronous fstat(2) - Get file status.
525
     * @param fd A file descriptor.
526
     */
527
    export function fstat(fd: number, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
528
529
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
530
    export namespace fstat {
531
        /**
532
         * Asynchronous fstat(2) - Get file status.
533
         * @param fd A file descriptor.
534
         */
535
        function __promisify__(fd: number): Promise<Stats>;
536
    }
537
538
    /**
539
     * Synchronous fstat(2) - Get file status.
540
     * @param fd A file descriptor.
541
     */
542
    export function fstatSync(fd: number): Stats;
543
544
    /**
545
     * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.
546
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
547
     */
548
    export function lstat(path: PathLike, callback: (err: NodeJS.ErrnoException | null, stats: Stats) => void): void;
549
550
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
551
    export namespace lstat {
552
        /**
553
         * Asynchronous lstat(2) - Get file status. Does not dereference symbolic links.
554
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
555
         */
556
        function __promisify__(path: PathLike): Promise<Stats>;
557
    }
558
559
    /**
560
     * Synchronous lstat(2) - Get file status. Does not dereference symbolic links.
561
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
562
     */
563
    export function lstatSync(path: PathLike): Stats;
564
565
    /**
566
     * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.
567
     * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
568
     * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
569
     */
570
    export function link(existingPath: PathLike, newPath: PathLike, callback: NoParamCallback): void;
571
572
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
573
    export namespace link {
574
        /**
575
         * Asynchronous link(2) - Create a new link (also known as a hard link) to an existing file.
576
         * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
577
         * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
578
         */
579
        function __promisify__(existingPath: PathLike, newPath: PathLike): Promise<void>;
580
    }
581
582
    /**
583
     * Synchronous link(2) - Create a new link (also known as a hard link) to an existing file.
584
     * @param existingPath A path to a file. If a URL is provided, it must use the `file:` protocol.
585
     * @param newPath A path to a file. If a URL is provided, it must use the `file:` protocol.
586
     */
587
    export function linkSync(existingPath: PathLike, newPath: PathLike): void;
588
589
    /**
590
     * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
591
     * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
592
     * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
593
     * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
594
     * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
595
     */
596
    export function symlink(target: PathLike, path: PathLike, type: symlink.Type | undefined | null, callback: NoParamCallback): void;
597
598
    /**
599
     * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
600
     * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
601
     * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
602
     */
603
    export function symlink(target: PathLike, path: PathLike, callback: NoParamCallback): void;
604
605
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
606
    export namespace symlink {
607
        /**
608
         * Asynchronous symlink(2) - Create a new symbolic link to an existing file.
609
         * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
610
         * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
611
         * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
612
         * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
613
         */
614
        function __promisify__(target: PathLike, path: PathLike, type?: string | null): Promise<void>;
615
616
        type Type = "dir" | "file" | "junction";
617
    }
618
619
    /**
620
     * Synchronous symlink(2) - Create a new symbolic link to an existing file.
621
     * @param target A path to an existing file. If a URL is provided, it must use the `file:` protocol.
622
     * @param path A path to the new symlink. If a URL is provided, it must use the `file:` protocol.
623
     * @param type May be set to `'dir'`, `'file'`, or `'junction'` (default is `'file'`) and is only available on Windows (ignored on other platforms).
624
     * When using `'junction'`, the `target` argument will automatically be normalized to an absolute path.
625
     */
626
    export function symlinkSync(target: PathLike, path: PathLike, type?: symlink.Type | null): void;
627
628
    /**
629
     * Asynchronous readlink(2) - read value of a symbolic link.
630
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
631
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
632
     */
633
    export function readlink(
634
        path: PathLike,
635
        options: BaseEncodingOptions | BufferEncoding | undefined | null,
636
        callback: (err: NodeJS.ErrnoException | null, linkString: string) => void
637
    ): void;
638
639
    /**
640
     * Asynchronous readlink(2) - read value of a symbolic link.
641
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
642
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
643
     */
644
    export function readlink(path: PathLike, options: BufferEncodingOption, callback: (err: NodeJS.ErrnoException | null, linkString: Buffer) => void): void;
645
646
    /**
647
     * Asynchronous readlink(2) - read value of a symbolic link.
648
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
649
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
650
     */
651
    export function readlink(path: PathLike, options: BaseEncodingOptions | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, linkString: string | Buffer) => void): void;
652
653
    /**
654
     * Asynchronous readlink(2) - read value of a symbolic link.
655
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
656
     */
657
    export function readlink(path: PathLike, callback: (err: NodeJS.ErrnoException | null, linkString: string) => void): void;
658
659
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
660
    export namespace readlink {
661
        /**
662
         * Asynchronous readlink(2) - read value of a symbolic link.
663
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
664
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
665
         */
666
        function __promisify__(path: PathLike, options?: BaseEncodingOptions | BufferEncoding | null): Promise<string>;
667
668
        /**
669
         * Asynchronous readlink(2) - read value of a symbolic link.
670
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
671
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
672
         */
673
        function __promisify__(path: PathLike, options: BufferEncodingOption): Promise<Buffer>;
674
675
        /**
676
         * Asynchronous readlink(2) - read value of a symbolic link.
677
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
678
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
679
         */
680
        function __promisify__(path: PathLike, options?: BaseEncodingOptions | string | null): Promise<string | Buffer>;
681
    }
682
683
    /**
684
     * Synchronous readlink(2) - read value of a symbolic link.
685
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
686
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
687
     */
688
    export function readlinkSync(path: PathLike, options?: BaseEncodingOptions | BufferEncoding | null): string;
689
690
    /**
691
     * Synchronous readlink(2) - read value of a symbolic link.
692
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
693
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
694
     */
695
    export function readlinkSync(path: PathLike, options: BufferEncodingOption): Buffer;
696
697
    /**
698
     * Synchronous readlink(2) - read value of a symbolic link.
699
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
700
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
701
     */
702
    export function readlinkSync(path: PathLike, options?: BaseEncodingOptions | string | null): string | Buffer;
703
704
    /**
705
     * Asynchronous realpath(3) - return the canonicalized absolute pathname.
706
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
707
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
708
     */
709
    export function realpath(
710
        path: PathLike,
711
        options: BaseEncodingOptions | BufferEncoding | undefined | null,
712
        callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void
713
    ): void;
714
715
    /**
716
     * Asynchronous realpath(3) - return the canonicalized absolute pathname.
717
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
718
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
719
     */
720
    export function realpath(path: PathLike, options: BufferEncodingOption, callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void): void;
721
722
    /**
723
     * Asynchronous realpath(3) - return the canonicalized absolute pathname.
724
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
725
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
726
     */
727
    export function realpath(path: PathLike, options: BaseEncodingOptions | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void): void;
728
729
    /**
730
     * Asynchronous realpath(3) - return the canonicalized absolute pathname.
731
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
732
     */
733
    export function realpath(path: PathLike, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void): void;
734
735
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
736
    export namespace realpath {
737
        /**
738
         * Asynchronous realpath(3) - return the canonicalized absolute pathname.
739
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
740
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
741
         */
742
        function __promisify__(path: PathLike, options?: BaseEncodingOptions | BufferEncoding | null): Promise<string>;
743
744
        /**
745
         * Asynchronous realpath(3) - return the canonicalized absolute pathname.
746
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
747
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
748
         */
749
        function __promisify__(path: PathLike, options: BufferEncodingOption): Promise<Buffer>;
750
751
        /**
752
         * Asynchronous realpath(3) - return the canonicalized absolute pathname.
753
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
754
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
755
         */
756
        function __promisify__(path: PathLike, options?: BaseEncodingOptions | string | null): Promise<string | Buffer>;
757
758
        function native(
759
            path: PathLike,
760
            options: BaseEncodingOptions | BufferEncoding | undefined | null,
761
            callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void
762
        ): void;
763
        function native(path: PathLike, options: BufferEncodingOption, callback: (err: NodeJS.ErrnoException | null, resolvedPath: Buffer) => void): void;
764
        function native(path: PathLike, options: BaseEncodingOptions | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string | Buffer) => void): void;
765
        function native(path: PathLike, callback: (err: NodeJS.ErrnoException | null, resolvedPath: string) => void): void;
766
    }
767
768
    /**
769
     * Synchronous realpath(3) - return the canonicalized absolute pathname.
770
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
771
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
772
     */
773
    export function realpathSync(path: PathLike, options?: BaseEncodingOptions | BufferEncoding | null): string;
774
775
    /**
776
     * Synchronous realpath(3) - return the canonicalized absolute pathname.
777
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
778
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
779
     */
780
    export function realpathSync(path: PathLike, options: BufferEncodingOption): Buffer;
781
782
    /**
783
     * Synchronous realpath(3) - return the canonicalized absolute pathname.
784
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
785
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
786
     */
787
    export function realpathSync(path: PathLike, options?: BaseEncodingOptions | string | null): string | Buffer;
788
789
    export namespace realpathSync {
790
        function native(path: PathLike, options?: BaseEncodingOptions | BufferEncoding | null): string;
791
        function native(path: PathLike, options: BufferEncodingOption): Buffer;
792
        function native(path: PathLike, options?: BaseEncodingOptions | string | null): string | Buffer;
793
    }
794
795
    /**
796
     * Asynchronous unlink(2) - delete a name and possibly the file it refers to.
797
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
798
     */
799
    export function unlink(path: PathLike, callback: NoParamCallback): void;
800
801
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
802
    export namespace unlink {
803
        /**
804
         * Asynchronous unlink(2) - delete a name and possibly the file it refers to.
805
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
806
         */
807
        function __promisify__(path: PathLike): Promise<void>;
808
    }
809
810
    /**
811
     * Synchronous unlink(2) - delete a name and possibly the file it refers to.
812
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
813
     */
814
    export function unlinkSync(path: PathLike): void;
815
816
    export interface RmDirOptions {
817
        /**
818
         * If `true`, perform a recursive directory removal. In
819
         * recursive mode, errors are not reported if `path` does not exist, and
820
         * operations are retried on failure.
821
         * @experimental
822
         * @default false
823
         */
824
        recursive?: boolean;
825
    }
826
827
    export interface RmDirAsyncOptions extends RmDirOptions {
828
        /**
829
         * The amount of time in milliseconds to wait between retries.
830
         * This option is ignored if the `recursive` option is not `true`.
831
         * @default 100
832
         */
833
        retryDelay?: number;
834
        /**
835
         * If an `EBUSY`, `EMFILE`, `ENFILE`, `ENOTEMPTY`, or
836
         * `EPERM` error is encountered, Node.js will retry the operation with a linear
837
         * backoff wait of `retryDelay` ms longer on each try. This option represents the
838
         * number of retries. This option is ignored if the `recursive` option is not
839
         * `true`.
840
         * @default 0
841
         */
842
        maxRetries?: number;
843
    }
844
845
    /**
846
     * Asynchronous rmdir(2) - delete a directory.
847
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
848
     */
849
    export function rmdir(path: PathLike, callback: NoParamCallback): void;
850
    export function rmdir(path: PathLike, options: RmDirAsyncOptions, callback: NoParamCallback): void;
851
852
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
853
    export namespace rmdir {
854
        /**
855
         * Asynchronous rmdir(2) - delete a directory.
856
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
857
         */
858
        function __promisify__(path: PathLike, options?: RmDirAsyncOptions): Promise<void>;
859
    }
860
861
    /**
862
     * Synchronous rmdir(2) - delete a directory.
863
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
864
     */
865
    export function rmdirSync(path: PathLike, options?: RmDirOptions): void;
866
867
    export interface MakeDirectoryOptions {
868
        /**
869
         * Indicates whether parent folders should be created.
870
         * If a folder was created, the path to the first created folder will be returned.
871
         * @default false
872
         */
873
        recursive?: boolean;
874
        /**
875
         * A file mode. If a string is passed, it is parsed as an octal integer. If not specified
876
         * @default 0o777
877
         */
878
        mode?: Mode;
879
    }
880
881
    /**
882
     * Asynchronous mkdir(2) - create a directory.
883
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
884
     * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
885
     * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
886
     */
887
    export function mkdir(path: PathLike, options: MakeDirectoryOptions & { recursive: true }, callback: (err: NodeJS.ErrnoException | null, path: string) => void): void;
888
889
    /**
890
     * Asynchronous mkdir(2) - create a directory.
891
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
892
     * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
893
     * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
894
     */
895
    export function mkdir(path: PathLike, options: Mode | (MakeDirectoryOptions & { recursive?: false; }) | null | undefined, callback: NoParamCallback): void;
896
897
    /**
898
     * Asynchronous mkdir(2) - create a directory.
899
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
900
     * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
901
     * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
902
     */
903
    export function mkdir(path: PathLike, options: Mode | MakeDirectoryOptions | null | undefined, callback: (err: NodeJS.ErrnoException | null, path: string | undefined) => void): void;
904
905
    /**
906
     * Asynchronous mkdir(2) - create a directory with a mode of `0o777`.
907
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
908
     */
909
    export function mkdir(path: PathLike, callback: NoParamCallback): void;
910
911
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
912
    export namespace mkdir {
913
        /**
914
         * Asynchronous mkdir(2) - create a directory.
915
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
916
         * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
917
         * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
918
         */
919
        function __promisify__(path: PathLike, options: MakeDirectoryOptions & { recursive: true; }): Promise<string>;
920
921
        /**
922
         * Asynchronous mkdir(2) - create a directory.
923
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
924
         * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
925
         * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
926
         */
927
        function __promisify__(path: PathLike, options?: Mode | (MakeDirectoryOptions & { recursive?: false; }) | null): Promise<void>;
928
929
        /**
930
         * Asynchronous mkdir(2) - create a directory.
931
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
932
         * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
933
         * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
934
         */
935
        function __promisify__(path: PathLike, options?: Mode | MakeDirectoryOptions | null): Promise<string | undefined>;
936
    }
937
938
    /**
939
     * Synchronous mkdir(2) - create a directory.
940
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
941
     * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
942
     * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
943
     */
944
    export function mkdirSync(path: PathLike, options: MakeDirectoryOptions & { recursive: true; }): string;
945
946
    /**
947
     * Synchronous mkdir(2) - create a directory.
948
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
949
     * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
950
     * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
951
     */
952
    export function mkdirSync(path: PathLike, options?: Mode | (MakeDirectoryOptions & { recursive?: false; }) | null): void;
953
954
    /**
955
     * Synchronous mkdir(2) - create a directory.
956
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
957
     * @param options Either the file mode, or an object optionally specifying the file mode and whether parent folders
958
     * should be created. If a string is passed, it is parsed as an octal integer. If not specified, defaults to `0o777`.
959
     */
960
    export function mkdirSync(path: PathLike, options?: Mode | MakeDirectoryOptions | null): string | undefined;
961
962
    /**
963
     * Asynchronously creates a unique temporary directory.
964
     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
965
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
966
     */
967
    export function mkdtemp(prefix: string, options: BaseEncodingOptions | BufferEncoding | undefined | null, callback: (err: NodeJS.ErrnoException | null, folder: string) => void): void;
968
969
    /**
970
     * Asynchronously creates a unique temporary directory.
971
     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
972
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
973
     */
974
    export function mkdtemp(prefix: string, options: "buffer" | { encoding: "buffer" }, callback: (err: NodeJS.ErrnoException | null, folder: Buffer) => void): void;
975
976
    /**
977
     * Asynchronously creates a unique temporary directory.
978
     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
979
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
980
     */
981
    export function mkdtemp(prefix: string, options: BaseEncodingOptions | string | undefined | null, callback: (err: NodeJS.ErrnoException | null, folder: string | Buffer) => void): void;
982
983
    /**
984
     * Asynchronously creates a unique temporary directory.
985
     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
986
     */
987
    export function mkdtemp(prefix: string, callback: (err: NodeJS.ErrnoException | null, folder: string) => void): void;
988
989
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
990
    export namespace mkdtemp {
991
        /**
992
         * Asynchronously creates a unique temporary directory.
993
         * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
994
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
995
         */
996
        function __promisify__(prefix: string, options?: BaseEncodingOptions | BufferEncoding | null): Promise<string>;
997
998
        /**
999
         * Asynchronously creates a unique temporary directory.
1000
         * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
1001
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1002
         */
1003
        function __promisify__(prefix: string, options: BufferEncodingOption): Promise<Buffer>;
1004
1005
        /**
1006
         * Asynchronously creates a unique temporary directory.
1007
         * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
1008
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1009
         */
1010
        function __promisify__(prefix: string, options?: BaseEncodingOptions | string | null): Promise<string | Buffer>;
1011
    }
1012
1013
    /**
1014
     * Synchronously creates a unique temporary directory.
1015
     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
1016
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1017
     */
1018
    export function mkdtempSync(prefix: string, options?: BaseEncodingOptions | BufferEncoding | null): string;
1019
1020
    /**
1021
     * Synchronously creates a unique temporary directory.
1022
     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
1023
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1024
     */
1025
    export function mkdtempSync(prefix: string, options: BufferEncodingOption): Buffer;
1026
1027
    /**
1028
     * Synchronously creates a unique temporary directory.
1029
     * Generates six random characters to be appended behind a required prefix to create a unique temporary directory.
1030
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1031
     */
1032
    export function mkdtempSync(prefix: string, options?: BaseEncodingOptions | string | null): string | Buffer;
1033
1034
    /**
1035
     * Asynchronous readdir(3) - read a directory.
1036
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1037
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1038
     */
1039
    export function readdir(
1040
        path: PathLike,
1041
        options: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | undefined | null,
1042
        callback: (err: NodeJS.ErrnoException | null, files: string[]) => void,
1043
    ): void;
1044
1045
    /**
1046
     * Asynchronous readdir(3) - read a directory.
1047
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1048
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1049
     */
1050
    export function readdir(path: PathLike, options: { encoding: "buffer"; withFileTypes?: false } | "buffer", callback: (err: NodeJS.ErrnoException | null, files: Buffer[]) => void): void;
1051
1052
    /**
1053
     * Asynchronous readdir(3) - read a directory.
1054
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1055
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1056
     */
1057
    export function readdir(
1058
        path: PathLike,
1059
        options: BaseEncodingOptions & { withFileTypes?: false } | BufferEncoding | undefined | null,
1060
        callback: (err: NodeJS.ErrnoException | null, files: string[] | Buffer[]) => void,
1061
    ): void;
1062
1063
    /**
1064
     * Asynchronous readdir(3) - read a directory.
1065
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1066
     */
1067
    export function readdir(path: PathLike, callback: (err: NodeJS.ErrnoException | null, files: string[]) => void): void;
1068
1069
    /**
1070
     * Asynchronous readdir(3) - read a directory.
1071
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1072
     * @param options If called with `withFileTypes: true` the result data will be an array of Dirent.
1073
     */
1074
    export function readdir(path: PathLike, options: BaseEncodingOptions & { withFileTypes: true }, callback: (err: NodeJS.ErrnoException | null, files: Dirent[]) => void): void;
1075
1076
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1077
    export namespace readdir {
1078
        /**
1079
         * Asynchronous readdir(3) - read a directory.
1080
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1081
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1082
         */
1083
        function __promisify__(path: PathLike, options?: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | null): Promise<string[]>;
1084
1085
        /**
1086
         * Asynchronous readdir(3) - read a directory.
1087
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1088
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1089
         */
1090
        function __promisify__(path: PathLike, options: "buffer" | { encoding: "buffer"; withFileTypes?: false }): Promise<Buffer[]>;
1091
1092
        /**
1093
         * Asynchronous readdir(3) - read a directory.
1094
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1095
         * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1096
         */
1097
        function __promisify__(path: PathLike, options?: BaseEncodingOptions & { withFileTypes?: false } | BufferEncoding | null): Promise<string[] | Buffer[]>;
1098
1099
        /**
1100
         * Asynchronous readdir(3) - read a directory.
1101
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1102
         * @param options If called with `withFileTypes: true` the result data will be an array of Dirent
1103
         */
1104
        function __promisify__(path: PathLike, options: BaseEncodingOptions & { withFileTypes: true }): Promise<Dirent[]>;
1105
    }
1106
1107
    /**
1108
     * Synchronous readdir(3) - read a directory.
1109
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1110
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1111
     */
1112
    export function readdirSync(path: PathLike, options?: { encoding: BufferEncoding | null; withFileTypes?: false } | BufferEncoding | null): string[];
1113
1114
    /**
1115
     * Synchronous readdir(3) - read a directory.
1116
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1117
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1118
     */
1119
    export function readdirSync(path: PathLike, options: { encoding: "buffer"; withFileTypes?: false } | "buffer"): Buffer[];
1120
1121
    /**
1122
     * Synchronous readdir(3) - read a directory.
1123
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1124
     * @param options The encoding (or an object specifying the encoding), used as the encoding of the result. If not provided, `'utf8'` is used.
1125
     */
1126
    export function readdirSync(path: PathLike, options?: BaseEncodingOptions & { withFileTypes?: false } | BufferEncoding | null): string[] | Buffer[];
1127
1128
    /**
1129
     * Synchronous readdir(3) - read a directory.
1130
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1131
     * @param options If called with `withFileTypes: true` the result data will be an array of Dirent.
1132
     */
1133
    export function readdirSync(path: PathLike, options: BaseEncodingOptions & { withFileTypes: true }): Dirent[];
1134
1135
    /**
1136
     * Asynchronous close(2) - close a file descriptor.
1137
     * @param fd A file descriptor.
1138
     */
1139
    export function close(fd: number, callback: NoParamCallback): void;
1140
1141
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1142
    export namespace close {
1143
        /**
1144
         * Asynchronous close(2) - close a file descriptor.
1145
         * @param fd A file descriptor.
1146
         */
1147
        function __promisify__(fd: number): Promise<void>;
1148
    }
1149
1150
    /**
1151
     * Synchronous close(2) - close a file descriptor.
1152
     * @param fd A file descriptor.
1153
     */
1154
    export function closeSync(fd: number): void;
1155
1156
    /**
1157
     * Asynchronous open(2) - open and possibly create a file.
1158
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1159
     * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.
1160
     */
1161
    export function open(path: PathLike, flags: OpenMode, mode: Mode | undefined | null, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
1162
1163
    /**
1164
     * Asynchronous open(2) - open and possibly create a file. If the file is created, its mode will be `0o666`.
1165
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1166
     */
1167
    export function open(path: PathLike, flags: OpenMode, callback: (err: NodeJS.ErrnoException | null, fd: number) => void): void;
1168
1169
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1170
    export namespace open {
1171
        /**
1172
         * Asynchronous open(2) - open and possibly create a file.
1173
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1174
         * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.
1175
         */
1176
        function __promisify__(path: PathLike, flags: OpenMode, mode?: Mode | null): Promise<number>;
1177
    }
1178
1179
    /**
1180
     * Synchronous open(2) - open and possibly create a file, returning a file descriptor..
1181
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1182
     * @param mode A file mode. If a string is passed, it is parsed as an octal integer. If not supplied, defaults to `0o666`.
1183
     */
1184
    export function openSync(path: PathLike, flags: OpenMode, mode?: Mode | null): number;
1185
1186
    /**
1187
     * Asynchronously change file timestamps of the file referenced by the supplied path.
1188
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1189
     * @param atime The last access time. If a string is provided, it will be coerced to number.
1190
     * @param mtime The last modified time. If a string is provided, it will be coerced to number.
1191
     */
1192
    export function utimes(path: PathLike, atime: string | number | Date, mtime: string | number | Date, callback: NoParamCallback): void;
1193
1194
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1195
    export namespace utimes {
1196
        /**
1197
         * Asynchronously change file timestamps of the file referenced by the supplied path.
1198
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1199
         * @param atime The last access time. If a string is provided, it will be coerced to number.
1200
         * @param mtime The last modified time. If a string is provided, it will be coerced to number.
1201
         */
1202
        function __promisify__(path: PathLike, atime: string | number | Date, mtime: string | number | Date): Promise<void>;
1203
    }
1204
1205
    /**
1206
     * Synchronously change file timestamps of the file referenced by the supplied path.
1207
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1208
     * @param atime The last access time. If a string is provided, it will be coerced to number.
1209
     * @param mtime The last modified time. If a string is provided, it will be coerced to number.
1210
     */
1211
    export function utimesSync(path: PathLike, atime: string | number | Date, mtime: string | number | Date): void;
1212
1213
    /**
1214
     * Asynchronously change file timestamps of the file referenced by the supplied file descriptor.
1215
     * @param fd A file descriptor.
1216
     * @param atime The last access time. If a string is provided, it will be coerced to number.
1217
     * @param mtime The last modified time. If a string is provided, it will be coerced to number.
1218
     */
1219
    export function futimes(fd: number, atime: string | number | Date, mtime: string | number | Date, callback: NoParamCallback): void;
1220
1221
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1222
    export namespace futimes {
1223
        /**
1224
         * Asynchronously change file timestamps of the file referenced by the supplied file descriptor.
1225
         * @param fd A file descriptor.
1226
         * @param atime The last access time. If a string is provided, it will be coerced to number.
1227
         * @param mtime The last modified time. If a string is provided, it will be coerced to number.
1228
         */
1229
        function __promisify__(fd: number, atime: string | number | Date, mtime: string | number | Date): Promise<void>;
1230
    }
1231
1232
    /**
1233
     * Synchronously change file timestamps of the file referenced by the supplied file descriptor.
1234
     * @param fd A file descriptor.
1235
     * @param atime The last access time. If a string is provided, it will be coerced to number.
1236
     * @param mtime The last modified time. If a string is provided, it will be coerced to number.
1237
     */
1238
    export function futimesSync(fd: number, atime: string | number | Date, mtime: string | number | Date): void;
1239
1240
    /**
1241
     * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
1242
     * @param fd A file descriptor.
1243
     */
1244
    export function fsync(fd: number, callback: NoParamCallback): void;
1245
1246
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1247
    export namespace fsync {
1248
        /**
1249
         * Asynchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
1250
         * @param fd A file descriptor.
1251
         */
1252
        function __promisify__(fd: number): Promise<void>;
1253
    }
1254
1255
    /**
1256
     * Synchronous fsync(2) - synchronize a file's in-core state with the underlying storage device.
1257
     * @param fd A file descriptor.
1258
     */
1259
    export function fsyncSync(fd: number): void;
1260
1261
    /**
1262
     * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
1263
     * @param fd A file descriptor.
1264
     * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
1265
     * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
1266
     * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
1267
     */
1268
    export function write<TBuffer extends NodeJS.ArrayBufferView>(
1269
        fd: number,
1270
        buffer: TBuffer,
1271
        offset: number | undefined | null,
1272
        length: number | undefined | null,
1273
        position: number | undefined | null,
1274
        callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void,
1275
    ): void;
1276
1277
    /**
1278
     * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
1279
     * @param fd A file descriptor.
1280
     * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
1281
     * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
1282
     */
1283
    export function write<TBuffer extends NodeJS.ArrayBufferView>(
1284
        fd: number,
1285
        buffer: TBuffer,
1286
        offset: number | undefined | null,
1287
        length: number | undefined | null,
1288
        callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void,
1289
    ): void;
1290
1291
    /**
1292
     * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
1293
     * @param fd A file descriptor.
1294
     * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
1295
     */
1296
    export function write<TBuffer extends NodeJS.ArrayBufferView>(
1297
        fd: number,
1298
        buffer: TBuffer,
1299
        offset: number | undefined | null,
1300
        callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void
1301
    ): void;
1302
1303
    /**
1304
     * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
1305
     * @param fd A file descriptor.
1306
     */
1307
    export function write<TBuffer extends NodeJS.ArrayBufferView>(fd: number, buffer: TBuffer, callback: (err: NodeJS.ErrnoException | null, written: number, buffer: TBuffer) => void): void;
1308
1309
    /**
1310
     * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
1311
     * @param fd A file descriptor.
1312
     * @param string A string to write.
1313
     * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
1314
     * @param encoding The expected string encoding.
1315
     */
1316
    export function write(
1317
        fd: number,
1318
        string: string,
1319
        position: number | undefined | null,
1320
        encoding: BufferEncoding | undefined | null,
1321
        callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void,
1322
    ): void;
1323
1324
    /**
1325
     * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
1326
     * @param fd A file descriptor.
1327
     * @param string A string to write.
1328
     * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
1329
     */
1330
    export function write(fd: number, string: string, position: number | undefined | null, callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void): void;
1331
1332
    /**
1333
     * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
1334
     * @param fd A file descriptor.
1335
     * @param string A string to write.
1336
     */
1337
    export function write(fd: number, string: string, callback: (err: NodeJS.ErrnoException | null, written: number, str: string) => void): void;
1338
1339
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1340
    export namespace write {
1341
        /**
1342
         * Asynchronously writes `buffer` to the file referenced by the supplied file descriptor.
1343
         * @param fd A file descriptor.
1344
         * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
1345
         * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
1346
         * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
1347
         */
1348
        function __promisify__<TBuffer extends NodeJS.ArrayBufferView>(
1349
            fd: number,
1350
            buffer?: TBuffer,
1351
            offset?: number,
1352
            length?: number,
1353
            position?: number | null,
1354
        ): Promise<{ bytesWritten: number, buffer: TBuffer }>;
1355
1356
        /**
1357
         * Asynchronously writes `string` to the file referenced by the supplied file descriptor.
1358
         * @param fd A file descriptor.
1359
         * @param string A string to write.
1360
         * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
1361
         * @param encoding The expected string encoding.
1362
         */
1363
        function __promisify__(fd: number, string: string, position?: number | null, encoding?: BufferEncoding | null): Promise<{ bytesWritten: number, buffer: string }>;
1364
    }
1365
1366
    /**
1367
     * Synchronously writes `buffer` to the file referenced by the supplied file descriptor, returning the number of bytes written.
1368
     * @param fd A file descriptor.
1369
     * @param offset The part of the buffer to be written. If not supplied, defaults to `0`.
1370
     * @param length The number of bytes to write. If not supplied, defaults to `buffer.length - offset`.
1371
     * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
1372
     */
1373
    export function writeSync(fd: number, buffer: NodeJS.ArrayBufferView, offset?: number | null, length?: number | null, position?: number | null): number;
1374
1375
    /**
1376
     * Synchronously writes `string` to the file referenced by the supplied file descriptor, returning the number of bytes written.
1377
     * @param fd A file descriptor.
1378
     * @param string A string to write.
1379
     * @param position The offset from the beginning of the file where this data should be written. If not supplied, defaults to the current position.
1380
     * @param encoding The expected string encoding.
1381
     */
1382
    export function writeSync(fd: number, string: string, position?: number | null, encoding?: BufferEncoding | null): number;
1383
1384
    /**
1385
     * Asynchronously reads data from the file referenced by the supplied file descriptor.
1386
     * @param fd A file descriptor.
1387
     * @param buffer The buffer that the data will be written to.
1388
     * @param offset The offset in the buffer at which to start writing.
1389
     * @param length The number of bytes to read.
1390
     * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.
1391
     */
1392
    export function read<TBuffer extends NodeJS.ArrayBufferView>(
1393
        fd: number,
1394
        buffer: TBuffer,
1395
        offset: number,
1396
        length: number,
1397
        position: number | null,
1398
        callback: (err: NodeJS.ErrnoException | null, bytesRead: number, buffer: TBuffer) => void,
1399
    ): void;
1400
1401
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1402
    export namespace read {
1403
        /**
1404
         * @param fd A file descriptor.
1405
         * @param buffer The buffer that the data will be written to.
1406
         * @param offset The offset in the buffer at which to start writing.
1407
         * @param length The number of bytes to read.
1408
         * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.
1409
         */
1410
        function __promisify__<TBuffer extends NodeJS.ArrayBufferView>(
1411
            fd: number,
1412
            buffer: TBuffer,
1413
            offset: number,
1414
            length: number,
1415
            position: number | null
1416
        ): Promise<{ bytesRead: number, buffer: TBuffer }>;
1417
    }
1418
1419
    export interface ReadSyncOptions {
1420
        /**
1421
         * @default 0
1422
         */
1423
        offset?: number;
1424
        /**
1425
         * @default `length of buffer`
1426
         */
1427
        length?: number;
1428
        /**
1429
         * @default null
1430
         */
1431
        position?: number | null;
1432
    }
1433
1434
    /**
1435
     * Synchronously reads data from the file referenced by the supplied file descriptor, returning the number of bytes read.
1436
     * @param fd A file descriptor.
1437
     * @param buffer The buffer that the data will be written to.
1438
     * @param offset The offset in the buffer at which to start writing.
1439
     * @param length The number of bytes to read.
1440
     * @param position The offset from the beginning of the file from which data should be read. If `null`, data will be read from the current position.
1441
     */
1442
    export function readSync(fd: number, buffer: NodeJS.ArrayBufferView, offset: number, length: number, position: number | null): number;
1443
1444
    /**
1445
     * Similar to the above `fs.readSync` function, this version takes an optional `options` object.
1446
     * If no `options` object is specified, it will default with the above values.
1447
     */
1448
    export function readSync(fd: number, buffer: NodeJS.ArrayBufferView, opts?: ReadSyncOptions): number;
1449
1450
    /**
1451
     * Asynchronously reads the entire contents of a file.
1452
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1453
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1454
     * @param options An object that may contain an optional flag.
1455
     * If a flag is not provided, it defaults to `'r'`.
1456
     */
1457
    export function readFile(path: PathLike | number, options: { encoding?: null; flag?: string; } | undefined | null, callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void): void;
1458
1459
    /**
1460
     * Asynchronously reads the entire contents of a file.
1461
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1462
     * URL support is _experimental_.
1463
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1464
     * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
1465
     * If a flag is not provided, it defaults to `'r'`.
1466
     */
1467
    export function readFile(path: PathLike | number, options: { encoding: BufferEncoding; flag?: string; } | string, callback: (err: NodeJS.ErrnoException | null, data: string) => void): void;
1468
1469
    /**
1470
     * Asynchronously reads the entire contents of a file.
1471
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1472
     * URL support is _experimental_.
1473
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1474
     * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
1475
     * If a flag is not provided, it defaults to `'r'`.
1476
     */
1477
    export function readFile(
1478
        path: PathLike | number,
1479
        options: BaseEncodingOptions & { flag?: string; } | string | undefined | null,
1480
        callback: (err: NodeJS.ErrnoException | null, data: string | Buffer) => void,
1481
    ): void;
1482
1483
    /**
1484
     * Asynchronously reads the entire contents of a file.
1485
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1486
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1487
     */
1488
    export function readFile(path: PathLike | number, callback: (err: NodeJS.ErrnoException | null, data: Buffer) => void): void;
1489
1490
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1491
    export namespace readFile {
1492
        /**
1493
         * Asynchronously reads the entire contents of a file.
1494
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1495
         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1496
         * @param options An object that may contain an optional flag.
1497
         * If a flag is not provided, it defaults to `'r'`.
1498
         */
1499
        function __promisify__(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Promise<Buffer>;
1500
1501
        /**
1502
         * Asynchronously reads the entire contents of a file.
1503
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1504
         * URL support is _experimental_.
1505
         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1506
         * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
1507
         * If a flag is not provided, it defaults to `'r'`.
1508
         */
1509
        function __promisify__(path: PathLike | number, options: { encoding: BufferEncoding; flag?: string; } | string): Promise<string>;
1510
1511
        /**
1512
         * Asynchronously reads the entire contents of a file.
1513
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1514
         * URL support is _experimental_.
1515
         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1516
         * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
1517
         * If a flag is not provided, it defaults to `'r'`.
1518
         */
1519
        function __promisify__(path: PathLike | number, options?: BaseEncodingOptions & { flag?: string; } | string | null): Promise<string | Buffer>;
1520
    }
1521
1522
    /**
1523
     * Synchronously reads the entire contents of a file.
1524
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1525
     * URL support is _experimental_.
1526
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1527
     * @param options An object that may contain an optional flag. If a flag is not provided, it defaults to `'r'`.
1528
     */
1529
    export function readFileSync(path: PathLike | number, options?: { encoding?: null; flag?: string; } | null): Buffer;
1530
1531
    /**
1532
     * Synchronously reads the entire contents of a file.
1533
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1534
     * URL support is _experimental_.
1535
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1536
     * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
1537
     * If a flag is not provided, it defaults to `'r'`.
1538
     */
1539
    export function readFileSync(path: PathLike | number, options: { encoding: BufferEncoding; flag?: string; } | BufferEncoding): string;
1540
1541
    /**
1542
     * Synchronously reads the entire contents of a file.
1543
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1544
     * URL support is _experimental_.
1545
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1546
     * @param options Either the encoding for the result, or an object that contains the encoding and an optional flag.
1547
     * If a flag is not provided, it defaults to `'r'`.
1548
     */
1549
    export function readFileSync(path: PathLike | number, options?: BaseEncodingOptions & { flag?: string; } | BufferEncoding | null): string | Buffer;
1550
1551
    export type WriteFileOptions = BaseEncodingOptions & { mode?: Mode; flag?: string; } | string | null;
1552
1553
    /**
1554
     * Asynchronously writes data to a file, replacing the file if it already exists.
1555
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1556
     * URL support is _experimental_.
1557
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1558
     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
1559
     * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
1560
     * If `encoding` is not supplied, the default of `'utf8'` is used.
1561
     * If `mode` is not supplied, the default of `0o666` is used.
1562
     * If `mode` is a string, it is parsed as an octal integer.
1563
     * If `flag` is not supplied, the default of `'w'` is used.
1564
     */
1565
    export function writeFile(path: PathLike | number, data: string | NodeJS.ArrayBufferView, options: WriteFileOptions, callback: NoParamCallback): void;
1566
1567
    /**
1568
     * Asynchronously writes data to a file, replacing the file if it already exists.
1569
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1570
     * URL support is _experimental_.
1571
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1572
     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
1573
     */
1574
    export function writeFile(path: PathLike | number, data: string | NodeJS.ArrayBufferView, callback: NoParamCallback): void;
1575
1576
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1577
    export namespace writeFile {
1578
        /**
1579
         * Asynchronously writes data to a file, replacing the file if it already exists.
1580
         * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1581
         * URL support is _experimental_.
1582
         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1583
         * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
1584
         * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
1585
         * If `encoding` is not supplied, the default of `'utf8'` is used.
1586
         * If `mode` is not supplied, the default of `0o666` is used.
1587
         * If `mode` is a string, it is parsed as an octal integer.
1588
         * If `flag` is not supplied, the default of `'w'` is used.
1589
         */
1590
        function __promisify__(path: PathLike | number, data: string | NodeJS.ArrayBufferView, options?: WriteFileOptions): Promise<void>;
1591
    }
1592
1593
    /**
1594
     * Synchronously writes data to a file, replacing the file if it already exists.
1595
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1596
     * URL support is _experimental_.
1597
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1598
     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
1599
     * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
1600
     * If `encoding` is not supplied, the default of `'utf8'` is used.
1601
     * If `mode` is not supplied, the default of `0o666` is used.
1602
     * If `mode` is a string, it is parsed as an octal integer.
1603
     * If `flag` is not supplied, the default of `'w'` is used.
1604
     */
1605
    export function writeFileSync(path: PathLike | number, data: string | NodeJS.ArrayBufferView, options?: WriteFileOptions): void;
1606
1607
    /**
1608
     * Asynchronously append data to a file, creating the file if it does not exist.
1609
     * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
1610
     * URL support is _experimental_.
1611
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1612
     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
1613
     * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
1614
     * If `encoding` is not supplied, the default of `'utf8'` is used.
1615
     * If `mode` is not supplied, the default of `0o666` is used.
1616
     * If `mode` is a string, it is parsed as an octal integer.
1617
     * If `flag` is not supplied, the default of `'a'` is used.
1618
     */
1619
    export function appendFile(file: PathLike | number, data: string | Uint8Array, options: WriteFileOptions, callback: NoParamCallback): void;
1620
1621
    /**
1622
     * Asynchronously append data to a file, creating the file if it does not exist.
1623
     * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
1624
     * URL support is _experimental_.
1625
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1626
     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
1627
     */
1628
    export function appendFile(file: PathLike | number, data: string | Uint8Array, callback: NoParamCallback): void;
1629
1630
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1631
    export namespace appendFile {
1632
        /**
1633
         * Asynchronously append data to a file, creating the file if it does not exist.
1634
         * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
1635
         * URL support is _experimental_.
1636
         * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1637
         * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
1638
         * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
1639
         * If `encoding` is not supplied, the default of `'utf8'` is used.
1640
         * If `mode` is not supplied, the default of `0o666` is used.
1641
         * If `mode` is a string, it is parsed as an octal integer.
1642
         * If `flag` is not supplied, the default of `'a'` is used.
1643
         */
1644
        function __promisify__(file: PathLike | number, data: string | Uint8Array, options?: WriteFileOptions): Promise<void>;
1645
    }
1646
1647
    /**
1648
     * Synchronously append data to a file, creating the file if it does not exist.
1649
     * @param file A path to a file. If a URL is provided, it must use the `file:` protocol.
1650
     * URL support is _experimental_.
1651
     * If a file descriptor is provided, the underlying file will _not_ be closed automatically.
1652
     * @param data The data to write. If something other than a Buffer or Uint8Array is provided, the value is coerced to a string.
1653
     * @param options Either the encoding for the file, or an object optionally specifying the encoding, file mode, and flag.
1654
     * If `encoding` is not supplied, the default of `'utf8'` is used.
1655
     * If `mode` is not supplied, the default of `0o666` is used.
1656
     * If `mode` is a string, it is parsed as an octal integer.
1657
     * If `flag` is not supplied, the default of `'a'` is used.
1658
     */
1659
    export function appendFileSync(file: PathLike | number, data: string | Uint8Array, options?: WriteFileOptions): void;
1660
1661
    /**
1662
     * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed.
1663
     */
1664
    export function watchFile(filename: PathLike, options: { persistent?: boolean; interval?: number; } | undefined, listener: (curr: Stats, prev: Stats) => void): void;
1665
1666
    /**
1667
     * Watch for changes on `filename`. The callback `listener` will be called each time the file is accessed.
1668
     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
1669
     * URL support is _experimental_.
1670
     */
1671
    export function watchFile(filename: PathLike, listener: (curr: Stats, prev: Stats) => void): void;
1672
1673
    /**
1674
     * Stop watching for changes on `filename`.
1675
     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
1676
     * URL support is _experimental_.
1677
     */
1678
    export function unwatchFile(filename: PathLike, listener?: (curr: Stats, prev: Stats) => void): void;
1679
1680
    /**
1681
     * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
1682
     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
1683
     * URL support is _experimental_.
1684
     * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
1685
     * If `encoding` is not supplied, the default of `'utf8'` is used.
1686
     * If `persistent` is not supplied, the default of `true` is used.
1687
     * If `recursive` is not supplied, the default of `false` is used.
1688
     */
1689
    export function watch(
1690
        filename: PathLike,
1691
        options: { encoding?: BufferEncoding | null, persistent?: boolean, recursive?: boolean } | BufferEncoding | undefined | null,
1692
        listener?: (event: string, filename: string) => void,
1693
    ): FSWatcher;
1694
1695
    /**
1696
     * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
1697
     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
1698
     * URL support is _experimental_.
1699
     * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
1700
     * If `encoding` is not supplied, the default of `'utf8'` is used.
1701
     * If `persistent` is not supplied, the default of `true` is used.
1702
     * If `recursive` is not supplied, the default of `false` is used.
1703
     */
1704
    export function watch(filename: PathLike, options: { encoding: "buffer", persistent?: boolean, recursive?: boolean } | "buffer", listener?: (event: string, filename: Buffer) => void): FSWatcher;
1705
1706
    /**
1707
     * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
1708
     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
1709
     * URL support is _experimental_.
1710
     * @param options Either the encoding for the filename provided to the listener, or an object optionally specifying encoding, persistent, and recursive options.
1711
     * If `encoding` is not supplied, the default of `'utf8'` is used.
1712
     * If `persistent` is not supplied, the default of `true` is used.
1713
     * If `recursive` is not supplied, the default of `false` is used.
1714
     */
1715
    export function watch(
1716
        filename: PathLike,
1717
        options: { encoding?: BufferEncoding | null, persistent?: boolean, recursive?: boolean } | string | null,
1718
        listener?: (event: string, filename: string | Buffer) => void,
1719
    ): FSWatcher;
1720
1721
    /**
1722
     * Watch for changes on `filename`, where `filename` is either a file or a directory, returning an `FSWatcher`.
1723
     * @param filename A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
1724
     * URL support is _experimental_.
1725
     */
1726
    export function watch(filename: PathLike, listener?: (event: string, filename: string) => any): FSWatcher;
1727
1728
    /**
1729
     * Asynchronously tests whether or not the given path exists by checking with the file system.
1730
     * @deprecated
1731
     * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
1732
     * URL support is _experimental_.
1733
     */
1734
    export function exists(path: PathLike, callback: (exists: boolean) => void): void;
1735
1736
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1737
    export namespace exists {
1738
        /**
1739
         * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
1740
         * URL support is _experimental_.
1741
         */
1742
        function __promisify__(path: PathLike): Promise<boolean>;
1743
    }
1744
1745
    /**
1746
     * Synchronously tests whether or not the given path exists by checking with the file system.
1747
     * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
1748
     * URL support is _experimental_.
1749
     */
1750
    export function existsSync(path: PathLike): boolean;
1751
1752
    export namespace constants {
1753
        // File Access Constants
1754
1755
        /** Constant for fs.access(). File is visible to the calling process. */
1756
        const F_OK: number;
1757
1758
        /** Constant for fs.access(). File can be read by the calling process. */
1759
        const R_OK: number;
1760
1761
        /** Constant for fs.access(). File can be written by the calling process. */
1762
        const W_OK: number;
1763
1764
        /** Constant for fs.access(). File can be executed by the calling process. */
1765
        const X_OK: number;
1766
1767
        // File Copy Constants
1768
1769
        /** Constant for fs.copyFile. Flag indicating the destination file should not be overwritten if it already exists. */
1770
        const COPYFILE_EXCL: number;
1771
1772
        /**
1773
         * Constant for fs.copyFile. copy operation will attempt to create a copy-on-write reflink.
1774
         * If the underlying platform does not support copy-on-write, then a fallback copy mechanism is used.
1775
         */
1776
        const COPYFILE_FICLONE: number;
1777
1778
        /**
1779
         * Constant for fs.copyFile. Copy operation will attempt to create a copy-on-write reflink.
1780
         * If the underlying platform does not support copy-on-write, then the operation will fail with an error.
1781
         */
1782
        const COPYFILE_FICLONE_FORCE: number;
1783
1784
        // File Open Constants
1785
1786
        /** Constant for fs.open(). Flag indicating to open a file for read-only access. */
1787
        const O_RDONLY: number;
1788
1789
        /** Constant for fs.open(). Flag indicating to open a file for write-only access. */
1790
        const O_WRONLY: number;
1791
1792
        /** Constant for fs.open(). Flag indicating to open a file for read-write access. */
1793
        const O_RDWR: number;
1794
1795
        /** Constant for fs.open(). Flag indicating to create the file if it does not already exist. */
1796
        const O_CREAT: number;
1797
1798
        /** Constant for fs.open(). Flag indicating that opening a file should fail if the O_CREAT flag is set and the file already exists. */
1799
        const O_EXCL: number;
1800
1801
        /**
1802
         * Constant for fs.open(). Flag indicating that if path identifies a terminal device,
1803
         * opening the path shall not cause that terminal to become the controlling terminal for the process
1804
         * (if the process does not already have one).
1805
         */
1806
        const O_NOCTTY: number;
1807
1808
        /** Constant for fs.open(). Flag indicating that if the file exists and is a regular file, and the file is opened successfully for write access, its length shall be truncated to zero. */
1809
        const O_TRUNC: number;
1810
1811
        /** Constant for fs.open(). Flag indicating that data will be appended to the end of the file. */
1812
        const O_APPEND: number;
1813
1814
        /** Constant for fs.open(). Flag indicating that the open should fail if the path is not a directory. */
1815
        const O_DIRECTORY: number;
1816
1817
        /**
1818
         * constant for fs.open().
1819
         * Flag indicating reading accesses to the file system will no longer result in
1820
         * an update to the atime information associated with the file.
1821
         * This flag is available on Linux operating systems only.
1822
         */
1823
        const O_NOATIME: number;
1824
1825
        /** Constant for fs.open(). Flag indicating that the open should fail if the path is a symbolic link. */
1826
        const O_NOFOLLOW: number;
1827
1828
        /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O. */
1829
        const O_SYNC: number;
1830
1831
        /** Constant for fs.open(). Flag indicating that the file is opened for synchronous I/O with write operations waiting for data integrity. */
1832
        const O_DSYNC: number;
1833
1834
        /** Constant for fs.open(). Flag indicating to open the symbolic link itself rather than the resource it is pointing to. */
1835
        const O_SYMLINK: number;
1836
1837
        /** Constant for fs.open(). When set, an attempt will be made to minimize caching effects of file I/O. */
1838
        const O_DIRECT: number;
1839
1840
        /** Constant for fs.open(). Flag indicating to open the file in nonblocking mode when possible. */
1841
        const O_NONBLOCK: number;
1842
1843
        // File Type Constants
1844
1845
        /** Constant for fs.Stats mode property for determining a file's type. Bit mask used to extract the file type code. */
1846
        const S_IFMT: number;
1847
1848
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a regular file. */
1849
        const S_IFREG: number;
1850
1851
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a directory. */
1852
        const S_IFDIR: number;
1853
1854
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a character-oriented device file. */
1855
        const S_IFCHR: number;
1856
1857
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a block-oriented device file. */
1858
        const S_IFBLK: number;
1859
1860
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a FIFO/pipe. */
1861
        const S_IFIFO: number;
1862
1863
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a symbolic link. */
1864
        const S_IFLNK: number;
1865
1866
        /** Constant for fs.Stats mode property for determining a file's type. File type constant for a socket. */
1867
        const S_IFSOCK: number;
1868
1869
        // File Mode Constants
1870
1871
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by owner. */
1872
        const S_IRWXU: number;
1873
1874
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by owner. */
1875
        const S_IRUSR: number;
1876
1877
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by owner. */
1878
        const S_IWUSR: number;
1879
1880
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by owner. */
1881
        const S_IXUSR: number;
1882
1883
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by group. */
1884
        const S_IRWXG: number;
1885
1886
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by group. */
1887
        const S_IRGRP: number;
1888
1889
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by group. */
1890
        const S_IWGRP: number;
1891
1892
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by group. */
1893
        const S_IXGRP: number;
1894
1895
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable, writable and executable by others. */
1896
        const S_IRWXO: number;
1897
1898
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating readable by others. */
1899
        const S_IROTH: number;
1900
1901
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating writable by others. */
1902
        const S_IWOTH: number;
1903
1904
        /** Constant for fs.Stats mode property for determining access permissions for a file. File mode indicating executable by others. */
1905
        const S_IXOTH: number;
1906
1907
        /**
1908
         * When set, a memory file mapping is used to access the file. This flag
1909
         * is available on Windows operating systems only. On other operating systems,
1910
         * this flag is ignored.
1911
         */
1912
        const UV_FS_O_FILEMAP: number;
1913
    }
1914
1915
    /**
1916
     * Asynchronously tests a user's permissions for the file specified by path.
1917
     * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
1918
     * URL support is _experimental_.
1919
     */
1920
    export function access(path: PathLike, mode: number | undefined, callback: NoParamCallback): void;
1921
1922
    /**
1923
     * Asynchronously tests a user's permissions for the file specified by path.
1924
     * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
1925
     * URL support is _experimental_.
1926
     */
1927
    export function access(path: PathLike, callback: NoParamCallback): void;
1928
1929
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1930
    export namespace access {
1931
        /**
1932
         * Asynchronously tests a user's permissions for the file specified by path.
1933
         * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
1934
         * URL support is _experimental_.
1935
         */
1936
        function __promisify__(path: PathLike, mode?: number): Promise<void>;
1937
    }
1938
1939
    /**
1940
     * Synchronously tests a user's permissions for the file specified by path.
1941
     * @param path A path to a file or directory. If a URL is provided, it must use the `file:` protocol.
1942
     * URL support is _experimental_.
1943
     */
1944
    export function accessSync(path: PathLike, mode?: number): void;
1945
1946
    /**
1947
     * Returns a new `ReadStream` object.
1948
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1949
     * URL support is _experimental_.
1950
     */
1951
    export function createReadStream(path: PathLike, options?: string | {
1952
        flags?: string;
1953
        encoding?: BufferEncoding;
1954
        fd?: number;
1955
        mode?: number;
1956
        autoClose?: boolean;
1957
        /**
1958
         * @default false
1959
         */
1960
        emitClose?: boolean;
1961
        start?: number;
1962
        end?: number;
1963
        highWaterMark?: number;
1964
    }): ReadStream;
1965
1966
    /**
1967
     * Returns a new `WriteStream` object.
1968
     * @param path A path to a file. If a URL is provided, it must use the `file:` protocol.
1969
     * URL support is _experimental_.
1970
     */
1971
    export function createWriteStream(path: PathLike, options?: string | {
1972
        flags?: string;
1973
        encoding?: BufferEncoding;
1974
        fd?: number;
1975
        mode?: number;
1976
        autoClose?: boolean;
1977
        emitClose?: boolean;
1978
        start?: number;
1979
        highWaterMark?: number;
1980
    }): WriteStream;
1981
1982
    /**
1983
     * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device.
1984
     * @param fd A file descriptor.
1985
     */
1986
    export function fdatasync(fd: number, callback: NoParamCallback): void;
1987
1988
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
1989
    export namespace fdatasync {
1990
        /**
1991
         * Asynchronous fdatasync(2) - synchronize a file's in-core state with storage device.
1992
         * @param fd A file descriptor.
1993
         */
1994
        function __promisify__(fd: number): Promise<void>;
1995
    }
1996
1997
    /**
1998
     * Synchronous fdatasync(2) - synchronize a file's in-core state with storage device.
1999
     * @param fd A file descriptor.
2000
     */
2001
    export function fdatasyncSync(fd: number): void;
2002
2003
    /**
2004
     * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.
2005
     * No arguments other than a possible exception are given to the callback function.
2006
     * Node.js makes no guarantees about the atomicity of the copy operation.
2007
     * If an error occurs after the destination file has been opened for writing, Node.js will attempt
2008
     * to remove the destination.
2009
     * @param src A path to the source file.
2010
     * @param dest A path to the destination file.
2011
     */
2012
    export function copyFile(src: PathLike, dest: PathLike, callback: NoParamCallback): void;
2013
    /**
2014
     * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.
2015
     * No arguments other than a possible exception are given to the callback function.
2016
     * Node.js makes no guarantees about the atomicity of the copy operation.
2017
     * If an error occurs after the destination file has been opened for writing, Node.js will attempt
2018
     * to remove the destination.
2019
     * @param src A path to the source file.
2020
     * @param dest A path to the destination file.
2021
     * @param flags An integer that specifies the behavior of the copy operation. The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists.
2022
     */
2023
    export function copyFile(src: PathLike, dest: PathLike, flags: number, callback: NoParamCallback): void;
2024
2025
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
2026
    export namespace copyFile {
2027
        /**
2028
         * Asynchronously copies src to dest. By default, dest is overwritten if it already exists.
2029
         * No arguments other than a possible exception are given to the callback function.
2030
         * Node.js makes no guarantees about the atomicity of the copy operation.
2031
         * If an error occurs after the destination file has been opened for writing, Node.js will attempt
2032
         * to remove the destination.
2033
         * @param src A path to the source file.
2034
         * @param dest A path to the destination file.
2035
         * @param flags An optional integer that specifies the behavior of the copy operation.
2036
         * The only supported flag is fs.constants.COPYFILE_EXCL,
2037
         * which causes the copy operation to fail if dest already exists.
2038
         */
2039
        function __promisify__(src: PathLike, dst: PathLike, flags?: number): Promise<void>;
2040
    }
2041
2042
    /**
2043
     * Synchronously copies src to dest. By default, dest is overwritten if it already exists.
2044
     * Node.js makes no guarantees about the atomicity of the copy operation.
2045
     * If an error occurs after the destination file has been opened for writing, Node.js will attempt
2046
     * to remove the destination.
2047
     * @param src A path to the source file.
2048
     * @param dest A path to the destination file.
2049
     * @param flags An optional integer that specifies the behavior of the copy operation.
2050
     * The only supported flag is fs.constants.COPYFILE_EXCL, which causes the copy operation to fail if dest already exists.
2051
     */
2052
    export function copyFileSync(src: PathLike, dest: PathLike, flags?: number): void;
2053
2054
    /**
2055
     * Write an array of ArrayBufferViews to the file specified by fd using writev().
2056
     * position is the offset from the beginning of the file where this data should be written.
2057
     * It is unsafe to use fs.writev() multiple times on the same file without waiting for the callback. For this scenario, use fs.createWriteStream().
2058
     * On Linux, positional writes don't work when the file is opened in append mode.
2059
     * The kernel ignores the position argument and always appends the data to the end of the file.
2060
     */
2061
    export function writev(
2062
        fd: number,
2063
        buffers: NodeJS.ArrayBufferView[],
2064
        cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void
2065
    ): void;
2066
    export function writev(
2067
        fd: number,
2068
        buffers: NodeJS.ArrayBufferView[],
2069
        position: number,
2070
        cb: (err: NodeJS.ErrnoException | null, bytesWritten: number, buffers: NodeJS.ArrayBufferView[]) => void
2071
    ): void;
2072
2073
    export interface WriteVResult {
2074
        bytesWritten: number;
2075
        buffers: NodeJS.ArrayBufferView[];
2076
    }
2077
2078
    export namespace writev {
2079
        function __promisify__(fd: number, buffers: NodeJS.ArrayBufferView[], position?: number): Promise<WriteVResult>;
2080
    }
2081
2082
    /**
2083
     * See `writev`.
2084
     */
2085
    export function writevSync(fd: number, buffers: NodeJS.ArrayBufferView[], position?: number): number;
2086
2087
    export function readv(
2088
        fd: number,
2089
        buffers: NodeJS.ArrayBufferView[],
2090
        cb: (err: NodeJS.ErrnoException | null, bytesRead: number, buffers: NodeJS.ArrayBufferView[]) => void
2091
    ): void;
2092
    export function readv(
2093
        fd: number,
2094
        buffers: NodeJS.ArrayBufferView[],
2095
        position: number,
2096
        cb: (err: NodeJS.ErrnoException | null, bytesRead: number, buffers: NodeJS.ArrayBufferView[]) => void
2097
    ): void;
2098
2099
    export interface ReadVResult {
2100
        bytesRead: number;
2101
        buffers: NodeJS.ArrayBufferView[];
2102
    }
2103
2104
    export namespace readv {
2105
        function __promisify__(fd: number, buffers: NodeJS.ArrayBufferView[], position?: number): Promise<ReadVResult>;
2106
    }
2107
2108
    /**
2109
     * See `readv`.
2110
     */
2111
    export function readvSync(fd: number, buffers: NodeJS.ArrayBufferView[], position?: number): number;
2112
2113
    export interface OpenDirOptions {
2114
        encoding?: BufferEncoding;
2115
        /**
2116
         * Number of directory entries that are buffered
2117
         * internally when reading from the directory. Higher values lead to better
2118
         * performance but higher memory usage.
2119
         * @default 32
2120
         */
2121
        bufferSize?: number;
2122
    }
2123
2124
    export function opendirSync(path: string, options?: OpenDirOptions): Dir;
2125
2126
    export function opendir(path: string, cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void): void;
2127
    export function opendir(path: string, options: OpenDirOptions, cb: (err: NodeJS.ErrnoException | null, dir: Dir) => void): void;
2128
2129
    export namespace opendir {
2130
        function __promisify__(path: string, options?: OpenDirOptions): Promise<Dir>;
2131
    }
2132
}
2133