MCPcopy Index your code
hub / github.com/baudehlo/node-fs-ext

github.com/baudehlo/node-fs-ext @v2.1.1

Chat with this repo
repository ↗ · DeepWiki ↗ · release v2.1.1 ↗ · + Follow
46 symbols 85 edges 11 files 1 documented · 2%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

fs-ext

Build Status Coverage Status Windows Status

Extras not included in Node's fs module.

Note:

  • From v2.0.0 onwards, module doesn't override fs and constants Node.js core modules. Instead import functions and constants directly:

js const {flock, constants} = require('fs-ext'); // or const fsExt = require('fs-ext'); // fsExt.flock // fsExt.constants

  • From v1.0.0 onwards, fs.utime and fs.utimeSync have been removed. Use fs.utimes and fs.utimesSync instead.

Installation

Install via npm:

npm install fs-ext

Usage

fs-ext imports all of the methods from the core 'fs' module, so you don't need two objects.

const fs = require('fs');
const {flock} = require('fs-ext');

const fd = fs.openSync('foo.txt', 'r');
flock(fd, 'ex', (err) => {
    if (err) {
        return console.error("Couldn't lock file");
    }
    // file is locked
});

For an advanced example checkout example.js.

API

flock(fd, flags, [callback])

Asynchronous flock(2). No arguments other than a possible error are passed to the callback. Flags can be 'sh', 'ex', 'shnb', 'exnb', 'un' and correspond to the various LOCK_SH, LOCK_EX, LOCK_SH|LOCK_NB, etc.

NOTE (from flock() man page): flock() does not lock files over NFS. Use fcntl(2) instead: that does work over NFS, given a sufficiently recent version of Linux and a server which supports locking.

flockSync(fd, flags)

Synchronous flock(2). Throws an exception on error.

fcntl(fd, cmd, [arg], [callback])

Asynchronous fcntl(2).

callback will be given two arguments (err, result).

The supported commands are:

  • 'getfd' ( F_GETFD )
  • 'setfd' ( F_SETFD )
  • 'setlk' ( F_SETLK )
  • 'getlk' ( F_GETLK )
  • 'setlkw' ( F_SETLKW )

Requiring this module adds FD_CLOEXEC to the constants module, for use with F_SETFD, and also F_RDLCK, F_WRLCK and F_UNLCK for use with F_SETLK (etc).

File locking can be used like so:

const {fnctl, constants} = require('fs-ext');

fcntl(fd, 'setlkw', constants.F_WRLCK, (err) => {
    if (!err) {
        // Lock succeeded
    }
});

fcntlSync(fd, flags)

Synchronous fcntl(2). Throws an exception on error.

seek(fd, offset, whence, [callback])

Asynchronous lseek(2).

callback will be given two arguments (err, currFilePos).

whence can be 0 (SEEK_SET) to set the new position in bytes to offset, 1 (SEEK_CUR) to set the new position to the current position plus offset bytes (can be negative), or 2 (SEEK_END) to set to the end of the file plus offset bytes (usually negative or zero to seek to the end of the file).

seekSync(fd, offset, whence)

Synchronous lseek(2). Throws an exception on error. Returns current file position.

Core symbols most depended-on inside this repo

expect_value
called by 15
tests/test-fs-seek.js
expect_ok
called by 12
tests/test-fs-flock.js
expect_ok
called by 9
tests/test-fs-fcntl.js
display_memory_usage_now
called by 6
tests/test-fs-seek_stress.js
expect_errno
called by 6
tests/test-fs-seek.js
display_memory_usage_now
called by 5
tests/test-fs-flock_stress.js
getCurrentFileSize
called by 3
example.js
expect_errno
called by 3
tests/test-fs-flock.js

Shape

Function 37
Class 6
Method 3

Languages

TypeScript67%
C++33%

Modules by API surface

fs-ext.cc15 symbols
tests/worker-test.js6 symbols
tests/test-fs-seek_stress.js5 symbols
tests/test-fs-flock_stress.js5 symbols
tests/test-fs-seek.js4 symbols
tests/test-fs-flock.js3 symbols
tests/test-fs-fcntl.js3 symbols
fs-ext.js3 symbols
tests/test-fs-statvfs.js1 symbols
example.js1 symbols

For agents

$ claude mcp add node-fs-ext \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact