@recursyve/nestjs-data-filter 10.2.0 → 11.1.0
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/index.js +0 -2
- package/lib/adapters/access-control.adapter.js +0 -2
- package/lib/adapters/default-access-control.adapter.js +0 -2
- package/lib/adapters/default-export.adapter.d.ts +0 -1
- package/lib/adapters/default-export.adapter.js +0 -2
- package/lib/adapters/default-translate.adapter.js +0 -2
- package/lib/adapters/export.adapter.d.ts +0 -1
- package/lib/adapters/export.adapter.js +0 -2
- package/lib/adapters/index.js +0 -2
- package/lib/adapters/translate.adapter.js +0 -2
- package/lib/constant.js +0 -2
- package/lib/data-filter.repository.d.ts +0 -1
- package/lib/data-filter.repository.js +0 -2
- package/lib/data-filter.service.js +0 -2
- package/lib/decorators/attributes.decorator.js +1 -4
- package/lib/decorators/count.decorator.js +1 -4
- package/lib/decorators/data.decorator.js +1 -4
- package/lib/decorators/distance.decorator.js +1 -4
- package/lib/decorators/export.decorator.js +1 -4
- package/lib/decorators/ignore-in-search.decorator.js +1 -4
- package/lib/decorators/include.decorator.d.ts +1 -1
- package/lib/decorators/include.decorator.js +1 -4
- package/lib/decorators/index.js +0 -2
- package/lib/decorators/limit.decorator.js +1 -4
- package/lib/decorators/order.decorator.js +1 -4
- package/lib/decorators/paranoid.decorator.js +1 -4
- package/lib/decorators/path.decorator.js +1 -4
- package/lib/decorators/required.decorator.js +1 -4
- package/lib/decorators/seachable-attributes.decorator.js +1 -4
- package/lib/decorators/searchable-translation-attributes.decorator.js +1 -4
- package/lib/decorators/separate.decorator.js +1 -4
- package/lib/decorators/sum.decorator.js +1 -4
- package/lib/decorators/where.decorator.js +1 -4
- package/lib/deserializers/default.deserializer.js +0 -2
- package/lib/deserializers/index.js +0 -2
- package/lib/deserializers/user.deserializer.js +0 -2
- package/lib/filter/base-filter.js +0 -2
- package/lib/filter/controllers/dynamic-filter.controller.d.ts +0 -1
- package/lib/filter/controllers/dynamic-filter.controller.js +7 -7
- package/lib/filter/controllers/filter.controller.d.ts +0 -1
- package/lib/filter/controllers/filter.controller.js +7 -7
- package/lib/filter/controllers/open-api-filter.controller.d.ts +4 -0
- package/lib/filter/controllers/open-api-filter.controller.js +123 -0
- package/lib/filter/decorators/inject-filter.decorator.js +0 -2
- package/lib/filter/filter.config.js +0 -2
- package/lib/filter/filter.factory.js +2 -5
- package/lib/filter/filter.provider.js +1 -4
- package/lib/filter/filter.service.d.ts +1 -2
- package/lib/filter/filter.service.js +0 -2
- package/lib/filter/filter.utils.js +0 -2
- package/lib/filter/filters/coordinate.filter.js +0 -2
- package/lib/filter/filters/date-only.filter.js +0 -2
- package/lib/filter/filters/date-time.filter.js +0 -2
- package/lib/filter/filters/date.filter.js +0 -2
- package/lib/filter/filters/default.filter.js +0 -2
- package/lib/filter/filters/filter.js +0 -2
- package/lib/filter/filters/geo-bounds.filter.js +0 -2
- package/lib/filter/filters/geo-localization.filter.js +0 -2
- package/lib/filter/filters/group.filter.js +0 -2
- package/lib/filter/filters/index.js +0 -2
- package/lib/filter/filters/number.filter.js +0 -2
- package/lib/filter/filters/options.filter.d.ts +3 -2
- package/lib/filter/filters/options.filter.js +23 -3
- package/lib/filter/filters/select.filter.d.ts +1 -1
- package/lib/filter/filters/select.filter.js +22 -3
- package/lib/filter/filters/text.filter.js +0 -2
- package/lib/filter/guards/filter-query.guard.js +0 -2
- package/lib/filter/index.d.ts +1 -0
- package/lib/filter/index.js +1 -2
- package/lib/filter/interceptors/data-file-download.interceptor.d.ts +0 -1
- package/lib/filter/interceptors/data-file-download.interceptor.js +0 -2
- package/lib/filter/models/filter-configuration-search.model.d.ts +1 -1
- package/lib/filter/models/filter-configuration-search.model.js +30 -2
- package/lib/filter/models/filter-configuration.model.d.ts +6 -6
- package/lib/filter/models/filter-configuration.model.js +115 -2
- package/lib/filter/models/filter-resource-value.model.d.ts +1 -1
- package/lib/filter/models/filter-resource-value.model.js +22 -2
- package/lib/filter/models/filter.model.js +0 -2
- package/lib/filter/models/index.js +0 -2
- package/lib/filter/models/query.model.d.ts +5 -3
- package/lib/filter/models/query.model.js +39 -2
- package/lib/filter/models/rule.model.d.ts +3 -3
- package/lib/filter/models/rule.model.js +25 -2
- package/lib/filter/operators.js +0 -2
- package/lib/filter/order-rules/default.order-rule.js +0 -2
- package/lib/filter/order-rules/enum.order-rule.js +0 -2
- package/lib/filter/order-rules/if.order-rule.js +0 -2
- package/lib/filter/order-rules/index.js +0 -2
- package/lib/filter/order-rules/is-null.order-rule.js +0 -2
- package/lib/filter/order-rules/json.order-rule.js +0 -2
- package/lib/filter/order-rules/order-rule.js +0 -2
- package/lib/filter/type.js +0 -2
- package/lib/handlers/attributes.handler.js +0 -2
- package/lib/handlers/data-filter.handler.js +0 -2
- package/lib/index.js +0 -2
- package/lib/json.data.js +0 -2
- package/lib/models/attributes.model.js +0 -2
- package/lib/models/count.model.js +0 -2
- package/lib/models/custom-attributes.model.js +0 -2
- package/lib/models/data-filter.model.js +0 -2
- package/lib/models/definition.model.js +0 -2
- package/lib/models/distance.model.js +0 -2
- package/lib/models/export-types.model.js +0 -2
- package/lib/models/filter.model.d.ts +15 -6
- package/lib/models/filter.model.js +120 -2
- package/lib/models/include.model.js +0 -2
- package/lib/models/path.model.js +0 -2
- package/lib/models/search-attributes.model.js +0 -2
- package/lib/models/sum.model.js +0 -2
- package/lib/models/user.model.js +0 -2
- package/lib/scanners/data-filter.scanner.js +0 -2
- package/lib/scanners/sequelize-model.scanner.js +0 -2
- package/lib/sequelize.utils.js +0 -2
- package/lib/services/data-filter-validation.service.js +0 -2
- package/lib/utils/csv.utils.d.ts +0 -1
- package/lib/utils/csv.utils.js +0 -2
- package/lib/utils/xlsx.utils.d.ts +0 -1
- package/lib/utils/xlsx.utils.js +0 -2
- package/package.json +34 -37
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.Where =
|
|
3
|
+
exports.Where = Where;
|
|
4
4
|
const attributes_handler_1 = require("../handlers/attributes.handler");
|
|
5
5
|
const path_model_1 = require("../models/path.model");
|
|
6
6
|
function Where(where, required = false) {
|
|
@@ -16,6 +16,3 @@ function Where(where, required = false) {
|
|
|
16
16
|
attributes_handler_1.AttributesHandler.saveAttribute(target, attribute);
|
|
17
17
|
};
|
|
18
18
|
}
|
|
19
|
-
exports.Where = Where;
|
|
20
|
-
|
|
21
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kZWNvcmF0b3JzL3doZXJlLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx1RUFBbUU7QUFDbkUscURBQWtEO0FBRWxELFNBQWdCLEtBQUssQ0FBQyxLQUF3QixFQUFFLFFBQVEsR0FBRyxLQUFLO0lBQzVELE9BQU8sQ0FBQyxNQUFjLEVBQUUsV0FBNEIsRUFBRSxFQUFFOztRQUNwRCxNQUFNLFNBQVMsR0FBRyxzQ0FBaUIsQ0FBQyxZQUFZLENBQUMsTUFBTSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ3RFLE1BQU0sSUFBSSxHQUFHLE1BQUEsU0FBUyxDQUFDLElBQUksbUNBQUksSUFBSSx1QkFBVSxDQUFDO1lBQzFDLFFBQVEsRUFBRSxJQUFJO1NBQ2pCLENBQUMsQ0FBQztRQUNILElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDeEIsc0NBQWlCLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUN2RCxDQUFDLENBQUM7QUFDTixDQUFDO0FBWEQsc0JBV0MiLCJmaWxlIjoibGliL2RlY29yYXRvcnMvd2hlcmUuZGVjb3JhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5jbHVkZVdoZXJlTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2luY2x1ZGUubW9kZWxcIjtcbmltcG9ydCB7IEF0dHJpYnV0ZXNIYW5kbGVyIH0gZnJvbSBcIi4uL2hhbmRsZXJzL2F0dHJpYnV0ZXMuaGFuZGxlclwiO1xuaW1wb3J0IHsgUGF0aENvbmZpZyB9IGZyb20gXCIuLi9tb2RlbHMvcGF0aC5tb2RlbFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gV2hlcmUod2hlcmU6IEluY2x1ZGVXaGVyZU1vZGVsLCByZXF1aXJlZCA9IGZhbHNlKTogUHJvcGVydHlEZWNvcmF0b3Ige1xuICAgIHJldHVybiAodGFyZ2V0OiBPYmplY3QsIHByb3BlcnR5S2V5OiBzdHJpbmcgfCBzeW1ib2wpID0+IHtcbiAgICAgICAgY29uc3QgYXR0cmlidXRlID0gQXR0cmlidXRlc0hhbmRsZXIuZ2V0QXR0cmlidXRlKHRhcmdldCwgcHJvcGVydHlLZXkpO1xuICAgICAgICBjb25zdCBwYXRoID0gYXR0cmlidXRlLnBhdGggPz8gbmV3IFBhdGhDb25maWcoe1xuICAgICAgICAgICAgcGFyYW5vaWQ6IHRydWVcbiAgICAgICAgfSk7XG4gICAgICAgIHBhdGgud2hlcmUgPSB3aGVyZTtcbiAgICAgICAgcGF0aC5yZXF1aXJlZCA9IHJlcXVpcmVkO1xuICAgICAgICBhdHRyaWJ1dGUuc2V0UGF0aChwYXRoKTtcbiAgICAgICAgQXR0cmlidXRlc0hhbmRsZXIuc2F2ZUF0dHJpYnV0ZSh0YXJnZXQsIGF0dHJpYnV0ZSk7XG4gICAgfTtcbn1cbiJdfQ==
|
|
@@ -8,5 +8,3 @@ class DefaultDeserializer extends user_deserializer_1.UserDeserializer {
|
|
|
8
8
|
}
|
|
9
9
|
}
|
|
10
10
|
exports.DefaultDeserializer = DefaultDeserializer;
|
|
11
|
-
|
|
12
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kZXNlcmlhbGl6ZXJzL2RlZmF1bHQuZGVzZXJpYWxpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDJEQUF1RDtBQUV2RCxNQUFhLG1CQUF1QixTQUFRLG9DQUFtQjtJQUNwRCxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQVE7UUFDakMsT0FBTyxHQUFHLENBQUMsSUFBSSxDQUFDO0lBQ3BCLENBQUM7Q0FDSjtBQUpELGtEQUlDIiwiZmlsZSI6ImxpYi9kZXNlcmlhbGl6ZXJzL2RlZmF1bHQuZGVzZXJpYWxpemVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVXNlckRlc2VyaWFsaXplciB9IGZyb20gXCIuL3VzZXIuZGVzZXJpYWxpemVyXCI7XG5cbmV4cG9ydCBjbGFzcyBEZWZhdWx0RGVzZXJpYWxpemVyPFQ+IGV4dGVuZHMgVXNlckRlc2VyaWFsaXplcjxUPiB7XG4gICAgcHVibGljIGFzeW5jIGRlc2VyaWFsaXplVXNlcihyZXE6IGFueSk6IFByb21pc2U8VD4ge1xuICAgICAgICByZXR1cm4gcmVxLnVzZXI7XG4gICAgfVxufVxuIl19
|
|
@@ -16,5 +16,3 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
|
16
16
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
17
|
__exportStar(require("./default.deserializer"), exports);
|
|
18
18
|
__exportStar(require("./user.deserializer"), exports);
|
|
19
|
-
|
|
20
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kZXNlcmlhbGl6ZXJzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx5REFBdUM7QUFDdkMsc0RBQW9DIiwiZmlsZSI6ImxpYi9kZXNlcmlhbGl6ZXJzL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZGVmYXVsdC5kZXNlcmlhbGl6ZXJcIjtcbmV4cG9ydCAqIGZyb20gXCIuL3VzZXIuZGVzZXJpYWxpemVyXCI7XG4iXX0=
|
|
@@ -4,5 +4,3 @@ exports.UserDeserializer = void 0;
|
|
|
4
4
|
class UserDeserializer {
|
|
5
5
|
}
|
|
6
6
|
exports.UserDeserializer = UserDeserializer;
|
|
7
|
-
|
|
8
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9kZXNlcmlhbGl6ZXJzL3VzZXIuZGVzZXJpYWxpemVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLE1BQXNCLGdCQUFnQjtDQUVyQztBQUZELDRDQUVDIiwiZmlsZSI6ImxpYi9kZXNlcmlhbGl6ZXJzL3VzZXIuZGVzZXJpYWxpemVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGFic3RyYWN0IGNsYXNzIFVzZXJEZXNlcmlhbGl6ZXI8VD4ge1xuICAgIHB1YmxpYyBhYnN0cmFjdCBkZXNlcmlhbGl6ZVVzZXIocmVxOiB1bmtub3duKTogUHJvbWlzZTxUIHwgbnVsbD47XG59XG4iXX0=
|
|
@@ -28,5 +28,3 @@ class BaseFilter {
|
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
exports.BaseFilter = BaseFilter;
|
|
31
|
-
|
|
32
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvYmFzZS1maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsdUNBQXlGO0FBTXpGLE1BQXNCLFVBQVU7SUFTNUIsSUFBVyxnQkFBZ0IsQ0FBQyxnQkFBa0M7UUFDMUQsSUFBSSxDQUFDLGlCQUFpQixHQUFHLGdCQUFnQixDQUFDO1FBRTFDLEtBQUssTUFBTSxHQUFHLElBQUksSUFBSSxFQUFFO1lBQ3BCLElBQUksQ0FBQyxJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxnQkFBZ0IsRUFBRTtnQkFDdkQsU0FBUzthQUNaO1lBRUQsSUFBSSxnQkFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFxQixDQUFDLEVBQUU7Z0JBQy9DLElBQUksQ0FBQyxHQUFHLENBQVksQ0FBQyxnQkFBZ0IsR0FBRyxnQkFBZ0IsQ0FBQzthQUM3RDtZQUNELElBQUkscUJBQVcsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBMEIsQ0FBQyxFQUFFO2dCQUN6RCxJQUFJLENBQUMsR0FBRyxDQUFpQixDQUFDLGdCQUFnQixHQUFHLGdCQUFnQixDQUFDO2FBQ2xFO1NBQ0o7SUFDTCxDQUFDO0lBQ0QsSUFBVyxnQkFBZ0I7UUFDdkIsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQUM7SUFDbEMsQ0FBQztJQUVNLEtBQUssQ0FBQyxxQkFBcUIsQ0FBQyxJQUFrQjtRQUNqRCxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7SUFFTSxLQUFLLENBQUMsaUJBQWlCLENBQUMsS0FBUSxFQUFFLElBQWEsRUFBRSxJQUFrQjtRQUN0RSxPQUFPLEVBQUUsQ0FBQztJQUNkLENBQUM7Q0FDSjtBQXBDRCxnQ0FvQ0MiLCJmaWxlIjoibGliL2ZpbHRlci9iYXNlLWZpbHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFR5cGUgfSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IFRyYW5zbGF0ZUFkYXB0ZXIgfSBmcm9tIFwiLi4vYWRhcHRlcnMvdHJhbnNsYXRlLmFkYXB0ZXJcIjtcbmltcG9ydCB7IEZpbHRlciwgRmlsdGVyRGVmaW5pdGlvbiwgR3JvdXBGaWx0ZXIsIEdyb3VwRmlsdGVyRGVmaW5pdGlvbiB9IGZyb20gXCIuL2ZpbHRlcnNcIjtcbmltcG9ydCB7IERlZmF1bHRGaWx0ZXJEZWZpbml0aW9uIH0gZnJvbSBcIi4vZmlsdGVycy9kZWZhdWx0LmZpbHRlclwiO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlnLCBGaWx0ZXJNb2RlbCB9IGZyb20gXCIuL21vZGVsc1wiO1xuaW1wb3J0IHsgRXhwb3J0VHlwZXMgfSBmcm9tIFwiLi4vbW9kZWxzL2V4cG9ydC10eXBlcy5tb2RlbFwiO1xuaW1wb3J0IHsgRGVmYXVsdE9yZGVyUnVsZSB9IGZyb20gXCIuL29yZGVyLXJ1bGVzL2RlZmF1bHQub3JkZXItcnVsZVwiO1xuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgQmFzZUZpbHRlcjxUPiBpbXBsZW1lbnRzIEZpbHRlck1vZGVsPFQ+IHtcbiAgICBwcml2YXRlIF90cmFuc2xhdGVTZXJ2aWNlITogVHJhbnNsYXRlQWRhcHRlcjtcblxuICAgIFtuYW1lOiBzdHJpbmddOiBGaWx0ZXJDb25maWcgfCB1bmtub3duO1xuICAgIHB1YmxpYyBhYnN0cmFjdCBkYXRhRGVmaW5pdGlvbjogVHlwZTxUPjtcbiAgICBwdWJsaWMgZXhwb3J0RGF0YURlZmluaXRpb24/OiBUeXBlPFQ+O1xuICAgIHB1YmxpYyBkZWZhdWx0RmlsdGVyPzogRGVmYXVsdEZpbHRlckRlZmluaXRpb247XG4gICAgcHVibGljIGRlZmF1bHRPcmRlclJ1bGU/OiBEZWZhdWx0T3JkZXJSdWxlO1xuXG4gICAgcHVibGljIHNldCB0cmFuc2xhdGVTZXJ2aWNlKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZUFkYXB0ZXIpIHtcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZSA9IHRyYW5zbGF0ZVNlcnZpY2U7XG5cbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmhhc093blByb3BlcnR5KGtleSkgfHwga2V5ID09PSBcImRhdGFEZWZpbml0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKEZpbHRlci52YWxpZGF0ZSh0aGlzW2tleV0gYXMgRmlsdGVyRGVmaW5pdGlvbikpIHtcbiAgICAgICAgICAgICAgICAodGhpc1trZXldIGFzIEZpbHRlcikudHJhbnNsYXRlU2VydmljZSA9IHRyYW5zbGF0ZVNlcnZpY2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoR3JvdXBGaWx0ZXIudmFsaWRhdGUodGhpc1trZXldIGFzIEdyb3VwRmlsdGVyRGVmaW5pdGlvbikpIHtcbiAgICAgICAgICAgICAgICAodGhpc1trZXldIGFzIEdyb3VwRmlsdGVyKS50cmFuc2xhdGVTZXJ2aWNlID0gdHJhbnNsYXRlU2VydmljZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICBwdWJsaWMgZ2V0IHRyYW5zbGF0ZVNlcnZpY2UoKTogVHJhbnNsYXRlQWRhcHRlciB7XG4gICAgICAgIHJldHVybiB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRFeHBvcnRlZEZpZWxkc0tleXModHlwZT86IEV4cG9ydFR5cGVzKTogUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEV4cG9ydGVkRmllbGRzKHZhbHVlOiBULCBsYW5nPzogc3RyaW5nLCB0eXBlPzogRXhwb3J0VHlwZXMpOiBQcm9taXNlPGFueVtdPiB7XG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -19,6 +19,8 @@ const constant_1 = require("../../constant");
|
|
|
19
19
|
const deserializers_1 = require("../../deserializers");
|
|
20
20
|
const filter_query_guard_1 = require("../guards/filter-query.guard");
|
|
21
21
|
const data_file_download_interceptor_1 = require("../interceptors/data-file-download.interceptor");
|
|
22
|
+
const filter_configuration_search_model_1 = require("../models/filter-configuration-search.model");
|
|
23
|
+
const filter_resource_value_model_1 = require("../models/filter-resource-value.model");
|
|
22
24
|
class DynamicFilterController {
|
|
23
25
|
constructor(filterService) {
|
|
24
26
|
this.filterService = filterService;
|
|
@@ -74,7 +76,7 @@ __decorate([
|
|
|
74
76
|
__param(0, (0, common_1.Body)()),
|
|
75
77
|
__param(1, (0, common_1.Req)()),
|
|
76
78
|
__metadata("design:type", Function),
|
|
77
|
-
__metadata("design:paramtypes", [
|
|
79
|
+
__metadata("design:paramtypes", [__1.FilterQueryModel, Object]),
|
|
78
80
|
__metadata("design:returntype", Promise)
|
|
79
81
|
], DynamicFilterController.prototype, "filter", null);
|
|
80
82
|
__decorate([
|
|
@@ -83,7 +85,7 @@ __decorate([
|
|
|
83
85
|
__param(0, (0, common_1.Body)()),
|
|
84
86
|
__param(1, (0, common_1.Req)()),
|
|
85
87
|
__metadata("design:type", Function),
|
|
86
|
-
__metadata("design:paramtypes", [
|
|
88
|
+
__metadata("design:paramtypes", [__1.FilterQueryModel, Object]),
|
|
87
89
|
__metadata("design:returntype", Promise)
|
|
88
90
|
], DynamicFilterController.prototype, "filterCount", null);
|
|
89
91
|
__decorate([
|
|
@@ -94,7 +96,7 @@ __decorate([
|
|
|
94
96
|
__param(1, (0, common_1.Param)("type")),
|
|
95
97
|
__param(2, (0, common_1.Req)()),
|
|
96
98
|
__metadata("design:type", Function),
|
|
97
|
-
__metadata("design:paramtypes", [
|
|
99
|
+
__metadata("design:paramtypes", [__1.FilterQueryModel, String, Object]),
|
|
98
100
|
__metadata("design:returntype", Promise)
|
|
99
101
|
], DynamicFilterController.prototype, "downloadData", null);
|
|
100
102
|
__decorate([
|
|
@@ -109,7 +111,7 @@ __decorate([
|
|
|
109
111
|
__param(0, (0, common_1.Query)()),
|
|
110
112
|
__param(1, (0, common_1.Req)()),
|
|
111
113
|
__metadata("design:type", Function),
|
|
112
|
-
__metadata("design:paramtypes", [
|
|
114
|
+
__metadata("design:paramtypes", [filter_resource_value_model_1.FilterResourceValueModel, Object]),
|
|
113
115
|
__metadata("design:returntype", Promise)
|
|
114
116
|
], DynamicFilterController.prototype, "searchFilterResourceValue", null);
|
|
115
117
|
__decorate([
|
|
@@ -117,8 +119,6 @@ __decorate([
|
|
|
117
119
|
__param(0, (0, common_1.Query)()),
|
|
118
120
|
__param(1, (0, common_1.Req)()),
|
|
119
121
|
__metadata("design:type", Function),
|
|
120
|
-
__metadata("design:paramtypes", [
|
|
122
|
+
__metadata("design:paramtypes", [filter_configuration_search_model_1.FilterConfigurationSearchModel, Object]),
|
|
121
123
|
__metadata("design:returntype", Promise)
|
|
122
124
|
], DynamicFilterController.prototype, "searchFilterConfigValues", null);
|
|
123
|
-
|
|
124
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvY29udHJvbGxlcnMvZHluYW1pYy1maWx0ZXIuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFBQSwyQ0Fhd0I7QUFDeEIsNkJBQTRGO0FBQzVGLDZDQUErQztBQUMvQyx1REFBdUQ7QUFJdkQscUVBQWdFO0FBQ2hFLG1HQUE2RjtBQUs3RixNQUFzQix1QkFBdUI7SUFRekMsWUFBeUMsYUFBa0M7UUFBbEMsa0JBQWEsR0FBYixhQUFhLENBQXFCO0lBQUcsQ0FBQztJQUt4RSxBQUFNLEtBQUQsQ0FBQyxNQUFNLENBQVMsS0FBdUIsRUFBUyxPQUFZO1FBQ3BFLEtBQUssR0FBRyxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1QyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7SUFDeEUsQ0FBQztJQUlNLEFBQU0sS0FBRCxDQUFDLFdBQVcsQ0FBUyxLQUF1QixFQUFTLE9BQVk7UUFDekUsS0FBSyxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQzVDLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFLTSxBQUFNLEtBQUQsQ0FBQyxZQUFZLENBQ2IsS0FBdUIsRUFDaEIsSUFBaUIsRUFDekIsT0FBWTtRQUVuQixLQUFLLEdBQUcsSUFBSSxDQUFDLGNB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QSxJQUFBLFlBQUcsR0FBRSxDQUFBOzs7O3dFQUdUO0FBR1k7SUFEWixJQUFBLFlBQUcsRUFBQyxxQkFBcUIsQ0FBQztJQUV0QixXQUFBLElBQUEsY0FBSyxHQUFFLENBQUE7SUFDUCxXQUFBLElBQUEsWUFBRyxHQUFFLENBQUE7Ozs7dUVBR1QiLCJmaWxlIjoibGliL2ZpbHRlci9jb250cm9sbGVycy9keW5hbWljLWZpbHRlci5jb250cm9sbGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBCb2R5LFxuICAgIEdldCxcbiAgICBIdHRwQ29kZSxcbiAgICBIdHRwU3RhdHVzLFxuICAgIEluamVjdCxcbiAgICBPcHRpb25hbCxcbiAgICBQYXJhbSxcbiAgICBQb3N0LFxuICAgIFF1ZXJ5LFxuICAgIFJlcSxcbiAgICBVc2VHdWFyZHMsXG4gICAgVXNlSW50ZXJjZXB0b3JzXG59IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgRXhwb3J0VHlwZXMsIEZpbHRlclF1ZXJ5TW9kZWwsIEZpbHRlclJlc3VsdE1vZGVsLCBTZWxlY3RGaWx0ZXJWYWx1ZSB9IGZyb20gXCIuLi8uLlwiO1xuaW1wb3J0IHsgRklMVEVSX09QVElPTiB9IGZyb20gXCIuLi8uLi9jb25zdGFudFwiO1xuaW1wb3J0IHsgVXNlckRlc2VyaWFsaXplciB9IGZyb20gXCIuLi8uLi9kZXNlcmlhbGl6ZXJzXCI7XG5pbXBvcnQgeyBEYXRhRmlsdGVyVXNlck1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy91c2VyLm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJPcHRpb25Db25maWcgfSBmcm9tIFwiLi4vZmlsdGVyLmNvbmZpZ1wiO1xuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9maWx0ZXIuc2VydmljZVwiO1xuaW1wb3J0IHsgRmlsdGVyUXVlcnlHdWFyZCB9IGZyb20gXCIuLi9ndWFyZHMvZmlsdGVyLXF1ZXJ5Lmd1YXJkXCI7XG5pbXBvcnQgeyBEYXRhRmlsZURvd25sb2FkSW50ZXJjZXB0b3IgfSBmcm9tIFwiLi4vaW50ZXJjZXB0b3JzL2RhdGEtZmlsZS1kb3dubG9hZC5pbnRlcmNlcHRvclwiO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlndXJhdGlvblNlYXJjaE1vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9maWx0ZXItY29uZmlndXJhdGlvbi1zZWFyY2gubW9kZWxcIjtcbmltcG9ydCB7IEZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvZmlsdGVyLWNvbmZpZ3VyYXRpb24ubW9kZWxcIjtcbmltcG9ydCB7IEZpbHRlclJlc291cmNlVmFsdWVNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvZmlsdGVyLXJlc291cmNlLXZhbHVlLm1vZGVsXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBEeW5hbWljRmlsdGVyQ29udHJvbGxlcjxEYXRhPiB7XG4gICAgQEluamVjdCgpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJVc2VyRGVzZXJpYWxpemVyITogVXNlckRlc2VyaWFsaXplcjxEYXRhRmlsdGVyVXNlck1vZGVsPjtcblxuICAgIEBJbmplY3QoRklMVEVSX09QVElPTilcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbiE6IEZpbHRlck9wdGlvbkNvbmZpZztcblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgcmVhZG9ubHkgZmlsdGVyU2VydmljZTogRmlsdGVyU2VydmljZTxEYXRhPikge31cblxuICAgIEBQb3N0KFwiZmlsdGVyXCIpXG4gICAgQEh0dHBDb2RlKEh0dHBTdGF0dXMuT0spXG4gICAgQFVzZUd1YXJkcyhGaWx0ZXJRdWVyeUd1YXJkKVxuICAgIHB1YmxpYyBhc3luYyBmaWx0ZXIoQEJvZHkoKSBxdWVyeTogRmlsdGVyUXVlcnlNb2RlbCwgQFJlcSgpIHJlcXVlc3Q6IGFueSk6IFByb21pc2U8RmlsdGVyUmVzdWx0TW9kZWw8RGF0YT4+IHtcbiAgICAgICAgcXVlcnkgPSB0aGlzLnRyYW5zZm9ybVF1ZXJ5KHF1ZXJ5LCByZXF1ZXN0KTtcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuZ2V0VXNlcihyZXF1ZXN0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyU2VydmljZS5maWx0ZXIoeyBvcHRpb25zOiBxdWVyeSwgcmVxdWVzdCwgdXNlciB9KTtcbiAgICB9XG5cbiAgICBAUG9zdChcImZpbHRlci1jb3VudFwiKVxuICAgIEBIdHRwQ29kZShIdHRwU3RhdHVzLk9LKVxuICAgIHB1YmxpYyBhc3luYyBmaWx0ZXJDb3VudChAQm9keSgpIHF1ZXJ5OiBGaWx0ZXJRdWVyeU1vZGVsLCBAUmVxKCkgcmVxdWVzdDogYW55KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgcXVlcnkgPSB0aGlzLnRyYW5zZm9ybVF1ZXJ5KHF1ZXJ5LCByZXF1ZXN0KTtcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuZ2V0VXNlcihyZXF1ZXN0KTtcbiAgICAgICAgcmV0dXJuIHRoaXMuZmlsdGVyU2VydmljZS5jb3VudCh7IG9wdGlvbnM6IHF1ZXJ5LCB1c2VyIH0pO1xuICAgIH1cblxuICAgIEBQb3N0KFwiZG93bmxvYWQvOnR5cGVcIilcbiAgICBASHR0cENvZGUoSHR0cFN0YXR1cy5PSylcbiAgICBAVXNlSW50ZXJjZXB0b3JzKERhdGFGaWxlRG93bmxvYWRJbnRlcmNlcHRvcilcbiAgICBwdWJsaWMgYXN5bmMgZG93bmxvYWREYXRhKFxuICAgICAgICBAQm9keSgpIHF1ZXJ5OiBGaWx0ZXJRdWVyeU1vZGVsLFxuICAgICAgICBAUGFyYW0oXCJ0eXBlXCIpIHR5cGU6IEV4cG9ydFR5cGVzLFxuICAgICAgICBAUmVxKCkgcmVxdWVzdDogYW55XG4gICAgKTogUHJvbWlzZTxCdWZmZXIgfCBzdHJpbmc+IHtcbiAgICAgICAgcXVlcnkgPSB0aGlzLnRyYW5zZm9ybVF1ZXJ5KHF1ZXJ5LCByZXF1ZXN0KTtcbiAgICAgICAgY29uc3QgdXNlciA9IGF3YWl0IHRoaXMuZ2V0VXNlcihyZXF1ZXN0KTtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5kb3dubG9hZERhdGEoeyBvcHRpb25zOiBxdWVyeSwgcmVxdWVzdCwgdHlwZSwgdXNlciB9KTtcbiAgICB9XG5cbiAgICBAR2V0KFwiZmlsdGVyL2NvbmZpZ1wiKVxuICAgIHB1YmxpYyBhc3luYyBnZXRGaWx0ZXJDb25maWcoQFJlcSgpIHJlcXVlc3Q6IGFueSk6IFByb21pc2U8RmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsW10+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5nZXRDb25maWcocmVxdWVzdCwgYXdhaXQgdGhpcy5nZXRVc2VyKHJlcXVlc3QpID8/IHt9IGFzIERhdGFGaWx0ZXJVc2VyTW9kZWwpO1xuICAgIH1cblxuICAgIEBHZXQoXCJmaWx0ZXIvY29uZmlnL2lkXCIpXG4gICAgcHVibGljIGFzeW5jIHNlYXJjaEZpbHRlclJlc291cmNlVmFsdWUoXG4gICAgICAgIEBRdWVyeSgpIHNlYXJjaDogRmlsdGVyUmVzb3VyY2VWYWx1ZU1vZGVsLFxuICAgICAgICBAUmVxKCkgcmVxdWVzdDogYW55XG4gICAgKTogUHJvbWlzZTxTZWxlY3RGaWx0ZXJWYWx1ZSB8IG51bGw+IHtcbiAgICAgICAgcmV0dXJuIGF3YWl0IHRoaXMuZmlsdGVyU2VydmljZS5maW5kUmVzb3VyY2VWYWx1ZUJ5SWQocmVxdWVzdCwgc2VhcmNoLCBhd2FpdCB0aGlzLmdldFVzZXIocmVxdWVzdCkgPz8ge30gYXMgRGF0YUZpbHRlclVzZXJNb2RlbCk7XG4gICAgfVxuXG4gICAgQEdldChcImZpbHRlci9jb25maWcvdmFsdWVcIilcbiAgICBwdWJsaWMgYXN5bmMgc2VhcmNoRmlsdGVyQ29uZmlnVmFsdWVzKFxuICAgICAgICBAUXVlcnkoKSBzZWFyY2g6IEZpbHRlckNvbmZpZ3VyYXRpb25TZWFyY2hNb2RlbCxcbiAgICAgICAgQFJlcSgpIHJlcXVlc3Q6IGFueVxuICAgICk6IFByb21pc2U8U2VsZWN0RmlsdGVyVmFsdWVbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLnNlYXJjaENvbmZpZ1ZhbHVlcyhyZXF1ZXN0LCBzZWFyY2gsIGF3YWl0IHRoaXMuZ2V0VXNlcihyZXF1ZXN0KSA/PyB7fSBhcyBEYXRhRmlsdGVyVXNlck1vZGVsKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgYXN5bmMgZ2V0VXNlcihyZXF1ZXN0OiBhbnkpOiBQcm9taXNlPERhdGFGaWx0ZXJVc2VyTW9kZWwgfCBudWxsPiB7XG4gICAgICAgIGlmICghdGhpcy51c2VyVXNlckRlc2VyaWFsaXplciB8fCB0aGlzLm9wdGlvbi5kaXNhYmxlQWNjZXNzQ29udHJvbCkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy51c2VyVXNlckRlc2VyaWFsaXplci5kZXNlcmlhbGl6ZVVzZXIocmVxdWVzdCk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGFic3RyYWN0IHRyYW5zZm9ybVF1ZXJ5KHF1ZXJ5OiBGaWx0ZXJRdWVyeU1vZGVsLCByZXF1ZXN0OiBhbnkpOiBGaWx0ZXJRdWVyeU1vZGVsO1xufVxuIl19
|
|
@@ -19,6 +19,8 @@ const constant_1 = require("../../constant");
|
|
|
19
19
|
const deserializers_1 = require("../../deserializers");
|
|
20
20
|
const filter_query_guard_1 = require("../guards/filter-query.guard");
|
|
21
21
|
const data_file_download_interceptor_1 = require("../interceptors/data-file-download.interceptor");
|
|
22
|
+
const filter_configuration_search_model_1 = require("../models/filter-configuration-search.model");
|
|
23
|
+
const filter_resource_value_model_1 = require("../models/filter-resource-value.model");
|
|
22
24
|
class FilterController {
|
|
23
25
|
constructor(filterService) {
|
|
24
26
|
this.filterService = filterService;
|
|
@@ -71,7 +73,7 @@ __decorate([
|
|
|
71
73
|
__param(0, (0, common_1.Body)()),
|
|
72
74
|
__param(1, (0, common_1.Req)()),
|
|
73
75
|
__metadata("design:type", Function),
|
|
74
|
-
__metadata("design:paramtypes", [
|
|
76
|
+
__metadata("design:paramtypes", [__1.FilterQueryModel, Object]),
|
|
75
77
|
__metadata("design:returntype", Promise)
|
|
76
78
|
], FilterController.prototype, "filter", null);
|
|
77
79
|
__decorate([
|
|
@@ -80,7 +82,7 @@ __decorate([
|
|
|
80
82
|
__param(0, (0, common_1.Body)()),
|
|
81
83
|
__param(1, (0, common_1.Req)()),
|
|
82
84
|
__metadata("design:type", Function),
|
|
83
|
-
__metadata("design:paramtypes", [
|
|
85
|
+
__metadata("design:paramtypes", [__1.FilterQueryModel, Object]),
|
|
84
86
|
__metadata("design:returntype", Promise)
|
|
85
87
|
], FilterController.prototype, "filterCount", null);
|
|
86
88
|
__decorate([
|
|
@@ -91,7 +93,7 @@ __decorate([
|
|
|
91
93
|
__param(1, (0, common_1.Param)("type")),
|
|
92
94
|
__param(2, (0, common_1.Req)()),
|
|
93
95
|
__metadata("design:type", Function),
|
|
94
|
-
__metadata("design:paramtypes", [
|
|
96
|
+
__metadata("design:paramtypes", [__1.FilterQueryModel, String, Object]),
|
|
95
97
|
__metadata("design:returntype", Promise)
|
|
96
98
|
], FilterController.prototype, "downloadData", null);
|
|
97
99
|
__decorate([
|
|
@@ -106,7 +108,7 @@ __decorate([
|
|
|
106
108
|
__param(0, (0, common_1.Query)()),
|
|
107
109
|
__param(1, (0, common_1.Req)()),
|
|
108
110
|
__metadata("design:type", Function),
|
|
109
|
-
__metadata("design:paramtypes", [
|
|
111
|
+
__metadata("design:paramtypes", [filter_resource_value_model_1.FilterResourceValueModel, Object]),
|
|
110
112
|
__metadata("design:returntype", Promise)
|
|
111
113
|
], FilterController.prototype, "searchFilterResourceValue", null);
|
|
112
114
|
__decorate([
|
|
@@ -114,8 +116,6 @@ __decorate([
|
|
|
114
116
|
__param(0, (0, common_1.Query)()),
|
|
115
117
|
__param(1, (0, common_1.Req)()),
|
|
116
118
|
__metadata("design:type", Function),
|
|
117
|
-
__metadata("design:paramtypes", [
|
|
119
|
+
__metadata("design:paramtypes", [filter_configuration_search_model_1.FilterConfigurationSearchModel, Object]),
|
|
118
120
|
__metadata("design:returntype", Promise)
|
|
119
121
|
], FilterController.prototype, "searchFilterConfigValues", null);
|
|
120
|
-
|
|
121
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvY29udHJvbGxlcnMvZmlsdGVyLmNvbnRyb2xsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBYXdCO0FBQ3hCLDZCQUE0RjtBQUM1Riw2Q0FBK0M7QUFDL0MsdURBQXVEO0FBSXZELHFFQUFnRTtBQUNoRSxtR0FBNkY7QUFLN0YsTUFBYSxnQkFBZ0I7SUFRekIsWUFBK0IsYUFBa0M7UUFBbEMsa0JBQWEsR0FBYixhQUFhLENBQXFCO0lBQUcsQ0FBQztJQUs5RCxBQUFNLEtBQUQsQ0FBQyxNQUFNLENBQVMsS0FBdUIsRUFBUyxPQUFZO1FBQ3BFLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBSU0sQUFBTSxLQUFELENBQUMsV0FBVyxDQUFTLEtBQXVCLEVBQVMsT0FBWTtRQUN6RSxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUM5RCxDQUFDO0lBS00sQUFBTSxLQUFELENBQUMsWUFBWSxDQUNiLEtBQXVCLEVBQ2hCLElBQWlCLEVBQ3pCLE9BQVk7UUFFbkIsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQ3pDLE9BQU8sTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLFlBQVksQ0FBQyxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxJQUFJLEVB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InNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQm9keSxcbiAgICBHZXQsXG4gICAgSHR0cENvZGUsXG4gICAgSHR0cFN0YXR1cyxcbiAgICBJbmplY3QsXG4gICAgT3B0aW9uYWwsXG4gICAgUGFyYW0sXG4gICAgUG9zdCxcbiAgICBRdWVyeSxcbiAgICBSZXEsXG4gICAgVXNlR3VhcmRzLFxuICAgIFVzZUludGVyY2VwdG9yc1xufSBmcm9tIFwiQG5lc3Rqcy9jb21tb25cIjtcbmltcG9ydCB7IEV4cG9ydFR5cGVzLCBGaWx0ZXJRdWVyeU1vZGVsLCBGaWx0ZXJSZXN1bHRNb2RlbCwgU2VsZWN0RmlsdGVyVmFsdWUgfSBmcm9tIFwiLi4vLi5cIjtcbmltcG9ydCB7IEZJTFRFUl9PUFRJT04gfSBmcm9tIFwiLi4vLi4vY29uc3RhbnRcIjtcbmltcG9ydCB7IFVzZXJEZXNlcmlhbGl6ZXIgfSBmcm9tIFwiLi4vLi4vZGVzZXJpYWxpemVyc1wiO1xuaW1wb3J0IHsgRGF0YUZpbHRlclVzZXJNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvdXNlci5tb2RlbFwiO1xuaW1wb3J0IHsgRmlsdGVyT3B0aW9uQ29uZmlnIH0gZnJvbSBcIi4uL2ZpbHRlci5jb25maWdcIjtcbmltcG9ydCB7IEZpbHRlclNlcnZpY2UgfSBmcm9tIFwiLi4vZmlsdGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IEZpbHRlclF1ZXJ5R3VhcmQgfSBmcm9tIFwiLi4vZ3VhcmRzL2ZpbHRlci1xdWVyeS5ndWFyZFwiO1xuaW1wb3J0IHsgRGF0YUZpbGVEb3dubG9hZEludGVyY2VwdG9yIH0gZnJvbSBcIi4uL2ludGVyY2VwdG9ycy9kYXRhLWZpbGUtZG93bmxvYWQuaW50ZXJjZXB0b3JcIjtcbmltcG9ydCB7IEZpbHRlckNvbmZpZ3VyYXRpb25TZWFyY2hNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvZmlsdGVyLWNvbmZpZ3VyYXRpb24tc2VhcmNoLm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2ZpbHRlci1jb25maWd1cmF0aW9uLm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJSZXNvdXJjZVZhbHVlTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2ZpbHRlci1yZXNvdXJjZS12YWx1ZS5tb2RlbFwiO1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyQ29udHJvbGxlcjxEYXRhPiB7XG4gICAgQEluamVjdCgpXG4gICAgQE9wdGlvbmFsKClcbiAgICBwcml2YXRlIHJlYWRvbmx5IHVzZXJVc2VyRGVzZXJpYWxpemVyITogVXNlckRlc2VyaWFsaXplcjxEYXRhRmlsdGVyVXNlck1vZGVsPjtcblxuICAgIEBJbmplY3QoRklMVEVSX09QVElPTilcbiAgICBwcml2YXRlIHJlYWRvbmx5IG9wdGlvbiE6IEZpbHRlck9wdGlvbkNvbmZpZztcblxuICAgIGNvbnN0cnVjdG9yKHByb3RlY3RlZCByZWFkb25seSBmaWx0ZXJTZXJ2aWNlOiBGaWx0ZXJTZXJ2aWNlPERhdGE+KSB7fVxuXG4gICAgQFBvc3QoXCJmaWx0ZXJcIilcbiAgICBASHR0cENvZGUoSHR0cFN0YXR1cy5PSylcbiAgICBAVXNlR3VhcmRzKEZpbHRlclF1ZXJ5R3VhcmQpXG4gICAgcHVibGljIGFzeW5jIGZpbHRlcihAQm9keSgpIHF1ZXJ5OiBGaWx0ZXJRdWVyeU1vZGVsLCBAUmVxKCkgcmVxdWVzdDogYW55KTogUHJvbWlzZTxGaWx0ZXJSZXN1bHRNb2RlbDxEYXRhPj4ge1xuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5nZXRVc2VyKHJlcXVlc3QpO1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbHRlcih7IG9wdGlvbnM6IHF1ZXJ5LCByZXF1ZXN0LCB1c2VyIH0pO1xuICAgIH1cblxuICAgIEBQb3N0KFwiZmlsdGVyLWNvdW50XCIpXG4gICAgQEh0dHBDb2RlKEh0dHBTdGF0dXMuT0spXG4gICAgcHVibGljIGFzeW5jIGZpbHRlckNvdW50KEBCb2R5KCkgcXVlcnk6IEZpbHRlclF1ZXJ5TW9kZWwsIEBSZXEoKSByZXF1ZXN0OiBhbnkpOiBQcm9taXNlPG51bWJlcj4ge1xuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5nZXRVc2VyKHJlcXVlc3QpO1xuICAgICAgICByZXR1cm4gdGhpcy5maWx0ZXJTZXJ2aWNlLmNvdW50KHsgb3B0aW9uczogcXVlcnksIHVzZXIgfSk7XG4gICAgfVxuXG4gICAgQFBvc3QoXCJkb3dubG9hZC86dHlwZVwiKVxuICAgIEBIdHRwQ29kZShIdHRwU3RhdHVzLk9LKVxuICAgIEBVc2VJbnRlcmNlcHRvcnMoRGF0YUZpbGVEb3dubG9hZEludGVyY2VwdG9yKVxuICAgIHB1YmxpYyBhc3luYyBkb3dubG9hZERhdGEoXG4gICAgICAgIEBCb2R5KCkgcXVlcnk6IEZpbHRlclF1ZXJ5TW9kZWwsXG4gICAgICAgIEBQYXJhbShcInR5cGVcIikgdHlwZTogRXhwb3J0VHlwZXMsXG4gICAgICAgIEBSZXEoKSByZXF1ZXN0OiBhbnlcbiAgICApOiBQcm9taXNlPEJ1ZmZlciB8IHN0cmluZz4ge1xuICAgICAgICBjb25zdCB1c2VyID0gYXdhaXQgdGhpcy5nZXRVc2VyKHJlcXVlc3QpO1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmRvd25sb2FkRGF0YSh7IG9wdGlvbnM6IHF1ZXJ5LCByZXF1ZXN0LCB0eXBlLCB1c2VyIH0pO1xuICAgIH1cblxuICAgIEBHZXQoXCJmaWx0ZXIvY29uZmlnXCIpXG4gICAgcHVibGljIGFzeW5jIGdldEZpbHRlckNvbmZpZyhAUmVxKCkgcmVxdWVzdDogYW55KTogUHJvbWlzZTxGaWx0ZXJDb25maWd1cmF0aW9uTW9kZWxbXT4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmdldENvbmZpZyhyZXF1ZXN0LCBhd2FpdCB0aGlzLmdldFVzZXIocmVxdWVzdCkgPz8ge30gYXMgRGF0YUZpbHRlclVzZXJNb2RlbCk7XG4gICAgfVxuXG4gICAgQEdldChcImZpbHRlci9jb25maWcvaWRcIilcbiAgICBwdWJsaWMgYXN5bmMgc2VhcmNoRmlsdGVyUmVzb3VyY2VWYWx1ZShcbiAgICAgICAgQFF1ZXJ5KCkgc2VhcmNoOiBGaWx0ZXJSZXNvdXJjZVZhbHVlTW9kZWwsXG4gICAgICAgIEBSZXEoKSByZXF1ZXN0OiBhbnlcbiAgICApOiBQcm9taXNlPFNlbGVjdEZpbHRlclZhbHVlIHwgbnVsbD4ge1xuICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5maWx0ZXJTZXJ2aWNlLmZpbmRSZXNvdXJjZVZhbHVlQnlJZChyZXF1ZXN0LCBzZWFyY2gsIGF3YWl0IHRoaXMuZ2V0VXNlcihyZXF1ZXN0KSA/PyB7fSBhcyBEYXRhRmlsdGVyVXNlck1vZGVsKTtcbiAgICB9XG5cbiAgICBAR2V0KFwiZmlsdGVyL2NvbmZpZy92YWx1ZVwiKVxuICAgIHB1YmxpYyBhc3luYyBzZWFyY2hGaWx0ZXJDb25maWdWYWx1ZXMoXG4gICAgICAgIEBRdWVyeSgpIHNlYXJjaDogRmlsdGVyQ29uZmlndXJhdGlvblNlYXJjaE1vZGVsLFxuICAgICAgICBAUmVxKCkgcmVxdWVzdDogYW55XG4gICAgKTogUHJvbWlzZTxTZWxlY3RGaWx0ZXJWYWx1ZVtdPiB7XG4gICAgICAgIHJldHVybiBhd2FpdCB0aGlzLmZpbHRlclNlcnZpY2Uuc2VhcmNoQ29uZmlnVmFsdWVzKHJlcXVlc3QsIHNlYXJjaCwgYXdhaXQgdGhpcy5nZXRVc2VyKHJlcXVlc3QpID8/IHt9IGFzIERhdGFGaWx0ZXJVc2VyTW9kZWwpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBhc3luYyBnZXRVc2VyKHJlcXVlc3Q6IGFueSk6IFByb21pc2U8RGF0YUZpbHRlclVzZXJNb2RlbCB8IG51bGw+IHtcbiAgICAgICAgaWYgKCF0aGlzLnVzZXJVc2VyRGVzZXJpYWxpemVyIHx8IHRoaXMub3B0aW9uLmRpc2FibGVBY2Nlc3NDb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnVzZXJVc2VyRGVzZXJpYWxpemVyLmRlc2VyaWFsaXplVXNlcihyZXF1ZXN0KTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { Type } from "@nestjs/common";
|
|
2
|
+
import { FilterController } from "../..";
|
|
3
|
+
import { FilterService } from "../filter.service";
|
|
4
|
+
export declare function OpenApiFilterController<T extends Type, D>(Base: T): Type<FilterController<D>> & (new (filterService: FilterService<D>) => FilterController<D>);
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
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
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
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
|
+
};
|
|
11
|
+
var __param = (this && this.__param) || function (paramIndex, decorator) {
|
|
12
|
+
return function (target, key) { decorator(target, key, paramIndex); }
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.OpenApiFilterController = OpenApiFilterController;
|
|
16
|
+
const common_1 = require("@nestjs/common");
|
|
17
|
+
const __1 = require("../..");
|
|
18
|
+
const filter_query_guard_1 = require("../guards/filter-query.guard");
|
|
19
|
+
const data_file_download_interceptor_1 = require("../interceptors/data-file-download.interceptor");
|
|
20
|
+
const swagger_1 = require("@nestjs/swagger");
|
|
21
|
+
const filter_resource_value_model_1 = require("../models/filter-resource-value.model");
|
|
22
|
+
function OpenApiFilterController(Base) {
|
|
23
|
+
const _FilterResultModel = (0, __1.FilterResultModelMixin)(Base);
|
|
24
|
+
class _FilterController extends __1.FilterController {
|
|
25
|
+
async filter(query, req) {
|
|
26
|
+
return super.filter(query, req);
|
|
27
|
+
}
|
|
28
|
+
async filterCount(query, req) {
|
|
29
|
+
return super.filterCount(query, req);
|
|
30
|
+
}
|
|
31
|
+
async downloadData(query, type, req) {
|
|
32
|
+
return super.downloadData(query, type, req);
|
|
33
|
+
}
|
|
34
|
+
async getFilterConfig(req) {
|
|
35
|
+
return super.getFilterConfig(req);
|
|
36
|
+
}
|
|
37
|
+
async searchFilterResourceValue(search, req) {
|
|
38
|
+
return super.searchFilterResourceValue(search, req);
|
|
39
|
+
}
|
|
40
|
+
async searchFilterConfigValues(search, req) {
|
|
41
|
+
return super.searchFilterConfigValues(search, req);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
__decorate([
|
|
45
|
+
(0, common_1.Post)("filter"),
|
|
46
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
47
|
+
(0, common_1.UseGuards)(filter_query_guard_1.FilterQueryGuard),
|
|
48
|
+
(0, swagger_1.ApiOkResponse)({ type: () => _FilterResultModel }),
|
|
49
|
+
(0, swagger_1.ApiOperation)({ operationId: `filter${Base.name}` }),
|
|
50
|
+
__param(0, (0, common_1.Body)()),
|
|
51
|
+
__param(1, (0, common_1.Req)()),
|
|
52
|
+
__metadata("design:type", Function),
|
|
53
|
+
__metadata("design:paramtypes", [__1.FilterQueryModel, Object]),
|
|
54
|
+
__metadata("design:returntype", Promise)
|
|
55
|
+
], _FilterController.prototype, "filter", null);
|
|
56
|
+
__decorate([
|
|
57
|
+
(0, common_1.Post)("filter-count"),
|
|
58
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
59
|
+
(0, swagger_1.ApiOkResponse)({ schema: { type: "number" } }),
|
|
60
|
+
(0, swagger_1.ApiOperation)({ operationId: `filter${Base.name}Count` }),
|
|
61
|
+
__param(0, (0, common_1.Body)()),
|
|
62
|
+
__param(1, (0, common_1.Req)()),
|
|
63
|
+
__metadata("design:type", Function),
|
|
64
|
+
__metadata("design:paramtypes", [__1.FilterQueryModel, Object]),
|
|
65
|
+
__metadata("design:returntype", Promise)
|
|
66
|
+
], _FilterController.prototype, "filterCount", null);
|
|
67
|
+
__decorate([
|
|
68
|
+
(0, common_1.Post)("download/:type"),
|
|
69
|
+
(0, common_1.HttpCode)(common_1.HttpStatus.OK),
|
|
70
|
+
(0, common_1.UseInterceptors)(data_file_download_interceptor_1.DataFileDownloadInterceptor),
|
|
71
|
+
(0, swagger_1.ApiOkResponse)({
|
|
72
|
+
description: 'Returns file data as binary (Buffer) or as text (string) depending on the export type.',
|
|
73
|
+
content: {
|
|
74
|
+
'application/octet-stream': {
|
|
75
|
+
schema: {
|
|
76
|
+
oneOf: [
|
|
77
|
+
{ type: 'string', format: 'binary' },
|
|
78
|
+
{ type: 'string' }
|
|
79
|
+
]
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}),
|
|
84
|
+
(0, swagger_1.ApiParam)({ name: "type", enum: __1.ExportTypes, enumName: "ExportTypes" }),
|
|
85
|
+
(0, swagger_1.ApiOperation)({ operationId: `download${Base.name}Data` }),
|
|
86
|
+
__param(0, (0, common_1.Body)()),
|
|
87
|
+
__param(1, (0, common_1.Param)("type")),
|
|
88
|
+
__param(2, (0, common_1.Req)()),
|
|
89
|
+
__metadata("design:type", Function),
|
|
90
|
+
__metadata("design:paramtypes", [__1.FilterQueryModel, String, Object]),
|
|
91
|
+
__metadata("design:returntype", Promise)
|
|
92
|
+
], _FilterController.prototype, "downloadData", null);
|
|
93
|
+
__decorate([
|
|
94
|
+
(0, common_1.Post)("filter/config"),
|
|
95
|
+
(0, swagger_1.ApiOkResponse)({ type: () => __1.FilterConfigurationModel, isArray: true }),
|
|
96
|
+
(0, swagger_1.ApiOperation)({ operationId: `get${Base.name}FilterConfig` }),
|
|
97
|
+
__param(0, (0, common_1.Req)()),
|
|
98
|
+
__metadata("design:type", Function),
|
|
99
|
+
__metadata("design:paramtypes", [Object]),
|
|
100
|
+
__metadata("design:returntype", Promise)
|
|
101
|
+
], _FilterController.prototype, "getFilterConfig", null);
|
|
102
|
+
__decorate([
|
|
103
|
+
(0, common_1.Post)("filter/config/id"),
|
|
104
|
+
(0, swagger_1.ApiOkResponse)({ type: () => __1.SelectFilterValue }),
|
|
105
|
+
(0, swagger_1.ApiOperation)({ operationId: `search${Base.name}FilterResourceValue` }),
|
|
106
|
+
__param(0, (0, common_1.Query)()),
|
|
107
|
+
__param(1, (0, common_1.Req)()),
|
|
108
|
+
__metadata("design:type", Function),
|
|
109
|
+
__metadata("design:paramtypes", [filter_resource_value_model_1.FilterResourceValueModel, Object]),
|
|
110
|
+
__metadata("design:returntype", Promise)
|
|
111
|
+
], _FilterController.prototype, "searchFilterResourceValue", null);
|
|
112
|
+
__decorate([
|
|
113
|
+
(0, common_1.Post)("filter/config/value"),
|
|
114
|
+
(0, swagger_1.ApiOkResponse)({ type: () => __1.SelectFilterValue, isArray: true }),
|
|
115
|
+
(0, swagger_1.ApiOperation)({ operationId: `search${Base.name}FilterConfigValues` }),
|
|
116
|
+
__param(0, (0, common_1.Query)()),
|
|
117
|
+
__param(1, (0, common_1.Req)()),
|
|
118
|
+
__metadata("design:type", Function),
|
|
119
|
+
__metadata("design:paramtypes", [__1.FilterConfigurationSearchModel, Object]),
|
|
120
|
+
__metadata("design:returntype", Promise)
|
|
121
|
+
], _FilterController.prototype, "searchFilterConfigValues", null);
|
|
122
|
+
return _FilterController;
|
|
123
|
+
}
|
|
@@ -5,5 +5,3 @@ const common_1 = require("@nestjs/common");
|
|
|
5
5
|
const filter_utils_1 = require("../filter.utils");
|
|
6
6
|
const InjectFilter = (filter) => (0, common_1.Inject)(filter_utils_1.FilterUtils.getProviderToken(filter));
|
|
7
7
|
exports.InjectFilter = InjectFilter;
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZGVjb3JhdG9ycy9pbmplY3QtZmlsdGVyLmRlY29yYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwyQ0FBOEM7QUFFOUMsa0RBQThDO0FBRXZDLE1BQU0sWUFBWSxHQUFHLENBQUMsTUFBNkIsRUFBRSxFQUFFLENBQUMsSUFBQSxlQUFNLEVBQUMsMEJBQVcsQ0FBQyxnQkFBZ0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO0FBQS9GLFFBQUEsWUFBWSxnQkFBbUYiLCJmaWxlIjoibGliL2ZpbHRlci9kZWNvcmF0b3JzL2luamVjdC1maWx0ZXIuZGVjb3JhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0LCBUeXBlIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBCYXNlRmlsdGVyIH0gZnJvbSBcIi4uL2Jhc2UtZmlsdGVyXCI7XG5pbXBvcnQgeyBGaWx0ZXJVdGlscyB9IGZyb20gXCIuLi9maWx0ZXIudXRpbHNcIjtcblxuZXhwb3J0IGNvbnN0IEluamVjdEZpbHRlciA9IChmaWx0ZXI6IFR5cGU8QmFzZUZpbHRlcjxhbnk+PikgPT4gSW5qZWN0KEZpbHRlclV0aWxzLmdldFByb3ZpZGVyVG9rZW4oZmlsdGVyKSk7XG4iXX0=
|
|
@@ -5,5 +5,3 @@ exports.defaultFilterOptionConfig = {
|
|
|
5
5
|
maxPage: 100,
|
|
6
6
|
disableAccessControl: false
|
|
7
7
|
};
|
|
8
|
-
|
|
9
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVyLmNvbmZpZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLYSxRQUFBLHlCQUF5QixHQUF1QjtJQUN6RCxPQUFPLEVBQUUsR0FBRztJQUNaLG9CQUFvQixFQUFFLEtBQUs7Q0FDOUIsQ0FBQyIsImZpbGUiOiJsaWIvZmlsdGVyL2ZpbHRlci5jb25maWcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIEZpbHRlck9wdGlvbkNvbmZpZyB7XG4gICAgbWF4UGFnZTogbnVtYmVyO1xuICAgIGRpc2FibGVBY2Nlc3NDb250cm9sPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRGaWx0ZXJPcHRpb25Db25maWc6IEZpbHRlck9wdGlvbkNvbmZpZyA9IHtcbiAgICBtYXhQYWdlOiAxMDAsXG4gICAgZGlzYWJsZUFjY2Vzc0NvbnRyb2w6IGZhbHNlXG59O1xuIl19
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.FilterServiceFactory = FilterServiceFactory;
|
|
4
|
+
exports.FilterFactory = FilterFactory;
|
|
4
5
|
const filter_service_1 = require("./filter.service");
|
|
5
6
|
function FilterServiceFactory(options) {
|
|
6
7
|
return (accessControlAdapter, translateAdapter, filter, sequelizeModelScanner, dataFilterService) => {
|
|
7
8
|
return new filter_service_1.FilterService(accessControlAdapter, translateAdapter, filter, sequelizeModelScanner, dataFilterService, options);
|
|
8
9
|
};
|
|
9
10
|
}
|
|
10
|
-
exports.FilterServiceFactory = FilterServiceFactory;
|
|
11
11
|
function FilterFactory(filter) {
|
|
12
12
|
return (...args) => {
|
|
13
13
|
/**
|
|
@@ -19,6 +19,3 @@ function FilterFactory(filter) {
|
|
|
19
19
|
return new filter(...args);
|
|
20
20
|
};
|
|
21
21
|
}
|
|
22
|
-
exports.FilterFactory = FilterFactory;
|
|
23
|
-
|
|
24
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVyLmZhY3RvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBTUEscURBQWlEO0FBRWpELFNBQWdCLG9CQUFvQixDQUFJLE9BQTRDO0lBQ2hGLE9BQU8sQ0FDSCxvQkFBMEMsRUFDMUMsZ0JBQWtDLEVBQ2xDLE1BQXFCLEVBQ3JCLHFCQUE0QyxFQUM1QyxpQkFBb0MsRUFDdEMsRUFBRTtRQUNBLE9BQU8sSUFBSSw4QkFBYSxDQUFDLG9CQUFvQixFQUFFLGdCQUFnQixFQUFFLE1BQU0sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoSSxDQUFDLENBQUE7QUFDTCxDQUFDO0FBVkQsb0RBVUM7QUFFRCxTQUFnQixhQUFhLENBQUksTUFBZTtJQUM1QyxPQUFPLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRTtRQUN0Qjs7V0FFRztRQUNILElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxXQUFXLENBQUMsTUFBTSxLQUFLLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDckQsTUFBTSxJQUFJLEtBQUssQ0FBQyw2Q0FBNkMsTUFBTSxDQUFDLElBQUksY0FBYyxNQUFNLENBQUMsU0FBUyxDQUFDLFdBQVcsQ0FBQyxNQUFNLGNBQWMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUE7U0FDeEo7UUFFRCxPQUFPLElBQUksTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7SUFDL0IsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQVhELHNDQVdDIiwiZmlsZSI6ImxpYi9maWx0ZXIvZmlsdGVyLmZhY3RvcnkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBUeXBlIH0gZnJvbSBcIkBuZXN0anMvY29tbW9uXCI7XG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sQWRhcHRlciB9IGZyb20gXCIuLi9hZGFwdGVycy9hY2Nlc3MtY29udHJvbC5hZGFwdGVyXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVBZGFwdGVyIH0gZnJvbSBcIi4uL2FkYXB0ZXJzL3RyYW5zbGF0ZS5hZGFwdGVyXCI7XG5pbXBvcnQgeyBEYXRhRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9kYXRhLWZpbHRlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBTZXF1ZWxpemVNb2RlbFNjYW5uZXIgfSBmcm9tIFwiLi4vc2Nhbm5lcnMvc2VxdWVsaXplLW1vZGVsLnNjYW5uZXJcIjtcbmltcG9ydCB7IEJhc2VGaWx0ZXIgfSBmcm9tIFwiLi9iYXNlLWZpbHRlclwiO1xuaW1wb3J0IHsgRmlsdGVyU2VydmljZSB9IGZyb20gXCIuL2ZpbHRlci5zZXJ2aWNlXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBGaWx0ZXJTZXJ2aWNlRmFjdG9yeTxUPihvcHRpb25zPzogeyBkaXNhYmxlQWNjZXNzQ29udHJvbD86IGJvb2xlYW4gfSkge1xuICAgIHJldHVybiAoXG4gICAgICAgIGFjY2Vzc0NvbnRyb2xBZGFwdGVyOiBBY2Nlc3NDb250cm9sQWRhcHRlcixcbiAgICAgICAgdHJhbnNsYXRlQWRhcHRlcjogVHJhbnNsYXRlQWRhcHRlcixcbiAgICAgICAgZmlsdGVyOiBCYXNlRmlsdGVyPFQ+LFxuICAgICAgICBzZXF1ZWxpemVNb2RlbFNjYW5uZXI6IFNlcXVlbGl6ZU1vZGVsU2Nhbm5lcixcbiAgICAgICAgZGF0YUZpbHRlclNlcnZpY2U6IERhdGFGaWx0ZXJTZXJ2aWNlXG4gICAgKSA9PiB7XG4gICAgICAgIHJldHVybiBuZXcgRmlsdGVyU2VydmljZShhY2Nlc3NDb250cm9sQWRhcHRlciwgdHJhbnNsYXRlQWRhcHRlciwgZmlsdGVyLCBzZXF1ZWxpemVNb2RlbFNjYW5uZXIsIGRhdGFGaWx0ZXJTZXJ2aWNlLCBvcHRpb25zKTtcbiAgICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBGaWx0ZXJGYWN0b3J5PFQ+KGZpbHRlcjogVHlwZTxUPikge1xuICAgIHJldHVybiAoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIENoZWNrIGlmIGFsbCBkZXBlbmRlbmNpZXMgYXJlIGluamVjdGVkXG4gICAgICAgICAqL1xuICAgICAgICBpZiAoZmlsdGVyLnByb3RvdHlwZS5jb25zdHJ1Y3Rvci5sZW5ndGggIT09IGFyZ3MubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYE5vdCBlbm91Z2ggZGVwZW5kZW5jaWVzIHdlcmUgcHJvdmlkZWQgZm9yICR7ZmlsdGVyLm5hbWV9OiBleHBlY3RlZCAke2ZpbHRlci5wcm90b3R5cGUuY29uc3RydWN0b3IubGVuZ3RofSwgcmVjZWl2ZWQgJHthcmdzLmxlbmd0aH1gKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG5ldyBmaWx0ZXIoLi4uYXJncyk7XG4gICAgfTtcbn1cbiJdfQ==
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createFilterProvider =
|
|
3
|
+
exports.createFilterProvider = createFilterProvider;
|
|
4
4
|
const adapters_1 = require("../adapters");
|
|
5
5
|
const data_filter_service_1 = require("../data-filter.service");
|
|
6
6
|
const sequelize_model_scanner_1 = require("../scanners/sequelize-model.scanner");
|
|
@@ -13,6 +13,3 @@ function createFilterProvider(filter, disableAccessControl) {
|
|
|
13
13
|
inject: [adapters_1.AccessControlAdapter, adapters_1.TranslateAdapter, filter, sequelize_model_scanner_1.SequelizeModelScanner, data_filter_service_1.DataFilterService]
|
|
14
14
|
};
|
|
15
15
|
}
|
|
16
|
-
exports.createFilterProvider = createFilterProvider;
|
|
17
|
-
|
|
18
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVyLnByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLDBDQUFxRTtBQUNyRSxnRUFBMkQ7QUFDM0QsaUZBQTRFO0FBRTVFLHFEQUF3RDtBQUN4RCxpREFBNkM7QUFFN0MsU0FBZ0Isb0JBQW9CLENBQUMsTUFBNkIsRUFBRSxvQkFBOEI7SUFDOUYsT0FBTztRQUNILE9BQU8sRUFBRSwwQkFBVyxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUM3QyxVQUFVLEVBQUUsSUFBQSxxQ0FBb0IsRUFBQyxFQUFFLG9CQUFvQixFQUFFLENBQUM7UUFDMUQsTUFBTSxFQUFFLENBQUMsK0JBQW9CLEVBQUUsMkJBQWdCLEVBQUUsTUFBTSxFQUFFLCtDQUFxQixFQUFFLHVDQUFpQixDQUFDO0tBQ3JHLENBQUM7QUFDTixDQUFDO0FBTkQsb0RBTUMiLCJmaWxlIjoibGliL2ZpbHRlci9maWx0ZXIucHJvdmlkZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm92aWRlciwgVHlwZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgQWNjZXNzQ29udHJvbEFkYXB0ZXIsIFRyYW5zbGF0ZUFkYXB0ZXIgfSBmcm9tIFwiLi4vYWRhcHRlcnNcIjtcbmltcG9ydCB7IERhdGFGaWx0ZXJTZXJ2aWNlIH0gZnJvbSBcIi4uL2RhdGEtZmlsdGVyLnNlcnZpY2VcIjtcbmltcG9ydCB7IFNlcXVlbGl6ZU1vZGVsU2Nhbm5lciB9IGZyb20gXCIuLi9zY2FubmVycy9zZXF1ZWxpemUtbW9kZWwuc2Nhbm5lclwiO1xuaW1wb3J0IHsgQmFzZUZpbHRlciB9IGZyb20gXCIuL2Jhc2UtZmlsdGVyXCI7XG5pbXBvcnQgeyBGaWx0ZXJTZXJ2aWNlRmFjdG9yeSB9IGZyb20gXCIuL2ZpbHRlci5mYWN0b3J5XCI7XG5pbXBvcnQgeyBGaWx0ZXJVdGlscyB9IGZyb20gXCIuL2ZpbHRlci51dGlsc1wiO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmlsdGVyUHJvdmlkZXIoZmlsdGVyOiBUeXBlPEJhc2VGaWx0ZXI8YW55Pj4sIGRpc2FibGVBY2Nlc3NDb250cm9sPzogYm9vbGVhbik6IFByb3ZpZGVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgICBwcm92aWRlOiBGaWx0ZXJVdGlscy5nZXRQcm92aWRlclRva2VuKGZpbHRlciksXG4gICAgICAgIHVzZUZhY3Rvcnk6IEZpbHRlclNlcnZpY2VGYWN0b3J5KHsgZGlzYWJsZUFjY2Vzc0NvbnRyb2wgfSksXG4gICAgICAgIGluamVjdDogW0FjY2Vzc0NvbnRyb2xBZGFwdGVyLCBUcmFuc2xhdGVBZGFwdGVyLCBmaWx0ZXIsIFNlcXVlbGl6ZU1vZGVsU2Nhbm5lciwgRGF0YUZpbHRlclNlcnZpY2VdXG4gICAgfTtcbn1cbiJdfQ==
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="node" />
|
|
2
1
|
import { Type } from "@nestjs/common";
|
|
3
2
|
import { FindOptions } from "sequelize";
|
|
4
3
|
import { ExportTypes, FilterQueryModel, FilterResultModel } from "../";
|
|
@@ -41,7 +40,7 @@ export declare class FilterService<Data> {
|
|
|
41
40
|
private repository;
|
|
42
41
|
private exportRepository;
|
|
43
42
|
constructor(accessControlAdapter: AccessControlAdapter, translateAdapter: TranslateAdapter, model: BaseFilter<Data>, sequelizeModelScanner: SequelizeModelScanner, dataFilter: DataFilterService, options?: {
|
|
44
|
-
disableAccessControl?: boolean
|
|
43
|
+
disableAccessControl?: boolean;
|
|
45
44
|
} | undefined);
|
|
46
45
|
forData<T>(dataDef: Type<T>): FilterService<T>;
|
|
47
46
|
getConfig(request: any, user?: DataFilterUserModel): Promise<FilterConfigurationModel[]>;
|
|
@@ -609,5 +609,3 @@ exports.FilterService = FilterService = FilterService_1 = __decorate([
|
|
|
609
609
|
sequelize_model_scanner_1.SequelizeModelScanner,
|
|
610
610
|
data_filter_service_1.DataFilterService, Object])
|
|
611
611
|
], FilterService);
|
|
612
|
-
|
|
613
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVyLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUFrRDtBQUNsRCx5Q0FXbUI7QUFHbkIsK0VBQTBFO0FBQzFFLHFFQUFpRTtBQUVqRSxnRUFBMkQ7QUFFM0QsaUZBQTRFO0FBQzVFLHdEQUF1RDtBQUN2RCwrQ0FBMkM7QUFDM0MsaURBQTZDO0FBQzdDLHVDQU9tQjtBQUNuQiwrRUFBMEU7QUFDMUUseURBQTRFO0FBSzVFLHlEQUE0RjtBQW1DckYsSUFBTSxhQUFhLHFCQUFuQixNQUFNLGFBQWE7SUFLdEIsWUFDWSxvQkFBMEMsRUFDMUMsZ0JBQWtDLEVBQ2xDLEtBQXVCLEVBQ3ZCLHFCQUE0QyxFQUM1QyxVQUE2QixFQUM3QixPQUE0QztRQUw1Qyx5QkFBb0IsR0FBcEIsb0JBQW9CLENBQXNCO1FBQzFDLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUFDbEMsVUFBSyxHQUFMLEtBQUssQ0FBa0I7UUFDdkIsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUF1QjtRQUM1QyxlQUFVLEdBQVYsVUFBVSxDQUFtQjtRQUM3QixZQUFPLEdBQVAsT0FBTyxDQUFxQztRQUVwRCxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEIsQ0FBQztJQUVNLE9BQU8sQ0FBSSxPQUFnQjtRQUM5QixPQUFPLElBQUksZUFBYSxDQUNwQixJQUFJLENBQUMsb0JBQW9CLEVBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsRUFDckI7WUFDSSxHQUFHLElBQUksQ0FBQyxLQUFLO1lBQ2IsY0FBYyxFQUFFLE9BQU87U0FDRSxFQUM3QixJQUFJLENBQUMscUJBQXFCLEVBQzFCLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLE9BQU8sQ0FDZixDQUFDO0lBQ04sQ0FBQztJQUVNLEtBQUssQ0FBQyxTQUFTLENBQUMsT0FBWSxFQUFFLElBQTBCOztRQUMzRCxNQUFNLE1BQU0sR0FBK0IsRUFBRSxDQUFDO1FB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UUFFRCxNQUFNLEdBQUcsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxNQUFNLENBQUMsQ0FBQztRQUVoRCxJQUFJLENBQUMsQ0FBQSxNQUFNLGFBQU4sTUFBTSx1QkFBTixNQUFNLENBQUUsTUFBTSxDQUFBLEVBQUU7WUFDakIsTUFBTSxHQUFHLENBQUM7b0JBQ04sTUFBTSxFQUFFLElBQUk7b0JBQ1osU0FBUyxFQUFFLEtBQUs7aUJBQ25CLENBQUMsQ0FBQztTQUNOO1FBRUQsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUVPLHdCQUF3QixDQUFDLE1BQW9CO1FBQ2pELE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRyxDQUFDO0NBQ0osQ0FBQTtBQXRyQlksc0NBQWE7d0JBQWIsYUFBYTtJQUR6QixJQUFBLG1CQUFVLEdBQUU7cUNBT3lCLDZDQUFvQjtRQUN4QixvQ0FBZ0I7UUFDM0Isd0JBQVU7UUFDTSwrQ0FBcUI7UUFDaEMsdUNBQWlCO0dBVmhDLGFBQWEsQ0FzckJ6QiIsImZpbGUiOiJsaWIvZmlsdGVyL2ZpbHRlci5zZXJ2aWNlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSwgVHlwZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHtcbiAgICBDb3VudE9wdGlvbnMsXG4gICAgRmluZE9wdGlvbnMsXG4gICAgR3JvdXBlZENvdW50UmVzdWx0SXRlbSxcbiAgICBJbmNsdWRlYWJsZSxcbiAgICBJbmNsdWRlT3B0aW9ucyxcbiAgICBsaXRlcmFsLFxuICAgIE9wLFxuICAgIE9yZGVyLFxuICAgIE9yZGVySXRlbSxcbiAgICBXaGVyZU9wdGlvbnNcbn0gZnJvbSBcInNlcXVlbGl6ZVwiO1xuaW1wb3J0IHsgR3JvdXBPcHRpb24sIFByb2plY3Rpb25BbGlhcyB9IGZyb20gXCJzZXF1ZWxpemUvdHlwZXMvbW9kZWxcIjtcbmltcG9ydCB7IEV4cG9ydFR5cGVzLCBGaWx0ZXJRdWVyeU1vZGVsLCBGaWx0ZXJSZXN1bHRNb2RlbCwgRmlsdGVyU2VhcmNoTW9kZWwsIE9yZGVyTW9kZWwgfSBmcm9tIFwiLi4vXCI7XG5pbXBvcnQgeyBBY2Nlc3NDb250cm9sQWRhcHRlciB9IGZyb20gXCIuLi9hZGFwdGVycy9hY2Nlc3MtY29udHJvbC5hZGFwdGVyXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVBZGFwdGVyIH0gZnJvbSBcIi4uL2FkYXB0ZXJzL3RyYW5zbGF0ZS5hZGFwdGVyXCI7XG5pbXBvcnQgeyBEYXRhRmlsdGVyUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9kYXRhLWZpbHRlci5yZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBEYXRhRmlsdGVyU2VydmljZSB9IGZyb20gXCIuLi9kYXRhLWZpbHRlci5zZXJ2aWNlXCI7XG5pbXBvcnQgeyBEYXRhRmlsdGVyVXNlck1vZGVsIH0gZnJvbSBcIi4uL21vZGVscy91c2VyLm1vZGVsXCI7XG5pbXBvcnQgeyBTZXF1ZWxpemVNb2RlbFNjYW5uZXIgfSBmcm9tIFwiLi4vc2Nhbm5lcnMvc2VxdWVsaXplLW1vZGVsLnNjYW5uZXJcIjtcbmltcG9ydCB7IE0sIFNlcXVlbGl6ZVV0aWxzIH0gZnJvbSBcIi4uL3NlcXVlbGl6ZS51dGlsc1wiO1xuaW1wb3J0IHsgQmFzZUZpbHRlciB9IGZyb20gXCIuL2Jhc2UtZmlsdGVyXCI7XG5pbXBvcnQgeyBGaWx0ZXJVdGlscyB9IGZyb20gXCIuL2ZpbHRlci51dGlsc1wiO1xuaW1wb3J0IHtcbiAgICBGaWx0ZXIsXG4gICAgRmlsdGVyQ29uZGl0aW9uLFxuICAgIEZpbHRlckNvbmRpdGlvblJ1bGUsXG4gICAgRmlsdGVyRGVmaW5pdGlvbixcbiAgICBTZWxlY3RGaWx0ZXIsXG4gICAgU2VsZWN0RmlsdGVyVmFsdWVcbn0gZnJvbSBcIi4vZmlsdGVyc1wiO1xuaW1wb3J0IHsgR2VvTG9jYWxpemF0aW9uRmlsdGVyIH0gZnJvbSBcIi4vZmlsdGVycy9nZW8tbG9jYWxpemF0aW9uLmZpbHRlclwiO1xuaW1wb3J0IHsgR3JvdXBGaWx0ZXIsIEdyb3VwRmlsdGVyRGVmaW5pdGlvbiB9IGZyb20gXCIuL2ZpbHRlcnMvZ3JvdXAuZmlsdGVyXCI7XG5pbXBvcnQgeyBRdWVyeU1vZGVsLCBRdWVyeVJ1bGVNb2RlbCB9IGZyb20gXCIuL21vZGVsc1wiO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlndXJhdGlvblNlYXJjaE1vZGVsIH0gZnJvbSBcIi4vbW9kZWxzL2ZpbHRlci1jb25maWd1cmF0aW9uLXNlYXJjaC5tb2RlbFwiO1xuaW1wb3J0IHsgRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSBcIi4vbW9kZWxzL2ZpbHRlci1jb25maWd1cmF0aW9uLm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJSZXNvdXJjZVZhbHVlTW9kZWwgfSBmcm9tIFwiLi9tb2RlbHMvZmlsdGVyLXJlc291cmNlLXZhbHVlLm1vZGVsXCI7XG5pbXBvcnQgeyBPcmRlclJ1bGUsIE9yZGVyUnVsZUNvbnRleHQsIE9yZGVyUnVsZURlZmluaXRpb24gfSBmcm9tIFwiLi9vcmRlci1ydWxlcy9vcmRlci1ydWxlXCI7XG5cbmludGVyZmFjZSBDb3VudFBhcmFtczxVc2VycyBleHRlbmRzIERhdGFGaWx0ZXJVc2VyTW9kZWw+IHtcbiAgICBvcHRpb25zOiBGaWx0ZXJRdWVyeU1vZGVsO1xuICAgIHVzZXI/OiBVc2VycyB8IG51bGw7XG59XG5cbmludGVyZmFjZSBDb3VudFRvdGFsVmFsdWVzUGFyYW1zPFVzZXJzIGV4dGVuZHMgRGF0YUZpbHRlclVzZXJNb2RlbD4ge1xuICAgIG9wdGlvbnM6IEZpbmRPcHRpb25zO1xuICAgIHVzZXI/OiBVc2VycyB8IG51bGw7XG59XG5cbmludGVyZmFjZSBEb3dubG9hZERhdGFQYXJhbXM8VXNlcnMgZXh0ZW5kcyBEYXRhRmlsdGVyVXNlck1vZGVsLCBSZXF1ZXN0PiB7XG4gICAgZXhwb3J0T3B0aW9ucz86IG9iamVjdDtcbiAgICBvcHRpb25zOiBGaWx0ZXJRdWVyeU1vZGVsO1xuICAgIHJlcXVlc3Q6IFJlcXVlc3Q7XG4gICAgdHlwZTogRXhwb3J0VHlwZXM7XG4gICAgdXNlcjogVXNlcnMgfCBudWxsO1xufVxuXG5pbnRlcmZhY2UgRmlsdGVyUGFyYW1zPFVzZXJzIGV4dGVuZHMgRGF0YUZpbHRlclVzZXJNb2RlbCwgUmVxdWVzdD4ge1xuICAgIG9wdGlvbnM6IEZpbHRlclF1ZXJ5TW9kZWw7XG4gICAgcmVxdWVzdDogUmVxdWVzdDtcbiAgICB1c2VyPzogVXNlcnMgfCBudWxsO1xufVxuXG5pbnRlcmZhY2UgRmluZFZhbHVlc1BhcmFtczxVc2VycyBleHRlbmRzIERhdGFGaWx0ZXJVc2VyTW9kZWwsIFJlcXVlc3QsIERhdGE+IHtcbiAgICBmaWx0ZXI6IEZpbHRlclF1ZXJ5TW9kZWw7XG4gICAgb3B0aW9uczogRmluZE9wdGlvbnM7XG4gICAgcmVwb3NpdG9yeT86IERhdGFGaWx0ZXJSZXBvc2l0b3J5PERhdGE+O1xuICAgIHJlcXVlc3Q6IFJlcXVlc3Q7XG4gICAgdXNlcj86IFVzZXJzIHwgbnVsbDtcbn1cblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIEZpbHRlclNlcnZpY2U8RGF0YT4ge1xuICAgIHByaXZhdGUgZGVmaW5pdGlvbnMhOiB7IFtuYW1lOiBzdHJpbmddOiBGaWx0ZXJEZWZpbml0aW9uIHwgR3JvdXBGaWx0ZXJEZWZpbml0aW9uIHwgT3JkZXJSdWxlRGVmaW5pdGlvbiB9O1xuICAgIHByaXZhdGUgcmVwb3NpdG9yeSE6IERhdGFGaWx0ZXJSZXBvc2l0b3J5PERhdGE+O1xuICAgIHByaXZhdGUgZXhwb3J0UmVwb3NpdG9yeSE6IERhdGFGaWx0ZXJSZXBvc2l0b3J5PERhdGE+O1xuXG4gICAgY29uc3RydWN0b3IoXG4gICAgICAgIHByaXZhdGUgYWNjZXNzQ29udHJvbEFkYXB0ZXI6IEFjY2Vzc0NvbnRyb2xBZGFwdGVyLFxuICAgICAgICBwcml2YXRlIHRyYW5zbGF0ZUFkYXB0ZXI6IFRyYW5zbGF0ZUFkYXB0ZXIsXG4gICAgICAgIHByaXZhdGUgbW9kZWw6IEJhc2VGaWx0ZXI8RGF0YT4sXG4gICAgICAgIHByaXZhdGUgc2VxdWVsaXplTW9kZWxTY2FubmVyOiBTZXF1ZWxpemVNb2RlbFNjYW5uZXIsXG4gICAgICAgIHByaXZhdGUgZGF0YUZpbHRlcjogRGF0YUZpbHRlclNlcnZpY2UsXG4gICAgICAgIHByaXZhdGUgb3B0aW9ucz86IHsgZGlzYWJsZUFjY2Vzc0NvbnRyb2w/OiBib29sZWFuIH1cbiAgICApIHtcbiAgICAgICAgdGhpcy5pbml0KCk7XG4gICAgfVxuXG4gICAgcHVibGljIGZvckRhdGE8VD4oZGF0YURlZjogVHlwZTxUPik6IEZpbHRlclNlcnZpY2U8VD4ge1xuICAgICAgICByZXR1cm4gbmV3IEZpbHRlclNlcnZpY2UoXG4gICAgICAgICAgICB0aGlzLmFjY2Vzc0NvbnRyb2xBZGFwdGVyLFxuICAgICAgICAgICAgdGhpcy50cmFuc2xhdGVBZGFwdGVyLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIC4uLnRoaXMubW9kZWwsXG4gICAgICAgICAgICAgICAgZGF0YURlZmluaXRpb246IGRhdGFEZWZcbiAgICAgICAgICAgIH0gYXMgdW5rbm93biBhcyBCYXNlRmlsdGVyPFQ+LFxuICAgICAgICAgICAgdGhpcy5zZXF1ZWxpemVNb2RlbFNjYW5uZXIsXG4gICAgICAgICAgICB0aGlzLmRhdGFGaWx0ZXIsXG4gICAgICAgICAgICB0aGlzLm9wdGlvbnNcbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29uZmlnKHJlcXVlc3Q6IGFueSwgdXNlcj86IERhdGFGaWx0ZXJVc2VyTW9kZWwpOiBQcm9taXNlPEZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbFtdPiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdDogRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBrZXkgaW4gdGhpcy5kZWZpbml0aW9ucykge1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRlZmluaXRpb25zLmhhc093blByb3BlcnR5KGtleSkgfHwgT3JkZXJSdWxlLnZhbGlkYXRlKHRoaXMuZGVmaW5pdGlvbnNba2V5XSkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgY29uZmlnID0gYXdhaXQgKHRoaXMuZGVmaW5pdGlvbnNba2V5XSBhcyBGaWx0ZXJEZWZpbml0aW9uKS5nZXRDb25maWcoa2V5LCByZXF1ZXN0LCB1c2VyKTtcbiAgICAgICAgICAgIGlmICghY29uZmlnKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgLi4uY29uZmlnLFxuICAgICAgICAgICAgICAgIGlkOiBrZXksXG4gICAgICAgICAgICAgICAgbmFtZTogYXdhaXQgdGhpcy50cmFuc2xhdGVBZGFwdGVyLmdldFRyYW5zbGF0aW9uKHVzZXI/Lmxhbmd1YWdlID8/IFwiZnJcIiwgRmlsdGVyVXRpbHMuZ2V0RmlsdGVyVHJhbnNsYXRpb25LZXkoa2V5KSlcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgc2VhcmNoQ29uZmlnVmFsdWVzKFxuICAgICAgICByZXF1ZXN0OiBhbnksXG4gICAgICAgIHNlYXJjaDogRmlsdGVyQ29uZmlndXJhdGlvblNlYXJjaE1vZGVsLFxuICAgICAgICB1c2VyPzogRGF0YUZpbHRlclVzZXJNb2RlbFxuICAgICk6IFByb21pc2U8U2VsZWN0RmlsdGVyVmFsdWVbXT4ge1xuICAgICAgICBpZiAoIXRoaXMuZGVmaW5pdGlvbnMuaGFzT3duUHJvcGVydHkoc2VhcmNoLmlkKSkge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5kZWZpbml0aW9uc1tzZWFyY2guaWRdO1xuICAgICAgICBpZiAoZmlsdGVyIGluc3RhbmNlb2YgU2VsZWN0RmlsdGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgZmlsdGVyLnZhbHVlcyh7XG4gICAgICAgICAgICAgICAgdmFsdWU6IHNlYXJjaC52YWx1ZSxcbiAgICAgICAgICAgICAgICB1c2VyLFxuICAgICAgICAgICAgICAgIHJlcXVlc3QsXG4gICAgICAgICAgICAgICAgcGFnZTogdGhpcy5jb252ZXJ0TnVtYmVyKHNlYXJjaC5wYWdlKSxcbiAgICAgICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5jb252ZXJ0TnVtYmVyKHNlYXJjaC5wYWdlU2l6ZSksXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBbXTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNvbnZlcnROdW1iZXIodmFsdWU/OiBzdHJpbmcgfCBudW1iZXIpOiBudW1iZXIgfCBudWxsIHtcbiAgICAgICAgaWYgKCF2YWx1ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBwYXJzZWROdW1iZXIgPSBOdW1iZXIodmFsdWUpO1xuICAgICAgICByZXR1cm4gaXNOYU4ocGFyc2VkTnVtYmVyKSA/IG51bGwgOiBwYXJzZWROdW1iZXI7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGZpbmRSZXNvdXJjZVZhbHVlQnlJZChyZXF1ZXN0OiBhbnksIHNlYXJjaDogRmlsdGVyUmVzb3VyY2VWYWx1ZU1vZGVsLCB1c2VyPzogRGF0YUZpbHRlclVzZXJNb2RlbCk6IFByb21pc2U8U2VsZWN0RmlsdGVyVmFsdWUgfCBudWxsPiB7XG4gICAgICAgIGlmICghdGhpcy5kZWZpbml0aW9ucy5oYXNPd25Qcm9wZXJ0eShzZWFyY2guaWQpKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGVmaW5pdGlvbnNbc2VhcmNoLmlkXTtcbiAgICAgICAgaWYgKGZpbHRlciBpbnN0YW5jZW9mIFNlbGVjdEZpbHRlciAmJiBmaWx0ZXIuZ2V0UmVzb3VyY2VCeUlkKSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgZmlsdGVyLmdldFJlc291cmNlQnlJZCh7IGlkOiBzZWFyY2gucmVzb3VyY2VJZCwgdXNlciwgcmVxdWVzdCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBudWxsO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBjb3VudDxVc2VycyBleHRlbmRzIERhdGFGaWx0ZXJVc2VyTW9kZWw+KHBhcmFtczogQ291bnRQYXJhbXM8VXNlcnM+ICk6IFByb21pc2U8bnVtYmVyPiB7XG4gICAgICAgIGNvbnN0IHsgb3B0aW9ucyB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCB1c2VyID0gcGFyYW1zLnVzZXIgPz8gbnVsbDtcblxuICAgICAgICBjb25zdCBjb3VudE9wdGlvbnMgPSBhd2FpdCB0aGlzLmdldEZpbmRPcHRpb25zKHRoaXMucmVwb3NpdG9yeS5tb2RlbCwgb3B0aW9ucy5xdWVyeSk7XG4gICAgICAgIGlmIChvcHRpb25zLnNlYXJjaCkge1xuICAgICAgICAgICAgdGhpcy5hZGRTZWFyY2hDb25kaXRpb24ob3B0aW9ucy5zZWFyY2gsIGNvdW50T3B0aW9ucywgdXNlcj8ubGFuZ3VhZ2UgPz8gbnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5jb3VudFRvdGFsVmFsdWVzKCB7IG9wdGlvbnM6IGNvdW50T3B0aW9ucywgdXNlciB9KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZmlsdGVyPFJlcXVlc3QsIFVzZXJzIGV4dGVuZHMgRGF0YUZpbHRlclVzZXJNb2RlbD4ocGFyYW1zOiBGaWx0ZXJQYXJhbXM8RGF0YUZpbHRlclVzZXJNb2RlbCwgUmVxdWVzdD4pOiBQcm9taXNlPEZpbHRlclJlc3VsdE1vZGVsPERhdGE+PiB7XG4gICAgICAgIGNvbnN0IHsgb3B0aW9ucywgcmVxdWVzdCB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCB1c2VyID0gcGFyYW1zLnVzZXIgPz8gbnVsbDtcblxuICAgICAgICBpZiAob3B0aW9ucy5vcmRlcikge1xuICAgICAgICAgICAgb3B0aW9ucy5vcmRlciA9IHRoaXMubm9ybWFsaXplT3JkZXIob3B0aW9ucy5vcmRlcik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb3VudE9wdGlvbnMgPSBhd2FpdCB0aGlzLmdldEZpbmRPcHRpb25zKHRoaXMucmVwb3NpdG9yeS5tb2RlbCwgb3B0aW9ucy5xdWVyeSwgb3B0aW9ucy5kYXRhKTtcbiAgICAgICAgaWYgKG9wdGlvbnMuc2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFNlYXJjaENvbmRpdGlvbihvcHRpb25zLnNlYXJjaCwgY291bnRPcHRpb25zLCB1c2VyPy5sYW5ndWFnZSA/PyBudWxsKTtcbiAgICAgICAgfVxuICAgICAgICBpZiAob3B0aW9ucy5vcmRlcikge1xuICAgICAgICAgICAgdGhpcy5hZGRPcmRlckNvbmRpdGlvbihvcHRpb25zLm9yZGVyLCBjb3VudE9wdGlvbnMsIG9wdGlvbnMuZGF0YSk7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5hZGRHcm91cE9wdGlvbihvcHRpb25zLCBjb3VudE9wdGlvbnMpO1xuXG4gICAgICAgIGNvbnN0IHRvdGFsID0gYXdhaXQgdGhpcy5jb3VudFRvdGFsVmFsdWVzKHsgb3B0aW9uczogY291bnRPcHRpb25zLCB1c2VyIH0pO1xuICAgICAgICBjb25zdCB2YWx1ZXMgPSBhd2FpdCB0aGlzLmZpbmRWYWx1ZXMoeyBmaWx0ZXI6IG9wdGlvbnMsIG9wdGlvbnM6IGNvdW50T3B0aW9ucywgcmVxdWVzdCwgdXNlciB9KTtcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdG90YWwsXG4gICAgICAgICAgICBwYWdlOiBvcHRpb25zLnBhZ2UsXG4gICAgICAgICAgICB2YWx1ZXNcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZG93bmxvYWREYXRhPFJlcXVlc3Q+KHBhcmFtczogRG93bmxvYWREYXRhUGFyYW1zPERhdGFGaWx0ZXJVc2VyTW9kZWwsIFJlcXVlc3Q+KTogUHJvbWlzZTxCdWZmZXIgfCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgeyBleHBvcnRPcHRpb25zLCBvcHRpb25zLCByZXF1ZXN0LCB0eXBlLCB1c2VyIH0gPSBwYXJhbXM7XG5cbiAgICAgICAgY29uc3QgZmluZE9wdGlvbnMgPSBhd2FpdCB0aGlzLmdldEZpbmRPcHRpb25zKHRoaXMuZXhwb3J0UmVwb3NpdG9yeS5tb2RlbCwgb3B0aW9ucy5xdWVyeSk7XG5cbiAgICAgICAgaWYgKG9wdGlvbnMub3JkZXIpIHtcbiAgICAgICAgICAgIG9wdGlvbnMub3JkZXIgPSB0aGlzLm5vcm1hbGl6ZU9yZGVyKG9wdGlvbnMub3JkZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG9wdGlvbnMuc2VhcmNoKSB7XG4gICAgICAgICAgICB0aGlzLmFkZFNlYXJjaENvbmRpdGlvbihvcHRpb25zLnNlYXJjaCwgZmluZE9wdGlvbnMsIHVzZXI/Lmxhbmd1YWdlID8/IG51bGwpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChvcHRpb25zLm9yZGVyKSB7XG4gICAgICAgICAgICB0aGlzLmFkZE9yZGVyQ29uZGl0aW9uKG9wdGlvbnMub3JkZXIsIGZpbmRPcHRpb25zLCBvcHRpb25zLmRhdGEpO1xuICAgICAgICB9XG4gICAgICAgIGRlbGV0ZSBvcHRpb25zLnBhZ2U7XG5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gYXdhaXQgdGhpcy5maW5kVmFsdWVzKHsgZmlsdGVyOiBvcHRpb25zLCBvcHRpb25zOiBmaW5kT3B0aW9ucywgcmVwb3NpdG9yeTogdGhpcy5leHBvcnRSZXBvc2l0b3J5LCByZXF1ZXN0LCB1c2VyIH0pO1xuXG4gICAgICAgIGNvbnN0IGhlYWRlcnMgPSBhd2FpdCB0aGlzLm1vZGVsLmdldEV4cG9ydGVkRmllbGRzS2V5cyh0eXBlKTtcbiAgICAgICAgaWYgKGhlYWRlcnMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgUHJvbWlzZS5hbGwodmFsdWVzLm1hcCgodmFsdWUpID0+IHRoaXMubW9kZWwuZ2V0RXhwb3J0ZWRGaWVsZHModmFsdWUsIHVzZXI/Lmxhbmd1YWdlID8/IFwiZnJcIiwgdHlwZSkpKTtcbiAgICAgICAgICAgIHJldHVybiBhd2FpdCB0aGlzLnJlcG9zaXRvcnkuZG93bmxvYWREYXRhKGhlYWRlcnMsIGRhdGEsIHR5cGUsIHVzZXI/Lmxhbmd1YWdlID8/IFwiZnJcIiwgZXhwb3J0T3B0aW9ucyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gYXdhaXQgdGhpcy5yZXBvc2l0b3J5LmRvd25sb2FkRGF0YSh2YWx1ZXMsIHR5cGUsIHVzZXI/Lmxhbmd1YWdlID8/IFwiZnJcIiwgZXhwb3J0T3B0aW9ucyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0RmluZE9wdGlvbnMobW9kZWw6IHR5cGVvZiBNLCBxdWVyeTogUXVlcnlNb2RlbCB8IHVuZGVmaW5lZCwgZGF0YT86IG9iamVjdCk6IFByb21pc2U8RmluZE9wdGlvbnM+IHtcbiAgICAgICAgLyoqXG4gICAgICAgICAqIFJlc2V0IEdlbyBsb2NhbGl6YXRpb24gZmlsdGVyIHN0YXRlXG4gICAgICAgICAqL1xuICAgICAgICBHZW9Mb2NhbGl6YXRpb25GaWx0ZXIucmVzZXQoKTtcblxuICAgICAgICBxdWVyeSA9IHRoaXMuYWRkRGVmYXVsdEZpbHRlcihxdWVyeSk7XG4gICAgICAgIGxldCBvcHRpb246IEZpbmRPcHRpb25zID0ge307XG4gICAgICAgIGlmIChxdWVyeSkge1xuICAgICAgICAgICAgY29uc3Qgd2hlcmVDb25kaXRpb25zOiBhbnlbXSA9IFtdO1xuICAgICAgICAgICAgY29uc3QgaGF2aW5nQ29uZGl0aW9uczogYW55W10gPSBbXTtcblxuICAgICAgICAgICAgb3B0aW9uID0ge1xuICAgICAgICAgICAgICAgIC4uLm9wdGlvbixcbiAgICAgICAgICAgICAgICBpbmNsdWRlOiBhd2FpdCB0aGlzLmdldEluY2x1ZGUobW9kZWwsIHF1ZXJ5LCBkYXRhKSxcbiAgICAgICAgICAgICAgICB3aGVyZTogcXVlcnkuY29uZGl0aW9uID09PSBcImFuZFwiID8geyBbT3AuYW5kXTogd2hlcmVDb25kaXRpb25zIH0gOiB7IFtPcC5vcl06IHdoZXJlQ29uZGl0aW9ucyB9LFxuICAgICAgICAgICAgICAgIGhhdmluZzogcXVlcnkuY29uZGl0aW9uID09PSBcImFuZFwiID8geyBbT3AuYW5kXTogaGF2aW5nQ29uZGl0aW9ucyB9IDogeyBbT3Aub3JdOiBoYXZpbmdDb25kaXRpb25zIH1cbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGNvbnN0IHBhcmFub2lkID0gYXdhaXQgdGhpcy5nZW5lcmF0ZVdoZXJlT3B0aW9ucyhxdWVyeSwgd2hlcmVDb25kaXRpb25zKTtcbiAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVIYXZpbmdPcHRpb25zKHF1ZXJ5LCBoYXZpbmdDb25kaXRpb25zKTtcblxuICAgICAgICAgICAgaWYgKCFwYXJhbm9pZCkge1xuICAgICAgICAgICAgICAgIG9wdGlvbi5wYXJhbm9pZCA9IHBhcmFub2lkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIWhhdmluZ0NvbmRpdGlvbnMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgZGVsZXRlIG9wdGlvbi5oYXZpbmc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH1cblxuICAgIHByaXZhdGUgaW5pdCgpIHtcbiAgICAgICAgdGhpcy5yZXBvc2l0b3J5ID0gdGhpcy5kYXRhRmlsdGVyLmZvcih0aGlzLm1vZGVsLmRhdGFEZWZpbml0aW9uKTtcbiAgICAgICAgdGhpcy5leHBvcnRSZXBvc2l0b3J5ID0gdGhpcy5kYXRhRmlsdGVyLmZvcih0aGlzLm1vZGVsLmV4cG9ydERhdGFEZWZpbml0aW9uID8/IHRoaXMubW9kZWwuZGF0YURlZmluaXRpb24pO1xuICAgICAgICB0aGlzLm1vZGVsLnRyYW5zbGF0ZVNlcnZpY2UgPSB0aGlzLnRyYW5zbGF0ZUFkYXB0ZXI7XG5cbiAgICAgICAgdGhpcy5kZWZpbml0aW9ucyA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiB0aGlzLm1vZGVsKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubW9kZWwuaGFzT3duUHJvcGVydHkoa2V5KSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgIUZpbHRlci52YWxpZGF0ZSh0aGlzLm1vZGVsW2tleV0gYXMgRmlsdGVyRGVmaW5pdGlvbikgJiZcbiAgICAgICAgICAgICAgICAhR3JvdXBGaWx0ZXIudmFsaWRhdGUodGhpcy5tb2RlbFtrZXldIGFzIEdyb3VwRmlsdGVyRGVmaW5pdGlvbikgJiZcbiAgICAgICAgICAgICAgICAhT3JkZXJSdWxlLnZhbGlkYXRlKHRoaXMubW9kZWxba2V5XSBhcyBPcmRlclJ1bGVEZWZpbml0aW9uKVxuICAgICAgICAgICAgKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuZGVmaW5pdGlvbnNba2V5XSA9IHRoaXMubW9kZWxba2V5XSBhcyBGaWx0ZXJEZWZpbml0aW9uO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRJbmNsdWRlKG1vZGVsOiB0eXBlb2YgTSwgcXVlcnk6IFF1ZXJ5TW9kZWwsIGRhdGE/OiBvYmplY3QpOiBQcm9taXNlPEluY2x1ZGVhYmxlW10+IHtcbiAgICAgICAgaWYgKCFxdWVyeS5ydWxlcykge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5jbHVkZXM6IEluY2x1ZGVPcHRpb25zW11bXSA9IFtdO1xuICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgcXVlcnkucnVsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IG0gPSBydWxlIGFzIFF1ZXJ5TW9kZWw7XG4gICAgICAgICAgICBpZiAobS5jb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICBpbmNsdWRlcy5wdXNoKGF3YWl0IHRoaXMuZ2V0SW5jbHVkZShtb2RlbCwgbSwgZGF0YSkgYXMgSW5jbHVkZU9wdGlvbnNbXSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHIgPSBydWxlIGFzIFF1ZXJ5UnVsZU1vZGVsO1xuICAgICAgICAgICAgaWYgKCF0aGlzLmRlZmluaXRpb25zLmhhc093blByb3BlcnR5KHIuaWQpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGZpbHRlciA9IHRoaXMuZGVmaW5pdGlvbnNbci5pZF07XG4gICAgICAgICAgICBpZiAoKGZpbHRlciBhcyBHcm91cEZpbHRlckRlZmluaXRpb24pLnJvb3RGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICBjb25zdCBmID0gZmlsdGVyIGFzIEdyb3VwRmlsdGVyRGVmaW5pdGlvbjtcbiAgICAgICAgICAgICAgICBpbmNsdWRlcy5wdXNoKC4uLnRoaXMuZ2V0RmlsdGVySW5jbHVkZShtb2RlbCwgZi5yb290RmlsdGVyLCByLCBkYXRhKSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoIWYubGF6eUxvYWRpbmcpIHtcbiAgICAgICAgICAgICAgICAgICAgaWYgKGYudmFsdWVGaWx0ZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzLnB1c2goLi4udGhpcy5nZXRGaWx0ZXJJbmNsdWRlKG1vZGVsLCBmLnZhbHVlRmlsdGVyLCByLCBkYXRhKSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGYuZ2V0VmFsdWVGaWx0ZXIgJiYgQXJyYXkuaXNBcnJheShyLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCB2YWx1ZUZpbGVyID0gYXdhaXQgZi5nZXRWYWx1ZUZpbHRlcihyLnZhbHVlWzBdKTtcbiAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXMucHVzaCguLi50aGlzLmdldEZpbHRlckluY2x1ZGUobW9kZWwsIHZhbHVlRmlsZXIgYXMgRmlsdGVyRGVmaW5pdGlvbiwgciwgZGF0YSkpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaW5jbHVkZXMucHVzaCguLi50aGlzLmdldEZpbHRlckluY2x1ZGUobW9kZWwsIGZpbHRlciBhcyBGaWx0ZXJEZWZpbml0aW9uLCByLCBkYXRhKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIFNlcXVlbGl6ZVV0aWxzLnJlZHVjZUluY2x1ZGVzKGluY2x1ZGVzLCB0cnVlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldENvbmRpdGlvbkluY2x1ZGUobW9kZWw6IHR5cGVvZiBNLCBjb25kaXRpb246IEZpbHRlckNvbmRpdGlvbik6IEluY2x1ZGVPcHRpb25zW10ge1xuICAgICAgICBpZiAoIWNvbmRpdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgaW5jbHVkZXM6IEluY2x1ZGVPcHRpb25zW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIGNvbmRpdGlvbi5ydWxlcykge1xuICAgICAgICAgICAgY29uc3QgYyA9IHJ1bGUgYXMgRmlsdGVyQ29uZGl0aW9uO1xuICAgICAgICAgICAgaWYgKGMuY29uZGl0aW9uKSB7XG4gICAgICAgICAgICAgICAgaW5jbHVkZXMucHVzaCguLi50aGlzLmdldENvbmRpdGlvbkluY2x1ZGUobW9kZWwsIGNvbmRpdGlvbikpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgY29uc3QgciA9IHJ1bGUgYXMgRmlsdGVyQ29uZGl0aW9uUnVsZTtcbiAgICAgICAgICAgIGlmIChyLnBhdGgpIHtcbiAgICAgICAgICAgICAgICBpbmNsdWRlcy5wdXNoKC4uLnRoaXMuc2VxdWVsaXplTW9kZWxTY2FubmVyLmdldEluY2x1ZGVzKG1vZGVsLCB7IHBhdGg6IHIucGF0aCB9LCBbXSwgeyBpbmNsdWRlOiBbXSB9LCB0cnVlKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluY2x1ZGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZ2VuZXJhdGVXaGVyZU9wdGlvbnMocXVlcnk6IFF1ZXJ5TW9kZWwsIG9wdGlvbnM6IFdoZXJlT3B0aW9uc1tdKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgICAgIGlmICghcXVlcnkucnVsZXMpIHtcbiAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IHBhcmFub2lkID0gdHJ1ZTtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHF1ZXJ5LnJ1bGVzKSB7XG4gICAgICAgICAgICBjb25zdCBjID0gcnVsZSBhcyBRdWVyeU1vZGVsO1xuICAgICAgICAgICAgaWYgKGMuY29uZGl0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZGl0aW9uczogYW55W10gPSBbXTtcbiAgICAgICAgICAgICAgICBjb25zdCBvcCA9IGMuY29uZGl0aW9uID09PSBcImFuZFwiID8gT3AuYW5kIDogT3Aub3I7XG4gICAgICAgICAgICAgICAgY29uc3Qgd2hlcmUgPSB7IFtvcF06IGNvbmRpdGlvbnMgfTtcbiAgICAgICAgICAgICAgICBwYXJhbm9pZCA9IHBhcmFub2lkICYmIGF3YWl0IHRoaXMuZ2VuZXJhdGVXaGVyZU9wdGlvbnMoYywgY29uZGl0aW9ucyk7XG5cbiAgICAgICAgICAgICAgICBpZiAod2hlcmVbb3AgYXMgYW55XS5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHdoZXJlKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgciA9IHJ1bGUgYXMgUXVlcnlSdWxlTW9kZWw7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGVmaW5pdGlvbnMuaGFzT3duUHJvcGVydHkoci5pZCkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5kZWZpbml0aW9uc1tyLmlkXSBhcyBGaWx0ZXJEZWZpbml0aW9uO1xuICAgICAgICAgICAgaWYgKCFPcmRlclJ1bGUudmFsaWRhdGUoZmlsdGVyKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlck9wdGlvbnMgPSBhd2FpdCBmaWx0ZXIuZ2V0V2hlcmVPcHRpb25zKHIpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGZpbHRlck9wdGlvbnMpIHtcbiAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy5wdXNoKGZpbHRlck9wdGlvbnMpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHBhcmFub2lkID0gZmlsdGVyLnBhcmFub2lkID8/IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcGFyYW5vaWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZW5lcmF0ZUhhdmluZ09wdGlvbnMocXVlcnk6IFF1ZXJ5TW9kZWwsIG9wdGlvbnM6IFdoZXJlT3B0aW9uc1tdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgICAgIGlmICghcXVlcnkucnVsZXMpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBxdWVyeS5ydWxlcykge1xuICAgICAgICAgICAgY29uc3QgYyA9IHJ1bGUgYXMgUXVlcnlNb2RlbDtcbiAgICAgICAgICAgIGlmIChjLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbnM6IGFueVtdID0gW107XG4gICAgICAgICAgICAgICAgY29uc3Qgb3AgPSBjLmNvbmRpdGlvbiA9PT0gXCJhbmRcIiA/IE9wLmFuZCA6IE9wLm9yO1xuICAgICAgICAgICAgICAgIGNvbnN0IGhhdmluZyA9IHsgW29wXTogY29uZGl0aW9ucyB9O1xuICAgICAgICAgICAgICAgIGF3YWl0IHRoaXMuZ2VuZXJhdGVIYXZpbmdPcHRpb25zKGMsIGNvbmRpdGlvbnMpO1xuXG4gICAgICAgICAgICAgICAgaWYgKGhhdmluZ1tvcCBhcyBhbnldLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnB1c2goaGF2aW5nKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgciA9IHJ1bGUgYXMgUXVlcnlSdWxlTW9kZWw7XG4gICAgICAgICAgICBpZiAoIXRoaXMuZGVmaW5pdGlvbnMuaGFzT3duUHJvcGVydHkoci5pZCkpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgZmlsdGVyID0gdGhpcy5kZWZpbml0aW9uc1tyLmlkXSBhcyBGaWx0ZXJEZWZpbml0aW9uO1xuICAgICAgICAgICAgaWYgKCFPcmRlclJ1bGUudmFsaWRhdGUoZmlsdGVyKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGZpbHRlck9wdGlvbnMgPSBhd2FpdCBmaWx0ZXIuZ2V0SGF2aW5nT3B0aW9ucyhyKTtcbiAgICAgICAgICAgICAgICBpZiAoZmlsdGVyT3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBvcHRpb25zLnB1c2goZmlsdGVyT3B0aW9ucyk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRTZWFyY2hDb25kaXRpb24oc2VhcmNoOiBGaWx0ZXJTZWFyY2hNb2RlbCwgb3B0aW9uczogQ291bnRPcHRpb25zLCBsYW5ndWFnZTogc3RyaW5nIHwgbnVsbCk6IHZvaWQge1xuICAgICAgICBjb25zdCB2YWx1ZSA9IHNlYXJjaD8udmFsdWU/LnRvU3RyaW5nKCk7XG4gICAgICAgIGlmICghdmFsdWU/Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5yZXBvc2l0b3J5LmFkZFNlYXJjaENvbmRpdGlvbihzZWFyY2gudmFsdWUsIG9wdGlvbnMsIGxhbmd1YWdlKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFkZE9yZGVyQ29uZGl0aW9uKG9yZGVyczogT3JkZXJNb2RlbFtdLCBvcHRpb25zOiBDb3VudE9wdGlvbnMsIGRhdGE/OiBvYmplY3QpOiB2b2lkIHtcbiAgICAgICAgaWYgKG9yZGVycy5ldmVyeShvcmRlciA9PiAhb3JkZXIuZGlyZWN0aW9uKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMubW9kZWwuZGVmYXVsdE9yZGVyUnVsZSkge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdE9yZGVycyA9IEFycmF5LmlzQXJyYXkodGhpcy5tb2RlbC5kZWZhdWx0T3JkZXJSdWxlLm9yZGVyKVxuICAgICAgICAgICAgICAgID8gdGhpcy5tb2RlbC5kZWZhdWx0T3JkZXJSdWxlLm9yZGVyXG4gICAgICAgICAgICAgICAgOiBbdGhpcy5tb2RlbC5kZWZhdWx0T3JkZXJSdWxlLm9yZGVyXTtcblxuICAgICAgICAgICAgb3JkZXJzID0gWy4uLmRlZmF1bHRPcmRlcnMsIC4uLm9yZGVyc107XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IG9yZGVyIG9mIG9yZGVycykge1xuICAgICAgICAgICAgY29uc3QgcnVsZSA9IHRoaXMuZGVmaW5pdGlvbnNbb3JkZXIuY29sdW1uXSBhcyBPcmRlclJ1bGVEZWZpbml0aW9uO1xuICAgICAgICAgICAgY29uc3QgaW5jbHVkZXMgPSBydWxlICYmIE9yZGVyUnVsZS52YWxpZGF0ZShydWxlKSA/XG4gICAgICAgICAgICAgICAgcnVsZS5wYXRoID8gdGhpcy5zZXF1ZWxpemVNb2RlbFNjYW5uZXIuZ2V0SW5jbHVkZXModGhpcy5yZXBvc2l0b3J5Lm1vZGVsLCB7IHBhdGg6IHJ1bGUucGF0aCB9LCBbXSkgOiBbXSA6XG4gICAgICAgICAgICAgICAgdGhpcy5yZXBvc2l0b3J5LmdlbmVyYXRlT3JkZXJJbmNsdWRlKG9yZGVyLCBkYXRhKTtcblxuICAgICAgICAgICAgaWYgKCFpbmNsdWRlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgb3B0aW9ucy5pbmNsdWRlID0gU2VxdWVsaXplVXRpbHMubWVyZ2VJbmNsdWRlcyhcbiAgICAgICAgICAgICAgICBvcHRpb25zLmluY2x1ZGUgYXMgSW5jbHVkZU9wdGlvbnMgfCBJbmNsdWRlT3B0aW9uc1tdLFxuICAgICAgICAgICAgICAgIGluY2x1ZGVzXG4gICAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhZGRHcm91cE9wdGlvbihmaWx0ZXI6IEZpbHRlclF1ZXJ5TW9kZWwsIG9wdGlvbnM6IENvdW50T3B0aW9ucyk6IHZvaWQge1xuICAgICAgICBjb25zdCBtb2RlbCA9IHRoaXMucmVwb3NpdG9yeS5tb2RlbDtcbiAgICAgICAgb3B0aW9ucy5ncm91cCA9IFtgJHttb2RlbC5uYW1lfS5pZGBdO1xuICAgICAgICBpZiAoZmlsdGVyLmdyb3VwQnkpIHtcbiAgICAgICAgICAgIG9wdGlvbnMuZ3JvdXAucHVzaChTZXF1ZWxpemVVdGlscy5nZXRHcm91cExpdGVyYWwodGhpcy5yZXBvc2l0b3J5Lm1vZGVsLCBmaWx0ZXIuZ3JvdXBCeSkpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFmaWx0ZXIub3JkZXIgfHwgKGZpbHRlci5vcmRlciBpbnN0YW5jZW9mIEFycmF5ICYmICFmaWx0ZXIub3JkZXIubGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JkZXJzID0gdGhpcy5ub3JtYWxpemVPcmRlcihmaWx0ZXIub3JkZXIpO1xuICAgICAgICBmb3IgKGNvbnN0IG9yZGVyIG9mIG9yZGVycykge1xuICAgICAgICAgICAgY29uc3QgcnVsZSA9IHRoaXMuZGVmaW5pdGlvbnNbb3JkZXIuY29sdW1uXSBhcyBPcmRlclJ1bGVEZWZpbml0aW9uO1xuICAgICAgICAgICAgaWYgKHJ1bGUgJiYgT3JkZXJSdWxlLnZhbGlkYXRlKHJ1bGUpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICh0aGlzLnJlcG9zaXRvcnkuaGFzQ3VzdG9tQXR0cmlidXRlKG9yZGVyLmNvbHVtbikpIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgdmFsdWVzID0gb3JkZXIuY29sdW1uLnNwbGl0KFwiLlwiKTtcbiAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IHZhbHVlcy5wb3AoKSBhcyBzdHJpbmc7XG4gICAgICAgICAgICBpZiAoIXZhbHVlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmdyb3VwLnB1c2goYCR7bW9kZWwubmFtZX0uJHtTZXF1ZWxpemVVdGlscy5maW5kQ29sdW1uRmllbGROYW1lKG1vZGVsLCBjb2x1bW4pfWApO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zLmdyb3VwLnB1c2goLi4udGhpcy5zZXF1ZWxpemVNb2RlbFNjYW5uZXIuZ2V0R3JvdXAobW9kZWwsIG9yZGVyKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGNvdW50VG90YWxWYWx1ZXM8VXNlcnMgZXh0ZW5kcyBEYXRhRmlsdGVyVXNlck1vZGVsPihwYXJhbXM6IENvdW50VG90YWxWYWx1ZXNQYXJhbXM8VXNlcnM+KTogUHJvbWlzZTxudW1iZXI+IHtcbiAgICAgICAgY29uc3QgeyBvcHRpb25zIH0gPSBwYXJhbXM7XG4gICAgICAgIGNvbnN0IHVzZXIgPSBwYXJhbXMudXNlciA/PyBudWxsO1xuXG4gICAgICAgIGlmICh1c2VyKSB7XG4gICAgICAgICAgICBvcHRpb25zLndoZXJlID0gYXdhaXQgdGhpcy5nZXRBY2Nlc3NDb250cm9sV2hlcmVDb25kaXRpb24ob3B0aW9ucy53aGVyZSwgdXNlcik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAob3B0aW9ucy5oYXZpbmcpIHtcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnkubW9kZWwuZmluZEFsbCh7XG4gICAgICAgICAgICAgICAgLi4ub3B0aW9ucyxcbiAgICAgICAgICAgICAgICBzdWJRdWVyeTogZmFsc2VcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGRhdGEubGVuZ3RoO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgeyBncm91cCwgLi4uY291bnRPcHRpb25zIH0gPSBvcHRpb25zO1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBhd2FpdCB0aGlzLnJlcG9zaXRvcnkubW9kZWwuY291bnQoe1xuICAgICAgICAgICAgICAgIC4uLmNvdW50T3B0aW9ucyxcbiAgICAgICAgICAgICAgICBkaXN0aW5jdDogdHJ1ZVxuICAgICAgICAgICAgfSkgYXMgbnVtYmVyIHwgR3JvdXBlZENvdW50UmVzdWx0SXRlbVtdO1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmxlbmd0aDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYXN5bmMgZmluZFZhbHVlczxVc2VycyBleHRlbmRzIERhdGFGaWx0ZXJVc2VyTW9kZWwsIFJlcXVlc3Q+KHBhcmFtczogRmluZFZhbHVlc1BhcmFtczxVc2VycywgUmVxdWVzdCwgRGF0YT4pOiBQcm9taXNlPERhdGFbXT4ge1xuICAgICAgICBjb25zdCB7IGZpbHRlciwgb3B0aW9ucywgcmVxdWVzdCB9ID0gcGFyYW1zO1xuICAgICAgICBjb25zdCB1c2VyID0gcGFyYW1zLnVzZXIgPz8gbnVsbDtcbiAgICAgICAgY29uc3QgcmVwb3NpdG9yeSA9IHBhcmFtcy5yZXBvc2l0b3J5ID8/IHRoaXMucmVwb3NpdG9yeTtcblxuICAgICAgICBpZiAodXNlcikge1xuICAgICAgICAgICAgb3B0aW9ucy53aGVyZSA9IGF3YWl0IHRoaXMuZ2V0QWNjZXNzQ29udHJvbFdoZXJlQ29uZGl0aW9uKG9wdGlvbnMud2hlcmUsIHVzZXIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JkZXIgPSB0aGlzLmdldE9yZGVyT3B0aW9ucyhmaWx0ZXIub3JkZXIgPz8gW10sIHsgcmVxdWVzdCwgdXNlciB9KTtcbiAgICAgICAgY29uc3Qgbm9uTmVzdGVkT3JkZXJDb2x1bW5zID0gKEFycmF5LmlzQXJyYXkoZmlsdGVyLm9yZGVyKSA/IGZpbHRlci5vcmRlciA6IFtmaWx0ZXIub3JkZXJdKVxuICAgICAgICAgICAgLmZpbHRlcigob3JkZXIpOiBvcmRlciBpcyBPcmRlck1vZGVsID0+ICEhb3JkZXIpXG4gICAgICAgICAgICAubWFwKG9yZGVyID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBydWxlID0gdGhpcy5kZWZpbml0aW9uc1tvcmRlci5jb2x1bW5dIGFzIE9yZGVyUnVsZURlZmluaXRpb247XG4gICAgICAgICAgICAgICAgaWYgKCFydWxlIHx8ICFPcmRlclJ1bGUudmFsaWRhdGUocnVsZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG9yZGVyLmNvbHVtbjtcbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gW3J1bGUucGF0aCA/PyBcIlwiLCBydWxlLmF0dHJpYnV0ZV0uam9pbihcIi5cIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIC5maWx0ZXIoY29sdW1uID0+IGNvbHVtbiAmJiAhY29sdW1uLmluY2x1ZGVzKFwiLlwiKSAmJiAhcmVwb3NpdG9yeS5oYXNDdXN0b21BdHRyaWJ1dGUoY29sdW1uKSk7XG4gICAgICAgIGNvbnN0IGN1c3RvbUF0dHJpYnV0ZXMgPSBmaWx0ZXIub3JkZXIgPyB0aGlzLmdldE9yZGVyQ3VzdG9tQXR0cmlidXRlKGZpbHRlci5vcmRlciwgZmlsdGVyLmRhdGEpIDogW107XG5cbiAgICAgICAgY29uc3QgdmFsdWVzID0gYXdhaXQgcmVwb3NpdG9yeS5tb2RlbC5maW5kQWxsKHtcbiAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICBhdHRyaWJ1dGVzOiBbXCJpZFwiLCAuLi5ub25OZXN0ZWRPcmRlckNvbHVtbnMsIC4uLmN1c3RvbUF0dHJpYnV0ZXNdLFxuICAgICAgICAgICAgbGltaXQ6IGZpbHRlci5wYWdlPy5zaXplLFxuICAgICAgICAgICAgb2Zmc2V0OiBmaWx0ZXIucGFnZSA/IGZpbHRlci5wYWdlLm51bWJlciAqIGZpbHRlci5wYWdlLnNpemUgKyAoZmlsdGVyLnBhZ2Uub2Zmc2V0ID8/IDApIDogdW5kZWZpbmVkLFxuICAgICAgICAgICAgc3ViUXVlcnk6IGZhbHNlLFxuICAgICAgICAgICAgZ3JvdXA6IGZpbHRlci5ncm91cEJ5ID8/IG9wdGlvbnMuZ3JvdXAsXG4gICAgICAgICAgICBvcmRlclxuICAgICAgICB9KTtcblxuICAgICAgICBjb25zdCBncm91cCA9IHRoaXMuZ2VuZXJhdGVSZXBvc2l0b3J5R3JvdXBCeShmaWx0ZXIpO1xuICAgICAgICByZXR1cm4gYXdhaXQgcmVwb3NpdG9yeS5maW5kQWxsKHtcbiAgICAgICAgICAgIHdoZXJlOiB7XG4gICAgICAgICAgICAgICAgaWQ6IHZhbHVlcy5tYXAoeCA9PiB4LmlkKVxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIG9yZGVyLFxuICAgICAgICAgICAgcGFyYW5vaWQ6IG9wdGlvbnMucGFyYW5vaWQsXG4gICAgICAgICAgICBncm91cFxuICAgICAgICB9LCBmaWx0ZXIuZGF0YSA/PyB7fSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZXRBY2Nlc3NDb250cm9sV2hlcmVDb25kaXRpb24od2hlcmU6IFdoZXJlT3B0aW9ucyB8IHVuZGVmaW5lZCwgdXNlcjogRGF0YUZpbHRlclVzZXJNb2RlbCk6IFByb21pc2U8V2hlcmVPcHRpb25zIHwgdW5kZWZpbmVkPiB7XG4gICAgICAgIGlmICh0aGlzLm9wdGlvbnM/LmRpc2FibGVBY2Nlc3NDb250cm9sKSB7XG4gICAgICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIXVzZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIk5vIHVzZXIgZm91bmRcIik7XG4gICAgICAgIH0gZWxzZSBpZiAoIXRoaXMuYWNjZXNzQ29udHJvbEFkYXB0ZXIpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkFjY2Vzc0NvbnRyb2wgaXNuJ3QgZW5hYmxlIGluIHlvdXIgcHJvamVjdFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHJlc291cmNlcyA9IGF3YWl0IHRoaXMuYWNjZXNzQ29udHJvbEFkYXB0ZXIuZ2V0UmVzb3VyY2VzKHRoaXMucmVwb3NpdG9yeS5tb2RlbCwgdXNlcik7XG4gICAgICAgIGlmIChyZXNvdXJjZXMuaWRzKSB7XG4gICAgICAgICAgICByZXR1cm4gU2VxdWVsaXplVXRpbHMubWVyZ2VXaGVyZSh7IGlkOiByZXNvdXJjZXMuaWRzIH0sIHdoZXJlID8/IHt9KTtcbiAgICAgICAgfVxuICAgICAgICBpZiAocmVzb3VyY2VzLndoZXJlKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIFtPcC5hbmRdOiBbXG4gICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy53aGVyZSxcbiAgICAgICAgICAgICAgICAgICAgd2hlcmUgPz8ge31cbiAgICAgICAgICAgICAgICBdXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdoZXJlO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0RmlsdGVySW5jbHVkZShcbiAgICAgICAgbW9kZWw6IHR5cGVvZiBNLFxuICAgICAgICBmaWx0ZXI6IEZpbHRlckRlZmluaXRpb24sXG4gICAgICAgIHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsLFxuICAgICAgICBkYXRhPzogb2JqZWN0XG4gICAgKTogSW5jbHVkZU9wdGlvbnNbXVtdIHtcbiAgICAgICAgY29uc3QgaW5jbHVkZXM6IEluY2x1ZGVPcHRpb25zW11bXSA9IFtdO1xuICAgICAgICBjb25zdCBwYXRocyA9IGZpbHRlci5nZXRJbmNsdWRlUGF0aHMocnVsZSwgZGF0YSk7XG4gICAgICAgIGZvciAoY29uc3QgcGF0aCBvZiBwYXRocykge1xuICAgICAgICAgICAgaW5jbHVkZXMucHVzaChcbiAgICAgICAgICAgICAgICB0aGlzLnNlcXVlbGl6ZU1vZGVsU2Nhbm5lci5nZXRJbmNsdWRlcyhtb2RlbCwgcGF0aCwgW10sIFtdLCB0cnVlKVxuICAgICAgICAgICAgKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghZmlsdGVyLnBhdGgpIHtcbiAgICAgICAgICAgIGlmIChmaWx0ZXIuY29uZGl0aW9uKSB7XG4gICAgICAgICAgICAgICAgaW5jbHVkZXMucHVzaCh0aGlzLmdldENvbmRpdGlvbkluY2x1ZGUobW9kZWwsIGZpbHRlci5jb25kaXRpb24pKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIGluY2x1ZGVzO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIFtcbiAgICAgICAgICAgIC4uLmluY2x1ZGVzLFxuICAgICAgICAgICAgdGhpcy5zZXF1ZWxpemVNb2RlbFNjYW5uZXIuZ2V0SW5jbHVkZXMobW9kZWwsIHtcbiAgICAgICAgICAgICAgICBwYXRoOiBmaWx0ZXIucGF0aCxcbiAgICAgICAgICAgICAgICBwYXJhbm9pZDogZmlsdGVyLnBhcmFub2lkLFxuICAgICAgICAgICAgICAgIHdoZXJlOiBmaWx0ZXIud2hlcmUgPyBGaWx0ZXJVdGlscy5nZW5lcmF0ZVdoZXJlQ29uZGl0aW9ucyhmaWx0ZXIud2hlcmUsIGRhdGEpIDogdW5kZWZpbmVkXG4gICAgICAgICAgICB9LCBbXSwgW10sIHRydWUpLFxuICAgICAgICAgICAgZmlsdGVyLmNvbmRpdGlvbiA/IHRoaXMuZ2V0Q29uZGl0aW9uSW5jbHVkZShtb2RlbCwgZmlsdGVyLmNvbmRpdGlvbik6IFtdXG4gICAgICAgIF07XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRPcmRlck9wdGlvbnMob3JkZXJzOiBPcmRlck1vZGVsIHwgT3JkZXJNb2RlbFtdLCBjb250ZXh0OiBPcmRlclJ1bGVDb250ZXh0KTogT3JkZXIge1xuICAgICAgICBsZXQgb3JkZXJDb2x1bW5zID0gQXJyYXkuaXNBcnJheShvcmRlcnMpID8gb3JkZXJzIDogW29yZGVyc107XG5cbiAgICAgICAgaWYgKHRoaXMubW9kZWwuZGVmYXVsdE9yZGVyUnVsZSkge1xuICAgICAgICAgICAgY29uc3QgZGVmYXVsdE9yZGVycyA9IEFycmF5LmlzQXJyYXkodGhpcy5tb2RlbC5kZWZhdWx0T3JkZXJSdWxlLm9yZGVyKVxuICAgICAgICAgICAgICAgID8gdGhpcy5tb2RlbC5kZWZhdWx0T3JkZXJSdWxlLm9yZGVyXG4gICAgICAgICAgICAgICAgOiBbdGhpcy5tb2RlbC5kZWZhdWx0T3JkZXJSdWxlLm9yZGVyXTtcblxuICAgICAgICAgICAgY29uc3QgYXBwbGljYWJsZURlZmF1bHRPcmRlclJ1bGUgPSBkZWZhdWx0T3JkZXJzLmZpbHRlcigob3JkZXIpID0+ICFvcmRlckNvbHVtbnMuc29tZSgobykgPT4gby5jb2x1bW4gPT09IG9yZGVyLmNvbHVtbikpO1xuXG4gICAgICAgICAgICBvcmRlckNvbHVtbnMgPSBbLi4uYXBwbGljYWJsZURlZmF1bHRPcmRlclJ1bGUsIC4uLm9yZGVyQ29sdW1uc107XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBnZW5lcmF0ZWRPcmRlcjogT3JkZXIgPSBbXTtcblxuICAgICAgICBmb3IgKGNvbnN0IG9yZGVyIG9mIG9yZGVyQ29sdW1ucykge1xuICAgICAgICAgICAgaWYgKCFvcmRlcj8uY29sdW1uIHx8ICFvcmRlci5kaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMucmVwb3NpdG9yeS5oYXNDdXN0b21BdHRyaWJ1dGUob3JkZXIuY29sdW1uKSkge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbHVtbiA9IG9yZGVyLm51bGxMYXN0ID8gYC0ke29yZGVyLmNvbHVtbn1gIDogb3JkZXIuY29sdW1uO1xuICAgICAgICAgICAgICAgIGNvbnN0IGRpcmVjdGlvbiA9IG9yZGVyLm51bGxMYXN0ID8gb3JkZXIuZGlyZWN0aW9uID09PSBcImFzY1wiID8gXCJkZXNjXCIgOiBcImFzY1wiIDogb3JkZXIuZGlyZWN0aW9uO1xuICAgICAgICAgICAgICAgIGdlbmVyYXRlZE9yZGVyLnB1c2goW2xpdGVyYWwoY29sdW1uKSwgZGlyZWN0aW9uLnRvVXBwZXJDYXNlKCldKTtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgY29uc3QgcnVsZSA9IHRoaXMuZGVmaW5pdGlvbnNbb3JkZXIuY29sdW1uXSBhcyBPcmRlclJ1bGVEZWZpbml0aW9uO1xuICAgICAgICAgICAgaWYgKCFydWxlIHx8ICFPcmRlclJ1bGUudmFsaWRhdGUocnVsZSkpIHtcbiAgICAgICAgICAgICAgICBnZW5lcmF0ZWRPcmRlci5wdXNoKHRoaXMuc2VxdWVsaXplTW9kZWxTY2FubmVyLmdldE9yZGVyKHRoaXMucmVwb3NpdG9yeS5tb2RlbCwgb3JkZXIpIGFzIE9yZGVySXRlbSk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdlbmVyYXRlZE9yZGVyLnB1c2goW3J1bGUuZ2V0T3JkZXJPcHRpb24odGhpcy5yZXBvc2l0b3J5Lm1vZGVsLCBjb250ZXh0KSwgb3JkZXIuZGlyZWN0aW9uLnRvVXBwZXJDYXNlKCldKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBnZW5lcmF0ZWRPcmRlcjtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldE9yZGVyQ3VzdG9tQXR0cmlidXRlKG9yZGVyczogT3JkZXJNb2RlbCB8IE9yZGVyTW9kZWxbXSwgZGF0YT86IG9iamVjdCk6IFByb2plY3Rpb25BbGlhc1tdIHtcbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9yZGVycykpIHtcbiAgICAgICAgICAgIG9yZGVycyA9IFtvcmRlcnNdO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYXR0cmlidXRlczogUHJvamVjdGlvbkFsaWFzW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBvcmRlciBvZiBvcmRlcnMpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5yZXBvc2l0b3J5Lmhhc0N1c3RvbUF0dHJpYnV0ZShvcmRlci5jb2x1bW4pKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IGN1c3RvbUF0dHJpYnV0ZSA9IHRoaXMucmVwb3NpdG9yeS5nZXRDdXN0b21BdHRyaWJ1dGUob3JkZXIuY29sdW1uKTtcbiAgICAgICAgICAgIGNvbnN0IGF0dHJpYnV0ZSA9IGN1c3RvbUF0dHJpYnV0ZT8udHJhbnNmb3JtKGRhdGEpIGFzIFByb2plY3Rpb25BbGlhcztcbiAgICAgICAgICAgIGlmIChhdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgICAgICBhdHRyaWJ1dGVzLnB1c2goYXR0cmlidXRlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXR0cmlidXRlcztcbiAgICB9XG5cbiAgICBwcml2YXRlIGdlbmVyYXRlUmVwb3NpdG9yeUdyb3VwQnkoZmlsdGVyOiBGaWx0ZXJRdWVyeU1vZGVsKTogR3JvdXBPcHRpb24gfCB1bmRlZmluZWQge1xuICAgICAgICBjb25zdCBncm91cDogR3JvdXBPcHRpb24gPSBbXTtcbiAgICAgICAgaWYgKGZpbHRlci5ncm91cEJ5KSB7XG4gICAgICAgICAgICBncm91cC5wdXNoKFNlcXVlbGl6ZVV0aWxzLmdldEdyb3VwTGl0ZXJhbCh0aGlzLnJlcG9zaXRvcnkubW9kZWwsIGZpbHRlci5ncm91cEJ5KSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBncm91cEJ5ID0gdGhpcy5yZXBvc2l0b3J5LmdldEN1c3RvbUF0dHJpYnV0ZUdyb3VwQnkoKTtcbiAgICAgICAgaWYgKCFncm91cEJ5Lmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgICAgICB9XG5cbiAgICAgICAgZ3JvdXAucHVzaCguLi5ncm91cEJ5KTtcbiAgICAgICAgaWYgKCFmaWx0ZXIub3JkZXIgfHwgKGZpbHRlci5vcmRlciBpbnN0YW5jZW9mIEFycmF5ICYmICFmaWx0ZXIub3JkZXIubGVuZ3RoKSkge1xuICAgICAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3JkZXJzID0gdGhpcy5ub3JtYWxpemVPcmRlcihmaWx0ZXIub3JkZXIpO1xuICAgICAgICBmb3IgKGNvbnN0IG9yZGVyIG9mIG9yZGVycykge1xuICAgICAgICAgICAgaWYgKCFvcmRlcj8uY29sdW1uIHx8ICFvcmRlci5kaXJlY3Rpb24pIHtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMucmVwb3NpdG9yeS5oYXNDdXN0b21BdHRyaWJ1dGUob3JkZXIuY29sdW1uKSkge1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBydWxlID0gdGhpcy5kZWZpbml0aW9uc1tvcmRlci5jb2x1bW5dIGFzIE9yZGVyUnVsZURlZmluaXRpb247XG4gICAgICAgICAgICBpZiAoIXJ1bGUgfHwgIU9yZGVyUnVsZS52YWxpZGF0ZShydWxlKSkge1xuICAgICAgICAgICAgICAgIGdyb3VwLnB1c2goYCR7dGhpcy5yZXBvc2l0b3J5Lm1vZGVsLm5hbWV9LiR7U2VxdWVsaXplVXRpbHMuZmluZENvbHVtbkZpZWxkTmFtZSh0aGlzLnJlcG9zaXRvcnkubW9kZWwsIG9yZGVyLmNvbHVtbil9YCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGdyb3VwLnB1c2goLi4udGhpcy5zZXF1ZWxpemVNb2RlbFNjYW5uZXIuZ2V0R3JvdXAodGhpcy5yZXBvc2l0b3J5Lm1vZGVsLCBvcmRlcikpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGdyb3VwO1xuICAgIH1cblxuICAgIHByaXZhdGUgYWRkRGVmYXVsdEZpbHRlcihxdWVyeT86IFF1ZXJ5TW9kZWwpOiBRdWVyeU1vZGVsIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgaWYgKCF0aGlzLm1vZGVsLmRlZmF1bHRGaWx0ZXIpIHtcbiAgICAgICAgICAgIHJldHVybiBxdWVyeTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLm1vZGVsLmRlZmF1bHRGaWx0ZXIucmVxdWlyZWQpIHtcbiAgICAgICAgICAgIGlmIChxdWVyeT8uY29uZGl0aW9uICE9PSBcImFuZFwiKSB7XG4gICAgICAgICAgICAgICAgcXVlcnkgPSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbjogXCJhbmRcIixcbiAgICAgICAgICAgICAgICAgICAgcnVsZXM6IHF1ZXJ5ID8gW3F1ZXJ5XSA6IFtdXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChxdWVyeT8uY29uZGl0aW9uICE9PSBcIm9yXCIpIHtcbiAgICAgICAgICAgICAgICBxdWVyeSA9IHtcbiAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uOiBcIm9yXCIsXG4gICAgICAgICAgICAgICAgICAgIHJ1bGVzOiBxdWVyeSA/IFtxdWVyeV0gOiBbXVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVlcnk/LnJ1bGVzLnB1c2godGhpcy5tb2RlbC5kZWZhdWx0RmlsdGVyLmZpbHRlcik7XG4gICAgICAgIHJldHVybiBxdWVyeTtcbiAgICB9XG5cbiAgICBwcml2YXRlIG5vcm1hbGl6ZU9yZGVyKG9yZGVyczogT3JkZXJNb2RlbCB8IE9yZGVyTW9kZWxbXSk6IE9yZGVyTW9kZWxbXSB7XG4gICAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcmRlcnMpKSB7XG4gICAgICAgICAgICBvcmRlcnMgPSBbb3JkZXJzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIG9yZGVycyA9IG9yZGVycz8uZmlsdGVyKG9yZGVyID0+IG9yZGVyPy5jb2x1bW4pO1xuXG4gICAgICAgIGlmICghb3JkZXJzPy5sZW5ndGgpIHtcbiAgICAgICAgICAgIG9yZGVycyA9IFt7XG4gICAgICAgICAgICAgICAgY29sdW1uOiBcImlkXCIsXG4gICAgICAgICAgICAgICAgZGlyZWN0aW9uOiBcImFzY1wiXG4gICAgICAgICAgICB9XTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBvcmRlcnM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXROb25OZXN0ZWRPcmRlckNvbHVtbnMob3JkZXJzOiBPcmRlck1vZGVsW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIHJldHVybiBvcmRlcnMuZmlsdGVyKG9yZGVyID0+IG9yZGVyLmNvbHVtbiAmJiAhb3JkZXIuY29sdW1uLmluY2x1ZGVzKFwiLlwiKSkubWFwKG9yZGVyID0+IG9yZGVyLmNvbHVtbik7XG4gICAgfVxufVxuIl19
|
|
@@ -38,5 +38,3 @@ class FilterUtils {
|
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
40
|
exports.FilterUtils = FilterUtils;
|
|
41
|
-
|
|
42
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUtBLE1BQWEsV0FBVztJQUNiLE1BQU0sQ0FBQyxnQkFBZ0IsQ0FBQyxNQUE2QjtRQUN4RCxPQUFPLEdBQUcsTUFBTSxDQUFDLElBQUksU0FBUyxDQUFDO0lBQ25DLENBQUM7SUFFTSxNQUFNLENBQUMsdUJBQXVCLENBQUMsR0FBVztRQUM3QyxPQUFPLFVBQVUsR0FBRyxPQUFPLENBQUM7SUFDaEMsQ0FBQztJQUVNLE1BQU0sQ0FBQyxzQkFBc0IsQ0FBQyxLQUFhO1FBQzlDLE9BQU8sNkJBQTZCLEtBQUssRUFBRSxDQUFDO0lBQ2hELENBQUM7SUFFTSxNQUFNLENBQUMseUJBQXlCLENBQUMsUUFBZ0I7UUFDcEQsT0FBTyxnQ0FBZ0MsUUFBUSxFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVNLE1BQU0sQ0FBQywrQkFBK0IsQ0FBQyxHQUFXLEVBQUUsUUFBZ0I7UUFDdkUsT0FBTyxVQUFVLEdBQUcsY0FBYyxRQUFRLEVBQUUsQ0FBQztJQUNqRCxDQUFDO0lBRU0sTUFBTSxDQUFDLDRCQUE0QixDQUFDLEdBQVcsRUFBRSxNQUFjO1FBQ2xFLE9BQU8sVUFBVSxHQUFHLFlBQVksTUFBTSxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVNLE1BQU0sQ0FBQyx1QkFBdUIsQ0FBQyxLQUFvQyxFQUFFLElBQWE7UUFDckYsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUNSLE9BQU87U0FDVjtRQUVELE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixLQUFLLE1BQU0sR0FBRyxJQUFJLEtBQUssRUFBRTtZQUNyQixJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsRUFBRTtnQkFDNUIsU0FBUzthQUNaO1lBRUQsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQy9CLElBQUksT0FBTyxLQUFLLEtBQUssV0FBVyxFQUFFO2dCQUM3QixLQUFhLENBQUMsR0FBRyxDQUFDLEdBQUcsS0FBSyxDQUFDO2FBQy9CO1NBQ0o7UUFFRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0NBQ0o7QUE1Q0Qsa0NBNENDIiwiZmlsZSI6ImxpYi9maWx0ZXIvZmlsdGVyLnV0aWxzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgVHlwZSB9IGZyb20gXCJAbmVzdGpzL2NvbW1vblwiO1xuaW1wb3J0IHsgV2hlcmVPcHRpb25zIH0gZnJvbSBcInNlcXVlbGl6ZVwiO1xuaW1wb3J0IHsgSW5jbHVkZVdoZXJlTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2luY2x1ZGUubW9kZWxcIjtcbmltcG9ydCB7IEJhc2VGaWx0ZXIgfSBmcm9tIFwiLi9iYXNlLWZpbHRlclwiO1xuXG5leHBvcnQgY2xhc3MgRmlsdGVyVXRpbHMge1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0UHJvdmlkZXJUb2tlbihmaWx0ZXI6IFR5cGU8QmFzZUZpbHRlcjxhbnk+Pik6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgJHtmaWx0ZXIubmFtZX1TZXJ2aWNlYDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEZpbHRlclRyYW5zbGF0aW9uS2V5KGtleTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBmaWx0ZXIuJHtrZXl9Lm5hbWVgO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0R3JvdXBUcmFuc2xhdGlvbktleShncm91cDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBkYXRhX2ZpbHRlci5maWx0ZXIuZ3JvdXBzLiR7Z3JvdXB9YDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldE9wZXJhdG9yVHJhbnNsYXRpb25LZXkob3BlcmF0b3I6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgZGF0YV9maWx0ZXIuZmlsdGVyLm9wZXJhdG9ycy4ke29wZXJhdG9yfWA7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRDdXN0b21PcGVyYXRvclRyYW5zbGF0aW9uS2V5KGtleTogc3RyaW5nLCBvcGVyYXRvcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGBmaWx0ZXIuJHtrZXl9Lm9wZXJhdG9ycy4ke29wZXJhdG9yfWA7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRSYWRpb09wdGlvblRyYW5zbGF0aW9uS2V5KGtleTogc3RyaW5nLCBvcHRpb246IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBgZmlsdGVyLiR7a2V5fS5vcHRpb25zLiR7b3B0aW9ufWA7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZW5lcmF0ZVdoZXJlQ29uZGl0aW9ucyhtb2RlbDogSW5jbHVkZVdoZXJlTW9kZWwgfCB1bmRlZmluZWQsIGRhdGE/OiBvYmplY3QpOiBXaGVyZU9wdGlvbnMgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIW1vZGVsKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3aGVyZSA9IHt9O1xuICAgICAgICBmb3IgKGNvbnN0IGtleSBpbiBtb2RlbCkge1xuICAgICAgICAgICAgaWYgKCFtb2RlbC5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gbW9kZWxba2V5XShkYXRhKTtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdmFsdWUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICAod2hlcmUgYXMgYW55KVtrZXldID0gdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgfVxufVxuIl19
|