mirror of
https://github.com/nunocoracao/blowfish.git
synced 2026-01-30 15:31:52 +00:00
config redirect
This commit is contained in:
+15
@@ -0,0 +1,15 @@
|
||||
The ISC License
|
||||
|
||||
Copyright (c) 2011-2023 Isaac Z. Schlueter and Contributors
|
||||
|
||||
Permission to use, copy, modify, and/or distribute this software for any
|
||||
purpose with or without fee is hereby granted, provided that the above
|
||||
copyright notice and this permission notice appear in all copies.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
|
||||
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
+168
@@ -0,0 +1,168 @@
|
||||
The [UNIX command](<http://en.wikipedia.org/wiki/Rm_(Unix)>) `rm -rf` for node.
|
||||
|
||||
Install with `npm install rimraf`.
|
||||
|
||||
## Major Changes from v3 to v4
|
||||
|
||||
- The function returns a `Promise` instead of taking a callback.
|
||||
- Built-in glob support removed.
|
||||
- Functions take arrays of paths, as well as a single path.
|
||||
- Native implementation used by default when available, except on
|
||||
Windows, where this implementation is faster and more reliable.
|
||||
- New implementation on Windows, falling back to "move then
|
||||
remove" strategy when exponential backoff for `EBUSY` fails to
|
||||
resolve the situation.
|
||||
- Simplified implementation on Posix, since the Windows
|
||||
affordances are not necessary there.
|
||||
|
||||
## API
|
||||
|
||||
Hybrid module, load either with `import` or `require()`.
|
||||
|
||||
```js
|
||||
// default export is the main rimraf function, or use named imports
|
||||
import rimraf from 'rimraf'
|
||||
// or
|
||||
const rimraf = require('rimraf')
|
||||
|
||||
// other strategies exported as well
|
||||
import { rimraf, rimrafSync, native, nativeSync } from 'rimraf'
|
||||
// or
|
||||
const { rimraf, rimrafSync, native, nativeSync } = require('rimraf')
|
||||
```
|
||||
|
||||
### `rimraf(f, [opts]) -> Promise`
|
||||
|
||||
This first parameter is a path or array of paths. The second
|
||||
argument is an options object.
|
||||
|
||||
Options:
|
||||
|
||||
- `preserveRoot`: If set to boolean `false`, then allow the
|
||||
recursive removal of the root directory. Otherwise, this is
|
||||
not allowed.
|
||||
- `tmp`: Windows only. Temp folder to use to place files and
|
||||
folders for the "move then remove" fallback. Must be on the
|
||||
same physical device as the path being deleted. Defaults to
|
||||
`os.tmpdir()` when that is on the same drive letter as the path
|
||||
being deleted, or `${drive}:\temp` if present, or `${drive}:\`
|
||||
if not.
|
||||
- `maxRetries`: Windows and Native only. Maximum number of
|
||||
retry attempts in case of `EBUSY`, `EMFILE`, and `ENFILE`
|
||||
errors. Default `10` for Windows implementation, `0` for Native
|
||||
implementation.
|
||||
- `backoff`: Windows only. Rate of exponential backoff for async
|
||||
removal in case of `EBUSY`, `EMFILE`, and `ENFILE` errors.
|
||||
Should be a number greater than 1. Default `1.2`
|
||||
- `maxBackoff`: Windows only. Maximum total backoff time in ms to
|
||||
attempt asynchronous retries in case of `EBUSY`, `EMFILE`, and
|
||||
`ENFILE` errors. Default `200`. With the default `1.2` backoff
|
||||
rate, this results in 14 retries, with the final retry being
|
||||
delayed 33ms.
|
||||
- `retryDelay`: Native only. Time to wait between retries, using
|
||||
linear backoff. Default `100`.
|
||||
|
||||
Any other options are provided to the native Node.js `fs.rm` implementation
|
||||
when that is used.
|
||||
|
||||
This will attempt to choose the best implementation, based on Node.js
|
||||
version and `process.platform`. To force a specific implementation, use
|
||||
one of the other functions provided.
|
||||
|
||||
### `rimraf.sync(f, [opts])` `rimraf.rimrafSync(f, [opts])`
|
||||
|
||||
Synchronous form of `rimraf()`
|
||||
|
||||
Note that, unlike many file system operations, the synchronous form will
|
||||
typically be significantly _slower_ than the async form, because recursive
|
||||
deletion is extremely parallelizable.
|
||||
|
||||
### `rimraf.native(f, [opts])`
|
||||
|
||||
Uses the built-in `fs.rm` implementation that Node.js provides. This is
|
||||
used by default on Node.js versions greater than or equal to `14.14.0`.
|
||||
|
||||
### `rimraf.nativeSync(f, [opts])` `rimraf.native.sync(f, [opts])`
|
||||
|
||||
Synchronous form of `rimraf.native`
|
||||
|
||||
### `rimraf.manual(f, [opts])`
|
||||
|
||||
Use the JavaScript implementation appropriate for your operating system.
|
||||
|
||||
### `rimraf.manualSync(f, [opts])` `rimraf.manualSync(f, opts)`
|
||||
|
||||
Synchronous form of `rimraf.manual()`
|
||||
|
||||
### `rimraf.windows(f, [opts])`
|
||||
|
||||
JavaScript implementation of file removal appropriate for Windows
|
||||
platforms. Works around `unlink` and `rmdir` not being atomic
|
||||
operations, and `EPERM` when deleting files with certain
|
||||
permission modes.
|
||||
|
||||
First deletes all non-directory files within the tree, and then
|
||||
removes all directories, which should ideally be empty by that
|
||||
time. When an `ENOTEMPTY` is raised in the second pass, falls
|
||||
back to the `rimraf.moveRemove` strategy as needed.
|
||||
|
||||
### `rimraf.windows.sync(path, [opts])` `rimraf.windowsSync(path, [opts])`
|
||||
|
||||
Synchronous form of `rimraf.windows()`
|
||||
|
||||
### `rimraf.moveRemove(path, [opts])`
|
||||
|
||||
Moves all files and folders to the parent directory of `path`
|
||||
with a temporary filename prior to attempting to remove them.
|
||||
|
||||
Note that, in cases where the operation fails, this _may_ leave
|
||||
files lying around in the parent directory with names like
|
||||
`.file-basename.txt.0.123412341`. Until the Windows kernel
|
||||
provides a way to perform atomic `unlink` and `rmdir` operations,
|
||||
this is unfortunately unavoidable.
|
||||
|
||||
To move files to a different temporary directory other than the
|
||||
parent, provide `opts.tmp`. Note that this _must_ be on the same
|
||||
physical device as the folder being deleted, or else the
|
||||
operation will fail.
|
||||
|
||||
This is the slowest strategy, but most reliable on Windows
|
||||
platforms. Used as a last-ditch fallback by `rimraf.windows()`.
|
||||
|
||||
### `rimraf.moveRemove.sync(path, [opts])` `rimraf.moveRemoveSync(path, [opts])`
|
||||
|
||||
Synchronous form of `rimraf.moveRemove()`
|
||||
|
||||
### Command Line Interface
|
||||
|
||||
```
|
||||
rimraf version 4.0.4
|
||||
|
||||
Usage: rimraf <path> [<path> ...]
|
||||
Deletes all files and folders at "path", recursively.
|
||||
|
||||
Options:
|
||||
-- Treat all subsequent arguments as paths
|
||||
-h --help Display this usage info
|
||||
--preserve-root Do not remove '/' recursively (default)
|
||||
--no-preserve-root Do not treat '/' specially
|
||||
|
||||
--impl=<type> Specify the implementationt to use.
|
||||
rimraf: choose the best option
|
||||
native: the built-in implementation in Node.js
|
||||
manual: the platform-specific JS implementation
|
||||
posix: the Posix JS implementation
|
||||
windows: the Windows JS implementation
|
||||
move-remove: a slower Windows JS fallback implementation
|
||||
|
||||
Implementation-specific options:
|
||||
--tmp=<path> Folder to hold temp files for 'move-remove' implementation
|
||||
--max-retries=<n> maxRetries for the 'native' and 'windows' implementations
|
||||
--retry-delay=<n> retryDelay for the 'native' implementation, default 100
|
||||
--backoff=<n> Exponential backoff factor for retries (default: 1.2)
|
||||
```
|
||||
|
||||
## mkdirp
|
||||
|
||||
If you need to _create_ a directory recursively, check out
|
||||
[mkdirp](https://github.com/isaacs/node-mkdirp).
|
||||
+80
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"name": "rimraf",
|
||||
"version": "4.1.0",
|
||||
"main": "./dist/cjs/src/index-cjs.js",
|
||||
"module": "./dist/mjs/index.js",
|
||||
"bin": "./dist/cjs/src/bin.js",
|
||||
"exports": {
|
||||
".": {
|
||||
"import": {
|
||||
"default": "./dist/mjs/index.js",
|
||||
"types": "./dist/mjs/index.d.ts"
|
||||
},
|
||||
"require": {
|
||||
"default": "./dist/cjs/src/index-cjs.js",
|
||||
"types": "./dist/cjs/src/index-cjs.d.ts"
|
||||
}
|
||||
}
|
||||
},
|
||||
"files": [
|
||||
"dist"
|
||||
],
|
||||
"description": "A deep deletion module for node (like `rm -rf`)",
|
||||
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
|
||||
"license": "ISC",
|
||||
"repository": "git://github.com/isaacs/rimraf.git",
|
||||
"scripts": {
|
||||
"preversion": "npm test",
|
||||
"postversion": "npm publish",
|
||||
"prepublishOnly": "git push origin --follow-tags",
|
||||
"preprepare": "rm -rf dist",
|
||||
"prepare": "tsc -p tsconfig.json && tsc -p tsconfig-esm.json",
|
||||
"postprepare": "bash fixup.sh",
|
||||
"pretest": "npm run prepare",
|
||||
"presnap": "npm run prepare",
|
||||
"test": "c8 tap",
|
||||
"snap": "c8 tap",
|
||||
"format": "prettier --write . --loglevel warn",
|
||||
"benchmark": "node benchmark/index.js",
|
||||
"typedoc": "typedoc --tsconfig tsconfig-esm.json ./src/*.ts"
|
||||
},
|
||||
"prettier": {
|
||||
"semi": false,
|
||||
"printWidth": 80,
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"singleQuote": true,
|
||||
"jsxSingleQuote": false,
|
||||
"bracketSameLine": true,
|
||||
"arrowParens": "avoid",
|
||||
"endOfLine": "lf"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^18.11.9",
|
||||
"@types/tap": "^15.0.7",
|
||||
"c8": "^7.12.0",
|
||||
"eslint-config-prettier": "^8.6.0",
|
||||
"mkdirp": "1",
|
||||
"prettier": "^2.8.2",
|
||||
"tap": "^16.3.3",
|
||||
"ts-node": "^10.9.1",
|
||||
"typedoc": "^0.23.21",
|
||||
"typescript": "^4.9.3"
|
||||
},
|
||||
"tap": {
|
||||
"coverage": false,
|
||||
"libtap-settings": "libtap-settings.js",
|
||||
"node-arg": [
|
||||
"--no-warnings",
|
||||
"--loader",
|
||||
"ts-node/esm"
|
||||
],
|
||||
"ts": false
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/isaacs"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=14"
|
||||
}
|
||||
}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
#!/usr/bin/env node
|
||||
export declare const help: string;
|
||||
declare const main: {
|
||||
(...args: string[]): Promise<1 | 0>;
|
||||
help: string;
|
||||
};
|
||||
export default main;
|
||||
+144
@@ -0,0 +1,144 @@
|
||||
#!/usr/bin/env node
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.help = void 0;
|
||||
const package_json_1 = require("../package.json");
|
||||
const index_cjs_js_1 = __importDefault(require("./index-cjs.js"));
|
||||
const runHelpForUsage = () => console.error('run `rimraf --help` for usage information');
|
||||
exports.help = `rimraf version ${package_json_1.version}
|
||||
|
||||
Usage: rimraf <path> [<path> ...]
|
||||
Deletes all files and folders at "path", recursively.
|
||||
|
||||
Options:
|
||||
-- Treat all subsequent arguments as paths
|
||||
-h --help Display this usage info
|
||||
--preserve-root Do not remove '/' recursively (default)
|
||||
--no-preserve-root Do not treat '/' specially
|
||||
|
||||
--impl=<type> Specify the implementationt to use.
|
||||
rimraf: choose the best option
|
||||
native: the built-in implementation in Node.js
|
||||
manual: the platform-specific JS implementation
|
||||
posix: the Posix JS implementation
|
||||
windows: the Windows JS implementation
|
||||
move-remove: a slower Windows JS fallback implementation
|
||||
|
||||
Implementation-specific options:
|
||||
--tmp=<path> Folder to hold temp files for 'move-remove' implementation
|
||||
--max-retries=<n> maxRetries for the 'native' and 'windows' implementations
|
||||
--retry-delay=<n> retryDelay for the 'native' implementation, default 100
|
||||
--backoff=<n> Exponential backoff factor for retries (default: 1.2)
|
||||
`;
|
||||
const path_1 = require("path");
|
||||
const main = async (...args) => {
|
||||
if (process.env.__RIMRAF_TESTING_BIN_FAIL__ === '1') {
|
||||
throw new Error('simulated rimraf failure');
|
||||
}
|
||||
const opt = {};
|
||||
const paths = [];
|
||||
let dashdash = false;
|
||||
let impl = index_cjs_js_1.default;
|
||||
for (const arg of args) {
|
||||
if (dashdash) {
|
||||
paths.push(arg);
|
||||
continue;
|
||||
}
|
||||
if (arg === '--') {
|
||||
dashdash = true;
|
||||
continue;
|
||||
}
|
||||
else if (arg === '-h' || arg === '--help') {
|
||||
console.log(exports.help);
|
||||
return 0;
|
||||
}
|
||||
else if (arg === '--preserve-root') {
|
||||
opt.preserveRoot = true;
|
||||
continue;
|
||||
}
|
||||
else if (arg === '--no-preserve-root') {
|
||||
opt.preserveRoot = false;
|
||||
continue;
|
||||
}
|
||||
else if (/^--tmp=/.test(arg)) {
|
||||
const val = arg.substring('--tmp='.length);
|
||||
opt.tmp = val;
|
||||
continue;
|
||||
}
|
||||
else if (/^--max-retries=/.test(arg)) {
|
||||
const val = +arg.substring('--max-retries='.length);
|
||||
opt.maxRetries = val;
|
||||
continue;
|
||||
}
|
||||
else if (/^--retry-delay=/.test(arg)) {
|
||||
const val = +arg.substring('--retry-delay='.length);
|
||||
opt.retryDelay = val;
|
||||
continue;
|
||||
}
|
||||
else if (/^--backoff=/.test(arg)) {
|
||||
const val = +arg.substring('--backoff='.length);
|
||||
opt.backoff = val;
|
||||
continue;
|
||||
}
|
||||
else if (/^--impl=/.test(arg)) {
|
||||
const val = arg.substring('--impl='.length);
|
||||
switch (val) {
|
||||
case 'rimraf':
|
||||
impl = index_cjs_js_1.default;
|
||||
continue;
|
||||
case 'native':
|
||||
case 'manual':
|
||||
case 'posix':
|
||||
case 'windows':
|
||||
impl = index_cjs_js_1.default[val];
|
||||
continue;
|
||||
case 'move-remove':
|
||||
impl = index_cjs_js_1.default.moveRemove;
|
||||
continue;
|
||||
default:
|
||||
console.error(`unknown implementation: ${val}`);
|
||||
runHelpForUsage();
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else if (/^-/.test(arg)) {
|
||||
console.error(`unknown option: ${arg}`);
|
||||
runHelpForUsage();
|
||||
return 1;
|
||||
}
|
||||
else {
|
||||
paths.push(arg);
|
||||
}
|
||||
}
|
||||
if (opt.preserveRoot !== false) {
|
||||
for (const path of paths.map(p => (0, path_1.resolve)(p))) {
|
||||
if (path === (0, path_1.parse)(path).root) {
|
||||
console.error(`rimraf: it is dangerous to operate recursively on '/'`);
|
||||
console.error('use --no-preserve-root to override this failsafe');
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!paths.length) {
|
||||
console.error('rimraf: must provide a path to remove');
|
||||
runHelpForUsage();
|
||||
return 1;
|
||||
}
|
||||
await impl(paths, opt);
|
||||
return 0;
|
||||
};
|
||||
main.help = exports.help;
|
||||
exports.default = main;
|
||||
if (typeof require === 'function' &&
|
||||
typeof module === 'object' &&
|
||||
require.main === module) {
|
||||
const args = process.argv.slice(2);
|
||||
main(...args).then(code => process.exit(code), er => {
|
||||
console.error(er);
|
||||
process.exit(1);
|
||||
});
|
||||
}
|
||||
//# sourceMappingURL=bin.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../../../src/bin.ts"],"names":[],"mappings":"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"}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export declare const defaultTmp: (path: string) => Promise<string>;
|
||||
export declare const defaultTmpSync: (path: string) => string;
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.defaultTmpSync = exports.defaultTmp = void 0;
|
||||
// The default temporary folder location for use in the windows algorithm.
|
||||
// It's TEMPting to use dirname(path), since that's guaranteed to be on the
|
||||
// same device. However, this means that:
|
||||
// rimraf(path).then(() => rimraf(dirname(path)))
|
||||
// will often fail with EBUSY, because the parent dir contains
|
||||
// marked-for-deletion directory entries (which do not show up in readdir).
|
||||
// The approach here is to use os.tmpdir() if it's on the same drive letter,
|
||||
// or resolve(path, '\\temp') if it exists, or the root of the drive if not.
|
||||
// On Posix (not that you'd be likely to use the windows algorithm there),
|
||||
// it uses os.tmpdir() always.
|
||||
const os_1 = require("os");
|
||||
const path_1 = require("path");
|
||||
const fs_js_1 = require("./fs.js");
|
||||
const platform_js_1 = __importDefault(require("./platform.js"));
|
||||
const { stat } = fs_js_1.promises;
|
||||
const isDirSync = (path) => {
|
||||
try {
|
||||
return (0, fs_js_1.statSync)(path).isDirectory();
|
||||
}
|
||||
catch (er) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
const isDir = (path) => stat(path).then(st => st.isDirectory(), () => false);
|
||||
const win32DefaultTmp = async (path) => {
|
||||
const { root } = (0, path_1.parse)(path);
|
||||
const tmp = (0, os_1.tmpdir)();
|
||||
const { root: tmpRoot } = (0, path_1.parse)(tmp);
|
||||
if (root.toLowerCase() === tmpRoot.toLowerCase()) {
|
||||
return tmp;
|
||||
}
|
||||
const driveTmp = (0, path_1.resolve)(root, '/temp');
|
||||
if (await isDir(driveTmp)) {
|
||||
return driveTmp;
|
||||
}
|
||||
return root;
|
||||
};
|
||||
const win32DefaultTmpSync = (path) => {
|
||||
const { root } = (0, path_1.parse)(path);
|
||||
const tmp = (0, os_1.tmpdir)();
|
||||
const { root: tmpRoot } = (0, path_1.parse)(tmp);
|
||||
if (root.toLowerCase() === tmpRoot.toLowerCase()) {
|
||||
return tmp;
|
||||
}
|
||||
const driveTmp = (0, path_1.resolve)(root, '/temp');
|
||||
if (isDirSync(driveTmp)) {
|
||||
return driveTmp;
|
||||
}
|
||||
return root;
|
||||
};
|
||||
const posixDefaultTmp = async () => (0, os_1.tmpdir)();
|
||||
const posixDefaultTmpSync = () => (0, os_1.tmpdir)();
|
||||
exports.defaultTmp = platform_js_1.default === 'win32' ? win32DefaultTmp : posixDefaultTmp;
|
||||
exports.defaultTmpSync = platform_js_1.default === 'win32' ? win32DefaultTmpSync : posixDefaultTmpSync;
|
||||
//# sourceMappingURL=default-tmp.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"default-tmp.js","sourceRoot":"","sources":["../../../src/default-tmp.ts"],"names":[],"mappings":";;;;;;AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,0CAA0C;AAC1C,iDAAiD;AACjD,8DAA8D;AAC9D,2EAA2E;AAC3E,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,8BAA8B;AAC9B,2BAA2B;AAC3B,+BAAqC;AACrC,mCAA4C;AAC5C,gEAAoC;AACpC,MAAM,EAAE,IAAI,EAAE,GAAG,gBAAQ,CAAA;AAEzB,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE;IACjC,IAAI;QACF,OAAO,IAAA,gBAAQ,EAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;KACpC;IAAC,OAAO,EAAE,EAAE;QACX,OAAO,KAAK,CAAA;KACb;AACH,CAAC,CAAA;AAED,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CACb,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EACtB,GAAG,EAAE,CAAC,KAAK,CACZ,CAAA;AAEH,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,YAAK,EAAC,IAAI,CAAC,CAAA;IAC5B,MAAM,GAAG,GAAG,IAAA,WAAM,GAAE,CAAA;IACpB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,YAAK,EAAC,GAAG,CAAC,CAAA;IACpC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,EAAE;QAChD,OAAO,GAAG,CAAA;KACX;IAED,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACvC,IAAI,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE;QACzB,OAAO,QAAQ,CAAA;KAChB;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC3C,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,YAAK,EAAC,IAAI,CAAC,CAAA;IAC5B,MAAM,GAAG,GAAG,IAAA,WAAM,GAAE,CAAA;IACpB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,IAAA,YAAK,EAAC,GAAG,CAAC,CAAA;IACpC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,EAAE;QAChD,OAAO,GAAG,CAAA;KACX;IAED,MAAM,QAAQ,GAAG,IAAA,cAAO,EAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACvC,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;QACvB,OAAO,QAAQ,CAAA;KAChB;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE,CAAC,IAAA,WAAM,GAAE,CAAA;AAC5C,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,IAAA,WAAM,GAAE,CAAA;AAE7B,QAAA,UAAU,GACrB,qBAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAA;AAC7C,QAAA,cAAc,GACzB,qBAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAA"}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export declare const fixEPERM: (fn: (path: string) => Promise<any>) => (path: string) => Promise<any>;
|
||||
export declare const fixEPERMSync: (fn: (path: string) => any) => (path: string) => any;
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.fixEPERMSync = exports.fixEPERM = void 0;
|
||||
const fs_js_1 = require("./fs.js");
|
||||
const { chmod } = fs_js_1.promises;
|
||||
const fixEPERM = (fn) => async (path) => {
|
||||
try {
|
||||
return await fn(path);
|
||||
}
|
||||
catch (er) {
|
||||
const fer = er;
|
||||
if (fer?.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (fer?.code === 'EPERM') {
|
||||
try {
|
||||
await chmod(path, 0o666);
|
||||
}
|
||||
catch (er2) {
|
||||
const fer2 = er2;
|
||||
if (fer2?.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
return await fn(path);
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
};
|
||||
exports.fixEPERM = fixEPERM;
|
||||
const fixEPERMSync = (fn) => (path) => {
|
||||
try {
|
||||
return fn(path);
|
||||
}
|
||||
catch (er) {
|
||||
const fer = er;
|
||||
if (fer?.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (fer?.code === 'EPERM') {
|
||||
try {
|
||||
(0, fs_js_1.chmodSync)(path, 0o666);
|
||||
}
|
||||
catch (er2) {
|
||||
const fer2 = er2;
|
||||
if (fer2?.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
return fn(path);
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
};
|
||||
exports.fixEPERMSync = fixEPERMSync;
|
||||
//# sourceMappingURL=fix-eperm.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"fix-eperm.js","sourceRoot":"","sources":["../../../src/fix-eperm.ts"],"names":[],"mappings":";;;AAAA,mCAAsD;AACtD,MAAM,EAAE,KAAK,EAAE,GAAG,gBAAQ,CAAA;AAEnB,MAAM,QAAQ,GACnB,CAAC,EAAkC,EAAE,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7D,IAAI;QACF,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;KACtB;IAAC,OAAO,EAAE,EAAE;QACX,MAAM,GAAG,GAAG,EAAa,CAAA;QACzB,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE;YAC1B,OAAM;SACP;QACD,IAAI,GAAG,EAAE,IAAI,KAAK,OAAO,EAAE;YACzB,IAAI;gBACF,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;aACzB;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,IAAI,GAAG,GAAc,CAAA;gBAC3B,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE;oBAC3B,OAAM;iBACP;gBACD,MAAM,EAAE,CAAA;aACT;YACD,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;SACtB;QACD,MAAM,EAAE,CAAA;KACT;AACH,CAAC,CAAA;AAvBU,QAAA,QAAQ,YAuBlB;AAEI,MAAM,YAAY,GAAG,CAAC,EAAyB,EAAE,EAAE,CAAC,CAAC,IAAY,EAAE,EAAE;IAC1E,IAAI;QACF,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;KAChB;IAAC,OAAO,EAAE,EAAE;QACX,MAAM,GAAG,GAAG,EAAa,CAAA;QACzB,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE;YAC1B,OAAM;SACP;QACD,IAAI,GAAG,EAAE,IAAI,KAAK,OAAO,EAAE;YACzB,IAAI;gBACF,IAAA,iBAAS,EAAC,IAAI,EAAE,KAAK,CAAC,CAAA;aACvB;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,IAAI,GAAG,GAAc,CAAA;gBAC3B,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE;oBAC3B,OAAM;iBACP;gBACD,MAAM,EAAE,CAAA;aACT;YACD,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;SAChB;QACD,MAAM,EAAE,CAAA;KACT;AACH,CAAC,CAAA;AAtBY,QAAA,YAAY,gBAsBxB"}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
import fs from 'fs';
|
||||
export type FsError = Error & {
|
||||
code?: string;
|
||||
path?: string;
|
||||
};
|
||||
export { chmodSync, mkdirSync, readdirSync, renameSync, rmdirSync, rmSync, statSync, unlinkSync, } from 'fs';
|
||||
export declare const promises: {
|
||||
chmod: (path: fs.PathLike, mode: fs.Mode) => Promise<void>;
|
||||
mkdir: (path: fs.PathLike, options?: fs.Mode | (fs.MakeDirectoryOptions & {
|
||||
recursive?: boolean | null;
|
||||
}) | undefined | null) => Promise<string | undefined>;
|
||||
readdir: (path: fs.PathLike) => Promise<string[]>;
|
||||
rename: (oldPath: fs.PathLike, newPath: fs.PathLike) => Promise<void>;
|
||||
rm: (path: fs.PathLike, options: fs.RmOptions) => Promise<void>;
|
||||
rmdir: (path: fs.PathLike) => Promise<void>;
|
||||
stat: (path: fs.PathLike) => Promise<fs.Stats>;
|
||||
unlink: (path: fs.PathLike) => Promise<void>;
|
||||
};
|
||||
+41
@@ -0,0 +1,41 @@
|
||||
"use strict";
|
||||
// promisify ourselves, because older nodes don't have fs.promises
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.promises = exports.unlinkSync = exports.statSync = exports.rmSync = exports.rmdirSync = exports.renameSync = exports.readdirSync = exports.mkdirSync = exports.chmodSync = void 0;
|
||||
const fs_1 = __importDefault(require("fs"));
|
||||
// sync ones just take the sync version from node
|
||||
var fs_2 = require("fs");
|
||||
Object.defineProperty(exports, "chmodSync", { enumerable: true, get: function () { return fs_2.chmodSync; } });
|
||||
Object.defineProperty(exports, "mkdirSync", { enumerable: true, get: function () { return fs_2.mkdirSync; } });
|
||||
Object.defineProperty(exports, "readdirSync", { enumerable: true, get: function () { return fs_2.readdirSync; } });
|
||||
Object.defineProperty(exports, "renameSync", { enumerable: true, get: function () { return fs_2.renameSync; } });
|
||||
Object.defineProperty(exports, "rmdirSync", { enumerable: true, get: function () { return fs_2.rmdirSync; } });
|
||||
Object.defineProperty(exports, "rmSync", { enumerable: true, get: function () { return fs_2.rmSync; } });
|
||||
Object.defineProperty(exports, "statSync", { enumerable: true, get: function () { return fs_2.statSync; } });
|
||||
Object.defineProperty(exports, "unlinkSync", { enumerable: true, get: function () { return fs_2.unlinkSync; } });
|
||||
// unrolled for better inlining, this seems to get better performance
|
||||
// than something like:
|
||||
// const makeCb = (res, rej) => (er, ...d) => er ? rej(er) : res(...d)
|
||||
// which would be a bit cleaner.
|
||||
const chmod = (path, mode) => new Promise((res, rej) => fs_1.default.chmod(path, mode, (er, ...d) => (er ? rej(er) : res(...d))));
|
||||
const mkdir = (path, options) => new Promise((res, rej) => fs_1.default.mkdir(path, options, (er, made) => (er ? rej(er) : res(made))));
|
||||
const readdir = (path) => new Promise((res, rej) => fs_1.default.readdir(path, (er, data) => (er ? rej(er) : res(data))));
|
||||
const rename = (oldPath, newPath) => new Promise((res, rej) => fs_1.default.rename(oldPath, newPath, (er, ...d) => (er ? rej(er) : res(...d))));
|
||||
const rm = (path, options) => new Promise((res, rej) => fs_1.default.rm(path, options, (er, ...d) => (er ? rej(er) : res(...d))));
|
||||
const rmdir = (path) => new Promise((res, rej) => fs_1.default.rmdir(path, (er, ...d) => (er ? rej(er) : res(...d))));
|
||||
const stat = (path) => new Promise((res, rej) => fs_1.default.stat(path, (er, data) => (er ? rej(er) : res(data))));
|
||||
const unlink = (path) => new Promise((res, rej) => fs_1.default.unlink(path, (er, ...d) => (er ? rej(er) : res(...d))));
|
||||
exports.promises = {
|
||||
chmod,
|
||||
mkdir,
|
||||
readdir,
|
||||
rename,
|
||||
rm,
|
||||
rmdir,
|
||||
stat,
|
||||
unlink,
|
||||
};
|
||||
//# sourceMappingURL=fs.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../../src/fs.ts"],"names":[],"mappings":"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"}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export declare const ignoreENOENT: (p: Promise<any>) => Promise<any>;
|
||||
export declare const ignoreENOENTSync: (fn: () => any) => any;
|
||||
+21
@@ -0,0 +1,21 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.ignoreENOENTSync = exports.ignoreENOENT = void 0;
|
||||
const ignoreENOENT = async (p) => p.catch(er => {
|
||||
if (er.code !== 'ENOENT') {
|
||||
throw er;
|
||||
}
|
||||
});
|
||||
exports.ignoreENOENT = ignoreENOENT;
|
||||
const ignoreENOENTSync = (fn) => {
|
||||
try {
|
||||
return fn();
|
||||
}
|
||||
catch (er) {
|
||||
if (er?.code !== 'ENOENT') {
|
||||
throw er;
|
||||
}
|
||||
}
|
||||
};
|
||||
exports.ignoreENOENTSync = ignoreENOENTSync;
|
||||
//# sourceMappingURL=ignore-enoent.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"ignore-enoent.js","sourceRoot":"","sources":["../../../src/ignore-enoent.ts"],"names":[],"mappings":";;;AAEO,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;AALS,QAAA,YAAY,gBAKrB;AAEG,MAAM,gBAAgB,GAAG,CAAC,EAAa,EAAE,EAAE;IAChD,IAAI;QACF,OAAO,EAAE,EAAE,CAAA;KACZ;IAAC,OAAO,EAAE,EAAE;QACX,IAAK,EAAc,EAAE,IAAI,KAAK,QAAQ,EAAE;YACtC,MAAM,EAAE,CAAA;SACT;KACF;AACH,CAAC,CAAA;AARY,QAAA,gBAAgB,oBAQ5B"}
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
declare const _default: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
rimraf: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
};
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
rimrafSync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
manual: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
};
|
||||
manualSync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
native: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
};
|
||||
nativeSync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
posix: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
};
|
||||
posixSync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
windows: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
};
|
||||
windowsSync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
moveRemove: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
};
|
||||
moveRemoveSync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
} & {
|
||||
default: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
rimraf: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
};
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
rimrafSync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
manual: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
};
|
||||
manualSync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
native: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
};
|
||||
nativeSync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
posix: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
};
|
||||
posixSync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
windows: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
};
|
||||
windowsSync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
moveRemove: ((path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
};
|
||||
moveRemoveSync: (path: string | string[], opt?: import("./index.js").RimrafOptions | undefined) => void;
|
||||
};
|
||||
};
|
||||
export = _default;
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
const index_js_1 = __importDefault(require("./index.js"));
|
||||
module.exports = Object.assign(index_js_1.default, { default: index_js_1.default });
|
||||
//# sourceMappingURL=index-cjs.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index-cjs.js","sourceRoot":"","sources":["../../../src/index-cjs.ts"],"names":[],"mappings":";;;;AAAA,0DAA+B;AAE/B,iBAAS,MAAM,CAAC,MAAM,CAAC,kBAAM,EAAE,EAAE,OAAO,EAAE,kBAAM,EAAE,CAAC,CAAA"}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
export interface RimrafOptions {
|
||||
preserveRoot?: boolean;
|
||||
tmp?: string;
|
||||
maxRetries?: number;
|
||||
retryDelay?: number;
|
||||
backoff?: number;
|
||||
maxBackoff?: number;
|
||||
}
|
||||
export declare const isRimrafOptions: (o: any) => o is RimrafOptions;
|
||||
export declare const assertRimrafOptions: (o: any) => void;
|
||||
export declare const nativeSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const native: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
export declare const manualSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const manual: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
export declare const windowsSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const windows: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
export declare const posixSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const posix: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
export declare const moveRemoveSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const moveRemove: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
export declare const rimrafSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const rimraf: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
rimraf: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
rimrafSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
manual: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
manualSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
native: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
nativeSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
posix: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
posixSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
windows: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
windowsSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
moveRemove: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
moveRemoveSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
export default rimraf;
|
||||
+79
@@ -0,0 +1,79 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.rimraf = exports.sync = exports.rimrafSync = exports.moveRemove = exports.moveRemoveSync = exports.posix = exports.posixSync = exports.windows = exports.windowsSync = exports.manual = exports.manualSync = exports.native = exports.nativeSync = exports.assertRimrafOptions = exports.isRimrafOptions = void 0;
|
||||
const opt_arg_js_1 = __importDefault(require("./opt-arg.js"));
|
||||
const path_arg_js_1 = __importDefault(require("./path-arg.js"));
|
||||
/* c8 ignore start */
|
||||
const typeOrUndef = (val, t) => typeof val === 'undefined' || typeof val === t;
|
||||
/* c8 ignore stop */
|
||||
const isRimrafOptions = (o) => !!o &&
|
||||
typeof o === 'object' &&
|
||||
typeOrUndef(o.preserveRoot, 'boolean') &&
|
||||
typeOrUndef(o.preserveRoot, 'number') &&
|
||||
typeOrUndef(o.maxRetries, 'number') &&
|
||||
typeOrUndef(o.retryDelay, 'number') &&
|
||||
typeOrUndef(o.backoff, 'number') &&
|
||||
typeOrUndef(o.maxBackoff, 'number');
|
||||
exports.isRimrafOptions = isRimrafOptions;
|
||||
/* c8 ignore start */
|
||||
const assertRimrafOptions = (o) => {
|
||||
if (!(0, exports.isRimrafOptions)(o)) {
|
||||
throw new Error('invalid rimraf options');
|
||||
}
|
||||
};
|
||||
exports.assertRimrafOptions = assertRimrafOptions;
|
||||
/* c8 ignore stop */
|
||||
const rimraf_manual_js_1 = require("./rimraf-manual.js");
|
||||
const rimraf_move_remove_js_1 = require("./rimraf-move-remove.js");
|
||||
const rimraf_native_js_1 = require("./rimraf-native.js");
|
||||
const rimraf_posix_js_1 = require("./rimraf-posix.js");
|
||||
const rimraf_windows_js_1 = require("./rimraf-windows.js");
|
||||
const use_native_js_1 = require("./use-native.js");
|
||||
const wrap = (fn) => async (path, opt) => {
|
||||
const options = (0, opt_arg_js_1.default)(opt);
|
||||
await (Array.isArray(path)
|
||||
? Promise.all(path.map(p => fn((0, path_arg_js_1.default)(p, options), options)))
|
||||
: fn((0, path_arg_js_1.default)(path, options), options));
|
||||
};
|
||||
const wrapSync = (fn) => (path, opt) => {
|
||||
const options = (0, opt_arg_js_1.default)(opt);
|
||||
return Array.isArray(path)
|
||||
? path.forEach(p => fn((0, path_arg_js_1.default)(p, options), options))
|
||||
: fn((0, path_arg_js_1.default)(path, options), options);
|
||||
};
|
||||
exports.nativeSync = wrapSync(rimraf_native_js_1.rimrafNativeSync);
|
||||
exports.native = Object.assign(wrap(rimraf_native_js_1.rimrafNative), { sync: exports.nativeSync });
|
||||
exports.manualSync = wrapSync(rimraf_manual_js_1.rimrafManualSync);
|
||||
exports.manual = Object.assign(wrap(rimraf_manual_js_1.rimrafManual), { sync: exports.manualSync });
|
||||
exports.windowsSync = wrapSync(rimraf_windows_js_1.rimrafWindowsSync);
|
||||
exports.windows = Object.assign(wrap(rimraf_windows_js_1.rimrafWindows), { sync: exports.windowsSync });
|
||||
exports.posixSync = wrapSync(rimraf_posix_js_1.rimrafPosixSync);
|
||||
exports.posix = Object.assign(wrap(rimraf_posix_js_1.rimrafPosix), { sync: exports.posixSync });
|
||||
exports.moveRemoveSync = wrapSync(rimraf_move_remove_js_1.rimrafMoveRemoveSync);
|
||||
exports.moveRemove = Object.assign(wrap(rimraf_move_remove_js_1.rimrafMoveRemove), {
|
||||
sync: exports.moveRemoveSync,
|
||||
});
|
||||
exports.rimrafSync = wrapSync((path, opt) => (0, use_native_js_1.useNativeSync)() ? (0, rimraf_native_js_1.rimrafNativeSync)(path, opt) : (0, rimraf_manual_js_1.rimrafManualSync)(path, opt));
|
||||
exports.sync = exports.rimrafSync;
|
||||
exports.rimraf = Object.assign(wrap((path, opt) => (0, use_native_js_1.useNative)() ? (0, rimraf_native_js_1.rimrafNative)(path, opt) : (0, rimraf_manual_js_1.rimrafManual)(path, opt)), {
|
||||
// this weirdness because it's easier than explicitly declaring
|
||||
rimraf: exports.manual,
|
||||
sync: exports.rimrafSync,
|
||||
rimrafSync: exports.rimrafSync,
|
||||
manual: exports.manual,
|
||||
manualSync: exports.manualSync,
|
||||
native: exports.native,
|
||||
nativeSync: exports.nativeSync,
|
||||
posix: exports.posix,
|
||||
posixSync: exports.posixSync,
|
||||
windows: exports.windows,
|
||||
windowsSync: exports.windowsSync,
|
||||
moveRemove: exports.moveRemove,
|
||||
moveRemoveSync: exports.moveRemoveSync,
|
||||
});
|
||||
exports.rimraf.rimraf = exports.rimraf;
|
||||
exports.default = exports.rimraf;
|
||||
//# sourceMappingURL=index.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"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"}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { RimrafOptions } from './index.js';
|
||||
declare const _default: (opt?: RimrafOptions) => RimrafOptions;
|
||||
export default _default;
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const index_js_1 = require("./index.js");
|
||||
exports.default = (opt = {}) => {
|
||||
(0, index_js_1.assertRimrafOptions)(opt);
|
||||
return opt;
|
||||
};
|
||||
//# sourceMappingURL=opt-arg.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"opt-arg.js","sourceRoot":"","sources":["../../../src/opt-arg.ts"],"names":[],"mappings":";;AAAA,yCAA+D;AAC/D,kBAAe,CAAC,MAAqB,EAAE,EAAE,EAAE;IACzC,IAAA,8BAAmB,EAAC,GAAG,CAAC,CAAA;IACxB,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA"}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { RimrafOptions } from './index.js';
|
||||
declare const pathArg: (path: string, opt?: RimrafOptions) => string;
|
||||
export default pathArg;
|
||||
+54
@@ -0,0 +1,54 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
const platform_js_1 = __importDefault(require("./platform.js"));
|
||||
const path_1 = require("path");
|
||||
const util_1 = require("util");
|
||||
const pathArg = (path, opt = {}) => {
|
||||
const type = typeof path;
|
||||
if (type !== 'string') {
|
||||
const ctor = path && type === 'object' && path.constructor;
|
||||
const received = ctor && ctor.name
|
||||
? `an instance of ${ctor.name}`
|
||||
: type === 'object'
|
||||
? (0, util_1.inspect)(path)
|
||||
: `type ${type} ${path}`;
|
||||
const msg = 'The "path" argument must be of type string. ' + `Received ${received}`;
|
||||
throw Object.assign(new TypeError(msg), {
|
||||
path,
|
||||
code: 'ERR_INVALID_ARG_TYPE',
|
||||
});
|
||||
}
|
||||
if (/\0/.test(path)) {
|
||||
// simulate same failure that node raises
|
||||
const msg = 'path must be a string without null bytes';
|
||||
throw Object.assign(new TypeError(msg), {
|
||||
path,
|
||||
code: 'ERR_INVALID_ARG_VALUE',
|
||||
});
|
||||
}
|
||||
path = (0, path_1.resolve)(path);
|
||||
const { root } = (0, path_1.parse)(path);
|
||||
if (path === root && opt.preserveRoot !== false) {
|
||||
const msg = 'refusing to remove root directory without preserveRoot:false';
|
||||
throw Object.assign(new Error(msg), {
|
||||
path,
|
||||
code: 'ERR_PRESERVE_ROOT',
|
||||
});
|
||||
}
|
||||
if (platform_js_1.default === 'win32') {
|
||||
const badWinChars = /[*|"<>?:]/;
|
||||
const { root } = (0, path_1.parse)(path);
|
||||
if (badWinChars.test(path.substring(root.length))) {
|
||||
throw Object.assign(new Error('Illegal characters in path.'), {
|
||||
path,
|
||||
code: 'EINVAL',
|
||||
});
|
||||
}
|
||||
}
|
||||
return path;
|
||||
};
|
||||
exports.default = pathArg;
|
||||
//# sourceMappingURL=path-arg.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"path-arg.js","sourceRoot":"","sources":["../../../src/path-arg.ts"],"names":[],"mappings":";;;;;AAAA,gEAAoC;AACpC,+BAAqC;AACrC,+BAA8B;AAG9B,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,MAAqB,EAAE,EAAE,EAAE;IACxD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAA;IACxB,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAA;QAC1D,MAAM,QAAQ,GACZ,IAAI,IAAI,IAAI,CAAC,IAAI;YACf,CAAC,CAAC,kBAAkB,IAAI,CAAC,IAAI,EAAE;YAC/B,CAAC,CAAC,IAAI,KAAK,QAAQ;gBACnB,CAAC,CAAC,IAAA,cAAO,EAAC,IAAI,CAAC;gBACf,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAA;QAC5B,MAAM,GAAG,GACP,8CAA8C,GAAG,YAAY,QAAQ,EAAE,CAAA;QACzE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;YACtC,IAAI;YACJ,IAAI,EAAE,sBAAsB;SAC7B,CAAC,CAAA;KACH;IAED,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACnB,yCAAyC;QACzC,MAAM,GAAG,GAAG,0CAA0C,CAAA;QACtD,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;YACtC,IAAI;YACJ,IAAI,EAAE,uBAAuB;SAC9B,CAAC,CAAA;KACH;IAED,IAAI,GAAG,IAAA,cAAO,EAAC,IAAI,CAAC,CAAA;IACpB,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,YAAK,EAAC,IAAI,CAAC,CAAA;IAE5B,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,EAAE;QAC/C,MAAM,GAAG,GAAG,8DAA8D,CAAA;QAC1E,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YAClC,IAAI;YACJ,IAAI,EAAE,mBAAmB;SAC1B,CAAC,CAAA;KACH;IAED,IAAI,qBAAQ,KAAK,OAAO,EAAE;QACxB,MAAM,WAAW,GAAG,WAAW,CAAA;QAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,IAAA,YAAK,EAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;YACjD,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,EAAE;gBAC5D,IAAI;gBACJ,IAAI,EAAE,QAAQ;aACf,CAAC,CAAA;SACH;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,kBAAe,OAAO,CAAA"}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
declare const _default: string;
|
||||
export default _default;
|
||||
+4
@@ -0,0 +1,4 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.default = process.env.__TESTING_RIMRAF_PLATFORM__ || process.platform;
|
||||
//# sourceMappingURL=platform.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../../src/platform.ts"],"names":[],"mappings":";;AAAA,kBAAe,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,OAAO,CAAC,QAAQ,CAAA"}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { FsError } from './fs.js';
|
||||
export declare const readdirOrError: (path: string) => Promise<string[] | FsError>;
|
||||
export declare const readdirOrErrorSync: (path: string) => string[] | FsError;
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.readdirOrErrorSync = exports.readdirOrError = void 0;
|
||||
// returns an array of entries if readdir() works,
|
||||
// or the error that readdir() raised if not.
|
||||
const fs_js_1 = require("./fs.js");
|
||||
const { readdir } = fs_js_1.promises;
|
||||
const readdirOrError = (path) => readdir(path).catch(er => er);
|
||||
exports.readdirOrError = readdirOrError;
|
||||
const readdirOrErrorSync = (path) => {
|
||||
try {
|
||||
return (0, fs_js_1.readdirSync)(path);
|
||||
}
|
||||
catch (er) {
|
||||
return er;
|
||||
}
|
||||
};
|
||||
exports.readdirOrErrorSync = readdirOrErrorSync;
|
||||
//# sourceMappingURL=readdir-or-error.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"readdir-or-error.js","sourceRoot":"","sources":["../../../src/readdir-or-error.ts"],"names":[],"mappings":";;;AAAA,kDAAkD;AAClD,6CAA6C;AAC7C,mCAAwD;AACxD,MAAM,EAAE,OAAO,EAAE,GAAG,gBAAQ,CAAA;AACrB,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,EAAE,CAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,EAAa,CAAC,CAAA;AAD7B,QAAA,cAAc,kBACe;AACnC,MAAM,kBAAkB,GAAG,CAAC,IAAY,EAAE,EAAE;IACjD,IAAI;QACF,OAAO,IAAA,mBAAW,EAAC,IAAI,CAAC,CAAA;KACzB;IAAC,OAAO,EAAE,EAAE;QACX,OAAO,EAAa,CAAA;KACrB;AACH,CAAC,CAAA;AANY,QAAA,kBAAkB,sBAM9B"}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { RimrafOptions } from '.';
|
||||
export declare const MAXBACKOFF = 200;
|
||||
export declare const RATE = 1.2;
|
||||
export declare const MAXRETRIES = 10;
|
||||
export declare const codes: Set<string>;
|
||||
export declare const retryBusy: (fn: (path: string) => Promise<any>) => (path: string, opt: RimrafOptions, backoff?: number, total?: number) => Promise<any>;
|
||||
export declare const retryBusySync: (fn: (path: string) => any) => (path: string, opt: RimrafOptions) => any;
|
||||
+68
@@ -0,0 +1,68 @@
|
||||
"use strict";
|
||||
// note: max backoff is the maximum that any *single* backoff will do
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.retryBusySync = exports.retryBusy = exports.codes = exports.MAXRETRIES = exports.RATE = exports.MAXBACKOFF = void 0;
|
||||
exports.MAXBACKOFF = 200;
|
||||
exports.RATE = 1.2;
|
||||
exports.MAXRETRIES = 10;
|
||||
exports.codes = new Set(['EMFILE', 'ENFILE', 'EBUSY']);
|
||||
const retryBusy = (fn) => {
|
||||
const method = async (path, opt, backoff = 1, total = 0) => {
|
||||
const mbo = opt.maxBackoff || exports.MAXBACKOFF;
|
||||
const rate = opt.backoff || exports.RATE;
|
||||
const max = opt.maxRetries || exports.MAXRETRIES;
|
||||
let retries = 0;
|
||||
while (true) {
|
||||
try {
|
||||
return await fn(path);
|
||||
}
|
||||
catch (er) {
|
||||
const fer = er;
|
||||
if (fer?.path === path && fer?.code && exports.codes.has(fer.code)) {
|
||||
backoff = Math.ceil(backoff * rate);
|
||||
total = backoff + total;
|
||||
if (total < mbo) {
|
||||
return new Promise((res, rej) => {
|
||||
setTimeout(() => {
|
||||
method(path, opt, backoff, total).then(res, rej);
|
||||
}, backoff);
|
||||
});
|
||||
}
|
||||
if (retries < max) {
|
||||
retries++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
}
|
||||
};
|
||||
return method;
|
||||
};
|
||||
exports.retryBusy = retryBusy;
|
||||
// just retries, no async so no backoff
|
||||
const retryBusySync = (fn) => {
|
||||
const method = (path, opt) => {
|
||||
const max = opt.maxRetries || exports.MAXRETRIES;
|
||||
let retries = 0;
|
||||
while (true) {
|
||||
try {
|
||||
return fn(path);
|
||||
}
|
||||
catch (er) {
|
||||
const fer = er;
|
||||
if (fer?.path === path &&
|
||||
fer?.code &&
|
||||
exports.codes.has(fer.code) &&
|
||||
retries < max) {
|
||||
retries++;
|
||||
continue;
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
}
|
||||
};
|
||||
return method;
|
||||
};
|
||||
exports.retryBusySync = retryBusySync;
|
||||
//# sourceMappingURL=retry-busy.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"retry-busy.js","sourceRoot":"","sources":["../../../src/retry-busy.ts"],"names":[],"mappings":";AAAA,qEAAqE;;;AAKxD,QAAA,UAAU,GAAG,GAAG,CAAA;AAChB,QAAA,IAAI,GAAG,GAAG,CAAA;AACV,QAAA,UAAU,GAAG,EAAE,CAAA;AACf,QAAA,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;AAEpD,MAAM,SAAS,GAAG,CAAC,EAAkC,EAAE,EAAE;IAC9D,MAAM,MAAM,GAAG,KAAK,EAClB,IAAY,EACZ,GAAkB,EAClB,OAAO,GAAG,CAAC,EACX,KAAK,GAAG,CAAC,EACT,EAAE;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,IAAI,kBAAU,CAAA;QACxC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,YAAI,CAAA;QAChC,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,IAAI,kBAAU,CAAA;QACxC,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,OAAO,IAAI,EAAE;YACX,IAAI;gBACF,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;aACtB;YAAC,OAAO,EAAE,EAAE;gBACX,MAAM,GAAG,GAAG,EAAa,CAAA;gBACzB,IAAI,GAAG,EAAE,IAAI,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,aAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC1D,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;oBACnC,KAAK,GAAG,OAAO,GAAG,KAAK,CAAA;oBACvB,IAAI,KAAK,GAAG,GAAG,EAAE;wBACf,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;4BAC9B,UAAU,CAAC,GAAG,EAAE;gCACd,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;4BAClD,CAAC,EAAE,OAAO,CAAC,CAAA;wBACb,CAAC,CAAC,CAAA;qBACH;oBACD,IAAI,OAAO,GAAG,GAAG,EAAE;wBACjB,OAAO,EAAE,CAAA;wBACT,SAAQ;qBACT;iBACF;gBACD,MAAM,EAAE,CAAA;aACT;SACF;IACH,CAAC,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AArCY,QAAA,SAAS,aAqCrB;AAED,uCAAuC;AAChC,MAAM,aAAa,GAAG,CAAC,EAAyB,EAAE,EAAE;IACzD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,GAAkB,EAAE,EAAE;QAClD,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,IAAI,kBAAU,CAAA;QACxC,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,OAAO,IAAI,EAAE;YACX,IAAI;gBACF,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;aAChB;YAAC,OAAO,EAAE,EAAE;gBACX,MAAM,GAAG,GAAG,EAAa,CAAA;gBACzB,IACE,GAAG,EAAE,IAAI,KAAK,IAAI;oBAClB,GAAG,EAAE,IAAI;oBACT,aAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;oBACnB,OAAO,GAAG,GAAG,EACb;oBACA,OAAO,EAAE,CAAA;oBACT,SAAQ;iBACT;gBACD,MAAM,EAAE,CAAA;aACT;SACF;IACH,CAAC,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAvBY,QAAA,aAAa,iBAuBzB"}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export declare const rimrafManual: ((path: string, opt: import("./index.js").RimrafOptions) => Promise<any>) | ((path: string, opt: import("./index.js").RimrafOptions, state?: symbol) => Promise<void>);
|
||||
export declare const rimrafManualSync: (path: string, opt: import("./index.js").RimrafOptions, state?: symbol) => void;
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.rimrafManualSync = exports.rimrafManual = void 0;
|
||||
const platform_js_1 = __importDefault(require("./platform.js"));
|
||||
const rimraf_posix_js_1 = require("./rimraf-posix.js");
|
||||
const rimraf_windows_js_1 = require("./rimraf-windows.js");
|
||||
exports.rimrafManual = platform_js_1.default === 'win32' ? rimraf_windows_js_1.rimrafWindows : rimraf_posix_js_1.rimrafPosix;
|
||||
exports.rimrafManualSync = platform_js_1.default === 'win32' ? rimraf_windows_js_1.rimrafWindowsSync : rimraf_posix_js_1.rimrafPosixSync;
|
||||
//# sourceMappingURL=rimraf-manual.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"rimraf-manual.js","sourceRoot":"","sources":["../../../src/rimraf-manual.ts"],"names":[],"mappings":";;;;;;AAAA,gEAAoC;AAEpC,uDAAgE;AAChE,2DAAsE;AAEzD,QAAA,YAAY,GAAG,qBAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,iCAAa,CAAC,CAAC,CAAC,6BAAW,CAAA;AACjE,QAAA,gBAAgB,GAC3B,qBAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,qCAAiB,CAAC,CAAC,CAAC,iCAAe,CAAA"}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { RimrafOptions } from '.';
|
||||
export declare const rimrafMoveRemove: (path: string, opt: RimrafOptions) => Promise<void>;
|
||||
export declare const rimrafMoveRemoveSync: (path: string, opt: RimrafOptions) => void;
|
||||
+124
@@ -0,0 +1,124 @@
|
||||
"use strict";
|
||||
// https://youtu.be/uhRWMGBjlO8?t=537
|
||||
//
|
||||
// 1. readdir
|
||||
// 2. for each entry
|
||||
// a. if a non-empty directory, recurse
|
||||
// b. if an empty directory, move to random hidden file name in $TEMP
|
||||
// c. unlink/rmdir $TEMP
|
||||
//
|
||||
// This works around the fact that unlink/rmdir is non-atomic and takes
|
||||
// a non-deterministic amount of time to complete.
|
||||
//
|
||||
// However, it is HELLA SLOW, like 2-10x slower than a naive recursive rm.
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.rimrafMoveRemoveSync = exports.rimrafMoveRemove = void 0;
|
||||
const path_1 = require("path");
|
||||
const default_tmp_js_1 = require("./default-tmp.js");
|
||||
const ignore_enoent_js_1 = require("./ignore-enoent.js");
|
||||
const fs_js_1 = require("./fs.js");
|
||||
const { rename, unlink, rmdir, chmod } = fs_js_1.promises;
|
||||
const readdir_or_error_js_1 = require("./readdir-or-error.js");
|
||||
// crypto.randomBytes is much slower, and Math.random() is enough here
|
||||
const uniqueFilename = (path) => `.${(0, path_1.basename)(path)}.${Math.random()}`;
|
||||
const unlinkFixEPERM = async (path) => unlink(path).catch((er) => {
|
||||
if (er.code === 'EPERM') {
|
||||
return chmod(path, 0o666).then(() => unlink(path), er2 => {
|
||||
if (er2.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
throw er;
|
||||
});
|
||||
}
|
||||
else if (er.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
throw er;
|
||||
});
|
||||
const unlinkFixEPERMSync = (path) => {
|
||||
try {
|
||||
(0, fs_js_1.unlinkSync)(path);
|
||||
}
|
||||
catch (er) {
|
||||
if (er?.code === 'EPERM') {
|
||||
try {
|
||||
return (0, fs_js_1.chmodSync)(path, 0o666);
|
||||
}
|
||||
catch (er2) {
|
||||
if (er2?.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
}
|
||||
else if (er?.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
};
|
||||
const rimrafMoveRemove = async (path, opt) => {
|
||||
if (!opt.tmp) {
|
||||
return (0, exports.rimrafMoveRemove)(path, { ...opt, tmp: await (0, default_tmp_js_1.defaultTmp)(path) });
|
||||
}
|
||||
if (path === opt.tmp && (0, path_1.parse)(path).root !== path) {
|
||||
throw new Error('cannot delete temp directory used for deletion');
|
||||
}
|
||||
const entries = await (0, readdir_or_error_js_1.readdirOrError)(path);
|
||||
if (!Array.isArray(entries)) {
|
||||
if (entries.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (entries.code !== 'ENOTDIR') {
|
||||
throw entries;
|
||||
}
|
||||
return await (0, ignore_enoent_js_1.ignoreENOENT)(tmpUnlink(path, opt.tmp, unlinkFixEPERM));
|
||||
}
|
||||
await Promise.all(entries.map(entry => (0, exports.rimrafMoveRemove)((0, path_1.resolve)(path, entry), opt)));
|
||||
// we don't ever ACTUALLY try to unlink /, because that can never work
|
||||
// but when preserveRoot is false, we could be operating on it.
|
||||
// No need to check if preserveRoot is not false.
|
||||
if (opt.preserveRoot === false && path === (0, path_1.parse)(path).root) {
|
||||
return;
|
||||
}
|
||||
return await (0, ignore_enoent_js_1.ignoreENOENT)(tmpUnlink(path, opt.tmp, rmdir));
|
||||
};
|
||||
exports.rimrafMoveRemove = rimrafMoveRemove;
|
||||
const tmpUnlink = async (path, tmp, rm) => {
|
||||
const tmpFile = (0, path_1.resolve)(tmp, uniqueFilename(path));
|
||||
await rename(path, tmpFile);
|
||||
return await rm(tmpFile);
|
||||
};
|
||||
const rimrafMoveRemoveSync = (path, opt) => {
|
||||
if (!opt.tmp) {
|
||||
return (0, exports.rimrafMoveRemoveSync)(path, { ...opt, tmp: (0, default_tmp_js_1.defaultTmpSync)(path) });
|
||||
}
|
||||
const tmp = opt.tmp;
|
||||
if (path === opt.tmp && (0, path_1.parse)(path).root !== path) {
|
||||
throw new Error('cannot delete temp directory used for deletion');
|
||||
}
|
||||
const entries = (0, readdir_or_error_js_1.readdirOrErrorSync)(path);
|
||||
if (!Array.isArray(entries)) {
|
||||
if (entries.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (entries.code !== 'ENOTDIR') {
|
||||
throw entries;
|
||||
}
|
||||
return (0, ignore_enoent_js_1.ignoreENOENTSync)(() => tmpUnlinkSync(path, tmp, unlinkFixEPERMSync));
|
||||
}
|
||||
for (const entry of entries) {
|
||||
(0, exports.rimrafMoveRemoveSync)((0, path_1.resolve)(path, entry), opt);
|
||||
}
|
||||
if (opt.preserveRoot === false && path === (0, path_1.parse)(path).root) {
|
||||
return;
|
||||
}
|
||||
return (0, ignore_enoent_js_1.ignoreENOENTSync)(() => tmpUnlinkSync(path, tmp, fs_js_1.rmdirSync));
|
||||
};
|
||||
exports.rimrafMoveRemoveSync = rimrafMoveRemoveSync;
|
||||
const tmpUnlinkSync = (path, tmp, rmSync) => {
|
||||
const tmpFile = (0, path_1.resolve)(tmp, uniqueFilename(path));
|
||||
(0, fs_js_1.renameSync)(path, tmpFile);
|
||||
return rmSync(tmpFile);
|
||||
};
|
||||
//# sourceMappingURL=rimraf-move-remove.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"rimraf-move-remove.js","sourceRoot":"","sources":["../../../src/rimraf-move-remove.ts"],"names":[],"mappings":"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"}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { RimrafOptions } from '.';
|
||||
export declare const rimrafNative: (path: string, opt: RimrafOptions) => Promise<void>;
|
||||
export declare const rimrafNativeSync: (path: string, opt: RimrafOptions) => void;
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.rimrafNativeSync = exports.rimrafNative = void 0;
|
||||
const fs_js_1 = require("./fs.js");
|
||||
const { rm } = fs_js_1.promises;
|
||||
const rimrafNative = (path, opt) => rm(path, {
|
||||
...opt,
|
||||
force: true,
|
||||
recursive: true,
|
||||
});
|
||||
exports.rimrafNative = rimrafNative;
|
||||
const rimrafNativeSync = (path, opt) => (0, fs_js_1.rmSync)(path, {
|
||||
...opt,
|
||||
force: true,
|
||||
recursive: true,
|
||||
});
|
||||
exports.rimrafNativeSync = rimrafNativeSync;
|
||||
//# sourceMappingURL=rimraf-native.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"rimraf-native.js","sourceRoot":"","sources":["../../../src/rimraf-native.ts"],"names":[],"mappings":";;;AACA,mCAA0C;AAC1C,MAAM,EAAE,EAAE,EAAE,GAAG,gBAAQ,CAAA;AAEhB,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;AALS,QAAA,YAAY,gBAKrB;AAEG,MAAM,gBAAgB,GAAG,CAAC,IAAY,EAAE,GAAkB,EAAE,EAAE,CACnE,IAAA,cAAM,EAAC,IAAI,EAAE;IACX,GAAG,GAAG;IACN,KAAK,EAAE,IAAI;IACX,SAAS,EAAE,IAAI;CAChB,CAAC,CAAA;AALS,QAAA,gBAAgB,oBAKzB"}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { RimrafOptions } from '.';
|
||||
export declare const rimrafPosix: (path: string, opt: RimrafOptions) => Promise<any>;
|
||||
export declare const rimrafPosixSync: (path: string, opt: RimrafOptions) => any;
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
"use strict";
|
||||
// the simple recursive removal, where unlink and rmdir are atomic
|
||||
// Note that this approach does NOT work on Windows!
|
||||
// We rmdir before unlink even though that is arguably less efficient
|
||||
// (since the average folder contains >1 file, it means more system
|
||||
// calls), because sunos will let root unlink a directory, and some
|
||||
// SUPER weird breakage happens as a result.
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.rimrafPosixSync = exports.rimrafPosix = void 0;
|
||||
const fs_js_1 = require("./fs.js");
|
||||
const { rmdir, unlink } = fs_js_1.promises;
|
||||
const path_1 = require("path");
|
||||
const readdir_or_error_js_1 = require("./readdir-or-error.js");
|
||||
const ignore_enoent_js_1 = require("./ignore-enoent.js");
|
||||
const rimrafPosix = async (path, opt) => {
|
||||
const entries = await (0, readdir_or_error_js_1.readdirOrError)(path);
|
||||
if (!Array.isArray(entries)) {
|
||||
if (entries.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (entries.code !== 'ENOTDIR') {
|
||||
throw entries;
|
||||
}
|
||||
return (0, ignore_enoent_js_1.ignoreENOENT)(unlink(path));
|
||||
}
|
||||
await Promise.all(entries.map(entry => (0, exports.rimrafPosix)((0, path_1.resolve)(path, entry), opt)));
|
||||
// we don't ever ACTUALLY try to unlink /, because that can never work
|
||||
// but when preserveRoot is false, we could be operating on it.
|
||||
// No need to check if preserveRoot is not false.
|
||||
if (opt.preserveRoot === false && path === (0, path_1.parse)(path).root) {
|
||||
return;
|
||||
}
|
||||
return (0, ignore_enoent_js_1.ignoreENOENT)(rmdir(path));
|
||||
};
|
||||
exports.rimrafPosix = rimrafPosix;
|
||||
const rimrafPosixSync = (path, opt) => {
|
||||
const entries = (0, readdir_or_error_js_1.readdirOrErrorSync)(path);
|
||||
if (!Array.isArray(entries)) {
|
||||
if (entries.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (entries.code !== 'ENOTDIR') {
|
||||
throw entries;
|
||||
}
|
||||
return (0, ignore_enoent_js_1.ignoreENOENTSync)(() => (0, fs_js_1.unlinkSync)(path));
|
||||
}
|
||||
for (const entry of entries) {
|
||||
(0, exports.rimrafPosixSync)((0, path_1.resolve)(path, entry), opt);
|
||||
}
|
||||
if (opt.preserveRoot === false && path === (0, path_1.parse)(path).root) {
|
||||
return;
|
||||
}
|
||||
return (0, ignore_enoent_js_1.ignoreENOENTSync)(() => (0, fs_js_1.rmdirSync)(path));
|
||||
};
|
||||
exports.rimrafPosixSync = rimrafPosixSync;
|
||||
//# sourceMappingURL=rimraf-posix.js.map
|
||||
+1
@@ -0,0 +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,mCAAyD;AACzD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,gBAAQ,CAAA;AAElC,+BAAqC;AAErC,+DAA0E;AAG1E,yDAAmE;AAE5D,MAAM,WAAW,GAAG,KAAK,EAAE,IAAY,EAAE,GAAkB,EAAE,EAAE;IACpE,MAAM,OAAO,GAAG,MAAM,IAAA,oCAAc,EAAC,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,IAAA,+BAAY,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAA;KAClC;IACD,MAAM,OAAO,CAAC,GAAG,CACf,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAA,mBAAW,EAAC,IAAA,cAAO,EAAC,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,IAAA,YAAK,EAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAC3D,OAAM;KACP;IAED,OAAO,IAAA,+BAAY,EAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAA;AAClC,CAAC,CAAA;AAvBY,QAAA,WAAW,eAuBvB;AAEM,MAAM,eAAe,GAAG,CAAC,IAAY,EAAE,GAAkB,EAAE,EAAE;IAClE,MAAM,OAAO,GAAG,IAAA,wCAAkB,EAAC,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,IAAA,mCAAgB,EAAC,GAAG,EAAE,CAAC,IAAA,kBAAU,EAAC,IAAI,CAAC,CAAC,CAAA;KAChD;IACD,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;QAC3B,IAAA,uBAAe,EAAC,IAAA,cAAO,EAAC,IAAI,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,CAAA;KAC3C;IAED,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,IAAI,IAAI,KAAK,IAAA,YAAK,EAAC,IAAI,CAAC,CAAC,IAAI,EAAE;QAC3D,OAAM;KACP;IAED,OAAO,IAAA,mCAAgB,EAAC,GAAG,EAAE,CAAC,IAAA,iBAAS,EAAC,IAAI,CAAC,CAAC,CAAA;AAChD,CAAC,CAAA;AApBY,QAAA,eAAe,mBAoB3B"}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { RimrafOptions } from '.';
|
||||
export declare const rimrafWindows: (path: string, opt: RimrafOptions, state?: symbol) => Promise<void>;
|
||||
export declare const rimrafWindowsSync: (path: string, opt: RimrafOptions, state?: symbol) => void;
|
||||
+110
@@ -0,0 +1,110 @@
|
||||
"use strict";
|
||||
// This is the same as rimrafPosix, with the following changes:
|
||||
//
|
||||
// 1. EBUSY, ENFILE, EMFILE trigger retries and/or exponential backoff
|
||||
// 2. All non-directories are removed first and then all directories are
|
||||
// removed in a second sweep.
|
||||
// 3. If we hit ENOTEMPTY in the second sweep, fall back to move-remove on
|
||||
// the that folder.
|
||||
//
|
||||
// Note: "move then remove" is 2-10 times slower, and just as unreliable.
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.rimrafWindowsSync = exports.rimrafWindows = void 0;
|
||||
const path_1 = require("path");
|
||||
const ignore_enoent_js_1 = require("./ignore-enoent.js");
|
||||
const fix_eperm_js_1 = require("./fix-eperm.js");
|
||||
const readdir_or_error_js_1 = require("./readdir-or-error.js");
|
||||
const retry_busy_js_1 = require("./retry-busy.js");
|
||||
const rimraf_move_remove_js_1 = require("./rimraf-move-remove.js");
|
||||
const fs_js_1 = require("./fs.js");
|
||||
const { unlink, rmdir } = fs_js_1.promises;
|
||||
const rimrafWindowsFile = (0, retry_busy_js_1.retryBusy)((0, fix_eperm_js_1.fixEPERM)(unlink));
|
||||
const rimrafWindowsFileSync = (0, retry_busy_js_1.retryBusySync)((0, fix_eperm_js_1.fixEPERMSync)(fs_js_1.unlinkSync));
|
||||
const rimrafWindowsDir = (0, retry_busy_js_1.retryBusy)((0, fix_eperm_js_1.fixEPERM)(rmdir));
|
||||
const rimrafWindowsDirSync = (0, retry_busy_js_1.retryBusySync)((0, fix_eperm_js_1.fixEPERMSync)(fs_js_1.rmdirSync));
|
||||
const rimrafWindowsDirMoveRemoveFallback = async (path, opt) => {
|
||||
try {
|
||||
await rimrafWindowsDir(path, opt);
|
||||
}
|
||||
catch (er) {
|
||||
if (er?.code === 'ENOTEMPTY') {
|
||||
return await (0, rimraf_move_remove_js_1.rimrafMoveRemove)(path, opt);
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
};
|
||||
const rimrafWindowsDirMoveRemoveFallbackSync = (path, opt) => {
|
||||
try {
|
||||
rimrafWindowsDirSync(path, opt);
|
||||
}
|
||||
catch (er) {
|
||||
if (er?.code === 'ENOTEMPTY') {
|
||||
return (0, rimraf_move_remove_js_1.rimrafMoveRemoveSync)(path, opt);
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
};
|
||||
const START = Symbol('start');
|
||||
const CHILD = Symbol('child');
|
||||
const FINISH = Symbol('finish');
|
||||
const states = new Set([START, CHILD, FINISH]);
|
||||
const rimrafWindows = async (path, opt, state = START) => {
|
||||
if (!states.has(state)) {
|
||||
throw new TypeError('invalid third argument passed to rimraf');
|
||||
}
|
||||
const entries = await (0, readdir_or_error_js_1.readdirOrError)(path);
|
||||
if (!Array.isArray(entries)) {
|
||||
if (entries.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (entries.code !== 'ENOTDIR') {
|
||||
throw entries;
|
||||
}
|
||||
// is a file
|
||||
return (0, ignore_enoent_js_1.ignoreENOENT)(rimrafWindowsFile(path, opt));
|
||||
}
|
||||
await Promise.all(entries.map(entry => (0, exports.rimrafWindows)((0, path_1.resolve)(path, entry), opt, state === START ? CHILD : state)));
|
||||
if (state === START) {
|
||||
return (0, exports.rimrafWindows)(path, opt, FINISH);
|
||||
}
|
||||
else if (state === FINISH) {
|
||||
if (opt.preserveRoot === false && path === (0, path_1.parse)(path).root) {
|
||||
return;
|
||||
}
|
||||
return (0, ignore_enoent_js_1.ignoreENOENT)(rimrafWindowsDirMoveRemoveFallback(path, opt));
|
||||
}
|
||||
};
|
||||
exports.rimrafWindows = rimrafWindows;
|
||||
const rimrafWindowsSync = (path, opt, state = START) => {
|
||||
if (!states.has(state)) {
|
||||
throw new TypeError('invalid third argument passed to rimraf');
|
||||
}
|
||||
const entries = (0, readdir_or_error_js_1.readdirOrErrorSync)(path);
|
||||
if (!Array.isArray(entries)) {
|
||||
if (entries.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (entries.code !== 'ENOTDIR') {
|
||||
throw entries;
|
||||
}
|
||||
// is a file
|
||||
return (0, ignore_enoent_js_1.ignoreENOENTSync)(() => rimrafWindowsFileSync(path, opt));
|
||||
}
|
||||
for (const entry of entries) {
|
||||
const s = state === START ? CHILD : state;
|
||||
(0, exports.rimrafWindowsSync)((0, path_1.resolve)(path, entry), opt, s);
|
||||
}
|
||||
if (state === START) {
|
||||
return (0, exports.rimrafWindowsSync)(path, opt, FINISH);
|
||||
}
|
||||
else if (state === FINISH) {
|
||||
if (opt.preserveRoot === false && path === (0, path_1.parse)(path).root) {
|
||||
return;
|
||||
}
|
||||
return (0, ignore_enoent_js_1.ignoreENOENTSync)(() => {
|
||||
rimrafWindowsDirMoveRemoveFallbackSync(path, opt);
|
||||
});
|
||||
}
|
||||
};
|
||||
exports.rimrafWindowsSync = rimrafWindowsSync;
|
||||
//# sourceMappingURL=rimraf-windows.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"rimraf-windows.js","sourceRoot":"","sources":["../../../src/rimraf-windows.ts"],"names":[],"mappings":"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"}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export declare const useNative: () => boolean;
|
||||
export declare const useNativeSync: () => boolean;
|
||||
+15
@@ -0,0 +1,15 @@
|
||||
"use strict";
|
||||
var __importDefault = (this && this.__importDefault) || function (mod) {
|
||||
return (mod && mod.__esModule) ? mod : { "default": mod };
|
||||
};
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.useNativeSync = exports.useNative = void 0;
|
||||
const version = process.env.__TESTING_RIMRAF_NODE_VERSION__ || process.version;
|
||||
const versArr = version.replace(/^v/, '').split('.');
|
||||
const hasNative = +versArr[0] > 14 || (+versArr[0] === 14 && +versArr[1] >= 14);
|
||||
// we do NOT use native by default on Windows, because Node's native
|
||||
// rm implementation is less advanced. Change this code if that changes.
|
||||
const platform_js_1 = __importDefault(require("./platform.js"));
|
||||
exports.useNative = !hasNative || platform_js_1.default === 'win32' ? () => false : () => true;
|
||||
exports.useNativeSync = !hasNative || platform_js_1.default === 'win32' ? () => false : () => true;
|
||||
//# sourceMappingURL=use-native.js.map
|
||||
+1
@@ -0,0 +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,oEAAoE;AACpE,yEAAyE;AACzE,gEAAoC;AACvB,QAAA,SAAS,GACpB,CAAC,SAAS,IAAI,qBAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA;AAClD,QAAA,aAAa,GACxB,CAAC,SAAS,IAAI,qBAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,IAAI,CAAA"}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export declare const defaultTmp: (path: string) => Promise<string>;
|
||||
export declare const defaultTmpSync: (path: string) => string;
|
||||
+55
@@ -0,0 +1,55 @@
|
||||
// The default temporary folder location for use in the windows algorithm.
|
||||
// It's TEMPting to use dirname(path), since that's guaranteed to be on the
|
||||
// same device. However, this means that:
|
||||
// rimraf(path).then(() => rimraf(dirname(path)))
|
||||
// will often fail with EBUSY, because the parent dir contains
|
||||
// marked-for-deletion directory entries (which do not show up in readdir).
|
||||
// The approach here is to use os.tmpdir() if it's on the same drive letter,
|
||||
// or resolve(path, '\\temp') if it exists, or the root of the drive if not.
|
||||
// On Posix (not that you'd be likely to use the windows algorithm there),
|
||||
// it uses os.tmpdir() always.
|
||||
import { tmpdir } from 'os';
|
||||
import { parse, resolve } from 'path';
|
||||
import { promises, statSync } from './fs.js';
|
||||
import platform from './platform.js';
|
||||
const { stat } = promises;
|
||||
const isDirSync = (path) => {
|
||||
try {
|
||||
return statSync(path).isDirectory();
|
||||
}
|
||||
catch (er) {
|
||||
return false;
|
||||
}
|
||||
};
|
||||
const isDir = (path) => stat(path).then(st => st.isDirectory(), () => false);
|
||||
const win32DefaultTmp = async (path) => {
|
||||
const { root } = parse(path);
|
||||
const tmp = tmpdir();
|
||||
const { root: tmpRoot } = parse(tmp);
|
||||
if (root.toLowerCase() === tmpRoot.toLowerCase()) {
|
||||
return tmp;
|
||||
}
|
||||
const driveTmp = resolve(root, '/temp');
|
||||
if (await isDir(driveTmp)) {
|
||||
return driveTmp;
|
||||
}
|
||||
return root;
|
||||
};
|
||||
const win32DefaultTmpSync = (path) => {
|
||||
const { root } = parse(path);
|
||||
const tmp = tmpdir();
|
||||
const { root: tmpRoot } = parse(tmp);
|
||||
if (root.toLowerCase() === tmpRoot.toLowerCase()) {
|
||||
return tmp;
|
||||
}
|
||||
const driveTmp = resolve(root, '/temp');
|
||||
if (isDirSync(driveTmp)) {
|
||||
return driveTmp;
|
||||
}
|
||||
return root;
|
||||
};
|
||||
const posixDefaultTmp = async () => tmpdir();
|
||||
const posixDefaultTmpSync = () => tmpdir();
|
||||
export const defaultTmp = platform === 'win32' ? win32DefaultTmp : posixDefaultTmp;
|
||||
export const defaultTmpSync = platform === 'win32' ? win32DefaultTmpSync : posixDefaultTmpSync;
|
||||
//# sourceMappingURL=default-tmp.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"default-tmp.js","sourceRoot":"","sources":["../../src/default-tmp.ts"],"names":[],"mappings":"AAAA,0EAA0E;AAC1E,2EAA2E;AAC3E,0CAA0C;AAC1C,iDAAiD;AACjD,8DAA8D;AAC9D,2EAA2E;AAC3E,4EAA4E;AAC5E,4EAA4E;AAC5E,0EAA0E;AAC1E,8BAA8B;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACrC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC5C,OAAO,QAAQ,MAAM,eAAe,CAAA;AACpC,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAA;AAEzB,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE;IACjC,IAAI;QACF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAA;KACpC;IAAC,OAAO,EAAE,EAAE;QACX,OAAO,KAAK,CAAA;KACb;AACH,CAAC,CAAA;AAED,MAAM,KAAK,GAAG,CAAC,IAAY,EAAE,EAAE,CAC7B,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CACb,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,WAAW,EAAE,EACtB,GAAG,EAAE,CAAC,KAAK,CACZ,CAAA;AAEH,MAAM,eAAe,GAAG,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7C,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IAC5B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;IACpB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IACpC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,EAAE;QAChD,OAAO,GAAG,CAAA;KACX;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACvC,IAAI,MAAM,KAAK,CAAC,QAAQ,CAAC,EAAE;QACzB,OAAO,QAAQ,CAAA;KAChB;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,CAAC,IAAY,EAAE,EAAE;IAC3C,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IAC5B,MAAM,GAAG,GAAG,MAAM,EAAE,CAAA;IACpB,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAA;IACpC,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,WAAW,EAAE,EAAE;QAChD,OAAO,GAAG,CAAA;KACX;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAA;IACvC,IAAI,SAAS,CAAC,QAAQ,CAAC,EAAE;QACvB,OAAO,QAAQ,CAAA;KAChB;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE,CAAC,MAAM,EAAE,CAAA;AAC5C,MAAM,mBAAmB,GAAG,GAAG,EAAE,CAAC,MAAM,EAAE,CAAA;AAE1C,MAAM,CAAC,MAAM,UAAU,GACrB,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,eAAe,CAAA;AAC1D,MAAM,CAAC,MAAM,cAAc,GACzB,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,mBAAmB,CAAA"}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export declare const fixEPERM: (fn: (path: string) => Promise<any>) => (path: string) => Promise<any>;
|
||||
export declare const fixEPERMSync: (fn: (path: string) => any) => (path: string) => any;
|
||||
+53
@@ -0,0 +1,53 @@
|
||||
import { promises, chmodSync } from './fs.js';
|
||||
const { chmod } = promises;
|
||||
export const fixEPERM = (fn) => async (path) => {
|
||||
try {
|
||||
return await fn(path);
|
||||
}
|
||||
catch (er) {
|
||||
const fer = er;
|
||||
if (fer?.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (fer?.code === 'EPERM') {
|
||||
try {
|
||||
await chmod(path, 0o666);
|
||||
}
|
||||
catch (er2) {
|
||||
const fer2 = er2;
|
||||
if (fer2?.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
return await fn(path);
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
};
|
||||
export const fixEPERMSync = (fn) => (path) => {
|
||||
try {
|
||||
return fn(path);
|
||||
}
|
||||
catch (er) {
|
||||
const fer = er;
|
||||
if (fer?.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (fer?.code === 'EPERM') {
|
||||
try {
|
||||
chmodSync(path, 0o666);
|
||||
}
|
||||
catch (er2) {
|
||||
const fer2 = er2;
|
||||
if (fer2?.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
return fn(path);
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
};
|
||||
//# sourceMappingURL=fix-eperm.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"fix-eperm.js","sourceRoot":"","sources":["../../src/fix-eperm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAW,MAAM,SAAS,CAAA;AACtD,MAAM,EAAE,KAAK,EAAE,GAAG,QAAQ,CAAA;AAE1B,MAAM,CAAC,MAAM,QAAQ,GACnB,CAAC,EAAkC,EAAE,EAAE,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7D,IAAI;QACF,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;KACtB;IAAC,OAAO,EAAE,EAAE;QACX,MAAM,GAAG,GAAG,EAAa,CAAA;QACzB,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE;YAC1B,OAAM;SACP;QACD,IAAI,GAAG,EAAE,IAAI,KAAK,OAAO,EAAE;YACzB,IAAI;gBACF,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;aACzB;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,IAAI,GAAG,GAAc,CAAA;gBAC3B,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE;oBAC3B,OAAM;iBACP;gBACD,MAAM,EAAE,CAAA;aACT;YACD,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;SACtB;QACD,MAAM,EAAE,CAAA;KACT;AACH,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,EAAyB,EAAE,EAAE,CAAC,CAAC,IAAY,EAAE,EAAE;IAC1E,IAAI;QACF,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;KAChB;IAAC,OAAO,EAAE,EAAE;QACX,MAAM,GAAG,GAAG,EAAa,CAAA;QACzB,IAAI,GAAG,EAAE,IAAI,KAAK,QAAQ,EAAE;YAC1B,OAAM;SACP;QACD,IAAI,GAAG,EAAE,IAAI,KAAK,OAAO,EAAE;YACzB,IAAI;gBACF,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;aACvB;YAAC,OAAO,GAAG,EAAE;gBACZ,MAAM,IAAI,GAAG,GAAc,CAAA;gBAC3B,IAAI,IAAI,EAAE,IAAI,KAAK,QAAQ,EAAE;oBAC3B,OAAM;iBACP;gBACD,MAAM,EAAE,CAAA;aACT;YACD,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;SAChB;QACD,MAAM,EAAE,CAAA;KACT;AACH,CAAC,CAAA"}
|
||||
+18
@@ -0,0 +1,18 @@
|
||||
import fs from 'fs';
|
||||
export type FsError = Error & {
|
||||
code?: string;
|
||||
path?: string;
|
||||
};
|
||||
export { chmodSync, mkdirSync, readdirSync, renameSync, rmdirSync, rmSync, statSync, unlinkSync, } from 'fs';
|
||||
export declare const promises: {
|
||||
chmod: (path: fs.PathLike, mode: fs.Mode) => Promise<void>;
|
||||
mkdir: (path: fs.PathLike, options?: fs.Mode | (fs.MakeDirectoryOptions & {
|
||||
recursive?: boolean | null;
|
||||
}) | undefined | null) => Promise<string | undefined>;
|
||||
readdir: (path: fs.PathLike) => Promise<string[]>;
|
||||
rename: (oldPath: fs.PathLike, newPath: fs.PathLike) => Promise<void>;
|
||||
rm: (path: fs.PathLike, options: fs.RmOptions) => Promise<void>;
|
||||
rmdir: (path: fs.PathLike) => Promise<void>;
|
||||
stat: (path: fs.PathLike) => Promise<fs.Stats>;
|
||||
unlink: (path: fs.PathLike) => Promise<void>;
|
||||
};
|
||||
+27
@@ -0,0 +1,27 @@
|
||||
// promisify ourselves, because older nodes don't have fs.promises
|
||||
import fs from 'fs';
|
||||
// sync ones just take the sync version from node
|
||||
export { chmodSync, mkdirSync, readdirSync, renameSync, rmdirSync, rmSync, statSync, unlinkSync, } from 'fs';
|
||||
// unrolled for better inlining, this seems to get better performance
|
||||
// than something like:
|
||||
// const makeCb = (res, rej) => (er, ...d) => er ? rej(er) : res(...d)
|
||||
// which would be a bit cleaner.
|
||||
const chmod = (path, mode) => new Promise((res, rej) => fs.chmod(path, mode, (er, ...d) => (er ? rej(er) : res(...d))));
|
||||
const mkdir = (path, options) => new Promise((res, rej) => fs.mkdir(path, options, (er, made) => (er ? rej(er) : res(made))));
|
||||
const readdir = (path) => new Promise((res, rej) => fs.readdir(path, (er, data) => (er ? rej(er) : res(data))));
|
||||
const rename = (oldPath, newPath) => new Promise((res, rej) => fs.rename(oldPath, newPath, (er, ...d) => (er ? rej(er) : res(...d))));
|
||||
const rm = (path, options) => new Promise((res, rej) => fs.rm(path, options, (er, ...d) => (er ? rej(er) : res(...d))));
|
||||
const rmdir = (path) => new Promise((res, rej) => fs.rmdir(path, (er, ...d) => (er ? rej(er) : res(...d))));
|
||||
const stat = (path) => new Promise((res, rej) => fs.stat(path, (er, data) => (er ? rej(er) : res(data))));
|
||||
const unlink = (path) => new Promise((res, rej) => fs.unlink(path, (er, ...d) => (er ? rej(er) : res(...d))));
|
||||
export const promises = {
|
||||
chmod,
|
||||
mkdir,
|
||||
readdir,
|
||||
rename,
|
||||
rm,
|
||||
rmdir,
|
||||
stat,
|
||||
unlink,
|
||||
};
|
||||
//# sourceMappingURL=fs.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"fs.js","sourceRoot":"","sources":["../../src/fs.ts"],"names":[],"mappings":"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"}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export declare const ignoreENOENT: (p: Promise<any>) => Promise<any>;
|
||||
export declare const ignoreENOENTSync: (fn: () => any) => any;
|
||||
+16
@@ -0,0 +1,16 @@
|
||||
export const ignoreENOENT = async (p) => p.catch(er => {
|
||||
if (er.code !== 'ENOENT') {
|
||||
throw er;
|
||||
}
|
||||
});
|
||||
export const ignoreENOENTSync = (fn) => {
|
||||
try {
|
||||
return fn();
|
||||
}
|
||||
catch (er) {
|
||||
if (er?.code !== 'ENOENT') {
|
||||
throw er;
|
||||
}
|
||||
}
|
||||
};
|
||||
//# sourceMappingURL=ignore-enoent.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"ignore-enoent.js","sourceRoot":"","sources":["../../src/ignore-enoent.ts"],"names":[],"mappings":"AAEA,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,EAAc,EAAE,IAAI,KAAK,QAAQ,EAAE;YACtC,MAAM,EAAE,CAAA;SACT;KACF;AACH,CAAC,CAAA"}
|
||||
+60
@@ -0,0 +1,60 @@
|
||||
export interface RimrafOptions {
|
||||
preserveRoot?: boolean;
|
||||
tmp?: string;
|
||||
maxRetries?: number;
|
||||
retryDelay?: number;
|
||||
backoff?: number;
|
||||
maxBackoff?: number;
|
||||
}
|
||||
export declare const isRimrafOptions: (o: any) => o is RimrafOptions;
|
||||
export declare const assertRimrafOptions: (o: any) => void;
|
||||
export declare const nativeSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const native: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
export declare const manualSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const manual: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
export declare const windowsSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const windows: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
export declare const posixSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const posix: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
export declare const moveRemoveSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const moveRemove: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
export declare const rimrafSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
export declare const rimraf: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
rimraf: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
rimrafSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
manual: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
manualSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
native: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
nativeSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
posix: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
posixSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
windows: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
windowsSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
moveRemove: ((path: string | string[], opt?: RimrafOptions) => Promise<void>) & {
|
||||
sync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
moveRemoveSync: (path: string | string[], opt?: RimrafOptions) => void;
|
||||
};
|
||||
export default rimraf;
|
||||
+71
@@ -0,0 +1,71 @@
|
||||
import optArg from './opt-arg.js';
|
||||
import pathArg from './path-arg.js';
|
||||
/* c8 ignore start */
|
||||
const typeOrUndef = (val, t) => typeof val === 'undefined' || typeof val === t;
|
||||
/* c8 ignore stop */
|
||||
export const isRimrafOptions = (o) => !!o &&
|
||||
typeof o === 'object' &&
|
||||
typeOrUndef(o.preserveRoot, 'boolean') &&
|
||||
typeOrUndef(o.preserveRoot, 'number') &&
|
||||
typeOrUndef(o.maxRetries, 'number') &&
|
||||
typeOrUndef(o.retryDelay, 'number') &&
|
||||
typeOrUndef(o.backoff, 'number') &&
|
||||
typeOrUndef(o.maxBackoff, 'number');
|
||||
/* c8 ignore start */
|
||||
export const assertRimrafOptions = (o) => {
|
||||
if (!isRimrafOptions(o)) {
|
||||
throw new Error('invalid rimraf options');
|
||||
}
|
||||
};
|
||||
/* c8 ignore stop */
|
||||
import { rimrafManual, rimrafManualSync } from './rimraf-manual.js';
|
||||
import { rimrafMoveRemove, rimrafMoveRemoveSync } from './rimraf-move-remove.js';
|
||||
import { rimrafNative, rimrafNativeSync } from './rimraf-native.js';
|
||||
import { rimrafPosix, rimrafPosixSync } from './rimraf-posix.js';
|
||||
import { rimrafWindows, rimrafWindowsSync } from './rimraf-windows.js';
|
||||
import { useNative, useNativeSync } from './use-native.js';
|
||||
const wrap = (fn) => async (path, opt) => {
|
||||
const options = optArg(opt);
|
||||
await (Array.isArray(path)
|
||||
? Promise.all(path.map(p => fn(pathArg(p, options), options)))
|
||||
: fn(pathArg(path, options), options));
|
||||
};
|
||||
const wrapSync = (fn) => (path, opt) => {
|
||||
const options = optArg(opt);
|
||||
return Array.isArray(path)
|
||||
? path.forEach(p => fn(pathArg(p, options), options))
|
||||
: fn(pathArg(path, options), options);
|
||||
};
|
||||
export const nativeSync = wrapSync(rimrafNativeSync);
|
||||
export const native = Object.assign(wrap(rimrafNative), { sync: nativeSync });
|
||||
export const manualSync = wrapSync(rimrafManualSync);
|
||||
export const manual = Object.assign(wrap(rimrafManual), { sync: manualSync });
|
||||
export const windowsSync = wrapSync(rimrafWindowsSync);
|
||||
export const windows = Object.assign(wrap(rimrafWindows), { sync: windowsSync });
|
||||
export const posixSync = wrapSync(rimrafPosixSync);
|
||||
export const posix = Object.assign(wrap(rimrafPosix), { sync: posixSync });
|
||||
export const moveRemoveSync = wrapSync(rimrafMoveRemoveSync);
|
||||
export const moveRemove = Object.assign(wrap(rimrafMoveRemove), {
|
||||
sync: moveRemoveSync,
|
||||
});
|
||||
export const rimrafSync = wrapSync((path, opt) => useNativeSync() ? rimrafNativeSync(path, opt) : rimrafManualSync(path, opt));
|
||||
export const sync = rimrafSync;
|
||||
export const rimraf = Object.assign(wrap((path, opt) => useNative() ? rimrafNative(path, opt) : rimrafManual(path, opt)), {
|
||||
// this weirdness because it's easier than explicitly declaring
|
||||
rimraf: manual,
|
||||
sync: rimrafSync,
|
||||
rimrafSync: rimrafSync,
|
||||
manual,
|
||||
manualSync,
|
||||
native,
|
||||
nativeSync,
|
||||
posix,
|
||||
posixSync,
|
||||
windows,
|
||||
windowsSync,
|
||||
moveRemove,
|
||||
moveRemoveSync,
|
||||
});
|
||||
rimraf.rimraf = rimraf;
|
||||
export default rimraf;
|
||||
//# sourceMappingURL=index.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,cAAc,CAAA;AACjC,OAAO,OAAO,MAAM,eAAe,CAAA;AAWnC,qBAAqB;AACrB,MAAM,WAAW,GAAG,CAAC,GAAQ,EAAE,CAAS,EAAE,EAAE,CAC1C,OAAO,GAAG,KAAK,WAAW,IAAI,OAAO,GAAG,KAAK,CAAC,CAAA;AAChD,oBAAoB;AAEpB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAM,EAAsB,EAAE,CAC5D,CAAC,CAAC,CAAC;IACH,OAAO,CAAC,KAAK,QAAQ;IACrB,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,SAAS,CAAC;IACtC,WAAW,CAAC,CAAC,CAAC,YAAY,EAAE,QAAQ,CAAC;IACrC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC;IACnC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC;IACnC,WAAW,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC;IAChC,WAAW,CAAC,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAA;AAErC,qBAAqB;AACrB,MAAM,CAAC,MAAM,mBAAmB,GAAqB,CACnD,CAAM,EACsB,EAAE;IAC9B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;QACvB,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;KAC1C;AACH,CAAC,CAAA;AACD,oBAAoB;AAEpB,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAA;AAChF,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AACtE,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE1D,MAAM,IAAI,GACR,CAAC,EAAkD,EAAE,EAAE,CACvD,KAAK,EAAE,IAAuB,EAAE,GAAmB,EAAiB,EAAE;IACpE,MAAM,OAAO,GAAkB,MAAM,CAAC,GAAG,CAAC,CAAA;IAC1C,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACxB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC;QAC9D,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;AAC1C,CAAC,CAAA;AAEH,MAAM,QAAQ,GACZ,CAAC,EAAyC,EAAE,EAAE,CAC9C,CAAC,IAAuB,EAAE,GAAmB,EAAQ,EAAE;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IAC3B,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QACxB,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAC;QACrD,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,OAAO,CAAC,CAAA;AACzC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;AAE7E,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,gBAAgB,CAAC,CAAA;AACpD,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAA;AAE7E,MAAM,CAAC,MAAM,WAAW,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAAA;AACtD,MAAM,CAAC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAA;AAEhF,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC,eAAe,CAAC,CAAA;AAClD,MAAM,CAAC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAA;AAE1E,MAAM,CAAC,MAAM,cAAc,GAAG,QAAQ,CAAC,oBAAoB,CAAC,CAAA;AAC5D,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;IAC9D,IAAI,EAAE,cAAc;CACrB,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,QAAQ,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAC/C,aAAa,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,EAAE,GAAG,CAAC,CAC5E,CAAA;AACD,MAAM,CAAC,MAAM,IAAI,GAAG,UAAU,CAAA;AAE9B,MAAM,CAAC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CACjC,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CACjB,SAAS,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,EAAE,GAAG,CAAC,CAChE,EACD;IACE,+DAA+D;IAC/D,MAAM,EAAE,MAAM;IACd,IAAI,EAAE,UAAU;IAChB,UAAU,EAAE,UAAU;IACtB,MAAM;IACN,UAAU;IACV,MAAM;IACN,UAAU;IACV,KAAK;IACL,SAAS;IACT,OAAO;IACP,WAAW;IACX,UAAU;IACV,cAAc;CACf,CACF,CAAA;AACD,MAAM,CAAC,MAAM,GAAG,MAAM,CAAA;AAEtB,eAAe,MAAM,CAAA"}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { RimrafOptions } from './index.js';
|
||||
declare const _default: (opt?: RimrafOptions) => RimrafOptions;
|
||||
export default _default;
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
import { assertRimrafOptions } from './index.js';
|
||||
export default (opt = {}) => {
|
||||
assertRimrafOptions(opt);
|
||||
return opt;
|
||||
};
|
||||
//# sourceMappingURL=opt-arg.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"opt-arg.js","sourceRoot":"","sources":["../../src/opt-arg.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAiB,MAAM,YAAY,CAAA;AAC/D,eAAe,CAAC,MAAqB,EAAE,EAAE,EAAE;IACzC,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACxB,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA"}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"type": "module"
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { RimrafOptions } from './index.js';
|
||||
declare const pathArg: (path: string, opt?: RimrafOptions) => string;
|
||||
export default pathArg;
|
||||
+49
@@ -0,0 +1,49 @@
|
||||
import platform from './platform.js';
|
||||
import { resolve, parse } from 'path';
|
||||
import { inspect } from 'util';
|
||||
const pathArg = (path, opt = {}) => {
|
||||
const type = typeof path;
|
||||
if (type !== 'string') {
|
||||
const ctor = path && type === 'object' && path.constructor;
|
||||
const received = ctor && ctor.name
|
||||
? `an instance of ${ctor.name}`
|
||||
: type === 'object'
|
||||
? inspect(path)
|
||||
: `type ${type} ${path}`;
|
||||
const msg = 'The "path" argument must be of type string. ' + `Received ${received}`;
|
||||
throw Object.assign(new TypeError(msg), {
|
||||
path,
|
||||
code: 'ERR_INVALID_ARG_TYPE',
|
||||
});
|
||||
}
|
||||
if (/\0/.test(path)) {
|
||||
// simulate same failure that node raises
|
||||
const msg = 'path must be a string without null bytes';
|
||||
throw Object.assign(new TypeError(msg), {
|
||||
path,
|
||||
code: 'ERR_INVALID_ARG_VALUE',
|
||||
});
|
||||
}
|
||||
path = resolve(path);
|
||||
const { root } = parse(path);
|
||||
if (path === root && opt.preserveRoot !== false) {
|
||||
const msg = 'refusing to remove root directory without preserveRoot:false';
|
||||
throw Object.assign(new Error(msg), {
|
||||
path,
|
||||
code: 'ERR_PRESERVE_ROOT',
|
||||
});
|
||||
}
|
||||
if (platform === 'win32') {
|
||||
const badWinChars = /[*|"<>?:]/;
|
||||
const { root } = parse(path);
|
||||
if (badWinChars.test(path.substring(root.length))) {
|
||||
throw Object.assign(new Error('Illegal characters in path.'), {
|
||||
path,
|
||||
code: 'EINVAL',
|
||||
});
|
||||
}
|
||||
}
|
||||
return path;
|
||||
};
|
||||
export default pathArg;
|
||||
//# sourceMappingURL=path-arg.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"path-arg.js","sourceRoot":"","sources":["../../src/path-arg.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAA;AACpC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAG9B,MAAM,OAAO,GAAG,CAAC,IAAY,EAAE,MAAqB,EAAE,EAAE,EAAE;IACxD,MAAM,IAAI,GAAG,OAAO,IAAI,CAAA;IACxB,IAAI,IAAI,KAAK,QAAQ,EAAE;QACrB,MAAM,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAA;QAC1D,MAAM,QAAQ,GACZ,IAAI,IAAI,IAAI,CAAC,IAAI;YACf,CAAC,CAAC,kBAAkB,IAAI,CAAC,IAAI,EAAE;YAC/B,CAAC,CAAC,IAAI,KAAK,QAAQ;gBACnB,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;gBACf,CAAC,CAAC,QAAQ,IAAI,IAAI,IAAI,EAAE,CAAA;QAC5B,MAAM,GAAG,GACP,8CAA8C,GAAG,YAAY,QAAQ,EAAE,CAAA;QACzE,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;YACtC,IAAI;YACJ,IAAI,EAAE,sBAAsB;SAC7B,CAAC,CAAA;KACH;IAED,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;QACnB,yCAAyC;QACzC,MAAM,GAAG,GAAG,0CAA0C,CAAA;QACtD,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,EAAE;YACtC,IAAI;YACJ,IAAI,EAAE,uBAAuB;SAC9B,CAAC,CAAA;KACH;IAED,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACpB,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;IAE5B,IAAI,IAAI,KAAK,IAAI,IAAI,GAAG,CAAC,YAAY,KAAK,KAAK,EAAE;QAC/C,MAAM,GAAG,GAAG,8DAA8D,CAAA;QAC1E,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE;YAClC,IAAI;YACJ,IAAI,EAAE,mBAAmB;SAC1B,CAAC,CAAA;KACH;IAED,IAAI,QAAQ,KAAK,OAAO,EAAE;QACxB,MAAM,WAAW,GAAG,WAAW,CAAA;QAC/B,MAAM,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,CAAA;QAC5B,IAAI,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE;YACjD,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,EAAE;gBAC5D,IAAI;gBACJ,IAAI,EAAE,QAAQ;aACf,CAAC,CAAA;SACH;KACF;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA;AAED,eAAe,OAAO,CAAA"}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
declare const _default: string;
|
||||
export default _default;
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export default process.env.__TESTING_RIMRAF_PLATFORM__ || process.platform;
|
||||
//# sourceMappingURL=platform.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/platform.ts"],"names":[],"mappings":"AAAA,eAAe,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,OAAO,CAAC,QAAQ,CAAA"}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { FsError } from './fs.js';
|
||||
export declare const readdirOrError: (path: string) => Promise<FsError | string[]>;
|
||||
export declare const readdirOrErrorSync: (path: string) => FsError | string[];
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
// returns an array of entries if readdir() works,
|
||||
// or the error that readdir() raised if not.
|
||||
import { promises, readdirSync } from './fs.js';
|
||||
const { readdir } = promises;
|
||||
export const readdirOrError = (path) => readdir(path).catch(er => er);
|
||||
export const readdirOrErrorSync = (path) => {
|
||||
try {
|
||||
return readdirSync(path);
|
||||
}
|
||||
catch (er) {
|
||||
return er;
|
||||
}
|
||||
};
|
||||
//# sourceMappingURL=readdir-or-error.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"readdir-or-error.js","sourceRoot":"","sources":["../../src/readdir-or-error.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,6CAA6C;AAC7C,OAAO,EAAW,QAAQ,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA;AACxD,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,EAAa,CAAC,CAAA;AAC1C,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,EAAa,CAAA;KACrB;AACH,CAAC,CAAA"}
|
||||
+7
@@ -0,0 +1,7 @@
|
||||
import { RimrafOptions } from '.';
|
||||
export declare const MAXBACKOFF = 200;
|
||||
export declare const RATE = 1.2;
|
||||
export declare const MAXRETRIES = 10;
|
||||
export declare const codes: Set<string>;
|
||||
export declare const retryBusy: (fn: (path: string) => Promise<any>) => (path: string, opt: RimrafOptions, backoff?: number, total?: number) => Promise<any>;
|
||||
export declare const retryBusySync: (fn: (path: string) => any) => (path: string, opt: RimrafOptions) => any;
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
// note: max backoff is the maximum that any *single* backoff will do
|
||||
export const MAXBACKOFF = 200;
|
||||
export const RATE = 1.2;
|
||||
export const MAXRETRIES = 10;
|
||||
export const codes = new Set(['EMFILE', 'ENFILE', 'EBUSY']);
|
||||
export const retryBusy = (fn) => {
|
||||
const method = async (path, opt, backoff = 1, total = 0) => {
|
||||
const mbo = opt.maxBackoff || MAXBACKOFF;
|
||||
const rate = opt.backoff || RATE;
|
||||
const max = opt.maxRetries || MAXRETRIES;
|
||||
let retries = 0;
|
||||
while (true) {
|
||||
try {
|
||||
return await fn(path);
|
||||
}
|
||||
catch (er) {
|
||||
const fer = er;
|
||||
if (fer?.path === path && fer?.code && codes.has(fer.code)) {
|
||||
backoff = Math.ceil(backoff * rate);
|
||||
total = backoff + total;
|
||||
if (total < mbo) {
|
||||
return new Promise((res, rej) => {
|
||||
setTimeout(() => {
|
||||
method(path, opt, backoff, total).then(res, rej);
|
||||
}, backoff);
|
||||
});
|
||||
}
|
||||
if (retries < max) {
|
||||
retries++;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
}
|
||||
};
|
||||
return method;
|
||||
};
|
||||
// just retries, no async so no backoff
|
||||
export const retryBusySync = (fn) => {
|
||||
const method = (path, opt) => {
|
||||
const max = opt.maxRetries || MAXRETRIES;
|
||||
let retries = 0;
|
||||
while (true) {
|
||||
try {
|
||||
return fn(path);
|
||||
}
|
||||
catch (er) {
|
||||
const fer = er;
|
||||
if (fer?.path === path &&
|
||||
fer?.code &&
|
||||
codes.has(fer.code) &&
|
||||
retries < max) {
|
||||
retries++;
|
||||
continue;
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
}
|
||||
};
|
||||
return method;
|
||||
};
|
||||
//# sourceMappingURL=retry-busy.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"retry-busy.js","sourceRoot":"","sources":["../../src/retry-busy.ts"],"names":[],"mappings":"AAAA,qEAAqE;AAKrE,MAAM,CAAC,MAAM,UAAU,GAAG,GAAG,CAAA;AAC7B,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAA;AACvB,MAAM,CAAC,MAAM,UAAU,GAAG,EAAE,CAAA;AAC5B,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAA;AAE3D,MAAM,CAAC,MAAM,SAAS,GAAG,CAAC,EAAkC,EAAE,EAAE;IAC9D,MAAM,MAAM,GAAG,KAAK,EAClB,IAAY,EACZ,GAAkB,EAClB,OAAO,GAAG,CAAC,EACX,KAAK,GAAG,CAAC,EACT,EAAE;QACF,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,IAAI,UAAU,CAAA;QACxC,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,IAAI,IAAI,CAAA;QAChC,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,IAAI,UAAU,CAAA;QACxC,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,OAAO,IAAI,EAAE;YACX,IAAI;gBACF,OAAO,MAAM,EAAE,CAAC,IAAI,CAAC,CAAA;aACtB;YAAC,OAAO,EAAE,EAAE;gBACX,MAAM,GAAG,GAAG,EAAa,CAAA;gBACzB,IAAI,GAAG,EAAE,IAAI,KAAK,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBAC1D,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,CAAA;oBACnC,KAAK,GAAG,OAAO,GAAG,KAAK,CAAA;oBACvB,IAAI,KAAK,GAAG,GAAG,EAAE;wBACf,OAAO,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;4BAC9B,UAAU,CAAC,GAAG,EAAE;gCACd,MAAM,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;4BAClD,CAAC,EAAE,OAAO,CAAC,CAAA;wBACb,CAAC,CAAC,CAAA;qBACH;oBACD,IAAI,OAAO,GAAG,GAAG,EAAE;wBACjB,OAAO,EAAE,CAAA;wBACT,SAAQ;qBACT;iBACF;gBACD,MAAM,EAAE,CAAA;aACT;SACF;IACH,CAAC,CAAA;IAED,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED,uCAAuC;AACvC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,EAAyB,EAAE,EAAE;IACzD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,GAAkB,EAAE,EAAE;QAClD,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,IAAI,UAAU,CAAA;QACxC,IAAI,OAAO,GAAG,CAAC,CAAA;QACf,OAAO,IAAI,EAAE;YACX,IAAI;gBACF,OAAO,EAAE,CAAC,IAAI,CAAC,CAAA;aAChB;YAAC,OAAO,EAAE,EAAE;gBACX,MAAM,GAAG,GAAG,EAAa,CAAA;gBACzB,IACE,GAAG,EAAE,IAAI,KAAK,IAAI;oBAClB,GAAG,EAAE,IAAI;oBACT,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;oBACnB,OAAO,GAAG,GAAG,EACb;oBACA,OAAO,EAAE,CAAA;oBACT,SAAQ;iBACT;gBACD,MAAM,EAAE,CAAA;aACT;SACF;IACH,CAAC,CAAA;IACD,OAAO,MAAM,CAAA;AACf,CAAC,CAAA"}
|
||||
+2
@@ -0,0 +1,2 @@
|
||||
export declare const rimrafManual: ((path: string, opt: import("./index.js").RimrafOptions) => Promise<any>) | ((path: string, opt: import("./index.js").RimrafOptions, state?: symbol) => Promise<void>);
|
||||
export declare const rimrafManualSync: (path: string, opt: import("./index.js").RimrafOptions, state?: symbol) => void;
|
||||
+6
@@ -0,0 +1,6 @@
|
||||
import platform from './platform.js';
|
||||
import { rimrafPosix, rimrafPosixSync } from './rimraf-posix.js';
|
||||
import { rimrafWindows, rimrafWindowsSync } from './rimraf-windows.js';
|
||||
export const rimrafManual = platform === 'win32' ? rimrafWindows : rimrafPosix;
|
||||
export const rimrafManualSync = platform === 'win32' ? rimrafWindowsSync : rimrafPosixSync;
|
||||
//# sourceMappingURL=rimraf-manual.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"rimraf-manual.js","sourceRoot":"","sources":["../../src/rimraf-manual.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAA;AAEpC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEtE,MAAM,CAAC,MAAM,YAAY,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAA;AAC9E,MAAM,CAAC,MAAM,gBAAgB,GAC3B,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,eAAe,CAAA"}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { RimrafOptions } from '.';
|
||||
export declare const rimrafMoveRemove: (path: string, opt: RimrafOptions) => Promise<void>;
|
||||
export declare const rimrafMoveRemoveSync: (path: string, opt: RimrafOptions) => void;
|
||||
+119
@@ -0,0 +1,119 @@
|
||||
// https://youtu.be/uhRWMGBjlO8?t=537
|
||||
//
|
||||
// 1. readdir
|
||||
// 2. for each entry
|
||||
// a. if a non-empty directory, recurse
|
||||
// b. if an empty directory, move to random hidden file name in $TEMP
|
||||
// c. unlink/rmdir $TEMP
|
||||
//
|
||||
// This works around the fact that unlink/rmdir is non-atomic and takes
|
||||
// a non-deterministic amount of time to complete.
|
||||
//
|
||||
// However, it is HELLA SLOW, like 2-10x slower than a naive recursive rm.
|
||||
import { basename, parse, resolve } from 'path';
|
||||
import { defaultTmp, defaultTmpSync } from './default-tmp.js';
|
||||
import { ignoreENOENT, ignoreENOENTSync } from './ignore-enoent.js';
|
||||
import { chmodSync, promises as fsPromises, renameSync, rmdirSync, unlinkSync, } from './fs.js';
|
||||
const { rename, unlink, rmdir, chmod } = fsPromises;
|
||||
import { readdirOrError, readdirOrErrorSync } from './readdir-or-error.js';
|
||||
// crypto.randomBytes is much slower, and Math.random() is enough here
|
||||
const uniqueFilename = (path) => `.${basename(path)}.${Math.random()}`;
|
||||
const unlinkFixEPERM = async (path) => unlink(path).catch((er) => {
|
||||
if (er.code === 'EPERM') {
|
||||
return chmod(path, 0o666).then(() => unlink(path), er2 => {
|
||||
if (er2.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
throw er;
|
||||
});
|
||||
}
|
||||
else if (er.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
throw er;
|
||||
});
|
||||
const unlinkFixEPERMSync = (path) => {
|
||||
try {
|
||||
unlinkSync(path);
|
||||
}
|
||||
catch (er) {
|
||||
if (er?.code === 'EPERM') {
|
||||
try {
|
||||
return chmodSync(path, 0o666);
|
||||
}
|
||||
catch (er2) {
|
||||
if (er2?.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
}
|
||||
else if (er?.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
throw er;
|
||||
}
|
||||
};
|
||||
export const rimrafMoveRemove = async (path, opt) => {
|
||||
if (!opt.tmp) {
|
||||
return rimrafMoveRemove(path, { ...opt, tmp: await defaultTmp(path) });
|
||||
}
|
||||
if (path === opt.tmp && parse(path).root !== path) {
|
||||
throw new Error('cannot delete temp directory used for deletion');
|
||||
}
|
||||
const entries = await readdirOrError(path);
|
||||
if (!Array.isArray(entries)) {
|
||||
if (entries.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (entries.code !== 'ENOTDIR') {
|
||||
throw entries;
|
||||
}
|
||||
return await ignoreENOENT(tmpUnlink(path, opt.tmp, unlinkFixEPERM));
|
||||
}
|
||||
await Promise.all(entries.map(entry => rimrafMoveRemove(resolve(path, entry), opt)));
|
||||
// we don't ever ACTUALLY try to unlink /, because that can never work
|
||||
// but when preserveRoot is false, we could be operating on it.
|
||||
// No need to check if preserveRoot is not false.
|
||||
if (opt.preserveRoot === false && path === parse(path).root) {
|
||||
return;
|
||||
}
|
||||
return await ignoreENOENT(tmpUnlink(path, opt.tmp, rmdir));
|
||||
};
|
||||
const tmpUnlink = async (path, tmp, rm) => {
|
||||
const tmpFile = resolve(tmp, uniqueFilename(path));
|
||||
await rename(path, tmpFile);
|
||||
return await rm(tmpFile);
|
||||
};
|
||||
export const rimrafMoveRemoveSync = (path, opt) => {
|
||||
if (!opt.tmp) {
|
||||
return rimrafMoveRemoveSync(path, { ...opt, tmp: defaultTmpSync(path) });
|
||||
}
|
||||
const tmp = opt.tmp;
|
||||
if (path === opt.tmp && parse(path).root !== path) {
|
||||
throw new Error('cannot delete temp directory used for deletion');
|
||||
}
|
||||
const entries = readdirOrErrorSync(path);
|
||||
if (!Array.isArray(entries)) {
|
||||
if (entries.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (entries.code !== 'ENOTDIR') {
|
||||
throw entries;
|
||||
}
|
||||
return ignoreENOENTSync(() => tmpUnlinkSync(path, tmp, unlinkFixEPERMSync));
|
||||
}
|
||||
for (const entry of entries) {
|
||||
rimrafMoveRemoveSync(resolve(path, entry), opt);
|
||||
}
|
||||
if (opt.preserveRoot === false && path === parse(path).root) {
|
||||
return;
|
||||
}
|
||||
return ignoreENOENTSync(() => tmpUnlinkSync(path, tmp, rmdirSync));
|
||||
};
|
||||
const tmpUnlinkSync = (path, tmp, rmSync) => {
|
||||
const tmpFile = resolve(tmp, uniqueFilename(path));
|
||||
renameSync(path, tmpFile);
|
||||
return rmSync(tmpFile);
|
||||
};
|
||||
//# sourceMappingURL=rimraf-move-remove.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"file":"rimraf-move-remove.js","sourceRoot":"","sources":["../../src/rimraf-move-remove.ts"],"names":[],"mappings":"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"}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { RimrafOptions } from '.';
|
||||
export declare const rimrafNative: (path: string, opt: RimrafOptions) => Promise<void>;
|
||||
export declare const rimrafNativeSync: (path: string, opt: RimrafOptions) => void;
|
||||
+13
@@ -0,0 +1,13 @@
|
||||
import { promises, rmSync } from './fs.js';
|
||||
const { rm } = promises;
|
||||
export const rimrafNative = (path, opt) => rm(path, {
|
||||
...opt,
|
||||
force: true,
|
||||
recursive: true,
|
||||
});
|
||||
export const rimrafNativeSync = (path, opt) => rmSync(path, {
|
||||
...opt,
|
||||
force: true,
|
||||
recursive: true,
|
||||
});
|
||||
//# sourceMappingURL=rimraf-native.js.map
|
||||
+1
@@ -0,0 +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"}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
import { RimrafOptions } from '.';
|
||||
export declare const rimrafPosix: (path: string, opt: RimrafOptions) => Promise<any>;
|
||||
export declare const rimrafPosixSync: (path: string, opt: RimrafOptions) => any;
|
||||
+51
@@ -0,0 +1,51 @@
|
||||
// the simple recursive removal, where unlink and rmdir are atomic
|
||||
// Note that this approach does NOT work on Windows!
|
||||
// We rmdir before unlink even though that is arguably less efficient
|
||||
// (since the average folder contains >1 file, it means more system
|
||||
// calls), because sunos will let root unlink a directory, and some
|
||||
// SUPER weird breakage happens as a result.
|
||||
import { promises, rmdirSync, unlinkSync } from './fs.js';
|
||||
const { rmdir, unlink } = promises;
|
||||
import { parse, resolve } from 'path';
|
||||
import { readdirOrError, readdirOrErrorSync } from './readdir-or-error.js';
|
||||
import { ignoreENOENT, ignoreENOENTSync } from './ignore-enoent.js';
|
||||
export const rimrafPosix = async (path, opt) => {
|
||||
const entries = await readdirOrError(path);
|
||||
if (!Array.isArray(entries)) {
|
||||
if (entries.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (entries.code !== 'ENOTDIR') {
|
||||
throw entries;
|
||||
}
|
||||
return ignoreENOENT(unlink(path));
|
||||
}
|
||||
await Promise.all(entries.map(entry => rimrafPosix(resolve(path, entry), opt)));
|
||||
// we don't ever ACTUALLY try to unlink /, because that can never work
|
||||
// but when preserveRoot is false, we could be operating on it.
|
||||
// No need to check if preserveRoot is not false.
|
||||
if (opt.preserveRoot === false && path === parse(path).root) {
|
||||
return;
|
||||
}
|
||||
return ignoreENOENT(rmdir(path));
|
||||
};
|
||||
export const rimrafPosixSync = (path, opt) => {
|
||||
const entries = readdirOrErrorSync(path);
|
||||
if (!Array.isArray(entries)) {
|
||||
if (entries.code === 'ENOENT') {
|
||||
return;
|
||||
}
|
||||
if (entries.code !== 'ENOTDIR') {
|
||||
throw entries;
|
||||
}
|
||||
return ignoreENOENTSync(() => unlinkSync(path));
|
||||
}
|
||||
for (const entry of entries) {
|
||||
rimrafPosixSync(resolve(path, entry), opt);
|
||||
}
|
||||
if (opt.preserveRoot === false && path === parse(path).root) {
|
||||
return;
|
||||
}
|
||||
return ignoreENOENTSync(() => rmdirSync(path));
|
||||
};
|
||||
//# sourceMappingURL=rimraf-posix.js.map
|
||||
+1
@@ -0,0 +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,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,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"}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user