doc: document BigInt support in fs.Stats

PR-URL: https://github.com/nodejs/node/pull/20220
Fixes: https://github.com/nodejs/node/issues/12115
Reviewed-By: Ben Noordhuis <info@bnoordhuis.nl>
This commit is contained in:
Joyee Cheung 2018-04-23 17:14:56 +08:00
parent 1e7645c39a
commit f54a598b44
No known key found for this signature in database
GPG Key ID: 92B78A53C8303B8D
2 changed files with 121 additions and 26 deletions

View File

@ -415,6 +415,8 @@ A `fs.Stats` object provides information about a file.
Objects returned from [`fs.stat()`][], [`fs.lstat()`][] and [`fs.fstat()`][] and Objects returned from [`fs.stat()`][], [`fs.lstat()`][] and [`fs.fstat()`][] and
their synchronous counterparts are of this type. their synchronous counterparts are of this type.
If `bigint` in the `options` passed to those methods is true, the numeric values
will be `bigint` instead of `number`.
```console ```console
Stats { Stats {
@ -438,6 +440,30 @@ Stats {
birthtime: Mon, 10 Oct 2011 23:24:11 GMT } birthtime: Mon, 10 Oct 2011 23:24:11 GMT }
``` ```
`bigint` version:
```console
Stats {
dev: 2114n,
ino: 48064969n,
mode: 33188n,
nlink: 1n,
uid: 85n,
gid: 100n,
rdev: 0n,
size: 527n,
blksize: 4096n,
blocks: 8n,
atimeMs: 1318289051000n,
mtimeMs: 1318289051000n,
ctimeMs: 1318289051000n,
birthtimeMs: 1318289051000n,
atime: Mon, 10 Oct 2011 23:24:11 GMT,
mtime: Mon, 10 Oct 2011 23:24:11 GMT,
ctime: Mon, 10 Oct 2011 23:24:11 GMT,
birthtime: Mon, 10 Oct 2011 23:24:11 GMT }
```
### stats.isBlockDevice() ### stats.isBlockDevice()
<!-- YAML <!-- YAML
added: v0.1.10 added: v0.1.10
@ -506,61 +532,61 @@ This method is only valid when using [`fs.lstat()`][].
### stats.dev ### stats.dev
* {number} * {number|bigint}
The numeric identifier of the device containing the file. The numeric identifier of the device containing the file.
### stats.ino ### stats.ino
* {number} * {number|bigint}
The file system specific "Inode" number for the file. The file system specific "Inode" number for the file.
### stats.mode ### stats.mode
* {number} * {number|bigint}
A bit-field describing the file type and mode. A bit-field describing the file type and mode.
### stats.nlink ### stats.nlink
* {number} * {number|bigint}
The number of hard-links that exist for the file. The number of hard-links that exist for the file.
### stats.uid ### stats.uid
* {number} * {number|bigint}
The numeric user identifier of the user that owns the file (POSIX). The numeric user identifier of the user that owns the file (POSIX).
### stats.gid ### stats.gid
* {number} * {number|bigint}
The numeric group identifier of the group that owns the file (POSIX). The numeric group identifier of the group that owns the file (POSIX).
### stats.rdev ### stats.rdev
* {number} * {number|bigint}
A numeric device identifier if the file is considered "special". A numeric device identifier if the file is considered "special".
### stats.size ### stats.size
* {number} * {number|bigint}
The size of the file in bytes. The size of the file in bytes.
### stats.blksize ### stats.blksize
* {number} * {number|bigint}
The file system block size for i/o operations. The file system block size for i/o operations.
### stats.blocks ### stats.blocks
* {number} * {number|bigint}
The number of blocks allocated for this file. The number of blocks allocated for this file.
@ -569,7 +595,7 @@ The number of blocks allocated for this file.
added: v8.1.0 added: v8.1.0
--> -->
* {number} * {number|bigint}
The timestamp indicating the last time this file was accessed expressed in The timestamp indicating the last time this file was accessed expressed in
milliseconds since the POSIX Epoch. milliseconds since the POSIX Epoch.
@ -579,7 +605,7 @@ milliseconds since the POSIX Epoch.
added: v8.1.0 added: v8.1.0
--> -->
* {number} * {number|bigint}
The timestamp indicating the last time this file was modified expressed in The timestamp indicating the last time this file was modified expressed in
milliseconds since the POSIX Epoch. milliseconds since the POSIX Epoch.
@ -589,7 +615,7 @@ milliseconds since the POSIX Epoch.
added: v8.1.0 added: v8.1.0
--> -->
* {number} * {number|bigint}
The timestamp indicating the last time the file status was changed expressed The timestamp indicating the last time the file status was changed expressed
in milliseconds since the POSIX Epoch. in milliseconds since the POSIX Epoch.
@ -599,7 +625,7 @@ in milliseconds since the POSIX Epoch.
added: v8.1.0 added: v8.1.0
--> -->
* {number} * {number|bigint}
The timestamp indicating the creation time of this file expressed in The timestamp indicating the creation time of this file expressed in
milliseconds since the POSIX Epoch. milliseconds since the POSIX Epoch.
@ -1648,7 +1674,7 @@ added: v0.1.96
Synchronous fdatasync(2). Returns `undefined`. Synchronous fdatasync(2). Returns `undefined`.
## fs.fstat(fd, callback) ## fs.fstat(fd[, options], callback)
<!-- YAML <!-- YAML
added: v0.1.95 added: v0.1.95
changes: changes:
@ -1660,9 +1686,16 @@ changes:
pr-url: https://github.com/nodejs/node/pull/7897 pr-url: https://github.com/nodejs/node/pull/7897
description: The `callback` parameter is no longer optional. Not passing description: The `callback` parameter is no longer optional. Not passing
it will emit a deprecation warning with id DEP0013. it will emit a deprecation warning with id DEP0013.
- version: REPLACEME
pr-url: REPLACEME
description: Accepts an additional `options` object to specify whether
the numeric values returned should be bigint.
--> -->
* `fd` {integer} * `fd` {integer}
* `options` {Object}
* `bigint` {boolean} Whether the numeric values in the returned
[`fs.Stats`][] object should be `bigint`. **Default:** `false`.
* `callback` {Function} * `callback` {Function}
* `err` {Error} * `err` {Error}
* `stats` {fs.Stats} * `stats` {fs.Stats}
@ -1671,12 +1704,20 @@ Asynchronous fstat(2). The callback gets two arguments `(err, stats)` where
`stats` is an [`fs.Stats`][] object. `fstat()` is identical to [`stat()`][], `stats` is an [`fs.Stats`][] object. `fstat()` is identical to [`stat()`][],
except that the file to be stat-ed is specified by the file descriptor `fd`. except that the file to be stat-ed is specified by the file descriptor `fd`.
## fs.fstatSync(fd) ## fs.fstatSync(fd[, options])
<!-- YAML <!-- YAML
added: v0.1.95 added: v0.1.95
changes:
- version: REPLACEME
pr-url: REPLACEME
description: Accepts an additional `options` object to specify whether
the numeric values returned should be bigint.
--> -->
* `fd` {integer} * `fd` {integer}
* `options` {Object}
* `bigint` {boolean} Whether the numeric values in the returned
[`fs.Stats`][] object should be `bigint`. **Default:** `false`.
* Returns: {fs.Stats} * Returns: {fs.Stats}
Synchronous fstat(2). Synchronous fstat(2).
@ -1942,7 +1983,7 @@ changes:
Synchronous link(2). Returns `undefined`. Synchronous link(2). Returns `undefined`.
## fs.lstat(path, callback) ## fs.lstat(path[, options], callback)
<!-- YAML <!-- YAML
added: v0.1.30 added: v0.1.30
changes: changes:
@ -1958,9 +1999,16 @@ changes:
pr-url: https://github.com/nodejs/node/pull/7897 pr-url: https://github.com/nodejs/node/pull/7897
description: The `callback` parameter is no longer optional. Not passing description: The `callback` parameter is no longer optional. Not passing
it will emit a deprecation warning with id DEP0013. it will emit a deprecation warning with id DEP0013.
- version: REPLACEME
pr-url: REPLACEME
description: Accepts an additional `options` object to specify whether
the numeric values returned should be bigint.
--> -->
* `path` {string|Buffer|URL} * `path` {string|Buffer|URL}
* `options` {Object}
* `bigint` {boolean} Whether the numeric values in the returned
[`fs.Stats`][] object should be `bigint`. **Default:** `false`.
* `callback` {Function} * `callback` {Function}
* `err` {Error} * `err` {Error}
* `stats` {fs.Stats} * `stats` {fs.Stats}
@ -1970,7 +2018,7 @@ Asynchronous lstat(2). The callback gets two arguments `(err, stats)` where
except that if `path` is a symbolic link, then the link itself is stat-ed, except that if `path` is a symbolic link, then the link itself is stat-ed,
not the file that it refers to. not the file that it refers to.
## fs.lstatSync(path) ## fs.lstatSync(path[, options])
<!-- YAML <!-- YAML
added: v0.1.30 added: v0.1.30
changes: changes:
@ -1978,9 +2026,16 @@ changes:
pr-url: https://github.com/nodejs/node/pull/10739 pr-url: https://github.com/nodejs/node/pull/10739
description: The `path` parameter can be a WHATWG `URL` object using `file:` description: The `path` parameter can be a WHATWG `URL` object using `file:`
protocol. Support is currently still *experimental*. protocol. Support is currently still *experimental*.
- version: REPLACEME
pr-url: REPLACEME
description: Accepts an additional `options` object to specify whether
the numeric values returned should be bigint.
--> -->
* `path` {string|Buffer|URL} * `path` {string|Buffer|URL}
* `options` {Object}
* `bigint` {boolean} Whether the numeric values in the returned
[`fs.Stats`][] object should be `bigint`. **Default:** `false`.
* Returns: {fs.Stats} * Returns: {fs.Stats}
Synchronous lstat(2). Synchronous lstat(2).
@ -2698,7 +2753,7 @@ Synchronous rmdir(2). Returns `undefined`.
Using `fs.rmdirSync()` on a file (not a directory) results in an `ENOENT` error Using `fs.rmdirSync()` on a file (not a directory) results in an `ENOENT` error
on Windows and an `ENOTDIR` error on POSIX. on Windows and an `ENOTDIR` error on POSIX.
## fs.stat(path, callback) ## fs.stat(path[, options], callback)
<!-- YAML <!-- YAML
added: v0.0.2 added: v0.0.2
changes: changes:
@ -2714,9 +2769,16 @@ changes:
pr-url: https://github.com/nodejs/node/pull/7897 pr-url: https://github.com/nodejs/node/pull/7897
description: The `callback` parameter is no longer optional. Not passing description: The `callback` parameter is no longer optional. Not passing
it will emit a deprecation warning with id DEP0013. it will emit a deprecation warning with id DEP0013.
- version: REPLACEME
pr-url: REPLACEME
description: Accepts an additional `options` object to specify whether
the numeric values returned should be bigint.
--> -->
* `path` {string|Buffer|URL} * `path` {string|Buffer|URL}
* `options` {Object}
* `bigint` {boolean} Whether the numeric values in the returned
[`fs.Stats`][] object should be `bigint`. **Default:** `false`.
* `callback` {Function} * `callback` {Function}
* `err` {Error} * `err` {Error}
* `stats` {fs.Stats} * `stats` {fs.Stats}
@ -2734,7 +2796,7 @@ error raised if the file is not available.
To check if a file exists without manipulating it afterwards, [`fs.access()`] To check if a file exists without manipulating it afterwards, [`fs.access()`]
is recommended. is recommended.
## fs.statSync(path) ## fs.statSync(path[, options])
<!-- YAML <!-- YAML
added: v0.1.21 added: v0.1.21
changes: changes:
@ -2742,9 +2804,16 @@ changes:
pr-url: https://github.com/nodejs/node/pull/10739 pr-url: https://github.com/nodejs/node/pull/10739
description: The `path` parameter can be a WHATWG `URL` object using `file:` description: The `path` parameter can be a WHATWG `URL` object using `file:`
protocol. Support is currently still *experimental*. protocol. Support is currently still *experimental*.
- version: REPLACEME
pr-url: REPLACEME
description: Accepts an additional `options` object to specify whether
the numeric values returned should be bigint.
--> -->
* `path` {string|Buffer|URL} * `path` {string|Buffer|URL}
* `options` {Object}
* `bigint` {boolean} Whether the numeric values in the returned
[`fs.Stats`][] object should be `bigint`. **Default:** `false`.
* Returns: {fs.Stats} * Returns: {fs.Stats}
Synchronous stat(2). Synchronous stat(2).
@ -3521,10 +3590,18 @@ returned.
The `FileHandle` has to support reading. The `FileHandle` has to support reading.
#### filehandle.stat() #### filehandle.stat([options])
<!-- YAML <!-- YAML
added: v10.0.0 added: v10.0.0
changes:
- version: REPLACEME
pr-url: REPLACEME
description: Accepts an additional `options` object to specify whether
the numeric values returned should be bigint.
--> -->
* `options` {Object}
* `bigint` {boolean} Whether the numeric values in the returned
[`fs.Stats`][] object should be `bigint`. **Default:** `false`.
* Returns: {Promise} * Returns: {Promise}
Retrieves the [`fs.Stats`][] for the file. Retrieves the [`fs.Stats`][] for the file.
@ -3849,12 +3926,20 @@ added: v10.0.0
Asynchronous link(2). The `Promise` is resolved with no arguments upon success. Asynchronous link(2). The `Promise` is resolved with no arguments upon success.
### fsPromises.lstat(path) ### fsPromises.lstat(path[, options])
<!-- YAML <!-- YAML
added: v10.0.0 added: v10.0.0
changes:
- version: REPLACEME
pr-url: REPLACEME
description: Accepts an additional `options` object to specify whether
the numeric values returned should be bigint.
--> -->
* `path` {string|Buffer|URL} * `path` {string|Buffer|URL}
* `options` {Object}
* `bigint` {boolean} Whether the numeric values in the returned
[`fs.Stats`][] object should be `bigint`. **Default:** `false`.
* Returns: {Promise} * Returns: {Promise}
Asynchronous lstat(2). The `Promise` is resolved with the [`fs.Stats`][] object Asynchronous lstat(2). The `Promise` is resolved with the [`fs.Stats`][] object
@ -4035,12 +4120,20 @@ Using `fsPromises.rmdir()` on a file (not a directory) results in the
`Promise` being rejected with an `ENOENT` error on Windows and an `ENOTDIR` `Promise` being rejected with an `ENOENT` error on Windows and an `ENOTDIR`
error on POSIX. error on POSIX.
### fsPromises.stat(path) ### fsPromises.stat(path[, options])
<!-- YAML <!-- YAML
added: v10.0.0 added: v10.0.0
changes:
- version: REPLACEME
pr-url: REPLACEME
description: Accepts an additional `options` object to specify whether
the numeric values returned should be bigint.
--> -->
* `path` {string|Buffer|URL} * `path` {string|Buffer|URL}
* `options` {Object}
* `bigint` {boolean} Whether the numeric values in the returned
[`fs.Stats`][] object should be `bigint`. **Default:** `false`.
* Returns: {Promise} * Returns: {Promise}
The `Promise` is resolved with the [`fs.Stats`][] object for the given `path`. The `Promise` is resolved with the [`fs.Stats`][] object for the given `path`.
@ -4496,9 +4589,9 @@ the file contents.
[`fs.chown()`]: #fs_fs_chown_path_uid_gid_callback [`fs.chown()`]: #fs_fs_chown_path_uid_gid_callback
[`fs.copyFile()`]: #fs_fs_copyfile_src_dest_flags_callback [`fs.copyFile()`]: #fs_fs_copyfile_src_dest_flags_callback
[`fs.exists()`]: fs.html#fs_fs_exists_path_callback [`fs.exists()`]: fs.html#fs_fs_exists_path_callback
[`fs.fstat()`]: #fs_fs_fstat_fd_callback [`fs.fstat()`]: #fs_fs_fstat_fd_options_callback
[`fs.futimes()`]: #fs_fs_futimes_fd_atime_mtime_callback [`fs.futimes()`]: #fs_fs_futimes_fd_atime_mtime_callback
[`fs.lstat()`]: #fs_fs_lstat_path_callback [`fs.lstat()`]: #fs_fs_lstat_path_options_callback
[`fs.mkdir()`]: #fs_fs_mkdir_path_mode_callback [`fs.mkdir()`]: #fs_fs_mkdir_path_mode_callback
[`fs.mkdtemp()`]: #fs_fs_mkdtemp_prefix_options_callback [`fs.mkdtemp()`]: #fs_fs_mkdtemp_prefix_options_callback
[`fs.open()`]: #fs_fs_open_path_flags_mode_callback [`fs.open()`]: #fs_fs_open_path_flags_mode_callback
@ -4507,7 +4600,7 @@ the file contents.
[`fs.readFileSync()`]: #fs_fs_readfilesync_path_options [`fs.readFileSync()`]: #fs_fs_readfilesync_path_options
[`fs.realpath()`]: #fs_fs_realpath_path_options_callback [`fs.realpath()`]: #fs_fs_realpath_path_options_callback
[`fs.rmdir()`]: #fs_fs_rmdir_path_callback [`fs.rmdir()`]: #fs_fs_rmdir_path_callback
[`fs.stat()`]: #fs_fs_stat_path_callback [`fs.stat()`]: #fs_fs_stat_path_options_callback
[`fs.utimes()`]: #fs_fs_utimes_path_atime_mtime_callback [`fs.utimes()`]: #fs_fs_utimes_path_atime_mtime_callback
[`fs.watch()`]: #fs_fs_watch_filename_options_listener [`fs.watch()`]: #fs_fs_watch_filename_options_listener
[`fs.write()`]: #fs_fs_write_fd_buffer_offset_length_position_callback [`fs.write()`]: #fs_fs_write_fd_buffer_offset_length_position_callback

View File

@ -31,6 +31,8 @@ const customTypesMap = {
'AsyncIterator': 'https://github.com/tc39/proposal-async-iteration', 'AsyncIterator': 'https://github.com/tc39/proposal-async-iteration',
'bigint': 'https://github.com/tc39/proposal-bigint',
'Iterable': 'Iterable':
`${jsDocPrefix}Reference/Iteration_protocols#The_iterable_protocol`, `${jsDocPrefix}Reference/Iteration_protocols#The_iterable_protocol`,
'Iterator': 'Iterator':