-
-
Notifications
You must be signed in to change notification settings - Fork 436
/
Copy pathfs-extra.ts
41 lines (36 loc) · 1.34 KB
/
fs-extra.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import * as fs from 'fs';
import { promisify } from 'util';
export const existsSync = fs.existsSync;
export const lstatSync = fs.lstatSync;
export const readdirSync = fs.readdirSync;
export const statSync = fs.statSync;
export const writeFileSync = fs.writeFileSync;
export const readFileSync = fs.readFileSync;
export const exists = promisify(fs.exists);
export const lstat = promisify(fs.lstat);
export const readdir = promisify(fs.readdir);
export const stat = promisify(fs.stat);
export const writeFile = promisify(fs.writeFile);
export const readFile = promisify(fs.readFile);
export const watchFile = fs.watchFile;
export const unwatchFile = fs.unwatchFile;
export function mkdirp(path: string, timeout: number = 3000): Promise<void> {
return new Promise((resolve, reject) => {
let timeoutHandle: NodeJS.Timeout;
if (timeout > 0) {
timeoutHandle = setTimeout(() => {
reject(new Error(`Timeout of ${timeout} ms exceeded while trying to create the directory "${path}"`));
}, timeout);
}
fs.mkdir(path, { recursive: true }, err => {
clearTimeout(timeoutHandle);
if (err)
reject(err);
else
resolve();
});
});
}
export function mkdirpSync(path: string): void {
fs.mkdirSync(path, { recursive: true });
}