Latest Socket ResearchMalicious Chrome Extension Performs Hidden Affiliate Hijacking.Details
Socket
Book a DemoInstallSign in
Socket

dad

Package Overview
Dependencies
Maintainers
1
Versions
15
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

dad

Data micro-framework

Source
npmnpm
Version
0.4.3
Version published
Weekly downloads
9
80%
Maintainers
1
Weekly downloads
 
Created
Source

Dad

NPM version build status Test coverage

Composable data stores for node.js and the browser. Dad's small ~300 SLOC codebase implements only methods that are common in most datastores. This includes models, validation and persistance.

No assumptions about your backend are made. Through adapters you can synchronize your data with any backend. Official adapters are a WIP.

Installation

$ npm i --save dad

Overview

var store = require('dad');
var books = store('books');

// attributes
books
  .settings({baseUrl: 'api.mysite.com/books'})
  .schema({
    title: {type: 'string', required: true},
    author: {type: 'string', required: true},
    pages: {type: 'number'}
  });

// transactions
books.add({title: 'Ferrets', author: 'Tobi', pages: 12});
books.update({cid: 0, title: 'Lizards', author: 'Tobi', pages: 12});

Functions

initializevalidatetransactpersist
.schema().validate().add().push()
.settings().allAccountedFor().get().fetch()
.adapters().update()
.remove()

Events

changesync
.add().push()
.get().fetch()
.update()

API

dad()

Create a named store. Takes a {String} name as an argument.

var store = require('dad');
var books = store('books');
var chapters = store('chapters');

.schema()

Define the schema for the store. Takes an {Object} schema as an argument.

books
  .schema({
    title: {type: 'string', required: true},
    author: {type: 'string', required: true},
    pages: {type: 'number'}
  });

.settings()

Define settings to be used. Settings can be used to store synchronization url's and auth tokens. Takes an {Object} opts as an argument.

books.settings({baseUrl: 'api.mysite.com/books'});

.validate()

Validate a value against a key in the schema. Takes a {String} key and a {String} value as arguments.

books.validate('name', 'Tobi');

.allAccountedFor()

Check if an object accounts for all properties demanded by the schema. Takes an {Object} record as an argument.

books.allAccountedFor({foo: 'bar', baz: 'bin'});

Transactions

.add()

Save a record or an array of records to the store. Records get a {Number} cid assigned automatically. Emits an add event when completed. Takes an {Object} record or an array of records as an argument.

chapters.add([
  {name: 'chapter 1', pages: 2},
  {name: 'chapter 2', pages: 6},
  {name: 'chapter 3', pages: 4}
]);

books.add({
  title: 'Fatherly jokes',
  author: 'Tobi',
  pages: 12,
  chapters: [0]
});

.get()

Get a record from the store at cid. Takes a {Number} cid as an argument.

var fatherlyJokes = books.get(0);
// -> {
//      cid: 0,
//      title: 'Fatherly jokes',
//      author: 'Tobi',
//      pages: 12,
//      chapters: [{
//        cid: 0,
//        name: 'chapter 1',
//        pages: 2
//      }]
//    };

.update()

Update a record with a cid. Emits an update event when completed. Takes an {Object} record as an argument. If the record has no cid provided, an error will be thrown.

chapters.update({
  cid: 4,
  title: 'Fatherly jokes',
  author: 'Tobi',
  pages: 12,
  chapters: [0]
});

.remove()

Remove a record from the store at cid. Emits a remove event when completed. Takes a {Number} cid as an argument.

chapters.remove(2);

Persistance

.push()

Persist the record changes to the backend. Can be provided with optional HTTP headers. Emits a push event when completed, else it emits an error event. Takes an optional {Object} configuration as an argument.

books.push();

books.push({
  API_KEY: 'mysecretkey',
  ANOTHER_HEADER: 'some value'
});

.fetch() [wip]

Fetch records from the server over HTTP. Can be provided with optional HTTP headers. Emits a fetch event when completed, else it emits an error event. Takes an optional {Object} configuration as an argument.

books.fetch();

books.fetch({
  API_KEY: 'mysecretkey',
  ANOTHER_HEADER: 'some value'
});

References

License

MIT © Yoshua Wuyts

Keywords

data

FAQs

Package last updated on 21 Aug 2014

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts