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.
- package/.prettierrc +10 -0
- package/CHANGELOG.md +56 -16
- package/Makefile +19 -0
- package/README.md +235 -159
- package/api-extractor.json +14 -0
- package/benchmarks/playground.benchmark.ts +32 -32
- package/benchmarks/serializer.benchmark.ts +29 -29
- package/lib/classes/cache.d.ts +6 -6
- package/lib/classes/cache.d.ts.map +1 -1
- package/lib/classes/cache.js +26 -48
- package/lib/classes/cache.js.map +1 -1
- package/lib/classes/error-serializer.d.ts +9 -9
- package/lib/classes/error-serializer.d.ts.map +1 -1
- package/lib/classes/error-serializer.js +58 -125
- package/lib/classes/error-serializer.js.map +1 -1
- package/lib/classes/linker.d.ts +8 -8
- package/lib/classes/linker.d.ts.map +1 -1
- package/lib/classes/linker.js +15 -40
- package/lib/classes/linker.js.map +1 -1
- package/lib/classes/metaizer.d.ts +6 -6
- package/lib/classes/metaizer.d.ts.map +1 -1
- package/lib/classes/metaizer.js +12 -37
- package/lib/classes/metaizer.js.map +1 -1
- package/lib/classes/paginator.d.ts +6 -6
- package/lib/classes/paginator.d.ts.map +1 -1
- package/lib/classes/paginator.js +17 -16
- package/lib/classes/paginator.js.map +1 -1
- package/lib/classes/relator.d.ts +19 -18
- package/lib/classes/relator.d.ts.map +1 -1
- package/lib/classes/relator.js +70 -110
- package/lib/classes/relator.js.map +1 -1
- package/lib/classes/serializer.d.ts +20 -19
- package/lib/classes/serializer.d.ts.map +1 -1
- package/lib/classes/serializer.js +213 -311
- package/lib/classes/serializer.js.map +1 -1
- package/lib/index.d.ts +20 -20
- package/lib/index.js +17 -10
- package/lib/index.js.map +1 -1
- package/lib/interfaces/cache.interface.d.ts +3 -3
- package/lib/interfaces/cache.interface.d.ts.map +1 -1
- package/lib/interfaces/cache.interface.js +1 -1
- package/lib/interfaces/error-serializer.interface.d.ts +15 -15
- package/lib/interfaces/error-serializer.interface.d.ts.map +1 -1
- package/lib/interfaces/error-serializer.interface.js +1 -1
- package/lib/interfaces/error.interface.d.ts.map +1 -1
- package/lib/interfaces/error.interface.js +1 -1
- package/lib/interfaces/json-api.interface.d.ts +7 -7
- package/lib/interfaces/json-api.interface.d.ts.map +1 -1
- package/lib/interfaces/json-api.interface.js +1 -1
- package/lib/interfaces/linker.interface.d.ts +2 -2
- package/lib/interfaces/linker.interface.d.ts.map +1 -1
- package/lib/interfaces/linker.interface.js +1 -1
- package/lib/interfaces/paginator.interface.d.ts +1 -1
- package/lib/interfaces/paginator.interface.d.ts.map +1 -1
- package/lib/interfaces/paginator.interface.js +1 -1
- package/lib/interfaces/relator.interface.d.ts +7 -7
- package/lib/interfaces/relator.interface.d.ts.map +1 -1
- package/lib/interfaces/relator.interface.js +1 -1
- package/lib/interfaces/serializer.interface.d.ts +30 -30
- package/lib/interfaces/serializer.interface.d.ts.map +1 -1
- package/lib/interfaces/serializer.interface.js +1 -1
- package/lib/models/error.model.d.ts +5 -5
- package/lib/models/error.model.d.ts.map +1 -1
- package/lib/models/error.model.js +59 -22
- package/lib/models/error.model.js.map +1 -1
- package/lib/models/link.model.d.ts +2 -2
- package/lib/models/link.model.d.ts.map +1 -1
- package/lib/models/link.model.js +11 -10
- package/lib/models/link.model.js.map +1 -1
- package/lib/models/meta.model.d.ts.map +1 -1
- package/lib/models/meta.model.js +5 -6
- package/lib/models/meta.model.js.map +1 -1
- package/lib/models/relationship.model.d.ts +4 -4
- package/lib/models/relationship.model.d.ts.map +1 -1
- package/lib/models/relationship.model.js +11 -9
- package/lib/models/relationship.model.js.map +1 -1
- package/lib/models/resource-identifier.model.d.ts +1 -1
- package/lib/models/resource-identifier.model.d.ts.map +1 -1
- package/lib/models/resource-identifier.model.js +11 -9
- package/lib/models/resource-identifier.model.js.map +1 -1
- package/lib/models/resource.model.d.ts +4 -4
- package/lib/models/resource.model.d.ts.map +1 -1
- package/lib/models/resource.model.js +13 -26
- package/lib/models/resource.model.js.map +1 -1
- package/lib/tsdoc-metadata.json +11 -0
- package/lib/types/global.types.d.ts.map +1 -1
- package/lib/types/global.types.js +1 -1
- package/lib/utils/is-error-document.d.ts +2 -2
- package/lib/utils/is-error-document.js +7 -9
- package/lib/utils/is-error-document.js.map +1 -1
- package/lib/utils/is-object.js +2 -2
- package/lib/utils/is-object.js.map +1 -1
- package/lib/utils/is-plain-object.js +6 -6
- package/lib/utils/is-plain-object.js.map +1 -1
- package/lib/utils/merge.d.ts +3 -3
- package/lib/utils/merge.d.ts.map +1 -1
- package/lib/utils/merge.js +16 -62
- package/lib/utils/merge.js.map +1 -1
- package/lib/utils/serializer.utils.d.ts +5 -4
- package/lib/utils/serializer.utils.d.ts.map +1 -1
- package/lib/utils/serializer.utils.js +57 -168
- package/lib/utils/serializer.utils.js.map +1 -1
- package/package.json +94 -107
- package/tools/generate_docs.ts +33 -0
- package/tools/internal/custom_markdown_action.ts +32 -0
- package/tools/internal/custom_markdown_documenter.ts +1337 -0
- package/tsconfig.json +60 -83
- package/CONTRIBUTING.md +0 -127
package/lib/classes/linker.js
CHANGED
|
@@ -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
|
|
26
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const link_model_1 = __importDefault(require("../models/link.model"));
|
|
27
7
|
/**
|
|
28
|
-
* The {@
|
|
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
|
-
|
|
15
|
+
class Linker {
|
|
16
|
+
/** @internal Generates a {@link Link}. */
|
|
17
|
+
link;
|
|
36
18
|
/**
|
|
37
|
-
* Creates a {@
|
|
19
|
+
* Creates a {@link Linker}.
|
|
38
20
|
*
|
|
39
|
-
* @param link A {@
|
|
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
|
-
|
|
43
|
-
|
|
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
|
|
52
|
-
: new link_model_1
|
|
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
|
-
|
|
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":"
|
|
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
|
|
2
|
-
import { Dictionary, VariadicFunction } from
|
|
1
|
+
import Meta from '../models/meta.model';
|
|
2
|
+
import { Dictionary, VariadicFunction } from '../types/global.types';
|
|
3
3
|
/**
|
|
4
|
-
* The {@
|
|
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 {@
|
|
12
|
+
/** @internal Generates a {@link Meta}. */
|
|
13
13
|
metaize: VariadicFunction<Dependencies, Meta>;
|
|
14
14
|
/**
|
|
15
|
-
* Creates a {@
|
|
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;
|
|
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"}
|
package/lib/classes/metaizer.js
CHANGED
|
@@ -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
|
|
26
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const meta_model_1 = __importDefault(require("../models/meta.model"));
|
|
27
7
|
/**
|
|
28
|
-
* The {@
|
|
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
|
-
|
|
15
|
+
class Metaizer {
|
|
16
|
+
/** @internal Generates a {@link Meta}. */
|
|
17
|
+
metaize;
|
|
36
18
|
/**
|
|
37
|
-
* Creates a {@
|
|
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
|
-
|
|
43
|
-
this.metaize =
|
|
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
|
-
|
|
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":"
|
|
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
|
|
2
|
-
import Link from
|
|
3
|
-
import { SingleOrArray } from
|
|
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 {@
|
|
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 {@
|
|
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;
|
|
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"}
|
package/lib/classes/paginator.js
CHANGED
|
@@ -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
|
|
6
|
-
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const link_model_1 = __importDefault(require("../models/link.model"));
|
|
7
7
|
/**
|
|
8
|
-
* The {@
|
|
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
|
-
|
|
15
|
+
class Paginator {
|
|
16
|
+
/** @internal Generates pagination links. */
|
|
17
|
+
paginate;
|
|
16
18
|
/**
|
|
17
|
-
* Creates a {@
|
|
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
|
-
|
|
22
|
-
this.paginate =
|
|
23
|
-
|
|
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 ===
|
|
28
|
-
last: typeof links.last ===
|
|
29
|
-
prev: typeof links.prev ===
|
|
30
|
-
next: typeof 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
|
-
|
|
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,
|
|
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"}
|
package/lib/classes/relator.d.ts
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { RelatorOptions } from
|
|
2
|
-
import { SerializerOptions } from
|
|
3
|
-
import Link from
|
|
4
|
-
import Meta from
|
|
5
|
-
import Relationship from
|
|
6
|
-
import ResourceIdentifier from
|
|
7
|
-
import Resource from
|
|
8
|
-
import { Dictionary, nullish } from
|
|
9
|
-
import
|
|
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 {@
|
|
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 {@
|
|
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):
|
|
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 {@
|
|
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;
|
|
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"}
|
package/lib/classes/relator.js
CHANGED
|
@@ -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
|
|
53
|
-
|
|
54
|
-
|
|
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 {@
|
|
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
|
-
|
|
17
|
+
class Relator {
|
|
65
18
|
/**
|
|
66
|
-
*
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
84
|
-
|
|
54
|
+
getRelatedLinks(data, relatedData) {
|
|
55
|
+
let links;
|
|
85
56
|
if (this.options.linkers.relationship) {
|
|
86
|
-
links =
|
|
57
|
+
links = { ...links, self: this.options.linkers.relationship.link(data, relatedData) };
|
|
87
58
|
}
|
|
88
59
|
if (this.options.linkers.related) {
|
|
89
|
-
links =
|
|
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
|
-
|
|
95
|
-
|
|
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 {@
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
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":"
|
|
1
|
+
{"version":3,"file":"relator.js","sourceRoot":"","sources":["../../src/classes/relator.ts"],"names":[],"mappings":";;;;;AAIA,sFAAiF;AAIjF,2DAAmC;AAInC;;;;;;;;GAQG;AACH,MAAqB,OAAO;IAC1B;;OAEG;IACI,MAAM,CAAC,cAAc,GAAG;QAC7B,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF;;OAEG;IACK,OAAO,CAA2C;IAEnD,WAAW,CAAS;IAC3B;;;;;;OAMG;IACH,YACE,KAA4E,EAC5E,UAAmC,EACnC,UAA6D,EAAE;QAE/D,0BAA0B;QAC1B,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC;QAC7C,IAAI,CAAC,OAAO,GAAG,IAAA,eAAK,EAAC,EAAE,EAAE,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACrE,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACzE,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC;IAED,qDAAqD;IAC9C,cAAc,CAAwE;IAE7F,sCAAsC;IAC/B,kBAAkB,CAA8D;IAEvF,4CAA4C;IACrC,oBAAoB,CAGH;IAExB,0CAA0C;IACnC,kBAAkB,CAKW;IAEpC,sEAAsE;IAC/D,eAAe,CAAC,IAAiB,EAAE,WAAkD;QAC1F,IAAI,KAA6C,CAAC;QAClD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE;YACrC,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;SACvF;QACD,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE;YAChC,KAAK,GAAG,EAAE,GAAG,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;SACrF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,qEAAqE;IAC9D,cAAc,CAAC,IAAiB,EAAE,WAAkD;QACzF,IAAI,IAAsB,CAAC;QAC3B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzB,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;SACzD;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gDAAgD;IACzC,KAAK,CAAC,eAAe,CAAC,IAAiB,EAAE,gBAAoC;QAClF,sBAAsB;QACtB,MAAM,mBAAmB,GAAwB,EAAE,CAAC;QAEpD,oBAAoB;QACpB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QACpD,IAAI,WAAW,IAAI,gBAAgB,EAAE;YACnC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;SACtF;QAED,qBAAqB;QACrB,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACtD,IAAI,KAAK;YAAE,mBAAmB,CAAC,KAAK,GAAG,KAAK,CAAC;QAE7C,+BAA+B;QAC/B,IAAI,WAAW,KAAK,SAAS,EAAE;YAC7B,IAAI,WAAW,KAAK,IAAI,EAAE;gBACxB,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC;aACjC;iBAAM;gBACL,mBAAmB,CAAC,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC;oBACnD,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;oBAC5D,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,CAAC;aAC5C;SACF;QAED,YAAY;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACpD,IAAI,IAAI;YAAE,mBAAmB,CAAC,IAAI,GAAG,IAAI,CAAC;QAE1C,OAAO,IAAI,4BAAY,CAAC,mBAAmB,CAAC,CAAC;IAC/C,CAAC;;AA3GH,0BA4GC"}
|