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

bobtail-storage

v1.1.1

Published

A package integrating reactive-coffee with HTML5 session and local storage.

Downloads

3

Readme

reactive-storage

reactive-storage is a simple library integrating reactive-coffee with the HTML5 Web Storage API. reactive-storage exposes two objects, rxStorage.local and rxStorage.session, which map to window.localStorage and window.sessionStorage, respectively. Under the hood, these are powered by two reactive SrcMap objects.

In addition, reactive-storage automatically serializes and deserializes numbers, booleans, nulls, and JSON objects and arrays for storage and retrieval.

Installation

To install reactive-storage, simply run bower install reactive-storage.

API

Both rxStorage.local and rxStorage.session have the same API. Each supports the following methods from the Web Storage API. The only difference is that, unlike with the web storage API, these methods work with JSON objects. That is, you can store and retrieve arrays and objects, and reactive-storage will automatically handle serializing and deserializing for you.

getItem(k)

getItem is safe to call outside of a reactive bind context, as it wraps the underlying call in an rx.snap.

setItem(k, v)

removeItem(k)

clear()

getItemBind

This is the most important function in reactive-storage. Whereas getItem returns the value stored in k, getItemBind returns an rx.DepCell bound to the value stored in k. This means that if the value stored in k changes, the DepCell will automatically update.

    userCell = window.rxStorage.session.getItemBind 'username'
    rx.autoSub userCell.onSet, ([o, n]) ->
        s = ""
        if o then s += "Goodbye, #{o}! "
        if n then s += "Welcome, #{n}!"
        if s then alert s
    window.rxStorage.session.setItem 'username', 'Joe'
    # output: "Welcome, Joe!"
    window.rxStorage.session.setItem 'username', 'Fred'
    # output: "Goodbye, Joe! Welcome, Fred!"
    window.rxStorage.session.setItem 'username', 'Bob'
    # output: "Goodbye, Fred! Welcome, Bob!"
    window.rxStorage.session.removeItem 'username'
    # output: "Goodbye, Bob! "

If the item is removed, the value of the DepCell is set to undefined.

Listeners

In addition, the storage objects expose the onAdd, onRemove, and onChange events from their underlying SrcMap objects, allowing you to add listeners to these events:

    rx.autoSub window.rxStorage.session.onAdd, ([k, n]) -> alert "Added #{k}: #{v} to session storage!"
    window.rxStorage.session.addItem("answer", 42)
    # output: "Added answer: 42 to session storage!"

Storage events

The Web storage API supports events for storage changes from other browser tabs. reactive-bootstrap listens for storage events, and when one is received, it updates itself accordingly.

Creator

Richard Mehlinger

Copyright and license

Code and docs released under the MIT license.