commit 4374b79aed648738d2458ce027cbe2b372bf7b3a Author: isaacs Date: Wed Jun 26 12:12:17 2019 -0700 Add support for stat options Fix #158 diff --git a/polyfills.js b/polyfills.js index b964ed0..bc9759b 100644 --- a/polyfills.js +++ b/polyfills.js @@ -273,17 +273,23 @@ function patch (fs) { } + // stat options added in v10.5.0 + var supportsStatOptions = /^v[1-9][1-9]|^v10\.[5-9]/.test(process.version) function statFix (orig) { if (!orig) return orig // Older versions of Node erroneously returned signed integers for // uid + gid. - return function (target, cb) { - return orig.call(fs, target, function (er, stats) { - if (!stats) return cb.apply(this, arguments) + return function (target, options, cb) { + if (typeof options === 'function') + cb = options, options = null + function callback (er, stats) { + if (!stats) return cb && cb.apply(this, arguments) if (stats.uid < 0) stats.uid += 0x100000000 if (stats.gid < 0) stats.gid += 0x100000000 if (cb) cb.apply(this, arguments) - }) + } + return supportsStatOptions ? orig.call(fs, target, options || {}, callback) + : orig.call(fs, target, callback) } } @@ -291,8 +297,8 @@ function patch (fs) { if (!orig) return orig // Older versions of Node erroneously returned signed integers for // uid + gid. - return function (target) { - var stats = orig.call(fs, target) + return function (target, options) { + var stats = orig.call(fs, target, options) if (stats.uid < 0) stats.uid += 0x100000000 if (stats.gid < 0) stats.gid += 0x100000000 return stats;