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 🙏

© 2024 – Pkg Stats / Ryan Hefner

afimali

v0.0.3

Published

Another file manupulate library for nodeJS.

Downloads

3

Readme

afimali

Another file manupulate library for nodeJS.

Please feel free to raise pull requests on github.

Install

npm install afimali

Basic Usage

const lib=require("afimali");

async function start()
{
    let file=await lib.open("./test.bin");                      //Open a file to edit.
    let win=await file.openWindow(0, [5, 5]);                   //Open a 5x5 matrix as a window.
    console.log(await win.at(0, 0));                            //Read data from the window at 0,0.
    await win.at(0, 0, 97);                                     //Write 97 to window at 0,0.
    await file.save();                                          //Save the file to storage.
}


start();

Classes & Methods

  • afimali.open(path)

    returns an instance of File which should opened the file on the path.

    • path String, path to the file
  • Class File

    This is what you really need to manipulate your file.

    • Properties

      • closed Boolean True if the file is already closed.
      • openedWindows Array<Window> The opened windows on the file.
    • Methods

      • stat() : Promise<Stat>

        returns the file stat info.

      • openWindow(offset, winSize) : Promise<Window>

        return a new window or an opened window from openedWindows.

        • offset Number the offset on the file.
        • winSize Array<Number> an 1x2 array to indicate the size of the window.
      • undo() : Promise Undo a writing operation.

      • save(): Promise

        Save the file, this will clear the operation history. Means that after you call this method, you're no long able to use undo method before you do another write operating.

      • close() : Promise

        Close the file, close property will be set as true, please do not call any another method on this object after calling this.

  • Class Window

    A class the you use to modify the content of a file.

    • Properties
      • buffer Buffer the content buffer.
      • size Array<Number> the size of the window.
      • offset Number offset on file.
      • length Number length of buffer.
      • file File The file which this window opened on.
    • Methods
      • clone() : Promise<Window>

        returns a cloned window of this.

      • at(x, y, [data]) : Promise<Number>

        if data is not passed, this method only returns the value on the position, if passed, the value on the cell will be replaced by data.

        • x Number x position of cell.
        • y Number y position of cell.
        • data Number data which will be set into the cell.
      • disassemble(...slices) : Promise<Buffer>

        returns a buffer whichi contains slices' data.

        • slice Array<Number> [x, y, length]
      • close() : Promise

        close window

Additional Files

Afimali supports reading structure from below file formats:

  • GIF
  • PNG

The files above are derived from File. Use openWindow to manipulate them.

Example

const lib=require("afimali");

async function start()
{
    let file=await lib.open("./test.gif", lib.manipulators.GifFile);
    console.log(file);
}


start();

Documents

Please visit wiki page at https://github.com/malpower/afimali/wiki for docs.