1.0.1 • Published 8 years ago

fs-node v1.0.1

Weekly downloads
3
License
MIT
Repository
gitlab
Last release
8 years ago

FsNode

Build Status Dependencies DevDependencies Issue Count

Issue Count

A class that represents a file system folder or file entry, it implements a caching system and accessors for lazy information lookup. The whole thing is iterable using ES2015 Symbol.iterator and Generators.

Usage

Initialisation

const FsNode = require('fs-node');
var dir = new FsNode('.');
var dir2 = new FsNode('.');
var file = new FsNode('file_name');
var file2 = new FsNode('file_name_full_path');

if (dir === dir2 && file === file2) {
  console.log('true')
}

List files

var files = dir.paths; // [...]
var allFiles = dir.allPaths; // [...]

Iteration

// one level iteration
for(let entry of dir) {
  // do stuff
}


// recursive iteration
for(let entry of dir.all) {
  // do stuff
}

var file = new FsNode('some_file');

// files are not iterable ... right ?
for(let entry of file) {
  // no doubt
}

Properties

var file = new FsNode('some_file');

console.log(file.cache);// instance of Map
console.log(file.filename);
console.log(file.relativePath); // to process.cwd()
console.log(file.relativeDirname); // to process.cwd()
console.log(file.realpath); //cached
console.log(file.path);
console.log(file.dirname);
console.log(file.basename); // without extension
console.log(file.extname); // '.*'
console.log(file.isDirectory); // cached
console.log(file.isSymlinkedDirectory); // cached
console.log(file.isFile); // cached
console.log(file.isSymlinkedFile);
console.log(file.isSymbolicLink);
console.log(file.stat); // cached
console.log(file.lstat); // cached

Cache

var file = new FsNode('some_file');

console.log(file.stat); // cached
console.log(file.lstat); // cached
console.log(file.invalidate('stat').stat); // invalidate and force lookup using fs.stat
console.log(file.stat); // cached again
console.log(file.invalidate()); // clear cache and
console.log(file.lstat); // now use fs.lstat

console.log(FsNode.cache); // all FsNode instances
console.log(FsNode.realpaths); // instance of Map - path => realpath

Performance

This module includes very basic benchmarks that produce good results especially when it's question of repeated operations

node tests/bench.js

Tests

npm test

Contributions

I am waiting for your pull requests

Licence

The MIT License (MIT)

1.0.1

8 years ago

1.0.0

8 years ago