@recursyve/nestjs-data-filter 9.3.3 → 9.4.0-beta.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/lib/adapters/default-access-control.adapter.js +3 -3
- package/lib/adapters/default-export.adapter.js +3 -3
- package/lib/adapters/default-translate.adapter.js +3 -3
- package/lib/data-filter.repository.d.ts +5 -3
- package/lib/data-filter.repository.js +19 -16
- package/lib/data-filter.service.d.ts +4 -4
- package/lib/data-filter.service.js +10 -9
- package/lib/filter/base-filter.d.ts +3 -0
- package/lib/filter/base-filter.js +19 -1
- package/lib/filter/controllers/dynamic-filter.controller.js +2 -2
- package/lib/filter/controllers/filter.controller.js +2 -2
- package/lib/filter/decorators/inject-filter.decorator.d.ts +1 -1
- package/lib/filter/filter.factory.d.ts +2 -1
- package/lib/filter/filter.factory.js +3 -3
- package/lib/filter/filter.provider.js +3 -2
- package/lib/filter/filter.service.d.ts +3 -1
- package/lib/filter/filter.service.js +20 -13
- package/lib/filter/filters/date-time.filter.js +12 -5
- package/lib/filter/filters/filter.d.ts +3 -0
- package/lib/filter/filters/filter.js +7 -4
- package/lib/filter/filters/geo-bounds.filter.js +2 -3
- package/lib/filter/filters/geo-localization.filter.js +2 -2
- package/lib/filter/filters/group.filter.d.ts +3 -0
- package/lib/filter/filters/group.filter.js +9 -2
- package/lib/filter/guards/filter-query.guard.js +3 -3
- package/lib/filter/interceptors/data-file-download.interceptor.js +3 -3
- package/lib/filter/operators.js +2 -2
- package/lib/filter/order-rules/enum.order-rule.js +2 -3
- package/lib/filter/order-rules/if.order-rule.js +2 -3
- package/lib/filter/order-rules/is-null.order-rule.js +2 -3
- package/lib/filter/order-rules/order-rule.d.ts +3 -0
- package/lib/filter/order-rules/order-rule.js +5 -2
- package/lib/filter/type.js +2 -2
- package/lib/index.js +6 -5
- package/lib/models/attributes.model.d.ts +8 -1
- package/lib/models/attributes.model.js +21 -11
- package/lib/models/count.model.d.ts +11 -4
- package/lib/models/count.model.js +25 -14
- package/lib/models/custom-attributes.model.d.ts +6 -2
- package/lib/models/custom-attributes.model.js +5 -1
- package/lib/models/data-filter.model.d.ts +9 -2
- package/lib/models/data-filter.model.js +40 -30
- package/lib/models/distance.model.d.ts +10 -3
- package/lib/models/distance.model.js +29 -18
- package/lib/models/export-types.model.js +2 -2
- package/lib/models/sum.model.d.ts +10 -3
- package/lib/models/sum.model.js +19 -8
- package/lib/scanners/data-filter.scanner.js +3 -3
- package/lib/scanners/sequelize-model.scanner.d.ts +4 -2
- package/lib/scanners/sequelize-model.scanner.js +20 -11
- package/lib/sequelize.utils.d.ts +0 -3
- package/lib/sequelize.utils.js +1 -18
- package/lib/services/data-filter-validation.service.js +3 -3
- package/lib/services/dialect-formatter.service.js +3 -3
- package/package.json +1 -1
- package/lib/filter/filters/options.filter.d.ts +0 -46
- package/lib/filter/filters/options.filter.js +0 -111
|
@@ -1,20 +1,34 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.DistanceAttributesConfig = void 0;
|
|
3
|
+
exports.DistanceAttributesContext = exports.DistanceAttributesConfig = void 0;
|
|
4
4
|
const sequelize_1 = require("sequelize");
|
|
5
|
-
const
|
|
5
|
+
const custom_attributes_model_1 = require("./custom-attributes.model");
|
|
6
6
|
class DistanceAttributesConfig {
|
|
7
7
|
constructor(key, config) {
|
|
8
8
|
this.key = key;
|
|
9
9
|
this.config = config;
|
|
10
10
|
this.type = "distance";
|
|
11
11
|
}
|
|
12
|
+
withContext(dialectFormatterService) {
|
|
13
|
+
return new DistanceAttributesContext(this, dialectFormatterService);
|
|
14
|
+
}
|
|
15
|
+
shouldGroupBy() {
|
|
16
|
+
return false;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
exports.DistanceAttributesConfig = DistanceAttributesConfig;
|
|
20
|
+
class DistanceAttributesContext extends custom_attributes_model_1.CustomAttributesContext {
|
|
21
|
+
constructor(config, dialectFormatterService) {
|
|
22
|
+
super();
|
|
23
|
+
this.config = config;
|
|
24
|
+
this.dialectFormatterService = dialectFormatterService;
|
|
25
|
+
}
|
|
12
26
|
transform(options, path) {
|
|
13
27
|
var _a, _b;
|
|
14
28
|
if (!options) {
|
|
15
29
|
return null;
|
|
16
30
|
}
|
|
17
|
-
const coordinates = this.config.coordinates(options);
|
|
31
|
+
const coordinates = this.config.config.coordinates(options);
|
|
18
32
|
if (!coordinates || coordinates.length < 2) {
|
|
19
33
|
return null;
|
|
20
34
|
}
|
|
@@ -22,26 +36,23 @@ class DistanceAttributesConfig {
|
|
|
22
36
|
if (typeof latitude !== "number" || typeof longitude !== "number") {
|
|
23
37
|
return null;
|
|
24
38
|
}
|
|
25
|
-
if (path || this.config.path) {
|
|
26
|
-
path = [path, this.config.path].filter(x => x).join(".");
|
|
39
|
+
if (path || this.config.config.path) {
|
|
40
|
+
path = [path, this.config.config.path].filter(x => x).join(".");
|
|
27
41
|
}
|
|
28
|
-
const location = (0, sequelize_1.fn)("ST_GeometryFromText", (0, sequelize_1.literal)(`'POINT(${latitude} ${longitude})'`), (_a = this.config.srid) !== null && _a !== void 0 ? _a : 0);
|
|
29
|
-
return [(0, sequelize_1.fn)("ST_Distance_Sphere", this.getPointAttribute(path), location), (_b = this.config.name) !== null && _b !== void 0 ? _b : this.key];
|
|
30
|
-
}
|
|
31
|
-
shouldGroupBy() {
|
|
32
|
-
return false;
|
|
42
|
+
const location = (0, sequelize_1.fn)("ST_GeometryFromText", (0, sequelize_1.literal)(`'POINT(${latitude} ${longitude})'`), (_a = this.config.config.srid) !== null && _a !== void 0 ? _a : 0);
|
|
43
|
+
return [(0, sequelize_1.fn)("ST_Distance_Sphere", this.getPointAttribute(path), location), (_b = this.config.config.name) !== null && _b !== void 0 ? _b : this.config.key];
|
|
33
44
|
}
|
|
34
45
|
getPointAttribute(path) {
|
|
35
|
-
if (this.config.attribute) {
|
|
36
|
-
const att = this.config.attribute;
|
|
37
|
-
return (0, sequelize_1.literal)(path ?
|
|
46
|
+
if (this.config.config.attribute) {
|
|
47
|
+
const att = this.config.config.attribute;
|
|
48
|
+
return (0, sequelize_1.literal)(path ? this.dialectFormatterService.getLiteralFullName(att, path) : att);
|
|
38
49
|
}
|
|
39
|
-
const lat = path ? (0, sequelize_1.literal)(
|
|
40
|
-
const lng = path ? (0, sequelize_1.literal)(
|
|
50
|
+
const lat = path ? (0, sequelize_1.literal)(this.dialectFormatterService.getLiteralFullName(this.config.config.latAttribute, path)) : this.config.config.latAttribute;
|
|
51
|
+
const lng = path ? (0, sequelize_1.literal)(this.dialectFormatterService.getLiteralFullName(this.config.config.lngAttribute, path)) : this.config.config.lngAttribute;
|
|
41
52
|
const point = (0, sequelize_1.fn)("Point", lng, lat);
|
|
42
|
-
return this.config.srid ? (0, sequelize_1.fn)("ST_SRID", point, this.config.srid) : point;
|
|
53
|
+
return this.config.config.srid ? (0, sequelize_1.fn)("ST_SRID", point, this.config.config.srid) : point;
|
|
43
54
|
}
|
|
44
55
|
}
|
|
45
|
-
exports.
|
|
56
|
+
exports.DistanceAttributesContext = DistanceAttributesContext;
|
|
46
57
|
|
|
47
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2RlbHMvZGlzdGFuY2UubW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQXlEO0FBRXpELHVFQUltQztBQWtCbkMsTUFBYSx3QkFBd0I7SUFHakMsWUFBbUIsR0FBVyxFQUFTLE1BQXNCO1FBQTFDLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFnQjtRQUZ0RCxTQUFJLEdBQUcsVUFBVSxDQUFDO0lBRXVDLENBQUM7SUFFMUQsV0FBVyxDQUFDLHVCQUFnRDtRQUMvRCxPQUFPLElBQUkseUJBQXlCLENBQUMsSUFBSSxFQUFFLHVCQUF1QixDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUVNLGFBQWE7UUFDaEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKO0FBWkQsNERBWUM7QUFFRCxNQUFhLHlCQUEwQixTQUFRLGlEQUF1QjtJQUNsRSxZQUFvQixNQUFnQyxFQUFVLHVCQUFnRDtRQUMxRyxLQUFLLEVBQUUsQ0FBQztRQURRLFdBQU0sR0FBTixNQUFNLENBQTBCO1FBQVUsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtJQUU5RyxDQUFDO0lBRU0sU0FBUyxDQUFDLE9BQWUsRUFBRSxJQUFhOztRQUMzQyxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ1YsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsV0FBVyxJQUFJLFdBQVcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ3hDLE9BQU8sSUFBSSxDQUFDO1NBQ2Y7UUFFRCxNQUFNLENBQUMsUUFBUSxFQUFFLFNBQVMsQ0FBQyxHQUFHLFdBQVcsQ0FBQztRQUMxQyxJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxPQUFPLFNBQVMsS0FBSyxRQUFRLEVBQUU7WUFDL0QsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUNELElBQUksSUFBSSxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRTtZQUNqQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1NBQ25FO1FBRUQsTUFBTSxRQUFRLEdBQUcsSUFBQSxjQUFFLEVBQUMscUJBQXFCLEVBQUUsSUFBQSxtQkFBTyxFQUFDLFVBQVUsUUFBUSxJQUFJLFNBQVMsSUFBSSxDQUFDLEVBQUUsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLG1DQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3ZILE9BQU8sQ0FBQyxJQUFBLGNBQUUsRUFBQyxvQkFBb0IsRUFBRSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLEVBQUUsUUFBUSxDQUFDLEVBQUUsTUFBQSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLG1DQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDMUgsQ0FBQztJQUVPLGlCQUFpQixDQUFDLElBQVk7UUFDbEMsSUFBSyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQWtDLENBQUMsU0FBUyxFQUFFO1lBQzNELE1BQU0sR0FBRyxHQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBa0MsQ0FBQyxTQUFTLENBQUM7WUFDdEUsT0FBTyxJQUFBLG1CQUFPLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsdUJBQXVCLENBQUMsa0JBQWtCLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztTQUMzRjtRQUVELE1BQU0sR0FBRyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBQSxtQkFBTyxFQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQW1DLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBbUMsQ0FBQyxZQUFZLENBQUM7UUFDak4sTUFBTSxHQUFHLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFBLG1CQUFPLEVBQUMsSUFBSSxDQUFDLHVCQUF1QixDQUFDLGtCQUFrQixDQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBbUMsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFtQyxDQUFDLFlBQVksQ0FBQztRQUNqTixNQUFNLEtBQUssR0FBRyxJQUFBLGNBQUUsRUFBQyxPQUFPLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFBLGNBQUUsRUFBQyxTQUFTLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7SUFDM0YsQ0FBQztDQUNKO0FBdENELDhEQXNDQyIsImZpbGUiOiJsaWIvbW9kZWxzL2Rpc3RhbmNlLm1vZGVsLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgZm4sIGxpdGVyYWwsIFByb2plY3Rpb25BbGlhcyB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IERpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL3NlcnZpY2VzL2RpYWxlY3QtZm9ybWF0dGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7XG4gICAgQ3VzdG9tQXR0cmlidXRlc0NvbmZpZyxcbiAgICBDdXN0b21BdHRyaWJ1dGVzQ29udGV4dCxcbiAgICBDdXN0b21BdHRyaWJ1dGVzT3B0aW9uQ29uZmlnXG59IGZyb20gXCIuL2N1c3RvbS1hdHRyaWJ1dGVzLm1vZGVsXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZURpc3RhbmNlQ29uZmlnIGV4dGVuZHMgQ3VzdG9tQXR0cmlidXRlc09wdGlvbkNvbmZpZyB7XG4gICAgY29vcmRpbmF0ZXM6IChvcHRpb24/KSA9PiBbbnVtYmVyLCBudW1iZXJdO1xuICAgIHNyaWQ/OiBudW1iZXI7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRGlzdGFuY2VDb25maWdXaXRoUG9pbnQge1xuICAgIGF0dHJpYnV0ZTogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIERpc3RhbmNlQ29uZmlnV2l0aExhdExuZyB7XG4gICAgbGF0QXR0cmlidXRlOiBzdHJpbmc7XG4gICAgbG5nQXR0cmlidXRlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIERpc3RhbmNlQ29uZmlnID0gQmFzZURpc3RhbmNlQ29uZmlnICYgKERpc3RhbmNlQ29uZmlnV2l0aFBvaW50IHwgRGlzdGFuY2VDb25maWdXaXRoTGF0TG5nKTtcblxuZXhwb3J0IGNsYXNzIERpc3RhbmNlQXR0cmlidXRlc0NvbmZpZyBpbXBsZW1lbnRzIEN1c3RvbUF0dHJpYnV0ZXNDb25maWc8RGlzdGFuY2VDb25maWcsIERpc3RhbmNlQXR0cmlidXRlc0NvbnRleHQ+IHtcbiAgICBwdWJsaWMgdHlwZSA9IFwiZGlzdGFuY2VcIjtcblxuICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBrZXk6IHN0cmluZywgcHVibGljIGNvbmZpZzogRGlzdGFuY2VDb25maWcpIHt9XG5cbiAgICBwdWJsaWMgd2l0aENvbnRleHQoZGlhbGVjdEZvcm1hdHRlclNlcnZpY2U6IERpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlKTogRGlzdGFuY2VBdHRyaWJ1dGVzQ29udGV4dCB7XG4gICAgICAgIHJldHVybiBuZXcgRGlzdGFuY2VBdHRyaWJ1dGVzQ29udGV4dCh0aGlzLCBkaWFsZWN0Rm9ybWF0dGVyU2VydmljZSk7XG4gICAgfVxuXG4gICAgcHVibGljIHNob3VsZEdyb3VwQnkoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBEaXN0YW5jZUF0dHJpYnV0ZXNDb250ZXh0IGV4dGVuZHMgQ3VzdG9tQXR0cmlidXRlc0NvbnRleHQge1xuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY29uZmlnOiBEaXN0YW5jZUF0dHJpYnV0ZXNDb25maWcsIHByaXZhdGUgZGlhbGVjdEZvcm1hdHRlclNlcnZpY2U6IERpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlKSB7XG4gICAgICAgIHN1cGVyKCk7XG4gICAgfVxuXG4gICAgcHVibGljIHRyYW5zZm9ybShvcHRpb25zOiBvYmplY3QsIHBhdGg/OiBzdHJpbmcpOiBzdHJpbmcgfCBQcm9qZWN0aW9uQWxpYXMge1xuICAgICAgICBpZiAoIW9wdGlvbnMpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29vcmRpbmF0ZXMgPSB0aGlzLmNvbmZpZy5jb25maWcuY29vcmRpbmF0ZXMob3B0aW9ucyk7XG4gICAgICAgIGlmICghY29vcmRpbmF0ZXMgfHwgY29vcmRpbmF0ZXMubGVuZ3RoIDwgMikge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBbbGF0aXR1ZGUsIGxvbmdpdHVkZV0gPSBjb29yZGluYXRlcztcbiAgICAgICAgaWYgKHR5cGVvZiBsYXRpdHVkZSAhPT0gXCJudW1iZXJcIiB8fCB0eXBlb2YgbG9uZ2l0dWRlICE9PSBcIm51bWJlclwiKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aCB8fCB0aGlzLmNvbmZpZy5jb25maWcucGF0aCkge1xuICAgICAgICAgICAgcGF0aCA9IFtwYXRoLCB0aGlzLmNvbmZpZy5jb25maWcucGF0aF0uZmlsdGVyKHggPT4geCkuam9pbihcIi5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBsb2NhdGlvbiA9IGZuKFwiU1RfR2VvbWV0cnlGcm9tVGV4dFwiLCBsaXRlcmFsKGAnUE9JTlQoJHtsYXRpdHVkZX0gJHtsb25naXR1ZGV9KSdgKSwgdGhpcy5jb25maWcuY29uZmlnLnNyaWQgPz8gMCk7XG4gICAgICAgIHJldHVybiBbZm4oXCJTVF9EaXN0YW5jZV9TcGhlcmVcIiwgdGhpcy5nZXRQb2ludEF0dHJpYnV0ZShwYXRoKSwgbG9jYXRpb24pLCB0aGlzLmNvbmZpZy5jb25maWcubmFtZSA/PyB0aGlzLmNvbmZpZy5rZXldO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UG9pbnRBdHRyaWJ1dGUocGF0aDogc3RyaW5nKSB7XG4gICAgICAgIGlmICgodGhpcy5jb25maWcuY29uZmlnIGFzIERpc3RhbmNlQ29uZmlnV2l0aFBvaW50KS5hdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIGNvbnN0IGF0dCA9ICh0aGlzLmNvbmZpZy5jb25maWcgYXMgRGlzdGFuY2VDb25maWdXaXRoUG9pbnQpLmF0dHJpYnV0ZTtcbiAgICAgICAgICAgIHJldHVybiBsaXRlcmFsKHBhdGggPyB0aGlzLmRpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlLmdldExpdGVyYWxGdWxsTmFtZShhdHQsIHBhdGgpIDogYXR0KTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGxhdCA9IHBhdGggPyBsaXRlcmFsKHRoaXMuZGlhbGVjdEZvcm1hdHRlclNlcnZpY2UuZ2V0TGl0ZXJhbEZ1bGxOYW1lKCh0aGlzLmNvbmZpZy5jb25maWcgYXMgRGlzdGFuY2VDb25maWdXaXRoTGF0TG5nKS5sYXRBdHRyaWJ1dGUsIHBhdGgpKSA6ICh0aGlzLmNvbmZpZy5jb25maWcgYXMgRGlzdGFuY2VDb25maWdXaXRoTGF0TG5nKS5sYXRBdHRyaWJ1dGU7XG4gICAgICAgIGNvbnN0IGxuZyA9IHBhdGggPyBsaXRlcmFsKHRoaXMuZGlhbGVjdEZvcm1hdHRlclNlcnZpY2UuZ2V0TGl0ZXJhbEZ1bGxOYW1lKCh0aGlzLmNvbmZpZy5jb25maWcgYXMgRGlzdGFuY2VDb25maWdXaXRoTGF0TG5nKS5sbmdBdHRyaWJ1dGUsIHBhdGgpKSA6ICh0aGlzLmNvbmZpZy5jb25maWcgYXMgRGlzdGFuY2VDb25maWdXaXRoTGF0TG5nKS5sbmdBdHRyaWJ1dGU7XG4gICAgICAgIGNvbnN0IHBvaW50ID0gZm4oXCJQb2ludFwiLCBsbmcsIGxhdCk7XG4gICAgICAgIHJldHVybiB0aGlzLmNvbmZpZy5jb25maWcuc3JpZCA/IGZuKFwiU1RfU1JJRFwiLCBwb2ludCwgdGhpcy5jb25maWcuY29uZmlnLnNyaWQpIDogcG9pbnQ7XG4gICAgfVxufSJdfQ==
|
|
@@ -8,6 +8,6 @@ var ExportTypes;
|
|
|
8
8
|
ExportTypes["CSV"] = "csv";
|
|
9
9
|
ExportTypes["PDF"] = "pdf";
|
|
10
10
|
ExportTypes["ZIP"] = "zip";
|
|
11
|
-
})(ExportTypes
|
|
11
|
+
})(ExportTypes = exports.ExportTypes || (exports.ExportTypes = {}));
|
|
12
12
|
|
|
13
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
13
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2RlbHMvZXhwb3J0LXR5cGVzLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLElBQVksV0FNWDtBQU5ELFdBQVksV0FBVztJQUNuQiw0QkFBWSxDQUFBO0lBQ1osNEJBQVksQ0FBQTtJQUNaLDBCQUFVLENBQUE7SUFDViwwQkFBVSxDQUFBO0lBQ1YsMEJBQVUsQ0FBQTtBQUNkLENBQUMsRUFOVyxXQUFXLEdBQVgsbUJBQVcsS0FBWCxtQkFBVyxRQU10QiIsImZpbGUiOiJsaWIvbW9kZWxzL2V4cG9ydC10eXBlcy5tb2RlbC5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIEV4cG9ydFR5cGVzIHtcbiAgICBYTFNYPSBcInhsc3hcIixcbiAgICBIVE1MPSBcImh0bWxcIixcbiAgICBDU1Y9IFwiY3N2XCIsXG4gICAgUERGPSBcInBkZlwiLFxuICAgIFpJUD0gXCJ6aXBcIixcbn1cbiJdfQ==
|
|
@@ -1,13 +1,20 @@
|
|
|
1
1
|
import { ProjectionAlias } from "sequelize";
|
|
2
|
-
import {
|
|
2
|
+
import { DialectFormatterService } from "../services/dialect-formatter.service";
|
|
3
|
+
import { CustomAttributesConfig, CustomAttributesContext, CustomAttributesOptionConfig } from "./custom-attributes.model";
|
|
3
4
|
export interface SumConfig extends CustomAttributesOptionConfig {
|
|
4
5
|
attribute: string;
|
|
5
6
|
}
|
|
6
|
-
export declare class SumAttributesConfig implements CustomAttributesConfig<SumConfig> {
|
|
7
|
+
export declare class SumAttributesConfig implements CustomAttributesConfig<SumConfig, SumAttributesContext> {
|
|
7
8
|
key: string;
|
|
8
9
|
config: SumConfig;
|
|
9
10
|
type: string;
|
|
10
11
|
constructor(key: string, config: SumConfig);
|
|
11
|
-
|
|
12
|
+
withContext(dialectFormatterService: DialectFormatterService): SumAttributesContext;
|
|
12
13
|
shouldGroupBy(): boolean;
|
|
13
14
|
}
|
|
15
|
+
export declare class SumAttributesContext extends CustomAttributesContext {
|
|
16
|
+
private config;
|
|
17
|
+
private dialectFormatterService;
|
|
18
|
+
constructor(config: SumAttributesConfig, dialectFormatterService: DialectFormatterService);
|
|
19
|
+
transform(options: object, path?: string): string | ProjectionAlias;
|
|
20
|
+
}
|
package/lib/models/sum.model.js
CHANGED
|
@@ -1,24 +1,35 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SumAttributesConfig = void 0;
|
|
3
|
+
exports.SumAttributesContext = exports.SumAttributesConfig = void 0;
|
|
4
4
|
const sequelize_1 = require("sequelize");
|
|
5
|
-
const
|
|
5
|
+
const custom_attributes_model_1 = require("./custom-attributes.model");
|
|
6
6
|
class SumAttributesConfig {
|
|
7
7
|
constructor(key, config) {
|
|
8
8
|
this.key = key;
|
|
9
9
|
this.config = config;
|
|
10
10
|
this.type = "sum";
|
|
11
11
|
}
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
? (0, sequelize_1.literal)(sequelize_utils_1.SequelizeUtils.getLiteralFullName(this.config.attribute, this.config.path))
|
|
15
|
-
: this.config.attribute;
|
|
16
|
-
return [(0, sequelize_1.fn)("SUM", attribute), this.key];
|
|
12
|
+
withContext(dialectFormatterService) {
|
|
13
|
+
return new SumAttributesContext(this, dialectFormatterService);
|
|
17
14
|
}
|
|
18
15
|
shouldGroupBy() {
|
|
19
16
|
return true;
|
|
20
17
|
}
|
|
21
18
|
}
|
|
22
19
|
exports.SumAttributesConfig = SumAttributesConfig;
|
|
20
|
+
class SumAttributesContext extends custom_attributes_model_1.CustomAttributesContext {
|
|
21
|
+
constructor(config, dialectFormatterService) {
|
|
22
|
+
super();
|
|
23
|
+
this.config = config;
|
|
24
|
+
this.dialectFormatterService = dialectFormatterService;
|
|
25
|
+
}
|
|
26
|
+
transform(options, path) {
|
|
27
|
+
const attribute = this.config.config.path
|
|
28
|
+
? (0, sequelize_1.literal)(this.dialectFormatterService.getLiteralFullName(this.config.config.attribute, this.config.config.path))
|
|
29
|
+
: this.config.config.attribute;
|
|
30
|
+
return [(0, sequelize_1.fn)("SUM", attribute), this.config.key];
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.SumAttributesContext = SumAttributesContext;
|
|
23
34
|
|
|
24
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
35
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9tb2RlbHMvc3VtLm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlDQUF5RDtBQUV6RCx1RUFJbUM7QUFNbkMsTUFBYSxtQkFBbUI7SUFHNUIsWUFBbUIsR0FBVyxFQUFTLE1BQWlCO1FBQXJDLFFBQUcsR0FBSCxHQUFHLENBQVE7UUFBUyxXQUFNLEdBQU4sTUFBTSxDQUFXO1FBRmpELFNBQUksR0FBRyxLQUFLLENBQUM7SUFFdUMsQ0FBQztJQUVyRCxXQUFXLENBQUMsdUJBQWdEO1FBQy9ELE9BQU8sSUFBSSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztJQUNuRSxDQUFDO0lBRU0sYUFBYTtRQUNoQixPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0o7QUFaRCxrREFZQztBQUVELE1BQWEsb0JBQXFCLFNBQVEsaURBQXVCO0lBQzdELFlBQW9CLE1BQTJCLEVBQVUsdUJBQWdEO1FBQ3JHLEtBQUssRUFBRSxDQUFDO1FBRFEsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7UUFBVSw0QkFBdUIsR0FBdkIsdUJBQXVCLENBQXlCO0lBRXpHLENBQUM7SUFFTSxTQUFTLENBQUMsT0FBZSxFQUFFLElBQWE7UUFDM0MsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSTtZQUNyQyxDQUFDLENBQUMsSUFBQSxtQkFBTyxFQUFDLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDakgsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQztRQUNuQyxPQUFPLENBQUMsSUFBQSxjQUFFLEVBQUMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkQsQ0FBQztDQUNKO0FBWEQsb0RBV0MiLCJmaWxlIjoibGliL21vZGVscy9zdW0ubW9kZWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmbiwgbGl0ZXJhbCwgUHJvamVjdGlvbkFsaWFzIH0gZnJvbSBcInNlcXVlbGl6ZVwiO1xuaW1wb3J0IHsgRGlhbGVjdEZvcm1hdHRlclNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZGlhbGVjdC1mb3JtYXR0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHtcbiAgICBDdXN0b21BdHRyaWJ1dGVzQ29uZmlnLFxuICAgIEN1c3RvbUF0dHJpYnV0ZXNDb250ZXh0LFxuICAgIEN1c3RvbUF0dHJpYnV0ZXNPcHRpb25Db25maWdcbn0gZnJvbSBcIi4vY3VzdG9tLWF0dHJpYnV0ZXMubW9kZWxcIjtcblxuZXhwb3J0IGludGVyZmFjZSBTdW1Db25maWcgZXh0ZW5kcyBDdXN0b21BdHRyaWJ1dGVzT3B0aW9uQ29uZmlnIHtcbiAgICBhdHRyaWJ1dGU6IHN0cmluZztcbn1cblxuZXhwb3J0IGNsYXNzIFN1bUF0dHJpYnV0ZXNDb25maWcgaW1wbGVtZW50cyBDdXN0b21BdHRyaWJ1dGVzQ29uZmlnPFN1bUNvbmZpZywgU3VtQXR0cmlidXRlc0NvbnRleHQ+IHtcbiAgICBwdWJsaWMgdHlwZSA9IFwic3VtXCI7XG5cbiAgICBjb25zdHJ1Y3RvcihwdWJsaWMga2V5OiBzdHJpbmcsIHB1YmxpYyBjb25maWc6IFN1bUNvbmZpZykge31cblxuICAgIHB1YmxpYyB3aXRoQ29udGV4dChkaWFsZWN0Rm9ybWF0dGVyU2VydmljZTogRGlhbGVjdEZvcm1hdHRlclNlcnZpY2UpOiBTdW1BdHRyaWJ1dGVzQ29udGV4dCB7XG4gICAgICAgIHJldHVybiBuZXcgU3VtQXR0cmlidXRlc0NvbnRleHQodGhpcywgZGlhbGVjdEZvcm1hdHRlclNlcnZpY2UpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzaG91bGRHcm91cEJ5KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBTdW1BdHRyaWJ1dGVzQ29udGV4dCBleHRlbmRzIEN1c3RvbUF0dHJpYnV0ZXNDb250ZXh0IHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNvbmZpZzogU3VtQXR0cmlidXRlc0NvbmZpZywgcHJpdmF0ZSBkaWFsZWN0Rm9ybWF0dGVyU2VydmljZTogRGlhbGVjdEZvcm1hdHRlclNlcnZpY2UpIHtcbiAgICAgICAgc3VwZXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhbnNmb3JtKG9wdGlvbnM6IG9iamVjdCwgcGF0aD86IHN0cmluZyk6IHN0cmluZyB8IFByb2plY3Rpb25BbGlhcyB7XG4gICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IHRoaXMuY29uZmlnLmNvbmZpZy5wYXRoXG4gICAgICAgICAgICA/IGxpdGVyYWwodGhpcy5kaWFsZWN0Rm9ybWF0dGVyU2VydmljZS5nZXRMaXRlcmFsRnVsbE5hbWUodGhpcy5jb25maWcuY29uZmlnLmF0dHJpYnV0ZSwgdGhpcy5jb25maWcuY29uZmlnLnBhdGgpKVxuICAgICAgICAgICAgOiB0aGlzLmNvbmZpZy5jb25maWcuYXR0cmlidXRlO1xuICAgICAgICByZXR1cm4gW2ZuKFwiU1VNXCIsIGF0dHJpYnV0ZSksIHRoaXMuY29uZmlnLmtleV07XG4gICAgfVxufSJdfQ==
|
|
@@ -18,9 +18,9 @@ let DataFilterScanner = class DataFilterScanner {
|
|
|
18
18
|
return (_a = Reflect.getMetadata(constant_1.ATTRIBUTES, target.prototype)) !== null && _a !== void 0 ? _a : [];
|
|
19
19
|
}
|
|
20
20
|
};
|
|
21
|
-
|
|
22
|
-
exports.DataFilterScanner = DataFilterScanner = __decorate([
|
|
21
|
+
DataFilterScanner = __decorate([
|
|
23
22
|
(0, common_1.Injectable)()
|
|
24
23
|
], DataFilterScanner);
|
|
24
|
+
exports.DataFilterScanner = DataFilterScanner;
|
|
25
25
|
|
|
26
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
26
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9zY2FubmVycy9kYXRhLWZpbHRlci5zY2FubmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLDJDQUE0QztBQUM1QywwQ0FBdUQ7QUFLaEQsSUFBTSxpQkFBaUIsR0FBdkIsTUFBTSxpQkFBaUI7SUFDbkIsYUFBYSxDQUFDLE1BQVc7UUFDNUIsT0FBTyxPQUFPLENBQUMsV0FBVyxDQUFDLHNCQUFXLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVNLGFBQWEsQ0FBQyxNQUFXOztRQUM1QixPQUFPLE1BQUEsT0FBTyxDQUFDLFdBQVcsQ0FBQyxxQkFBVSxFQUFFLE1BQU0sQ0FBQyxTQUFTLENBQUMsbUNBQUksRUFBRSxDQUFDO0lBQ25FLENBQUM7Q0FDSixDQUFBO0FBUlksaUJBQWlCO0lBRDdCLElBQUEsbUJBQVUsR0FBRTtHQUNBLGlCQUFpQixDQVE3QjtBQVJZLDhDQUFpQiIsImZpbGUiOiJsaWIvc2Nhbm5lcnMvZGF0YS1maWx0ZXIuc2Nhbm5lci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEFUVFJJQlVURVMsIERBVEFfRklMVEVSLCB9IGZyb20gXCIuLi9jb25zdGFudFwiO1xuaW1wb3J0IHsgRGF0YUZpbHRlckNvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvZGF0YS1maWx0ZXIubW9kZWxcIjtcbmltcG9ydCB7IEF0dHJpYnV0ZXNDb25maWcgfSBmcm9tIFwiLi4vbW9kZWxzL2F0dHJpYnV0ZXMubW9kZWxcIjtcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIERhdGFGaWx0ZXJTY2FubmVyIHtcbiAgICBwdWJsaWMgZ2V0RGF0YUZpbHRlcih0YXJnZXQ6IGFueSk6IERhdGFGaWx0ZXJDb25maWcge1xuICAgICAgICByZXR1cm4gUmVmbGVjdC5nZXRNZXRhZGF0YShEQVRBX0ZJTFRFUiwgdGFyZ2V0KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QXR0cmlidXRlcyh0YXJnZXQ6IGFueSk6IEF0dHJpYnV0ZXNDb25maWdbXSB7XG4gICAgICAgIHJldHVybiBSZWZsZWN0LmdldE1ldGFkYXRhKEFUVFJJQlVURVMsIHRhcmdldC5wcm90b3R5cGUpID8/IFtdO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { FindAttributeOptions, IncludeOptions, Order } from "sequelize";
|
|
2
2
|
import { Model } from "sequelize-typescript";
|
|
3
|
-
import { OrderModel } from "..";
|
|
4
|
-
import { IncludeModel } from "..";
|
|
3
|
+
import { IncludeModel, OrderModel } from "..";
|
|
5
4
|
import { PathModel } from "../models/path.model";
|
|
6
5
|
import { SearchAttributesModel } from "../models/search-attributes.model";
|
|
6
|
+
import { DialectFormatterService } from "../services/dialect-formatter.service";
|
|
7
7
|
export declare class SequelizeModelScanner {
|
|
8
|
+
private dialectFormatterService;
|
|
9
|
+
constructor(dialectFormatterService: DialectFormatterService);
|
|
8
10
|
getIncludes(model: typeof Model, path: PathModel, additionalIncludes: IncludeModel[], attributes?: FindAttributeOptions, ignoreAttributes?: boolean): IncludeOptions[];
|
|
9
11
|
getAttributes(model: typeof Model, path: PathModel, additionalIncludes: IncludeModel[], attributes?: FindAttributeOptions): SearchAttributesModel[];
|
|
10
12
|
getOrder(model: typeof Model, orderObj: OrderModel): Order;
|
|
@@ -5,6 +5,9 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
5
5
|
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
6
|
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
7
|
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
8
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
12
|
exports.SequelizeModelScanner = void 0;
|
|
10
13
|
const common_1 = require("@nestjs/common");
|
|
@@ -12,7 +15,11 @@ const nestjs_common_1 = require("@recursyve/nestjs-common");
|
|
|
12
15
|
const sequelize_1 = require("sequelize");
|
|
13
16
|
const sequelize_typescript_1 = require("sequelize-typescript");
|
|
14
17
|
const sequelize_utils_1 = require("../sequelize.utils");
|
|
18
|
+
const dialect_formatter_service_1 = require("../services/dialect-formatter.service");
|
|
15
19
|
let SequelizeModelScanner = class SequelizeModelScanner {
|
|
20
|
+
constructor(dialectFormatterService) {
|
|
21
|
+
this.dialectFormatterService = dialectFormatterService;
|
|
22
|
+
}
|
|
16
23
|
getIncludes(model, path, additionalIncludes, attributes, ignoreAttributes = false) {
|
|
17
24
|
var _a;
|
|
18
25
|
const objects = (_a = path === null || path === void 0 ? void 0 : path.path) === null || _a === void 0 ? void 0 : _a.split(".");
|
|
@@ -29,7 +36,8 @@ let SequelizeModelScanner = class SequelizeModelScanner {
|
|
|
29
36
|
model: association.getAssociatedClass(),
|
|
30
37
|
attributes: ignoreAttributes ? [] : { include: [] },
|
|
31
38
|
include: [],
|
|
32
|
-
required: false
|
|
39
|
+
required: false,
|
|
40
|
+
...(ignoreAttributes && association.getAssociation() === "belongsToMany" && { through: { attributes: [] } })
|
|
33
41
|
});
|
|
34
42
|
if (i++ < objects.length - 1) {
|
|
35
43
|
model = includes[0].model;
|
|
@@ -88,7 +96,7 @@ let SequelizeModelScanner = class SequelizeModelScanner {
|
|
|
88
96
|
result.push(...attributes.map(a => ({
|
|
89
97
|
name: a,
|
|
90
98
|
key: sequelize_utils_1.SequelizeUtils.getAttributeFullName(a, path.path),
|
|
91
|
-
literalKey:
|
|
99
|
+
literalKey: this.dialectFormatterService.getLiteralFullName(a, path.path),
|
|
92
100
|
isJson: sequelize_utils_1.SequelizeUtils.isColumnJson(model, a)
|
|
93
101
|
})));
|
|
94
102
|
for (const include of additionalIncludes) {
|
|
@@ -100,7 +108,7 @@ let SequelizeModelScanner = class SequelizeModelScanner {
|
|
|
100
108
|
}, [], (_a = include.searchableAttributes) !== null && _a !== void 0 ? _a : include.attributes).map(a => ({
|
|
101
109
|
name: a.name,
|
|
102
110
|
key: sequelize_utils_1.SequelizeUtils.getAttributeFullName(a.name, [path.path, include.path].join(".")),
|
|
103
|
-
literalKey:
|
|
111
|
+
literalKey: this.dialectFormatterService.getLiteralFullName(a.name, [path.path, include.path].join(".")),
|
|
104
112
|
isJson: a.isJson
|
|
105
113
|
})));
|
|
106
114
|
}
|
|
@@ -118,8 +126,8 @@ let SequelizeModelScanner = class SequelizeModelScanner {
|
|
|
118
126
|
}
|
|
119
127
|
const col = sequelize_utils_1.SequelizeUtils.findColumnFieldName(model, column);
|
|
120
128
|
let literalOrder = values.length ?
|
|
121
|
-
|
|
122
|
-
|
|
129
|
+
this.dialectFormatterService.getLiteralFullName(col, values) :
|
|
130
|
+
this.dialectFormatterService.formatCol(model.name, col);
|
|
123
131
|
if (orderObj.nullLast) {
|
|
124
132
|
literalOrder = `-${literalOrder}`;
|
|
125
133
|
orderObj.direction = orderObj.direction === "asc" ? "desc" : "asc";
|
|
@@ -142,8 +150,8 @@ let SequelizeModelScanner = class SequelizeModelScanner {
|
|
|
142
150
|
group.push(value);
|
|
143
151
|
}
|
|
144
152
|
return [
|
|
145
|
-
|
|
146
|
-
|
|
153
|
+
this.dialectFormatterService.getOrderFullName("id", group),
|
|
154
|
+
this.dialectFormatterService.getOrderFullName(sequelize_utils_1.SequelizeUtils.findColumnFieldName(model, column), group)
|
|
147
155
|
];
|
|
148
156
|
}
|
|
149
157
|
getOrderIncludes(model, orderObj) {
|
|
@@ -187,9 +195,10 @@ let SequelizeModelScanner = class SequelizeModelScanner {
|
|
|
187
195
|
return association;
|
|
188
196
|
}
|
|
189
197
|
};
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
(
|
|
198
|
+
SequelizeModelScanner = __decorate([
|
|
199
|
+
(0, common_1.Injectable)(),
|
|
200
|
+
__metadata("design:paramtypes", [dialect_formatter_service_1.DialectFormatterService])
|
|
193
201
|
], SequelizeModelScanner);
|
|
202
|
+
exports.SequelizeModelScanner = SequelizeModelScanner;
|
|
194
203
|
|
|
195
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9zY2FubmVycy9zZXF1ZWxpemUtbW9kZWwuc2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQSwyQ0FBNEM7QUFDNUMsNERBQXFEO0FBQ3JELHlDQUFpRjtBQUNqRiwrREFBNEY7QUFLNUYsd0RBQXVEO0FBR2hELElBQU0scUJBQXFCLEdBQTNCLE1BQU0scUJBQXFCO0lBQ3ZCLFdBQVcsQ0FDZCxLQUFtQixFQUNuQixJQUFlLEVBQ2Ysa0JBQWtDLEVBQ2xDLFVBQWlDLEVBQ2pDLGdCQUFnQixHQUFHLEtBQUs7O1FBRXhCLE1BQU0sT0FBTyxHQUFHLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFFLElBQUksMENBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksQ0FBQyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxNQUFNLENBQUEsRUFBRTtZQUNsQixPQUFPLEVBQUUsQ0FBQztTQUNiO1FBRUQsTUFBTSxNQUFNLEdBQXFCLEVBQUUsQ0FBQztRQUNwQyxJQUFJLFFBQVEsR0FBcUIsTUFBTSxDQUFDO1FBQ3hDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNWLEtBQUssTUFBTSxHQUFHLElBQUksT0FBTyxFQUFFO1lBQ3ZCLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxlQUFlLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1lBQ3JELFFBQVEsQ0FBQyxJQUFJLENBQUM7Z0JBQ1YsRUFBRSxFQUFFLFdBQVcsQ0FBQyxLQUFLLEVBQVk7Z0JBQ2pDLEtBQUssRUFBRSxXQUFXLENBQUMsa0JBQWtCLEVBQUU7Z0JBQ3ZDLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUU7Z0JBQ25ELE9BQU8sRUFBRSxFQUFFO2dCQUNYLFFBQVEsRUFBRSxLQUFLO2FBQ2xCLENB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IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IFR5cGVVdGlscyB9IGZyb20gXCJAcmVjdXJzeXZlL25lc3Rqcy1jb21tb25cIjtcbmltcG9ydCB7IEZpbmRBdHRyaWJ1dGVPcHRpb25zLCBJbmNsdWRlT3B0aW9ucywgbGl0ZXJhbCwgT3JkZXIgfSBmcm9tIFwic2VxdWVsaXplXCI7XG5pbXBvcnQgeyBBc3NvY2lhdGlvbiwgQmFzZUFzc29jaWF0aW9uLCBnZXRBc3NvY2lhdGlvbnMsIE1vZGVsIH0gZnJvbSBcInNlcXVlbGl6ZS10eXBlc2NyaXB0XCI7XG5pbXBvcnQgeyBPcmRlck1vZGVsIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBJbmNsdWRlTW9kZWwgfSBmcm9tIFwiLi5cIjtcbmltcG9ydCB7IFBhdGhNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvcGF0aC5tb2RlbFwiO1xuaW1wb3J0IHsgU2VhcmNoQXR0cmlidXRlc01vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9zZWFyY2gtYXR0cmlidXRlcy5tb2RlbFwiO1xuaW1wb3J0IHsgTSwgU2VxdWVsaXplVXRpbHMgfSBmcm9tIFwiLi4vc2VxdWVsaXplLnV0aWxzXCI7XG5cbkBJbmplY3RhYmxlKClcbmV4cG9ydCBjbGFzcyBTZXF1ZWxpemVNb2RlbFNjYW5uZXIge1xuICAgIHB1YmxpYyBnZXRJbmNsdWRlcyhcbiAgICAgICAgbW9kZWw6IHR5cGVvZiBNb2RlbCxcbiAgICAgICAgcGF0aDogUGF0aE1vZGVsLFxuICAgICAgICBhZGRpdGlvbmFsSW5jbHVkZXM6IEluY2x1ZGVNb2RlbFtdLFxuICAgICAgICBhdHRyaWJ1dGVzPzogRmluZEF0dHJpYnV0ZU9wdGlvbnMsXG4gICAgICAgIGlnbm9yZUF0dHJpYnV0ZXMgPSBmYWxzZVxuICAgICk6IEluY2x1ZGVPcHRpb25zW10ge1xuICAgICAgICBjb25zdCBvYmplY3RzID0gcGF0aD8ucGF0aD8uc3BsaXQoXCIuXCIpO1xuICAgICAgICBpZiAoIW9iamVjdHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0OiBJbmNsdWRlT3B0aW9uc1tdID0gW107XG4gICAgICAgIGxldCBpbmNsdWRlczogSW5jbHVkZU9wdGlvbnNbXSA9IHJlc3VsdDtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IG9iaiBvZiBvYmplY3RzKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuZmluZEFzc29jaWF0aW9uKG1vZGVsLCBvYmopO1xuICAgICAgICAgICAgaW5jbHVkZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgYXM6IGFzc29jaWF0aW9uLmdldEFzKCkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgIG1vZGVsOiBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGVkQ2xhc3MoKSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBpZ25vcmVBdHRyaWJ1dGVzID8gW10gOiB7IGluY2x1ZGU6IFtdIH0sXG4gICAgICAgICAgICAgICAgaW5jbHVkZTogW10sXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGkrKyA8IG9iamVjdHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIG1vZGVsID0gaW5jbHVkZXNbMF0ubW9kZWwgYXMgdW5rbm93biBhcyB0eXBlb2YgTW9kZWw7XG4gICAgICAgICAgICAgICAgaW5jbHVkZXMgPSBpbmNsdWRlc1swXS5pbmNsdWRlIGFzIEluY2x1ZGVPcHRpb25zW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXR0cmlidXRlcykge1xuICAgICAgICAgICAgaW5jbHVkZXNbMF0uYXR0cmlidXRlcyA9IGlnbm9yZUF0dHJpYnV0ZXMgPyBbXSA6IFNlcXVlbGl6ZVV0aWxzLm1lcmdlQXR0cmlidXRlcyhpbmNsdWRlc1swXS5hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aC53aGVyZSkge1xuICAgICAgICAgICAgaW5jbHVkZXNbMF0ud2hlcmUgPSBTZXF1ZWxpemVVdGlscy5tZXJnZVdoZXJlKGluY2x1ZGVzWzBdLndoZXJlLCBwYXRoLndoZXJlKTtcbiAgICAgICAgICAgIGluY2x1ZGVzWzBdLnJlcXVpcmVkID0gISFwYXRoLnJlcXVpcmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICBpbmNsdWRlc1swXS5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgubGltaXQpIHtcbiAgICAgICAgICAgIGluY2x1ZGVzWzBdLmxpbWl0ID0gcGF0aC5saW1pdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGluY2x1ZGVzWzBdLnBhcmFub2lkID0gISFwYXRoLnBhcmFub2lkO1xuICAgICAgICBpbmNsdWRlc1swXS5zZXBhcmF0ZSA9ICEhcGF0aC5zZXBhcmF0ZTtcbiAgICAgICAgaW5jbHVkZXNbMF0ub3JkZXIgPSBwYXRoLm9yZGVyO1xuXG4gICAgICAgIGlmIChUeXBlVXRpbHMuaXNOb3ROdWxsT3JVbmRlZmluZWQocGF0aC5zdWJRdWVyeSkpIHtcbiAgICAgICAgICAgIGluY2x1ZGVzWzBdLnN1YlF1ZXJ5ID0gcGF0aC5zdWJRdWVyeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFkZEluY2x1ZGVzOiBJbmNsdWRlT3B0aW9uc1tdW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpbmNsdWRlIG9mIGFkZGl0aW9uYWxJbmNsdWRlcykge1xuICAgICAgICAgICAgYWRkSW5jbHVkZXMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLmdldEluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlc1swXS5tb2RlbCBhcyB1bmtub3duIGFzIHR5cGVvZiBNb2RlbCxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogaW5jbHVkZS5wYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGluY2x1ZGUub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVyZTogaW5jbHVkZS53aGVyZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBpbmNsdWRlLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGU6IGluY2x1ZGUuc2VwYXJhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbm9pZDogaW5jbHVkZS5wYXJhbm9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YlF1ZXJ5OiBpbmNsdWRlLnN1YlF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQ6IGluY2x1ZGUubGltaXRcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUuYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICAgICAgaWdub3JlQXR0cmlidXRlc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpbmNsdWRlc1swXS5pbmNsdWRlLnB1c2goLi4uU2VxdWVsaXplVXRpbHMucmVkdWNlSW5jbHVkZXMoYWRkSW5jbHVkZXMsIGlnbm9yZUF0dHJpYnV0ZXMpKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBdHRyaWJ1dGVzKFxuICAgICAgICBtb2RlbDogdHlwZW9mIE1vZGVsLFxuICAgICAgICBwYXRoOiBQYXRoTW9kZWwsXG4gICAgICAgIGFkZGl0aW9uYWxJbmNsdWRlczogSW5jbHVkZU1vZGVsW10sXG4gICAgICAgIGF0dHJpYnV0ZXM/OiBGaW5kQXR0cmlidXRlT3B0aW9uc1xuICAgICk6IFNlYXJjaEF0dHJpYnV0ZXNNb2RlbFtdIHtcbiAgICAgICAgY29uc3Qgb2JqZWN0cyA9IHBhdGgucGF0aC5zcGxpdChcIi5cIik7XG4gICAgICAgIGlmICghb2JqZWN0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdDogU2VhcmNoQXR0cmlidXRlc01vZGVsW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvYmogb2Ygb2JqZWN0cykge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb24gPSB0aGlzLmZpbmRBc3NvY2lhdGlvbihtb2RlbCwgb2JqKTtcbiAgICAgICAgICAgIG1vZGVsID0gYXNzb2NpYXRpb24uZ2V0QXNzb2NpYXRlZENsYXNzKCkgYXMgdW5rbm93biBhcyB0eXBlb2YgTW9kZWw7XG4gICAgICAgIH1cbiAgICAgICAgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgP1xuICAgICAgICAgICAgU2VxdWVsaXplVXRpbHMuZ2V0TW9kZWxTZWFyY2hhYmxlRmllbGRBdHRyaWJ1dGVzKG1vZGVsIGFzIHR5cGVvZiBNLCBhdHRyaWJ1dGVzIGFzIHN0cmluZ1tdKSA6XG4gICAgICAgICAgICBTZXF1ZWxpemVVdGlscy5nZXRNb2RlbFNlYXJjaGFibGVBdHRyaWJ1dGVzKG1vZGVsIGFzIHR5cGVvZiBNKTtcbiAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICAuLi4oYXR0cmlidXRlcyBhcyBzdHJpbmdbXSkubWFwKGEgPT4gKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBhLFxuICAgICAgICAgICAgICAgIGtleTogU2VxdWVsaXplVXRpbHMuZ2V0QXR0cmlidXRlRnVsbE5hbWUoYSwgcGF0aC5wYXRoKSxcbiAgICAgICAgICAgICAgICBsaXRlcmFsS2V5OiBTZXF1ZWxpemVVdGlscy5nZXRMaXRlcmFsRnVsbE5hbWUoYSwgcGF0aC5wYXRoKSxcbiAgICAgICAgICAgICAgICBpc0pzb246IFNlcXVlbGl6ZVV0aWxzLmlzQ29sdW1uSnNvbihtb2RlbCBhcyB0eXBlb2YgTSwgYSlcbiAgICAgICAgICAgIH0pKVxuICAgICAgICApO1xuXG4gICAgICAgIGZvciAoY29uc3QgaW5jbHVkZSBvZiBhZGRpdGlvbmFsSW5jbHVkZXMpIHtcbiAgICAgICAgICAgIGlmIChpbmNsdWRlLmlnbm9yZUluU2VhcmNoKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKFxuICAgICAgICAgICAgICAgIC4uLnRoaXMuZ2V0QXR0cmlidXRlcyhcbiAgICAgICAgICAgICAgICAgICAgbW9kZWwgYXMgdHlwZW9mIE1vZGVsLFxuICAgICAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBpbmNsdWRlLnBhdGhcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUuc2VhcmNoYWJsZUF0dHJpYnV0ZXMgPz8gaW5jbHVkZS5hdHRyaWJ1dGVzXG4gICAgICAgICAgICAgICAgKS5tYXAoYSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBhLm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIGtleTogU2VxdWVsaXplVXRpbHMuZ2V0QXR0cmlidXRlRnVsbE5hbWUoYS5uYW1lLCBbcGF0aC5wYXRoLCBpbmNsdWRlLnBhdGhdLmpvaW4oXCIuXCIpKSxcbiAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbEtleTogU2VxdWVsaXplVXRpbHMuZ2V0TGl0ZXJhbEZ1bGxOYW1lKGEubmFtZSwgW3BhdGgucGF0aCwgaW5jbHVkZS5wYXRoXS5qb2luKFwiLlwiKSksXG4gICAgICAgICAgICAgICAgICAgIGlzSnNvbjogYS5pc0pzb25cbiAgICAgICAgICAgICAgICB9KSlcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRPcmRlcihtb2RlbDogdHlwZW9mIE1vZGVsLCBvcmRlck9iajogT3JkZXJNb2RlbCk6IE9yZGVyIHtcbiAgICAgICAgaWYgKCFvcmRlck9iaj8uY29sdW1uIHx8ICFvcmRlck9iai5kaXJlY3Rpb24pIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHZhbHVlcyA9IG9yZGVyT2JqLmNvbHVtbi5zcGxpdChcIi5cIik7XG4gICAgICAgIGNvbnN0IGNvbHVtbiA9IHZhbHVlcy5wb3AoKTtcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5maW5kQXNzb2NpYXRpb24obW9kZWwsIHZhbHVlKTtcbiAgICAgICAgICAgIG1vZGVsID0gYXNzb2NpYXRpb24uZ2V0QXNzb2NpYXRlZENsYXNzKCkgYXMgdW5rbm93biBhcyB0eXBlb2YgTW9kZWw7XG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29sID0gU2VxdWVsaXplVXRpbHMuZmluZENvbHVtbkZpZWxkTmFtZShtb2RlbCBhcyB0eXBlb2YgTSwgY29sdW1uKTtcbiAgICAgICAgbGV0IGxpdGVyYWxPcmRlciA9IHZhbHVlcy5sZW5ndGggP1xuICAgICAgICAgICAgU2VxdWVsaXplVXRpbHMuZ2V0TGl0ZXJhbEZ1bGxOYW1lKGNvbCwgdmFsdWVzKSA6XG4gICAgICAgICAgICBgXFxgJHttb2RlbC5uYW1lfVxcYC5cXGAke2NvbH1cXGBgO1xuXG4gICAgICAgIGlmIChvcmRlck9iai5udWxsTGFzdCkge1xuICAgICAgICAgICAgbGl0ZXJhbE9yZGVyID0gYC0ke2xpdGVyYWxPcmRlcn1gO1xuICAgICAgICAgICAgb3JkZXJPYmouZGlyZWN0aW9uID0gb3JkZXJPYmouZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCJkZXNjXCIgOiBcImFzY1wiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9yZGVyT2JqLmRpcmVjdGlvbiA9PT0gXCJkZXNjXCIpIHtcbiAgICAgICAgICAgIGxpdGVyYWxPcmRlciArPSBgIERFU0NgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaXRlcmFsKGxpdGVyYWxPcmRlcikgYXMgT3JkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEdyb3VwKG1vZGVsOiB0eXBlb2YgTW9kZWwsIG9yZGVyT2JqOiBPcmRlck1vZGVsKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoIW9yZGVyT2JqIHx8ICFvcmRlck9iai5jb2x1bW4gfHwgb3JkZXJPYmouZGlyZWN0aW9uID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncm91cDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gb3JkZXJPYmouY29sdW1uLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdmFsdWVzLnBvcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb24gPSB0aGlzLmZpbmRBc3NvY2lhdGlvbihtb2RlbCwgdmFsdWUpO1xuICAgICAgICAgICAgbW9kZWwgPSBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGVkQ2xhc3MoKSBhcyB1bmtub3duIGFzIHR5cGVvZiBNb2RlbDtcbiAgICAgICAgICAgIGdyb3VwLnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICBTZXF1ZWxpemVVdGlscy5nZXRPcmRlckZ1bGxOYW1lKFwiaWRcIiwgZ3JvdXApLFxuICAgICAgICAgICAgU2VxdWVsaXplVXRpbHMuZ2V0T3JkZXJGdWxsTmFtZShTZXF1ZWxpemVVdGlscy5maW5kQ29sdW1uRmllbGROYW1lKG1vZGVsIGFzIHR5cGVvZiBNLCBjb2x1bW4pLCBncm91cClcbiAgICAgICAgXTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0T3JkZXJJbmNsdWRlcyhtb2RlbDogdHlwZW9mIE1vZGVsLCBvcmRlck9iajogT3JkZXJNb2RlbCk6IEluY2x1ZGVPcHRpb25zW10ge1xuICAgICAgICBpZiAoIW9yZGVyT2JqIHx8ICFvcmRlck9iai5jb2x1bW4gfHwgb3JkZXJPYmouZGlyZWN0aW9uID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZXMgPSBvcmRlck9iai5jb2x1bW4uc3BsaXQoXCIuXCIpO1xuICAgICAgICBpZiAodmFsdWVzLmxlbmd0aCA8PSAxKSB7XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb2x1bW4gPSB2YWx1ZXMucG9wKCk7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogSW5jbHVkZU9wdGlvbnNbXSA9IFtdO1xuICAgICAgICBsZXQgaW5jbHVkZXM6IEluY2x1ZGVPcHRpb25zW10gPSByZXN1bHQ7XG4gICAgICAgIGxldCBpID0gMDtcbiAgICAgICAgZm9yIChjb25zdCB2YWx1ZSBvZiB2YWx1ZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGFzc29jaWF0aW9uID0gdGhpcy5maW5kQXNzb2NpYXRpb24obW9kZWwsIHZhbHVlKTtcbiAgICAgICAgICAgIGluY2x1ZGVzLnB1c2goe1xuICAgICAgICAgICAgICAgIGFzOiBhc3NvY2lhdGlvbi5nZXRBcygpIGFzIHN0cmluZyxcbiAgICAgICAgICAgICAgICBtb2RlbDogYXNzb2NpYXRpb24uZ2V0QXNzb2NpYXRlZENsYXNzKCksXG4gICAgICAgICAgICAgICAgYXR0cmlidXRlczogW10sXG4gICAgICAgICAgICAgICAgaW5jbHVkZTogW10sXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIHRocm91Z2g6IGFzc29jaWF0aW9uLmdldEFzc29jaWF0aW9uKCkgPT09IEFzc29jaWF0aW9uLkJlbG9uZ3NUb01hbnkgPyB7XG4gICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtdXG4gICAgICAgICAgICAgICAgfSA6IHVuZGVmaW5lZFxuICAgICAgICAgICAgfSk7XG5cbiAgICAgICAgICAgIGlmIChpKysgPCB2YWx1ZXMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIG1vZGVsID0gaW5jbHVkZXNbMF0ubW9kZWwgYXMgdW5rbm93biBhcyB0eXBlb2YgTW9kZWw7XG4gICAgICAgICAgICAgICAgaW5jbHVkZXMgPSBpbmNsdWRlc1swXS5pbmNsdWRlIGFzIEluY2x1ZGVPcHRpb25zW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpbmNsdWRlc1swXS5hdHRyaWJ1dGVzID0gW2NvbHVtbl07XG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBmaW5kQXNzb2NpYXRpb24obW9kZWw6IHR5cGVvZiBNb2RlbCwgb2JqOiBzdHJpbmcpOiBCYXNlQXNzb2NpYXRpb248YW55LCBhbnk+IHtcbiAgICAgICAgY29uc3QgYXNzb2NpYXRpb25zID0gZ2V0QXNzb2NpYXRpb25zKG1vZGVsLnByb3RvdHlwZSk7XG5cbiAgICAgICAgY29uc3QgYXNzb2NpYXRpb24gPSBhc3NvY2lhdGlvbnMuZmluZChhID0+IGEuZ2V0QXMoKSA9PT0gb2JqKTtcbiAgICAgICAgaWYgKCFhc3NvY2lhdGlvbikge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gbG9hZCBhc3NvY2lhdGlvbiBmb3IgJHtvYmp9YCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGFzc29jaWF0aW9uO1xuICAgIH1cbn1cbiJdfQ==
|
|
204
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9zY2FubmVycy9zZXF1ZWxpemUtbW9kZWwuc2Nhbm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSwyQ0FBNEM7QUFDNUMsNERBQXFEO0FBQ3JELHlDQUFpRjtBQUNqRiwrREFBNEY7QUFJNUYsd0RBQXVEO0FBQ3ZELHFGQUFnRjtBQUd6RSxJQUFNLHFCQUFxQixHQUEzQixNQUFNLHFCQUFxQjtJQUM5QixZQUFvQix1QkFBZ0Q7UUFBaEQsNEJBQXVCLEdBQXZCLHVCQUF1QixDQUF5QjtJQUNwRSxDQUFDO0lBRU0sV0FBVyxDQUNkLEtBQW1CLEVBQ25CLElBQWUsRUFDZixrQkFBa0MsRUFDbEMsVUFBaUMsRUFDakMsZ0JBQWdCLEdBQUcsS0FBSzs7UUFFeEIsTUFBTSxPQUFPLEdBQUcsTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsSUFBSSwwQ0FBRSxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDdkMsSUFBSSxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLE1BQU0sQ0FBQSxFQUFFO1lBQ2xCLE9BQU8sRUFBRSxDQUFDO1NBQ2I7UUFFRCxNQUFNLE1BQU0sR0FBcUIsRUFBRSxDQUFDO1FBQ3BDLElBQUksUUFBUSxHQUFxQixNQUFNLENBQUM7UUFDeEMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsS0FBSyxNQUFNLEdBQUcsSUFBSSxPQUFPLEVBQUU7WUFDdkIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLGVBQWUsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7WUFDckQsUUFBUSxDQUFDLElBQUksQ0FBQztnQkFDVixFQUFFLEVBQUUsV0FBVyxDQUFDLEtBQUssRUFBWTtnQkFDakMsS0FBSyxFQUFFLFdBQVcsQ0FBQyxrQkFBa0IsRUFBRTtnQkFDdkMsVUFBVSxFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFD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QUFHLENBQUMsQ0FBQztRQUM5RCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2QsTUFBTSxJQUFJLEtBQUssQ0FBQyxrQ0FBa0MsR0FBRyxFQUFFLENBQUMsQ0FBQztTQUM1RDtRQUNELE9BQU8sV0FBVyxDQUFDO0lBQ3ZCLENBQUM7Q0FDSixDQUFBO0FBdE9ZLHFCQUFxQjtJQURqQyxJQUFBLG1CQUFVLEdBQUU7cUNBRW9DLG1EQUF1QjtHQUQzRCxxQkFBcUIsQ0FzT2pDO0FBdE9ZLHNEQUFxQiIsImZpbGUiOiJsaWIvc2Nhbm5lcnMvc2VxdWVsaXplLW1vZGVsLnNjYW5uZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBUeXBlVXRpbHMgfSBmcm9tIFwiQHJlY3Vyc3l2ZS9uZXN0anMtY29tbW9uXCI7XG5pbXBvcnQgeyBGaW5kQXR0cmlidXRlT3B0aW9ucywgSW5jbHVkZU9wdGlvbnMsIGxpdGVyYWwsIE9yZGVyIH0gZnJvbSBcInNlcXVlbGl6ZVwiO1xuaW1wb3J0IHsgQXNzb2NpYXRpb24sIEJhc2VBc3NvY2lhdGlvbiwgZ2V0QXNzb2NpYXRpb25zLCBNb2RlbCB9IGZyb20gXCJzZXF1ZWxpemUtdHlwZXNjcmlwdFwiO1xuaW1wb3J0IHsgSW5jbHVkZU1vZGVsLCBPcmRlck1vZGVsIH0gZnJvbSBcIi4uXCI7XG5pbXBvcnQgeyBQYXRoTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL3BhdGgubW9kZWxcIjtcbmltcG9ydCB7IFNlYXJjaEF0dHJpYnV0ZXNNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvc2VhcmNoLWF0dHJpYnV0ZXMubW9kZWxcIjtcbmltcG9ydCB7IE0sIFNlcXVlbGl6ZVV0aWxzIH0gZnJvbSBcIi4uL3NlcXVlbGl6ZS51dGlsc1wiO1xuaW1wb3J0IHsgRGlhbGVjdEZvcm1hdHRlclNlcnZpY2UgfSBmcm9tIFwiLi4vc2VydmljZXMvZGlhbGVjdC1mb3JtYXR0ZXIuc2VydmljZVwiO1xuXG5ASW5qZWN0YWJsZSgpXG5leHBvcnQgY2xhc3MgU2VxdWVsaXplTW9kZWxTY2FubmVyIHtcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGRpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlOiBEaWFsZWN0Rm9ybWF0dGVyU2VydmljZSkge1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRJbmNsdWRlcyhcbiAgICAgICAgbW9kZWw6IHR5cGVvZiBNb2RlbCxcbiAgICAgICAgcGF0aDogUGF0aE1vZGVsLFxuICAgICAgICBhZGRpdGlvbmFsSW5jbHVkZXM6IEluY2x1ZGVNb2RlbFtdLFxuICAgICAgICBhdHRyaWJ1dGVzPzogRmluZEF0dHJpYnV0ZU9wdGlvbnMsXG4gICAgICAgIGlnbm9yZUF0dHJpYnV0ZXMgPSBmYWxzZVxuICAgICk6IEluY2x1ZGVPcHRpb25zW10ge1xuICAgICAgICBjb25zdCBvYmplY3RzID0gcGF0aD8ucGF0aD8uc3BsaXQoXCIuXCIpO1xuICAgICAgICBpZiAoIW9iamVjdHM/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgcmVzdWx0OiBJbmNsdWRlT3B0aW9uc1tdID0gW107XG4gICAgICAgIGxldCBpbmNsdWRlczogSW5jbHVkZU9wdGlvbnNbXSA9IHJlc3VsdDtcbiAgICAgICAgbGV0IGkgPSAwO1xuICAgICAgICBmb3IgKGNvbnN0IG9iaiBvZiBvYmplY3RzKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuZmluZEFzc29jaWF0aW9uKG1vZGVsLCBvYmopO1xuICAgICAgICAgICAgaW5jbHVkZXMucHVzaCh7XG4gICAgICAgICAgICAgICAgYXM6IGFzc29jaWF0aW9uLmdldEFzKCkgYXMgc3RyaW5nLFxuICAgICAgICAgICAgICAgIG1vZGVsOiBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGVkQ2xhc3MoKSxcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBpZ25vcmVBdHRyaWJ1dGVzID8gW10gOiB7IGluY2x1ZGU6IFtdIH0sXG4gICAgICAgICAgICAgICAgaW5jbHVkZTogW10sXG4gICAgICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICAgICAgICAgIC4uLihpZ25vcmVBdHRyaWJ1dGVzICYmIGFzc29jaWF0aW9uLmdldEFzc29jaWF0aW9uKCkgPT09IFwiYmVsb25nc1RvTWFueVwiICYmIHsgdGhyb3VnaDogeyBhdHRyaWJ1dGVzOiBbXSB9IH0pXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgaWYgKGkrKyA8IG9iamVjdHMubGVuZ3RoIC0gMSkge1xuICAgICAgICAgICAgICAgIG1vZGVsID0gaW5jbHVkZXNbMF0ubW9kZWwgYXMgdW5rbm93biBhcyB0eXBlb2YgTW9kZWw7XG4gICAgICAgICAgICAgICAgaW5jbHVkZXMgPSBpbmNsdWRlc1swXS5pbmNsdWRlIGFzIEluY2x1ZGVPcHRpb25zW107XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoYXR0cmlidXRlcykge1xuICAgICAgICAgICAgaW5jbHVkZXNbMF0uYXR0cmlidXRlcyA9IGlnbm9yZUF0dHJpYnV0ZXMgPyBbXSA6IFNlcXVlbGl6ZVV0aWxzLm1lcmdlQXR0cmlidXRlcyhpbmNsdWRlc1swXS5hdHRyaWJ1dGVzLCBhdHRyaWJ1dGVzKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocGF0aC53aGVyZSkge1xuICAgICAgICAgICAgaW5jbHVkZXNbMF0ud2hlcmUgPSBTZXF1ZWxpemVVdGlscy5tZXJnZVdoZXJlKGluY2x1ZGVzWzBdLndoZXJlLCBwYXRoLndoZXJlKTtcbiAgICAgICAgICAgIGluY2x1ZGVzWzBdLnJlcXVpcmVkID0gISFwYXRoLnJlcXVpcmVkO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoLnJlcXVpcmVkKSB7XG4gICAgICAgICAgICBpbmNsdWRlc1swXS5yZXF1aXJlZCA9IHRydWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHBhdGgubGltaXQpIHtcbiAgICAgICAgICAgIGluY2x1ZGVzWzBdLmxpbWl0ID0gcGF0aC5saW1pdDtcbiAgICAgICAgfVxuXG4gICAgICAgIGluY2x1ZGVzWzBdLnBhcmFub2lkID0gISFwYXRoLnBhcmFub2lkO1xuICAgICAgICBpbmNsdWRlc1swXS5zZXBhcmF0ZSA9ICEhcGF0aC5zZXBhcmF0ZTtcbiAgICAgICAgaW5jbHVkZXNbMF0ub3JkZXIgPSBwYXRoLm9yZGVyO1xuXG4gICAgICAgIGlmIChUeXBlVXRpbHMuaXNOb3ROdWxsT3JVbmRlZmluZWQocGF0aC5zdWJRdWVyeSkpIHtcbiAgICAgICAgICAgIGluY2x1ZGVzWzBdLnN1YlF1ZXJ5ID0gcGF0aC5zdWJRdWVyeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGFkZEluY2x1ZGVzOiBJbmNsdWRlT3B0aW9uc1tdW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBpbmNsdWRlIG9mIGFkZGl0aW9uYWxJbmNsdWRlcykge1xuICAgICAgICAgICAgYWRkSW5jbHVkZXMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLmdldEluY2x1ZGVzKFxuICAgICAgICAgICAgICAgICAgICBpbmNsdWRlc1swXS5tb2RlbCBhcyB1bmtub3duIGFzIHR5cGVvZiBNb2RlbCxcbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogaW5jbHVkZS5wYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXI6IGluY2x1ZGUub3JkZXIsXG4gICAgICAgICAgICAgICAgICAgICAgICB3aGVyZTogaW5jbHVkZS53aGVyZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBpbmNsdWRlLnJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGU6IGluY2x1ZGUuc2VwYXJhdGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbm9pZDogaW5jbHVkZS5wYXJhbm9pZCxcbiAgICAgICAgICAgICAgICAgICAgICAgIHN1YlF1ZXJ5OiBpbmNsdWRlLnN1YlF1ZXJ5LFxuICAgICAgICAgICAgICAgICAgICAgICAgbGltaXQ6IGluY2x1ZGUubGltaXRcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAgICAgICAgIGluY2x1ZGUuYXR0cmlidXRlcyxcbiAgICAgICAgICAgICAgICAgICAgaWdub3JlQXR0cmlidXRlc1xuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBpbmNsdWRlc1swXS5pbmNsdWRlLnB1c2goLi4uU2VxdWVsaXplVXRpbHMucmVkdWNlSW5jbHVkZXMoYWRkSW5jbHVkZXMsIGlnbm9yZUF0dHJpYnV0ZXMpKTtcblxuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHB1YmxpYyBnZXRBdHRyaWJ1dGVzKFxuICAgICAgICBtb2RlbDogdHlwZW9mIE1vZGVsLFxuICAgICAgICBwYXRoOiBQYXRoTW9kZWwsXG4gICAgICAgIGFkZGl0aW9uYWxJbmNsdWRlczogSW5jbHVkZU1vZGVsW10sXG4gICAgICAgIGF0dHJpYnV0ZXM/OiBGaW5kQXR0cmlidXRlT3B0aW9uc1xuICAgICk6IFNlYXJjaEF0dHJpYnV0ZXNNb2RlbFtdIHtcbiAgICAgICAgY29uc3Qgb2JqZWN0cyA9IHBhdGgucGF0aC5zcGxpdChcIi5cIik7XG4gICAgICAgIGlmICghb2JqZWN0cy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBbXTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc3VsdDogU2VhcmNoQXR0cmlidXRlc01vZGVsW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvYmogb2Ygb2JqZWN0cykge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb24gPSB0aGlzLmZpbmRBc3NvY2lhdGlvbihtb2RlbCwgb2JqKTtcbiAgICAgICAgICAgIG1vZGVsID0gYXNzb2NpYXRpb24uZ2V0QXNzb2NpYXRlZENsYXNzKCkgYXMgdW5rbm93biBhcyB0eXBlb2YgTW9kZWw7XG4gICAgICAgIH1cbiAgICAgICAgYXR0cmlidXRlcyA9IGF0dHJpYnV0ZXMgP1xuICAgICAgICAgICAgU2VxdWVsaXplVXRpbHMuZ2V0TW9kZWxTZWFyY2hhYmxlRmllbGRBdHRyaWJ1dGVzKG1vZGVsIGFzIHR5cGVvZiBNLCBhdHRyaWJ1dGVzIGFzIHN0cmluZ1tdKSA6XG4gICAgICAgICAgICBTZXF1ZWxpemVVdGlscy5nZXRNb2RlbFNlYXJjaGFibGVBdHRyaWJ1dGVzKG1vZGVsIGFzIHR5cGVvZiBNKTtcbiAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICAuLi4oYXR0cmlidXRlcyBhcyBzdHJpbmdbXSkubWFwKGEgPT4gKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBhLFxuICAgICAgICAgICAgICAgIGtleTogU2VxdWVsaXplVXRpbHMuZ2V0QXR0cmlidXRlRnVsbE5hbWUoYSwgcGF0aC5wYXRoKSxcbiAgICAgICAgICAgICAgICBsaXRlcmFsS2V5OiB0aGlzLmRpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlLmdldExpdGVyYWxGdWxsTmFtZShhLCBwYXRoLnBhdGgpLFxuICAgICAgICAgICAgICAgIGlzSnNvbjogU2VxdWVsaXplVXRpbHMuaXNDb2x1bW5Kc29uKG1vZGVsIGFzIHR5cGVvZiBNLCBhKVxuICAgICAgICAgICAgfSkpXG4gICAgICAgICk7XG5cbiAgICAgICAgZm9yIChjb25zdCBpbmNsdWRlIG9mIGFkZGl0aW9uYWxJbmNsdWRlcykge1xuICAgICAgICAgICAgaWYgKGluY2x1ZGUuaWdub3JlSW5TZWFyY2gpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmVzdWx0LnB1c2goXG4gICAgICAgICAgICAgICAgLi4udGhpcy5nZXRBdHRyaWJ1dGVzKFxuICAgICAgICAgICAgICAgICAgICBtb2RlbCBhcyB0eXBlb2YgTW9kZWwsXG4gICAgICAgICAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGg6IGluY2x1ZGUucGF0aFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICBbXSxcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZS5zZWFyY2hhYmxlQXR0cmlidXRlcyA/PyBpbmNsdWRlLmF0dHJpYnV0ZXNcbiAgICAgICAgICAgICAgICApLm1hcChhID0+ICh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGEubmFtZSxcbiAgICAgICAgICAgICAgICAgICAga2V5OiBTZXF1ZWxpemVVdGlscy5nZXRBdHRyaWJ1dGVGdWxsTmFtZShhLm5hbWUsIFtwYXRoLnBhdGgsIGluY2x1ZGUucGF0aF0uam9pbihcIi5cIikpLFxuICAgICAgICAgICAgICAgICAgICBsaXRlcmFsS2V5OiB0aGlzLmRpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlLmdldExpdGVyYWxGdWxsTmFtZShhLm5hbWUsIFtwYXRoLnBhdGgsIGluY2x1ZGUucGF0aF0uam9pbihcIi5cIikpLFxuICAgICAgICAgICAgICAgICAgICBpc0pzb246IGEuaXNKc29uXG4gICAgICAgICAgICAgICAgfSkpXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0T3JkZXIobW9kZWw6IHR5cGVvZiBNb2RlbCwgb3JkZXJPYmo6IE9yZGVyTW9kZWwpOiBPcmRlciB7XG4gICAgICAgIGlmICghb3JkZXJPYmo/LmNvbHVtbiB8fCAhb3JkZXJPYmouZGlyZWN0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZXMgPSBvcmRlck9iai5jb2x1bW4uc3BsaXQoXCIuXCIpO1xuICAgICAgICBjb25zdCBjb2x1bW4gPSB2YWx1ZXMucG9wKCk7XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuZmluZEFzc29jaWF0aW9uKG1vZGVsLCB2YWx1ZSk7XG4gICAgICAgICAgICBtb2RlbCA9IGFzc29jaWF0aW9uLmdldEFzc29jaWF0ZWRDbGFzcygpIGFzIHVua25vd24gYXMgdHlwZW9mIE1vZGVsO1xuICAgICAgICB9XG4gICAgICAgIGNvbnN0IGNvbCA9IFNlcXVlbGl6ZVV0aWxzLmZpbmRDb2x1bW5GaWVsZE5hbWUobW9kZWwgYXMgdHlwZW9mIE0sIGNvbHVtbik7XG4gICAgICAgIGxldCBsaXRlcmFsT3JkZXIgPSB2YWx1ZXMubGVuZ3RoID9cbiAgICAgICAgICAgIHRoaXMuZGlhbGVjdEZvcm1hdHRlclNlcnZpY2UuZ2V0TGl0ZXJhbEZ1bGxOYW1lKGNvbCwgdmFsdWVzKSA6XG4gICAgICAgICAgICB0aGlzLmRpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlLmZvcm1hdENvbChtb2RlbC5uYW1lLCBjb2wpO1xuXG4gICAgICAgIGlmIChvcmRlck9iai5udWxsTGFzdCkge1xuICAgICAgICAgICAgbGl0ZXJhbE9yZGVyID0gYC0ke2xpdGVyYWxPcmRlcn1gO1xuICAgICAgICAgICAgb3JkZXJPYmouZGlyZWN0aW9uID0gb3JkZXJPYmouZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCJkZXNjXCIgOiBcImFzY1wiO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9yZGVyT2JqLmRpcmVjdGlvbiA9PT0gXCJkZXNjXCIpIHtcbiAgICAgICAgICAgIGxpdGVyYWxPcmRlciArPSBgIERFU0NgO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBsaXRlcmFsKGxpdGVyYWxPcmRlcikgYXMgT3JkZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGdldEdyb3VwKG1vZGVsOiB0eXBlb2YgTW9kZWwsIG9yZGVyT2JqOiBPcmRlck1vZGVsKTogc3RyaW5nW10ge1xuICAgICAgICBpZiAoIW9yZGVyT2JqIHx8ICFvcmRlck9iai5jb2x1bW4gfHwgb3JkZXJPYmouZGlyZWN0aW9uID09PSBcIlwiKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncm91cDogc3RyaW5nW10gPSBbXTtcbiAgICAgICAgY29uc3QgdmFsdWVzID0gb3JkZXJPYmouY29sdW1uLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgY29uc3QgY29sdW1uID0gdmFsdWVzLnBvcCgpO1xuICAgICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHZhbHVlcykge1xuICAgICAgICAgICAgY29uc3QgYXNzb2NpYXRpb24gPSB0aGlzLmZpbmRBc3NvY2lhdGlvbihtb2RlbCwgdmFsdWUpO1xuICAgICAgICAgICAgbW9kZWwgPSBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGVkQ2xhc3MoKSBhcyB1bmtub3duIGFzIHR5cGVvZiBNb2RlbDtcbiAgICAgICAgICAgIGdyb3VwLnB1c2godmFsdWUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBbXG4gICAgICAgICAgICB0aGlzLmRpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlLmdldE9yZGVyRnVsbE5hbWUoXCJpZFwiLCBncm91cCksXG4gICAgICAgICAgICB0aGlzLmRpYWxlY3RGb3JtYXR0ZXJTZXJ2aWNlLmdldE9yZGVyRnVsbE5hbWUoU2VxdWVsaXplVXRpbHMuZmluZENvbHVtbkZpZWxkTmFtZShtb2RlbCBhcyB0eXBlb2YgTSwgY29sdW1uKSwgZ3JvdXApXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHVibGljIGdldE9yZGVySW5jbHVkZXMobW9kZWw6IHR5cGVvZiBNb2RlbCwgb3JkZXJPYmo6IE9yZGVyTW9kZWwpOiBJbmNsdWRlT3B0aW9uc1tdIHtcbiAgICAgICAgaWYgKCFvcmRlck9iaiB8fCAhb3JkZXJPYmouY29sdW1uIHx8IG9yZGVyT2JqLmRpcmVjdGlvbiA9PT0gXCJcIikge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gb3JkZXJPYmouY29sdW1uLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgaWYgKHZhbHVlcy5sZW5ndGggPD0gMSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29sdW1uID0gdmFsdWVzLnBvcCgpO1xuICAgICAgICBjb25zdCByZXN1bHQ6IEluY2x1ZGVPcHRpb25zW10gPSBbXTtcbiAgICAgICAgbGV0IGluY2x1ZGVzOiBJbmNsdWRlT3B0aW9uc1tdID0gcmVzdWx0O1xuICAgICAgICBsZXQgaSA9IDA7XG4gICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdmFsdWVzKSB7XG4gICAgICAgICAgICBjb25zdCBhc3NvY2lhdGlvbiA9IHRoaXMuZmluZEFzc29jaWF0aW9uKG1vZGVsLCB2YWx1ZSk7XG4gICAgICAgICAgICBpbmNsdWRlcy5wdXNoKHtcbiAgICAgICAgICAgICAgICBhczogYXNzb2NpYXRpb24uZ2V0QXMoKSBhcyBzdHJpbmcsXG4gICAgICAgICAgICAgICAgbW9kZWw6IGFzc29jaWF0aW9uLmdldEFzc29jaWF0ZWRDbGFzcygpLFxuICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXM6IFtdLFxuICAgICAgICAgICAgICAgIGluY2x1ZGU6IFtdLFxuICAgICAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgICAgICAgICB0aHJvdWdoOiBhc3NvY2lhdGlvbi5nZXRBc3NvY2lhdGlvbigpID09PSBBc3NvY2lhdGlvbi5CZWxvbmdzVG9NYW55ID8ge1xuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXVxuICAgICAgICAgICAgICAgIH0gOiB1bmRlZmluZWRcbiAgICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgICBpZiAoaSsrIDwgdmFsdWVzLmxlbmd0aCAtIDEpIHtcbiAgICAgICAgICAgICAgICBtb2RlbCA9IGluY2x1ZGVzWzBdLm1vZGVsIGFzIHVua25vd24gYXMgdHlwZW9mIE1vZGVsO1xuICAgICAgICAgICAgICAgIGluY2x1ZGVzID0gaW5jbHVkZXNbMF0uaW5jbHVkZSBhcyBJbmNsdWRlT3B0aW9uc1tdO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaW5jbHVkZXNbMF0uYXR0cmlidXRlcyA9IFtjb2x1bW5dO1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cblxuICAgIHByaXZhdGUgZmluZEFzc29jaWF0aW9uKG1vZGVsOiB0eXBlb2YgTW9kZWwsIG9iajogc3RyaW5nKTogQmFzZUFzc29jaWF0aW9uPGFueSwgYW55PiB7XG4gICAgICAgIGNvbnN0IGFzc29jaWF0aW9ucyA9IGdldEFzc29jaWF0aW9ucyhtb2RlbC5wcm90b3R5cGUpO1xuXG4gICAgICAgIGNvbnN0IGFzc29jaWF0aW9uID0gYXNzb2NpYXRpb25zLmZpbmQoYSA9PiBhLmdldEFzKCkgPT09IG9iaik7XG4gICAgICAgIGlmICghYXNzb2NpYXRpb24pIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIGxvYWQgYXNzb2NpYXRpb24gZm9yICR7b2JqfWApO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBhc3NvY2lhdGlvbjtcbiAgICB9XG59XG4iXX0=
|
package/lib/sequelize.utils.d.ts
CHANGED
|
@@ -18,13 +18,10 @@ export declare class SequelizeUtils {
|
|
|
18
18
|
static mergeOrder(a: Order, b: Order): Order;
|
|
19
19
|
static generateWhereValue(rule: RuleModel): WhereAttributeHashValue<any>;
|
|
20
20
|
static getAttributeFullName(attribute: string, path: string): string;
|
|
21
|
-
static getLiteralFullName(attribute: string, path: string | string[]): string;
|
|
22
|
-
static getOrderFullName(attribute: string, path: string[]): string;
|
|
23
21
|
static getModelSearchableAttributes(model: typeof M): string[];
|
|
24
22
|
static getModelSearchableFieldAttributes(model: typeof M, fields: string[]): string[];
|
|
25
23
|
static reduceModelFromPath(model: M, path: string): any;
|
|
26
24
|
static findColumnFieldName(model: typeof M, name: string): string;
|
|
27
25
|
static isColumnJson(model: typeof M, name: string): boolean;
|
|
28
|
-
static getGroupLiteral(model: typeof M, group: string): string;
|
|
29
26
|
static generateWhereConditions(model: IncludeWhereModel, options?: object): WhereOptions;
|
|
30
27
|
}
|