New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

fsgod

Package Overview
Dependencies
Maintainers
1
Versions
85
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

fsgod

Secure file sharing, hosting, and transfer

  • 1.1.2
  • Source
  • npm
  • Socket score

Version published
Weekly downloads
9
Maintainers
1
Weekly downloads
 
Created
Source

FSGOD

A library for omnipotent control over your file system with ease

The only component thus far is the Virtual Directory Tree (VDT).

API

VDT

The VDT is a recursively created JavaScript object generated from a path you designate in your file system. The VDT makes it much easier to search files for content, write/append/prepend/delete files, create files and directories, and perform a multitude of other file system oriented tasks that would typically be repetitive and tricky to do dynamically and efficiently.

const fsgod = require('fsgod');

// fsgod.VDT and fsgod.VirtualDirectoryTree are aliases of the same function.
fsgod.VDT('./', (vdt) => {
    for ( var i = 0; i < vdt.content.length; i++ ){
        console.log(vdt.content[i].name);
    }
});

The above code should log the names of all the items in the directory it's currently in to the console

The vdt object that gets passed to the callback in fsgod.VDT is the Virtual Directory Tree. fsgod.VDT recursively walks all the way through the specified folder and builds each item into a JavaScript object and passes it back to the user in the callback.

VDT Directory Methods

vdt.search

Every directory in the VDT (including the root/target directory) has a search method. The search method uses regular expressions to locate any item containing the string passed in the first argument. The search method only searches in and under the directory your are performing the search on

fsgod.VDT('./', (vdt) => {
   vdt.search('test', { content: false }, (results) => {
       console.log('Found ' + results.length + ' items');
       for (var i = 0; i < results.length; i++){
           console.log(results[i].fullPath);
       }
   });
});

The above code should find file and directory names that contain the phrase 'test' and print their full paths.

You should notice the second argument takes an object which specifies search options; in the case of the above example, we don't want to look through file content for our search string, just names. This argument is optional and simply calling:

fsgod.VDT('./', (vdt) => {
    vdt.search('test', (results) => {
        console.log('Found ' + results.length + ' items');
        for (var i = 0; i < results.length; i++){
            console.log(results[i].fullPath);
        }
    });
});

Will return the search results without any filters.

The filter options you can give to the object are

FilterTypeUsage
contentBooleanDecides whether or not to search file content for results
namesBooleanDecides whether or not to search file/directory names for results
filesBooleanDecides whether or not to include files in search results
directoriesBooleanDecides whether or not to include directories in results
excludesArrayAny search results containing a string in the 'excludes' array will be removed

vdt.get

Because dynamically getting objects at variable depths can be very tricky, you can use the get method to easily navigate the VDT. For example, if you had a directory named Foo and a file named bar.txt inside it, you could use the following code to retrieve bar.txt

fsgod.VDT('./Foo', (vdt) => {
    var bar = vdt.get('bar.txt');
});

Chaining vdt.get

The get method can be chained either in the url passed into the first argument, or together in sequence. Lets say directory Foo has 3 directories underneath it, all named Foo and bar.txt is at the bottom of this tree. i.e. the local path to bar.txt is Foo/Foo/Foo/Foo/bar.txt. You could get it in two ways


// The static way
fsgod.VDT('./Foo', (vdt) => {
    var bar = vdt.get('Foo').get('Foo').get('Foo').get('bar.txt');
});

// The dynamic (right) way
fsgod.VDT('./Foo', (vdt) => {
    var bar = vdt.get('Foo/Foo/Foo/bar.txt');
});

vdt.mkdir

The mkdir method will create a directory for the vdt object and in the appropriate place in your file system. Lets say we wanted to create a directory named Foo, and then create a directory inside Foo named Bar. This operation can be made easy using the get method along side mkdir

fsgod.VDT('./', (vdt) => {
    vdt.mkdir('Foo', (err) => {
        if (err) throw err;
        vdt.get('Foo').mkdir('Bar', (err) => {
            if (err) throw err;
            // Foo/Bar now exists!
        });
    });
});

vdt.mkfile

The mkfile method will create a file for the vdt object and in the appropriate place in your file system. Lets say we wanted to create a directory named Foo, and then create a text file inside Foo named bar.txt

fsgod.VDT('./', (vdt) => {
    vdt.mkdir('Foo', (err) => {
        if (err) throw err;
        vdt.get('Foo').mkfile('bar.txt', (err) => {
            if (err) throw err;
            // Foo/bar.txt now exists!
        });
    });
});

You can also give the file content when you create it like so

fsgod.VDT('./', (vdt) => {
    vdt.mkfile('bar.txt', 'Hello World', (err) => {
        // vdt.get(bar.txt).content = Hello World
    });
});

VDT File Methods

vdt.write

The write method overwrites the content of the source file and VDT file object

Note: write and overwrite reference the same function

fsgod.VDT('./Foo', (vdt) => {
    var bar = vdt.get('bar.txt');
    // bar.content = 'Hello World'
    bar.write('Goodbye world', (err) => {
        if (err) throw err;
        // bar.content = 'Goodbye World'
    });
});

vdt.append

The append method adds content to the end of the source file content and VDT file object

fsgod.VDT('./Foo', (vdt) => {
    var bar = vdt.get('bar.txt');
    // bar.content = 'Hello '
    bar.append('World', (err) => {
        if (err) throw err;
        // bar.content = 'Hello World'
    });
});

vdt.prepend

The prepend method adds content to the begining of the source file content and VDT file object

fsgod.VDT('./Foo', (vdt) => {
    var bar = vdt.get('bar.txt');
    // bar.content = 'World'
    bar.prepend('Hello ', (err) => {
        if (err) throw err;
        // bar.content = 'Hello World'
    });
});

Virtual Directory

Each directory in the vdt callback is it's own Virtual Directory Tree with the same methods as the intial target directory

KeyTypeUsage
contentArrayAn array of both directories (VDT's) and files
nameStringThe name of the file or directory
typeStringWill let you know if its a directory or file
fullPathStringThe full path to the item
sizeIntegerSize of the item in bytes
searchFunctionSearch in and under the directory for a search string
getFunctionGets the specified object and makes it's methods easily available
mkdirFunctionCreates a directory in the VDT and your file system
mkfileFunctionCreates a file in the VDT and your file system

Virtual File

KeyTypeUsage
contentStringFile contents
nameStringFile name
typeStringWill let you know if it's a directory or file
fullPathStringThe full path to the item
sizeIntegerSize of the item in bytes
write/overwriteFunctionOverwrites the content of the file
appendFunctionAdds new content to the end of the file
prependFunctionAdds new content to the beginning of the file

Keywords

FAQs

Package last updated on 06 Feb 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc