sourcerer

0.0.1 • Public • Published

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

Readme

Keywords

Package Sidebar

Install

npm i sourcerer

Weekly Downloads

1

Version

0.0.1

License

MIT

Last publish

Collaborators

  • petrbela