yacoson
Create and validate collection-json objects
Last updated 2 years ago by eldertfrancke .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install yacoson 
SYNC missed versions from official npm registry.

Create and validate a collection+json object

Collection+JSON is a JSON-based read/write hypermedia-type designed to support management and querying of simple collections.

With this library you can create a collection+json object and validate your input.

Installation

npm i yacoson

Examples

Minimal representation

const CollectionJson = require('yacoson').CollectionJson;

let cj = new CollectionJson('http://localhost/api'); 

console.log(JSON.stringify(cj, null, '  ')); 
// { "collection" : 
//   {
//     "version" : "1.0",
//     "href" : "http://localhost/api"
//   } 
// }

An error is thrown in case the url is invalid.

Item respresentation

You can assign items to the items property. It only adds valid property items. Invalid ones are filtered out.

cj.items = [
    { 
        href: 'http://localhost/api/1/',
        data: [
            { name: 'date', value: "2017-02-22T09:39:34.860Z" },
            { name: 'client', value: 'xyz' },
        ] 
    },
];

console.log(JSON.stringify(cj, null, '  ')); 
// {
//   "collection": {
//     "href": "http://localhost/api",
//     "version": "1.0",
//     "items": [
//       {
//         "href": "http://localhost/api/1/",
//         "data": [
//           {
//             "name": "date",
//             "value": "2017-02-22T09:39:34.860Z"
//           },
//           {
//             "name": "client",
//             "value": "xyz"
//           }
//         ]
//       }
//     ]
//   }
// }

cj.addItems(items, options);

API

Creating a new object requires a string with a valid url, if not an error is thrown.

Properties

These properties are exposed to assign and validate your data:

  • items, cj.items = item[];
  • links, cj.links = link[];
  • queries, cj.queries = query[];
  • template, cj.template = template;
  • error, cj.error = error;

Besides this you can of course assign your data to the collection property to bypass validation.

Methods

addItems

const options = {
    href: string, // name of property with prompt value
    id: string,  // name of property with id value used to build href, overrides href
    data:  {
        data: string,  // name of property with data array
        prompt: string, // name of property with prompt value
        name: string, // name of property with name value
        value: string,  // name of property with prompt value
    },
    links: {
        href: string,  // name of property with href value
        links: string,   // name of property with links array
        rel: string,   // name of property with rel value
        prompt: string,  // name of property with prompt value
        name: string,  // name of property with name value
        render: string,  // name of property with render value
    },
}

cj.addItems(item[], options)

Example

const items = [
            { uid: '1', props: [{ name: 'date', value: date }, { name: 'klant', value: 'A' }] },
            { uid: '2', props: [{ name: 'date', value: date }, { name: 'klant', value: 'B' }] },
            { uid: '3', props: [{ name: 'date', value: date }, { name: 'klant', value: 'C' }] },
];

const options = {
            data: {
                data: 'props',
                prompt: 'name',
            },
            id: 'uid',
};

cj.addItems(items, options)

addLinks

let options = {
    href: string,   // name of property with href value
    rel: string,  // name of property with rel value
    prompt: string,  // name of property with prompt value
    name: string,  // name of property with name value
    render: string,  // name of property with render value
}

addLinks(link[], options)

addQueries

let options = {
    href: string,   // name of property with href value
    rel: string,  // name of property with rel value
    prompt: string,  // name of property with prompt value
    name: string,  // name of property with name value
    data:  {
        data: string,  // name of property with data array
        prompt: string, // name of property with prompt value
        name: string, // name of property with name value
        value: string,  // name of property with prompt value
    },
}

addQueries(query[], options)

Validation

Name

The collection-json specification states the following about the name type:

It SHOULD be a STRING data type.

Our validation rule is a bit more restrictive:

The name property SHOULD be a STRING data type and only contain a-z, A-Z, 0-9, and underscore _.

Current Tags

  • 0.0.2                                ...           latest (2 years ago)

2 Versions

  • 0.0.2                                ...           2 years ago
  • 0.0.1                                ...           2 years ago
Maintainers (1)
Downloads
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 2
Dependencies (6)
Dev Dependencies (4)
Dependents (0)
None

Copyright 2014 - 2016 © taobao.org |