Socket
Socket
Sign inDemoInstall

rimraf

Package Overview
Dependencies
Maintainers
1
Versions
82
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rimraf - npm Package Compare versions

Comparing version 2.2.0 to 2.2.1

2

package.json
{
"name": "rimraf",
"version": "2.2.0",
"version": "2.2.1",
"main": "rimraf.js",

@@ -5,0 +5,0 @@ "description": "A deep deletion module for node (like `rm -rf`)",

@@ -19,2 +19,4 @@ module.exports = rimraf

var isWindows = (process.platform === "win32")
function rimraf (p, cb) {

@@ -64,6 +66,10 @@ if (!cb) throw new Error("No callback passed to rimraf()")

fs.unlink(p, function (er) {
if (er && er.code === "ENOENT")
return cb()
if (er && (er.code === "EPERM" || er.code === "EISDIR"))
return rmdir(p, er, cb)
if (er) {
if (er.code === "ENOENT")
return cb()
if (er.code === "EPERM")
return (isWindows) ? fixWinEPERM(p, er, cb) : rmdir(p, er, cb)
if (er.code === "EISDIR")
return rmdir(p, er, cb)
}
return cb(er)

@@ -73,2 +79,39 @@ })

function fixWinEPERM (p, er, cb) {
fs.chmod(p, 666, function (er2) {
if (er2)
cb(er2.code === "ENOENT" ? null : er)
else
fs.stat(p, function(er3, stats) {
if (er3)
cb(er3.code === "ENOENT" ? null : er)
else if (stats.isDirectory())
rmdir(p, er, cb)
else
fs.unlink(p, cb)
})
})
}
function fixWinEPERMSync (p, er, cb) {
try {
fs.chmodSync(p, 666)
} catch (er2) {
if (er2.code !== "ENOENT")
throw er
}
try {
var stats = fs.statSync(p)
} catch (er3) {
if (er3 !== "ENOENT")
throw er
}
if (stats.isDirectory())
rmdirSync(p, er)
else
fs.unlinkSync(p)
}
function rmdir (p, originalEr, cb) {

@@ -118,19 +161,28 @@ // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS)

return
if (er.code !== "EPERM" && er.code !== "EISDIR")
if (er.code === "EPERM")
return isWindows ? fixWinEPERMSync(p, er) : rmdirSync(p, er)
if (er.code !== "EISDIR")
throw er
try {
fs.rmdirSync(p)
} catch (er2) {
if (er2.code === "ENOENT")
return
if (er2.code === "ENOTDIR")
throw er
if (er2.code === "ENOTEMPTY") {
fs.readdirSync(p).forEach(function (f) {
rimrafSync(path.join(p, f))
})
fs.rmdirSync(p)
}
}
rmdirSync(p, er)
}
}
function rmdirSync (p, originalEr) {
try {
fs.rmdirSync(p)
} catch (er) {
if (er.code === "ENOENT")
return
if (er.code === "ENOTDIR")
throw originalEr
if (er.code === "ENOTEMPTY" || er.code === "EEXIST")
rmkidsSync(p)
}
}
function rmkidsSync (p) {
fs.readdirSync(p).forEach(function (f) {
rimrafSync(path.join(p, f))
})
fs.rmdirSync(p)
}
SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc