rimraf 4.3.0 → 4.4.0
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 +10 -6
- package/dist/cjs/package.json +1 -1
- package/dist/cjs/src/bin.d.ts.map +1 -1
- package/dist/cjs/src/bin.js +4 -4
- 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/index.d.ts +4 -2
- package/dist/cjs/src/index.d.ts.map +1 -1
- package/dist/cjs/src/index.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 +63 -24
- 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 +64 -26
- 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 +68 -36
- 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/index.d.ts +4 -2
- package/dist/mjs/index.d.ts.map +1 -1
- package/dist/mjs/index.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 +62 -23
- 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 +63 -25
- 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 +67 -35
- package/dist/mjs/rimraf-windows.js.map +1 -1
- package/package.json +1 -1
|
@@ -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
|
}
|
|
75
|
-
|
|
93
|
+
/* c8 ignore stop */
|
|
94
|
+
if (opt.filter && !(await opt.filter(path, ent))) {
|
|
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
|
}
|
|
@@ -88,7 +107,7 @@ export const rimrafMoveRemove = async (path, opt) => {
|
|
|
88
107
|
if (opt.preserveRoot === false && path === parse(path).root) {
|
|
89
108
|
return false;
|
|
90
109
|
}
|
|
91
|
-
if (opt.filter && !(await opt.filter(path))) {
|
|
110
|
+
if (opt.filter && !(await opt.filter(path, ent))) {
|
|
92
111
|
return false;
|
|
93
112
|
}
|
|
94
113
|
await ignoreENOENT(tmpUnlink(path, opt.tmp, rmdir));
|
|
@@ -100,33 +119,53 @@ 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
|
}
|
|
121
|
-
|
|
158
|
+
/* c8 ignore stop */
|
|
159
|
+
if (opt.filter && !opt.filter(path, ent)) {
|
|
122
160
|
return false;
|
|
123
161
|
}
|
|
124
162
|
ignoreENOENTSync(() => tmpUnlinkSync(path, tmp, unlinkFixEPERMSync));
|
|
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;
|
|
@@ -134,7 +173,7 @@ export const rimrafMoveRemoveSync = (path, opt) => {
|
|
|
134
173
|
if (opt.preserveRoot === false && path === parse(path).root) {
|
|
135
174
|
return false;
|
|
136
175
|
}
|
|
137
|
-
if (opt.filter && !opt.filter(path)) {
|
|
176
|
+
if (opt.filter && !opt.filter(path, ent)) {
|
|
138
177
|
return false;
|
|
139
178
|
}
|
|
140
179
|
ignoreENOENTSync(() => tmpUnlinkSync(path, tmp, rmdirSync));
|
|
@@ -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
|
-
|
|
23
|
-
}
|
|
24
|
-
if (opt.filter && !(await opt.filter(path))) {
|
|
54
|
+
/* c8 ignore stop */
|
|
55
|
+
if (opt.filter && !(await opt.filter(path, ent))) {
|
|
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
|
}
|
|
@@ -37,33 +68,40 @@ export const rimrafPosix = async (path, opt) => {
|
|
|
37
68
|
if (opt.preserveRoot === false && path === parse(path).root) {
|
|
38
69
|
return false;
|
|
39
70
|
}
|
|
40
|
-
if (opt.filter && !(await opt.filter(path))) {
|
|
71
|
+
if (opt.filter && !(await opt.filter(path, ent))) {
|
|
41
72
|
return false;
|
|
42
73
|
}
|
|
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
|
}
|
|
58
|
-
|
|
94
|
+
/* c8 ignore stop */
|
|
95
|
+
if (opt.filter && !opt.filter(path, ent)) {
|
|
59
96
|
return false;
|
|
60
97
|
}
|
|
61
98
|
ignoreENOENTSync(() => unlinkSync(path));
|
|
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;
|
|
@@ -71,7 +109,7 @@ export const rimrafPosixSync = (path, opt) => {
|
|
|
71
109
|
if (!removedAll) {
|
|
72
110
|
return false;
|
|
73
111
|
}
|
|
74
|
-
if (opt.filter && !opt.filter(path)) {
|
|
112
|
+
if (opt.filter && !opt.filter(path, ent)) {
|
|
75
113
|
return false;
|
|
76
114
|
}
|
|
77
115
|
ignoreENOENTSync(() => rmdirSync(path));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rimraf-posix.js","sourceRoot":"","sources":["../../src/rimraf-posix.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,oDAAoD;AACpD,
|
|
1
|
+
{"version":3,"file":"rimraf-posix.js","sourceRoot":"","sources":["../../src/rimraf-posix.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { RimrafAsyncOptions, RimrafSyncOptions } from '.';
|
|
2
|
-
export declare const rimrafWindows: (path: string, opt: RimrafAsyncOptions
|
|
3
|
-
export declare const rimrafWindowsSync: (path: string, opt: RimrafSyncOptions
|
|
2
|
+
export declare const rimrafWindows: (path: string, opt: RimrafAsyncOptions) => Promise<boolean>;
|
|
3
|
+
export declare const rimrafWindowsSync: (path: string, opt: RimrafSyncOptions) => boolean;
|
|
4
4
|
//# sourceMappingURL=rimraf-windows.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rimraf-windows.d.ts","sourceRoot":"","sources":["../../src/rimraf-windows.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rimraf-windows.d.ts","sourceRoot":"","sources":["../../src/rimraf-windows.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,GAAG,CAAA;AA2DzD,eAAO,MAAM,aAAa,SAAgB,MAAM,OAAO,kBAAkB,qBAUxE,CAAA;AAED,eAAO,MAAM,iBAAiB,SAAU,MAAM,OAAO,iBAAiB,YAUrE,CAAA"}
|
|
@@ -9,16 +9,16 @@
|
|
|
9
9
|
// Note: "move then remove" is 2-10 times slower, and just as unreliable.
|
|
10
10
|
import { parse, resolve } from 'path';
|
|
11
11
|
import { fixEPERM, fixEPERMSync } from './fix-eperm.js';
|
|
12
|
-
import { promises, rmdirSync, unlinkSync } from './fs.js';
|
|
12
|
+
import { lstatSync, promises, rmdirSync, unlinkSync } from './fs.js';
|
|
13
13
|
import { ignoreENOENT, ignoreENOENTSync } from './ignore-enoent.js';
|
|
14
14
|
import { readdirOrError, readdirOrErrorSync } from './readdir-or-error.js';
|
|
15
15
|
import { retryBusy, retryBusySync } from './retry-busy.js';
|
|
16
16
|
import { rimrafMoveRemove, rimrafMoveRemoveSync } from './rimraf-move-remove.js';
|
|
17
|
-
const { unlink, rmdir } = promises;
|
|
17
|
+
const { unlink, rmdir, lstat } = promises;
|
|
18
18
|
const rimrafWindowsFile = retryBusy(fixEPERM(unlink));
|
|
19
19
|
const rimrafWindowsFileSync = retryBusySync(fixEPERMSync(unlinkSync));
|
|
20
|
-
const
|
|
21
|
-
const
|
|
20
|
+
const rimrafWindowsDirRetry = retryBusy(fixEPERM(rmdir));
|
|
21
|
+
const rimrafWindowsDirRetrySync = retryBusySync(fixEPERMSync(rmdirSync));
|
|
22
22
|
const rimrafWindowsDirMoveRemoveFallback = async (path, opt) => {
|
|
23
23
|
/* c8 ignore start */
|
|
24
24
|
if (opt?.signal?.aborted) {
|
|
@@ -28,7 +28,7 @@ const rimrafWindowsDirMoveRemoveFallback = async (path, opt) => {
|
|
|
28
28
|
// already filtered, remove from options so we don't call unnecessarily
|
|
29
29
|
const { filter, ...options } = opt;
|
|
30
30
|
try {
|
|
31
|
-
return await
|
|
31
|
+
return await rimrafWindowsDirRetry(path, options);
|
|
32
32
|
}
|
|
33
33
|
catch (er) {
|
|
34
34
|
if (er?.code === 'ENOTEMPTY') {
|
|
@@ -44,7 +44,7 @@ const rimrafWindowsDirMoveRemoveFallbackSync = (path, opt) => {
|
|
|
44
44
|
// already filtered, remove from options so we don't call unnecessarily
|
|
45
45
|
const { filter, ...options } = opt;
|
|
46
46
|
try {
|
|
47
|
-
return
|
|
47
|
+
return rimrafWindowsDirRetrySync(path, options);
|
|
48
48
|
}
|
|
49
49
|
catch (er) {
|
|
50
50
|
const fer = er;
|
|
@@ -57,23 +57,51 @@ const rimrafWindowsDirMoveRemoveFallbackSync = (path, opt) => {
|
|
|
57
57
|
const START = Symbol('start');
|
|
58
58
|
const CHILD = Symbol('child');
|
|
59
59
|
const FINISH = Symbol('finish');
|
|
60
|
-
const
|
|
61
|
-
export const rimrafWindows = async (path, opt, state = START) => {
|
|
60
|
+
export const rimrafWindows = async (path, opt) => {
|
|
62
61
|
if (opt?.signal?.aborted) {
|
|
63
62
|
throw opt.signal.reason;
|
|
64
63
|
}
|
|
65
|
-
|
|
66
|
-
|
|
64
|
+
try {
|
|
65
|
+
return await rimrafWindowsDir(path, opt, await lstat(path), START);
|
|
67
66
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
if (entries.code === 'ENOENT') {
|
|
67
|
+
catch (er) {
|
|
68
|
+
if (er?.code === 'ENOENT')
|
|
71
69
|
return true;
|
|
70
|
+
throw er;
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
export const rimrafWindowsSync = (path, opt) => {
|
|
74
|
+
if (opt?.signal?.aborted) {
|
|
75
|
+
throw opt.signal.reason;
|
|
76
|
+
}
|
|
77
|
+
try {
|
|
78
|
+
return rimrafWindowsDirSync(path, opt, lstatSync(path), START);
|
|
79
|
+
}
|
|
80
|
+
catch (er) {
|
|
81
|
+
if (er?.code === 'ENOENT')
|
|
82
|
+
return true;
|
|
83
|
+
throw er;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
const rimrafWindowsDir = async (path, opt, ent, state = START) => {
|
|
87
|
+
if (opt?.signal?.aborted) {
|
|
88
|
+
throw opt.signal.reason;
|
|
89
|
+
}
|
|
90
|
+
const entries = ent.isDirectory() ? await readdirOrError(path) : null;
|
|
91
|
+
if (!Array.isArray(entries)) {
|
|
92
|
+
// this can only happen if lstat/readdir lied, or if the dir was
|
|
93
|
+
// swapped out with a file at just the right moment.
|
|
94
|
+
/* c8 ignore start */
|
|
95
|
+
if (entries) {
|
|
96
|
+
if (entries.code === 'ENOENT') {
|
|
97
|
+
return true;
|
|
98
|
+
}
|
|
99
|
+
if (entries.code !== 'ENOTDIR') {
|
|
100
|
+
throw entries;
|
|
101
|
+
}
|
|
72
102
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
}
|
|
76
|
-
if (opt.filter && !(await opt.filter(path))) {
|
|
103
|
+
/* c8 ignore stop */
|
|
104
|
+
if (opt.filter && !(await opt.filter(path, ent))) {
|
|
77
105
|
return false;
|
|
78
106
|
}
|
|
79
107
|
// is a file
|
|
@@ -81,9 +109,9 @@ export const rimrafWindows = async (path, opt, state = START) => {
|
|
|
81
109
|
return true;
|
|
82
110
|
}
|
|
83
111
|
const s = state === START ? CHILD : state;
|
|
84
|
-
const removedAll = (await Promise.all(entries.map(
|
|
112
|
+
const removedAll = (await Promise.all(entries.map(ent => rimrafWindowsDir(resolve(path, ent.name), opt, ent, s)))).reduce((a, b) => a && b, true);
|
|
85
113
|
if (state === START) {
|
|
86
|
-
return
|
|
114
|
+
return rimrafWindowsDir(path, opt, ent, FINISH);
|
|
87
115
|
}
|
|
88
116
|
else if (state === FINISH) {
|
|
89
117
|
if (opt.preserveRoot === false && path === parse(path).root) {
|
|
@@ -92,26 +120,29 @@ export const rimrafWindows = async (path, opt, state = START) => {
|
|
|
92
120
|
if (!removedAll) {
|
|
93
121
|
return false;
|
|
94
122
|
}
|
|
95
|
-
if (opt.filter && !(await opt.filter(path))) {
|
|
123
|
+
if (opt.filter && !(await opt.filter(path, ent))) {
|
|
96
124
|
return false;
|
|
97
125
|
}
|
|
98
126
|
await ignoreENOENT(rimrafWindowsDirMoveRemoveFallback(path, opt));
|
|
99
127
|
}
|
|
100
128
|
return true;
|
|
101
129
|
};
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
throw new TypeError('invalid third argument passed to rimraf');
|
|
105
|
-
}
|
|
106
|
-
const entries = readdirOrErrorSync(path);
|
|
130
|
+
const rimrafWindowsDirSync = (path, opt, ent, state = START) => {
|
|
131
|
+
const entries = ent.isDirectory() ? readdirOrErrorSync(path) : null;
|
|
107
132
|
if (!Array.isArray(entries)) {
|
|
108
|
-
if
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
if (entries
|
|
112
|
-
|
|
133
|
+
// this can only happen if lstat/readdir lied, or if the dir was
|
|
134
|
+
// swapped out with a file at just the right moment.
|
|
135
|
+
/* c8 ignore start */
|
|
136
|
+
if (entries) {
|
|
137
|
+
if (entries.code === 'ENOENT') {
|
|
138
|
+
return true;
|
|
139
|
+
}
|
|
140
|
+
if (entries.code !== 'ENOTDIR') {
|
|
141
|
+
throw entries;
|
|
142
|
+
}
|
|
113
143
|
}
|
|
114
|
-
|
|
144
|
+
/* c8 ignore stop */
|
|
145
|
+
if (opt.filter && !opt.filter(path, ent)) {
|
|
115
146
|
return false;
|
|
116
147
|
}
|
|
117
148
|
// is a file
|
|
@@ -119,12 +150,13 @@ export const rimrafWindowsSync = (path, opt, state = START) => {
|
|
|
119
150
|
return true;
|
|
120
151
|
}
|
|
121
152
|
let removedAll = true;
|
|
122
|
-
for (const
|
|
153
|
+
for (const ent of entries) {
|
|
123
154
|
const s = state === START ? CHILD : state;
|
|
124
|
-
|
|
155
|
+
const p = resolve(path, ent.name);
|
|
156
|
+
removedAll = rimrafWindowsDirSync(p, opt, ent, s) && removedAll;
|
|
125
157
|
}
|
|
126
158
|
if (state === START) {
|
|
127
|
-
return
|
|
159
|
+
return rimrafWindowsDirSync(path, opt, ent, FINISH);
|
|
128
160
|
}
|
|
129
161
|
else if (state === FINISH) {
|
|
130
162
|
if (opt.preserveRoot === false && path === parse(path).root) {
|
|
@@ -133,7 +165,7 @@ export const rimrafWindowsSync = (path, opt, state = START) => {
|
|
|
133
165
|
if (!removedAll) {
|
|
134
166
|
return false;
|
|
135
167
|
}
|
|
136
|
-
if (opt.filter && !opt.filter(path)) {
|
|
168
|
+
if (opt.filter && !opt.filter(path, ent)) {
|
|
137
169
|
return false;
|
|
138
170
|
}
|
|
139
171
|
ignoreENOENTSync(() => {
|
|
@@ -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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"}
|