rimraf 4.2.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.
Files changed (100) hide show
  1. package/README.md +57 -22
  2. package/dist/cjs/package.json +2 -2
  3. package/dist/cjs/src/bin.d.ts.map +1 -1
  4. package/dist/cjs/src/bin.js +119 -17
  5. package/dist/cjs/src/bin.js.map +1 -1
  6. package/dist/cjs/src/fs.d.ts +5 -3
  7. package/dist/cjs/src/fs.d.ts.map +1 -1
  8. package/dist/cjs/src/fs.js +8 -3
  9. package/dist/cjs/src/fs.js.map +1 -1
  10. package/dist/cjs/src/ignore-enoent.d.ts.map +1 -1
  11. package/dist/cjs/src/ignore-enoent.js.map +1 -1
  12. package/dist/cjs/src/index-cjs.d.ts +40 -40
  13. package/dist/cjs/src/index.d.ts +43 -38
  14. package/dist/cjs/src/index.d.ts.map +1 -1
  15. package/dist/cjs/src/index.js +19 -10
  16. package/dist/cjs/src/index.js.map +1 -1
  17. package/dist/cjs/src/opt-arg.d.ts +14 -6
  18. package/dist/cjs/src/opt-arg.d.ts.map +1 -1
  19. package/dist/cjs/src/opt-arg.js +8 -2
  20. package/dist/cjs/src/opt-arg.js.map +1 -1
  21. package/dist/cjs/src/path-arg.d.ts +2 -2
  22. package/dist/cjs/src/path-arg.d.ts.map +1 -1
  23. package/dist/cjs/src/path-arg.js +1 -1
  24. package/dist/cjs/src/path-arg.js.map +1 -1
  25. package/dist/cjs/src/readdir-or-error.d.ts +3 -2
  26. package/dist/cjs/src/readdir-or-error.d.ts.map +1 -1
  27. package/dist/cjs/src/readdir-or-error.js.map +1 -1
  28. package/dist/cjs/src/retry-busy.d.ts +2 -2
  29. package/dist/cjs/src/retry-busy.d.ts.map +1 -1
  30. package/dist/cjs/src/retry-busy.js.map +1 -1
  31. package/dist/cjs/src/rimraf-manual.d.ts +2 -2
  32. package/dist/cjs/src/rimraf-manual.d.ts.map +1 -1
  33. package/dist/cjs/src/rimraf-move-remove.d.ts +3 -3
  34. package/dist/cjs/src/rimraf-move-remove.d.ts.map +1 -1
  35. package/dist/cjs/src/rimraf-move-remove.js +86 -24
  36. package/dist/cjs/src/rimraf-move-remove.js.map +1 -1
  37. package/dist/cjs/src/rimraf-native.d.ts +3 -3
  38. package/dist/cjs/src/rimraf-native.d.ts.map +1 -1
  39. package/dist/cjs/src/rimraf-native.js +16 -10
  40. package/dist/cjs/src/rimraf-native.js.map +1 -1
  41. package/dist/cjs/src/rimraf-posix.d.ts +3 -3
  42. package/dist/cjs/src/rimraf-posix.d.ts.map +1 -1
  43. package/dist/cjs/src/rimraf-posix.js +87 -26
  44. package/dist/cjs/src/rimraf-posix.js.map +1 -1
  45. package/dist/cjs/src/rimraf-windows.d.ts +3 -3
  46. package/dist/cjs/src/rimraf-windows.d.ts.map +1 -1
  47. package/dist/cjs/src/rimraf-windows.js +100 -39
  48. package/dist/cjs/src/rimraf-windows.js.map +1 -1
  49. package/dist/cjs/src/use-native.d.ts +2 -2
  50. package/dist/cjs/src/use-native.d.ts.map +1 -1
  51. package/dist/cjs/src/use-native.js +6 -2
  52. package/dist/cjs/src/use-native.js.map +1 -1
  53. package/dist/mjs/fs.d.ts +5 -3
  54. package/dist/mjs/fs.d.ts.map +1 -1
  55. package/dist/mjs/fs.js +6 -2
  56. package/dist/mjs/fs.js.map +1 -1
  57. package/dist/mjs/ignore-enoent.d.ts.map +1 -1
  58. package/dist/mjs/ignore-enoent.js.map +1 -1
  59. package/dist/mjs/index.d.ts +43 -38
  60. package/dist/mjs/index.d.ts.map +1 -1
  61. package/dist/mjs/index.js +18 -9
  62. package/dist/mjs/index.js.map +1 -1
  63. package/dist/mjs/opt-arg.d.ts +14 -6
  64. package/dist/mjs/opt-arg.d.ts.map +1 -1
  65. package/dist/mjs/opt-arg.js +6 -3
  66. package/dist/mjs/opt-arg.js.map +1 -1
  67. package/dist/mjs/package.json +1 -1
  68. package/dist/mjs/path-arg.d.ts +2 -2
  69. package/dist/mjs/path-arg.d.ts.map +1 -1
  70. package/dist/mjs/path-arg.js +2 -2
  71. package/dist/mjs/path-arg.js.map +1 -1
  72. package/dist/mjs/readdir-or-error.d.ts +3 -2
  73. package/dist/mjs/readdir-or-error.d.ts.map +1 -1
  74. package/dist/mjs/readdir-or-error.js.map +1 -1
  75. package/dist/mjs/retry-busy.d.ts +2 -2
  76. package/dist/mjs/retry-busy.d.ts.map +1 -1
  77. package/dist/mjs/retry-busy.js.map +1 -1
  78. package/dist/mjs/rimraf-manual.d.ts +2 -2
  79. package/dist/mjs/rimraf-manual.d.ts.map +1 -1
  80. package/dist/mjs/rimraf-move-remove.d.ts +3 -3
  81. package/dist/mjs/rimraf-move-remove.d.ts.map +1 -1
  82. package/dist/mjs/rimraf-move-remove.js +85 -23
  83. package/dist/mjs/rimraf-move-remove.js.map +1 -1
  84. package/dist/mjs/rimraf-native.d.ts +3 -3
  85. package/dist/mjs/rimraf-native.d.ts.map +1 -1
  86. package/dist/mjs/rimraf-native.js +16 -10
  87. package/dist/mjs/rimraf-native.js.map +1 -1
  88. package/dist/mjs/rimraf-posix.d.ts +3 -3
  89. package/dist/mjs/rimraf-posix.d.ts.map +1 -1
  90. package/dist/mjs/rimraf-posix.js +86 -25
  91. package/dist/mjs/rimraf-posix.js.map +1 -1
  92. package/dist/mjs/rimraf-windows.d.ts +3 -3
  93. package/dist/mjs/rimraf-windows.d.ts.map +1 -1
  94. package/dist/mjs/rimraf-windows.js +99 -38
  95. package/dist/mjs/rimraf-windows.js.map +1 -1
  96. package/dist/mjs/use-native.d.ts +2 -2
  97. package/dist/mjs/use-native.d.ts.map +1 -1
  98. package/dist/mjs/use-native.js +6 -2
  99. package/dist/mjs/use-native.js.map +1 -1
  100. package/package.json +2 -2
@@ -1,13 +1,19 @@
1
1
  import { promises, rmSync } from './fs.js';
2
2
  const { rm } = promises;
3
- export const rimrafNative = (path, opt) => rm(path, {
4
- ...opt,
5
- force: true,
6
- recursive: true,
7
- });
8
- export const rimrafNativeSync = (path, opt) => rmSync(path, {
9
- ...opt,
10
- force: true,
11
- recursive: true,
12
- });
3
+ export const rimrafNative = async (path, opt) => {
4
+ await rm(path, {
5
+ ...opt,
6
+ force: true,
7
+ recursive: true,
8
+ });
9
+ return true;
10
+ };
11
+ export const rimrafNativeSync = (path, opt) => {
12
+ rmSync(path, {
13
+ ...opt,
14
+ force: true,
15
+ recursive: true,
16
+ });
17
+ return true;
18
+ };
13
19
  //# sourceMappingURL=rimraf-native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rimraf-native.js","sourceRoot":"","sources":["../../src/rimraf-native.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAA;AAEvB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,IAAY,EAAE,GAAkB,EAAE,EAAE,CAC/D,EAAE,CAAC,IAAI,EAAE;IACP,GAAG,GAAG;IACN,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;CAChB,CAAC,CAAA;AAEJ,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,GAAkB,EAAE,EAAE,CACnE,MAAM,CAAC,IAAI,EAAE;IACX,GAAG,GAAG;IACN,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;CAChB,CAAC,CAAA"}
1
+ {"version":3,"file":"rimraf-native.js","sourceRoot":"","sources":["../../src/rimraf-native.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,QAAQ,CAAA;AAEvB,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAC/B,IAAY,EACZ,GAAuB,EACL,EAAE;IACpB,MAAM,EAAE,CAAC,IAAI,EAAE;QACb,GAAG,GAAG;QACN,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;KAChB,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,IAAY,EACZ,GAAsB,EACb,EAAE;IACX,MAAM,CAAC,IAAI,EAAE;QACX,GAAG,GAAG;QACN,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,IAAI;KAChB,CAAC,CAAA;IACF,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -1,4 +1,4 @@
1
- import { RimrafOptions } from '.';
2
- export declare const rimrafPosix: (path: string, opt: RimrafOptions) => Promise<any>;
3
- export declare const rimrafPosixSync: (path: string, opt: RimrafOptions) => any;
1
+ import { RimrafAsyncOptions, RimrafSyncOptions } from '.';
2
+ export declare const rimrafPosix: (path: string, opt: RimrafAsyncOptions) => Promise<boolean>;
3
+ export declare const rimrafPosixSync: (path: string, opt: RimrafSyncOptions) => boolean;
4
4
  //# sourceMappingURL=rimraf-posix.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rimraf-posix.d.ts","sourceRoot":"","sources":["../../src/rimraf-posix.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,CAAA;AAGjC,eAAO,MAAM,WAAW,SAAgB,MAAM,OAAO,aAAa,iBA0BjE,CAAA;AAED,eAAO,MAAM,eAAe,SAAU,MAAM,OAAO,aAAa,QAuB/D,CAAA"}
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"}
@@ -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 rmdir before unlink even though that is arguably less efficient
4
- // (since the average folder contains >1 file, it means more system
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,45 +12,107 @@ export const rimrafPosix = async (path, opt) => {
13
12
  if (opt?.signal?.aborted) {
14
13
  throw opt.signal.reason;
15
14
  }
16
- const entries = await readdirOrError(path);
15
+ try {
16
+ return await rimrafPosixDir(path, opt, await lstat(path));
17
+ }
18
+ catch (er) {
19
+ if (er?.code === 'ENOENT')
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;
17
42
  if (!Array.isArray(entries)) {
18
- if (entries.code === 'ENOENT') {
19
- return;
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
- if (entries.code !== 'ENOTDIR') {
22
- throw entries;
54
+ /* c8 ignore stop */
55
+ if (opt.filter && !(await opt.filter(path))) {
56
+ return false;
23
57
  }
24
- return ignoreENOENT(unlink(path));
58
+ await ignoreENOENT(unlink(path));
59
+ return true;
60
+ }
61
+ const removedAll = (await Promise.all(entries.map(ent => rimrafPosixDir(resolve(path, ent.name), opt, ent)))).reduce((a, b) => a && b, true);
62
+ if (!removedAll) {
63
+ return false;
25
64
  }
26
- await Promise.all(entries.map(entry => rimrafPosix(resolve(path, entry), opt)));
27
65
  // we don't ever ACTUALLY try to unlink /, because that can never work
28
66
  // but when preserveRoot is false, we could be operating on it.
29
67
  // No need to check if preserveRoot is not false.
30
68
  if (opt.preserveRoot === false && path === parse(path).root) {
31
- return;
69
+ return false;
32
70
  }
33
- return ignoreENOENT(rmdir(path));
71
+ if (opt.filter && !(await opt.filter(path))) {
72
+ return false;
73
+ }
74
+ await ignoreENOENT(rmdir(path));
75
+ return true;
34
76
  };
35
- export const rimrafPosixSync = (path, opt) => {
77
+ const rimrafPosixDirSync = (path, opt, ent) => {
36
78
  if (opt?.signal?.aborted) {
37
79
  throw opt.signal.reason;
38
80
  }
39
- const entries = readdirOrErrorSync(path);
81
+ const entries = ent.isDirectory() ? readdirOrErrorSync(path) : null;
40
82
  if (!Array.isArray(entries)) {
41
- if (entries.code === 'ENOENT') {
42
- return;
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
+ }
43
93
  }
44
- if (entries.code !== 'ENOTDIR') {
45
- throw entries;
94
+ /* c8 ignore stop */
95
+ if (opt.filter && !opt.filter(path)) {
96
+ return false;
46
97
  }
47
- return ignoreENOENTSync(() => unlinkSync(path));
98
+ ignoreENOENTSync(() => unlinkSync(path));
99
+ return true;
48
100
  }
49
- for (const entry of entries) {
50
- rimrafPosixSync(resolve(path, entry), opt);
101
+ let removedAll = true;
102
+ for (const ent of entries) {
103
+ const p = resolve(path, ent.name);
104
+ removedAll = rimrafPosixDirSync(p, opt, ent) && removedAll;
51
105
  }
52
106
  if (opt.preserveRoot === false && path === parse(path).root) {
53
- return;
107
+ return false;
108
+ }
109
+ if (!removedAll) {
110
+ return false;
111
+ }
112
+ if (opt.filter && !opt.filter(path)) {
113
+ return false;
54
114
  }
55
- return ignoreENOENTSync(() => rmdirSync(path));
115
+ ignoreENOENTSync(() => rmdirSync(path));
116
+ return true;
56
117
  };
57
118
  //# sourceMappingURL=rimraf-posix.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"rimraf-posix.js","sourceRoot":"","sources":["../../src/rimraf-posix.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,oDAAoD;AACpD,qEAAqE;AACrE,mEAAmE;AACnE,mEAAmE;AACnE,4CAA4C;AAE5C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,CAAA;AAElC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAErC,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAG1E,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAEnE,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,GAAkB,EAAE,EAAE;IACpE,IAAI,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QACxB,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAA;KACxB;IACD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC7B,OAAM;SACP;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC9B,MAAM,OAAO,CAAA;SACd;QACD,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;KAClC;IACD,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAC7D,CAAA;IAED,sEAAsE;IACtE,+DAA+D;IAC/D,iDAAiD;IACjD,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAC3D,OAAM;KACP;IAED,OAAO,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AAClC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,GAAkB,EAAE,EAAE;IAClE,IAAI,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QACxB,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAA;KACxB;IACD,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC7B,OAAM;SACP;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC9B,MAAM,OAAO,CAAA;SACd;QACD,OAAO,gBAAgB,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;KAChD;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QAC3B,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAA;KAC3C;IAED,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAC3D,OAAM;KACP;IAED,OAAO,gBAAgB,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAA;AAChD,CAAC,CAAA"}
1
+ {"version":3,"file":"rimraf-posix.js","sourceRoot":"","sources":["../../src/rimraf-posix.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { RimrafOptions } from '.';
2
- export declare const rimrafWindows: (path: string, opt: RimrafOptions, state?: symbol) => Promise<void>;
3
- export declare const rimrafWindowsSync: (path: string, opt: RimrafOptions, state?: symbol) => void;
1
+ import { RimrafAsyncOptions, RimrafSyncOptions } from '.';
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":"AAWA,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,CAAA;AAuDjC,eAAO,MAAM,aAAa,SAClB,MAAM,OACP,aAAa,qBAEjB,QAAQ,IAAI,CAkCd,CAAA;AAED,eAAO,MAAM,iBAAiB,SACtB,MAAM,OACP,aAAa,qBAEjB,IAgCF,CAAA"}
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,28 +9,30 @@
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 rimrafWindowsDir = retryBusy(fixEPERM(rmdir));
21
- const rimrafWindowsDirSync = retryBusySync(fixEPERMSync(rmdirSync));
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) {
25
25
  throw opt.signal.reason;
26
26
  }
27
27
  /* c8 ignore stop */
28
+ // already filtered, remove from options so we don't call unnecessarily
29
+ const { filter, ...options } = opt;
28
30
  try {
29
- await rimrafWindowsDir(path, opt);
31
+ return await rimrafWindowsDirRetry(path, options);
30
32
  }
31
33
  catch (er) {
32
34
  if (er?.code === 'ENOTEMPTY') {
33
- return await rimrafMoveRemove(path, opt);
35
+ return await rimrafMoveRemove(path, options);
34
36
  }
35
37
  throw er;
36
38
  }
@@ -39,12 +41,15 @@ const rimrafWindowsDirMoveRemoveFallbackSync = (path, opt) => {
39
41
  if (opt?.signal?.aborted) {
40
42
  throw opt.signal.reason;
41
43
  }
44
+ // already filtered, remove from options so we don't call unnecessarily
45
+ const { filter, ...options } = opt;
42
46
  try {
43
- rimrafWindowsDirSync(path, opt);
47
+ return rimrafWindowsDirRetrySync(path, options);
44
48
  }
45
49
  catch (er) {
46
- if (er?.code === 'ENOTEMPTY') {
47
- return rimrafMoveRemoveSync(path, opt);
50
+ const fer = er;
51
+ if (fer?.code === 'ENOTEMPTY') {
52
+ return rimrafMoveRemoveSync(path, options);
48
53
  }
49
54
  throw er;
50
55
  }
@@ -52,65 +57,121 @@ const rimrafWindowsDirMoveRemoveFallbackSync = (path, opt) => {
52
57
  const START = Symbol('start');
53
58
  const CHILD = Symbol('child');
54
59
  const FINISH = Symbol('finish');
55
- const states = new Set([START, CHILD, FINISH]);
56
- export const rimrafWindows = async (path, opt, state = START) => {
60
+ export const rimrafWindows = async (path, opt) => {
61
+ if (opt?.signal?.aborted) {
62
+ throw opt.signal.reason;
63
+ }
64
+ try {
65
+ return await rimrafWindowsDir(path, opt, await lstat(path), START);
66
+ }
67
+ catch (er) {
68
+ if (er?.code === 'ENOENT')
69
+ return true;
70
+ throw er;
71
+ }
72
+ };
73
+ export const rimrafWindowsSync = (path, opt) => {
57
74
  if (opt?.signal?.aborted) {
58
75
  throw opt.signal.reason;
59
76
  }
60
- if (!states.has(state)) {
61
- throw new TypeError('invalid third argument passed to rimraf');
77
+ try {
78
+ return rimrafWindowsDirSync(path, opt, lstatSync(path), START);
62
79
  }
63
- const entries = await readdirOrError(path);
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;
64
91
  if (!Array.isArray(entries)) {
65
- if (entries.code === 'ENOENT') {
66
- return;
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
+ }
67
102
  }
68
- if (entries.code !== 'ENOTDIR') {
69
- throw entries;
103
+ /* c8 ignore stop */
104
+ if (opt.filter && !(await opt.filter(path))) {
105
+ return false;
70
106
  }
71
107
  // is a file
72
- return ignoreENOENT(rimrafWindowsFile(path, opt));
108
+ await ignoreENOENT(rimrafWindowsFile(path, opt));
109
+ return true;
73
110
  }
74
- await Promise.all(entries.map(entry => rimrafWindows(resolve(path, entry), opt, state === START ? CHILD : state)));
111
+ const s = state === START ? CHILD : state;
112
+ const removedAll = (await Promise.all(entries.map(ent => rimrafWindowsDir(resolve(path, ent.name), opt, ent, s)))).reduce((a, b) => a && b, true);
75
113
  if (state === START) {
76
- return rimrafWindows(path, opt, FINISH);
114
+ return rimrafWindowsDir(path, opt, ent, FINISH);
77
115
  }
78
116
  else if (state === FINISH) {
79
117
  if (opt.preserveRoot === false && path === parse(path).root) {
80
- return;
118
+ return false;
81
119
  }
82
- return ignoreENOENT(rimrafWindowsDirMoveRemoveFallback(path, opt));
120
+ if (!removedAll) {
121
+ return false;
122
+ }
123
+ if (opt.filter && !(await opt.filter(path))) {
124
+ return false;
125
+ }
126
+ await ignoreENOENT(rimrafWindowsDirMoveRemoveFallback(path, opt));
83
127
  }
128
+ return true;
84
129
  };
85
- export const rimrafWindowsSync = (path, opt, state = START) => {
86
- if (!states.has(state)) {
87
- throw new TypeError('invalid third argument passed to rimraf');
88
- }
89
- const entries = readdirOrErrorSync(path);
130
+ const rimrafWindowsDirSync = (path, opt, ent, state = START) => {
131
+ const entries = ent.isDirectory() ? readdirOrErrorSync(path) : null;
90
132
  if (!Array.isArray(entries)) {
91
- if (entries.code === 'ENOENT') {
92
- return;
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
+ }
93
143
  }
94
- if (entries.code !== 'ENOTDIR') {
95
- throw entries;
144
+ /* c8 ignore stop */
145
+ if (opt.filter && !opt.filter(path)) {
146
+ return false;
96
147
  }
97
148
  // is a file
98
- return ignoreENOENTSync(() => rimrafWindowsFileSync(path, opt));
149
+ ignoreENOENTSync(() => rimrafWindowsFileSync(path, opt));
150
+ return true;
99
151
  }
100
- for (const entry of entries) {
152
+ let removedAll = true;
153
+ for (const ent of entries) {
101
154
  const s = state === START ? CHILD : state;
102
- rimrafWindowsSync(resolve(path, entry), opt, s);
155
+ const p = resolve(path, ent.name);
156
+ removedAll = rimrafWindowsDirSync(p, opt, ent, s) && removedAll;
103
157
  }
104
158
  if (state === START) {
105
- return rimrafWindowsSync(path, opt, FINISH);
159
+ return rimrafWindowsDirSync(path, opt, ent, FINISH);
106
160
  }
107
161
  else if (state === FINISH) {
108
162
  if (opt.preserveRoot === false && path === parse(path).root) {
109
- return;
163
+ return false;
164
+ }
165
+ if (!removedAll) {
166
+ return false;
167
+ }
168
+ if (opt.filter && !opt.filter(path)) {
169
+ return false;
110
170
  }
111
- return ignoreENOENTSync(() => {
171
+ ignoreENOENTSync(() => {
112
172
  rimrafWindowsDirMoveRemoveFallbackSync(path, opt);
113
173
  });
114
174
  }
175
+ return true;
115
176
  };
116
177
  //# 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;AAEzE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAErC,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzD,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAChF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAA;AAElC,MAAM,iBAAiB,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;AACrD,MAAM,qBAAqB,GAAG,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC,CAAA;AACrE,MAAM,gBAAgB,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAA;AACnD,MAAM,oBAAoB,GAAG,aAAa,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAA;AAEnE,MAAM,kCAAkC,GAAG,KAAK,EAC9C,IAAY,EACZ,GAAkB,EAClB,EAAE;IACF,qBAAqB;IACrB,IAAI,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QACxB,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAA;KACxB;IACD,oBAAoB;IACpB,IAAI;QACF,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;KAClC;IAAC,OAAO,EAAE,EAAE;QACX,IAAK,EAA4B,EAAE,IAAI,KAAK,WAAW,EAAE;YACvD,OAAO,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;SACzC;QACD,MAAM,EAAE,CAAA;KACT;AACH,CAAC,CAAA;AAED,MAAM,sCAAsC,GAAG,CAC7C,IAAY,EACZ,GAAkB,EAClB,EAAE;IACF,IAAI,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QACxB,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAA;KACxB;IACD,IAAI;QACF,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;KAChC;IAAC,OAAO,EAAE,EAAE;QACX,IAAK,EAA4B,EAAE,IAAI,KAAK,WAAW,EAAE;YACvD,OAAO,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;SACvC;QACD,MAAM,EAAE,CAAA;KACT;AACH,CAAC,CAAA;AAED,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;AAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAA;AAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;AAC/B,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAAA;AAE9C,MAAM,CAAC,MAAM,aAAa,GAAG,KAAK,EAChC,IAAY,EACZ,GAAkB,EAClB,KAAK,GAAG,KAAK,EACE,EAAE;IACjB,IAAI,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE;QACxB,MAAM,GAAG,CAAC,MAAM,CAAC,MAAM,CAAA;KACxB;IACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACtB,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAA;KAC/D;IAED,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAA;IAC1C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC7B,OAAM;SACP;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC9B,MAAM,OAAO,CAAA;SACd;QACD,YAAY;QACZ,OAAO,YAAY,CAAC,iBAAiB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;KAClD;IAED,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAClB,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAC1E,CACF,CAAA;IAED,IAAI,KAAK,KAAK,KAAK,EAAE;QACnB,OAAO,aAAa,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;KACxC;SAAM,IAAI,KAAK,KAAK,MAAM,EAAE;QAC3B,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;YAC3D,OAAM;SACP;QACD,OAAO,YAAY,CAAC,kCAAkC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;KACnE;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,IAAY,EACZ,GAAkB,EAClB,KAAK,GAAG,KAAK,EACP,EAAE;IACR,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;QACtB,MAAM,IAAI,SAAS,CAAC,yCAAyC,CAAC,CAAA;KAC/D;IAED,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAA;IACxC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE;YAC7B,OAAM;SACP;QACD,IAAI,OAAO,CAAC,IAAI,KAAK,SAAS,EAAE;YAC9B,MAAM,OAAO,CAAA;SACd;QACD,YAAY;QACZ,OAAO,gBAAgB,CAAC,GAAG,EAAE,CAAC,qBAAqB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;KAChE;IAED,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QAC3B,MAAM,CAAC,GAAG,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;QACzC,iBAAiB,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;KAChD;IAED,IAAI,KAAK,KAAK,KAAK,EAAE;QACnB,OAAO,iBAAiB,CAAC,IAAI,EAAE,GAAG,EAAE,MAAM,CAAC,CAAA;KAC5C;SAAM,IAAI,KAAK,KAAK,MAAM,EAAE;QAC3B,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;YAC3D,OAAM;SACP;QACD,OAAO,gBAAgB,CAAC,GAAG,EAAE;YAC3B,sCAAsC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;KACH;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"rimraf-windows.js","sourceRoot":"","sources":["../../src/rimraf-windows.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { RimrafOptions } from './index.js';
2
- export declare const useNative: (opt?: RimrafOptions) => boolean;
1
+ import { RimrafAsyncOptions, RimrafOptions } from './index.js';
2
+ export declare const useNative: (opt?: RimrafAsyncOptions) => boolean;
3
3
  export declare const useNativeSync: (opt?: RimrafOptions) => boolean;
4
4
  //# sourceMappingURL=use-native.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-native.d.ts","sourceRoot":"","sources":["../../src/use-native.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI1C,eAAO,MAAM,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,KAAK,OACuB,CAAA;AACxE,eAAO,MAAM,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,KAAK,OACmB,CAAA"}
1
+ {"version":3,"file":"use-native.d.ts","sourceRoot":"","sources":["../../src/use-native.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAI9D,eAAO,MAAM,SAAS,EAAE,CAAC,GAAG,CAAC,EAAE,kBAAkB,KAAK,OAGb,CAAA;AACzC,eAAO,MAAM,aAAa,EAAE,CAAC,GAAG,CAAC,EAAE,aAAa,KAAK,OAGZ,CAAA"}
@@ -4,6 +4,10 @@ const hasNative = +versArr[0] > 14 || (+versArr[0] === 14 && +versArr[1] >= 14);
4
4
  // we do NOT use native by default on Windows, because Node's native
5
5
  // rm implementation is less advanced. Change this code if that changes.
6
6
  import platform from './platform.js';
7
- export const useNative = !hasNative || platform === 'win32' ? () => false : opt => !opt?.signal;
8
- export const useNativeSync = !hasNative || platform === 'win32' ? () => false : opt => !opt?.signal;
7
+ export const useNative = !hasNative || platform === 'win32'
8
+ ? () => false
9
+ : opt => !opt?.signal && !opt?.filter;
10
+ export const useNativeSync = !hasNative || platform === 'win32'
11
+ ? () => false
12
+ : opt => !opt?.signal && !opt?.filter;
9
13
  //# sourceMappingURL=use-native.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-native.js","sourceRoot":"","sources":["../../src/use-native.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,OAAO,CAAC,OAAO,CAAA;AAC9E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACpD,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAE/E,oEAAoE;AACpE,yEAAyE;AACzE,OAAO,QAAQ,MAAM,eAAe,CAAA;AACpC,MAAM,CAAC,MAAM,SAAS,GACpB,CAAC,SAAS,IAAI,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAA;AACxE,MAAM,CAAC,MAAM,aAAa,GACxB,CAAC,SAAS,IAAI,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,CAAA"}
1
+ {"version":3,"file":"use-native.js","sourceRoot":"","sources":["../../src/use-native.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B,IAAI,OAAO,CAAC,OAAO,CAAA;AAC9E,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AACpD,MAAM,SAAS,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;AAE/E,oEAAoE;AACpE,yEAAyE;AACzE,OAAO,QAAQ,MAAM,eAAe,CAAA;AACpC,MAAM,CAAC,MAAM,SAAS,GACpB,CAAC,SAAS,IAAI,QAAQ,KAAK,OAAO;IAChC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;IACb,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,MAAM,CAAA;AACzC,MAAM,CAAC,MAAM,aAAa,GACxB,CAAC,SAAS,IAAI,QAAQ,KAAK,OAAO;IAChC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK;IACb,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,GAAG,EAAE,MAAM,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "rimraf",
3
- "version": "4.2.0",
3
+ "version": "4.3.1",
4
4
  "main": "./dist/cjs/src/index-cjs.js",
5
5
  "module": "./dist/mjs/index.js",
6
6
  "types": "./dist/mjs/index.d.ts",
@@ -57,7 +57,7 @@
57
57
  "eslint-config-prettier": "^8.6.0",
58
58
  "mkdirp": "1",
59
59
  "prettier": "^2.8.2",
60
- "tap": "^16.3.3",
60
+ "tap": "^16.3.4",
61
61
  "ts-node": "^10.9.1",
62
62
  "typedoc": "^0.23.21",
63
63
  "typescript": "^4.9.3"