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

concurrent-file-store

v0.5.1

Published

Multi-process safe simple data store, using the filesystem for storage

Downloads

4

Readme

concurrent-file-store Build Status npm version Dependency Status

Multi-process safe simple data store, using the filesystem for storage

Usage

import cfs from 'concurrent-file-store';

const store = cfs('path/to/store/folder');

// Create a new object
store.create({
        count: 0;
    })
    .then(console.info)  // Object with id field
    .catch(console.error);


// Read an object
store.read('fg45f-342f')
    .then(console.info) // object
    .catch(console.error);


// Update an object
store.update('fg45f-342f')
    .then(obj => {
        return obj.count++;
    })
    .then(store.save)
    .catch(error => {
        console.error(error);
        store.free('fg45f-342f');
    });


// Delete an object
store.delete('fg45f-342f')
    .catch(console.error);


// List object ids
store.list()
    .then(console.info)  // Array of ids
    .catch(console.error);


// Filter the store
store.filter(obj => obj.name === 'Bob' && obj.count > 3)
    .then(console.info)  // Array of Objects
    .catch(console.error);

Install

npm install concurrent-file-store --save

API

  • const store = new cfs(storePath[, options]) - Creates a store instance

    • storePath Path to a filesystem directory to contain the store's files

    Options

    • idField: id Property to use for the Identity property of each stored object
    • idFunction: shortid.generate Function used to generate a unique id for each object added to the store. function(object)
    • lockTimeout: 30000 How long (in miliseconds) an operation with wait to acquire a lock on an object. Locks are assumed to have expired after 10 * lockTimeout

    Returns a store instance (see below)

  • store.create(object) - Creates an object in the store, giving it a unique Identity property

    • object A JSON serialisable object to save in the store

    Returns a Promise with the stored object with the added Identity property

  • store.read(id) - Reads an object from the store

    • id The Identity property value for the object to retrive

    Returns a Promise with the stored object

  • store.update(id) - Update an object in the store

    • id The Identity property value for the object to update

    Returns a Promise with the stored object, to be used with save or free

  • store.save(object) - Used with update to save an updated object

    • object A JSON serialisable object to save in the store

    Returns a Promise with the stored object

  • store.free(id) - Used with update to release a lock on an object

    • id The Identity property value for the object to free

    Returns a Promise

  • store.delete(id) - Delete an object from the store

    • id The Identity property value for the object to delete

    Returns a Promise

  • store.list() - List the Identity values of all the objects in the store

    Returns a Promise with an array of object Indentities

  • store.filter(func) - Filter the store and return an array of matching objects

    • func - Function to filter the objects by

    Returns a Promsie with an array of matching objects

Test

npm install
npm test