diff --git a/lib/fs.js b/lib/fs.js index f92bdbd5d09691..17d97282473788 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -178,12 +178,6 @@ function showTruncateDeprecation() { } } -function maybeCallback(cb) { - validateFunction(cb, 'cb'); - - return cb; -} - // Ensure that callbacks run in the global context. Only use this function // for callbacks that are passed to the binding layer, callbacks that are // invoked from JS already run in the proper scope. @@ -257,7 +251,7 @@ function accessSync(path, mode) { * @returns {void} */ function exists(path, callback) { - maybeCallback(callback); + validateFunction(callback, 'cb'); function suppressedCallback(err) { callback(err ? false : true); @@ -367,7 +361,8 @@ function checkAborted(signal, callback) { * @returns {void} */ function readFile(path, options, callback) { - callback = maybeCallback(callback || options); + callback ||= options; + validateFunction(callback, 'cb'); options = getOptions(options, { flag: 'r' }); const ReadFileContext = require('internal/fs/read/context'); const context = new ReadFileContext(callback, options.encoding); @@ -650,7 +645,7 @@ function read(fd, buffer, offsetOrOptions, length, position, callback) { } validateBuffer(buffer); - callback = maybeCallback(callback); + validateFunction(callback, 'cb'); if (offset == null) { offset = 0; @@ -771,7 +766,8 @@ function readv(fd, buffers, position, callback) { fd = getValidatedFd(fd); validateBufferArray(buffers); - callback = maybeCallback(callback || position); + callback ||= position; + validateFunction(callback, 'cb'); const req = new FSReqCallback(); req.oncomplete = wrapper; @@ -828,7 +824,8 @@ function write(fd, buffer, offsetOrOptions, length, position, callback) { let offset = offsetOrOptions; if (isArrayBufferView(buffer)) { - callback = maybeCallback(callback || position || length || offset); + callback ||= position || length || offset; + validateFunction(callback, 'cb'); if (typeof offset === 'object') { ({ @@ -869,7 +866,8 @@ function write(fd, buffer, offsetOrOptions, length, position, callback) { const str = buffer; validateEncoding(str, length); - callback = maybeCallback(position); + callback = position; + validateFunction(callback, 'cb'); const req = new FSReqCallback(); req.oncomplete = wrapper; @@ -950,7 +948,8 @@ function writev(fd, buffers, position, callback) { fd = getValidatedFd(fd); validateBufferArray(buffers); - callback = maybeCallback(callback || position); + callback ||= position; + validateFunction(callback, 'cb'); if (buffers.length === 0) { process.nextTick(callback, null, 0, buffers); @@ -1051,7 +1050,7 @@ function truncate(path, len, callback) { validateInteger(len, 'len'); len = MathMax(0, len); - callback = maybeCallback(callback); + validateFunction(callback, 'cb'); fs.open(path, 'r+', (er, fd) => { if (er) return callback(er); const req = new FSReqCallback(); @@ -1585,7 +1584,7 @@ function statfs(path, options = { bigint: false }, callback) { callback = options; options = kEmptyObject; } - callback = maybeCallback(callback); + validateFunction(callback, 'cb'); path = getValidatedPath(path); const req = new FSReqCallback(options.bigint); req.oncomplete = (err, stats) => { @@ -1907,7 +1906,7 @@ function fchmodSync(fd, mode) { * @returns {void} */ function lchmod(path, mode, callback) { - callback = maybeCallback(callback); + validateFunction(callback, 'cb'); mode = parseFileMode(mode, 'mode'); fs.open(path, O_WRONLY | O_SYMLINK, (err, fd) => { if (err) { @@ -2265,7 +2264,8 @@ function writeAll(fd, isUserFd, buffer, offset, length, signal, flush, callback) * @returns {void} */ function writeFile(path, data, options, callback) { - callback = maybeCallback(callback || options); + callback ||= options; + validateFunction(callback, 'cb'); options = getOptions(options, { encoding: 'utf8', mode: 0o666, @@ -2381,7 +2381,8 @@ function writeFileSync(path, data, options) { * @returns {void} */ function appendFile(path, data, options, callback) { - callback = maybeCallback(callback || options); + callback ||= options; + validateFunction(callback, 'cb'); options = getOptions(options, { encoding: 'utf8', mode: 0o666, flag: 'a' }); // Don't make changes directly on options object @@ -2776,7 +2777,11 @@ realpathSync.native = (path, options) => { * @returns {void} */ function realpath(p, options, callback) { - callback = typeof options === 'function' ? options : maybeCallback(callback); + if (typeof options === 'function') { + callback = options; + } else { + validateFunction(callback, 'cb'); + } options = getOptions(options); p = toPathIfFileURL(p);