ts-japi 1.8.1 → 1.9.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.release-please-manifest.json +1 -1
- package/CHANGELOG.md +14 -0
- package/lib/classes/polymorphic-serialiser.d.ts +19 -0
- package/lib/classes/polymorphic-serialiser.d.ts.map +1 -0
- package/lib/classes/polymorphic-serialiser.js +55 -0
- package/lib/classes/polymorphic-serialiser.js.map +1 -0
- package/lib/index.d.ts +1 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +3 -1
- package/lib/index.js.map +1 -1
- package/lib/utils/serializer.utils.d.ts.map +1 -1
- package/lib/utils/serializer.utils.js +5 -3
- package/lib/utils/serializer.utils.js.map +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [1.9.1](https://github.com/mathematic-inc/ts-japi/compare/v1.9.0...v1.9.1) (2023-10-11)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* fix logic where nested includes were not calculated correctly. Fixes [#68](https://github.com/mathematic-inc/ts-japi/issues/68) ([#69](https://github.com/mathematic-inc/ts-japi/issues/69)) ([701a7e6](https://github.com/mathematic-inc/ts-japi/commit/701a7e61d8239abbe54ba88bcf65f8fb7552ad79))
|
|
9
|
+
|
|
10
|
+
## [1.9.0](https://github.com/mathematic-inc/ts-japi/compare/v1.8.1...v1.9.0) (2023-09-04)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
* add polymprphic serializer ([#66](https://github.com/mathematic-inc/ts-japi/issues/66)) ([d440f87](https://github.com/mathematic-inc/ts-japi/commit/d440f87d7241cc2b52db1440b66f87112e0a3807))
|
|
16
|
+
|
|
3
17
|
## [1.8.1](https://github.com/mathematic-inc/ts-japi/compare/v1.8.0...v1.8.1) (2023-08-10)
|
|
4
18
|
|
|
5
19
|
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { DataDocument } from '../interfaces/json-api.interface';
|
|
2
|
+
import { SerializerOptions } from '../interfaces/serializer.interface';
|
|
3
|
+
import ResourceIdentifier from '../models/resource-identifier.model';
|
|
4
|
+
import Resource from '../models/resource.model';
|
|
5
|
+
import { Dictionary, nullish, SingleOrArray } from '../types/global.types';
|
|
6
|
+
import { Helpers } from '../utils/serializer.utils';
|
|
7
|
+
import Relator from './relator';
|
|
8
|
+
import Serializer from './serializer';
|
|
9
|
+
export default class PolymorphicSerializer<PrimaryType extends Dictionary<any>> extends Serializer<PrimaryType> {
|
|
10
|
+
private serialisers;
|
|
11
|
+
private key;
|
|
12
|
+
constructor(commonName: string, key: keyof PrimaryType, serializers: Record<string, Serializer>);
|
|
13
|
+
serialize(data: SingleOrArray<PrimaryType> | nullish, options?: Partial<SerializerOptions<PrimaryType>>): Promise<Partial<DataDocument<PrimaryType>>>;
|
|
14
|
+
createIdentifier(data: PrimaryType, options?: SerializerOptions<PrimaryType>): ResourceIdentifier;
|
|
15
|
+
createResource(data: PrimaryType, options?: Partial<SerializerOptions<PrimaryType>>, helpers?: Helpers<PrimaryType>, relatorDataCache?: Map<Relator<any>, Dictionary<any>[]>): Promise<Resource<PrimaryType>>;
|
|
16
|
+
private serializeSingle;
|
|
17
|
+
private getSerializerForData;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=polymorphic-serialiser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polymorphic-serialiser.d.ts","sourceRoot":"","sources":["../../src/classes/polymorphic-serialiser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,kCAAkC,CAAC;AAChE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,kBAAkB,MAAM,qCAAqC,CAAC;AACrE,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3E,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,OAAO,MAAM,WAAW,CAAC;AAChC,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC,MAAM,CAAC,OAAO,OAAO,qBAAqB,CACxC,WAAW,SAAS,UAAU,CAAC,GAAG,CAAC,CACnC,SAAQ,UAAU,CAAC,WAAW,CAAC;IAC/B,OAAO,CAAC,WAAW,CAA6B;IAEhD,OAAO,CAAC,GAAG,CAAoB;gBAG7B,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,WAAW,EACtB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC;IAO5B,SAAS,CACpB,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC,GAAG,OAAO,EAC1C,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,GAChD,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;IAYvC,gBAAgB,CACrB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,GACvC,kBAAkB;IAQR,cAAc,CACzB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,OAAO,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,EACjD,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,GACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAQnB,eAAe;IAW7B,OAAO,CAAC,oBAAoB;CAO7B"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const serializer_1 = __importDefault(require("./serializer"));
|
|
7
|
+
class PolymorphicSerializer extends serializer_1.default {
|
|
8
|
+
serialisers;
|
|
9
|
+
key;
|
|
10
|
+
constructor(commonName, key, serializers) {
|
|
11
|
+
super(commonName);
|
|
12
|
+
this.serialisers = serializers;
|
|
13
|
+
this.key = key;
|
|
14
|
+
}
|
|
15
|
+
async serialize(data, options) {
|
|
16
|
+
if (Array.isArray(data)) {
|
|
17
|
+
data.map((d) => {
|
|
18
|
+
return this.serializeSingle(d, options);
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
else if (data) {
|
|
22
|
+
return this.serializeSingle(data, options);
|
|
23
|
+
}
|
|
24
|
+
return Object.values(this.serialisers)[0].serialize(data, options);
|
|
25
|
+
}
|
|
26
|
+
createIdentifier(data, options) {
|
|
27
|
+
const serializer = this.getSerializerForData(data);
|
|
28
|
+
if (serializer) {
|
|
29
|
+
return serializer.createIdentifier(data, options);
|
|
30
|
+
}
|
|
31
|
+
return super.createIdentifier(data, options);
|
|
32
|
+
}
|
|
33
|
+
async createResource(data, options, helpers, relatorDataCache) {
|
|
34
|
+
const serializer = this.getSerializerForData(data);
|
|
35
|
+
if (serializer) {
|
|
36
|
+
return serializer.createResource(data, options, helpers, relatorDataCache);
|
|
37
|
+
}
|
|
38
|
+
return super.createResource(data, options, helpers, relatorDataCache);
|
|
39
|
+
}
|
|
40
|
+
async serializeSingle(data, options) {
|
|
41
|
+
const serializer = this.getSerializerForData(data);
|
|
42
|
+
if (serializer) {
|
|
43
|
+
return serializer.serialize(data, options);
|
|
44
|
+
}
|
|
45
|
+
return super.serialize(data, options);
|
|
46
|
+
}
|
|
47
|
+
getSerializerForData(data) {
|
|
48
|
+
if (this.serialisers[data[this.key]]) {
|
|
49
|
+
return this.serialisers[data[this.key]];
|
|
50
|
+
}
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.default = PolymorphicSerializer;
|
|
55
|
+
//# sourceMappingURL=polymorphic-serialiser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"polymorphic-serialiser.js","sourceRoot":"","sources":["../../src/classes/polymorphic-serialiser.ts"],"names":[],"mappings":";;;;;AAOA,8DAAsC;AAEtC,MAAqB,qBAEnB,SAAQ,oBAAuB;IACvB,WAAW,CAA6B;IAExC,GAAG,CAAoB;IAE/B,YACE,UAAkB,EAClB,GAAsB,EACtB,WAAuC;QAEvC,KAAK,CAAC,UAAU,CAAC,CAAC;QAClB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;IAEM,KAAK,CAAC,SAAS,CACpB,IAA0C,EAC1C,OAAiD;QAEjD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACvB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACb,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;SACJ;aAAM,IAAI,IAAI,EAAE;YACf,OAAO,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC5C;QAED,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACrE,CAAC;IAEM,gBAAgB,CACrB,IAAiB,EACjB,OAAwC;QAExC,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SACnD;QACD,OAAO,KAAK,CAAC,gBAAgB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,CAAC;IAEM,KAAK,CAAC,cAAc,CACzB,IAAiB,EACjB,OAAiD,EACjD,OAA8B,EAC9B,gBAAuD;QAEvD,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;SAC5E;QACD,OAAO,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;IACxE,CAAC;IAEO,KAAK,CAAC,eAAe,CAC3B,IAAiB,EACjB,OAAiD;QAEjD,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACnD,IAAI,UAAU,EAAE;YACd,OAAO,UAAU,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC5C;QACD,OAAO,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACxC,CAAC;IAEO,oBAAoB,CAAC,IAAiB;QAC5C,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE;YACpC,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;SACzC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;CACF;AA1ED,wCA0EC"}
|
package/lib/index.d.ts
CHANGED
|
@@ -6,6 +6,7 @@ export { default as Relator } from './classes/relator';
|
|
|
6
6
|
export { default as JapiError } from './models/error.model';
|
|
7
7
|
export { default as ErrorSerializer } from './classes/error-serializer';
|
|
8
8
|
export { default as Serializer } from './classes/serializer';
|
|
9
|
+
export { default as PolymorphicSerializer } from './classes/polymorphic-serialiser';
|
|
9
10
|
export * from './interfaces/cache.interface';
|
|
10
11
|
export * from './interfaces/error-serializer.interface';
|
|
11
12
|
export * from './interfaces/error.interface';
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7D,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,KAAK,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,OAAO,IAAI,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACxE,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACpF,cAAc,8BAA8B,CAAC;AAC7C,cAAc,yCAAyC,CAAC;AACxD,cAAc,8BAA8B,CAAC;AAC7C,cAAc,iCAAiC,CAAC;AAChD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC"}
|
package/lib/index.js
CHANGED
|
@@ -17,7 +17,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.Serializer = exports.ErrorSerializer = exports.JapiError = exports.Relator = exports.Paginator = exports.Metaizer = exports.Linker = exports.Cache = void 0;
|
|
20
|
+
exports.PolymorphicSerializer = exports.Serializer = exports.ErrorSerializer = exports.JapiError = exports.Relator = exports.Paginator = exports.Metaizer = exports.Linker = exports.Cache = void 0;
|
|
21
21
|
var cache_1 = require("./classes/cache");
|
|
22
22
|
Object.defineProperty(exports, "Cache", { enumerable: true, get: function () { return __importDefault(cache_1).default; } });
|
|
23
23
|
var linker_1 = require("./classes/linker");
|
|
@@ -34,6 +34,8 @@ var error_serializer_1 = require("./classes/error-serializer");
|
|
|
34
34
|
Object.defineProperty(exports, "ErrorSerializer", { enumerable: true, get: function () { return __importDefault(error_serializer_1).default; } });
|
|
35
35
|
var serializer_1 = require("./classes/serializer");
|
|
36
36
|
Object.defineProperty(exports, "Serializer", { enumerable: true, get: function () { return __importDefault(serializer_1).default; } });
|
|
37
|
+
var polymorphic_serialiser_1 = require("./classes/polymorphic-serialiser");
|
|
38
|
+
Object.defineProperty(exports, "PolymorphicSerializer", { enumerable: true, get: function () { return __importDefault(polymorphic_serialiser_1).default; } });
|
|
37
39
|
__exportStar(require("./interfaces/cache.interface"), exports);
|
|
38
40
|
__exportStar(require("./interfaces/error-serializer.interface"), exports);
|
|
39
41
|
__exportStar(require("./interfaces/error.interface"), exports);
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,yCAAmD;AAA1C,+GAAA,OAAO,OAAS;AACzB,2CAAqD;AAA5C,iHAAA,OAAO,OAAU;AAC1B,+CAAyD;AAAhD,qHAAA,OAAO,OAAY;AAC5B,iDAA2D;AAAlD,uHAAA,OAAO,OAAa;AAC7B,6CAAuD;AAA9C,mHAAA,OAAO,OAAW;AAC3B,oDAA4D;AAAnD,yHAAA,OAAO,OAAa;AAC7B,+DAAwE;AAA/D,oIAAA,OAAO,OAAmB;AACnC,mDAA6D;AAApD,yHAAA,OAAO,OAAc;AAC9B,+DAA6C;AAC7C,0EAAwD;AACxD,+DAA6C;AAC7C,kEAAgD;AAChD,gEAA8C;AAC9C,mEAAiD;AACjD,iEAA+C;AAC/C,oEAAkD;AAClD,uDAAqC;AACrC,4DAA0C;AAC1C,0DAAwC;AACxC,oDAAkC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,yCAAmD;AAA1C,+GAAA,OAAO,OAAS;AACzB,2CAAqD;AAA5C,iHAAA,OAAO,OAAU;AAC1B,+CAAyD;AAAhD,qHAAA,OAAO,OAAY;AAC5B,iDAA2D;AAAlD,uHAAA,OAAO,OAAa;AAC7B,6CAAuD;AAA9C,mHAAA,OAAO,OAAW;AAC3B,oDAA4D;AAAnD,yHAAA,OAAO,OAAa;AAC7B,+DAAwE;AAA/D,oIAAA,OAAO,OAAmB;AACnC,mDAA6D;AAApD,yHAAA,OAAO,OAAc;AAC9B,2EAAoF;AAA3E,gJAAA,OAAO,OAAyB;AACzC,+DAA6C;AAC7C,0EAAwD;AACxD,+DAA6C;AAC7C,kEAAgD;AAChD,gEAA8C;AAC9C,mEAAiD;AACjD,iEAA+C;AAC/C,oEAAkD;AAClD,uDAAqC;AACrC,4DAA0C;AAC1C,0DAAwC;AACxC,oDAAkC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.utils.d.ts","sourceRoot":"","sources":["../../src/utils/serializer.utils.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,wBAAsB,eAAe,CACnC,IAAI,EAAE,GAAG,EAAE,EACX,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EACtC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EACtC,IAAI,EAAE,MAAM,EAAE,EACd,gBAAgB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,
|
|
1
|
+
{"version":3,"file":"serializer.utils.d.ts","sourceRoot":"","sources":["../../src/utils/serializer.utils.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAEnD,wBAAsB,eAAe,CACnC,IAAI,EAAE,GAAG,EAAE,EACX,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,EACtC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS,EACtC,IAAI,EAAE,MAAM,EAAE,EACd,gBAAgB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,kBAyExD;AAED,wBAAgB,iBAAiB,CAAC,CAAC,SAAS,UAAU,CAAC,GAAG,CAAC,EACzD,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,+CAiB3C;AAED,qBAAa,OAAO,CAAC,WAAW,SAAS,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG;IACrD,iBAAiB,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;IAC3E,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;gBACpD,OAAO,EAAE,iBAAiB,CAAC,WAAW,CAAC;CA0C3D"}
|
|
@@ -39,13 +39,15 @@ async function recurseRelators(data, relators, include, keys, relatorDataCache)
|
|
|
39
39
|
for (const [relator, cache] of curRelatorDataCache) {
|
|
40
40
|
for (let i = 0; i < cache.length; i++) {
|
|
41
41
|
const shouldBuildRelatedCache = (!includeFields ||
|
|
42
|
-
includeFields
|
|
42
|
+
includeFields
|
|
43
|
+
?.filter((i) => i.field === relator.relatedName)
|
|
44
|
+
?.some((i) => i.hasMore)) ??
|
|
43
45
|
false;
|
|
44
46
|
const resource = await relator.getRelatedResource(cache[i], undefined, undefined,
|
|
45
|
-
// Only build the cache for the
|
|
47
|
+
// Only build the cache for the next iteration if needed.
|
|
46
48
|
shouldBuildRelatedCache ? newRelatorDataCache : undefined);
|
|
47
49
|
// Include if,
|
|
48
|
-
// - includeFields
|
|
50
|
+
// - includeFields !== undefined
|
|
49
51
|
// - includeFields has entry where field = relatedName
|
|
50
52
|
if (!includeFields || includeFields.map((i) => i.field).includes(relator.relatedName)) {
|
|
51
53
|
const key = resource.getKey();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serializer.utils.js","sourceRoot":"","sources":["../../src/utils/serializer.utils.ts"],"names":[],"mappings":";;;;;;AAAA,iEAAyC;AAIlC,KAAK,UAAU,eAAe,CACnC,IAAW,EACX,QAAsC,EACtC,OAAsC,EACtC,IAAc,EACd,gBAAuD;IAEvD,MAAM,QAAQ,GAAU,EAAE,CAAC;IAC3B,IAAI,KAAK,GACP,OAAO,OAAO,KAAK,QAAQ;QACzB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC;YACtD,CAAC,CAAC,CAAC,CAAC;IAER,IAAI,mBAAmB,GAAG,gBAAgB,IAAI,IAAI,GAAG,EAAmC,CAAC;IAEzF,4EAA4E;IAC5E,uEAAuE;IACvE,IAAI,CAAC,gBAAgB,IAAI,KAAK,GAAG,CAAC,EAAE;QAClC,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;YAC3B,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAC5D,mBAAmB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"serializer.utils.js","sourceRoot":"","sources":["../../src/utils/serializer.utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ts-japi",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.1",
|
|
4
4
|
"description": "A highly-modular (typescript-friendly)-framework agnostic library for serializing data to the JSON:API specification",
|
|
5
5
|
"main": "lib/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -19,7 +19,8 @@
|
|
|
19
19
|
"lint:eslint": "eslint .",
|
|
20
20
|
"playground": "ts-node ./benchmarks/playground.benchmark",
|
|
21
21
|
"prepare": "husky install",
|
|
22
|
-
"test": "jest --runInBand --verbose --coverage"
|
|
22
|
+
"test": "jest --runInBand --verbose --coverage",
|
|
23
|
+
"test:watch": "jest --runInBand --verbose --watch"
|
|
23
24
|
},
|
|
24
25
|
"publishConfig": {
|
|
25
26
|
"access": "public",
|