rimraf 3.0.2 → 4.0.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.
Files changed (110) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +128 -64
  3. package/dist/cjs/package.json +74 -0
  4. package/dist/cjs/src/bin.d.ts +7 -0
  5. package/dist/cjs/src/bin.js +144 -0
  6. package/dist/cjs/src/bin.js.map +1 -0
  7. package/dist/cjs/src/default-tmp.d.ts +2 -0
  8. package/dist/cjs/src/default-tmp.js +61 -0
  9. package/dist/cjs/src/default-tmp.js.map +1 -0
  10. package/dist/cjs/src/fix-eperm.d.ts +2 -0
  11. package/dist/cjs/src/fix-eperm.js +58 -0
  12. package/dist/cjs/src/fix-eperm.js.map +1 -0
  13. package/dist/cjs/src/fs.d.ts +17 -0
  14. package/dist/cjs/src/fs.js +41 -0
  15. package/dist/cjs/src/fs.js.map +1 -0
  16. package/dist/cjs/src/ignore-enoent.d.ts +2 -0
  17. package/dist/cjs/src/ignore-enoent.js +21 -0
  18. package/dist/cjs/src/ignore-enoent.js.map +1 -0
  19. package/dist/cjs/src/index.d.ts +60 -0
  20. package/dist/cjs/src/index.js +79 -0
  21. package/dist/cjs/src/index.js.map +1 -0
  22. package/dist/cjs/src/opt-arg.d.ts +3 -0
  23. package/dist/cjs/src/opt-arg.js +8 -0
  24. package/dist/cjs/src/opt-arg.js.map +1 -0
  25. package/dist/cjs/src/path-arg.d.ts +3 -0
  26. package/dist/cjs/src/path-arg.js +54 -0
  27. package/dist/cjs/src/path-arg.js.map +1 -0
  28. package/dist/cjs/src/platform.d.ts +2 -0
  29. package/dist/cjs/src/platform.js +4 -0
  30. package/dist/cjs/src/platform.js.map +1 -0
  31. package/dist/cjs/src/readdir-or-error.d.ts +3 -0
  32. package/dist/cjs/src/readdir-or-error.js +19 -0
  33. package/dist/cjs/src/readdir-or-error.js.map +1 -0
  34. package/dist/cjs/src/retry-busy.d.ts +7 -0
  35. package/dist/cjs/src/retry-busy.js +65 -0
  36. package/dist/cjs/src/retry-busy.js.map +1 -0
  37. package/dist/cjs/src/rimraf-manual.d.ts +2 -0
  38. package/dist/cjs/src/rimraf-manual.js +12 -0
  39. package/dist/cjs/src/rimraf-manual.js.map +1 -0
  40. package/dist/cjs/src/rimraf-move-remove.d.ts +3 -0
  41. package/dist/cjs/src/rimraf-move-remove.js +124 -0
  42. package/dist/cjs/src/rimraf-move-remove.js.map +1 -0
  43. package/dist/cjs/src/rimraf-native.d.ts +3 -0
  44. package/dist/cjs/src/rimraf-native.js +18 -0
  45. package/dist/cjs/src/rimraf-native.js.map +1 -0
  46. package/dist/cjs/src/rimraf-posix.d.ts +3 -0
  47. package/dist/cjs/src/rimraf-posix.js +60 -0
  48. package/dist/cjs/src/rimraf-posix.js.map +1 -0
  49. package/dist/cjs/src/rimraf-windows.d.ts +3 -0
  50. package/dist/cjs/src/rimraf-windows.js +110 -0
  51. package/dist/cjs/src/rimraf-windows.js.map +1 -0
  52. package/dist/cjs/src/use-native.d.ts +2 -0
  53. package/dist/cjs/src/use-native.js +9 -0
  54. package/dist/cjs/src/use-native.js.map +1 -0
  55. package/dist/mjs/package.json +74 -0
  56. package/dist/mjs/src/bin.d.ts +7 -0
  57. package/dist/mjs/src/bin.js +138 -0
  58. package/dist/mjs/src/bin.js.map +1 -0
  59. package/dist/mjs/src/default-tmp.d.ts +2 -0
  60. package/dist/mjs/src/default-tmp.js +55 -0
  61. package/dist/mjs/src/default-tmp.js.map +1 -0
  62. package/dist/mjs/src/fix-eperm.d.ts +2 -0
  63. package/dist/mjs/src/fix-eperm.js +53 -0
  64. package/dist/mjs/src/fix-eperm.js.map +1 -0
  65. package/dist/mjs/src/fs.d.ts +17 -0
  66. package/dist/mjs/src/fs.js +27 -0
  67. package/dist/mjs/src/fs.js.map +1 -0
  68. package/dist/mjs/src/ignore-enoent.d.ts +2 -0
  69. package/dist/mjs/src/ignore-enoent.js +16 -0
  70. package/dist/mjs/src/ignore-enoent.js.map +1 -0
  71. package/dist/mjs/src/index.d.ts +60 -0
  72. package/dist/mjs/src/index.js +71 -0
  73. package/dist/mjs/src/index.js.map +1 -0
  74. package/dist/mjs/src/opt-arg.d.ts +3 -0
  75. package/dist/mjs/src/opt-arg.js +6 -0
  76. package/dist/mjs/src/opt-arg.js.map +1 -0
  77. package/dist/mjs/src/path-arg.d.ts +3 -0
  78. package/dist/mjs/src/path-arg.js +49 -0
  79. package/dist/mjs/src/path-arg.js.map +1 -0
  80. package/dist/mjs/src/platform.d.ts +2 -0
  81. package/dist/mjs/src/platform.js +2 -0
  82. package/dist/mjs/src/platform.js.map +1 -0
  83. package/dist/mjs/src/readdir-or-error.d.ts +3 -0
  84. package/dist/mjs/src/readdir-or-error.js +14 -0
  85. package/dist/mjs/src/readdir-or-error.js.map +1 -0
  86. package/dist/mjs/src/retry-busy.d.ts +7 -0
  87. package/dist/mjs/src/retry-busy.js +60 -0
  88. package/dist/mjs/src/retry-busy.js.map +1 -0
  89. package/dist/mjs/src/rimraf-manual.d.ts +2 -0
  90. package/dist/mjs/src/rimraf-manual.js +6 -0
  91. package/dist/mjs/src/rimraf-manual.js.map +1 -0
  92. package/dist/mjs/src/rimraf-move-remove.d.ts +3 -0
  93. package/dist/mjs/src/rimraf-move-remove.js +119 -0
  94. package/dist/mjs/src/rimraf-move-remove.js.map +1 -0
  95. package/dist/mjs/src/rimraf-native.d.ts +3 -0
  96. package/dist/mjs/src/rimraf-native.js +13 -0
  97. package/dist/mjs/src/rimraf-native.js.map +1 -0
  98. package/dist/mjs/src/rimraf-posix.d.ts +3 -0
  99. package/dist/mjs/src/rimraf-posix.js +55 -0
  100. package/dist/mjs/src/rimraf-posix.js.map +1 -0
  101. package/dist/mjs/src/rimraf-windows.d.ts +3 -0
  102. package/dist/mjs/src/rimraf-windows.js +105 -0
  103. package/dist/mjs/src/rimraf-windows.js.map +1 -0
  104. package/dist/mjs/src/use-native.d.ts +2 -0
  105. package/dist/mjs/src/use-native.js +6 -0
  106. package/dist/mjs/src/use-native.js.map +1 -0
  107. package/package.json +57 -15
  108. package/CHANGELOG.md +0 -65
  109. package/bin.js +0 -68
  110. package/rimraf.js +0 -360
@@ -0,0 +1,105 @@
1
+ // This is the same as rimrafPosix, with the following changes:
2
+ //
3
+ // 1. EBUSY, ENFILE, EMFILE trigger retries and/or exponential backoff
4
+ // 2. All non-directories are removed first and then all directories are
5
+ // removed in a second sweep.
6
+ // 3. If we hit ENOTEMPTY in the second sweep, fall back to move-remove on
7
+ // the that folder.
8
+ //
9
+ // Note: "move then remove" is 2-10 times slower, and just as unreliable.
10
+ import { parse, resolve } from 'path';
11
+ import { ignoreENOENT, ignoreENOENTSync } from './ignore-enoent';
12
+ import { fixEPERM, fixEPERMSync } from './fix-eperm';
13
+ import { readdirOrError, readdirOrErrorSync } from './readdir-or-error';
14
+ import { retryBusy, retryBusySync } from './retry-busy';
15
+ import { rimrafMoveRemove, rimrafMoveRemoveSync } from './rimraf-move-remove';
16
+ import { promises, rmdirSync, unlinkSync } from './fs';
17
+ const { unlink, rmdir } = promises;
18
+ const rimrafWindowsFile = retryBusy(fixEPERM(unlink));
19
+ const rimrafWindowsFileSync = retryBusySync(fixEPERMSync(unlinkSync));
20
+ const rimrafWindowsDir = retryBusy(fixEPERM(rmdir));
21
+ const rimrafWindowsDirSync = retryBusySync(fixEPERMSync(rmdirSync));
22
+ const rimrafWindowsDirMoveRemoveFallback = async (path, opt) => {
23
+ try {
24
+ await rimrafWindowsDir(path, opt);
25
+ }
26
+ catch (er) {
27
+ if (er?.code === 'ENOTEMPTY') {
28
+ return await rimrafMoveRemove(path, opt);
29
+ }
30
+ throw er;
31
+ }
32
+ };
33
+ const rimrafWindowsDirMoveRemoveFallbackSync = (path, opt) => {
34
+ try {
35
+ rimrafWindowsDirSync(path, opt);
36
+ }
37
+ catch (er) {
38
+ if (er?.code === 'ENOTEMPTY') {
39
+ return rimrafMoveRemoveSync(path, opt);
40
+ }
41
+ throw er;
42
+ }
43
+ };
44
+ const START = Symbol('start');
45
+ const CHILD = Symbol('child');
46
+ const FINISH = Symbol('finish');
47
+ const states = new Set([START, CHILD, FINISH]);
48
+ export const rimrafWindows = async (path, opt, state = START) => {
49
+ if (!states.has(state)) {
50
+ throw new TypeError('invalid third argument passed to rimraf');
51
+ }
52
+ const entries = await readdirOrError(path);
53
+ if (!Array.isArray(entries)) {
54
+ if (entries.code === 'ENOENT') {
55
+ return;
56
+ }
57
+ if (entries.code !== 'ENOTDIR') {
58
+ throw entries;
59
+ }
60
+ // is a file
61
+ return ignoreENOENT(rimrafWindowsFile(path, opt));
62
+ }
63
+ await Promise.all(entries.map(entry => rimrafWindows(resolve(path, entry), opt, state === START ? CHILD : state)));
64
+ if (state === START) {
65
+ return rimrafWindows(path, opt, FINISH);
66
+ }
67
+ else if (state === FINISH) {
68
+ if (opt.preserveRoot === false && path === parse(path).root) {
69
+ return;
70
+ }
71
+ return ignoreENOENT(rimrafWindowsDirMoveRemoveFallback(path, opt));
72
+ }
73
+ };
74
+ export const rimrafWindowsSync = (path, opt, state = START) => {
75
+ if (!states.has(state)) {
76
+ throw new TypeError('invalid third argument passed to rimraf');
77
+ }
78
+ const entries = readdirOrErrorSync(path);
79
+ if (!Array.isArray(entries)) {
80
+ if (entries.code === 'ENOENT') {
81
+ return;
82
+ }
83
+ if (entries.code !== 'ENOTDIR') {
84
+ throw entries;
85
+ }
86
+ // is a file
87
+ return ignoreENOENTSync(() => rimrafWindowsFileSync(path, opt));
88
+ }
89
+ for (const entry of entries) {
90
+ const s = state === START ? CHILD : state;
91
+ rimrafWindowsSync(resolve(path, entry), opt, s);
92
+ }
93
+ if (state === START) {
94
+ return rimrafWindowsSync(path, opt, FINISH);
95
+ }
96
+ else if (state === FINISH) {
97
+ if (opt.preserveRoot === false && path === parse(path).root) {
98
+ return;
99
+ }
100
+ return ignoreENOENTSync(() => {
101
+ rimrafWindowsDirMoveRemoveFallbackSync(path, opt);
102
+ });
103
+ }
104
+ };
105
+ //# sourceMappingURL=rimraf-windows.js.map
@@ -0,0 +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;AACrC,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AACvE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC7E,OAAO,EAAW,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,MAAM,CAAA;AAE/D,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,IAAI;QACF,MAAM,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;KAClC;IAAC,OAAO,EAAE,EAAE;QACX,IAAK,EAAc,EAAE,IAAI,KAAK,WAAW,EAAE;YACzC,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;QACF,oBAAoB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;KAChC;IAAC,OAAO,EAAE,EAAE;QACX,IAAK,EAAc,EAAE,IAAI,KAAK,WAAW,EAAE;YACzC,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,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"}
@@ -0,0 +1,2 @@
1
+ export declare const useNative: () => boolean;
2
+ export declare const useNativeSync: () => boolean;
@@ -0,0 +1,6 @@
1
+ const version = process.env.__TESTING_RIMRAF_NODE_VERSION__ || process.version;
2
+ const versArr = version.replace(/^v/, '').split('.');
3
+ const hasNative = +versArr[0] > 14 || (+versArr[0] === 14 && +versArr[1] >= 14);
4
+ export const useNative = !hasNative ? () => false : () => true;
5
+ export const useNativeSync = !hasNative ? () => false : () => true;
6
+ //# sourceMappingURL=use-native.js.map
@@ -0,0 +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;AAC/E,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA;AAC9D,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA"}
package/package.json CHANGED
@@ -1,7 +1,18 @@
1
1
  {
2
2
  "name": "rimraf",
3
- "version": "3.0.2",
4
- "main": "rimraf.js",
3
+ "version": "4.0.0",
4
+ "main": "./dist/cjs/src/index.js",
5
+ "module": "./dist/mjs/src/index.js",
6
+ "bin": "./dist/cjs/src/bin.js",
7
+ "exports": {
8
+ ".": {
9
+ "import": "./dist/mjs/src/index.js",
10
+ "require": "./dist/cjs/src/index.js"
11
+ }
12
+ },
13
+ "files": [
14
+ "dist"
15
+ ],
5
16
  "description": "A deep deletion module for node (like `rm -rf`)",
6
17
  "author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
7
18
  "license": "ISC",
@@ -9,24 +20,55 @@
9
20
  "scripts": {
10
21
  "preversion": "npm test",
11
22
  "postversion": "npm publish",
12
- "postpublish": "git push origin --follow-tags",
13
- "test": "tap test/*.js"
23
+ "prepublishOnly": "git push origin --follow-tags",
24
+ "preprepare": "rm -rf dist",
25
+ "prepare": "tsc -p tsconfig-cjs.json && tsc -p tsconfig-esm.json",
26
+ "postprepare": "bash fixup.sh",
27
+ "pretest": "npm run prepare",
28
+ "presnap": "npm run prepare",
29
+ "test": "c8 tap",
30
+ "snap": "c8 tap",
31
+ "format": "prettier --write . --loglevel warn",
32
+ "benchmark": "node benchmark/index.js",
33
+ "typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts"
14
34
  },
15
- "bin": "./bin.js",
16
- "dependencies": {
17
- "glob": "^7.1.3"
35
+ "prettier": {
36
+ "semi": false,
37
+ "printWidth": 80,
38
+ "tabWidth": 2,
39
+ "useTabs": false,
40
+ "singleQuote": true,
41
+ "jsxSingleQuote": false,
42
+ "bracketSameLine": true,
43
+ "arrowParens": "avoid",
44
+ "endOfLine": "lf"
18
45
  },
19
- "files": [
20
- "LICENSE",
21
- "README.md",
22
- "bin.js",
23
- "rimraf.js"
24
- ],
25
46
  "devDependencies": {
26
- "mkdirp": "^0.5.1",
27
- "tap": "^12.1.1"
47
+ "@types/node": "^18.11.9",
48
+ "@types/tap": "^15.0.7",
49
+ "c8": "^7.12.0",
50
+ "eslint-config-prettier": "^8.6.0",
51
+ "mkdirp": "1",
52
+ "prettier": "^2.8.2",
53
+ "tap": "^16.3.3",
54
+ "ts-node": "^10.9.1",
55
+ "typedoc": "^0.23.21",
56
+ "typescript": "^4.9.3"
57
+ },
58
+ "tap": {
59
+ "coverage": false,
60
+ "libtap-settings": "libtap-settings.js",
61
+ "node-arg": [
62
+ "--no-warnings",
63
+ "--loader",
64
+ "ts-node/esm"
65
+ ],
66
+ "ts": false
28
67
  },
29
68
  "funding": {
30
69
  "url": "https://github.com/sponsors/isaacs"
70
+ },
71
+ "engines": {
72
+ "node": ">=14"
31
73
  }
32
74
  }
package/CHANGELOG.md DELETED
@@ -1,65 +0,0 @@
1
- # v3.0
2
-
3
- - Add `--preserve-root` option to executable (default true)
4
- - Drop support for Node.js below version 6
5
-
6
- # v2.7
7
-
8
- - Make `glob` an optional dependency
9
-
10
- # 2.6
11
-
12
- - Retry on EBUSY on non-windows platforms as well
13
- - Make `rimraf.sync` 10000% more reliable on Windows
14
-
15
- # 2.5
16
-
17
- - Handle Windows EPERM when lstat-ing read-only dirs
18
- - Add glob option to pass options to glob
19
-
20
- # 2.4
21
-
22
- - Add EPERM to delay/retry loop
23
- - Add `disableGlob` option
24
-
25
- # 2.3
26
-
27
- - Make maxBusyTries and emfileWait configurable
28
- - Handle weird SunOS unlink-dir issue
29
- - Glob the CLI arg for better Windows support
30
-
31
- # 2.2
32
-
33
- - Handle ENOENT properly on Windows
34
- - Allow overriding fs methods
35
- - Treat EPERM as indicative of non-empty dir
36
- - Remove optional graceful-fs dep
37
- - Consistently return null error instead of undefined on success
38
- - win32: Treat ENOTEMPTY the same as EBUSY
39
- - Add `rimraf` binary
40
-
41
- # 2.1
42
-
43
- - Fix SunOS error code for a non-empty directory
44
- - Try rmdir before readdir
45
- - Treat EISDIR like EPERM
46
- - Remove chmod
47
- - Remove lstat polyfill, node 0.7 is not supported
48
-
49
- # 2.0
50
-
51
- - Fix myGid call to check process.getgid
52
- - Simplify the EBUSY backoff logic.
53
- - Use fs.lstat in node >= 0.7.9
54
- - Remove gently option
55
- - remove fiber implementation
56
- - Delete files that are marked read-only
57
-
58
- # 1.0
59
-
60
- - Allow ENOENT in sync method
61
- - Throw when no callback is provided
62
- - Make opts.gently an absolute path
63
- - use 'stat' if 'lstat' is not available
64
- - Consistent error naming, and rethrow non-ENOENT stat errors
65
- - add fiber implementation
package/bin.js DELETED
@@ -1,68 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- const rimraf = require('./')
4
-
5
- const path = require('path')
6
-
7
- const isRoot = arg => /^(\/|[a-zA-Z]:\\)$/.test(path.resolve(arg))
8
- const filterOutRoot = arg => {
9
- const ok = preserveRoot === false || !isRoot(arg)
10
- if (!ok) {
11
- console.error(`refusing to remove ${arg}`)
12
- console.error('Set --no-preserve-root to allow this')
13
- }
14
- return ok
15
- }
16
-
17
- let help = false
18
- let dashdash = false
19
- let noglob = false
20
- let preserveRoot = true
21
- const args = process.argv.slice(2).filter(arg => {
22
- if (dashdash)
23
- return !!arg
24
- else if (arg === '--')
25
- dashdash = true
26
- else if (arg === '--no-glob' || arg === '-G')
27
- noglob = true
28
- else if (arg === '--glob' || arg === '-g')
29
- noglob = false
30
- else if (arg.match(/^(-+|\/)(h(elp)?|\?)$/))
31
- help = true
32
- else if (arg === '--preserve-root')
33
- preserveRoot = true
34
- else if (arg === '--no-preserve-root')
35
- preserveRoot = false
36
- else
37
- return !!arg
38
- }).filter(arg => !preserveRoot || filterOutRoot(arg))
39
-
40
- const go = n => {
41
- if (n >= args.length)
42
- return
43
- const options = noglob ? { glob: false } : {}
44
- rimraf(args[n], options, er => {
45
- if (er)
46
- throw er
47
- go(n+1)
48
- })
49
- }
50
-
51
- if (help || args.length === 0) {
52
- // If they didn't ask for help, then this is not a "success"
53
- const log = help ? console.log : console.error
54
- log('Usage: rimraf <path> [<path> ...]')
55
- log('')
56
- log(' Deletes all files and folders at "path" recursively.')
57
- log('')
58
- log('Options:')
59
- log('')
60
- log(' -h, --help Display this usage info')
61
- log(' -G, --no-glob Do not expand glob patterns in arguments')
62
- log(' -g, --glob Expand glob patterns in arguments (default)')
63
- log(' --preserve-root Do not remove \'/\' (default)')
64
- log(' --no-preserve-root Do not treat \'/\' specially')
65
- log(' -- Stop parsing flags')
66
- process.exit(help ? 0 : 1)
67
- } else
68
- go(0)