0.0.1 • Published 9 years ago

sourcerer v0.0.1

Weekly downloads
5
License
MIT
Repository
github
Last release
9 years ago

sourcerer

Circle CI Code Climate Test Coverage bitHound Score

Resource abstraction in vanilla JS, inspired by ngResource. For browsers, Node and io.js.

Currently under development but the basic version of the examples shown below is already implemented.

Features

  • Promise-based
  • Simple resource route definition
  • Only depends on superagent
  • Pagination for resource collections
  • TODO Optionally can return data as immutables

Install

As the package is not published yet, install it from the repo directly:

{
  "dependencies": {
    "sourcerer": "chute/sourcerer"
  }
}

Usage

var Resource = require('sourcerer');

// define your resource
var Comment = new Resource('//api.example.com/posts/:post_id/comments');

// fetch list of post's comments
Comment.query({post_id: 1, sort: 'popular'}).then(function(assets) {
  // ...
});
// GET //api.example.com/posts/1/comments?sort=popular

// fetch individual comment
Comment.find({post_id: 1, id: '1234'}).then(function(asset) {
  // ...
});
// GET //api.example.com/posts/1/comments/1234

// create a new comment
Comment.create({text: 'My new world', author_id: 12, post_id: 1});
// POST //api.example.com/posts/1/comments
// {"text": "My new world", "author_id": 12}

// save a comment
var comment = new Comment({text: 'Comment', author_id: 12, post_id: 1});
comment.save();
// POST //api.example.com/posts/1/comments
// {"text": "Comment", "author_id": 12}

// update a comment
Comment.find({post_id: 1, id: '1234'}).then(function(comment) {
  comment.text = 'Updated comment';
  comment.save();
  // PUT //api.example.com/comments/1234
  // {"text": "Updated comment", "author_id": 12}
});

// delete a comment
comment.remove();
// DELETE //api.example.com/posts/1/comments/1234

Test

npm test