@recursyve/nestjs-data-filter 8.5.4 → 8.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/filter/filters/filter.d.ts +3 -4
- package/lib/filter/filters/filter.js +5 -5
- package/lib/filter/filters/radio.filter.d.ts +2 -2
- package/lib/filter/filters/radio.filter.js +2 -2
- package/lib/filter/index.d.ts +0 -1
- package/lib/filter/index.js +1 -2
- package/lib/filter/models/query.model.d.ts +1 -1
- package/lib/filter/models/query.model.js +1 -1
- package/package.json +6 -6
- package/lib/filter/filters/json-array.filter.d.ts +0 -16
- package/lib/filter/filters/json-array.filter.js +0 -58
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
import { WhereOptions } from "sequelize";
|
|
2
|
-
import { DataFilterUserModel
|
|
2
|
+
import { DataFilterUserModel } from "../../models/user.model";
|
|
3
3
|
import { TranslateAdapter } from "../../adapters/translate.adapter";
|
|
4
4
|
import { IncludeWhereModel } from "../../models/include.model";
|
|
5
5
|
import { FilterBaseConfigurationModel } from "../models/filter-configuration.model";
|
|
6
|
-
import { QueryModel, QueryRuleModel } from "../models/query.model";
|
|
7
|
-
import { CustomOperator, FilterOperators } from "../operators";
|
|
6
|
+
import { QueryModel, QueryRuleModel, Condition } from "../models/query.model";
|
|
7
|
+
import { CustomOperator, FilterOperators, FilterOperatorTypes } from "../operators";
|
|
8
8
|
import { FilterType } from "../type";
|
|
9
|
-
export declare type Condition = "and" | "or";
|
|
10
9
|
export interface FilterConditionRule {
|
|
11
10
|
key: string;
|
|
12
11
|
path?: string;
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Filter = void 0;
|
|
4
4
|
const sequelize_1 = require("sequelize");
|
|
5
|
-
const __1 = require("../..");
|
|
6
5
|
const sequelize_utils_1 = require("../../sequelize.utils");
|
|
7
6
|
const filter_utils_1 = require("../filter.utils");
|
|
7
|
+
const operators_1 = require("../operators");
|
|
8
8
|
class Filter {
|
|
9
9
|
constructor(definition) {
|
|
10
10
|
this._type = "filter";
|
|
@@ -120,7 +120,7 @@ class Filter {
|
|
|
120
120
|
const c = rule;
|
|
121
121
|
if (c.condition) {
|
|
122
122
|
const conditions = [];
|
|
123
|
-
options.push(c.condition === "and" ? { [sequelize_1.Op.and]: conditions } : { [sequelize_1.Op.or]:
|
|
123
|
+
options.push(c.condition === "and" ? { [sequelize_1.Op.and]: conditions } : { [sequelize_1.Op.or]: conditions });
|
|
124
124
|
this.generateRuleWhereOptions(c, conditions, parentRule);
|
|
125
125
|
continue;
|
|
126
126
|
}
|
|
@@ -201,12 +201,12 @@ class Filter {
|
|
|
201
201
|
}
|
|
202
202
|
transformForJsonArray(rule, name) {
|
|
203
203
|
const colName = this.path ? sequelize_1.Sequelize.col(name) : sequelize_1.Sequelize.literal(name);
|
|
204
|
-
if (rule.operation ===
|
|
204
|
+
if (rule.operation === operators_1.FilterOperatorTypes.Contains || rule.operation === operators_1.FilterOperatorTypes.NotContains) {
|
|
205
205
|
/**
|
|
206
206
|
* We override the rule to use an equal or not equal with a JSON_CONTAINS function
|
|
207
207
|
*/
|
|
208
208
|
const newRule = {
|
|
209
|
-
operation: rule.operation ===
|
|
209
|
+
operation: rule.operation === operators_1.FilterOperatorTypes.Contains ? operators_1.FilterOperatorTypes.Equal : operators_1.FilterOperatorTypes.NotEqual,
|
|
210
210
|
value: true
|
|
211
211
|
};
|
|
212
212
|
const value = typeof rule.value === "string" ? `"${rule.value}"` : rule.value;
|
|
@@ -228,4 +228,4 @@ class Filter {
|
|
|
228
228
|
}
|
|
229
229
|
exports.Filter = Filter;
|
|
230
230
|
|
|
231
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVycy9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQThGO0FBQzlGLDZCQUFrSDtBQUdsSCwyREFBdUQ7QUFDdkQsa0RBQThDO0FBZ0U5QyxNQUFzQixNQUFNO0lBMEJ4QixZQUFzQixVQUFpQztRQXpCL0MsVUFBSyxHQUFHLFFBQVEsQ0FBQztRQW1CbEIsYUFBUSxHQUFHLElBQUksQ0FBQztRQU9uQixJQUFJLFVBQVUsRUFBRTtZQUNaLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQXpCRCxJQUFXLGdCQUFnQixDQUFDLGdCQUFrQztRQUMxRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7SUFDOUMsQ0FBQztJQWVNLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBNEI7UUFDL0MsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFRTSxZQUFZLENBQUMsR0FBRyxRQUFrRDtRQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxlQUFlLENBQUMsR0FBRyxRQUFrRDtRQUN4RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFlBQVksQ0FBQyxHQUFHLFFBQWtEO1FBQ3JFLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxD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Q0FBQyxxQkFBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUUsTUFBTSxLQUFLLEdBQUcsZ0NBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2hCLE9BQU8scUJBQVMsQ0FBQyxLQUFLLENBQUMscUJBQVMsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQWtCLENBQUMsQ0FBQztTQUNyRztRQUVELE9BQU8scUJBQVMsQ0FBQyxLQUFLLENBQUMscUJBQVMsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEtBQWtCLENBQUMsQ0FBQztJQUN0RixDQUFDO0NBQ0o7QUExUkQsd0JBMFJDIiwiZmlsZSI6ImxpYi9maWx0ZXIvZmlsdGVycy9maWx0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmbiwgTG9naWNUeXBlLCBPcCwgU2VxdWVsaXplLCB3aGVyZSwgV2hlcmVPcGVyYXRvcnMsIFdoZXJlT3B0aW9ucyB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IERhdGFGaWx0ZXJVc2VyTW9kZWwsIEZpbHRlck9wZXJhdG9yVHlwZXMsIFNlbGVjdEZpbHRlckdldFZhbHVlc09wdGlvbnMsIFNlbGVjdEZpbHRlclZhbHVlIH0gZnJvbSBcIi4uLy4uXCI7XG5pbXBvcnQgeyBUcmFuc2xhdGVBZGFwdGVyIH0gZnJvbSBcIi4uLy4uL2FkYXB0ZXJzL3RyYW5zbGF0ZS5hZGFwdGVyXCI7XG5pbXBvcnQgeyBJbmNsdWRlV2hlcmVNb2RlbCB9IGZyb20gXCIuLi8uLi9tb2RlbHMvaW5jbHVkZS5tb2RlbFwiO1xuaW1wb3J0IHsgU2VxdWVsaXplVXRpbHMgfSBmcm9tIFwiLi4vLi4vc2VxdWVsaXplLnV0aWxzXCI7XG5pbXBvcnQgeyBGaWx0ZXJVdGlscyB9IGZyb20gXCIuLi9maWx0ZXIudXRpbHNcIjtcbmltcG9ydCB7IEZpbHRlckJhc2VDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2ZpbHRlci1jb25maWd1cmF0aW9uLm1vZGVsXCI7XG5pbXBvcnQgeyBRdWVyeU1vZGVsLCBRdWVyeVJ1bGVNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvcXVlcnkubW9kZWxcIjtcbmltcG9ydCB7IFJ1bGVNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvcnVsZS5tb2RlbFwiO1xuaW1wb3J0IHsgQ3VzdG9tT3BlcmF0b3IsIEZpbHRlck9wZXJhdG9ycyB9IGZyb20gXCIuLi9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tIFwiLi4vdHlwZVwiO1xuXG5leHBvcnQgdHlwZSBDb25kaXRpb24gPSBcImFuZFwiIHwgXCJvclwiO1xuXG4vLyBUT0RPOiBEZXByZWNhdGUga2V5IHRvIHVzZSBhdHRyaWJ1dGUgaW5zdGVhZCB0byBiZSBjb25zaXN0YW50IHdpdGggdGhlIEJhc2VGaWx0ZXJEZWZpbml0aW9uXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckNvbmRpdGlvblJ1bGUge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgb3BlcmF0aW9uOiBGaWx0ZXJPcGVyYXRvcnM7XG4gICAgdmFsdWU6ICh1bmtub3duIHwgdW5rbm93bltdKSB8ICgodmFsdWU6IHVua25vd24gfCB1bmtub3duW10pID0+IHVua25vd24gfCB1bmtub3duW10pXG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyQ29uZGl0aW9uIHtcbiAgICBjb25kaXRpb246IENvbmRpdGlvbjtcbiAgICBydWxlczogKEZpbHRlckNvbmRpdGlvblJ1bGUgfCBGaWx0ZXJDb25kaXRpb24pW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkNvbmZpZyB7XG4gICAgdHlwZTogXCJhcnJheVwiIHwgXCJvYmplY3RcIjtcbiAgICBwYXRoPzogc3RyaW5nO1xufVxuXG5leHBvcnQgdHlwZSBQYXRoQ29uZGl0aW9uID0gYm9vbGVhbiB8IHtcbiAgICBbZmlsdGVyOiBzdHJpbmddOiBhbnk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW5hYmxlZENvbmZpZzxVc2VyID0gYW55LCBSZXF1ZXN0ID0gYW55PiB7XG4gICAgdXNlcj86IFVzZXI7XG4gICAgcmVxdWVzdD86IFJlcXVlc3Rcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRmlsdGVyRGVmaW5pdGlvbiB7XG4gICAgYXR0cmlidXRlOiBzdHJpbmc7XG4gICAgcGF0aD86IHN0cmluZztcbiAgICBoYXZpbmc/OiBhbnk7XG4gICAgcGFyYW5vaWQ/OiBib29sZWFuO1xuICAgIGNvbmRpdGlvbj86IEZpbHRlckNvbmRpdGlvbjtcbiAgICBncm91cD86IHN0cmluZztcbiAgICB3aGVyZT86IEluY2x1ZGVXaGVyZU1vZGVsO1xuICAgIHBhdGhDb25kaXRpb24/OiBQYXRoQ29uZGl0aW9uO1xuICAgIGpzb24/OiBKc29uQ29uZmlnO1xuICAgIGVuYWJsZWQ/OiAoeyB1c2VyLCByZXF1ZXN0IH06IEVuYWJsZWRDb25maWcpID0+IFByb21pc2U8Ym9vbGVhbj47XG5cbiAgICAvKipcbiAgICAgKiBQcml2YXRlIG1lYW5zIHRoYXQgdGhlIGNvbmZpZyB3aWxsIG5vdCBiZSByZXR1cm5lZC5cbiAgICAgKi9cbiAgICBwcml2YXRlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJEZWZpbml0aW9uIGV4dGVuZHMgQmFzZUZpbHRlckRlZmluaXRpb24ge1xuICAgIHR5cGU6IEZpbHRlclR5cGU7XG4gICAgb3BlcmF0b3JzOiAoRmlsdGVyT3BlcmF0b3JUeXBlcyB8IEN1c3RvbU9wZXJhdG9yKVtdO1xuXG4gICAgZ2V0Q29uZmlnPFJlcXVlc3Q+KGtleTogc3RyaW5nLCByZXE6IFJlcXVlc3QsIHVzZXI/OiBEYXRhRmlsdGVyVXNlck1vZGVsKTogUHJvbWlzZTxGaWx0ZXJCYXNlQ29uZmlndXJhdGlvbk1vZGVsPjtcbiAgICBnZXRXaGVyZU9wdGlvbnMocnVsZTogUXVlcnlSdWxlTW9kZWwpOiBQcm9taXNlPFdoZXJlT3B0aW9ucz47XG4gICAgZ2V0SGF2aW5nT3B0aW9ucyhydWxlOiBRdWVyeVJ1bGVNb2RlbCk6IFByb21pc2U8V2hlcmVPcHRpb25zPjtcbiAgICB1c2VQYXRoQ29uZGl0aW9uKHF1ZXJ5OiBRdWVyeU1vZGVsKTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZpbHRlciBpbXBsZW1lbnRzIEZpbHRlckRlZmluaXRpb24ge1xuICAgIHByaXZhdGUgX3R5cGUgPSBcImZpbHRlclwiO1xuXG4gICAgcHJvdGVjdGVkIF90cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVBZGFwdGVyO1xuXG4gICAgcHVibGljIHNldCB0cmFuc2xhdGVTZXJ2aWNlKHRyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZUFkYXB0ZXIpIHtcbiAgICAgICAgdGhpcy5fdHJhbnNsYXRlU2VydmljZSA9IHRyYW5zbGF0ZVNlcnZpY2U7XG4gICAgfVxuXG4gICAgcHVibGljIHR5cGU6IEZpbHRlclR5cGU7XG4gICAgcHVibGljIG9wZXJhdG9yczogKEZpbHRlck9wZXJhdG9yVHlwZXMgfCBDdXN0b21PcGVyYXRvcilbXTtcbiAgICBwdWJsaWMgZ3JvdXA6IHN0cmluZztcbiAgICBwdWJsaWMgYXR0cmlidXRlOiBzdHJpbmc7XG4gICAgcHVibGljIGhhdmluZz86IGFueTtcbiAgICBwdWJsaWMgcGF0aD86IHN0cmluZztcbiAgICBwdWJsaWMgY29uZGl0aW9uPzogRmlsdGVyQ29uZGl0aW9uO1xuICAgIHB1YmxpYyBwYXRoQ29uZGl0aW9uPzogUGF0aENvbmRpdGlvbjtcbiAgICBwdWJsaWMganNvbj86IEpzb25Db25maWc7XG4gICAgcHVibGljIHByaXZhdGU/OiBib29sZWFuO1xuICAgIHB1YmxpYyBlbmFibGVkPzogKHsgdXNlciwgcmVxdWVzdCB9OiBFbmFibGVkQ29uZmlnKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuICAgIHB1YmxpYyBwYXJhbm9pZCA9IHRydWU7XG5cbiAgICBwdWJsaWMgc3RhdGljIHZhbGlkYXRlKGRlZmluaXRpb246IEZpbHRlckRlZmluaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb25bXCJfdHlwZVwiXSA9PT0gXCJmaWx0ZXJcIjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoZGVmaW5pdGlvbj86IEJhc2VGaWx0ZXJEZWZpbml0aW9uKSB7XG4gICAgICAgIGlmIChkZWZpbml0aW9uKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGRlZmluaXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZE9wZXJhdG9ycyguLi5vcGVyYXRvcjogKEZpbHRlck9wZXJhdG9yVHlwZXMgfCBDdXN0b21PcGVyYXRvcilbXSk6IEZpbHRlciB7XG4gICAgICAgIHRoaXMub3BlcmF0b3JzLnB1c2goLi4ub3BlcmF0b3IpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlT3BlcmF0b3JzKC4uLm9wZXJhdG9yOiAoRmlsdGVyT3BlcmF0b3JUeXBlcyB8IEN1c3RvbU9wZXJhdG9yKVtdKTogRmlsdGVyIHtcbiAgICAgICAgdGhpcy5vcGVyYXRvcnMgPSB0aGlzLm9wZXJhdG9ycy5maWx0ZXIoeCA9PiAhb3BlcmF0b3Iuc29tZShvcCA9PiBvcCA9PT0geCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0T3BlcmF0b3JzKC4uLm9wZXJhdG9yOiAoRmlsdGVyT3BlcmF0b3JUeXBlcyB8IEN1c3RvbU9wZXJhdG9yKVtdKTogRmlsdGVyIHtcbiAgICAgICAgdGhpcy5vcGVyYXRvcnMgPSBbLi4ub3BlcmF0b3JdO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29uZmlnPFJlcXVlc3QgPSBhbnk+KGtleTogc3RyaW5nLCByZXF1ZXN0OiBSZXF1ZXN0LCB1c2VyPzogRGF0YUZpbHRlclVzZXJNb2RlbCk6IFByb21pc2U8RmlsdGVyQmFzZUNvbmZpZ3VyYXRpb25Nb2RlbD4ge1xuICAgICAgICBpZiAodGhpcy5wcml2YXRlKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZWQgJiYgIShhd2FpdCB0aGlzLmVuYWJsZWQoeyB1c2VyLCByZXF1ZXN0IH0pKSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBvcGVyYXRvcnM6IGF3YWl0IFByb21pc2UuYWxsKHRoaXMub3BlcmF0b3JzLm1hcChhc3luYyB4ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYXdhaXQgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXRUcmFuc2xhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJVdGlscy5nZXRPcGVyYXRvclRyYW5zbGF0aW9uS2V5KHgpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHgubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYXdhaXQgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXRUcmFuc2xhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/Lmxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVXRpbHMuZ2V0Q3VzdG9tT3BlcmF0b3JUcmFuc2xhdGlvbktleShrZXksIHgubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSlcbiAgICAgICAgfSBhcyBGaWx0ZXJCYXNlQ29uZmlndXJhdGlvbk1vZGVsO1xuXG4gICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICAgICAgICBjb25maWcuZ3JvdXAgPSB7XG4gICAgICAgICAgICAgICAga2V5OiB0aGlzLmdyb3VwLFxuICAgICAgICAgICAgICAgIG5hbWU6IGF3YWl0IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24odXNlcj8ubGFuZ3VhZ2UsIEZpbHRlclV0aWxzLmdldEdyb3VwVHJhbnNsYXRpb25LZXkodGhpcy5ncm91cCkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0V2hlcmVPcHRpb25zKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsLCBuYW1lPzogc3RyaW5nKTogUHJvbWlzZTxXaGVyZU9wdGlvbnM+IHtcbiAgICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgICAgICBuYW1lID0gdGhpcy5wYXRoID8gU2VxdWVsaXplVXRpbHMuZ2V0QXR0cmlidXRlRnVsbE5hbWUodGhpcy5hdHRyaWJ1dGUsIHRoaXMucGF0aCkgOiB0aGlzLmF0dHJpYnV0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wID0gdGhpcy5vcGVyYXRvcnMuZmluZCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHgubmFtZSA9PT0gcnVsZS5vcGVyYXRpb247XG4gICAgICAgIH0pIGFzIEN1c3RvbU9wZXJhdG9yO1xuICAgICAgICBpZiAob3A/Lm9wZXJhdG9yKSB7XG4gICAgICAgICAgICBydWxlLm9wZXJhdGlvbiA9IG9wLm9wZXJhdG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgd2hlcmUgPSAocnVsZT8udmFsdWUgPT09IHVuZGVmaW5lZCB8fCB0aGlzLmhhdmluZykgP1xuICAgICAgICAgICAgdGhpcy5nZXRDb25kaXRpb25XaGVyZU9wdGlvbnMobnVsbCwgcnVsZSkgOlxuICAgICAgICAgICAgdGhpcy5nZXRDb25kaXRpb25XaGVyZU9wdGlvbnModGhpcy50cmFuc2Zvcm1Db25kaXRpb24ocnVsZSwgbmFtZSksIHJ1bGUpO1xuXG4gICAgICAgIHJldHVybiB0aGlzLmdldE9wZXJhdG9yV2hlcmVPcHRpb25zKHJ1bGUub3BlcmF0aW9uLCB3aGVyZSwgcnVsZS52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEhhdmluZ09wdGlvbnMocnVsZTogUXVlcnlSdWxlTW9kZWwpOiBQcm9taXNlPFdoZXJlT3B0aW9ucz4ge1xuICAgICAgICBpZiAoIXRoaXMuaGF2aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy5nZXRPcGVyYXRvckhhdmluZ09wdGlvbnMocnVsZS5vcGVyYXRpb24sIG51bGwpO1xuICAgICAgICB9XG5cbiAgICAgICAgbGV0IG9wdGlvbnM6IFdoZXJlT3B0aW9ucztcbiAgICAgICAgaWYgKHRoaXMuaGF2aW5nLmF0dHJpYnV0ZSkge1xuICAgICAgICAgICAgb3B0aW9ucyA9IHRoaXMuaGF2aW5nO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY29uc3QgdmFsdWUgPSBTZXF1ZWxpemVVdGlscy5nZW5lcmF0ZVdoZXJlVmFsdWUocnVsZSkgYXMgV2hlcmVPcGVyYXRvcnM7XG4gICAgICAgICAgICBpZiAodmFsdWUgIT09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgICAgICAgb3B0aW9ucyA9IHdoZXJlKHRoaXMuaGF2aW5nLCB2YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcGVyYXRvckhhdmluZ09wdGlvbnMocnVsZS5vcGVyYXRpb24sIG9wdGlvbnMpO1xuICAgIH1cblxuICAgIHB1YmxpYyB1c2VQYXRoQ29uZGl0aW9uKHF1ZXJ5OiBRdWVyeU1vZGVsKTogYm9vbGVhbiB7XG4gICAgICAgIGlmICghdGhpcy5wYXRoQ29uZGl0aW9uIHx8IHR5cGVvZiB0aGlzLnBhdGhDb25kaXRpb24gPT09IFwiYm9vbGVhblwiKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBrZXlzID0gT2JqZWN0LmtleXModGhpcy5wYXRoQ29uZGl0aW9uKTtcbiAgICAgICAgY29uc3QgcnVsZXMgPSB0aGlzLmdldFJ1bGVGcm9tS2V5cyhxdWVyeSwga2V5cyk7XG4gICAgICAgIGlmIChrZXlzLmxlbmd0aCAhPT0gcnVsZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcnVsZXMuZXZlcnkoeCA9PiB0aGlzLnBhdGhDb25kaXRpb25beC5pZF0gPT09IHgudmFsdWUpO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRDb25kaXRpb25XaGVyZU9wdGlvbnMod2hlcmU6IFdoZXJlT3B0aW9ucywgcnVsZTogUXVlcnlSdWxlTW9kZWwpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBpZiAoIXRoaXMuY29uZGl0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25kaXRpb25zID0gd2hlcmUgPyBbd2hlcmVdIDogW107XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuY29uZGl0aW9uLmNvbmRpdGlvbiA9PT0gXCJhbmRcIiA/IHsgW09wLmFuZF06IGNvbmRpdGlvbnMgfSA6IHsgW09wLm9yXTogY29uZGl0aW9ucyB9O1xuICAgICAgICB0aGlzLmdlbmVyYXRlUnVsZVdoZXJlT3B0aW9ucyh0aGlzLmNvbmRpdGlvbiwgY29uZGl0aW9ucywgcnVsZSk7XG4gICAgICAgIHJldHVybiBvcHRpb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlUnVsZVdoZXJlT3B0aW9ucyhmaWx0ZXI6IEZpbHRlckNvbmRpdGlvbiwgb3B0aW9uczogV2hlcmVPcHRpb25zW10sIHBhcmVudFJ1bGU6IFF1ZXJ5UnVsZU1vZGVsKSB7XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBmaWx0ZXIucnVsZXMpIHtcbiAgICAgICAgICAgIGNvbnN0IGMgPSBydWxlIGFzIEZpbHRlckNvbmRpdGlvbjtcbiAgICAgICAgICAgIGlmIChjLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgIGNvbnN0IGNvbmRpdGlvbnMgPSBbXTtcbiAgICAgICAgICAgICAgICBvcHRpb25zLnB1c2goYy5jb25kaXRpb24gPT09IFwiYW5kXCIgPyB7IFtPcC5hbmRdOiBjb25kaXRpb25zIH0gOiB7IFtPcC5vcl06IFtdIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVSdWxlV2hlcmVPcHRpb25zKGMsIGNvbmRpdGlvbnMsIHBhcmVudFJ1bGUpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgciA9IHJ1bGUgYXMgRmlsdGVyQ29uZGl0aW9uUnVsZTtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSByLnBhdGggPyBTZXF1ZWxpemVVdGlscy5nZXRBdHRyaWJ1dGVGdWxsTmFtZShyLmtleSwgci5wYXRoKSA6IHIua2V5O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByLnZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5yLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogci52YWx1ZShwYXJlbnRSdWxlLnZhbHVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgW25hbWVdOiBTZXF1ZWxpemVVdGlscy5nZW5lcmF0ZVdoZXJlVmFsdWUociBhcyBSdWxlTW9kZWwpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRPcGVyYXRvckhhdmluZ09wdGlvbnMob3BlcmF0b3I6IEZpbHRlck9wZXJhdG9ycywgd2hlcmU6IFdoZXJlT3B0aW9ucyk6IFdoZXJlT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IG9wID0gdGhpcy5vcGVyYXRvcnMuZmluZCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHgubmFtZSA9PT0gb3BlcmF0b3I7XG4gICAgICAgIH0pIGFzIEN1c3RvbU9wZXJhdG9yO1xuICAgICAgICBpZiAoIW9wKSB7XG4gICAgICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW9wLmhhdmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHdoZXJlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdoZXJlXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIFtPcC5hbmRdOiBbd2hlcmUsIG9wLmhhdmluZ11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBvcC5oYXZpbmc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldE9wZXJhdG9yV2hlcmVPcHRpb25zKG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcnMsIHdoZXJlOiBXaGVyZU9wdGlvbnMsIHZhbHVlOiBhbnkpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBjb25zdCBvcCA9IHRoaXMub3BlcmF0b3JzLmZpbmQoeCA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB4Lm5hbWUgPT09IG9wZXJhdG9yO1xuICAgICAgICB9KSBhcyBDdXN0b21PcGVyYXRvcjtcbiAgICAgICAgaWYgKCFvcCkge1xuICAgICAgICAgICAgcmV0dXJuIHdoZXJlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcC53aGVyZSkge1xuICAgICAgICAgICAgcmV0dXJuIHdoZXJlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3BXaGVyZSA9IHR5cGVvZiBvcC53aGVyZSA9PT0gXCJmdW5jdGlvblwiID8gb3Aud2hlcmUodmFsdWUpIDogb3Aud2hlcmU7XG4gICAgICAgIHJldHVybiB3aGVyZVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBbT3AuYW5kXTogW3doZXJlLCBvcFdoZXJlXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IG9wV2hlcmU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSdWxlRnJvbUtleXMocXVlcnk6IFF1ZXJ5TW9kZWwsIGtleXM6IHN0cmluZ1tdKTogUXVlcnlSdWxlTW9kZWxbXSB7XG4gICAgICAgIGNvbnN0IHJ1bGVzOiBRdWVyeVJ1bGVNb2RlbFtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBxdWVyeS5ydWxlcykge1xuICAgICAgICAgICAgaWYgKChydWxlIGFzIFF1ZXJ5TW9kZWwpLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgIHJ1bGVzLnB1c2goLi4udGhpcy5nZXRSdWxlRnJvbUtleXMocnVsZSBhcyBRdWVyeU1vZGVsLCBrZXlzKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGtleXMuc29tZSh4ID0+IChydWxlIGFzIFF1ZXJ5UnVsZU1vZGVsKS5pZCA9PT0geCkpIHtcbiAgICAgICAgICAgICAgICBydWxlcy5wdXNoKHJ1bGUgYXMgUXVlcnlSdWxlTW9kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJ1bGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHJhbnNmb3JtQ29uZGl0aW9uKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsLCBuYW1lOiBzdHJpbmcpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBpZiAoIXRoaXMuanNvbikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBbbmFtZV06IFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVWYWx1ZShydWxlKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmpzb24udHlwZSA9PT0gXCJhcnJheVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1Gb3JKc29uQXJyYXkocnVsZSwgbmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1Gb3JKc29uT2JqZWN0KHJ1bGUsIG5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHJhbnNmb3JtRm9ySnNvbkFycmF5KHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsLCBuYW1lOiBzdHJpbmcpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBjb25zdCBjb2xOYW1lID0gdGhpcy5wYXRoID8gU2VxdWVsaXplLmNvbChuYW1lKSA6IFNlcXVlbGl6ZS5saXRlcmFsKG5hbWUpO1xuICAgICAgICBpZiAocnVsZS5vcGVyYXRpb24gPT09IEZpbHRlck9wZXJhdG9yVHlwZXMuQ29udGFpbnMgfHwgcnVsZS5vcGVyYXRpb24gPT09IEZpbHRlck9wZXJhdG9yVHlwZXMuTm90Q29udGFpbnMpIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2Ugb3ZlcnJpZGUgdGhlIHJ1bGUgdG8gdXNlIGFuIGVxdWFsIG9yIG5vdCBlcXVhbCB3aXRoIGEgSlNPTl9DT05UQUlOUyBmdW5jdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb25zdCBuZXdSdWxlID0ge1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogcnVsZS5vcGVyYXRpb24gPT09IEZpbHRlck9wZXJhdG9yVHlwZXMuQ29udGFpbnMgPyBGaWx0ZXJPcGVyYXRvclR5cGVzLkVxdWFsIDogRmlsdGVyT3BlcmF0b3JUeXBlcy5Ob3RFcXVhbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiBydWxlLnZhbHVlID09PSBcInN0cmluZ1wiID8gYFwiJHtydWxlLnZhbHVlfVwiYCA6IHJ1bGUudmFsdWU7XG4gICAgICAgICAgICBpZiAodGhpcy5qc29uLnBhdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2hlcmUoZm4oXCJKU09OX0NPTlRBSU5TXCIsIGNvbE5hbWUsIHZhbHVlLCB0aGlzLmpzb24ucGF0aCksIFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVWYWx1ZShuZXdSdWxlIGFzIFJ1bGVNb2RlbCkgYXMgTG9naWNUeXBlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdoZXJlKGZuKFwiSlNPTl9DT05UQUlOU1wiLCBjb2xOYW1lLCB2YWx1ZSksIFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVWYWx1ZShuZXdSdWxlIGFzIFJ1bGVNb2RlbCkgYXMgTG9naWNUeXBlKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFuc2Zvcm1Gb3JKc29uT2JqZWN0KHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsLCBuYW1lOiBzdHJpbmcpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBjb25zdCBjb2xOYW1lID0gdGhpcy5wYXRoID8gU2VxdWVsaXplLmNvbChuYW1lKSA6IFNlcXVlbGl6ZS5saXRlcmFsKG5hbWUpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVWYWx1ZShydWxlKTtcbiAgICAgICAgaWYgKHRoaXMuanNvbi5wYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gU2VxdWVsaXplLndoZXJlKFNlcXVlbGl6ZS5mbihcIkpTT05fRVhUUkFDVFwiLCBjb2xOYW1lLCB0aGlzLmpzb24ucGF0aCksIHZhbHVlIGFzIExvZ2ljVHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU2VxdWVsaXplLndoZXJlKFNlcXVlbGl6ZS5mbihcIkpTT05fRVhUUkFDVFwiLCBjb2xOYW1lKSwgdmFsdWUgYXMgTG9naWNUeXBlKTtcbiAgICB9XG59XG4iXX0=
|
|
231
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVycy9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQThGO0FBSTlGLDJEQUF1RDtBQUN2RCxrREFBOEM7QUFJOUMsNENBQW9GO0FBMERwRixNQUFzQixNQUFNO0lBMEJ4QixZQUFzQixVQUFpQztRQXpCL0MsVUFBSyxHQUFHLFFBQVEsQ0FBQztRQW1CbEIsYUFBUSxHQUFHLElBQUksQ0FBQztRQU9uQixJQUFJLFVBQVUsRUFBRTtZQUNaLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQXpCRCxJQUFXLGdCQUFnQixDQUFDLGdCQUFrQztRQUMxRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7SUFDOUMsQ0FBQztJQWVNLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBNEI7UUFDL0MsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFRTSxZQUFZLENBQUMsR0FBRyxRQUFrRDtRQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxlQUFlLENBQUMsR0FBRyxRQUFrRDtRQUN4RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFlBQVksQ0FBQyxHQUFHLFFBQWtEO1FBQ3JFLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxD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Q0FBQyxxQkFBUyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMscUJBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDMUUsTUFBTSxLQUFLLEdBQUcsZ0NBQWMsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2hCLE9BQU8scUJBQVMsQ0FBQyxLQUFLLENBQUMscUJBQVMsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQWtCLENBQUMsQ0FBQztTQUNyRztRQUVELE9BQU8scUJBQVMsQ0FBQyxLQUFLLENBQUMscUJBQVMsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEtBQWtCLENBQUMsQ0FBQztJQUN0RixDQUFDO0NBQ0o7QUExUkQsd0JBMFJDIiwiZmlsZSI6ImxpYi9maWx0ZXIvZmlsdGVycy9maWx0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmbiwgTG9naWNUeXBlLCBPcCwgU2VxdWVsaXplLCB3aGVyZSwgV2hlcmVPcGVyYXRvcnMsIFdoZXJlT3B0aW9ucyB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IERhdGFGaWx0ZXJVc2VyTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3VzZXIubW9kZWxcIjtcbmltcG9ydCB7IFRyYW5zbGF0ZUFkYXB0ZXIgfSBmcm9tIFwiLi4vLi4vYWRhcHRlcnMvdHJhbnNsYXRlLmFkYXB0ZXJcIjtcbmltcG9ydCB7IEluY2x1ZGVXaGVyZU1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9pbmNsdWRlLm1vZGVsXCI7XG5pbXBvcnQgeyBTZXF1ZWxpemVVdGlscyB9IGZyb20gXCIuLi8uLi9zZXF1ZWxpemUudXRpbHNcIjtcbmltcG9ydCB7IEZpbHRlclV0aWxzIH0gZnJvbSBcIi4uL2ZpbHRlci51dGlsc1wiO1xuaW1wb3J0IHsgRmlsdGVyQmFzZUNvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvZmlsdGVyLWNvbmZpZ3VyYXRpb24ubW9kZWxcIjtcbmltcG9ydCB7IFF1ZXJ5TW9kZWwsIFF1ZXJ5UnVsZU1vZGVsLCBDb25kaXRpb24gfSBmcm9tIFwiLi4vbW9kZWxzL3F1ZXJ5Lm1vZGVsXCI7XG5pbXBvcnQgeyBSdWxlTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL3J1bGUubW9kZWxcIjtcbmltcG9ydCB7IEN1c3RvbU9wZXJhdG9yLCBGaWx0ZXJPcGVyYXRvcnMsIEZpbHRlck9wZXJhdG9yVHlwZXMgfSBmcm9tIFwiLi4vb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBGaWx0ZXJUeXBlIH0gZnJvbSBcIi4uL3R5cGVcIjtcblxuLy8gVE9ETzogRGVwcmVjYXRlIGtleSB0byB1c2UgYXR0cmlidXRlIGluc3RlYWQgdG8gYmUgY29uc2lzdGVudCB3aXRoIHRoZSBCYXNlRmlsdGVyRGVmaW5pdGlvblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJDb25kaXRpb25SdWxlIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBwYXRoPzogc3RyaW5nO1xuICAgIG9wZXJhdGlvbjogRmlsdGVyT3BlcmF0b3JzO1xuICAgIHZhbHVlOiAodW5rbm93biB8IHVua25vd25bXSkgfCAoKHZhbHVlOiB1bmtub3duIHwgdW5rbm93bltdKSA9PiB1bmtub3duIHwgdW5rbm93bltdKVxufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbHRlckNvbmRpdGlvbiB7XG4gICAgY29uZGl0aW9uOiBDb25kaXRpb247XG4gICAgcnVsZXM6IChGaWx0ZXJDb25kaXRpb25SdWxlIHwgRmlsdGVyQ29uZGl0aW9uKVtdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEpzb25Db25maWcge1xuICAgIHR5cGU6IFwiYXJyYXlcIiB8IFwib2JqZWN0XCI7XG4gICAgcGF0aD86IHN0cmluZztcbn1cblxuZXhwb3J0IHR5cGUgUGF0aENvbmRpdGlvbiA9IGJvb2xlYW4gfCB7XG4gICAgW2ZpbHRlcjogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVuYWJsZWRDb25maWc8VXNlciA9IGFueSwgUmVxdWVzdCA9IGFueT4ge1xuICAgIHVzZXI/OiBVc2VyO1xuICAgIHJlcXVlc3Q/OiBSZXF1ZXN0XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQmFzZUZpbHRlckRlZmluaXRpb24ge1xuICAgIGF0dHJpYnV0ZTogc3RyaW5nO1xuICAgIHBhdGg/OiBzdHJpbmc7XG4gICAgaGF2aW5nPzogYW55O1xuICAgIHBhcmFub2lkPzogYm9vbGVhbjtcbiAgICBjb25kaXRpb24/OiBGaWx0ZXJDb25kaXRpb247XG4gICAgZ3JvdXA/OiBzdHJpbmc7XG4gICAgd2hlcmU/OiBJbmNsdWRlV2hlcmVNb2RlbDtcbiAgICBwYXRoQ29uZGl0aW9uPzogUGF0aENvbmRpdGlvbjtcbiAgICBqc29uPzogSnNvbkNvbmZpZztcbiAgICBlbmFibGVkPzogKHsgdXNlciwgcmVxdWVzdCB9OiBFbmFibGVkQ29uZmlnKSA9PiBQcm9taXNlPGJvb2xlYW4+O1xuXG4gICAgLyoqXG4gICAgICogUHJpdmF0ZSBtZWFucyB0aGF0IHRoZSBjb25maWcgd2lsbCBub3QgYmUgcmV0dXJuZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyRGVmaW5pdGlvbiBleHRlbmRzIEJhc2VGaWx0ZXJEZWZpbml0aW9uIHtcbiAgICB0eXBlOiBGaWx0ZXJUeXBlO1xuICAgIG9wZXJhdG9yczogKEZpbHRlck9wZXJhdG9yVHlwZXMgfCBDdXN0b21PcGVyYXRvcilbXTtcblxuICAgIGdldENvbmZpZzxSZXF1ZXN0PihrZXk6IHN0cmluZywgcmVxOiBSZXF1ZXN0LCB1c2VyPzogRGF0YUZpbHRlclVzZXJNb2RlbCk6IFByb21pc2U8RmlsdGVyQmFzZUNvbmZpZ3VyYXRpb25Nb2RlbD47XG4gICAgZ2V0V2hlcmVPcHRpb25zKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsKTogUHJvbWlzZTxXaGVyZU9wdGlvbnM+O1xuICAgIGdldEhhdmluZ09wdGlvbnMocnVsZTogUXVlcnlSdWxlTW9kZWwpOiBQcm9taXNlPFdoZXJlT3B0aW9ucz47XG4gICAgdXNlUGF0aENvbmRpdGlvbihxdWVyeTogUXVlcnlNb2RlbCk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWx0ZXIgaW1wbGVtZW50cyBGaWx0ZXJEZWZpbml0aW9uIHtcbiAgICBwcml2YXRlIF90eXBlID0gXCJmaWx0ZXJcIjtcblxuICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlQWRhcHRlcjtcblxuICAgIHB1YmxpYyBzZXQgdHJhbnNsYXRlU2VydmljZSh0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVBZGFwdGVyKSB7XG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UgPSB0cmFuc2xhdGVTZXJ2aWNlO1xuICAgIH1cblxuICAgIHB1YmxpYyB0eXBlOiBGaWx0ZXJUeXBlO1xuICAgIHB1YmxpYyBvcGVyYXRvcnM6IChGaWx0ZXJPcGVyYXRvclR5cGVzIHwgQ3VzdG9tT3BlcmF0b3IpW107XG4gICAgcHVibGljIGdyb3VwOiBzdHJpbmc7XG4gICAgcHVibGljIGF0dHJpYnV0ZTogc3RyaW5nO1xuICAgIHB1YmxpYyBoYXZpbmc/OiBhbnk7XG4gICAgcHVibGljIHBhdGg/OiBzdHJpbmc7XG4gICAgcHVibGljIGNvbmRpdGlvbj86IEZpbHRlckNvbmRpdGlvbjtcbiAgICBwdWJsaWMgcGF0aENvbmRpdGlvbj86IFBhdGhDb25kaXRpb247XG4gICAgcHVibGljIGpzb24/OiBKc29uQ29uZmlnO1xuICAgIHB1YmxpYyBwcml2YXRlPzogYm9vbGVhbjtcbiAgICBwdWJsaWMgZW5hYmxlZD86ICh7IHVzZXIsIHJlcXVlc3QgfTogRW5hYmxlZENvbmZpZykgPT4gUHJvbWlzZTxib29sZWFuPjtcbiAgICBwdWJsaWMgcGFyYW5vaWQgPSB0cnVlO1xuXG4gICAgcHVibGljIHN0YXRpYyB2YWxpZGF0ZShkZWZpbml0aW9uOiBGaWx0ZXJEZWZpbml0aW9uKSB7XG4gICAgICAgIHJldHVybiBkZWZpbml0aW9uW1wiX3R5cGVcIl0gPT09IFwiZmlsdGVyXCI7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGRlZmluaXRpb24/OiBCYXNlRmlsdGVyRGVmaW5pdGlvbikge1xuICAgICAgICBpZiAoZGVmaW5pdGlvbikge1xuICAgICAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBkZWZpbml0aW9uKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBhZGRPcGVyYXRvcnMoLi4ub3BlcmF0b3I6IChGaWx0ZXJPcGVyYXRvclR5cGVzIHwgQ3VzdG9tT3BlcmF0b3IpW10pOiBGaWx0ZXIge1xuICAgICAgICB0aGlzLm9wZXJhdG9ycy5wdXNoKC4uLm9wZXJhdG9yKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHJlbW92ZU9wZXJhdG9ycyguLi5vcGVyYXRvcjogKEZpbHRlck9wZXJhdG9yVHlwZXMgfCBDdXN0b21PcGVyYXRvcilbXSk6IEZpbHRlciB7XG4gICAgICAgIHRoaXMub3BlcmF0b3JzID0gdGhpcy5vcGVyYXRvcnMuZmlsdGVyKHggPT4gIW9wZXJhdG9yLnNvbWUob3AgPT4gb3AgPT09IHgpKTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIHNldE9wZXJhdG9ycyguLi5vcGVyYXRvcjogKEZpbHRlck9wZXJhdG9yVHlwZXMgfCBDdXN0b21PcGVyYXRvcilbXSk6IEZpbHRlciB7XG4gICAgICAgIHRoaXMub3BlcmF0b3JzID0gWy4uLm9wZXJhdG9yXTtcbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldENvbmZpZzxSZXF1ZXN0ID0gYW55PihrZXk6IHN0cmluZywgcmVxdWVzdDogUmVxdWVzdCwgdXNlcj86IERhdGFGaWx0ZXJVc2VyTW9kZWwpOiBQcm9taXNlPEZpbHRlckJhc2VDb25maWd1cmF0aW9uTW9kZWw+IHtcbiAgICAgICAgaWYgKHRoaXMucHJpdmF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5lbmFibGVkICYmICEoYXdhaXQgdGhpcy5lbmFibGVkKHsgdXNlciwgcmVxdWVzdCB9KSkpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29uZmlnID0ge1xuICAgICAgICAgICAgdHlwZTogdGhpcy50eXBlLFxuICAgICAgICAgICAgb3BlcmF0b3JzOiBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLm9wZXJhdG9ycy5tYXAoYXN5bmMgeCA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZDogeCxcbiAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6IGF3YWl0IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj8ubGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVXRpbHMuZ2V0T3BlcmF0b3JUcmFuc2xhdGlvbktleSh4KVxuICAgICAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgIGlkOiB4Lm5hbWUsXG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IGF3YWl0IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oXG4gICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclV0aWxzLmdldEN1c3RvbU9wZXJhdG9yVHJhbnNsYXRpb25LZXkoa2V5LCB4Lm5hbWUpXG4gICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgfSkpXG4gICAgICAgIH0gYXMgRmlsdGVyQmFzZUNvbmZpZ3VyYXRpb25Nb2RlbDtcblxuICAgICAgICBpZiAodGhpcy5ncm91cCkge1xuICAgICAgICAgICAgY29uZmlnLmdyb3VwID0ge1xuICAgICAgICAgICAgICAgIGtleTogdGhpcy5ncm91cCxcbiAgICAgICAgICAgICAgICBuYW1lOiBhd2FpdCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKHVzZXI/Lmxhbmd1YWdlLCBGaWx0ZXJVdGlscy5nZXRHcm91cFRyYW5zbGF0aW9uS2V5KHRoaXMuZ3JvdXApKVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjb25maWc7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldFdoZXJlT3B0aW9ucyhydWxlOiBRdWVyeVJ1bGVNb2RlbCwgbmFtZT86IHN0cmluZyk6IFByb21pc2U8V2hlcmVPcHRpb25zPiB7XG4gICAgICAgIGlmICghbmFtZSkge1xuICAgICAgICAgICAgbmFtZSA9IHRoaXMucGF0aCA/IFNlcXVlbGl6ZVV0aWxzLmdldEF0dHJpYnV0ZUZ1bGxOYW1lKHRoaXMuYXR0cmlidXRlLCB0aGlzLnBhdGgpIDogdGhpcy5hdHRyaWJ1dGU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcCA9IHRoaXMub3BlcmF0b3JzLmZpbmQoeCA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB4Lm5hbWUgPT09IHJ1bGUub3BlcmF0aW9uO1xuICAgICAgICB9KSBhcyBDdXN0b21PcGVyYXRvcjtcbiAgICAgICAgaWYgKG9wPy5vcGVyYXRvcikge1xuICAgICAgICAgICAgcnVsZS5vcGVyYXRpb24gPSBvcC5vcGVyYXRvcjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHdoZXJlID0gKHJ1bGU/LnZhbHVlID09PSB1bmRlZmluZWQgfHwgdGhpcy5oYXZpbmcpID9cbiAgICAgICAgICAgIHRoaXMuZ2V0Q29uZGl0aW9uV2hlcmVPcHRpb25zKG51bGwsIHJ1bGUpIDpcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29uZGl0aW9uV2hlcmVPcHRpb25zKHRoaXMudHJhbnNmb3JtQ29uZGl0aW9uKHJ1bGUsIG5hbWUpLCBydWxlKTtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcGVyYXRvcldoZXJlT3B0aW9ucyhydWxlLm9wZXJhdGlvbiwgd2hlcmUsIHJ1bGUudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRIYXZpbmdPcHRpb25zKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsKTogUHJvbWlzZTxXaGVyZU9wdGlvbnM+IHtcbiAgICAgICAgaWYgKCF0aGlzLmhhdmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JIYXZpbmdPcHRpb25zKHJ1bGUub3BlcmF0aW9uLCBudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvcHRpb25zOiBXaGVyZU9wdGlvbnM7XG4gICAgICAgIGlmICh0aGlzLmhhdmluZy5hdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLmhhdmluZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gU2VxdWVsaXplVXRpbHMuZ2VuZXJhdGVXaGVyZVZhbHVlKHJ1bGUpIGFzIFdoZXJlT3BlcmF0b3JzO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB3aGVyZSh0aGlzLmhhdmluZywgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JIYXZpbmdPcHRpb25zKHJ1bGUub3BlcmF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXNlUGF0aENvbmRpdGlvbihxdWVyeTogUXVlcnlNb2RlbCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMucGF0aENvbmRpdGlvbiB8fCB0eXBlb2YgdGhpcy5wYXRoQ29uZGl0aW9uID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucGF0aENvbmRpdGlvbik7XG4gICAgICAgIGNvbnN0IHJ1bGVzID0gdGhpcy5nZXRSdWxlRnJvbUtleXMocXVlcnksIGtleXMpO1xuICAgICAgICBpZiAoa2V5cy5sZW5ndGggIT09IHJ1bGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJ1bGVzLmV2ZXJ5KHggPT4gdGhpcy5wYXRoQ29uZGl0aW9uW3guaWRdID09PSB4LnZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0Q29uZGl0aW9uV2hlcmVPcHRpb25zKHdoZXJlOiBXaGVyZU9wdGlvbnMsIHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsKTogV2hlcmVPcHRpb25zIHtcbiAgICAgICAgaWYgKCF0aGlzLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgcmV0dXJuIHdoZXJlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IHdoZXJlID8gW3doZXJlXSA6IFtdO1xuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLmNvbmRpdGlvbi5jb25kaXRpb24gPT09IFwiYW5kXCIgPyB7IFtPcC5hbmRdOiBjb25kaXRpb25zIH0gOiB7IFtPcC5vcl06IGNvbmRpdGlvbnMgfTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVJ1bGVXaGVyZU9wdGlvbnModGhpcy5jb25kaXRpb24sIGNvbmRpdGlvbnMsIHJ1bGUpO1xuICAgICAgICByZXR1cm4gb3B0aW9uO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZW5lcmF0ZVJ1bGVXaGVyZU9wdGlvbnMoZmlsdGVyOiBGaWx0ZXJDb25kaXRpb24sIG9wdGlvbnM6IFdoZXJlT3B0aW9uc1tdLCBwYXJlbnRSdWxlOiBRdWVyeVJ1bGVNb2RlbCkge1xuICAgICAgICBmb3IgKGNvbnN0IHJ1bGUgb2YgZmlsdGVyLnJ1bGVzKSB7XG4gICAgICAgICAgICBjb25zdCBjID0gcnVsZSBhcyBGaWx0ZXJDb25kaXRpb247XG4gICAgICAgICAgICBpZiAoYy5jb25kaXRpb24pIHtcbiAgICAgICAgICAgICAgICBjb25zdCBjb25kaXRpb25zID0gW107XG4gICAgICAgICAgICAgICAgb3B0aW9ucy5wdXNoKGMuY29uZGl0aW9uID09PSBcImFuZFwiID8geyBbT3AuYW5kXTogY29uZGl0aW9ucyB9IDogeyBbT3Aub3JdOiBjb25kaXRpb25zIH0pO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2VuZXJhdGVSdWxlV2hlcmVPcHRpb25zKGMsIGNvbmRpdGlvbnMsIHBhcmVudFJ1bGUpO1xuICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgciA9IHJ1bGUgYXMgRmlsdGVyQ29uZGl0aW9uUnVsZTtcbiAgICAgICAgICAgIGNvbnN0IG5hbWUgPSByLnBhdGggPyBTZXF1ZWxpemVVdGlscy5nZXRBdHRyaWJ1dGVGdWxsTmFtZShyLmtleSwgci5wYXRoKSA6IHIua2V5O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiByLnZhbHVlID09PSBcImZ1bmN0aW9uXCIpIHtcbiAgICAgICAgICAgICAgICByID0ge1xuICAgICAgICAgICAgICAgICAgICAuLi5yLFxuICAgICAgICAgICAgICAgICAgICB2YWx1ZTogci52YWx1ZShwYXJlbnRSdWxlLnZhbHVlKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgW25hbWVdOiBTZXF1ZWxpemVVdGlscy5nZW5lcmF0ZVdoZXJlVmFsdWUociBhcyBSdWxlTW9kZWwpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRPcGVyYXRvckhhdmluZ09wdGlvbnMob3BlcmF0b3I6IEZpbHRlck9wZXJhdG9ycywgd2hlcmU6IFdoZXJlT3B0aW9ucyk6IFdoZXJlT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IG9wID0gdGhpcy5vcGVyYXRvcnMuZmluZCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHgubmFtZSA9PT0gb3BlcmF0b3I7XG4gICAgICAgIH0pIGFzIEN1c3RvbU9wZXJhdG9yO1xuICAgICAgICBpZiAoIW9wKSB7XG4gICAgICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW9wLmhhdmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHdoZXJlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdoZXJlXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIFtPcC5hbmRdOiBbd2hlcmUsIG9wLmhhdmluZ11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBvcC5oYXZpbmc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldE9wZXJhdG9yV2hlcmVPcHRpb25zKG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcnMsIHdoZXJlOiBXaGVyZU9wdGlvbnMsIHZhbHVlOiBhbnkpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBjb25zdCBvcCA9IHRoaXMub3BlcmF0b3JzLmZpbmQoeCA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB4Lm5hbWUgPT09IG9wZXJhdG9yO1xuICAgICAgICB9KSBhcyBDdXN0b21PcGVyYXRvcjtcbiAgICAgICAgaWYgKCFvcCkge1xuICAgICAgICAgICAgcmV0dXJuIHdoZXJlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcC53aGVyZSkge1xuICAgICAgICAgICAgcmV0dXJuIHdoZXJlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3BXaGVyZSA9IHR5cGVvZiBvcC53aGVyZSA9PT0gXCJmdW5jdGlvblwiID8gb3Aud2hlcmUodmFsdWUpIDogb3Aud2hlcmU7XG4gICAgICAgIHJldHVybiB3aGVyZVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBbT3AuYW5kXTogW3doZXJlLCBvcFdoZXJlXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IG9wV2hlcmU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSdWxlRnJvbUtleXMocXVlcnk6IFF1ZXJ5TW9kZWwsIGtleXM6IHN0cmluZ1tdKTogUXVlcnlSdWxlTW9kZWxbXSB7XG4gICAgICAgIGNvbnN0IHJ1bGVzOiBRdWVyeVJ1bGVNb2RlbFtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBxdWVyeS5ydWxlcykge1xuICAgICAgICAgICAgaWYgKChydWxlIGFzIFF1ZXJ5TW9kZWwpLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgIHJ1bGVzLnB1c2goLi4udGhpcy5nZXRSdWxlRnJvbUtleXMocnVsZSBhcyBRdWVyeU1vZGVsLCBrZXlzKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGtleXMuc29tZSh4ID0+IChydWxlIGFzIFF1ZXJ5UnVsZU1vZGVsKS5pZCA9PT0geCkpIHtcbiAgICAgICAgICAgICAgICBydWxlcy5wdXNoKHJ1bGUgYXMgUXVlcnlSdWxlTW9kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJ1bGVzO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHJhbnNmb3JtQ29uZGl0aW9uKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsLCBuYW1lOiBzdHJpbmcpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBpZiAoIXRoaXMuanNvbikge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICBbbmFtZV06IFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVWYWx1ZShydWxlKVxuICAgICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmpzb24udHlwZSA9PT0gXCJhcnJheVwiKSB7XG4gICAgICAgICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1Gb3JKc29uQXJyYXkocnVsZSwgbmFtZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gdGhpcy50cmFuc2Zvcm1Gb3JKc29uT2JqZWN0KHJ1bGUsIG5hbWUpO1xuICAgIH1cblxuICAgIHByaXZhdGUgdHJhbnNmb3JtRm9ySnNvbkFycmF5KHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsLCBuYW1lOiBzdHJpbmcpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBjb25zdCBjb2xOYW1lID0gdGhpcy5wYXRoID8gU2VxdWVsaXplLmNvbChuYW1lKSA6IFNlcXVlbGl6ZS5saXRlcmFsKG5hbWUpO1xuICAgICAgICBpZiAocnVsZS5vcGVyYXRpb24gPT09IEZpbHRlck9wZXJhdG9yVHlwZXMuQ29udGFpbnMgfHwgcnVsZS5vcGVyYXRpb24gPT09IEZpbHRlck9wZXJhdG9yVHlwZXMuTm90Q29udGFpbnMpIHtcbiAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICogV2Ugb3ZlcnJpZGUgdGhlIHJ1bGUgdG8gdXNlIGFuIGVxdWFsIG9yIG5vdCBlcXVhbCB3aXRoIGEgSlNPTl9DT05UQUlOUyBmdW5jdGlvblxuICAgICAgICAgICAgICovXG4gICAgICAgICAgICBjb25zdCBuZXdSdWxlID0ge1xuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogcnVsZS5vcGVyYXRpb24gPT09IEZpbHRlck9wZXJhdG9yVHlwZXMuQ29udGFpbnMgPyBGaWx0ZXJPcGVyYXRvclR5cGVzLkVxdWFsIDogRmlsdGVyT3BlcmF0b3JUeXBlcy5Ob3RFcXVhbCxcbiAgICAgICAgICAgICAgICB2YWx1ZTogdHJ1ZVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IHR5cGVvZiBydWxlLnZhbHVlID09PSBcInN0cmluZ1wiID8gYFwiJHtydWxlLnZhbHVlfVwiYCA6IHJ1bGUudmFsdWU7XG4gICAgICAgICAgICBpZiAodGhpcy5qc29uLnBhdGgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gd2hlcmUoZm4oXCJKU09OX0NPTlRBSU5TXCIsIGNvbE5hbWUsIHZhbHVlLCB0aGlzLmpzb24ucGF0aCksIFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVWYWx1ZShuZXdSdWxlIGFzIFJ1bGVNb2RlbCkgYXMgTG9naWNUeXBlKVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHdoZXJlKGZuKFwiSlNPTl9DT05UQUlOU1wiLCBjb2xOYW1lLCB2YWx1ZSksIFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVWYWx1ZShuZXdSdWxlIGFzIFJ1bGVNb2RlbCkgYXMgTG9naWNUeXBlKVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFuc2Zvcm1Gb3JKc29uT2JqZWN0KHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsLCBuYW1lOiBzdHJpbmcpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBjb25zdCBjb2xOYW1lID0gdGhpcy5wYXRoID8gU2VxdWVsaXplLmNvbChuYW1lKSA6IFNlcXVlbGl6ZS5saXRlcmFsKG5hbWUpO1xuICAgICAgICBjb25zdCB2YWx1ZSA9IFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVWYWx1ZShydWxlKTtcbiAgICAgICAgaWYgKHRoaXMuanNvbi5wYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gU2VxdWVsaXplLndoZXJlKFNlcXVlbGl6ZS5mbihcIkpTT05fRVhUUkFDVFwiLCBjb2xOYW1lLCB0aGlzLmpzb24ucGF0aCksIHZhbHVlIGFzIExvZ2ljVHlwZSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gU2VxdWVsaXplLndoZXJlKFNlcXVlbGl6ZS5mbihcIkpTT05fRVhUUkFDVFwiLCBjb2xOYW1lKSwgdmFsdWUgYXMgTG9naWNUeXBlKTtcbiAgICB9XG59XG4iXX0=
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { WhereOptions } from "sequelize";
|
|
2
|
-
import { DataFilterUserModel
|
|
2
|
+
import { DataFilterUserModel } from "../../models/user.model";
|
|
3
3
|
import { QueryRuleModel } from "../models";
|
|
4
4
|
import { FilterBaseConfigurationModel } from "../models/filter-configuration.model";
|
|
5
5
|
import { FilterOperatorTypes } from "../operators";
|
|
6
6
|
import { FilterType } from "../type";
|
|
7
|
-
import { BaseFilterDefinition, Filter } from "./filter";
|
|
7
|
+
import { BaseFilterDefinition, Filter, FilterCondition } from "./filter";
|
|
8
8
|
export interface RadioFilterOption {
|
|
9
9
|
key: string;
|
|
10
10
|
value: unknown;
|
|
@@ -40,7 +40,7 @@ class RadioFilter extends filter_1.Filter {
|
|
|
40
40
|
const conditions = [];
|
|
41
41
|
const where = option.condition.condition === "and" ? { [sequelize_1.Op.and]: conditions } : { [sequelize_1.Op.or]: conditions };
|
|
42
42
|
this.generateRuleWhereOptions(option.condition, conditions, rule);
|
|
43
|
-
conditions.push(super.getWhereOptions({
|
|
43
|
+
conditions.push(await super.getWhereOptions({
|
|
44
44
|
...rule,
|
|
45
45
|
value: option.value,
|
|
46
46
|
operation: option.operator || rule.operation
|
|
@@ -62,4 +62,4 @@ class RadioFilter extends filter_1.Filter {
|
|
|
62
62
|
}
|
|
63
63
|
exports.RadioFilter = RadioFilter;
|
|
64
64
|
|
|
65
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
65
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVycy9yYWRpby5maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTZDO0FBRTdDLGtEQUE4QztBQUc5Qyw0Q0FBbUQ7QUFDbkQsa0NBQXFDO0FBQ3JDLHFDQUF5RTtBQXNCekUsTUFBYSxXQUFZLFNBQVEsZUFBTTtJQUtuQyxZQUFZLFVBQXdEO1FBQ2hFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUxmLFNBQUksR0FBRyxpQkFBVSxDQUFDLEtBQUssQ0FBQztRQUN4QixjQUFTLEdBQUcsQ0FBQywrQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUsvQyxDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FBVSxHQUFXLEVBQUUsT0FBZ0IsRUFBRSxJQUEwQjtRQUNyRixNQUFNLE1BQU0sR0FBRyxNQUFNLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUV6RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTyxJQUFJLENBQUM7U0FDZjtRQUVELE9BQU87WUFDSCxHQUFHLE1BQU07WUFDVCxPQUFPLEVBQUUsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBQyxDQUFDLEVBQUMsRUFBRSxDQUFDLENBQUM7Z0JBQ3BELEdBQUcsRUFBRSxDQUFDLENBQUMsR0FBRztnQkFDVixJQUFJLEVBQUUsTUFBTSxJQUFJLENBQUMsaUJBQWlCLENBQUMsY0FBYyxDQUM3QyxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUUsUUFBUSxFQUNkLDBCQUFXLENBQUMsNEJBQTRCLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FDdkQ7YUFDSixDQUFDLENBQUMsQ0FBQztTQUNQLENBQUM7SUFDTixDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFvQjtRQUM3QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPLEtBQUssQ0FBQyxlQUFlLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdEM7UUFFRCxJQUFJLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRTtZQUNuQixPQUFPLEtBQUssQ0FBQyxlQUFlLENBQUM7Z0JBQ3pCLEdBQUcsSUFBSTtnQkFDUCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7Z0JBQ25CLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTO2FBQy9DLENBQUMsQ0FBQztTQUNOO1FBRUQsTUFBTSxVQUFVLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxTQUFTLENBQUMsU0FBUyxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLGNBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxVQUFVLEVBQUUsQ0FBQztRQUN4RyxJQUFJLENBQUMsd0JBQXdCLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDbEUsVUFBVSxDQUFDLElBQUksQ0FDWCxNQUFNLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDeEIsR0FBRyxJQUFJO1lBQ1AsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTO1NBQy9DLENBQUMsQ0FDTCxDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFvQjs7UUFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkM7UUFFRCxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztZQUMxQixHQUFHLElBQUk7WUFDUCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsU0FBUyxFQUFFLE1BQUEsTUFBTSxDQUFDLFFBQVEsbUNBQUksSUFBSSxDQUFDLFNBQVM7U0FDL0MsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBbkVELGtDQW1FQyIsImZpbGUiOiJsaWIvZmlsdGVyL2ZpbHRlcnMvcmFkaW8uZmlsdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3AsIFdoZXJlT3B0aW9ucyB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IERhdGFGaWx0ZXJVc2VyTW9kZWwgfSBmcm9tIFwiLi4vLi4vbW9kZWxzL3VzZXIubW9kZWxcIjtcbmltcG9ydCB7IEZpbHRlclV0aWxzIH0gZnJvbSBcIi4uL2ZpbHRlci51dGlsc1wiO1xuaW1wb3J0IHsgUXVlcnlSdWxlTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzXCI7XG5pbXBvcnQgeyBGaWx0ZXJCYXNlQ29uZmlndXJhdGlvbk1vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9maWx0ZXItY29uZmlndXJhdGlvbi5tb2RlbFwiO1xuaW1wb3J0IHsgRmlsdGVyT3BlcmF0b3JUeXBlcyB9IGZyb20gXCIuLi9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tIFwiLi4vdHlwZVwiO1xuaW1wb3J0IHsgQmFzZUZpbHRlckRlZmluaXRpb24sIEZpbHRlciwgRmlsdGVyQ29uZGl0aW9uIH0gZnJvbSBcIi4vZmlsdGVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFkaW9GaWx0ZXJPcHRpb24ge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiB1bmtub3duO1xuICAgIG9wZXJhdG9yPzogRmlsdGVyT3BlcmF0b3JUeXBlcztcbiAgICBjb25kaXRpb24/OiBGaWx0ZXJDb25kaXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFkaW9GaWx0ZXJEZWZpbml0aW9uIHtcbiAgICBvcHRpb25zOiBSYWRpb0ZpbHRlck9wdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvRmlsdGVyT3B0aW9uQ29uZmlndXJhdGlvbiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYWRpb0ZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbCBleHRlbmRzIEZpbHRlckJhc2VDb25maWd1cmF0aW9uTW9kZWwge1xuICAgIG9wdGlvbnM6IFJhZGlvRmlsdGVyT3B0aW9uQ29uZmlndXJhdGlvbltdO1xufVxuXG5leHBvcnQgY2xhc3MgUmFkaW9GaWx0ZXIgZXh0ZW5kcyBGaWx0ZXIgaW1wbGVtZW50cyBSYWRpb0ZpbHRlckRlZmluaXRpb24ge1xuICAgIHB1YmxpYyB0eXBlID0gRmlsdGVyVHlwZS5SYWRpbztcbiAgICBwdWJsaWMgb3BlcmF0b3JzID0gW0ZpbHRlck9wZXJhdG9yVHlwZXMuRXF1YWxdO1xuICAgIHB1YmxpYyBvcHRpb25zOiBSYWRpb0ZpbHRlck9wdGlvbltdO1xuXG4gICAgY29uc3RydWN0b3IoZGVmaW5pdGlvbjogQmFzZUZpbHRlckRlZmluaXRpb24gJiBSYWRpb0ZpbHRlckRlZmluaXRpb24pIHtcbiAgICAgICAgc3VwZXIoZGVmaW5pdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldENvbmZpZzxSZXF1ZXN0PihrZXk6IHN0cmluZywgcmVxdWVzdDogUmVxdWVzdCwgdXNlcj86IERhdGFGaWx0ZXJVc2VyTW9kZWwpOiBQcm9taXNlPFJhZGlvRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsPiB7XG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IGF3YWl0IHN1cGVyLmdldENvbmZpZyhrZXksIHJlcXVlc3QsIHVzZXIpO1xuXG4gICAgICAgIGlmICghY29uZmlnKSB7XG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi5jb25maWcsXG4gICAgICAgICAgICBvcHRpb25zOiBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLm9wdGlvbnMubWFwKGFzeW5jIHggPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IHgua2V5LFxuICAgICAgICAgICAgICAgIG5hbWU6IGF3YWl0IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oXG4gICAgICAgICAgICAgICAgICAgIHVzZXI/Lmxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJVdGlscy5nZXRSYWRpb09wdGlvblRyYW5zbGF0aW9uS2V5KGtleSwgeC5rZXkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSkpKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRXaGVyZU9wdGlvbnMocnVsZTogUXVlcnlSdWxlTW9kZWwpOiBQcm9taXNlPFdoZXJlT3B0aW9ucz4ge1xuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZCh4ID0+IHgua2V5ID09PSBydWxlLnZhbHVlKTtcbiAgICAgICAgaWYgKCFvcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZXRXaGVyZU9wdGlvbnMocnVsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW9wdGlvbi5jb25kaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZXRXaGVyZU9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIC4uLnJ1bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IG9wdGlvbi5vcGVyYXRvciB8fCBydWxlLm9wZXJhdGlvblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25kaXRpb25zID0gW107XG4gICAgICAgIGNvbnN0IHdoZXJlID0gb3B0aW9uLmNvbmRpdGlvbi5jb25kaXRpb24gPT09IFwiYW5kXCIgPyB7IFtPcC5hbmRdOiBjb25kaXRpb25zIH0gOiB7IFtPcC5vcl06IGNvbmRpdGlvbnMgfTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVJ1bGVXaGVyZU9wdGlvbnMob3B0aW9uLmNvbmRpdGlvbiwgY29uZGl0aW9ucywgcnVsZSk7XG4gICAgICAgIGNvbmRpdGlvbnMucHVzaChcbiAgICAgICAgICAgIGF3YWl0IHN1cGVyLmdldFdoZXJlT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgLi4ucnVsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogb3B0aW9uLm9wZXJhdG9yIHx8IHJ1bGUub3BlcmF0aW9uXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEhhdmluZ09wdGlvbnMocnVsZTogUXVlcnlSdWxlTW9kZWwpOiBQcm9taXNlPFdoZXJlT3B0aW9ucz4ge1xuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZCh4ID0+IHgua2V5ID09PSBydWxlLnZhbHVlKTtcbiAgICAgICAgaWYgKCFvcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZXRIYXZpbmdPcHRpb25zKHJ1bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldEhhdmluZ09wdGlvbnMoe1xuICAgICAgICAgICAgLi4ucnVsZSxcbiAgICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICBvcGVyYXRpb246IG9wdGlvbi5vcGVyYXRvciA/PyBydWxlLm9wZXJhdGlvblxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
|
package/lib/filter/index.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ export * from "./models";
|
|
|
3
3
|
export * from "./order-rules";
|
|
4
4
|
export * from "./filter.service";
|
|
5
5
|
export * from "./base-filter";
|
|
6
|
-
export * from "./filter.service";
|
|
7
6
|
export * from "./controllers/dynamic-filter.controller";
|
|
8
7
|
export * from "./controllers/filter.controller";
|
|
9
8
|
export * from "./decorators/inject-filter.decorator";
|
package/lib/filter/index.js
CHANGED
|
@@ -15,7 +15,6 @@ __exportStar(require("./models"), exports);
|
|
|
15
15
|
__exportStar(require("./order-rules"), exports);
|
|
16
16
|
__exportStar(require("./filter.service"), exports);
|
|
17
17
|
__exportStar(require("./base-filter"), exports);
|
|
18
|
-
__exportStar(require("./filter.service"), exports);
|
|
19
18
|
__exportStar(require("./controllers/dynamic-filter.controller"), exports);
|
|
20
19
|
__exportStar(require("./controllers/filter.controller"), exports);
|
|
21
20
|
__exportStar(require("./decorators/inject-filter.decorator"), exports);
|
|
@@ -23,4 +22,4 @@ __exportStar(require("./filter.utils"), exports);
|
|
|
23
22
|
__exportStar(require("./operators"), exports);
|
|
24
23
|
__exportStar(require("./type"), exports);
|
|
25
24
|
|
|
26
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
25
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBQUEsNENBQTBCO0FBQzFCLDJDQUF5QjtBQUN6QixnREFBNkI7QUFDN0IsbURBQWlDO0FBQ2pDLGdEQUE2QjtBQUM3QiwwRUFBdUQ7QUFDdkQsa0VBQStDO0FBQy9DLHVFQUFvRDtBQUNwRCxpREFBOEI7QUFDOUIsOENBQTJCO0FBQzNCLHlDQUFzQiIsImZpbGUiOiJsaWIvZmlsdGVyL2luZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vZmlsdGVyc1wiO1xuZXhwb3J0ICogZnJvbSBcIi4vbW9kZWxzXCI7XG5leHBvcnQgKiBmcm9tIFwiLi9vcmRlci1ydWxlc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9maWx0ZXIuc2VydmljZVwiO1xuZXhwb3J0ICogZnJvbSBcIi4vYmFzZS1maWx0ZXJcIlxuZXhwb3J0ICogZnJvbSBcIi4vY29udHJvbGxlcnMvZHluYW1pYy1maWx0ZXIuY29udHJvbGxlclwiXG5leHBvcnQgKiBmcm9tIFwiLi9jb250cm9sbGVycy9maWx0ZXIuY29udHJvbGxlclwiXG5leHBvcnQgKiBmcm9tIFwiLi9kZWNvcmF0b3JzL2luamVjdC1maWx0ZXIuZGVjb3JhdG9yXCJcbmV4cG9ydCAqIGZyb20gXCIuL2ZpbHRlci51dGlsc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9vcGVyYXRvcnNcIlxuZXhwb3J0ICogZnJvbSBcIi4vdHlwZVwiXG4iXX0=
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
|
|
4
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,
|
|
4
|
+
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvbW9kZWxzL3F1ZXJ5Lm1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIiLCJmaWxlIjoibGliL2ZpbHRlci9tb2RlbHMvcXVlcnkubW9kZWwuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSdWxlTW9kZWwgfSBmcm9tIFwiLi9ydWxlLm1vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIENvbmRpdGlvbiA9IFwiYW5kXCIgfCBcIm9yXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlSdWxlTW9kZWwgZXh0ZW5kcyBSdWxlTW9kZWwge1xuICAgIGlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUXVlcnlNb2RlbCB7XG4gICAgY29uZGl0aW9uOiBDb25kaXRpb247XG4gICAgcnVsZXM6IChRdWVyeVJ1bGVNb2RlbCB8IFF1ZXJ5TW9kZWwpW107XG59XG4iXX0=
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@recursyve/nestjs-data-filter",
|
|
3
|
-
"version": "8.5.
|
|
3
|
+
"version": "8.5.5",
|
|
4
4
|
"description": "NestJs DataFilter library",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@nestjs/testing": "^8.2.6",
|
|
34
34
|
"@recursyve/nestjs-common": "^8.0.4",
|
|
35
35
|
"@types/express": "^4.17.13",
|
|
36
|
-
"@types/jest": "^
|
|
36
|
+
"@types/jest": "^29.2.3",
|
|
37
37
|
"@types/node": "^17.0.15",
|
|
38
38
|
"class-transformer": "^0.5.1",
|
|
39
39
|
"class-validator": "^0.13.2",
|
|
@@ -44,14 +44,14 @@
|
|
|
44
44
|
"gulp-copy": "^4.0.1",
|
|
45
45
|
"gulp-sourcemaps": "^3.0.0",
|
|
46
46
|
"gulp-typescript": "^6.0.0-alpha.1",
|
|
47
|
-
"jest": "^
|
|
47
|
+
"jest": "^29.3.1",
|
|
48
48
|
"reflect-metadata": "^0.1.13",
|
|
49
49
|
"rxjs": "^7.5.2",
|
|
50
50
|
"sequelize": "^6.19.0",
|
|
51
51
|
"sequelize-typescript": "^2.1.3",
|
|
52
|
-
"sqlite3": "^5.
|
|
53
|
-
"ts-jest": "^
|
|
54
|
-
"ts-node": "^10.
|
|
52
|
+
"sqlite3": "^5.1.2",
|
|
53
|
+
"ts-jest": "^29.0.3",
|
|
54
|
+
"ts-node": "^10.9.1",
|
|
55
55
|
"typescript": "^4.5.5"
|
|
56
56
|
},
|
|
57
57
|
"jest": {
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { WhereOptions } from "sequelize";
|
|
2
|
-
import { FilterOperatorTypes, QueryRuleModel } from "../..";
|
|
3
|
-
import { FilterType } from "../type";
|
|
4
|
-
import { BaseFilterDefinition, Filter } from "./filter";
|
|
5
|
-
export interface JsonArrayFilterDefinition {
|
|
6
|
-
jsonPath?: string;
|
|
7
|
-
}
|
|
8
|
-
export declare class JsonArrayFilter extends Filter {
|
|
9
|
-
type: FilterType;
|
|
10
|
-
operators: FilterOperatorTypes[];
|
|
11
|
-
jsonPath?: string;
|
|
12
|
-
constructor(definition: JsonArrayFilterDefinition & BaseFilterDefinition);
|
|
13
|
-
getWhereOptions(rule: QueryRuleModel, name?: string): Promise<WhereOptions>;
|
|
14
|
-
private generateEqualsLikeOptions;
|
|
15
|
-
private generateContainsLikeOptions;
|
|
16
|
-
}
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.JsonArrayFilter = void 0;
|
|
4
|
-
const sequelize_1 = require("sequelize");
|
|
5
|
-
const __1 = require("../..");
|
|
6
|
-
const sequelize_utils_1 = require("../../sequelize.utils");
|
|
7
|
-
const type_1 = require("../type");
|
|
8
|
-
const filter_1 = require("./filter");
|
|
9
|
-
class JsonArrayFilter extends filter_1.Filter {
|
|
10
|
-
constructor(definition) {
|
|
11
|
-
super(definition);
|
|
12
|
-
this.type = type_1.FilterType.JsonArray;
|
|
13
|
-
this.operators = [...__1.JsonArrayOperators];
|
|
14
|
-
}
|
|
15
|
-
async getWhereOptions(rule, name) {
|
|
16
|
-
if (!name) {
|
|
17
|
-
name = this.path ? sequelize_utils_1.SequelizeUtils.getAttributeFullName(this.attribute, this.path) : this.attribute;
|
|
18
|
-
}
|
|
19
|
-
if (rule.operation === __1.FilterOperatorTypes.Equal || rule.operation === __1.FilterOperatorTypes.NotEqual) {
|
|
20
|
-
return this.generateEqualsLikeOptions(rule, name);
|
|
21
|
-
}
|
|
22
|
-
return this.generateContainsLikeOptions(rule, name);
|
|
23
|
-
}
|
|
24
|
-
async generateEqualsLikeOptions(rule, name) {
|
|
25
|
-
const newRule = {
|
|
26
|
-
...rule,
|
|
27
|
-
value: (0, sequelize_1.fn)("JSON_ARRAY", rule.value)
|
|
28
|
-
};
|
|
29
|
-
if (!this.jsonPath) {
|
|
30
|
-
return {
|
|
31
|
-
[name]: sequelize_utils_1.SequelizeUtils.generateWhereValue(newRule)
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
const colName = this.path ? (0, sequelize_1.col)(name) : (0, sequelize_1.literal)(name);
|
|
35
|
-
if (this.jsonPath) {
|
|
36
|
-
return (0, sequelize_1.where)((0, sequelize_1.fn)("JSON_EXTRACT", colName, this.jsonPath), sequelize_utils_1.SequelizeUtils.generateWhereValue(newRule));
|
|
37
|
-
}
|
|
38
|
-
return (0, sequelize_1.where)((0, sequelize_1.fn)("JSON_EXTRACT", colName), sequelize_utils_1.SequelizeUtils.generateWhereValue(newRule));
|
|
39
|
-
}
|
|
40
|
-
async generateContainsLikeOptions(rule, name) {
|
|
41
|
-
const value = typeof rule.value === "string" ? `"${rule.value}"` : rule.value;
|
|
42
|
-
/**
|
|
43
|
-
* We override the rule to use an equal or not equal with a JSON_CONTAINS function
|
|
44
|
-
*/
|
|
45
|
-
const newRule = {
|
|
46
|
-
operation: rule.operation === __1.FilterOperatorTypes.Contains ? __1.FilterOperatorTypes.Equal : __1.FilterOperatorTypes.NotEqual,
|
|
47
|
-
value: true
|
|
48
|
-
};
|
|
49
|
-
const colName = this.path ? (0, sequelize_1.col)(name) : (0, sequelize_1.literal)(name);
|
|
50
|
-
if (this.jsonPath) {
|
|
51
|
-
return (0, sequelize_1.where)((0, sequelize_1.fn)("JSON_CONTAINS", colName, value, this.jsonPath), sequelize_utils_1.SequelizeUtils.generateWhereValue(newRule));
|
|
52
|
-
}
|
|
53
|
-
return (0, sequelize_1.where)((0, sequelize_1.fn)("JSON_CONTAINS", colName, value), sequelize_utils_1.SequelizeUtils.generateWhereValue(newRule));
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
exports.JsonArrayFilter = JsonArrayFilter;
|
|
57
|
-
|
|
58
|
-
//# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVycy9qc29uLWFycmF5LmZpbHRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSx5Q0FBNkU7QUFDN0UsNkJBQTJGO0FBQzNGLDJEQUF1RDtBQUN2RCxrQ0FBcUM7QUFDckMscUNBQXdEO0FBTXhELE1BQWEsZUFBZ0IsU0FBUSxlQUFNO0lBS3ZDLFlBQVksVUFBNEQ7UUFDcEUsS0FBSyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBTGYsU0FBSSxHQUFHLGlCQUFVLENBQUMsU0FBUyxDQUFDO1FBQzVCLGNBQVMsR0FBRyxDQUFDLEdBQUcsc0JBQWtCLENBQUMsQ0FBQztJQUszQyxDQUFDO0lBRU0sS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFvQixFQUFFLElBQWE7UUFDNUQsSUFBSSxDQUFDLElBQUksRUFBRTtZQUNQLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxnQ0FBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO1NBQ3RHO1FBRUQsSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLHVCQUFtQixDQUFDLEtBQUssSUFBSSxJQUFJLENBQUMsU0FBUyxLQUFLLHVCQUFtQixDQUFDLFFBQVEsRUFBRTtZQUNqRyxPQUFPLElBQUksQ0FBQyx5QkFBeUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7U0FDckQ7UUFFRCxPQUFPLElBQUksQ0FBQywyQkFBMkIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDeEQsQ0FBQztJQUVPLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxJQUFvQixFQUFFLElBQVk7UUFDdEUsTUFBTSxPQUFPLEdBQUc7WUFDWixHQUFHLElBQUk7WUFDUCxLQUFLLEVBQUUsSUFBQSxjQUFFLEVBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUM7U0FDdEMsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2hCLE9BQU87Z0JBQ0gsQ0FBQyxJQUFJLENBQUMsRUFBRSxnQ0FBYyxDQUFDLGtCQUFrQixDQUFDLE9BQW9CLENBQUM7YUFDbEUsQ0FBQztTQUNMO1FBRUQsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBQSxlQUFHLEVBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUEsbUJBQU8sRUFBQyxJQUFJLENBQUMsQ0FBQztRQUN0RCxJQUFJLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDZixPQUFPLElBQUEsaUJBQUssRUFBQyxJQUFBLGNBQUUsRUFBQyxjQUFjLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxnQ0FBYyxDQUFDLGtCQUFrQixDQUFDLE9BQW9CLENBQWMsQ0FBQyxDQUFBO1NBQ2pJO1FBQ0QsT0FBTyxJQUFBLGlCQUFLLEVBQUMsSUFBQSxjQUFFLEVBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxFQUFFLGdDQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBb0IsQ0FBYyxDQUFDLENBQUE7SUFDbkgsQ0FBQztJQUVPLEtBQUssQ0FBQywyQkFBMkIsQ0FBQyxJQUFvQixFQUFFLElBQVk7UUFDeEUsTUFBTSxLQUFLLEdBQUcsT0FBTyxJQUFJLENBQUMsS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7UUFFOUU7O1dBRUc7UUFDSCxNQUFNLE9BQU8sR0FBRztZQUNaLFNBQVMsRUFBRSxJQUFJLENBQUMsU0FBUyxLQUFLLHVCQUFtQixDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsdUJBQW1CLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyx1QkFBbUIsQ0FBQyxRQUFRO1lBQ3JILEtBQUssRUFBRSxJQUFJO1NBQ2QsQ0FBQTtRQUNELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUEsZUFBRyxFQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFBLG1CQUFPLEVBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2YsT0FBTyxJQUFBLGlCQUFLLEVBQUMsSUFBQSxjQUFFLEVBQUMsZUFBZSxFQUFFLE9BQU8sRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFLGdDQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBb0IsQ0FBYyxDQUFDLENBQUE7U0FDekk7UUFDRCxPQUFPLElBQUEsaUJBQUssRUFBQyxJQUFBLGNBQUUsRUFBQyxlQUFlLEVBQUUsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLGdDQUFjLENBQUMsa0JBQWtCLENBQUMsT0FBb0IsQ0FBYyxDQUFDLENBQUE7SUFDM0gsQ0FBQztDQUNKO0FBdkRELDBDQXVEQyIsImZpbGUiOiJsaWIvZmlsdGVyL2ZpbHRlcnMvanNvbi1hcnJheS5maWx0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBjb2wsIGZuLCBsaXRlcmFsLCBMb2dpY1R5cGUsIHdoZXJlLCBXaGVyZU9wdGlvbnMgfSBmcm9tIFwic2VxdWVsaXplXCI7XG5pbXBvcnQgeyBGaWx0ZXJPcGVyYXRvclR5cGVzLCBKc29uQXJyYXlPcGVyYXRvcnMsIFF1ZXJ5UnVsZU1vZGVsLCBSdWxlTW9kZWwgfSBmcm9tIFwiLi4vLi5cIjtcbmltcG9ydCB7IFNlcXVlbGl6ZVV0aWxzIH0gZnJvbSBcIi4uLy4uL3NlcXVlbGl6ZS51dGlsc1wiO1xuaW1wb3J0IHsgRmlsdGVyVHlwZSB9IGZyb20gXCIuLi90eXBlXCI7XG5pbXBvcnQgeyBCYXNlRmlsdGVyRGVmaW5pdGlvbiwgRmlsdGVyIH0gZnJvbSBcIi4vZmlsdGVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgSnNvbkFycmF5RmlsdGVyRGVmaW5pdGlvbiB7XG4gICAganNvblBhdGg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBKc29uQXJyYXlGaWx0ZXIgZXh0ZW5kcyBGaWx0ZXIge1xuICAgIHB1YmxpYyB0eXBlID0gRmlsdGVyVHlwZS5Kc29uQXJyYXk7XG4gICAgcHVibGljIG9wZXJhdG9ycyA9IFsuLi5Kc29uQXJyYXlPcGVyYXRvcnNdO1xuICAgIHB1YmxpYyBqc29uUGF0aD86IHN0cmluZztcblxuICAgIGNvbnN0cnVjdG9yKGRlZmluaXRpb246IEpzb25BcnJheUZpbHRlckRlZmluaXRpb24gJiBCYXNlRmlsdGVyRGVmaW5pdGlvbikge1xuICAgICAgICBzdXBlcihkZWZpbml0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0V2hlcmVPcHRpb25zKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsLCBuYW1lPzogc3RyaW5nKTogUHJvbWlzZTxXaGVyZU9wdGlvbnM+IHtcbiAgICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgICAgICBuYW1lID0gdGhpcy5wYXRoID8gU2VxdWVsaXplVXRpbHMuZ2V0QXR0cmlidXRlRnVsbE5hbWUodGhpcy5hdHRyaWJ1dGUsIHRoaXMucGF0aCkgOiB0aGlzLmF0dHJpYnV0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChydWxlLm9wZXJhdGlvbiA9PT0gRmlsdGVyT3BlcmF0b3JUeXBlcy5FcXVhbCB8fCBydWxlLm9wZXJhdGlvbiA9PT0gRmlsdGVyT3BlcmF0b3JUeXBlcy5Ob3RFcXVhbCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2VuZXJhdGVFcXVhbHNMaWtlT3B0aW9ucyhydWxlLCBuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdlbmVyYXRlQ29udGFpbnNMaWtlT3B0aW9ucyhydWxlLCBuYW1lKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGFzeW5jIGdlbmVyYXRlRXF1YWxzTGlrZU9wdGlvbnMocnVsZTogUXVlcnlSdWxlTW9kZWwsIG5hbWU6IHN0cmluZyk6IFByb21pc2U8V2hlcmVPcHRpb25zPiB7XG4gICAgICAgIGNvbnN0IG5ld1J1bGUgPSB7XG4gICAgICAgICAgICAuLi5ydWxlLFxuICAgICAgICAgICAgdmFsdWU6IGZuKFwiSlNPTl9BUlJBWVwiLCBydWxlLnZhbHVlKVxuICAgICAgICB9O1xuICAgICAgICBpZiAoIXRoaXMuanNvblBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgW25hbWVdOiBTZXF1ZWxpemVVdGlscy5nZW5lcmF0ZVdoZXJlVmFsdWUobmV3UnVsZSBhcyBSdWxlTW9kZWwpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29sTmFtZSA9IHRoaXMucGF0aCA/IGNvbChuYW1lKSA6IGxpdGVyYWwobmFtZSk7XG4gICAgICAgIGlmICh0aGlzLmpzb25QYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gd2hlcmUoZm4oXCJKU09OX0VYVFJBQ1RcIiwgY29sTmFtZSwgdGhpcy5qc29uUGF0aCksIFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVWYWx1ZShuZXdSdWxlIGFzIFJ1bGVNb2RlbCkgYXMgTG9naWNUeXBlKVxuICAgICAgICB9XG4gICAgICAgIHJldHVybiB3aGVyZShmbihcIkpTT05fRVhUUkFDVFwiLCBjb2xOYW1lKSwgU2VxdWVsaXplVXRpbHMuZ2VuZXJhdGVXaGVyZVZhbHVlKG5ld1J1bGUgYXMgUnVsZU1vZGVsKSBhcyBMb2dpY1R5cGUpXG4gICAgfVxuXG4gICAgcHJpdmF0ZSBhc3luYyBnZW5lcmF0ZUNvbnRhaW5zTGlrZU9wdGlvbnMocnVsZTogUXVlcnlSdWxlTW9kZWwsIG5hbWU6IHN0cmluZyk6IFByb21pc2U8V2hlcmVPcHRpb25zPiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIHJ1bGUudmFsdWUgPT09IFwic3RyaW5nXCIgPyBgXCIke3J1bGUudmFsdWV9XCJgIDogcnVsZS52YWx1ZTtcblxuICAgICAgICAvKipcbiAgICAgICAgICogV2Ugb3ZlcnJpZGUgdGhlIHJ1bGUgdG8gdXNlIGFuIGVxdWFsIG9yIG5vdCBlcXVhbCB3aXRoIGEgSlNPTl9DT05UQUlOUyBmdW5jdGlvblxuICAgICAgICAgKi9cbiAgICAgICAgY29uc3QgbmV3UnVsZSA9IHtcbiAgICAgICAgICAgIG9wZXJhdGlvbjogcnVsZS5vcGVyYXRpb24gPT09IEZpbHRlck9wZXJhdG9yVHlwZXMuQ29udGFpbnMgPyBGaWx0ZXJPcGVyYXRvclR5cGVzLkVxdWFsIDogRmlsdGVyT3BlcmF0b3JUeXBlcy5Ob3RFcXVhbCxcbiAgICAgICAgICAgIHZhbHVlOiB0cnVlXG4gICAgICAgIH1cbiAgICAgICAgY29uc3QgY29sTmFtZSA9IHRoaXMucGF0aCA/IGNvbChuYW1lKSA6IGxpdGVyYWwobmFtZSk7XG4gICAgICAgIGlmICh0aGlzLmpzb25QYXRoKSB7XG4gICAgICAgICAgICByZXR1cm4gd2hlcmUoZm4oXCJKU09OX0NPTlRBSU5TXCIsIGNvbE5hbWUsIHZhbHVlLCB0aGlzLmpzb25QYXRoKSwgU2VxdWVsaXplVXRpbHMuZ2VuZXJhdGVXaGVyZVZhbHVlKG5ld1J1bGUgYXMgUnVsZU1vZGVsKSBhcyBMb2dpY1R5cGUpXG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHdoZXJlKGZuKFwiSlNPTl9DT05UQUlOU1wiLCBjb2xOYW1lLCB2YWx1ZSksIFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVWYWx1ZShuZXdSdWxlIGFzIFJ1bGVNb2RlbCkgYXMgTG9naWNUeXBlKVxuICAgIH1cbn1cbiJdfQ==
|