JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 15
  • Score
    100M100P100Q54175F

A set of utilities for fast prototyping.

Package Exports

  • toolset

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (toolset) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Toolset

Toolset is a set of utilities that makes it a lot faster and easier to do the things you need all the time in your projects.

It is split into modules.

Install

npm install toolset

var toolset = require('toolset');

files

Read non binary files and urls

// Read a local file
toolset.file.read('file.txt', function(content) {
    // content === false if the file doesn't exist.
});

// Read a remote file (GET)
toolset.file.read('http://www.server.com/file', function(content) {
    // content === false if the server's response code is not 200.
});

Read a JSON file (and get the output as object already)

// Read a local JSON file
toolset.file.toObject('file.json', function(obj) {
    // content === false if the file doesn't exist.
});

// Read a remote JSON file (GET)
toolset.file.read('http://www.server.com/file.json', function(obj) {
    // content === false if the server's response code is not 200.
});

Read a binary file

// Read a local file
toolset.file.readBinary('logo.jpg', function(content) {
    // content === false if the file doesn't exist.
});

// Read a remote file (GET)
toolset.file.readBinary('http://www.server.com/logo.jpg', function(content) {
    // content === false if the server's response code is not 200.
});

Append to a file

toolset.file.append('file.txt', 'some content', function() {
    // done
});

Write/create a file

toolset.file.write('file.txt', 'some content', function() {
    // done
});

Write/create a JSON object to a file

toolset.file.writeJson('file.json', {hello:'world'}, function() {
    // done
});

Delete a file

toolset.file.removeFile('file.json', function() {
    // done
});

Copy a file

toolset.file.copy('file.txt', 'copy.txt', function() {
    // done
});

Test if a file exists

toolset.file.exists('file.txt', function(exists) {
    if (exists) {
        // file exists
    } else {
        // fiel doesn't exist
    }
});

List the files in a directory (including subdirectories)

// List all the JS files
toolset.file.listFiles('/home', 'js', function(files) {
    // ['/home/file.js', '/home/subdirecotry/somefile.js', ...]
});

// List any file
toolset.file.listFiles('/home', false, function(files) {
    // ...
});

List the files with a specific filename (including subdirectories)

// List any file
toolset.file.listByFilename('./bower_components', 'bower.json', function(files) {
    // ...
});

List the files in a directory (not including subdirectories)

toolset.file.getDirContent('/home', function(files) {
    // ...
});

Test if it's a dir or a file

var isDir = toolset.file.isDir('something');

Create a path (create all the directories required)

toolset.file.createPath('/hello/world/test/', function() {
    // ...
});

Delete a directory and its content

toolset.file.removeDir('/some_directory', function() {
    // ...
});

Stack

If you want to get out of the callback nightmare, you'll need to organize your code better. Some people use promises, but I personnaly prefer the stack approach to the issue.

For example, let's say you want to read the files 0.js, 1.js, 2.js ... 9.js and concatenate them in a single file:

    // Create a new stack instance
    var stack = new toolset.stack();
    
    // Create a variable to store the files
    var concatenated = "";
    
    for (i=0;i<10;i++) {
        stack.add(function(params, callback) {
            toolset.file.read(params.i+'.js', function(content) {
                concatenated += content;
                
                // We're done processing, we call the callback function to let the stack know we are done with that particular task.
                callback();
            });
        }, {i: i});
    }
    
    // Now that we have the tasks setup, we execute them
    // The callback function in process() will get execute only once all of the tasks are finished.
    stack.process(function() {
        // Write the file
        toolset.file.write('concatenated.js', concatenated);
    }, false);  // false = sync. true = async.

Archiving

One need that keep coming back in many project is the ability to archive and then extract files.

[coming soon]