/usr/lib/nodejs/del/index.js is in node-del 3.0.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | 'use strict';
const path = require('path');
const globby = require('globby');
const isPathCwd = require('is-path-cwd');
const isPathInCwd = require('is-path-in-cwd');
const pify = require('pify');
const rimraf = require('rimraf');
const pMap = require('p-map');
const rimrafP = pify(rimraf);
function safeCheck(file) {
if (isPathCwd(file)) {
throw new Error('Cannot delete the current working directory. Can be overriden with the `force` option.');
}
if (!isPathInCwd(file)) {
throw new Error('Cannot delete files/folders outside the current working directory. Can be overriden with the `force` option.');
}
}
module.exports = (patterns, opts) => {
opts = Object.assign({}, opts);
const force = opts.force;
delete opts.force;
const dryRun = opts.dryRun;
delete opts.dryRun;
const mapper = file => {
if (!force) {
safeCheck(file);
}
file = path.resolve(opts.cwd || '', file);
if (dryRun) {
return file;
}
return rimrafP(file, {glob: false}).then(() => file);
};
return globby(patterns, opts).then(files => pMap(files, mapper, opts));
};
module.exports.sync = (patterns, opts) => {
opts = Object.assign({}, opts);
const force = opts.force;
delete opts.force;
const dryRun = opts.dryRun;
delete opts.dryRun;
return globby.sync(patterns, opts).map(file => {
if (!force) {
safeCheck(file);
}
file = path.resolve(opts.cwd || '', file);
if (!dryRun) {
rimraf.sync(file, {glob: false});
}
return file;
});
};
|