npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

easynodes

v1.0.1

Published

This is a Node.js module that allows you to do things really easily

Readme

Easynodes 1.0.1

Installation

npm install easynodes

Usage

First require the package

var easynodes = require('easynodes');

Then init the package if you don't everything else that you do will throw an error. The syntax is as below

easynodes.init(verbose, custom-prefix)
//Verbose must be boolean
//Custom-prefix must be a string or not defined

Then here's how to use the package.

Logging

Here's how to change the custom prefix:

easynodes.logging.changeprefix(new-prefix)

Here's how to disable verbose

easynodes.logging.disableverbose()

Here's how to enable verbose

easynodes.logging.enableverbose()

HTTP

Here's how to make an http request syncronously. For this you'll be required to use an async function in order to use await to wait for the request to finish.

var run = async function() {
    //Get response
    var response = await easynodes.http.get.sync("url");
    console.log(response);
}
//Launch that
run();

Here's how to make an http request asyncronously.

easynodes.http.get.async("url", function(request) {
    //Defining a variable to receive the data
    var data = "";
    //Set an event for when data is received
    request.on("data", function(chunk) {
        //Add the chunk to the data variable
        data += chunk;
    });
    //Set an event for when the request is finished
    request.on("end", function() {
        console.log(data);
    });
    
    //You could also abort the request like this
    request.abort();
    //
    //Or you can get the http code as this
    console.log(request.statusCode);
    //
    //And you can remove all set events for the request like this
    request.removeEvents();
});

You can also create an http server like this

easynodes.http.newServer(function(requestHandler){
    //You are not required to specify the authorised ip but you're required to specify the port
    //
    //You can get the ip of the client as this:
    console.log(requestHandler.ip);
    //You can get the url of the request as this:
    console.log(requestHandler.url);
    //You can get the method of the request as this:
    console.log(requestHandler.method);
    //You can get the headers of the request as this:
    console.log(requestHandler.headers);
    //You can write text to request as this (Note that the httpCode and writeHead are optional and can only be set once per request)
    requestHandler.write("Hello ", 200, {"Content-Type": "text/plain", "Access-Control-Allow-Origin": "*"});
    //You can end the request as this (You can also set httpcode and writeHead here but we already did that above also you can just end the request without any data)
    requestHandler.end("World!");

}, port, ip)

Websocket

Here's how to create a websocket client

easynodes.websocket.newClient("adress", function(client){
    //When this code is ran it means that the client is opened
    //You can send data to the server like this
    client.send("Hello");
    //You can set an event for when the client receives data like this
    client.onmessage(function(data){
        //You can get the data like this
        console.log(data);
    });
    //You can set an event for when the client is closed like this
    client.onclose(function(){
        console.log("Client closed");
    });
    //You can close the client like this
    client.close();
    //You can remove all events for the client like this
    client.removeEvents();
})

Here's how to create a websocket server

easynodes.websocket.newServer(port, function(client){
    //When this code is ran it means that a new client connected
    //You can send data to the client like this
    client.send("Hello");
    //You can set an event for when the client receives data like this
    client.onmessage(function(data){
        //You can get the data like this
        console.log(data);
    });
    //You can set an event for when the client is closed like this
    client.onclose(function(){
        console.log("Client closed");
    });
    //You can close the client like this
    client.close();
    //You can remove all events for the client like this
    client.removeEvents();
})

Filesystem

Here's how to read a file syncronously

var data = easynodes.files.read.sync("path");
console.log(data);

Here's how to read a file asyncronously

easynodes.files.read.async("path", function(data){
    console.log(data);
});

Here's how to write to a file syncronously

easynodes.files.write.write.sync("path", "data");

Here's how to write to a file asyncronously

easynodes.files.write.write.async("path", "data", function(){
    console.log("Done");
});

Here's how to append to a file syncronously

easynodes.files.write.add.sync("path", "data");

Here's how to append to a file asyncronously

easynodes.files.write.add.async("path", "data", function(){
    console.log("Done");
});

Here's how to get the path of the current directory

var path = easynodes.files.getDirname();
console.log(path);

Here's how to delete a file/folder syncronously

easynodes.files.delete.sync("path");

Here's how to delete a file/folder asyncronously

easynodes.files.delete.async("path", function(){
    console.log("Done");
});

Here's how to copy a file/folder syncronously

easynodes.files.copy.sync("path", "new-path");

Here's how to copy a file/folder asyncronously

easynodes.files.copy.async("path", "new-path", function(){
    console.log("Done");
});

Here's how to move a file/folder syncronously

easynodes.files.move.sync("path", "new-path");

Here's how to move a file/folder asyncronously

easynodes.files.move.async("path", "new-path", function(){
    console.log("Done");
});

Here's how to create a folder syncronously

easynodes.files.create.folder.sync("path");

Here's how to create a folder asyncronously

easynodes.files.create.folder.async("path", function(){
    console.log("Done");
});

Here's how to create a file syncronously

easynodes.files.create.file.sync("path", "optional-data");

Here's how to create a file asyncronously

easynodes.files.create.file.async("path", "optional-data", function(){
    console.log("Done");
});

Here's how to rename a file/folder syncronously

easynodes.files.rename.sync("path", "new-path");

Here's how to rename a file/folder asyncronously

easynodes.files.rename.async("path", "new-path", function(){
    console.log("Done");
});

Here's how to check if a file/folder exists syncronously

var exists = easynodes.files.exists.sync("path");
console.log(exists);

Here's how to check if a file/folder exists asyncronously

easynodes.files.exists.async("path", function(exists){
    console.log(exists);
});

Here's how to get the type of the path (file or folder) syncronously

var type = easynodes.files.getTypeOf.sync("path");
console.log(type);

Here's how to get the type of the path (file or folder) asyncronously

easynodes.files.getTypeOf.async("path", function(type){
    console.log(type);
});

Here's how to get the size of a file/folder in the most humman readable format possible syncronously

var size = easynodes.files.getSize.sync("path");
console.log(size);

Here's how to get the size of a file/folder in the most humman readable format possible asyncronously

easynodes.files.getSize.async("path", function(size){
    console.log(size);
});

Here's how to get the permissions of a file/folder as a number syncronously

var permissions = easynodes.files.getPermissions.asNumber.sync("path");
console.log(permissions);

Here's how to get the permissions of a file/folder as a number asyncronously

easynodes.files.getPermissions.asNumber.async("path", function(permissions){
    console.log(permissions);
});

Here's how to get the permissions of a file/folder as a string syncronously

var permissions = easynodes.files.getPermissions.asString.sync("path");
console.log(permissions);

Here's how to get the permissions of a file/folder as a string asyncronously

easynodes.files.getPermissions.asString.async("path", function(permissions){
    console.log(permissions);
});

Here's how to set the permissions of a file/folder syncronously

//The permissions must be a number
easynodes.files.setPermissions.sync("path", permissions);

Here's how to set the permissions of a file/folder asyncronously

//The permissions must be a number
easynodes.files.setPermissions.async("path", permissions, function(){
    console.log("Done");
});

Dataquest

My database module dataquest is integrated in easynodes you can use it as this: To create a database use this:

var database = easynodes.dataquest.createDatabase();

To load a database use this:

var database = easynodes.dataquest.load("path");

To save a database use this:

easynodes.dataquest.save("path", database);

To set an item in the database use this:

database.set("item", "value");

To get an item in the database use this:

var value = database.get("item");

To delete an item in the database use this:

database.delete("item");

This is for dataquest 1.0.0

Line-current

My module line-current which is for getting the current line in the terminal is integrated in easynodes you can use it as this: To get the current line use this (an async function is required for that in order to use await to wait for the current line to be gotten):

var run = async function() {
    var currentLine = await easynodes.line_current.get();
    console.log(currentLine);
    //Will return {"current-line": %current line%, "processtime": %time it took to get current line%}
}
run();
//If you put any code that edits the console here everything will fall appart.

To get the current line formatted use this (async function is also required for that):

var run = async function() {
    var currentLine = await easynodes.line_current.get(true);
    console.log(currentLine);
    //Will return:
    //{
    //    "current-line": %current line%,
    //    "processtime": %time it took to get current line%,
    //}
}
run();
//If you put any code that edits the console here everything will fall appart.

To just get the current line use this (async function is also required for that):

var run = async function() {
    var currentLine = await easynodes.line_current.get();
    console.log(JSON.parse(currentLine)["current-line"]);
    //Will return %current line%
}
run();
//If you put any code that edits the console here everything will fall appart.

This is for line-current 1.0.0

Credits

  • Credit to me (willmil11)
  • Credit to the ws module creator(s) used for easynodes websocket features
  • Credit to the fs-extra module creator(s) used for easynodes filesystem features

Goals

  • [ ] Add encryption features

Suggestions

If you have any suggestions please open an issue on github.

Bugs

If you find any bugs please open an issue on github.

Changelog

1.0.1

  • Little fix in the readme

1.0.0

  • Initial release