Skip to content

Speakeasy-Team/json-api-entitizer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Circle CI

#JSON API Entitizer

This library was created because consuming a JSON API spec API can be a pain in the ass; especially while following Redux practices. The library is designed to receive JSON API spec JSON and transform it to a specific format following a similar pattern as normalizr.

##Installing To install using npm run:

$ npm install json-api-entitizer --save

##api

entitize(json)

the entitize(json) function will transform this json:

{
  "data": [{
    "type": "articles",
    "id": "1",
    "attributes": {
      "title": "JSON API paints my bikeshed!",
      "body": "The shortest article. Ever.",
      "created": "2015-05-22T14:56:29.000Z",
      "updated": "2015-05-22T14:56:28.000Z"
    },
    "relationships": {
      "author": {
        "data": {"id": "42", "type": "people"}
      }
    }
  },
  {
    "type": "books",
    "id": "3",
    "attributes": {
      "title": "Hello world",
      "blurb": "It's the greatest",
      "created": "2015-05-22T14:56:29.000Z",
      "updated": "2015-05-22T14:56:28.000Z"
    }
  },
  {
    "type": "books",
    "id": "4",
    "attributes": {
      "title": "Javascript can be good sometimes",
      "blurb": "and sometimes it hurts",
      "created": "2015-05-22T14:56:29.000Z",
      "updated": "2015-05-22T14:56:28.000Z"
    }
  }],
  "included": [
    {
      "type": "people",
      "id": "42",
      "attributes": {
        "name": "John",
        "age": 80,
        "gender": "male"
      }
    }
  ]
}

into this:

entities: {
  articles: {
    1: {
      "id": "1",
      "title": "JSON API paints my bikeshed!",
      "body": "The shortest article. Ever.",
      "created": "2015-05-22T14:56:29.000Z",
      "updated": "2015-05-22T14:56:28.000Z",
      "relationships": {
        author: {
          id: "42",
          type: "people"
        },
      },
    },
  },
  people: {
    42: {
      "id": "42",
      "name": "John",
      "age": 80,
      "gender": "male",
      "relationships": {}
    },
  },
  books: {
    3: {
      "id": "3",
      "title": "Hello world",
      "blurb": "It's the greatest",
      "created": "2015-05-22T14:56:29.000Z",
      "updated": "2015-05-22T14:56:28.000Z",
      "relationships": {},
    },
    4: {
      "id": "4",
      "title": "Javascript can be good sometimes",
      "blurb": "and sometimes it hurts",
      "created": "2015-05-22T14:56:29.000Z",
      "updated": "2015-05-22T14:56:28.000Z",
      "relationships": {},
    },
  },
},

findById(store, resourceType, id)

Returns the object or an empty object

Example: const book = findById(store, "books", 1);

findAssociated(store, resourceType, id, association)

Returns an array for a has many relationship or the object for a has one

Example: const authors = findAssociated(store, "books", 1, "authors");

About

Transforms json api spec json to a usable format

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published