diff --git a/doc/api/deprecations.md b/doc/api/deprecations.md index 10f9fe4d74a874..32016233a027f3 100644 --- a/doc/api/deprecations.md +++ b/doc/api/deprecations.md @@ -3578,12 +3578,15 @@ Please use the [`crypto.createHash()`][] method to create Hash instances. -Type: Documentation-only +Type: Runtime Calling `fs.Stats` class directly with `Stats()` or `new Stats()` is deprecated due to being internals, not intended for public use. diff --git a/lib/internal/fs/utils.js b/lib/internal/fs/utils.js index 087d27f2db7bb9..d61dfd824bd4d7 100644 --- a/lib/internal/fs/utils.js +++ b/lib/internal/fs/utils.js @@ -51,6 +51,7 @@ const { const { kEmptyObject, once, + deprecate, } = require('internal/util'); const { toPathIfFileURL } = require('internal/url'); const { @@ -1009,7 +1010,7 @@ module.exports = { getStatsFromBinding, stringToFlags, stringToSymlinkType, - Stats, + Stats: deprecate(Stats, 'fs.Stats constructor is deprecated.', 'DEP0180'), toUnixTimestamp, validateBufferArray, validateCpOptions, diff --git a/test/parallel/test-fs-stat.js b/test/parallel/test-fs-stat.js index 2b98698df65d36..506c5e5fa97317 100644 --- a/test/parallel/test-fs-stat.js +++ b/test/parallel/test-fs-stat.js @@ -154,3 +154,28 @@ fs.open(__filename, 'r', undefined, common.mustCall((err, fd) => { // Should not throw an error fs.lstat(__filename, undefined, common.mustCall()); + +{ + fs.Stats( + 0, // dev + 0, // mode + 0, // nlink + 0, // uid + 0, // gid + 0, // rdev + 0, // blksize + 0, // ino + 0, // size + 0, // blocks + Date.UTC(1970, 0, 1, 0, 0, 0), // atime + Date.UTC(1970, 0, 1, 0, 0, 0), // mtime + Date.UTC(1970, 0, 1, 0, 0, 0), // ctime + Date.UTC(1970, 0, 1, 0, 0, 0) // birthtime + ); + common.expectWarning({ + DeprecationWarning: [ + ['fs.Stats constructor is deprecated.', + 'DEP0180'], + ] + }); +}