rimraf 4.3.0 → 4.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/src/bin.d.ts.map +1 -1
- package/dist/cjs/src/bin.js.map +1 -1
- package/dist/cjs/src/fs.d.ts +5 -3
- package/dist/cjs/src/fs.d.ts.map +1 -1
- package/dist/cjs/src/fs.js +8 -3
- package/dist/cjs/src/fs.js.map +1 -1
- package/dist/cjs/src/ignore-enoent.d.ts.map +1 -1
- package/dist/cjs/src/ignore-enoent.js.map +1 -1
- package/dist/cjs/src/readdir-or-error.d.ts +3 -2
- package/dist/cjs/src/readdir-or-error.d.ts.map +1 -1
- package/dist/cjs/src/readdir-or-error.js.map +1 -1
- package/dist/cjs/src/rimraf-manual.d.ts +2 -2
- package/dist/cjs/src/rimraf-manual.d.ts.map +1 -1
- package/dist/cjs/src/rimraf-move-remove.d.ts.map +1 -1
- package/dist/cjs/src/rimraf-move-remove.js +59 -20
- package/dist/cjs/src/rimraf-move-remove.js.map +1 -1
- package/dist/cjs/src/rimraf-posix.d.ts.map +1 -1
- package/dist/cjs/src/rimraf-posix.js +60 -22
- package/dist/cjs/src/rimraf-posix.js.map +1 -1
- package/dist/cjs/src/rimraf-windows.d.ts +2 -2
- package/dist/cjs/src/rimraf-windows.d.ts.map +1 -1
- package/dist/cjs/src/rimraf-windows.js +64 -32
- package/dist/cjs/src/rimraf-windows.js.map +1 -1
- package/dist/mjs/fs.d.ts +5 -3
- package/dist/mjs/fs.d.ts.map +1 -1
- package/dist/mjs/fs.js +6 -2
- package/dist/mjs/fs.js.map +1 -1
- package/dist/mjs/ignore-enoent.d.ts.map +1 -1
- package/dist/mjs/ignore-enoent.js.map +1 -1
- package/dist/mjs/package.json +1 -1
- package/dist/mjs/readdir-or-error.d.ts +3 -2
- package/dist/mjs/readdir-or-error.d.ts.map +1 -1
- package/dist/mjs/readdir-or-error.js.map +1 -1
- package/dist/mjs/rimraf-manual.d.ts +2 -2
- package/dist/mjs/rimraf-manual.d.ts.map +1 -1
- package/dist/mjs/rimraf-move-remove.d.ts.map +1 -1
- package/dist/mjs/rimraf-move-remove.js +58 -19
- package/dist/mjs/rimraf-move-remove.js.map +1 -1
- package/dist/mjs/rimraf-posix.d.ts.map +1 -1
- package/dist/mjs/rimraf-posix.js +59 -21
- package/dist/mjs/rimraf-posix.js.map +1 -1
- package/dist/mjs/rimraf-windows.d.ts +2 -2
- package/dist/mjs/rimraf-windows.d.ts.map +1 -1
- package/dist/mjs/rimraf-windows.js +63 -31
- package/dist/mjs/rimraf-windows.js.map +1 -1
- package/package.json +1 -1
|
@@ -17,11 +17,11 @@ const ignore_enoent_js_1 = require("./ignore-enoent.js");
|
|
|
17
17
|
const readdir_or_error_js_1 = require("./readdir-or-error.js");
|
|
18
18
|
const retry_busy_js_1 = require("./retry-busy.js");
|
|
19
19
|
const rimraf_move_remove_js_1 = require("./rimraf-move-remove.js");
|
|
20
|
-
const { unlink, rmdir } = fs_js_1.promises;
|
|
20
|
+
const { unlink, rmdir, lstat } = fs_js_1.promises;
|
|
21
21
|
const rimrafWindowsFile = (0, retry_busy_js_1.retryBusy)((0, fix_eperm_js_1.fixEPERM)(unlink));
|
|
22
22
|
const rimrafWindowsFileSync = (0, retry_busy_js_1.retryBusySync)((0, fix_eperm_js_1.fixEPERMSync)(fs_js_1.unlinkSync));
|
|
23
|
-
const
|
|
24
|
-
const
|
|
23
|
+
const rimrafWindowsDirRetry = (0, retry_busy_js_1.retryBusy)((0, fix_eperm_js_1.fixEPERM)(rmdir));
|
|
24
|
+
const rimrafWindowsDirRetrySync = (0, retry_busy_js_1.retryBusySync)((0, fix_eperm_js_1.fixEPERMSync)(fs_js_1.rmdirSync));
|
|
25
25
|
const rimrafWindowsDirMoveRemoveFallback = async (path, opt) => {
|
|
26
26
|
/* c8 ignore start */
|
|
27
27
|
if (opt?.signal?.aborted) {
|
|
@@ -31,7 +31,7 @@ const rimrafWindowsDirMoveRemoveFallback = async (path, opt) => {
|
|
|
31
31
|
// already filtered, remove from options so we don't call unnecessarily
|
|
32
32
|
const { filter, ...options } = opt;
|
|
33
33
|
try {
|
|
34
|
-
return await
|
|
34
|
+
return await rimrafWindowsDirRetry(path, options);
|
|
35
35
|
}
|
|
36
36
|
catch (er) {
|
|
37
37
|
if (er?.code === 'ENOTEMPTY') {
|
|
@@ -47,7 +47,7 @@ const rimrafWindowsDirMoveRemoveFallbackSync = (path, opt) => {
|
|
|
47
47
|
// already filtered, remove from options so we don't call unnecessarily
|
|
48
48
|
const { filter, ...options } = opt;
|
|
49
49
|
try {
|
|
50
|
-
return
|
|
50
|
+
return rimrafWindowsDirRetrySync(path, options);
|
|
51
51
|
}
|
|
52
52
|
catch (er) {
|
|
53
53
|
const fer = er;
|
|
@@ -60,22 +60,52 @@ const rimrafWindowsDirMoveRemoveFallbackSync = (path, opt) => {
|
|
|
60
60
|
const START = Symbol('start');
|
|
61
61
|
const CHILD = Symbol('child');
|
|
62
62
|
const FINISH = Symbol('finish');
|
|
63
|
-
const
|
|
64
|
-
const rimrafWindows = async (path, opt, state = START) => {
|
|
63
|
+
const rimrafWindows = async (path, opt) => {
|
|
65
64
|
if (opt?.signal?.aborted) {
|
|
66
65
|
throw opt.signal.reason;
|
|
67
66
|
}
|
|
68
|
-
|
|
69
|
-
|
|
67
|
+
try {
|
|
68
|
+
return await rimrafWindowsDir(path, opt, await lstat(path), START);
|
|
70
69
|
}
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
if (entries.code === 'ENOENT') {
|
|
70
|
+
catch (er) {
|
|
71
|
+
if (er?.code === 'ENOENT')
|
|
74
72
|
return true;
|
|
73
|
+
throw er;
|
|
74
|
+
}
|
|
75
|
+
};
|
|
76
|
+
exports.rimrafWindows = rimrafWindows;
|
|
77
|
+
const rimrafWindowsSync = (path, opt) => {
|
|
78
|
+
if (opt?.signal?.aborted) {
|
|
79
|
+
throw opt.signal.reason;
|
|
80
|
+
}
|
|
81
|
+
try {
|
|
82
|
+
return rimrafWindowsDirSync(path, opt, (0, fs_js_1.lstatSync)(path), START);
|
|
83
|
+
}
|
|
84
|
+
catch (er) {
|
|
85
|
+
if (er?.code === 'ENOENT')
|
|
86
|
+
return true;
|
|
87
|
+
throw er;
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
exports.rimrafWindowsSync = rimrafWindowsSync;
|
|
91
|
+
const rimrafWindowsDir = async (path, opt, ent, state = START) => {
|
|
92
|
+
if (opt?.signal?.aborted) {
|
|
93
|
+
throw opt.signal.reason;
|
|
94
|
+
}
|
|
95
|
+
const entries = ent.isDirectory() ? await (0, readdir_or_error_js_1.readdirOrError)(path) : null;
|
|
96
|
+
if (!Array.isArray(entries)) {
|
|
97
|
+
// this can only happen if lstat/readdir lied, or if the dir was
|
|
98
|
+
// swapped out with a file at just the right moment.
|
|
99
|
+
/* c8 ignore start */
|
|
100
|
+
if (entries) {
|
|
101
|
+
if (entries.code === 'ENOENT') {
|
|
102
|
+
return true;
|
|
103
|
+
}
|
|
104
|
+
if (entries.code !== 'ENOTDIR') {
|
|
105
|
+
throw entries;
|
|
106
|
+
}
|
|
75
107
|
}
|
|
76
|
-
|
|
77
|
-
throw entries;
|
|
78
|
-
}
|
|
108
|
+
/* c8 ignore stop */
|
|
79
109
|
if (opt.filter && !(await opt.filter(path))) {
|
|
80
110
|
return false;
|
|
81
111
|
}
|
|
@@ -84,9 +114,9 @@ const rimrafWindows = async (path, opt, state = START) => {
|
|
|
84
114
|
return true;
|
|
85
115
|
}
|
|
86
116
|
const s = state === START ? CHILD : state;
|
|
87
|
-
const removedAll = (await Promise.all(entries.map(
|
|
117
|
+
const removedAll = (await Promise.all(entries.map(ent => rimrafWindowsDir((0, path_1.resolve)(path, ent.name), opt, ent, s)))).reduce((a, b) => a && b, true);
|
|
88
118
|
if (state === START) {
|
|
89
|
-
return (
|
|
119
|
+
return rimrafWindowsDir(path, opt, ent, FINISH);
|
|
90
120
|
}
|
|
91
121
|
else if (state === FINISH) {
|
|
92
122
|
if (opt.preserveRoot === false && path === (0, path_1.parse)(path).root) {
|
|
@@ -102,19 +132,21 @@ const rimrafWindows = async (path, opt, state = START) => {
|
|
|
102
132
|
}
|
|
103
133
|
return true;
|
|
104
134
|
};
|
|
105
|
-
|
|
106
|
-
const
|
|
107
|
-
if (!states.has(state)) {
|
|
108
|
-
throw new TypeError('invalid third argument passed to rimraf');
|
|
109
|
-
}
|
|
110
|
-
const entries = (0, readdir_or_error_js_1.readdirOrErrorSync)(path);
|
|
135
|
+
const rimrafWindowsDirSync = (path, opt, ent, state = START) => {
|
|
136
|
+
const entries = ent.isDirectory() ? (0, readdir_or_error_js_1.readdirOrErrorSync)(path) : null;
|
|
111
137
|
if (!Array.isArray(entries)) {
|
|
112
|
-
if
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if (entries
|
|
116
|
-
|
|
138
|
+
// this can only happen if lstat/readdir lied, or if the dir was
|
|
139
|
+
// swapped out with a file at just the right moment.
|
|
140
|
+
/* c8 ignore start */
|
|
141
|
+
if (entries) {
|
|
142
|
+
if (entries.code === 'ENOENT') {
|
|
143
|
+
return true;
|
|
144
|
+
}
|
|
145
|
+
if (entries.code !== 'ENOTDIR') {
|
|
146
|
+
throw entries;
|
|
147
|
+
}
|
|
117
148
|
}
|
|
149
|
+
/* c8 ignore stop */
|
|
118
150
|
if (opt.filter && !opt.filter(path)) {
|
|
119
151
|
return false;
|
|
120
152
|
}
|
|
@@ -123,12 +155,13 @@ const rimrafWindowsSync = (path, opt, state = START) => {
|
|
|
123
155
|
return true;
|
|
124
156
|
}
|
|
125
157
|
let removedAll = true;
|
|
126
|
-
for (const
|
|
158
|
+
for (const ent of entries) {
|
|
127
159
|
const s = state === START ? CHILD : state;
|
|
128
|
-
|
|
160
|
+
const p = (0, path_1.resolve)(path, ent.name);
|
|
161
|
+
removedAll = rimrafWindowsDirSync(p, opt, ent, s) && removedAll;
|
|
129
162
|
}
|
|
130
163
|
if (state === START) {
|
|
131
|
-
return (
|
|
164
|
+
return rimrafWindowsDirSync(path, opt, ent, FINISH);
|
|
132
165
|
}
|
|
133
166
|
else if (state === FINISH) {
|
|
134
167
|
if (opt.preserveRoot === false && path === (0, path_1.parse)(path).root) {
|
|
@@ -146,5 +179,4 @@ const rimrafWindowsSync = (path, opt, state = START) => {
|
|
|
146
179
|
}
|
|
147
180
|
return true;
|
|
148
181
|
};
|
|
149
|
-
exports.rimrafWindowsSync = rimrafWindowsSync;
|
|
150
182
|
//# sourceMappingURL=rimraf-windows.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rimraf-windows.js","sourceRoot":"","sources":["../../../src/rimraf-windows.ts"],"names":[],"mappings":";AAAA,+DAA+D;AAC/D,EAAE;AACF,sEAAsE;AACtE,wEAAwE;AACxE,gCAAgC;AAChC,0EAA0E;AAC1E,sBAAsB;AACtB,EAAE;AACF,yEAAyE;;;
|
|
1
|
+
{"version":3,"file":"rimraf-windows.js","sourceRoot":"","sources":["../../../src/rimraf-windows.ts"],"names":[],"mappings":"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"}
|
package/dist/mjs/fs.d.ts
CHANGED
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import fs from 'fs';
|
|
2
|
-
export { chmodSync, mkdirSync,
|
|
1
|
+
import fs, { Dirent } from 'fs';
|
|
2
|
+
export { chmodSync, mkdirSync, renameSync, rmdirSync, rmSync, statSync, lstatSync, unlinkSync, } from 'fs';
|
|
3
|
+
export declare const readdirSync: (path: fs.PathLike) => Dirent[];
|
|
3
4
|
export declare const promises: {
|
|
4
5
|
chmod: (path: fs.PathLike, mode: fs.Mode) => Promise<void>;
|
|
5
6
|
mkdir: (path: fs.PathLike, options?: fs.Mode | (fs.MakeDirectoryOptions & {
|
|
6
7
|
recursive?: boolean | null;
|
|
7
8
|
}) | undefined | null) => Promise<string | undefined>;
|
|
8
|
-
readdir: (path: fs.PathLike) => Promise<
|
|
9
|
+
readdir: (path: fs.PathLike) => Promise<Dirent[]>;
|
|
9
10
|
rename: (oldPath: fs.PathLike, newPath: fs.PathLike) => Promise<void>;
|
|
10
11
|
rm: (path: fs.PathLike, options: fs.RmOptions) => Promise<void>;
|
|
11
12
|
rmdir: (path: fs.PathLike) => Promise<void>;
|
|
12
13
|
stat: (path: fs.PathLike) => Promise<fs.Stats>;
|
|
14
|
+
lstat: (path: fs.PathLike) => Promise<fs.Stats>;
|
|
13
15
|
unlink: (path: fs.PathLike) => Promise<void>;
|
|
14
16
|
};
|
|
15
17
|
//# sourceMappingURL=fs.d.ts.map
|
package/dist/mjs/fs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"fs.d.ts","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAG/B,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,EACV,SAAS,EACT,MAAM,EACN,QAAQ,EACR,SAAS,EACT,UAAU,GACX,MAAM,IAAI,CAAA;AAGX,eAAO,MAAM,WAAW,SAAU,GAAG,QAAQ,KAAG,MAAM,EACf,CAAA;AA6DvC,eAAO,MAAM,QAAQ;kBAtDA,GAAG,QAAQ,QAAQ,GAAG,IAAI,KAAG,QAAQ,IAAI,CAAC;kBAMvD,GAAG,QAAQ,YAEb,GAAG,IAAI,GACP,CAAC,GAAG,oBAAoB,GAAG;QAAE,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAA;KAAE,CAAC,GAC1D,SAAS,GACT,IAAI,KACP,QAAQ,MAAM,GAAG,SAAS,CAAC;oBAKP,GAAG,QAAQ,KAAG,QAAQ,MAAM,EAAE,CAAC;sBAO7B,GAAG,QAAQ,WAAW,GAAG,QAAQ,KAAG,QAAQ,IAAI,CAAC;eAKxD,GAAG,QAAQ,WAAW,GAAG,SAAS,KAAG,QAAQ,IAAI,CAAC;kBAK/C,GAAG,QAAQ,KAAG,QAAQ,IAAI,CAAC;iBAK5B,GAAG,QAAQ,KAAG,QAAQ,GAAG,KAAK,CAAC;kBAK9B,GAAG,QAAQ,KAAG,QAAQ,GAAG,KAAK,CAAC;mBAK9B,GAAG,QAAQ,KAAG,QAAQ,IAAI,CAAC;CAehD,CAAA"}
|
package/dist/mjs/fs.js
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
// promisify ourselves, because older nodes don't have fs.promises
|
|
2
2
|
import fs from 'fs';
|
|
3
3
|
// sync ones just take the sync version from node
|
|
4
|
-
export { chmodSync, mkdirSync,
|
|
4
|
+
export { chmodSync, mkdirSync, renameSync, rmdirSync, rmSync, statSync, lstatSync, unlinkSync, } from 'fs';
|
|
5
|
+
import { readdirSync as rdSync } from 'fs';
|
|
6
|
+
export const readdirSync = (path) => rdSync(path, { withFileTypes: true });
|
|
5
7
|
// unrolled for better inlining, this seems to get better performance
|
|
6
8
|
// than something like:
|
|
7
9
|
// const makeCb = (res, rej) => (er, ...d) => er ? rej(er) : res(...d)
|
|
8
10
|
// which would be a bit cleaner.
|
|
9
11
|
const chmod = (path, mode) => new Promise((res, rej) => fs.chmod(path, mode, (er, ...d) => (er ? rej(er) : res(...d))));
|
|
10
12
|
const mkdir = (path, options) => new Promise((res, rej) => fs.mkdir(path, options, (er, made) => (er ? rej(er) : res(made))));
|
|
11
|
-
const readdir = (path) => new Promise((res, rej) => fs.readdir(path, (er, data) =>
|
|
13
|
+
const readdir = (path) => new Promise((res, rej) => fs.readdir(path, { withFileTypes: true }, (er, data) => er ? rej(er) : res(data)));
|
|
12
14
|
const rename = (oldPath, newPath) => new Promise((res, rej) => fs.rename(oldPath, newPath, (er, ...d) => (er ? rej(er) : res(...d))));
|
|
13
15
|
const rm = (path, options) => new Promise((res, rej) => fs.rm(path, options, (er, ...d) => (er ? rej(er) : res(...d))));
|
|
14
16
|
const rmdir = (path) => new Promise((res, rej) => fs.rmdir(path, (er, ...d) => (er ? rej(er) : res(...d))));
|
|
15
17
|
const stat = (path) => new Promise((res, rej) => fs.stat(path, (er, data) => (er ? rej(er) : res(data))));
|
|
18
|
+
const lstat = (path) => new Promise((res, rej) => fs.lstat(path, (er, data) => (er ? rej(er) : res(data))));
|
|
16
19
|
const unlink = (path) => new Promise((res, rej) => fs.unlink(path, (er, ...d) => (er ? rej(er) : res(...d))));
|
|
17
20
|
export const promises = {
|
|
18
21
|
chmod,
|
|
@@ -22,6 +25,7 @@ export const promises = {
|
|
|
22
25
|
rm,
|
|
23
26
|
rmdir,
|
|
24
27
|
stat,
|
|
28
|
+
lstat,
|
|
25
29
|
unlink,
|
|
26
30
|
};
|
|
27
31
|
//# sourceMappingURL=fs.js.map
|
package/dist/mjs/fs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAElE,OAAO,
|
|
1
|
+
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ignore-enoent.d.ts","sourceRoot":"","sources":["../../src/ignore-enoent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ignore-enoent.d.ts","sourceRoot":"","sources":["../../src/ignore-enoent.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,MAAa,QAAQ,GAAG,CAAC,iBAK9C,CAAA;AAEJ,eAAO,MAAM,gBAAgB,OAAQ,MAAM,GAAG,QAQ7C,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ignore-enoent.js","sourceRoot":"","sources":["../../src/ignore-enoent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ignore-enoent.js","sourceRoot":"","sources":["../../src/ignore-enoent.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,CAAe,EAAE,EAAE,CACpD,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE;IACX,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE;QACxB,MAAM,EAAE,CAAA;KACT;AACH,CAAC,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,EAAa,EAAE,EAAE;IAChD,IAAI;QACF,OAAO,EAAE,EAAE,CAAA;KACZ;IAAC,OAAO,EAAE,EAAE;QACX,IAAK,EAA4B,EAAE,IAAI,KAAK,QAAQ,EAAE;YACpD,MAAM,EAAE,CAAA;SACT;KACF;AACH,CAAC,CAAA"}
|
package/dist/mjs/package.json
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
|
-
|
|
3
|
-
export declare const
|
|
2
|
+
/// <reference types="node" />
|
|
3
|
+
export declare const readdirOrError: (path: string) => Promise<import("fs").Dirent[] | NodeJS.ErrnoException>;
|
|
4
|
+
export declare const readdirOrErrorSync: (path: string) => import("fs").Dirent[] | NodeJS.ErrnoException;
|
|
4
5
|
//# sourceMappingURL=readdir-or-error.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readdir-or-error.d.ts","sourceRoot":"","sources":["../../src/readdir-or-error.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"readdir-or-error.d.ts","sourceRoot":"","sources":["../../src/readdir-or-error.ts"],"names":[],"mappings":";;AAIA,eAAO,MAAM,cAAc,SAAU,MAAM,2DACa,CAAA;AACxD,eAAO,MAAM,kBAAkB,SAAU,MAAM,kDAM9C,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readdir-or-error.js","sourceRoot":"","sources":["../../src/readdir-or-error.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,6CAA6C;AAC7C,OAAO,
|
|
1
|
+
{"version":3,"file":"readdir-or-error.js","sourceRoot":"","sources":["../../src/readdir-or-error.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,6CAA6C;AAC7C,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AAC/C,MAAM,EAAE,OAAO,EAAE,GAAG,QAAQ,CAAA;AAC5B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE,CAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAA2B,CAAC,CAAA;AACxD,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,EAAE;IACjD,IAAI;QACF,OAAO,WAAW,CAAC,IAAI,CAAC,CAAA;KACzB;IAAC,OAAO,EAAE,EAAE;QACX,OAAO,EAA2B,CAAA;KACnC;AACH,CAAC,CAAA"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export declare const rimrafManual: (path: string, opt: import("./index.js").RimrafAsyncOptions
|
|
2
|
-
export declare const rimrafManualSync: (path: string, opt: import("./index.js").RimrafSyncOptions
|
|
1
|
+
export declare const rimrafManual: (path: string, opt: import("./index.js").RimrafAsyncOptions) => Promise<boolean>;
|
|
2
|
+
export declare const rimrafManualSync: (path: string, opt: import("./index.js").RimrafSyncOptions) => boolean;
|
|
3
3
|
//# sourceMappingURL=rimraf-manual.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rimraf-manual.d.ts","sourceRoot":"","sources":["../../src/rimraf-manual.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"rimraf-manual.d.ts","sourceRoot":"","sources":["../../src/rimraf-manual.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,YAAY,kFAAqD,CAAA;AAC9E,eAAO,MAAM,gBAAgB,wEAC+B,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rimraf-move-remove.d.ts","sourceRoot":"","sources":["../../src/rimraf-move-remove.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rimraf-move-remove.d.ts","sourceRoot":"","sources":["../../src/rimraf-move-remove.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,GAAG,CAAA;AA4CzD,eAAO,MAAM,gBAAgB,SACrB,MAAM,OACP,kBAAkB,qBAWxB,CAAA;AA0ED,eAAO,MAAM,oBAAoB,SAAU,MAAM,OAAO,iBAAiB,YAUxE,CAAA"}
|
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
import { basename, parse, resolve } from 'path';
|
|
14
14
|
import { defaultTmp, defaultTmpSync } from './default-tmp.js';
|
|
15
15
|
import { ignoreENOENT, ignoreENOENTSync } from './ignore-enoent.js';
|
|
16
|
-
import { chmodSync, promises as fsPromises, renameSync, rmdirSync, unlinkSync, } from './fs.js';
|
|
17
|
-
const { rename, unlink, rmdir, chmod } = fsPromises;
|
|
16
|
+
import { chmodSync, lstatSync, promises as fsPromises, renameSync, rmdirSync, unlinkSync, } from './fs.js';
|
|
17
|
+
const { lstat, rename, unlink, rmdir, chmod } = fsPromises;
|
|
18
18
|
import { readdirOrError, readdirOrErrorSync } from './readdir-or-error.js';
|
|
19
19
|
// crypto.randomBytes is much slower, and Math.random() is enough here
|
|
20
20
|
const uniqueFilename = (path) => `.${basename(path)}.${Math.random()}`;
|
|
@@ -55,30 +55,49 @@ const unlinkFixEPERMSync = (path) => {
|
|
|
55
55
|
}
|
|
56
56
|
};
|
|
57
57
|
export const rimrafMoveRemove = async (path, opt) => {
|
|
58
|
+
if (opt?.signal?.aborted) {
|
|
59
|
+
throw opt.signal.reason;
|
|
60
|
+
}
|
|
61
|
+
try {
|
|
62
|
+
return await rimrafMoveRemoveDir(path, opt, await lstat(path));
|
|
63
|
+
}
|
|
64
|
+
catch (er) {
|
|
65
|
+
if (er?.code === 'ENOENT')
|
|
66
|
+
return true;
|
|
67
|
+
throw er;
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
const rimrafMoveRemoveDir = async (path, opt, ent) => {
|
|
58
71
|
if (opt?.signal?.aborted) {
|
|
59
72
|
throw opt.signal.reason;
|
|
60
73
|
}
|
|
61
74
|
if (!opt.tmp) {
|
|
62
|
-
return
|
|
75
|
+
return rimrafMoveRemoveDir(path, { ...opt, tmp: await defaultTmp(path) }, ent);
|
|
63
76
|
}
|
|
64
77
|
if (path === opt.tmp && parse(path).root !== path) {
|
|
65
78
|
throw new Error('cannot delete temp directory used for deletion');
|
|
66
79
|
}
|
|
67
|
-
const entries = await readdirOrError(path);
|
|
80
|
+
const entries = ent.isDirectory() ? await readdirOrError(path) : null;
|
|
68
81
|
if (!Array.isArray(entries)) {
|
|
69
|
-
if
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
if (entries
|
|
73
|
-
|
|
82
|
+
// this can only happen if lstat/readdir lied, or if the dir was
|
|
83
|
+
// swapped out with a file at just the right moment.
|
|
84
|
+
/* c8 ignore start */
|
|
85
|
+
if (entries) {
|
|
86
|
+
if (entries.code === 'ENOENT') {
|
|
87
|
+
return true;
|
|
88
|
+
}
|
|
89
|
+
if (entries.code !== 'ENOTDIR') {
|
|
90
|
+
throw entries;
|
|
91
|
+
}
|
|
74
92
|
}
|
|
93
|
+
/* c8 ignore stop */
|
|
75
94
|
if (opt.filter && !(await opt.filter(path))) {
|
|
76
95
|
return false;
|
|
77
96
|
}
|
|
78
97
|
await ignoreENOENT(tmpUnlink(path, opt.tmp, unlinkFixEPERM));
|
|
79
98
|
return true;
|
|
80
99
|
}
|
|
81
|
-
const removedAll = (await Promise.all(entries.map(
|
|
100
|
+
const removedAll = (await Promise.all(entries.map(ent => rimrafMoveRemoveDir(resolve(path, ent.name), opt, ent)))).reduce((a, b) => a && b, true);
|
|
82
101
|
if (!removedAll) {
|
|
83
102
|
return false;
|
|
84
103
|
}
|
|
@@ -100,24 +119,43 @@ const tmpUnlink = async (path, tmp, rm) => {
|
|
|
100
119
|
return await rm(tmpFile);
|
|
101
120
|
};
|
|
102
121
|
export const rimrafMoveRemoveSync = (path, opt) => {
|
|
122
|
+
if (opt?.signal?.aborted) {
|
|
123
|
+
throw opt.signal.reason;
|
|
124
|
+
}
|
|
125
|
+
try {
|
|
126
|
+
return rimrafMoveRemoveDirSync(path, opt, lstatSync(path));
|
|
127
|
+
}
|
|
128
|
+
catch (er) {
|
|
129
|
+
if (er?.code === 'ENOENT')
|
|
130
|
+
return true;
|
|
131
|
+
throw er;
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
const rimrafMoveRemoveDirSync = (path, opt, ent) => {
|
|
103
135
|
if (opt?.signal?.aborted) {
|
|
104
136
|
throw opt.signal.reason;
|
|
105
137
|
}
|
|
106
138
|
if (!opt.tmp) {
|
|
107
|
-
return
|
|
139
|
+
return rimrafMoveRemoveDirSync(path, { ...opt, tmp: defaultTmpSync(path) }, ent);
|
|
108
140
|
}
|
|
109
141
|
const tmp = opt.tmp;
|
|
110
142
|
if (path === opt.tmp && parse(path).root !== path) {
|
|
111
143
|
throw new Error('cannot delete temp directory used for deletion');
|
|
112
144
|
}
|
|
113
|
-
const entries = readdirOrErrorSync(path);
|
|
145
|
+
const entries = ent.isDirectory() ? readdirOrErrorSync(path) : null;
|
|
114
146
|
if (!Array.isArray(entries)) {
|
|
115
|
-
if
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
if (entries
|
|
119
|
-
|
|
147
|
+
// this can only happen if lstat/readdir lied, or if the dir was
|
|
148
|
+
// swapped out with a file at just the right moment.
|
|
149
|
+
/* c8 ignore start */
|
|
150
|
+
if (entries) {
|
|
151
|
+
if (entries.code === 'ENOENT') {
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
if (entries.code !== 'ENOTDIR') {
|
|
155
|
+
throw entries;
|
|
156
|
+
}
|
|
120
157
|
}
|
|
158
|
+
/* c8 ignore stop */
|
|
121
159
|
if (opt.filter && !opt.filter(path)) {
|
|
122
160
|
return false;
|
|
123
161
|
}
|
|
@@ -125,8 +163,9 @@ export const rimrafMoveRemoveSync = (path, opt) => {
|
|
|
125
163
|
return true;
|
|
126
164
|
}
|
|
127
165
|
let removedAll = true;
|
|
128
|
-
for (const
|
|
129
|
-
|
|
166
|
+
for (const ent of entries) {
|
|
167
|
+
const p = resolve(path, ent.name);
|
|
168
|
+
removedAll = rimrafMoveRemoveDirSync(p, opt, ent) && removedAll;
|
|
130
169
|
}
|
|
131
170
|
if (!removedAll) {
|
|
132
171
|
return false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rimraf-move-remove.js","sourceRoot":"","sources":["../../src/rimraf-move-remove.ts"],"names":[],"mappings":"AAAA,qCAAqC;AACrC,EAAE;AACF,aAAa;AACb,oBAAoB;AACpB,yCAAyC;AACzC,uEAAuE;AACvE,0BAA0B;AAC1B,EAAE;AACF,uEAAuE;AACvE,kDAAkD;AAClD,EAAE;AACF,0EAA0E;AAE1E,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAE7D,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAEnE,OAAO,EACL,SAAS,EACT,QAAQ,IAAI,UAAU,EACtB,UAAU,EACV,SAAS,EACT,UAAU,GACX,MAAM,SAAS,CAAA;AAChB,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"rimraf-move-remove.js","sourceRoot":"","sources":["../../src/rimraf-move-remove.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rimraf-posix.d.ts","sourceRoot":"","sources":["../../src/rimraf-posix.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,GAAG,CAAA;AAGzD,eAAO,MAAM,WAAW,
|
|
1
|
+
{"version":3,"file":"rimraf-posix.d.ts","sourceRoot":"","sources":["../../src/rimraf-posix.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,GAAG,CAAA;AAGzD,eAAO,MAAM,WAAW,SAAgB,MAAM,OAAO,kBAAkB,qBAUtE,CAAA;AAED,eAAO,MAAM,eAAe,SAAU,MAAM,OAAO,iBAAiB,YAUnE,CAAA"}
|
package/dist/mjs/rimraf-posix.js
CHANGED
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
// the simple recursive removal, where unlink and rmdir are atomic
|
|
2
2
|
// Note that this approach does NOT work on Windows!
|
|
3
|
-
// We
|
|
4
|
-
//
|
|
5
|
-
// calls), because sunos will let root unlink a directory, and some
|
|
3
|
+
// We stat first and only unlink if the Dirent isn't a directory,
|
|
4
|
+
// because sunos will let root unlink a directory, and some
|
|
6
5
|
// SUPER weird breakage happens as a result.
|
|
7
|
-
import { promises, rmdirSync, unlinkSync } from './fs.js';
|
|
8
|
-
const { rmdir, unlink } = promises;
|
|
6
|
+
import { lstatSync, promises, rmdirSync, unlinkSync } from './fs.js';
|
|
7
|
+
const { lstat, rmdir, unlink } = promises;
|
|
9
8
|
import { parse, resolve } from 'path';
|
|
10
9
|
import { readdirOrError, readdirOrErrorSync } from './readdir-or-error.js';
|
|
11
10
|
import { ignoreENOENT, ignoreENOENTSync } from './ignore-enoent.js';
|
|
@@ -13,21 +12,53 @@ export const rimrafPosix = async (path, opt) => {
|
|
|
13
12
|
if (opt?.signal?.aborted) {
|
|
14
13
|
throw opt.signal.reason;
|
|
15
14
|
}
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
15
|
+
try {
|
|
16
|
+
return await rimrafPosixDir(path, opt, await lstat(path));
|
|
17
|
+
}
|
|
18
|
+
catch (er) {
|
|
19
|
+
if (er?.code === 'ENOENT')
|
|
19
20
|
return true;
|
|
21
|
+
throw er;
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
export const rimrafPosixSync = (path, opt) => {
|
|
25
|
+
if (opt?.signal?.aborted) {
|
|
26
|
+
throw opt.signal.reason;
|
|
27
|
+
}
|
|
28
|
+
try {
|
|
29
|
+
return rimrafPosixDirSync(path, opt, lstatSync(path));
|
|
30
|
+
}
|
|
31
|
+
catch (er) {
|
|
32
|
+
if (er?.code === 'ENOENT')
|
|
33
|
+
return true;
|
|
34
|
+
throw er;
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
const rimrafPosixDir = async (path, opt, ent) => {
|
|
38
|
+
if (opt?.signal?.aborted) {
|
|
39
|
+
throw opt.signal.reason;
|
|
40
|
+
}
|
|
41
|
+
const entries = ent.isDirectory() ? await readdirOrError(path) : null;
|
|
42
|
+
if (!Array.isArray(entries)) {
|
|
43
|
+
// this can only happen if lstat/readdir lied, or if the dir was
|
|
44
|
+
// swapped out with a file at just the right moment.
|
|
45
|
+
/* c8 ignore start */
|
|
46
|
+
if (entries) {
|
|
47
|
+
if (entries.code === 'ENOENT') {
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
if (entries.code !== 'ENOTDIR') {
|
|
51
|
+
throw entries;
|
|
52
|
+
}
|
|
20
53
|
}
|
|
21
|
-
|
|
22
|
-
throw entries;
|
|
23
|
-
}
|
|
54
|
+
/* c8 ignore stop */
|
|
24
55
|
if (opt.filter && !(await opt.filter(path))) {
|
|
25
56
|
return false;
|
|
26
57
|
}
|
|
27
58
|
await ignoreENOENT(unlink(path));
|
|
28
59
|
return true;
|
|
29
60
|
}
|
|
30
|
-
const removedAll = (await Promise.all(entries.map(
|
|
61
|
+
const removedAll = (await Promise.all(entries.map(ent => rimrafPosixDir(resolve(path, ent.name), opt, ent)))).reduce((a, b) => a && b, true);
|
|
31
62
|
if (!removedAll) {
|
|
32
63
|
return false;
|
|
33
64
|
}
|
|
@@ -43,18 +74,24 @@ export const rimrafPosix = async (path, opt) => {
|
|
|
43
74
|
await ignoreENOENT(rmdir(path));
|
|
44
75
|
return true;
|
|
45
76
|
};
|
|
46
|
-
|
|
77
|
+
const rimrafPosixDirSync = (path, opt, ent) => {
|
|
47
78
|
if (opt?.signal?.aborted) {
|
|
48
79
|
throw opt.signal.reason;
|
|
49
80
|
}
|
|
50
|
-
const entries = readdirOrErrorSync(path);
|
|
81
|
+
const entries = ent.isDirectory() ? readdirOrErrorSync(path) : null;
|
|
51
82
|
if (!Array.isArray(entries)) {
|
|
52
|
-
if
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
if (entries
|
|
56
|
-
|
|
83
|
+
// this can only happen if lstat/readdir lied, or if the dir was
|
|
84
|
+
// swapped out with a file at just the right moment.
|
|
85
|
+
/* c8 ignore start */
|
|
86
|
+
if (entries) {
|
|
87
|
+
if (entries.code === 'ENOENT') {
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
if (entries.code !== 'ENOTDIR') {
|
|
91
|
+
throw entries;
|
|
92
|
+
}
|
|
57
93
|
}
|
|
94
|
+
/* c8 ignore stop */
|
|
58
95
|
if (opt.filter && !opt.filter(path)) {
|
|
59
96
|
return false;
|
|
60
97
|
}
|
|
@@ -62,8 +99,9 @@ export const rimrafPosixSync = (path, opt) => {
|
|
|
62
99
|
return true;
|
|
63
100
|
}
|
|
64
101
|
let removedAll = true;
|
|
65
|
-
for (const
|
|
66
|
-
|
|
102
|
+
for (const ent of entries) {
|
|
103
|
+
const p = resolve(path, ent.name);
|
|
104
|
+
removedAll = rimrafPosixDirSync(p, opt, ent) && removedAll;
|
|
67
105
|
}
|
|
68
106
|
if (opt.preserveRoot === false && path === parse(path).root) {
|
|
69
107
|
return false;
|