1.2.0 • Published 7 years ago

ember-json-serializer-meta v1.2.0

Weekly downloads
1
License
MIT
Repository
github
Last release
7 years ago

ember-json-serializer-meta

Build Status npm version

So I heard you are working with custom APIs that are not either JSONAPI or REST but rather something in between, a hybrid. Then this addon is for you! It enables extracting metadata for all the Ember Data normalize*Response hooks.

ember install ember-json-serializer-meta

Works with Ember 1.13+

How it works

Flow chart

                                               ┌─ extractMetaFindAllResponse() ─────┐
                                               ├─ extractMetaFindHasManyResponse() ─┼─ extractMetaArrayResponse() ─────────────────────────────────┐
                                               ├─ extractMetaFindManyResponse() ────┤                                                              │
                                               ├─ extractMetaQueryResponse() ───────┘                                                              │
                                               │                                                                                                   │
                                               ├─ extractMetaFindRecordResponse() ─────────────────────────────────┐                               │
normalizeResponse() - normalizeMetaResponse() ─┼─ extractMetaFindBelongsToResponse() ──────────────────────────────┤                               │
                                               ├─ extractMetaQueryRecordResponse() ────────────────────────────────┤                               │
                                               │                                                                   │                               │
                                               ├─ extractMetaCreateRecordResponse() ─┐                             │                               │
                                               ├─ extractMetaDeleteRecordResponse() ─┼─ extractMetaSaveResponse() ─┴─ extractMetaSingleResponse() ─┴─ extractMetaResponse()
                                               └─ extractMetaUpdateRecordResponse() ─┘

API response

  {
    status: {
      errorCode: 0
    },
    records: [{
      id: 1,
      name: 'Tomster'
    }],
    pagination: {

    }
  }

By default such payload is not supported by the JSONSerializer, it is impossible to extract metadata with default extractMeta hook.

Here comes in the addon which adds another serializer hook for extracting meta for your custom API responses with JSONSerializer.

import extractMetaResponseMixin from 'ember-json-serializer-meta';

export default DS.JSONSerializer.extend(extractMetaResponseMixin, {
  extractMetaResponse(store, typeClass, payload/*, id, requestType*/) {
    if (payload && payload.pagination) {
      return payload.pagination;
    }
  }
});

Default implementation of extractMetaResponse will lookup meta property.

  {
    ...
    meta: {
      my: 'meta'
    }
    ...
  }

Contribution

This project follows Gitflow Workflow.

Installation

  • git clone this repository
  • yarn install

Running

Running Tests

  • yarn test (Runs ember try:each to test your addon against multiple Ember versions)
  • ember test
  • ember test --server

Building

  • ember build

For more information on using ember-cli, visit https://ember-cli.com/.

1.2.0

7 years ago

1.1.1

7 years ago

1.1.0

7 years ago

1.0.0

7 years ago

0.2.0

8 years ago

0.1.0

8 years ago