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

backbone.hateoas

v0.1.1

Published

Adds to Backbone the possibility to interact with HATEOAS APIs. Currently only supports HAL implementation.

Downloads

1

Readme

Backbone.HATEOAS Build Status Code Climate Test Coverage

Adds to Backbone the possibility to interact with HATEOAS APIs.

Only available HAL implementation. Other implementations could be added in further updates.

How to use this Backbone Extension?

This extension is created mainly to use it inside the browser. Should be the complement of a simple Backbone frontend application. It can be used with requirejs or other AMD loaders.

Example of how it works

HALModel = Backbone.HAL.Model.extend({});
var resource = new HALModel({
    attributeOne: 'foo',
    attributeTwo: 'bar',
    _embedded: {
        items: {
            name: 'Item one',
            price: 22,
            _links: {
                self: {
                    href: 'http://customserver.com/api/items/1'
                }
            }
        }
    },
    _links: {
        self: {
            href: 'http://customserver.com/api/resource/1'
        }
    }
});

resource.get('attributeOne'); //=> "foo"
resource.get('attributeTwo'); //=> "bar"
resource.url();       //=> "http://customserver.com/api/resource/1"
resource.getLinks();  //=>  { self: { href: 'http://customserver.com/api/resource/1'}}
resource.links;       //=>  { self: { href: 'http://customserver.com/api/resource/1'}}
resource.getLink('self');  //=>  { href: 'http://customserver.com/api/resource/1'}
resource.getEmbedded();
    //=>    {
    //          items: {
    //              name: 'Item one',
    //              price: 22,
    //              _links: {
    //                  self: {
    //                      href: 'http://customserver.com/api/items/1'
    //                  }
    //              }
    //          }
    //      }
resource.get('_links');     //=> undefined
resource.get('_embedded');  //=> undefined

Simple use

Place the file /src/Backbone.HATEOAS.js in a folder, for instance in the same folder as backbone library. (In the following example is /vendor/backbone/)

Load Backbone.HATEOAS.js always at least after underscore and backbone.

The extension is placed in Backbone.HAL:

  • Backbone.HAL.Model
  • Backbone.HAL.Collection
<script type="text/javascript" src='/vendor/underscore/underscore.js'></script>
<script type="text/javascript" src='/vendor/backbone/backbone.js'></script>
<script type="text/javascript" src="/vendor/backbone/Backbone.HATEOAS.js"></script>

<script type="text/javascript">
    HALModel = Backbone.HAL.Model.extend({
    });
    var model = new HALModel({});

    MyCollection = Backbone.HAL.Collection.extend({
    });
    var collection = new MyCollection({});
</script>

Use as AMD Module

The module returns an object with Model and Collection

require(['/vendor/backbone/Backbone.HATEOAS'], function(HAL){
    HALModel = HAL.Model.extend({
    });
    var model = new HALModel({});

    MyCollection = HAL.Collection.extend({
    });
    var collection = new MyCollection({});
});

//OR define
define(['/vendor/backbone/Backbone.HATEOAS'], function(HAL){
    HALModel = HAL.Model.extend({
    });
    var model = new HALModel({});

    MyCollection = HAL.Collection.extend({
    });
    var collection = new MyCollection({});
});

The extension is placed in Backbone.HAL:

  • Backbone.HAL.Model
  • Backbone.HAL.Collection

Use as Nodejs Module

INSTALL

$ npm install --save backbone.hateoas

The module returns an object with Model and Collection

var HAL = require('backbone.hateoas');

HALModel = HAL.Model.extend({});
var model = new HALModel({});

MyCollection = HAL.Collection.extend({});
var collection = new MyCollection({});

What is HATEOAS

Definition: Hypermedia as the Engine of Application State

HATEOAS applied to REST interfaces provides the mechanism to navigate the site or API. Basically this is achieved by including hypermedia links with the responses. The clients could discover new paths or ways to interact with the REST interfaces.

References

Test Code

To test this Backbone extension is working either from command line or browser.

Command line

$ npm install -g mocha
$ npm install
$ mocha

Browser

It's recommended to use last version of Firefox or Chrome.

Simply open the file test/spec-runner.html