New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

halson

Package Overview
Dependencies
Maintainers
1
Versions
18
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

halson

The HAL+JSON Resource Object

  • 2.0.2
  • Source
  • npm
  • Socket score

Version published
Maintainers
1
Created
Source

HALSON

Build Status

The HAL+JSON Resource Object.

Install

node.js

npm install halson --save

Example

var halson = require('halson');

var embed = halson({
        title: "joyent / node",
        description: "evented I/O for v8 javascript"
    })
    .addLink('self', '/joyent/node')
    .addLink('author', {
        href: '/joyent',
        title: 'Joyent'
    });

var resource = halson({
        title: "Juraj Hájovský",
        username: "hajovsky",
        emails: [
            "juraj.hajovsky@example.com",
            "hajovsky@example.com"
        ]
    })
    .addLink('self', '/hajovsky')
    .addEmbed('starred', embed);

console.log(resource.title);
console.log(resource.emails[0]);
console.log(resource.getLink('self'));
console.log(resource.getEmbed('starred'));
console.log(JSON.stringify(resource));

API

halson([data])

Create a new HAL+JSON Resource Object.

  • data (optional): Initial data as serialized string or Object.
// empty HAL+JSON Resource Object
var resource = halson();

// resource from a serialized data
var resource = halson('{title:"Lorem Ipsum",_links:{self:{href:"/ipsum"}}');

// resource from an Object
resource = halson({
    _links: {
        self: {
            href: {"/ipsum"}
        }
    },
    title: "Lorem Ipsum"
});

// resource from another resource (no-op)
var resourceX = halson(resorce);
console.log(resorce === resorceX); // true

HALSONResource#listLinkRels()

List all link relations.

var data = {
    _links: {
        self: {href: '/hajovsky'},
        related: [
            {href: 'http://hajovsky.sk'},
            {href: 'https://twitter.com/hajovsky'}
        ]
    }
}

var resource = halson(data);
console.log(resource.listLinkRels()); // ['self', 'related']

HALSONResource#listEmbedRels()

List all link relations.

var data = {
    _embedded: {
        starred: {
            _links: {
                self: {href: '/joyent/node'}
            }
            title: "joyent / node",
            description: "evented I/O for v8 javascript"
        }
    }
}

var resource = halson(data);
console.log(resource.listEmbedRels()); // ['starred']

HALSONResource#getLinks(rel, [filterCallback, [begin, [end]]])

Get all links with relation rel.

  • rel (required): Relation name.
  • filterCallback (optional): Function used to filter array of links. doc
  • begin, end (optional): slice filtered links. doc
var twitterLinks = resource.getLinks('related', function(item) {
    return item.name === "twitter";
});

HALSONResource#getLink(rel, [filterCallback])

Get first link with relation rel.

  • rel (required): Relation name.
  • filterCallback (optional): Function used to filter array of links. doc
var firstRelatedLink = resource.getLink('related');

HALSONResource#getEmbeds(rel, [filterCallback, [begin, [end]]])

Get all embedded resources with relation rel.

  • rel (required): Relation name.
  • filterCallback (optional): Function used to filter array of embeds. doc
  • begin, end (optional): slice filtered links. doc
var embeds = resource.getEmbeds('starred');

HALSONResource#getEmbed(rel, [filterCallback])

Get first embedded resource with relation rel.

  • rel (required): Relation name.
  • filterCallback (optional): Function used to filter array of embeds. doc
var nodeProject = resource.getEmbed('starred', function(embed) {
    var selfLink = embed.getLink('self') || {};
    return selfLink.href === '/joyent/node';
});

Add a link with relation rel.

  • rel (required): Relation name.
  • link (required): Link to be added (string or Object).
resource
    .addLink('related', 'http://hajovsky.sk')
    .addLink('related', {
        href: 'https://twitter.com/hajovsky',
        name: 'twitter'
    });

HALSONResource#addEmbed(rel, embed)

Add a nested resource with relation rel.

  • rel (required): Relation name.
  • embed (required): Resource to be embedded (Object or HALSONResource).
var embed = {
    _links: {
        self: {href: '/joyent/node'}
    },
    title: "joyent / node"
}
resource.addEmbed('starred', embed);

HALSONResource#removeLinks(rel, [filterCallback])

Remove links with relation rel. If filterCallback is not defined, all links with relation rel will be removed.

  • rel (required): Relation name.
  • filterCallback (optional): Function used to filter array of links. doc
// remove links with relation 'related' and name 'twitter'
resource.removeLinks('related', function(link) {
    return link.name === "twitter";
});

HALSONResource#removeEmbeds(rel, [filterCallback])

Remove embedded resources with relation rel. If filterCallback is not defined, all embeds with relation rel will be removed.

  • rel (required): Relation name.
  • filterCallback (optional): Function used to filter array of links. doc
// remove embedded resources with relation 'starred' and self-link '/koajs/koa'
resource.removeLinks('starred', function(embed) {
    var selfLink = embed.getLink('self') || {};
    return selfLink.href === '/koajs/koa';
});

Keywords

FAQs

Package last updated on 23 Mar 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

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc