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

rekord-session

v1.5.2

Published

Adds mass changes & discards to Rekord

Downloads

13

Readme

Rekord Session

Build Status devDependency Status Dependency Status License Alpha

Rekord is a javascript REST ORM that is offline and real-time capable.

rekord-session enables you to create an experience for your user where they can make any number of changes to various models and their related models and they can perform a mass "Save" or decide to do a mass "Cancel" of changes. rekord-session works seemlessly with existing code, capturing all creations, updates, and removes and simulating them until the session is saved or discarded.

Installation

The easiest way to install rekord-session is through bower via bower install rekord-session.

  • rekord-session.js is 14.0k (3.0kb gzipped)
  • rekord-session.min.js is 7.2k (2.2kb gzipped)

Example


// The object we start with
var project = Project.boot({
  id: 1,
  name: 'My Project',
  lists: [
    {
      id: 2,
      name: 'Grocery List',
      items: [
        {
          id: 3,          
          name: 'Milk'
        },
        {
          id: 4,
          name: 'Bread'
        }
      ]
    }
  ]
});

var sess = new Session();

// Watch this object, and its relations (and sub relations)
sess.watch( project, {
  lists: {
    items: true
  }
});

// You can watch a list and all models - you can also specify relations here.
// This doesn't have an effect since this collection is already being watched
// because of the previous statement
sess.watchCollection( project.lists );

// You can create an item and since the List(2) is being watched, this will be
// associated with the session and won't be saved until session.save
Item.create({
  list_id: 2,
  name: 'Taco Seasoning'
});

// Remove an item
Item.get( 4 ).$remove();

// Change something
List.get( 2 ).name = 'My Grocery List';

// The session has changes (an insert, remove, and update)
sess.hasChanges();

// If rekord-validation is added, require valid models
sess.setValidationRequired( true );

// Apply the pending changes and return a promise that resolves when all changes
// are applied.
sess.save();

// Undo all changes (remove created, add the remove back, and restore the list name to its previous value)
sess.discard();

// All changes are ignored by the session after this, they are executed normally
sess.disable();

// You must destroy the session to unregister all the model & collection listeners
// and MOST importantly a model/collection can only be related to a single active
// session at a time.
sess.destroy();

// Forget about this model and all related models
sess.unwatch( project );