ts-japi 1.5.1 → 1.6.2

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.
Files changed (108) hide show
  1. package/.prettierrc +10 -0
  2. package/CHANGELOG.md +56 -16
  3. package/Makefile +19 -0
  4. package/README.md +235 -159
  5. package/api-extractor.json +14 -0
  6. package/benchmarks/playground.benchmark.ts +32 -32
  7. package/benchmarks/serializer.benchmark.ts +29 -29
  8. package/lib/classes/cache.d.ts +6 -6
  9. package/lib/classes/cache.d.ts.map +1 -1
  10. package/lib/classes/cache.js +26 -48
  11. package/lib/classes/cache.js.map +1 -1
  12. package/lib/classes/error-serializer.d.ts +9 -9
  13. package/lib/classes/error-serializer.d.ts.map +1 -1
  14. package/lib/classes/error-serializer.js +58 -125
  15. package/lib/classes/error-serializer.js.map +1 -1
  16. package/lib/classes/linker.d.ts +8 -8
  17. package/lib/classes/linker.d.ts.map +1 -1
  18. package/lib/classes/linker.js +15 -40
  19. package/lib/classes/linker.js.map +1 -1
  20. package/lib/classes/metaizer.d.ts +6 -6
  21. package/lib/classes/metaizer.d.ts.map +1 -1
  22. package/lib/classes/metaizer.js +12 -37
  23. package/lib/classes/metaizer.js.map +1 -1
  24. package/lib/classes/paginator.d.ts +6 -6
  25. package/lib/classes/paginator.d.ts.map +1 -1
  26. package/lib/classes/paginator.js +17 -16
  27. package/lib/classes/paginator.js.map +1 -1
  28. package/lib/classes/relator.d.ts +19 -18
  29. package/lib/classes/relator.d.ts.map +1 -1
  30. package/lib/classes/relator.js +70 -110
  31. package/lib/classes/relator.js.map +1 -1
  32. package/lib/classes/serializer.d.ts +20 -19
  33. package/lib/classes/serializer.d.ts.map +1 -1
  34. package/lib/classes/serializer.js +213 -311
  35. package/lib/classes/serializer.js.map +1 -1
  36. package/lib/index.d.ts +20 -20
  37. package/lib/index.js +17 -10
  38. package/lib/index.js.map +1 -1
  39. package/lib/interfaces/cache.interface.d.ts +3 -3
  40. package/lib/interfaces/cache.interface.d.ts.map +1 -1
  41. package/lib/interfaces/cache.interface.js +1 -1
  42. package/lib/interfaces/error-serializer.interface.d.ts +15 -15
  43. package/lib/interfaces/error-serializer.interface.d.ts.map +1 -1
  44. package/lib/interfaces/error-serializer.interface.js +1 -1
  45. package/lib/interfaces/error.interface.d.ts.map +1 -1
  46. package/lib/interfaces/error.interface.js +1 -1
  47. package/lib/interfaces/json-api.interface.d.ts +7 -7
  48. package/lib/interfaces/json-api.interface.d.ts.map +1 -1
  49. package/lib/interfaces/json-api.interface.js +1 -1
  50. package/lib/interfaces/linker.interface.d.ts +2 -2
  51. package/lib/interfaces/linker.interface.d.ts.map +1 -1
  52. package/lib/interfaces/linker.interface.js +1 -1
  53. package/lib/interfaces/paginator.interface.d.ts +1 -1
  54. package/lib/interfaces/paginator.interface.d.ts.map +1 -1
  55. package/lib/interfaces/paginator.interface.js +1 -1
  56. package/lib/interfaces/relator.interface.d.ts +7 -7
  57. package/lib/interfaces/relator.interface.d.ts.map +1 -1
  58. package/lib/interfaces/relator.interface.js +1 -1
  59. package/lib/interfaces/serializer.interface.d.ts +30 -30
  60. package/lib/interfaces/serializer.interface.d.ts.map +1 -1
  61. package/lib/interfaces/serializer.interface.js +1 -1
  62. package/lib/models/error.model.d.ts +5 -5
  63. package/lib/models/error.model.d.ts.map +1 -1
  64. package/lib/models/error.model.js +59 -22
  65. package/lib/models/error.model.js.map +1 -1
  66. package/lib/models/link.model.d.ts +2 -2
  67. package/lib/models/link.model.d.ts.map +1 -1
  68. package/lib/models/link.model.js +11 -10
  69. package/lib/models/link.model.js.map +1 -1
  70. package/lib/models/meta.model.d.ts.map +1 -1
  71. package/lib/models/meta.model.js +5 -6
  72. package/lib/models/meta.model.js.map +1 -1
  73. package/lib/models/relationship.model.d.ts +4 -4
  74. package/lib/models/relationship.model.d.ts.map +1 -1
  75. package/lib/models/relationship.model.js +11 -9
  76. package/lib/models/relationship.model.js.map +1 -1
  77. package/lib/models/resource-identifier.model.d.ts +1 -1
  78. package/lib/models/resource-identifier.model.d.ts.map +1 -1
  79. package/lib/models/resource-identifier.model.js +11 -9
  80. package/lib/models/resource-identifier.model.js.map +1 -1
  81. package/lib/models/resource.model.d.ts +4 -4
  82. package/lib/models/resource.model.d.ts.map +1 -1
  83. package/lib/models/resource.model.js +13 -26
  84. package/lib/models/resource.model.js.map +1 -1
  85. package/lib/tsdoc-metadata.json +11 -0
  86. package/lib/types/global.types.d.ts.map +1 -1
  87. package/lib/types/global.types.js +1 -1
  88. package/lib/utils/is-error-document.d.ts +2 -2
  89. package/lib/utils/is-error-document.js +7 -9
  90. package/lib/utils/is-error-document.js.map +1 -1
  91. package/lib/utils/is-object.js +2 -2
  92. package/lib/utils/is-object.js.map +1 -1
  93. package/lib/utils/is-plain-object.js +6 -6
  94. package/lib/utils/is-plain-object.js.map +1 -1
  95. package/lib/utils/merge.d.ts +3 -3
  96. package/lib/utils/merge.d.ts.map +1 -1
  97. package/lib/utils/merge.js +16 -62
  98. package/lib/utils/merge.js.map +1 -1
  99. package/lib/utils/serializer.utils.d.ts +5 -4
  100. package/lib/utils/serializer.utils.d.ts.map +1 -1
  101. package/lib/utils/serializer.utils.js +57 -168
  102. package/lib/utils/serializer.utils.js.map +1 -1
  103. package/package.json +94 -107
  104. package/tools/generate_docs.ts +33 -0
  105. package/tools/internal/custom_markdown_action.ts +32 -0
  106. package/tools/internal/custom_markdown_documenter.ts +1337 -0
  107. package/tsconfig.json +60 -83
  108. package/CONTRIBUTING.md +0 -127
@@ -1,58 +1,33 @@
1
1
  "use strict";
2
- var __read = (this && this.__read) || function (o, n) {
3
- var m = typeof Symbol === "function" && o[Symbol.iterator];
4
- if (!m) return o;
5
- var i = m.call(o), r, ar = [], e;
6
- try {
7
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
- }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
13
- }
14
- finally { if (e) throw e.error; }
15
- }
16
- return ar;
17
- };
18
- var __spread = (this && this.__spread) || function () {
19
- for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
20
- return ar;
21
- };
22
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
23
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
- exports.__esModule = true;
26
- var link_model_1 = __importDefault(require("../models/link.model"));
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const link_model_1 = __importDefault(require("../models/link.model"));
27
7
  /**
28
- * The {@linkcode Linker} class is used to construct a [link](https://jsonapi.org/format/#document-links).
8
+ * The {@link Linker} class is used to construct a [link](https://jsonapi.org/format/#document-links).
29
9
  *
30
10
  * Example:
31
11
  * ```typescript
32
12
  * [[include:linker.example.ts]]
33
13
  * ```
34
14
  */
35
- var Linker = /** @class */ (function () {
15
+ class Linker {
16
+ /** @internal Generates a {@link Link}. */
17
+ link;
36
18
  /**
37
- * Creates a {@linkcode Linker}.
19
+ * Creates a {@link Linker}.
38
20
  *
39
- * @param link A {@linkcode LinkFunction} used to generate a string URI from its arguments.
40
- * @param options Options for the linker.
21
+ * @param link - A {@link LinkFunction} used to generate a string URI from its arguments.
22
+ * @param options - Options for the linker.
41
23
  */
42
- function Linker(link, options) {
43
- if (options === void 0) { options = {}; }
44
- this.link = function () {
45
- var _a;
46
- var datas = [];
47
- for (var _i = 0; _i < arguments.length; _i++) {
48
- datas[_i] = arguments[_i];
49
- }
24
+ constructor(link, options = {}) {
25
+ this.link = (...datas) => {
50
26
  return options.metaizer
51
- ? new link_model_1["default"](link.apply(void 0, __spread(datas)), (_a = options.metaizer).metaize.apply(_a, __spread(datas)))
52
- : new link_model_1["default"](link.apply(void 0, __spread(datas)));
27
+ ? new link_model_1.default(link(...datas), options.metaizer.metaize(...datas))
28
+ : new link_model_1.default(link(...datas));
53
29
  };
54
30
  }
55
- return Linker;
56
- }());
57
- exports["default"] = Linker;
31
+ }
32
+ exports.default = Linker;
58
33
  //# sourceMappingURL=linker.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"linker.js","sourceRoot":"","sources":["../../src/classes/linker.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AACA,oEAAwC;AAGxC;;;;;;;GAOG;AACH;IAIC;;;;;OAKG;IACH,gBACC,IAA4C,EAC5C,OAAyC;QAAzC,wBAAA,EAAA,YAAyC;QAEzC,IAAI,CAAC,IAAI,GAAG;;YAAC,eAAsB;iBAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;gBAAtB,0BAAsB;;YAClC,OAAO,OAAO,CAAC,QAAQ;gBACtB,CAAC,CAAC,IAAI,uBAAI,CAAC,IAAI,wBAAI,KAAK,IAAG,CAAA,KAAA,OAAO,CAAC,QAAQ,CAAA,CAAC,OAAO,oBAAI,KAAK,GAAE;gBAC9D,CAAC,CAAC,IAAI,uBAAI,CAAC,IAAI,wBAAI,KAAK,GAAE,CAAC;QAC7B,CAAC,CAAC;IACH,CAAC;IACF,aAAC;AAAD,CAAC,AApBD,IAoBC"}
1
+ {"version":3,"file":"linker.js","sourceRoot":"","sources":["../../src/classes/linker.ts"],"names":[],"mappings":";;;;;AACA,sEAAwC;AAGxC;;;;;;;GAOG;AACH,MAAqB,MAAM;IACzB,0CAA0C;IACnC,IAAI,CAAuC;IAElD;;;;;OAKG;IACH,YACE,IAA4C,EAC5C,UAAuC,EAAE;QAEzC,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,KAAmB,EAAE,EAAE;YACrC,OAAO,OAAO,CAAC,QAAQ;gBACrB,CAAC,CAAC,IAAI,oBAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;gBAC9D,CAAC,CAAC,IAAI,oBAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC;IACJ,CAAC;CACF;AApBD,yBAoBC"}
@@ -1,7 +1,7 @@
1
- import Meta from "../models/meta.model";
2
- import { Dictionary, VariadicFunction } from "../types/global.types";
1
+ import Meta from '../models/meta.model';
2
+ import { Dictionary, VariadicFunction } from '../types/global.types';
3
3
  /**
4
- * The {@linkcode Metaizer} class is used to construct [meta information](https://jsonapi.org/format/#document-meta).
4
+ * The {@link Metaizer} class is used to construct [meta information](https://jsonapi.org/format/#document-meta).
5
5
  *
6
6
  * Example:
7
7
  * ```typescript
@@ -9,12 +9,12 @@ import { Dictionary, VariadicFunction } from "../types/global.types";
9
9
  * ```
10
10
  */
11
11
  export default class Metaizer<Dependencies extends any[]> {
12
- /** @internal Generates a {@linkcode Meta}. */
12
+ /** @internal Generates a {@link Meta}. */
13
13
  metaize: VariadicFunction<Dependencies, Meta>;
14
14
  /**
15
- * Creates a {@linkcode Metaizer}.
15
+ * Creates a {@link Metaizer}.
16
16
  *
17
- * @param metaize A function to generate [meta information](https://jsonapi.org/format/#document-meta)
17
+ * @param metaize - A function to generate [meta information](https://jsonapi.org/format/#document-meta)
18
18
  * from its arguments.
19
19
  */
20
20
  constructor(metaize: VariadicFunction<Dependencies, Dictionary<any>>);
@@ -1 +1 @@
1
- {"version":3,"file":"metaizer.d.ts","sourceRoot":"","sources":["../../src/classes/metaizer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,sBAAsB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ,CAAC,YAAY,SAAS,GAAG,EAAE;IACvD,8CAA8C;IACvC,OAAO,EAAE,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAErD;;;;;OAKG;gBACgB,OAAO,EAAE,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;CAG3E"}
1
+ {"version":3,"file":"metaizer.d.ts","sourceRoot":"","sources":["../../src/classes/metaizer.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,sBAAsB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAErE;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,QAAQ,CAAC,YAAY,SAAS,GAAG,EAAE;IACtD,0CAA0C;IACnC,OAAO,EAAE,gBAAgB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAErD;;;;;OAKG;gBACgB,OAAO,EAAE,gBAAgB,CAAC,YAAY,EAAE,UAAU,CAAC,GAAG,CAAC,CAAC;CAG5E"}
@@ -1,54 +1,29 @@
1
1
  "use strict";
2
- var __read = (this && this.__read) || function (o, n) {
3
- var m = typeof Symbol === "function" && o[Symbol.iterator];
4
- if (!m) return o;
5
- var i = m.call(o), r, ar = [], e;
6
- try {
7
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
8
- }
9
- catch (error) { e = { error: error }; }
10
- finally {
11
- try {
12
- if (r && !r.done && (m = i["return"])) m.call(i);
13
- }
14
- finally { if (e) throw e.error; }
15
- }
16
- return ar;
17
- };
18
- var __spread = (this && this.__spread) || function () {
19
- for (var ar = [], i = 0; i < arguments.length; i++) ar = ar.concat(__read(arguments[i]));
20
- return ar;
21
- };
22
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
23
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
24
4
  };
25
- exports.__esModule = true;
26
- var meta_model_1 = __importDefault(require("../models/meta.model"));
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const meta_model_1 = __importDefault(require("../models/meta.model"));
27
7
  /**
28
- * The {@linkcode Metaizer} class is used to construct [meta information](https://jsonapi.org/format/#document-meta).
8
+ * The {@link Metaizer} class is used to construct [meta information](https://jsonapi.org/format/#document-meta).
29
9
  *
30
10
  * Example:
31
11
  * ```typescript
32
12
  * [[include:metaizer.example.ts]]
33
13
  * ```
34
14
  */
35
- var Metaizer = /** @class */ (function () {
15
+ class Metaizer {
16
+ /** @internal Generates a {@link Meta}. */
17
+ metaize;
36
18
  /**
37
- * Creates a {@linkcode Metaizer}.
19
+ * Creates a {@link Metaizer}.
38
20
  *
39
- * @param metaize A function to generate [meta information](https://jsonapi.org/format/#document-meta)
21
+ * @param metaize - A function to generate [meta information](https://jsonapi.org/format/#document-meta)
40
22
  * from its arguments.
41
23
  */
42
- function Metaizer(metaize) {
43
- this.metaize = function () {
44
- var datas = [];
45
- for (var _i = 0; _i < arguments.length; _i++) {
46
- datas[_i] = arguments[_i];
47
- }
48
- return new meta_model_1["default"](metaize.apply(void 0, __spread(datas)));
49
- };
24
+ constructor(metaize) {
25
+ this.metaize = (...datas) => new meta_model_1.default(metaize(...datas));
50
26
  }
51
- return Metaizer;
52
- }());
53
- exports["default"] = Metaizer;
27
+ }
28
+ exports.default = Metaizer;
54
29
  //# sourceMappingURL=metaizer.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metaizer.js","sourceRoot":"","sources":["../../src/classes/metaizer.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oEAAwC;AAGxC;;;;;;;GAOG;AACH;IAIC;;;;;OAKG;IACH,kBAAmB,OAAwD;QAC1E,IAAI,CAAC,OAAO,GAAG;YAAC,eAAsB;iBAAtB,UAAsB,EAAtB,qBAAsB,EAAtB,IAAsB;gBAAtB,0BAAsB;;YAAK,OAAA,IAAI,uBAAI,CAAC,OAAO,wBAAI,KAAK,GAAE;QAA3B,CAA2B,CAAC;IACxE,CAAC;IACF,eAAC;AAAD,CAAC,AAbD,IAaC"}
1
+ {"version":3,"file":"metaizer.js","sourceRoot":"","sources":["../../src/classes/metaizer.ts"],"names":[],"mappings":";;;;;AAAA,sEAAwC;AAGxC;;;;;;;GAOG;AACH,MAAqB,QAAQ;IAC3B,0CAA0C;IACnC,OAAO,CAAuC;IAErD;;;;;OAKG;IACH,YAAmB,OAAwD;QACzE,IAAI,CAAC,OAAO,GAAG,CAAC,GAAG,KAAmB,EAAE,EAAE,CAAC,IAAI,oBAAI,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACzE,CAAC;CACF;AAbD,2BAaC"}
@@ -1,8 +1,8 @@
1
- import { PaginationOf } from "../interfaces/paginator.interface";
2
- import Link from "../models/link.model";
3
- import { SingleOrArray } from "../types/global.types";
1
+ import { PaginationOf } from '../interfaces/paginator.interface';
2
+ import Link from '../models/link.model';
3
+ import { SingleOrArray } from '../types/global.types';
4
4
  /**
5
- * The {@linkcode Paginator} class is used to construct [pagination links](https://jsonapi.org/format/#fetching-pagination).
5
+ * The {@link Paginator} class is used to construct [pagination links](https://jsonapi.org/format/#fetching-pagination).
6
6
  *
7
7
  * Example:
8
8
  * ```typescript
@@ -13,9 +13,9 @@ export default class Paginator<DataType> {
13
13
  /** @internal Generates pagination links. */
14
14
  paginate: (data: SingleOrArray<DataType>) => PaginationOf<Link> | void;
15
15
  /**
16
- * Creates a {@linkcode Paginator}.
16
+ * Creates a {@link Paginator}.
17
17
  *
18
- * @param paginate A function to generate pagination links from data.
18
+ * @param paginate - A function to generate pagination links from data.
19
19
  */
20
20
  constructor(paginate: (data: SingleOrArray<DataType>) => PaginationOf<string> | void);
21
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"paginator.d.ts","sourceRoot":"","sources":["../../src/classes/paginator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,IAAI,MAAM,sBAAsB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS,CAAC,QAAQ;IACtC,4CAA4C;IACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE9E;;;;OAIG;gBACgB,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;CAY3F"}
1
+ {"version":3,"file":"paginator.d.ts","sourceRoot":"","sources":["../../src/classes/paginator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,IAAI,MAAM,sBAAsB,CAAC;AACxC,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,OAAO,SAAS,CAAC,QAAQ;IACrC,4CAA4C;IACrC,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAE9E;;;;OAIG;gBACgB,QAAQ,EAAE,CAAC,IAAI,EAAE,aAAa,CAAC,QAAQ,CAAC,KAAK,YAAY,CAAC,MAAM,CAAC,GAAG,IAAI;CAY5F"}
@@ -2,36 +2,37 @@
2
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
- exports.__esModule = true;
6
- var link_model_1 = __importDefault(require("../models/link.model"));
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const link_model_1 = __importDefault(require("../models/link.model"));
7
7
  /**
8
- * The {@linkcode Paginator} class is used to construct [pagination links](https://jsonapi.org/format/#fetching-pagination).
8
+ * The {@link Paginator} class is used to construct [pagination links](https://jsonapi.org/format/#fetching-pagination).
9
9
  *
10
10
  * Example:
11
11
  * ```typescript
12
12
  * [[include:paginator.example.ts]]
13
13
  * ```
14
14
  */
15
- var Paginator = /** @class */ (function () {
15
+ class Paginator {
16
+ /** @internal Generates pagination links. */
17
+ paginate;
16
18
  /**
17
- * Creates a {@linkcode Paginator}.
19
+ * Creates a {@link Paginator}.
18
20
  *
19
- * @param paginate A function to generate pagination links from data.
21
+ * @param paginate - A function to generate pagination links from data.
20
22
  */
21
- function Paginator(paginate) {
22
- this.paginate = function (data) {
23
- var links = paginate(data);
23
+ constructor(paginate) {
24
+ this.paginate = (data) => {
25
+ const links = paginate(data);
24
26
  if (!links)
25
27
  return;
26
28
  return {
27
- first: typeof links.first === "string" ? new link_model_1["default"](links.first) : links.first,
28
- last: typeof links.last === "string" ? new link_model_1["default"](links.last) : links.last,
29
- prev: typeof links.prev === "string" ? new link_model_1["default"](links.prev) : links.prev,
30
- next: typeof links.next === "string" ? new link_model_1["default"](links.next) : links.next
29
+ first: typeof links.first === 'string' ? new link_model_1.default(links.first) : links.first,
30
+ last: typeof links.last === 'string' ? new link_model_1.default(links.last) : links.last,
31
+ prev: typeof links.prev === 'string' ? new link_model_1.default(links.prev) : links.prev,
32
+ next: typeof links.next === 'string' ? new link_model_1.default(links.next) : links.next,
31
33
  };
32
34
  };
33
35
  }
34
- return Paginator;
35
- }());
36
- exports["default"] = Paginator;
36
+ }
37
+ exports.default = Paginator;
37
38
  //# sourceMappingURL=paginator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"paginator.js","sourceRoot":"","sources":["../../src/classes/paginator.ts"],"names":[],"mappings":";;;;;AACA,oEAAwC;AAGxC;;;;;;;GAOG;AACH;IAIC;;;;OAIG;IACH,mBAAmB,QAAwE;QAC1F,IAAI,CAAC,QAAQ,GAAG,UAAC,IAA6B;YAC7C,IAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,OAAO;gBACN,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,uBAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;gBAC5E,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,uBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;gBACxE,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,uBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;gBACxE,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,uBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;aACxE,CAAC;QACH,CAAC,CAAC;IACH,CAAC;IACF,gBAAC;AAAD,CAAC,AArBD,IAqBC"}
1
+ {"version":3,"file":"paginator.js","sourceRoot":"","sources":["../../src/classes/paginator.ts"],"names":[],"mappings":";;;;;AACA,sEAAwC;AAGxC;;;;;;;GAOG;AACH,MAAqB,SAAS;IAC5B,4CAA4C;IACrC,QAAQ,CAA+D;IAE9E;;;;OAIG;IACH,YAAmB,QAAwE;QACzF,IAAI,CAAC,QAAQ,GAAG,CAAC,IAA6B,EAAE,EAAE;YAChD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC7B,IAAI,CAAC,KAAK;gBAAE,OAAO;YACnB,OAAO;gBACL,KAAK,EAAE,OAAO,KAAK,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,oBAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;gBAC5E,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,oBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;gBACxE,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,oBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;gBACxE,IAAI,EAAE,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,oBAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI;aACzE,CAAC;QACJ,CAAC,CAAC;IACJ,CAAC;CACF;AArBD,4BAqBC"}
@@ -1,14 +1,15 @@
1
- import { RelatorOptions } from "../interfaces/relator.interface";
2
- import { SerializerOptions } from "../interfaces/serializer.interface";
3
- import Link from "../models/link.model";
4
- import Meta from "../models/meta.model";
5
- import Relationship from "../models/relationship.model";
6
- import ResourceIdentifier from "../models/resource-identifier.model";
7
- import Resource from "../models/resource.model";
8
- import { Dictionary, nullish } from "../types/global.types";
9
- import Serializer from "./serializer";
1
+ import { RelatorOptions } from '../interfaces/relator.interface';
2
+ import { SerializerOptions } from '../interfaces/serializer.interface';
3
+ import Link from '../models/link.model';
4
+ import Meta from '../models/meta.model';
5
+ import Relationship from '../models/relationship.model';
6
+ import ResourceIdentifier from '../models/resource-identifier.model';
7
+ import Resource from '../models/resource.model';
8
+ import { Dictionary, nullish } from '../types/global.types';
9
+ import { Helpers } from '../utils/serializer.utils';
10
+ import Serializer from './serializer';
10
11
  /**
11
- * The {@linkcode Relator} class is used to generate top-level [included data](https://jsonapi.org/format/#document-top-level)
12
+ * The {@link Relator} class is used to generate top-level [included data](https://jsonapi.org/format/#document-top-level)
12
13
  * as well as resource-level [relationships](https://jsonapi.org/format/#document-resource-object-relationships).
13
14
  *
14
15
  * Example:
@@ -29,11 +30,11 @@ export default class Relator<PrimaryType, RelatedType extends Dictionary<any> =
29
30
  private options;
30
31
  relatedName: string;
31
32
  /**
32
- * Creates a {@linkcode Relator}.
33
+ * Creates a {@link Relator}.
33
34
  *
34
- * @param fetch Fetches related data from primary data.
35
- * @param serializer The `Serializer` to use for related data.
36
- * @param options Options for the relator.
35
+ * @param fetch - Fetches related data from primary data.
36
+ * @param serializer - The `Serializer` to use for related data.
37
+ * @param options - Options for the relator.
37
38
  */
38
39
  constructor(fetch: (data: PrimaryType) => Promise<RelatedType | RelatedType[] | nullish>, serializer: Serializer<RelatedType>, options?: Partial<RelatorOptions<PrimaryType, RelatedType>>);
39
40
  /** @internal Gets related data from primary data. */
@@ -43,12 +44,12 @@ export default class Relator<PrimaryType, RelatedType extends Dictionary<any> =
43
44
  /** @internal Creates related identifiers */
44
45
  getRelatedIdentifier: (data: RelatedType, options?: SerializerOptions<RelatedType> | undefined) => ResourceIdentifier;
45
46
  /** @internal Creates related resources */
46
- getRelatedResource: (data: RelatedType, options?: SerializerOptions<RelatedType>) => Promise<Resource<RelatedType>>;
47
+ getRelatedResource: (data: RelatedType, options?: SerializerOptions<RelatedType>, helpers?: Helpers<RelatedType>, relatorDataCache?: Map<Relator<any>, Dictionary<any>[]>) => Promise<Resource<RelatedType>>;
47
48
  /** @internal Gets related links from primary data and related data */
48
- getRelatedLinks(data: PrimaryType, relatedData: RelatedType | RelatedType[] | nullish): Record<string | number | symbol, Link | null | undefined> | undefined;
49
+ getRelatedLinks(data: PrimaryType, relatedData: RelatedType | RelatedType[] | nullish): Dictionary<nullish | Link> | undefined;
49
50
  /** @internal Gets related meta from primary data and related data */
50
51
  getRelatedMeta(data: PrimaryType, relatedData: RelatedType | RelatedType[] | nullish): Meta | undefined;
51
- /** @internal Creates a {@linkcode Relationship}. */
52
- getRelationship(data: PrimaryType): Promise<Relationship>;
52
+ /** @internal Creates a {@link Relationship}. */
53
+ getRelationship(data: PrimaryType, relatedDataCache?: Dictionary<any>[]): Promise<Relationship>;
53
54
  }
54
55
  //# sourceMappingURL=relator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"relator.d.ts","sourceRoot":"","sources":["../../src/classes/relator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,IAAI,MAAM,sBAAsB,CAAC;AACxC,OAAO,IAAI,MAAM,sBAAsB,CAAC;AACxC,OAAO,YAAqC,MAAM,8BAA8B,CAAC;AACjF,OAAO,kBAAkB,MAAM,qCAAqC,CAAC;AACrE,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO,CAAC,WAAW,EAAE,WAAW,SAAS,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG;IAClF;;OAEG;IACH,OAAc,cAAc;;MAE1B;IAEF;;OAEG;IACH,OAAO,CAAC,OAAO,CAA2C;IAEnD,WAAW,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;gBAEF,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,EAC5E,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC,EACnC,OAAO,GAAE,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAM;IAWhE,qDAAqD;IAC9C,cAAc,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,CAAC;IAE7F,sCAAsC;IAC/B,kBAAkB,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;IAEvF,4CAA4C;IACrC,oBAAoB,EAAE,CAC5B,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,GAAG,SAAS,KAChD,kBAAkB,CAAC;IAExB,0CAA0C;IACnC,kBAAkB,EAAE,CAC1B,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,KACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAEpC,sEAAsE;IAC/D,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO;IAW5F,qEAAqE;IAC9D,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO;IAQ3F,oDAAoD;IACvC,eAAe,CAAC,IAAI,EAAE,WAAW;CA4B9C"}
1
+ {"version":3,"file":"relator.d.ts","sourceRoot":"","sources":["../../src/classes/relator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,IAAI,MAAM,sBAAsB,CAAC;AACxC,OAAO,IAAI,MAAM,sBAAsB,CAAC;AACxC,OAAO,YAAqC,MAAM,8BAA8B,CAAC;AACjF,OAAO,kBAAkB,MAAM,qCAAqC,CAAC;AACrE,OAAO,QAAQ,MAAM,0BAA0B,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAE,MAAM,2BAA2B,CAAC;AACpD,OAAO,UAAU,MAAM,cAAc,CAAC;AAEtC;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,OAAO,OAAO,CAAC,WAAW,EAAE,WAAW,SAAS,UAAU,CAAC,GAAG,CAAC,GAAG,GAAG;IACjF;;OAEG;IACH,OAAc,cAAc;;MAE1B;IAEF;;OAEG;IACH,OAAO,CAAC,OAAO,CAA2C;IAEnD,WAAW,EAAE,MAAM,CAAC;IAC3B;;;;;;OAMG;gBAED,KAAK,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,EAC5E,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC,EACnC,OAAO,GAAE,OAAO,CAAC,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,CAAM;IAWjE,qDAAqD;IAC9C,cAAc,EAAE,CAAC,IAAI,EAAE,WAAW,KAAK,OAAO,CAAC,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC,CAAC;IAE7F,sCAAsC;IAC/B,kBAAkB,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,GAAG,SAAS,CAAC;IAEvF,4CAA4C;IACrC,oBAAoB,EAAE,CAC3B,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,GAAG,SAAS,KACjD,kBAAkB,CAAC;IAExB,0CAA0C;IACnC,kBAAkB,EAAE,CACzB,IAAI,EAAE,WAAW,EACjB,OAAO,CAAC,EAAE,iBAAiB,CAAC,WAAW,CAAC,EACxC,OAAO,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,EAC9B,gBAAgB,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,KACpD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAEpC,sEAAsE;IAC/D,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO;IAW5F,qEAAqE;IAC9D,cAAc,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,GAAG,WAAW,EAAE,GAAG,OAAO;IAQ3F,gDAAgD;IACnC,eAAe,CAAC,IAAI,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAE,UAAU,CAAC,GAAG,CAAC,EAAE;CA+BrF"}
@@ -1,59 +1,12 @@
1
1
  "use strict";
2
- var __assign = (this && this.__assign) || function () {
3
- __assign = Object.assign || function(t) {
4
- for (var s, i = 1, n = arguments.length; i < n; i++) {
5
- s = arguments[i];
6
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
7
- t[p] = s[p];
8
- }
9
- return t;
10
- };
11
- return __assign.apply(this, arguments);
12
- };
13
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
- return new (P || (P = Promise))(function (resolve, reject) {
16
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20
- });
21
- };
22
- var __generator = (this && this.__generator) || function (thisArg, body) {
23
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
24
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
25
- function verb(n) { return function (v) { return step([n, v]); }; }
26
- function step(op) {
27
- if (f) throw new TypeError("Generator is already executing.");
28
- while (_) try {
29
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
30
- if (y = 0, t) op = [op[0] & 2, t.value];
31
- switch (op[0]) {
32
- case 0: case 1: t = op; break;
33
- case 4: _.label++; return { value: op[1], done: false };
34
- case 5: _.label++; y = op[1]; op = [0]; continue;
35
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
36
- default:
37
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
38
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
39
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
40
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
41
- if (t[2]) _.ops.pop();
42
- _.trys.pop(); continue;
43
- }
44
- op = body.call(thisArg, _);
45
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
46
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
47
- }
48
- };
49
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
50
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
51
4
  };
52
- exports.__esModule = true;
53
- var relationship_model_1 = __importDefault(require("../models/relationship.model"));
54
- var merge_1 = __importDefault(require("../utils/merge"));
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const relationship_model_1 = __importDefault(require("../models/relationship.model"));
7
+ const merge_1 = __importDefault(require("../utils/merge"));
55
8
  /**
56
- * The {@linkcode Relator} class is used to generate top-level [included data](https://jsonapi.org/format/#document-top-level)
9
+ * The {@link Relator} class is used to generate top-level [included data](https://jsonapi.org/format/#document-top-level)
57
10
  * as well as resource-level [relationships](https://jsonapi.org/format/#document-resource-object-relationships).
58
11
  *
59
12
  * Example:
@@ -61,84 +14,91 @@ var merge_1 = __importDefault(require("../utils/merge"));
61
14
  * [[include:relator.example.ts]]
62
15
  * ```
63
16
  */
64
- var Relator = /** @class */ (function () {
17
+ class Relator {
65
18
  /**
66
- * Creates a {@linkcode Relator}.
19
+ * Default options. Can be edited to change default options globally.
20
+ */
21
+ static defaultOptions = {
22
+ linkers: {},
23
+ };
24
+ /**
25
+ * Options for relator.
26
+ */
27
+ options;
28
+ relatedName;
29
+ /**
30
+ * Creates a {@link Relator}.
67
31
  *
68
- * @param fetch Fetches related data from primary data.
69
- * @param serializer The `Serializer` to use for related data.
70
- * @param options Options for the relator.
32
+ * @param fetch - Fetches related data from primary data.
33
+ * @param serializer - The `Serializer` to use for related data.
34
+ * @param options - Options for the relator.
71
35
  */
72
- function Relator(fetch, serializer, options) {
73
- if (options === void 0) { options = {}; }
36
+ constructor(fetch, serializer, options = {}) {
74
37
  // Setting default options
75
38
  this.relatedName = serializer.collectionName;
76
- this.options = merge_1["default"]({}, Relator.defaultOptions, options);
39
+ this.options = (0, merge_1.default)({}, Relator.defaultOptions, options);
77
40
  this.getRelatedData = fetch;
78
41
  this.getRelatedResource = serializer.createResource.bind(serializer);
79
42
  this.getRelatedIdentifier = serializer.createIdentifier.bind(serializer);
80
43
  this.getRelatedRelators = serializer.getRelators.bind(serializer);
81
44
  }
45
+ /** @internal Gets related data from primary data. */
46
+ getRelatedData;
47
+ /** @internal Gets related relators */
48
+ getRelatedRelators;
49
+ /** @internal Creates related identifiers */
50
+ getRelatedIdentifier;
51
+ /** @internal Creates related resources */
52
+ getRelatedResource;
82
53
  /** @internal Gets related links from primary data and related data */
83
- Relator.prototype.getRelatedLinks = function (data, relatedData) {
84
- var links;
54
+ getRelatedLinks(data, relatedData) {
55
+ let links;
85
56
  if (this.options.linkers.relationship) {
86
- links = __assign(__assign({}, links), { self: this.options.linkers.relationship.link(data, relatedData) });
57
+ links = { ...links, self: this.options.linkers.relationship.link(data, relatedData) };
87
58
  }
88
59
  if (this.options.linkers.related) {
89
- links = __assign(__assign({}, links), { related: this.options.linkers.related.link(data, relatedData) });
60
+ links = { ...links, related: this.options.linkers.related.link(data, relatedData) };
90
61
  }
91
62
  return links;
92
- };
63
+ }
93
64
  /** @internal Gets related meta from primary data and related data */
94
- Relator.prototype.getRelatedMeta = function (data, relatedData) {
95
- var meta;
65
+ getRelatedMeta(data, relatedData) {
66
+ let meta;
96
67
  if (this.options.metaizer) {
97
68
  meta = this.options.metaizer.metaize(data, relatedData);
98
69
  }
99
70
  return meta;
100
- };
101
- /** @internal Creates a {@linkcode Relationship}. */
102
- Relator.prototype.getRelationship = function (data) {
103
- return __awaiter(this, void 0, void 0, function () {
104
- var relationshipOptions, relatedData, links, meta;
105
- var _this = this;
106
- return __generator(this, function (_a) {
107
- switch (_a.label) {
108
- case 0:
109
- relationshipOptions = {};
110
- return [4 /*yield*/, this.getRelatedData(data)];
111
- case 1:
112
- relatedData = _a.sent();
113
- links = this.getRelatedLinks(data, relatedData);
114
- if (links)
115
- relationshipOptions.links = links;
116
- // Construct related resources.
117
- if (relatedData !== undefined) {
118
- if (relatedData === null) {
119
- relationshipOptions.data = null;
120
- }
121
- else {
122
- relationshipOptions.data = Array.isArray(relatedData)
123
- ? relatedData.map(function (data) { return _this.getRelatedIdentifier(data); })
124
- : this.getRelatedIdentifier(relatedData);
125
- }
126
- }
127
- meta = this.getRelatedMeta(data, relatedData);
128
- if (meta)
129
- relationshipOptions.meta = meta;
130
- return [2 /*return*/, new relationship_model_1["default"](relationshipOptions)];
131
- }
132
- });
133
- });
134
- };
135
- /**
136
- * Default options. Can be edited to change default options globally.
137
- */
138
- Relator.defaultOptions = {
139
- linkers: {}
140
- };
141
- return Relator;
142
- }());
143
- exports["default"] = Relator;
71
+ }
72
+ /** @internal Creates a {@link Relationship}. */
73
+ async getRelationship(data, relatedDataCache) {
74
+ // Initialize options.
75
+ const relationshipOptions = {};
76
+ // Get related data.
77
+ const relatedData = await this.getRelatedData(data);
78
+ if (relatedData && relatedDataCache) {
79
+ relatedDataCache.push(...(Array.isArray(relatedData) ? relatedData : [relatedData]));
80
+ }
81
+ // Get related links.
82
+ const links = this.getRelatedLinks(data, relatedData);
83
+ if (links)
84
+ relationshipOptions.links = links;
85
+ // Construct related resources.
86
+ if (relatedData !== undefined) {
87
+ if (relatedData === null) {
88
+ relationshipOptions.data = null;
89
+ }
90
+ else {
91
+ relationshipOptions.data = Array.isArray(relatedData)
92
+ ? relatedData.map((data) => this.getRelatedIdentifier(data))
93
+ : this.getRelatedIdentifier(relatedData);
94
+ }
95
+ }
96
+ // Get meta.
97
+ const meta = this.getRelatedMeta(data, relatedData);
98
+ if (meta)
99
+ relationshipOptions.meta = meta;
100
+ return new relationship_model_1.default(relationshipOptions);
101
+ }
102
+ }
103
+ exports.default = Relator;
144
104
  //# sourceMappingURL=relator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"relator.js","sourceRoot":"","sources":["../../src/classes/relator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relator.js","sourceRoot":"","sources":["../../src/classes/relator.ts"],"names":[],"mappings":"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"}