Lightweight storage wrapper

Maintainers

👁 alternatex

Package info

github.com/alternatex/store

Homepage

Language:JavaScript

pkg:composer/alternatex/store

Statistics

Installs: 42

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

1.0.11 2013-11-15 02:47 UTC

Requires (Dev)

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT 78e7aeb99641bd58c922f1b63289c5d0388880c9

  • Gianni Furger <gianni.furger.woop@gmail.com>

This package is not auto-updated.

Last update: 2026-06-16 00:00:41 UTC


README

👁 Build Status

A lightweight datastore wrapper providing CRUD operations for arbitrary objects.

Index

Quickstart

Embedding

Require.js

require(["store"], function(Store) {
 // ...
});

HTML

<script src="src/client/store.js"></script>

Client API

Store

Configure

Defaults are configured as follows:

Store.configure({ 
 url: "http://localhost/datastore.php", 
 ttl: 3600
});

Note

configure() alters the prototype object, hence modifications are propagated to instances on property level given that the respective instance properties have not been modified previously.

Create

var objectStore = new Store({ namespace: 'object' });

Object

Create

Preset
var object = objectStore.create({ 
 country: 'USA', 
 firstname: 'Stephen', 
 lastname: 'Colbert' 
}); 
Barebone
var object = objectStore.create(); 
object.set('country', 'USA');
object.set('firstname', 'Jon'); 
object.set('lastname', 'Stewart'); 

Read

List
objectStore.list();
Single
objectStore.get('8c0c1ff0-d0fe-38b7-376a-b0b1d53bd557');

Update

Instance
object.update();
Datastore
objectStore.update(object);

Delete

Instance
object.remove();
Datastore
objectStore.remove(object);

Summary

<script src="src/client/store.js"></script>
<script>
(function(){

 // local variables
 var object, objectId, objectStore, objects;

 // configure store defaults 
 Store.configure({ 
 url: "http://localhost/store/examples/server.php", 
 ttl: 3600
 });

 // create new store
 objectStore = new Store({ namespace: 'object' });

 // create new store bound object
 object = objectStore.create({ 
 country: 'US', 
 firstname: 'Stephen', 
 lastname: 'Colbert' 
 });
 
 // update on insert 
 objectStore.update(object).done(function(object){
 
 // wrap json object
 object = objectStore.create(object);

 // update properties
 object.set('firstname', 'Jon');
 object.set('lastname', 'Stewart');

 // extract
 objectId = object.get('id');

 // update object
 objectStore.update(object).done(function(object){ 

 // fetch object w/previously retrieved objectId
 objectStore.get(objectId).done(function(object){

 // wrap json object
 object = objectStore.create(object);

 // say hi
 console.log(object.get('firstname') + " " + object.get('lastname'));
 });
 });
 });

 // collect update promises
 objects = [];

 // create some objects
 Store.times(10, function(count){

 // store update promises
 objects.push(objectStore.create({ 
 title: 'No.' + count, 
 abstract: 'Lorem Ipsum [...]', 
 text: 'Lorem Ipsum Si Amet They Say', 
 author: 'me', 
 lastmod: new Date().getTime()
 }).update());
 });

 // when all objects have been updated
 Store.when(objects).done(function(objects){
 
 // fetch all objects 
 objects = objectStore.list();
 
 // print when object have been retrieved
 Store.when(objects).done(function(objects){

 // log each
 objects.forEach(function(object, index){
 console.log(index, object);
 });
 }); 
 });

 // fetch object 
 object = objectStore.get(objectId);

 // process fetched object
 Store.when(object).done(function(object){ 

 // execute on success 
 console.info("done", object); 

 }).fail(function(objects){ 

 // execute on fail
 console.error("fail", objects); 

 }).always(function(objects){ 

 // always execute this block
 console.log("always", objects);

 });

})();
</script>

<!-- example html input -->
<form method="POST" action="//localhost/store/examples/server.php/resources/update" enctype="multipart/form-data"> 
 <input type="hidden" name="namespace" value="resources"/>
 <input type="hidden" name="action" value="update"/>
 <input type="hidden" name="instance[type]" value="type"/>
 <input type="hidden" name="instance[name]" value="name"/>
 <input type="hidden" name="instance[option][key]" value="key"/>
 <input type="hidden" name="instance[option][value]" value="value"/>
 <input type="hidden" name="instance[option][lists][whitelist][]" value="good.host.com"/>
 <input type="hidden" name="instance[option][lists][blacklist][]" value="evil.host.com"/>
 <input type="file" name="instance[file]"/>
 <button>Update</button>
</form>

Routes

...

Server API

👁 Latest Stable Version
👁 Dependency Status

Repositories

File Stores

Collections stored on a file basis.

Limitations

Built with prototyping in mind. Won't scale.

CSV

...

JSON

Supports embedding binary data base64 encoded.

Serialized

Stores data using PHPs serialize() function. Supports embedding binary data base64 encoded.

Documentation

Roadmap

  • Access Control
  • Synchronization
  • JSON Schema
    • Generators

License

Released under two licenses: new BSD, and MIT. You may pick the license that best suits your development needs.

https://raw.github.com/alternatex/store/master/LICENSE