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

firestorable

v2.2.1

Published

Mobx observable wrapper for firebase firestore database.

Downloads

57

Readme

Firestorable

A strong typed observable wrapper using mobx for firebase firestore database.

Cloud Build Coverage Status

Installation

npm install firestorable

Firestorable - example applications

There is a separate github repo with example applications to demonstrate how to use firestorable with react and mobx.

example applications

How to use: basic example

Create an instance of a firestorable collection:

const db = firebase.firestore();

// create a type or interface that matches the data in the firestore collection
interface IRegistration {
    time: number;
    description: string;
}

// use the interface as generic type when creating the firestorable collection
const registrationCollection = new Collection<IRegistration>(
  db,
  "registrations", // name of your firestore collection
);

And use that instance in a mobx observable react component:

const RegistrationsList = observer(() =>
      <div className="registrations-list">
        {
            // Each item in the docs property of the create Collection has a strong typed (IRegistration) data property representing the document data from the firestore 'registrations' collection.
            registrationCollection.docs
                .map(doc => <div key={doc.id}>
                    <div>Time: {doc.data.time}</div>
                    <div>Description: {doc.data.description}</div>
                </div>)
        }
      </div>
  );
});

This RegistrationsList component will now rerender whenever changes occur in the 'registrations' collection of your firestore database.

Contributing

These instructions will get you a copy of the project for development and testing purposes.

Prerequisites

node

I assume you already have node with npm installed.

firebase-tools

You need to have firebase-tools installed globally to run the firebase emulator:

npm i -g firebase-tools

java

java is required to run the tests with a firestore emulator.

Install java on linux (debian, ubuntu)

sudo apt-get install openjdk-8-jre

Installing

  1. Clone this repo
git clone https://github.com/thdk/firestorable.git
  1. Step into the new repo directory
cd firestorable
  1. Install dependencies
npm install
  1. Build
npm run build

Testing

Before running the tests, you need to start to firestore emulator:

 npm run emulator

Keep the emulator running in one terminal window and run tests in another terminal:

 npm run test

Note: after running npm run test you can run npm run coverage to view the code coverage of the last ran tests.

Note: By default emulator will use port 8080. If you need to use another port, then you have to set the port number in firebase.json.

To make sure the tests run using the port set in firebase.json, run your tests a below:

firebase emulators:exec --only firestore jest

Above command will start the emulator, run 'jest', and stop the emulator after the tests.

Built With

  • mobx - Simple, scalable state management
  • typescript - Javascript that scales
  • jest - Javascript testing framework
  • firebase - App development platform
  • npm - Package manager
  • google cloud build - Build, test, and deploy on googles serverless CI/CD platform

Authors

  • Thomas Dekiere - Initial work - thdk

License

This project is licensed under the MIT License - see the LICENSE.txt file for details