diff --git a/package.json b/package.json index 39f0436..6a74f9e 100644 --- a/package.json +++ b/package.json @@ -42,6 +42,6 @@ "@types/type-check": "^0.3.27", "jasmine": "^2.5.3", "tslint": "^4.3.1", - "typescript": "^2.1.5" + "typescript": "^4.0.0" } } diff --git a/spec/deserializer-spec.ts b/spec/deserializer-spec.ts index 73c18eb..29718d2 100644 --- a/spec/deserializer-spec.ts +++ b/spec/deserializer-spec.ts @@ -82,17 +82,19 @@ describe('deserialize', () => { let expected = [ { + 'type': 'articles', 'id': '1', 'title': 'JSON API paints my bikeshed!', 'author': { + 'type': 'people', 'id': '9', 'first-name': 'Dan', 'last-name': 'Gebhardt', 'twitter': 'dgeb' }, 'comments': [ - { 'id': '5', 'body': 'First!' }, - { 'id': '12', 'body': 'I like XML better' } + { 'type': 'comments', 'id': '5', 'body': 'First!' }, + { 'type': 'comments', 'id': '12', 'body': 'I like XML better' } ] } ]; @@ -124,8 +126,8 @@ describe('deserialize', () => { let result: any = deserialize(document); let expected = [ - { id: '1', name: 'John', friend: { id: '2', name: 'Carl', dog: { id: '3', name: 'Bobby' } } }, - { id: '2', name: 'Carl', dog: { id: '3', name: 'Bobby' } } + { type: 'people', id: '1', name: 'John', friend: { type: 'people', id: '2', name: 'Carl', dog: { type: 'dogs', id: '3', name: 'Bobby' } } }, + { type: 'people', id: '2', name: 'Carl', dog: { type: 'dogs', id: '3', name: 'Bobby' } } ]; expect(matches(expected)(result)).toBe(true); diff --git a/src/index.ts b/src/index.ts index eb55960..88197e1 100644 --- a/src/index.ts +++ b/src/index.ts @@ -29,7 +29,7 @@ function denormalize(resources: Multiple, relations: RelationsHash): a } function processResource(res: Resource, relHash: RelationsHash): Serialization { - let { id, attributes, relationships } = res; + let { id, type, attributes, relationships } = res; let rels: Multiple = mapValues(relationships, (rel: RelationshipObj): any => fmapMultiple(rel.data, (relId: ResourceId): any => { @@ -38,7 +38,7 @@ function processResource(res: Resource, relHash: RelationsHash): Serialization { }) ); - return assign({}, attributes, { id }, rels); + return assign({}, attributes, { type, id }, rels); } function findRelation(rel: ResourceId, relations: RelationsHash): Resource | undefined {