guillaumebriday / json-api-response-converter

Normalize your JSON:API response
https://json-api-response-converter.netlify.app/
MIT License
22 stars 1 forks source link
json json-api json-api-normalizer vuex vuex-orm

JSON:API Response Converter

Donate

Features

Getting started

Install

$ npm install json-api-response-converter --save

# or

$ yarn add json-api-response-converter

Usage

import JsonApiResponseConverter from 'json-api-response-converter'

const response = {
  data: [
    {
      id: '1',
      type: 'articles',
      attributes: {
        title: 'This project is awesome'
      },
      relationships: {
        author: {
          data: { id: '1', type: 'author' }
        },

        comments: {
          data: [
            { id: '1', type: 'comment' },
            { id: '2', type: 'comment' }
          ]
        }
      }
    }
  ],

  included: [
    {
      id: '1',
      type: 'author',
      attributes: {
        name: 'Anakin'
      }
    },
    {
      id: '1',
      type: 'comment',
      attributes: {
        body: 'First!'
      }
    },
    {
      id: '2',
      type: 'comment',
      attributes: {
        body: 'Second!'
      }
    }
  ]
}

const data = new JsonApiResponseConverter(response).formattedResponse

console.log(data)
/**
[
  {
    id: 1,
    title: 'This project is awesome',

    author: {
      id: 1,
      name: 'Anakin'
    },

    comments: [
      {
        id: 1,
        body: 'First!'
      },
      {
        id: 2,
        body: 'Second!'
      }
    ]
  }
]
*/

Many edges cases are tested in the tests folder

Development

$ git clone https://github.com/guillaumebriday/json-api-response-converter
$ cd json-api-response-converter
$ yarn # or npm install

You can run tests with Jest:

$ yarn test # or npm run test

Check the syntax with ESLint:

$ yarn lint

Contributing

Do not hesitate to contribute to the project by adapting or adding features ! Bug reports or pull requests are welcome.

Credits

Inspired by:

License

The gem is available as open source under the terms of the MIT License.