diff --git a/package.json b/package.json index fe2f7fc..2330368 100644 --- a/package.json +++ b/package.json @@ -1,20 +1,13 @@ { "name": "jsonapi-fractal", - "version": "1.0.13", + "version": "1.0.16", "description": "JSON:API Serializer inspired by Fractal (PHP)", "license": "MIT", "main": "dist/index", "types": "./dist/index.d.ts", - "module": "./dist-esm/index.js", - "exports": { - ".": { - "require": "./dist/index.js", - "default": "./dist-esm/index.js" - } - }, "scripts": { "test": "jest", - "build": "tsc && tsc -m es6 --outDir dist-esm", + "build": "tsc", "lint": "tslint src/**/*.ts tests/*.ts" }, "jest": { diff --git a/src/JsonApiResponse.ts b/src/JsonApiResponse.ts new file mode 100644 index 0000000..c606314 --- /dev/null +++ b/src/JsonApiResponse.ts @@ -0,0 +1,5 @@ +export default interface JsonApiResponse { + data: any; + meta?: any; + included?: any[]; +} diff --git a/src/index.ts b/src/index.ts index 796b53a..a854ea8 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,7 +4,8 @@ import Context from './Context' import JsonApiError from './errors/JsonApiError' import DefaultTransformer from './DefaultTransformer' import deserialize from './deserializer' +import JsonApiResponse from './JsonApiResponse' import { serializeContext, serialize, transform } from './serializer' import { whitelist } from './utils' -export { Transformer, DefaultTransformer, transform, serialize, deserialize, whitelist } +export { Transformer, DefaultTransformer, transform, serialize, JsonApiResponse, deserialize, whitelist, Options } diff --git a/src/serializer.ts b/src/serializer.ts index 2ad3ef7..40afaba 100644 --- a/src/serializer.ts +++ b/src/serializer.ts @@ -4,12 +4,13 @@ import Transformer from './Transformer' import JsonApiError from './errors/JsonApiError' import Options from './Options' import { whitelist, changeCase } from './utils' +import JsonApiResponse from './JsonApiResponse' -export function transform () { +export function transform (): Context { return new Context(serializeContext); } -export function serialize (data, type, options) { +export function serialize (data, type, options): JsonApiResponse { if (!options) { options = {} } @@ -21,7 +22,7 @@ export function serialize (data, type, options) { .serialize() } -export function serializeContext (ctx: Context) { +export function serializeContext (ctx: Context): JsonApiResponse { if (!ctx.options) { ctx.options = {}; } @@ -53,7 +54,7 @@ export function serializeContext (ctx: Context) { return result } -function serializeEntity (entity, transformer: Transformer, options: Options, includedByType) { +function serializeEntity (entity, transformer: Transformer, options: Options, includedByType): any { let attributes = { ...transformer.transform(entity, options) }; const idKey = options.idKey || 'id'; const id = attributes[idKey] || entity[idKey]; @@ -102,7 +103,7 @@ function serializeEntity (entity, transformer: Transformer, options: Options, in return data } -function serializeRelation (entity, transformer: Transformer, options: Options, included: boolean, includedByType) { +function serializeRelation (entity, transformer: Transformer, options: Options, included: boolean, includedByType) : any { if (!entity) { return null; } diff --git a/tests/included-transform.spec.ts b/tests/included-transform.spec.ts index 2b1deb8..b7fbed3 100644 --- a/tests/included-transform.spec.ts +++ b/tests/included-transform.spec.ts @@ -90,7 +90,7 @@ describe('transform', () => { const entitySerialized = transform() .withInput(entity) - .withTransformer(new UserTransformer) + .withTransformer(new UserTransformer()) .withOptions({ idKey: '_id' }) .serialize(); diff --git a/tslint.json b/tslint.json index 09b2fba..cd0839e 100644 --- a/tslint.json +++ b/tslint.json @@ -1,6 +1,7 @@ { "extends": [ "tslint:latest", - "tslint-config-prettier" + "tslint-config-prettier", + "tslint:recommended" ] }