@recursyve/nestjs-data-filter 8.0.0 → 8.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,21 +1,26 @@
1
- import { DataFilterUserModel } from "../..";
1
+ import { WhereOptions } from "sequelize";
2
+ import { DataFilterUserModel, FilterOperatorTypes } from "../..";
2
3
  import { TranslateAdapter } from "../../adapters/translate.adapter";
3
- import { CustomOperator, FilterOperators, FilterOperatorTypes } from "../operators";
4
- import { FilterType } from "../type";
4
+ import { IncludeWhereModel } from "../../models/include.model";
5
5
  import { FilterBaseConfigurationModel } from "../models/filter-configuration.model";
6
- import { WhereOptions } from "sequelize";
7
6
  import { QueryModel, QueryRuleModel } from "../models/query.model";
8
- import { RuleModel } from "../models/rule.model";
9
- import { IncludeWhereModel } from "../../models/include.model";
7
+ import { CustomOperator, FilterOperators } from "../operators";
8
+ import { FilterType } from "../type";
10
9
  export declare type Condition = "and" | "or";
11
- export interface FilterConditionRule extends RuleModel {
10
+ export interface FilterConditionRule {
12
11
  key: string;
13
12
  path?: string;
13
+ operation: FilterOperators;
14
+ value: (unknown | unknown[]) | ((value: unknown | unknown[]) => unknown | unknown[]);
14
15
  }
15
16
  export interface FilterCondition {
16
17
  condition: Condition;
17
18
  rules: (FilterConditionRule | FilterCondition)[];
18
19
  }
20
+ export interface JsonConfig {
21
+ type: "array" | "object";
22
+ path?: string;
23
+ }
19
24
  export declare type PathCondition = boolean | {
20
25
  [filter: string]: any;
21
26
  };
@@ -28,6 +33,7 @@ export interface BaseFilterDefinition {
28
33
  group?: string;
29
34
  where?: IncludeWhereModel;
30
35
  pathCondition?: PathCondition;
36
+ json?: JsonConfig;
31
37
  /**
32
38
  * Private means that the config will not be returned.
33
39
  */
@@ -53,6 +59,7 @@ export declare abstract class Filter implements FilterDefinition {
53
59
  path?: string;
54
60
  condition?: FilterCondition;
55
61
  pathCondition?: PathCondition;
62
+ json?: JsonConfig;
56
63
  private?: boolean;
57
64
  paranoid: boolean;
58
65
  static validate(definition: FilterDefinition): boolean;
@@ -64,9 +71,12 @@ export declare abstract class Filter implements FilterDefinition {
64
71
  getWhereOptions(rule: QueryRuleModel, name?: string): Promise<WhereOptions>;
65
72
  getHavingOptions(rule: QueryRuleModel): Promise<WhereOptions>;
66
73
  usePathCondition(query: QueryModel): boolean;
67
- protected getConditionWhereOptions(where: WhereOptions): WhereOptions;
68
- protected generateRuleWhereOptions(filter: FilterCondition, options: WhereOptions[]): void;
74
+ protected getConditionWhereOptions(where: WhereOptions, rule: QueryRuleModel): WhereOptions;
75
+ protected generateRuleWhereOptions(filter: FilterCondition, options: WhereOptions[], parentRule: QueryRuleModel): void;
69
76
  protected getOperatorHavingOptions(operator: FilterOperators, where: WhereOptions): WhereOptions;
70
77
  protected getOperatorWhereOptions(operator: FilterOperators, where: WhereOptions, value: any): WhereOptions;
71
78
  private getRuleFromKeys;
79
+ private transformCondition;
80
+ private transformForJsonArray;
81
+ private transformForJsonObject;
72
82
  }
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Filter = void 0;
4
- const filter_utils_1 = require("../filter.utils");
5
4
  const sequelize_1 = require("sequelize");
5
+ const __1 = require("../..");
6
6
  const sequelize_utils_1 = require("../../sequelize.utils");
7
+ const filter_utils_1 = require("../filter.utils");
7
8
  class Filter {
8
9
  constructor(definition) {
9
10
  this._type = "filter";
@@ -70,12 +71,9 @@ class Filter {
70
71
  if (op === null || op === void 0 ? void 0 : op.operator) {
71
72
  rule.operation = op.operator;
72
73
  }
73
- const value = sequelize_utils_1.SequelizeUtils.generateWhereValue(rule);
74
- const where = (value === undefined || this.having) ?
75
- this.getConditionWhereOptions(null) :
76
- this.getConditionWhereOptions({
77
- [name]: value
78
- });
74
+ const where = ((rule === null || rule === void 0 ? void 0 : rule.value) === undefined || this.having) ?
75
+ this.getConditionWhereOptions(null, rule) :
76
+ this.getConditionWhereOptions(this.transformCondition(rule, name), rule);
79
77
  return this.getOperatorWhereOptions(rule.operation, where, rule.value);
80
78
  }
81
79
  async getHavingOptions(rule) {
@@ -105,28 +103,34 @@ class Filter {
105
103
  }
106
104
  return rules.every(x => this.pathCondition[x.id] === x.value);
107
105
  }
108
- getConditionWhereOptions(where) {
106
+ getConditionWhereOptions(where, rule) {
109
107
  if (!this.condition) {
110
108
  return where;
111
109
  }
112
110
  const conditions = where ? [where] : [];
113
111
  const option = this.condition.condition === "and" ? { [sequelize_1.Op.and]: conditions } : { [sequelize_1.Op.or]: conditions };
114
- this.generateRuleWhereOptions(this.condition, conditions);
112
+ this.generateRuleWhereOptions(this.condition, conditions, rule);
115
113
  return option;
116
114
  }
117
- generateRuleWhereOptions(filter, options) {
115
+ generateRuleWhereOptions(filter, options, parentRule) {
118
116
  for (const rule of filter.rules) {
119
117
  const c = rule;
120
118
  if (c.condition) {
121
119
  const conditions = [];
122
120
  options.push(c.condition === "and" ? { [sequelize_1.Op.and]: conditions } : { [sequelize_1.Op.or]: [] });
123
- this.generateRuleWhereOptions(c, conditions);
121
+ this.generateRuleWhereOptions(c, conditions, parentRule);
124
122
  continue;
125
123
  }
126
- const r = rule;
124
+ let r = rule;
127
125
  const name = r.path ? sequelize_utils_1.SequelizeUtils.getAttributeFullName(r.key, r.path) : r.key;
126
+ if (typeof r.value === "function") {
127
+ r = {
128
+ ...r,
129
+ value: r.value(parentRule.value)
130
+ };
131
+ }
128
132
  options.push({
129
- [name]: sequelize_utils_1.SequelizeUtils.generateWhereValue(rule)
133
+ [name]: sequelize_utils_1.SequelizeUtils.generateWhereValue(r)
130
134
  });
131
135
  }
132
136
  }
@@ -181,7 +185,44 @@ class Filter {
181
185
  }
182
186
  return rules;
183
187
  }
188
+ transformCondition(rule, name) {
189
+ if (!this.json) {
190
+ return {
191
+ [name]: sequelize_utils_1.SequelizeUtils.generateWhereValue(rule)
192
+ };
193
+ }
194
+ if (this.json.type === "array") {
195
+ return this.transformForJsonArray(rule, name);
196
+ }
197
+ return this.transformForJsonObject(rule, name);
198
+ }
199
+ transformForJsonArray(rule, name) {
200
+ const colName = this.path ? sequelize_1.Sequelize.col(name) : sequelize_1.Sequelize.literal(name);
201
+ if (rule.operation === __1.FilterOperatorTypes.Contains || rule.operation === __1.FilterOperatorTypes.NotContains) {
202
+ /**
203
+ * We override the rule to use an equal or not equal with a JSON_CONTAINS function
204
+ */
205
+ const newRule = {
206
+ operation: rule.operation === __1.FilterOperatorTypes.Contains ? __1.FilterOperatorTypes.Equal : __1.FilterOperatorTypes.NotEqual,
207
+ value: true
208
+ };
209
+ const value = typeof rule.value === "string" ? `"${rule.value}"` : rule.value;
210
+ if (this.json.path) {
211
+ return (0, sequelize_1.where)((0, sequelize_1.fn)("JSON_CONTAINS", colName, value, this.json.path), sequelize_utils_1.SequelizeUtils.generateWhereValue(newRule));
212
+ }
213
+ return (0, sequelize_1.where)((0, sequelize_1.fn)("JSON_CONTAINS", colName, value), sequelize_utils_1.SequelizeUtils.generateWhereValue(newRule));
214
+ }
215
+ return null;
216
+ }
217
+ transformForJsonObject(rule, name) {
218
+ const colName = this.path ? sequelize_1.Sequelize.col(name) : sequelize_1.Sequelize.literal(name);
219
+ const value = sequelize_utils_1.SequelizeUtils.generateWhereValue(rule);
220
+ if (this.json.path) {
221
+ return sequelize_1.Sequelize.where(sequelize_1.Sequelize.fn("JSON_EXTRACT", colName, this.json.path), value);
222
+ }
223
+ return sequelize_1.Sequelize.where(sequelize_1.Sequelize.fn("JSON_EXTRACT", colName), value);
224
+ }
184
225
  }
185
226
  exports.Filter = Filter;
186
227
 
187
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVycy9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUEsa0RBQThDO0FBSTlDLHlDQUFvRTtBQUVwRSwyREFBdUQ7QUE4Q3ZELE1BQXNCLE1BQU07SUF3QnhCLFlBQXNCLFVBQWlDO1FBdkIvQyxVQUFLLEdBQUcsUUFBUSxDQUFDO1FBaUJsQixhQUFRLEdBQUcsSUFBSSxDQUFDO1FBT25CLElBQUksVUFBVSxFQUFFO1lBQ1osTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsVUFBVSxDQUFDLENBQUM7U0FDbkM7SUFDTCxDQUFDO0lBdkJELElBQVcsZ0JBQWdCLENBQUMsZ0JBQWtDO1FBQzFELElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBZ0IsQ0FBQztJQUM5QyxDQUFDO0lBYU0sTUFBTSxDQUFDLFFBQVEsQ0FBQyxVQUE0QjtRQUMvQyxPQUFPLFVBQVUsQ0FBQyxPQUFPLENBQUMsS0FBSyxRQUFRLENBQUM7SUFDNUMsQ0FBQztJQVFNLFlBQVksQ0FBQyxHQUFHLFFBQWtEO1FBQ3JFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDakMsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLGVBQWUsQ0FBQyxHQUFHLFFBQWtEO1FBQ3hFLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM1RSxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0lBRU0sWUFBWSxDQUFDLEdBQUcsUUFBa0Q7UUFDckUsSUFBSSxDQUFDLFNBQVMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7UUFDL0IsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FB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SyxDQUFDLENBQUMsRUFBRTtnQkFDMUQsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFzQixDQUFDLENBQUM7YUFDdEM7U0FDSjtRQUVELE9BQU8sS0FBSyxDQUFDO0lBQ2pCLENBQUM7Q0FDSjtBQXBPRCx3QkFvT0MiLCJmaWxlIjoibGliL2ZpbHRlci9maWx0ZXJzL2ZpbHRlci5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IERhdGFGaWx0ZXJVc2VyTW9kZWwgfSBmcm9tIFwiLi4vLi5cIjtcbmltcG9ydCB7IFRyYW5zbGF0ZUFkYXB0ZXIgfSBmcm9tIFwiLi4vLi4vYWRhcHRlcnMvdHJhbnNsYXRlLmFkYXB0ZXJcIjtcbmltcG9ydCB7IEZpbHRlclV0aWxzIH0gZnJvbSBcIi4uL2ZpbHRlci51dGlsc1wiO1xuaW1wb3J0IHsgQ3VzdG9tT3BlcmF0b3IsIEZpbHRlck9wZXJhdG9ycywgRmlsdGVyT3BlcmF0b3JUeXBlcyB9IGZyb20gXCIuLi9vcGVyYXRvcnNcIjtcbmltcG9ydCB7IEZpbHRlclR5cGUgfSBmcm9tIFwiLi4vdHlwZVwiO1xuaW1wb3J0IHsgRmlsdGVyQmFzZUNvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvZmlsdGVyLWNvbmZpZ3VyYXRpb24ubW9kZWxcIjtcbmltcG9ydCB7IE9wLCB3aGVyZSwgV2hlcmVPcGVyYXRvcnMsIFdoZXJlT3B0aW9ucyB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IFF1ZXJ5TW9kZWwsIFF1ZXJ5UnVsZU1vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9xdWVyeS5tb2RlbFwiO1xuaW1wb3J0IHsgU2VxdWVsaXplVXRpbHMgfSBmcm9tIFwiLi4vLi4vc2VxdWVsaXplLnV0aWxzXCI7XG5pbXBvcnQgeyBSdWxlTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL3J1bGUubW9kZWxcIjtcbmltcG9ydCB7IEluY2x1ZGVXaGVyZU1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9pbmNsdWRlLm1vZGVsXCI7XG5cbmV4cG9ydCB0eXBlIENvbmRpdGlvbiA9IFwiYW5kXCIgfCBcIm9yXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyQ29uZGl0aW9uUnVsZSBleHRlbmRzIFJ1bGVNb2RlbCB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgcGF0aD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJDb25kaXRpb24ge1xuICAgIGNvbmRpdGlvbjogQ29uZGl0aW9uO1xuICAgIHJ1bGVzOiAoRmlsdGVyQ29uZGl0aW9uUnVsZSB8IEZpbHRlckNvbmRpdGlvbilbXTtcbn1cblxuZXhwb3J0IHR5cGUgUGF0aENvbmRpdGlvbiA9IGJvb2xlYW4gfCB7XG4gICAgW2ZpbHRlcjogc3RyaW5nXTogYW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEJhc2VGaWx0ZXJEZWZpbml0aW9uIHtcbiAgICBhdHRyaWJ1dGU6IHN0cmluZztcbiAgICBwYXRoPzogc3RyaW5nO1xuICAgIGhhdmluZz86IGFueTtcbiAgICBwYXJhbm9pZD86IGJvb2xlYW47XG4gICAgY29uZGl0aW9uPzogRmlsdGVyQ29uZGl0aW9uO1xuICAgIGdyb3VwPzogc3RyaW5nO1xuICAgIHdoZXJlPzogSW5jbHVkZVdoZXJlTW9kZWw7XG4gICAgcGF0aENvbmRpdGlvbj86IFBhdGhDb25kaXRpb247XG5cbiAgICAvKipcbiAgICAgKiBQcml2YXRlIG1lYW5zIHRoYXQgdGhlIGNvbmZpZyB3aWxsIG5vdCBiZSByZXR1cm5lZC5cbiAgICAgKi9cbiAgICBwcml2YXRlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJEZWZpbml0aW9uIGV4dGVuZHMgQmFzZUZpbHRlckRlZmluaXRpb24ge1xuICAgIHR5cGU6IEZpbHRlclR5cGU7XG4gICAgb3BlcmF0b3JzOiAoRmlsdGVyT3BlcmF0b3JUeXBlcyB8IEN1c3RvbU9wZXJhdG9yKVtdO1xuXG4gICAgZ2V0Q29uZmlnKGtleTogc3RyaW5nLCB1c2VyPzogRGF0YUZpbHRlclVzZXJNb2RlbCk6IFByb21pc2U8RmlsdGVyQmFzZUNvbmZpZ3VyYXRpb25Nb2RlbD47XG4gICAgZ2V0V2hlcmVPcHRpb25zKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsKTogUHJvbWlzZTxXaGVyZU9wdGlvbnM+O1xuICAgIGdldEhhdmluZ09wdGlvbnMocnVsZTogUXVlcnlSdWxlTW9kZWwpOiBQcm9taXNlPFdoZXJlT3B0aW9ucz47XG4gICAgdXNlUGF0aENvbmRpdGlvbihxdWVyeTogUXVlcnlNb2RlbCk6IGJvb2xlYW47XG59XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBGaWx0ZXIgaW1wbGVtZW50cyBGaWx0ZXJEZWZpbml0aW9uIHtcbiAgICBwcml2YXRlIF90eXBlID0gXCJmaWx0ZXJcIjtcblxuICAgIHByb3RlY3RlZCBfdHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlQWRhcHRlcjtcblxuICAgIHB1YmxpYyBzZXQgdHJhbnNsYXRlU2VydmljZSh0cmFuc2xhdGVTZXJ2aWNlOiBUcmFuc2xhdGVBZGFwdGVyKSB7XG4gICAgICAgIHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UgPSB0cmFuc2xhdGVTZXJ2aWNlO1xuICAgIH1cblxuICAgIHB1YmxpYyB0eXBlOiBGaWx0ZXJUeXBlO1xuICAgIHB1YmxpYyBvcGVyYXRvcnM6IChGaWx0ZXJPcGVyYXRvclR5cGVzIHwgQ3VzdG9tT3BlcmF0b3IpW107XG4gICAgcHVibGljIGdyb3VwOiBzdHJpbmc7XG4gICAgcHVibGljIGF0dHJpYnV0ZTogc3RyaW5nO1xuICAgIHB1YmxpYyBoYXZpbmc/OiBhbnk7XG4gICAgcHVibGljIHBhdGg/OiBzdHJpbmc7XG4gICAgcHVibGljIGNvbmRpdGlvbj86IEZpbHRlckNvbmRpdGlvbjtcbiAgICBwdWJsaWMgcGF0aENvbmRpdGlvbj86IFBhdGhDb25kaXRpb247XG4gICAgcHVibGljIHByaXZhdGU/OiBib29sZWFuO1xuICAgIHB1YmxpYyBwYXJhbm9pZCA9IHRydWU7XG5cbiAgICBwdWJsaWMgc3RhdGljIHZhbGlkYXRlKGRlZmluaXRpb246IEZpbHRlckRlZmluaXRpb24pIHtcbiAgICAgICAgcmV0dXJuIGRlZmluaXRpb25bXCJfdHlwZVwiXSA9PT0gXCJmaWx0ZXJcIjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoZGVmaW5pdGlvbj86IEJhc2VGaWx0ZXJEZWZpbml0aW9uKSB7XG4gICAgICAgIGlmIChkZWZpbml0aW9uKSB7XG4gICAgICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGRlZmluaXRpb24pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIGFkZE9wZXJhdG9ycyguLi5vcGVyYXRvcjogKEZpbHRlck9wZXJhdG9yVHlwZXMgfCBDdXN0b21PcGVyYXRvcilbXSk6IEZpbHRlciB7XG4gICAgICAgIHRoaXMub3BlcmF0b3JzLnB1c2goLi4ub3BlcmF0b3IpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVtb3ZlT3BlcmF0b3JzKC4uLm9wZXJhdG9yOiAoRmlsdGVyT3BlcmF0b3JUeXBlcyB8IEN1c3RvbU9wZXJhdG9yKVtdKTogRmlsdGVyIHtcbiAgICAgICAgdGhpcy5vcGVyYXRvcnMgPSB0aGlzLm9wZXJhdG9ycy5maWx0ZXIoeCA9PiAhb3BlcmF0b3Iuc29tZShvcCA9PiBvcCA9PT0geCkpO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0T3BlcmF0b3JzKC4uLm9wZXJhdG9yOiAoRmlsdGVyT3BlcmF0b3JUeXBlcyB8IEN1c3RvbU9wZXJhdG9yKVtdKTogRmlsdGVyIHtcbiAgICAgICAgdGhpcy5vcGVyYXRvcnMgPSBbLi4ub3BlcmF0b3JdO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29uZmlnKGtleTogc3RyaW5nLCB1c2VyPzogRGF0YUZpbHRlclVzZXJNb2RlbCk6IFByb21pc2U8RmlsdGVyQmFzZUNvbmZpZ3VyYXRpb25Nb2RlbD4ge1xuICAgICAgICBpZiAodGhpcy5wcml2YXRlKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25maWcgPSB7XG4gICAgICAgICAgICB0eXBlOiB0aGlzLnR5cGUsXG4gICAgICAgICAgICBvcGVyYXRvcnM6IGF3YWl0IFByb21pc2UuYWxsKHRoaXMub3BlcmF0b3JzLm1hcChhc3luYyB4ID0+IHtcbiAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlkOiB4LFxuICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTogYXdhaXQgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXRUcmFuc2xhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyPy5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJVdGlscy5nZXRPcGVyYXRvclRyYW5zbGF0aW9uS2V5KHgpXG4gICAgICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgICAgICAgaWQ6IHgubmFtZSxcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogYXdhaXQgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXRUcmFuc2xhdGlvbihcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/Lmxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgRmlsdGVyVXRpbHMuZ2V0Q3VzdG9tT3BlcmF0b3JUcmFuc2xhdGlvbktleShrZXksIHgubmFtZSlcbiAgICAgICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICB9KSlcbiAgICAgICAgfSBhcyBGaWx0ZXJCYXNlQ29uZmlndXJhdGlvbk1vZGVsO1xuXG4gICAgICAgIGlmICh0aGlzLmdyb3VwKSB7XG4gICAgICAgICAgICBjb25maWcuZ3JvdXAgPSB7XG4gICAgICAgICAgICAgICAga2V5OiB0aGlzLmdyb3VwLFxuICAgICAgICAgICAgICAgIG5hbWU6IGF3YWl0IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24odXNlcj8ubGFuZ3VhZ2UsIEZpbHRlclV0aWxzLmdldEdyb3VwVHJhbnNsYXRpb25LZXkodGhpcy5ncm91cCkpXG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGNvbmZpZztcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0V2hlcmVPcHRpb25zKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsLCBuYW1lPzogc3RyaW5nKTogUHJvbWlzZTxXaGVyZU9wdGlvbnM+IHtcbiAgICAgICAgaWYgKCFuYW1lKSB7XG4gICAgICAgICAgICBuYW1lID0gdGhpcy5wYXRoID8gU2VxdWVsaXplVXRpbHMuZ2V0QXR0cmlidXRlRnVsbE5hbWUodGhpcy5hdHRyaWJ1dGUsIHRoaXMucGF0aCkgOiB0aGlzLmF0dHJpYnV0ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG9wID0gdGhpcy5vcGVyYXRvcnMuZmluZCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHgubmFtZSA9PT0gcnVsZS5vcGVyYXRpb247XG4gICAgICAgIH0pIGFzIEN1c3RvbU9wZXJhdG9yO1xuICAgICAgICBpZiAob3A/Lm9wZXJhdG9yKSB7XG4gICAgICAgICAgICBydWxlLm9wZXJhdGlvbiA9IG9wLm9wZXJhdG9yO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgdmFsdWUgPSBTZXF1ZWxpemVVdGlscy5nZW5lcmF0ZVdoZXJlVmFsdWUocnVsZSk7XG4gICAgICAgIGNvbnN0IHdoZXJlID0gKHZhbHVlID09PSB1bmRlZmluZWQgfHwgdGhpcy5oYXZpbmcpID9cbiAgICAgICAgICAgIHRoaXMuZ2V0Q29uZGl0aW9uV2hlcmVPcHRpb25zKG51bGwpIDpcbiAgICAgICAgICAgIHRoaXMuZ2V0Q29uZGl0aW9uV2hlcmVPcHRpb25zKHtcbiAgICAgICAgICAgICAgICBbbmFtZV06IHZhbHVlXG4gICAgICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGhpcy5nZXRPcGVyYXRvcldoZXJlT3B0aW9ucyhydWxlLm9wZXJhdGlvbiwgd2hlcmUsIHJ1bGUudmFsdWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRIYXZpbmdPcHRpb25zKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsKTogUHJvbWlzZTxXaGVyZU9wdGlvbnM+IHtcbiAgICAgICAgaWYgKCF0aGlzLmhhdmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JIYXZpbmdPcHRpb25zKHJ1bGUub3BlcmF0aW9uLCBudWxsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBvcHRpb25zOiBXaGVyZU9wdGlvbnM7XG4gICAgICAgIGlmICh0aGlzLmhhdmluZy5hdHRyaWJ1dGUpIHtcbiAgICAgICAgICAgIG9wdGlvbnMgPSB0aGlzLmhhdmluZztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gU2VxdWVsaXplVXRpbHMuZ2VuZXJhdGVXaGVyZVZhbHVlKHJ1bGUpIGFzIFdoZXJlT3BlcmF0b3JzO1xuICAgICAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsIHx8IHR5cGVvZiB2YWx1ZSAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgICAgICAgIG9wdGlvbnMgPSB3aGVyZSh0aGlzLmhhdmluZywgdmFsdWUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JIYXZpbmdPcHRpb25zKHJ1bGUub3BlcmF0aW9uLCBvcHRpb25zKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdXNlUGF0aENvbmRpdGlvbihxdWVyeTogUXVlcnlNb2RlbCk6IGJvb2xlYW4ge1xuICAgICAgICBpZiAoIXRoaXMucGF0aENvbmRpdGlvbiB8fCB0eXBlb2YgdGhpcy5wYXRoQ29uZGl0aW9uID09PSBcImJvb2xlYW5cIikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKHRoaXMucGF0aENvbmRpdGlvbik7XG4gICAgICAgIGNvbnN0IHJ1bGVzID0gdGhpcy5nZXRSdWxlRnJvbUtleXMocXVlcnksIGtleXMpO1xuICAgICAgICBpZiAoa2V5cy5sZW5ndGggIT09IHJ1bGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJ1bGVzLmV2ZXJ5KHggPT4gdGhpcy5wYXRoQ29uZGl0aW9uW3guaWRdID09PSB4LnZhbHVlKTtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0Q29uZGl0aW9uV2hlcmVPcHRpb25zKHdoZXJlOiBXaGVyZU9wdGlvbnMpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBpZiAoIXRoaXMuY29uZGl0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25kaXRpb25zID0gd2hlcmUgPyBbd2hlcmVdIDogW107XG4gICAgICAgIGNvbnN0IG9wdGlvbiA9IHRoaXMuY29uZGl0aW9uLmNvbmRpdGlvbiA9PT0gXCJhbmRcIiA/IHsgW09wLmFuZF06IGNvbmRpdGlvbnMgfSA6IHsgW09wLm9yXTogY29uZGl0aW9ucyB9O1xuICAgICAgICB0aGlzLmdlbmVyYXRlUnVsZVdoZXJlT3B0aW9ucyh0aGlzLmNvbmRpdGlvbiwgY29uZGl0aW9ucyk7XG4gICAgICAgIHJldHVybiBvcHRpb247XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdlbmVyYXRlUnVsZVdoZXJlT3B0aW9ucyhmaWx0ZXI6IEZpbHRlckNvbmRpdGlvbiwgb3B0aW9uczogV2hlcmVPcHRpb25zW10pIHtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIGZpbHRlci5ydWxlcykge1xuICAgICAgICAgICAgY29uc3QgYyA9IHJ1bGUgYXMgRmlsdGVyQ29uZGl0aW9uO1xuICAgICAgICAgICAgaWYgKGMuY29uZGl0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IFtdO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMucHVzaChjLmNvbmRpdGlvbiA9PT0gXCJhbmRcIiA/IHsgW09wLmFuZF06IGNvbmRpdGlvbnMgfSA6IHsgW09wLm9yXTogW10gfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVJ1bGVXaGVyZU9wdGlvbnMoYywgY29uZGl0aW9ucyk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHIgPSBydWxlIGFzIEZpbHRlckNvbmRpdGlvblJ1bGU7XG4gICAgICAgICAgICBjb25zdCBuYW1lID0gci5wYXRoID8gU2VxdWVsaXplVXRpbHMuZ2V0QXR0cmlidXRlRnVsbE5hbWUoci5rZXksIHIucGF0aCkgOiByLmtleTtcbiAgICAgICAgICAgIG9wdGlvbnMucHVzaCh7XG4gICAgICAgICAgICAgICAgW25hbWVdOiBTZXF1ZWxpemVVdGlscy5nZW5lcmF0ZVdoZXJlVmFsdWUocnVsZSBhcyBSdWxlTW9kZWwpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByb3RlY3RlZCBnZXRPcGVyYXRvckhhdmluZ09wdGlvbnMob3BlcmF0b3I6IEZpbHRlck9wZXJhdG9ycywgd2hlcmU6IFdoZXJlT3B0aW9ucyk6IFdoZXJlT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IG9wID0gdGhpcy5vcGVyYXRvcnMuZmluZCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHgubmFtZSA9PT0gb3BlcmF0b3I7XG4gICAgICAgIH0pIGFzIEN1c3RvbU9wZXJhdG9yO1xuICAgICAgICBpZiAoIW9wKSB7XG4gICAgICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW9wLmhhdmluZykge1xuICAgICAgICAgICAgcmV0dXJuIHdoZXJlO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHdoZXJlXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIFtPcC5hbmRdOiBbd2hlcmUsIG9wLmhhdmluZ11cbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgOiBvcC5oYXZpbmc7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldE9wZXJhdG9yV2hlcmVPcHRpb25zKG9wZXJhdG9yOiBGaWx0ZXJPcGVyYXRvcnMsIHdoZXJlOiBXaGVyZU9wdGlvbnMsIHZhbHVlOiBhbnkpOiBXaGVyZU9wdGlvbnMge1xuICAgICAgICBjb25zdCBvcCA9IHRoaXMub3BlcmF0b3JzLmZpbmQoeCA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHggPT09IFwic3RyaW5nXCIpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB4Lm5hbWUgPT09IG9wZXJhdG9yO1xuICAgICAgICB9KSBhcyBDdXN0b21PcGVyYXRvcjtcbiAgICAgICAgaWYgKCFvcCkge1xuICAgICAgICAgICAgcmV0dXJuIHdoZXJlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcC53aGVyZSkge1xuICAgICAgICAgICAgcmV0dXJuIHdoZXJlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3BXaGVyZSA9IHR5cGVvZiBvcC53aGVyZSA9PT0gXCJmdW5jdGlvblwiID8gb3Aud2hlcmUodmFsdWUpIDogb3Aud2hlcmU7XG4gICAgICAgIHJldHVybiB3aGVyZVxuICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICBbT3AuYW5kXTogW3doZXJlLCBvcFdoZXJlXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IG9wV2hlcmU7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRSdWxlRnJvbUtleXMocXVlcnk6IFF1ZXJ5TW9kZWwsIGtleXM6IHN0cmluZ1tdKTogUXVlcnlSdWxlTW9kZWxbXSB7XG4gICAgICAgIGNvbnN0IHJ1bGVzOiBRdWVyeVJ1bGVNb2RlbFtdID0gW107XG4gICAgICAgIGZvciAoY29uc3QgcnVsZSBvZiBxdWVyeS5ydWxlcykge1xuICAgICAgICAgICAgaWYgKChydWxlIGFzIFF1ZXJ5TW9kZWwpLmNvbmRpdGlvbikge1xuICAgICAgICAgICAgICAgIHJ1bGVzLnB1c2goLi4udGhpcy5nZXRSdWxlRnJvbUtleXMocnVsZSBhcyBRdWVyeU1vZGVsLCBrZXlzKSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKGtleXMuc29tZSh4ID0+IChydWxlIGFzIFF1ZXJ5UnVsZU1vZGVsKS5pZCA9PT0geCkpIHtcbiAgICAgICAgICAgICAgICBydWxlcy5wdXNoKHJ1bGUgYXMgUXVlcnlSdWxlTW9kZWwpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHJ1bGVzO1xuICAgIH1cbn1cbiJdfQ==
228
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVycy9maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQThGO0FBQzlGLDZCQUFpRTtBQUdqRSwyREFBdUQ7QUFDdkQsa0RBQThDO0FBMEQ5QyxNQUFzQixNQUFNO0lBeUJ4QixZQUFzQixVQUFpQztRQXhCL0MsVUFBSyxHQUFHLFFBQVEsQ0FBQztRQWtCbEIsYUFBUSxHQUFHLElBQUksQ0FBQztRQU9uQixJQUFJLFVBQVUsRUFBRTtZQUNaLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLFVBQVUsQ0FBQyxDQUFDO1NBQ25DO0lBQ0wsQ0FBQztJQXhCRCxJQUFXLGdCQUFnQixDQUFDLGdCQUFrQztRQUMxRCxJQUFJLENBQUMsaUJBQWlCLEdBQUcsZ0JBQWdCLENBQUM7SUFDOUMsQ0FBQztJQWNNLE1BQU0sQ0FBQyxRQUFRLENBQUMsVUFBNEI7UUFDL0MsT0FBTyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssUUFBUSxDQUFDO0lBQzVDLENBQUM7SUFRTSxZQUFZLENBQUMsR0FBRyxRQUFrRDtRQUNyRSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQ2pDLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7SUFFTSxlQUFlLENBQUMsR0FBRyxRQUFrRDtRQUN4RSxJQUFJLENBQUMsU0FBUyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDNUUsT0FBTyxJQUFJLENBQUM7SUFDaEIsQ0FBQztJQUVNLFlBQVksQ0FBQyxHQUFHLFFBQWtEO1FBQ3JFLElBQUksQ0FBQyxTQUFTLEdBQUcsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO1FBQy9CLE9BQU8sSUFBSSxD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QUFJLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2hCLE9BQU8scUJBQVMsQ0FBQyxLQUFLLENBQUMscUJBQVMsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQWtCLENBQUMsQ0FBQztTQUNyRztRQUVELE9BQU8scUJBQVMsQ0FBQyxLQUFLLENBQUMscUJBQVMsQ0FBQyxFQUFFLENBQUMsY0FBYyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEtBQWtCLENBQUMsQ0FBQztJQUN0RixDQUFDO0NBQ0o7QUFyUkQsd0JBcVJDIiwiZmlsZSI6ImxpYi9maWx0ZXIvZmlsdGVycy9maWx0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBmbiwgTG9naWNUeXBlLCBPcCwgU2VxdWVsaXplLCB3aGVyZSwgV2hlcmVPcGVyYXRvcnMsIFdoZXJlT3B0aW9ucyB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IERhdGFGaWx0ZXJVc2VyTW9kZWwsIEZpbHRlck9wZXJhdG9yVHlwZXMgfSBmcm9tIFwiLi4vLi5cIjtcbmltcG9ydCB7IFRyYW5zbGF0ZUFkYXB0ZXIgfSBmcm9tIFwiLi4vLi4vYWRhcHRlcnMvdHJhbnNsYXRlLmFkYXB0ZXJcIjtcbmltcG9ydCB7IEluY2x1ZGVXaGVyZU1vZGVsIH0gZnJvbSBcIi4uLy4uL21vZGVscy9pbmNsdWRlLm1vZGVsXCI7XG5pbXBvcnQgeyBTZXF1ZWxpemVVdGlscyB9IGZyb20gXCIuLi8uLi9zZXF1ZWxpemUudXRpbHNcIjtcbmltcG9ydCB7IEZpbHRlclV0aWxzIH0gZnJvbSBcIi4uL2ZpbHRlci51dGlsc1wiO1xuaW1wb3J0IHsgRmlsdGVyQmFzZUNvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvZmlsdGVyLWNvbmZpZ3VyYXRpb24ubW9kZWxcIjtcbmltcG9ydCB7IFF1ZXJ5TW9kZWwsIFF1ZXJ5UnVsZU1vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9xdWVyeS5tb2RlbFwiO1xuaW1wb3J0IHsgUnVsZU1vZGVsIH0gZnJvbSBcIi4uL21vZGVscy9ydWxlLm1vZGVsXCI7XG5pbXBvcnQgeyBDdXN0b21PcGVyYXRvciwgRmlsdGVyT3BlcmF0b3JzIH0gZnJvbSBcIi4uL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRmlsdGVyVHlwZSB9IGZyb20gXCIuLi90eXBlXCI7XG5cbmV4cG9ydCB0eXBlIENvbmRpdGlvbiA9IFwiYW5kXCIgfCBcIm9yXCI7XG5cbi8vIFRPRE86IERlcHJlY2F0ZSBrZXkgdG8gdXNlIGF0dHJpYnV0ZSBpbnN0ZWFkIHRvIGJlIGNvbnNpc3RhbnQgd2l0aCB0aGUgQmFzZUZpbHRlckRlZmluaXRpb25cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyQ29uZGl0aW9uUnVsZSB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgcGF0aD86IHN0cmluZztcbiAgICBvcGVyYXRpb246IEZpbHRlck9wZXJhdG9ycztcbiAgICB2YWx1ZTogKHVua25vd24gfCB1bmtub3duW10pIHwgKCh2YWx1ZTogdW5rbm93biB8IHVua25vd25bXSkgPT4gdW5rbm93biB8IHVua25vd25bXSlcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGaWx0ZXJDb25kaXRpb24ge1xuICAgIGNvbmRpdGlvbjogQ29uZGl0aW9uO1xuICAgIHJ1bGVzOiAoRmlsdGVyQ29uZGl0aW9uUnVsZSB8IEZpbHRlckNvbmRpdGlvbilbXTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBKc29uQ29uZmlnIHtcbiAgICB0eXBlOiBcImFycmF5XCIgfCBcIm9iamVjdFwiO1xuICAgIHBhdGg/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFBhdGhDb25kaXRpb24gPSBib29sZWFuIHwge1xuICAgIFtmaWx0ZXI6IHN0cmluZ106IGFueTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBCYXNlRmlsdGVyRGVmaW5pdGlvbiB7XG4gICAgYXR0cmlidXRlOiBzdHJpbmc7XG4gICAgcGF0aD86IHN0cmluZztcbiAgICBoYXZpbmc/OiBhbnk7XG4gICAgcGFyYW5vaWQ/OiBib29sZWFuO1xuICAgIGNvbmRpdGlvbj86IEZpbHRlckNvbmRpdGlvbjtcbiAgICBncm91cD86IHN0cmluZztcbiAgICB3aGVyZT86IEluY2x1ZGVXaGVyZU1vZGVsO1xuICAgIHBhdGhDb25kaXRpb24/OiBQYXRoQ29uZGl0aW9uO1xuICAgIGpzb24/OiBKc29uQ29uZmlnO1xuXG4gICAgLyoqXG4gICAgICogUHJpdmF0ZSBtZWFucyB0aGF0IHRoZSBjb25maWcgd2lsbCBub3QgYmUgcmV0dXJuZWQuXG4gICAgICovXG4gICAgcHJpdmF0ZT86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyRGVmaW5pdGlvbiBleHRlbmRzIEJhc2VGaWx0ZXJEZWZpbml0aW9uIHtcbiAgICB0eXBlOiBGaWx0ZXJUeXBlO1xuICAgIG9wZXJhdG9yczogKEZpbHRlck9wZXJhdG9yVHlwZXMgfCBDdXN0b21PcGVyYXRvcilbXTtcblxuICAgIGdldENvbmZpZyhrZXk6IHN0cmluZywgdXNlcj86IERhdGFGaWx0ZXJVc2VyTW9kZWwpOiBQcm9taXNlPEZpbHRlckJhc2VDb25maWd1cmF0aW9uTW9kZWw+O1xuICAgIGdldFdoZXJlT3B0aW9ucyhydWxlOiBRdWVyeVJ1bGVNb2RlbCk6IFByb21pc2U8V2hlcmVPcHRpb25zPjtcbiAgICBnZXRIYXZpbmdPcHRpb25zKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsKTogUHJvbWlzZTxXaGVyZU9wdGlvbnM+O1xuICAgIHVzZVBhdGhDb25kaXRpb24ocXVlcnk6IFF1ZXJ5TW9kZWwpOiBib29sZWFuO1xufVxuXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmlsdGVyIGltcGxlbWVudHMgRmlsdGVyRGVmaW5pdGlvbiB7XG4gICAgcHJpdmF0ZSBfdHlwZSA9IFwiZmlsdGVyXCI7XG5cbiAgICBwcm90ZWN0ZWQgX3RyYW5zbGF0ZVNlcnZpY2U6IFRyYW5zbGF0ZUFkYXB0ZXI7XG5cbiAgICBwdWJsaWMgc2V0IHRyYW5zbGF0ZVNlcnZpY2UodHJhbnNsYXRlU2VydmljZTogVHJhbnNsYXRlQWRhcHRlcikge1xuICAgICAgICB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlID0gdHJhbnNsYXRlU2VydmljZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHlwZTogRmlsdGVyVHlwZTtcbiAgICBwdWJsaWMgb3BlcmF0b3JzOiAoRmlsdGVyT3BlcmF0b3JUeXBlcyB8IEN1c3RvbU9wZXJhdG9yKVtdO1xuICAgIHB1YmxpYyBncm91cDogc3RyaW5nO1xuICAgIHB1YmxpYyBhdHRyaWJ1dGU6IHN0cmluZztcbiAgICBwdWJsaWMgaGF2aW5nPzogYW55O1xuICAgIHB1YmxpYyBwYXRoPzogc3RyaW5nO1xuICAgIHB1YmxpYyBjb25kaXRpb24/OiBGaWx0ZXJDb25kaXRpb247XG4gICAgcHVibGljIHBhdGhDb25kaXRpb24/OiBQYXRoQ29uZGl0aW9uO1xuICAgIHB1YmxpYyBqc29uPzogSnNvbkNvbmZpZztcbiAgICBwdWJsaWMgcHJpdmF0ZT86IGJvb2xlYW47XG4gICAgcHVibGljIHBhcmFub2lkID0gdHJ1ZTtcblxuICAgIHB1YmxpYyBzdGF0aWMgdmFsaWRhdGUoZGVmaW5pdGlvbjogRmlsdGVyRGVmaW5pdGlvbikge1xuICAgICAgICByZXR1cm4gZGVmaW5pdGlvbltcIl90eXBlXCJdID09PSBcImZpbHRlclwiO1xuICAgIH1cblxuICAgIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihkZWZpbml0aW9uPzogQmFzZUZpbHRlckRlZmluaXRpb24pIHtcbiAgICAgICAgaWYgKGRlZmluaXRpb24pIHtcbiAgICAgICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywgZGVmaW5pdGlvbik7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkT3BlcmF0b3JzKC4uLm9wZXJhdG9yOiAoRmlsdGVyT3BlcmF0b3JUeXBlcyB8IEN1c3RvbU9wZXJhdG9yKVtdKTogRmlsdGVyIHtcbiAgICAgICAgdGhpcy5vcGVyYXRvcnMucHVzaCguLi5vcGVyYXRvcik7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyByZW1vdmVPcGVyYXRvcnMoLi4ub3BlcmF0b3I6IChGaWx0ZXJPcGVyYXRvclR5cGVzIHwgQ3VzdG9tT3BlcmF0b3IpW10pOiBGaWx0ZXIge1xuICAgICAgICB0aGlzLm9wZXJhdG9ycyA9IHRoaXMub3BlcmF0b3JzLmZpbHRlcih4ID0+ICFvcGVyYXRvci5zb21lKG9wID0+IG9wID09PSB4KSk7XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBzZXRPcGVyYXRvcnMoLi4ub3BlcmF0b3I6IChGaWx0ZXJPcGVyYXRvclR5cGVzIHwgQ3VzdG9tT3BlcmF0b3IpW10pOiBGaWx0ZXIge1xuICAgICAgICB0aGlzLm9wZXJhdG9ycyA9IFsuLi5vcGVyYXRvcl07XG4gICAgICAgIHJldHVybiB0aGlzO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRDb25maWcoa2V5OiBzdHJpbmcsIHVzZXI/OiBEYXRhRmlsdGVyVXNlck1vZGVsKTogUHJvbWlzZTxGaWx0ZXJCYXNlQ29uZmlndXJhdGlvbk1vZGVsPiB7XG4gICAgICAgIGlmICh0aGlzLnByaXZhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbmZpZyA9IHtcbiAgICAgICAgICAgIHR5cGU6IHRoaXMudHlwZSxcbiAgICAgICAgICAgIG9wZXJhdG9yczogYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5vcGVyYXRvcnMubWFwKGFzeW5jIHggPT4ge1xuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWQ6IHgsXG4gICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBhd2FpdCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXI/Lmxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbHRlclV0aWxzLmdldE9wZXJhdG9yVHJhbnNsYXRpb25LZXkoeClcbiAgICAgICAgICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICBpZDogeC5uYW1lLFxuICAgICAgICAgICAgICAgICAgICBuYW1lOiBhd2FpdCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICAgICAgdXNlcj8ubGFuZ3VhZ2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBGaWx0ZXJVdGlscy5nZXRDdXN0b21PcGVyYXRvclRyYW5zbGF0aW9uS2V5KGtleSwgeC5uYW1lKVxuICAgICAgICAgICAgICAgICAgICApXG4gICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIH0pKVxuICAgICAgICB9IGFzIEZpbHRlckJhc2VDb25maWd1cmF0aW9uTW9kZWw7XG5cbiAgICAgICAgaWYgKHRoaXMuZ3JvdXApIHtcbiAgICAgICAgICAgIGNvbmZpZy5ncm91cCA9IHtcbiAgICAgICAgICAgICAgICBrZXk6IHRoaXMuZ3JvdXAsXG4gICAgICAgICAgICAgICAgbmFtZTogYXdhaXQgdGhpcy5fdHJhbnNsYXRlU2VydmljZS5nZXRUcmFuc2xhdGlvbih1c2VyPy5sYW5ndWFnZSwgRmlsdGVyVXRpbHMuZ2V0R3JvdXBUcmFuc2xhdGlvbktleSh0aGlzLmdyb3VwKSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gY29uZmlnO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRXaGVyZU9wdGlvbnMocnVsZTogUXVlcnlSdWxlTW9kZWwsIG5hbWU/OiBzdHJpbmcpOiBQcm9taXNlPFdoZXJlT3B0aW9ucz4ge1xuICAgICAgICBpZiAoIW5hbWUpIHtcbiAgICAgICAgICAgIG5hbWUgPSB0aGlzLnBhdGggPyBTZXF1ZWxpemVVdGlscy5nZXRBdHRyaWJ1dGVGdWxsTmFtZSh0aGlzLmF0dHJpYnV0ZSwgdGhpcy5wYXRoKSA6IHRoaXMuYXR0cmlidXRlO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgb3AgPSB0aGlzLm9wZXJhdG9ycy5maW5kKHggPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geC5uYW1lID09PSBydWxlLm9wZXJhdGlvbjtcbiAgICAgICAgfSkgYXMgQ3VzdG9tT3BlcmF0b3I7XG4gICAgICAgIGlmIChvcD8ub3BlcmF0b3IpIHtcbiAgICAgICAgICAgIHJ1bGUub3BlcmF0aW9uID0gb3Aub3BlcmF0b3I7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB3aGVyZSA9IChydWxlPy52YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuaGF2aW5nKSA/XG4gICAgICAgICAgICB0aGlzLmdldENvbmRpdGlvbldoZXJlT3B0aW9ucyhudWxsLCBydWxlKSA6XG4gICAgICAgICAgICB0aGlzLmdldENvbmRpdGlvbldoZXJlT3B0aW9ucyh0aGlzLnRyYW5zZm9ybUNvbmRpdGlvbihydWxlLCBuYW1lKSwgcnVsZSk7XG5cbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0T3BlcmF0b3JXaGVyZU9wdGlvbnMocnVsZS5vcGVyYXRpb24sIHdoZXJlLCBydWxlLnZhbHVlKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0SGF2aW5nT3B0aW9ucyhydWxlOiBRdWVyeVJ1bGVNb2RlbCk6IFByb21pc2U8V2hlcmVPcHRpb25zPiB7XG4gICAgICAgIGlmICghdGhpcy5oYXZpbmcpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldE9wZXJhdG9ySGF2aW5nT3B0aW9ucyhydWxlLm9wZXJhdGlvbiwgbnVsbCk7XG4gICAgICAgIH1cblxuICAgICAgICBsZXQgb3B0aW9uczogV2hlcmVPcHRpb25zO1xuICAgICAgICBpZiAodGhpcy5oYXZpbmcuYXR0cmlidXRlKSB7XG4gICAgICAgICAgICBvcHRpb25zID0gdGhpcy5oYXZpbmc7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjb25zdCB2YWx1ZSA9IFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVWYWx1ZShydWxlKSBhcyBXaGVyZU9wZXJhdG9ycztcbiAgICAgICAgICAgIGlmICh2YWx1ZSAhPT0gbnVsbCB8fCB0eXBlb2YgdmFsdWUgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgICAgICAgICAgICBvcHRpb25zID0gd2hlcmUodGhpcy5oYXZpbmcsIHZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLmdldE9wZXJhdG9ySGF2aW5nT3B0aW9ucyhydWxlLm9wZXJhdGlvbiwgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcHVibGljIHVzZVBhdGhDb25kaXRpb24ocXVlcnk6IFF1ZXJ5TW9kZWwpOiBib29sZWFuIHtcbiAgICAgICAgaWYgKCF0aGlzLnBhdGhDb25kaXRpb24gfHwgdHlwZW9mIHRoaXMucGF0aENvbmRpdGlvbiA9PT0gXCJib29sZWFuXCIpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyh0aGlzLnBhdGhDb25kaXRpb24pO1xuICAgICAgICBjb25zdCBydWxlcyA9IHRoaXMuZ2V0UnVsZUZyb21LZXlzKHF1ZXJ5LCBrZXlzKTtcbiAgICAgICAgaWYgKGtleXMubGVuZ3RoICE9PSBydWxlcy5sZW5ndGgpIHtcbiAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBydWxlcy5ldmVyeSh4ID0+IHRoaXMucGF0aENvbmRpdGlvblt4LmlkXSA9PT0geC52YWx1ZSk7XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldENvbmRpdGlvbldoZXJlT3B0aW9ucyh3aGVyZTogV2hlcmVPcHRpb25zLCBydWxlOiBRdWVyeVJ1bGVNb2RlbCk6IFdoZXJlT3B0aW9ucyB7XG4gICAgICAgIGlmICghdGhpcy5jb25kaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiB3aGVyZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGNvbmRpdGlvbnMgPSB3aGVyZSA/IFt3aGVyZV0gOiBbXTtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5jb25kaXRpb24uY29uZGl0aW9uID09PSBcImFuZFwiID8geyBbT3AuYW5kXTogY29uZGl0aW9ucyB9IDogeyBbT3Aub3JdOiBjb25kaXRpb25zIH07XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVSdWxlV2hlcmVPcHRpb25zKHRoaXMuY29uZGl0aW9uLCBjb25kaXRpb25zLCBydWxlKTtcbiAgICAgICAgcmV0dXJuIG9wdGlvbjtcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2VuZXJhdGVSdWxlV2hlcmVPcHRpb25zKGZpbHRlcjogRmlsdGVyQ29uZGl0aW9uLCBvcHRpb25zOiBXaGVyZU9wdGlvbnNbXSwgcGFyZW50UnVsZTogUXVlcnlSdWxlTW9kZWwpIHtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIGZpbHRlci5ydWxlcykge1xuICAgICAgICAgICAgY29uc3QgYyA9IHJ1bGUgYXMgRmlsdGVyQ29uZGl0aW9uO1xuICAgICAgICAgICAgaWYgKGMuY29uZGl0aW9uKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IFtdO1xuICAgICAgICAgICAgICAgIG9wdGlvbnMucHVzaChjLmNvbmRpdGlvbiA9PT0gXCJhbmRcIiA/IHsgW09wLmFuZF06IGNvbmRpdGlvbnMgfSA6IHsgW09wLm9yXTogW10gfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5nZW5lcmF0ZVJ1bGVXaGVyZU9wdGlvbnMoYywgY29uZGl0aW9ucywgcGFyZW50UnVsZSk7XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxldCByID0gcnVsZSBhcyBGaWx0ZXJDb25kaXRpb25SdWxlO1xuICAgICAgICAgICAgY29uc3QgbmFtZSA9IHIucGF0aCA/IFNlcXVlbGl6ZVV0aWxzLmdldEF0dHJpYnV0ZUZ1bGxOYW1lKHIua2V5LCByLnBhdGgpIDogci5rZXk7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHIudmFsdWUgPT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICAgICAgICAgIHIgPSB7XG4gICAgICAgICAgICAgICAgICAgIC4uLnIsXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlOiByLnZhbHVlKHBhcmVudFJ1bGUudmFsdWUpXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgb3B0aW9ucy5wdXNoKHtcbiAgICAgICAgICAgICAgICBbbmFtZV06IFNlcXVlbGl6ZVV0aWxzLmdlbmVyYXRlV2hlcmVWYWx1ZShyIGFzIFJ1bGVNb2RlbClcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJvdGVjdGVkIGdldE9wZXJhdG9ySGF2aW5nT3B0aW9ucyhvcGVyYXRvcjogRmlsdGVyT3BlcmF0b3JzLCB3aGVyZTogV2hlcmVPcHRpb25zKTogV2hlcmVPcHRpb25zIHtcbiAgICAgICAgY29uc3Qgb3AgPSB0aGlzLm9wZXJhdG9ycy5maW5kKHggPT4ge1xuICAgICAgICAgICAgaWYgKHR5cGVvZiB4ID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4geC5uYW1lID09PSBvcGVyYXRvcjtcbiAgICAgICAgfSkgYXMgQ3VzdG9tT3BlcmF0b3I7XG4gICAgICAgIGlmICghb3ApIHtcbiAgICAgICAgICAgIHJldHVybiB3aGVyZTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghb3AuaGF2aW5nKSB7XG4gICAgICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gd2hlcmVcbiAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgW09wLmFuZF06IFt3aGVyZSwgb3AuaGF2aW5nXVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA6IG9wLmhhdmluZztcbiAgICB9XG5cbiAgICBwcm90ZWN0ZWQgZ2V0T3BlcmF0b3JXaGVyZU9wdGlvbnMob3BlcmF0b3I6IEZpbHRlck9wZXJhdG9ycywgd2hlcmU6IFdoZXJlT3B0aW9ucywgdmFsdWU6IGFueSk6IFdoZXJlT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IG9wID0gdGhpcy5vcGVyYXRvcnMuZmluZCh4ID0+IHtcbiAgICAgICAgICAgIGlmICh0eXBlb2YgeCA9PT0gXCJzdHJpbmdcIikge1xuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcmV0dXJuIHgubmFtZSA9PT0gb3BlcmF0b3I7XG4gICAgICAgIH0pIGFzIEN1c3RvbU9wZXJhdG9yO1xuICAgICAgICBpZiAoIW9wKSB7XG4gICAgICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW9wLndoZXJlKSB7XG4gICAgICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBvcFdoZXJlID0gdHlwZW9mIG9wLndoZXJlID09PSBcImZ1bmN0aW9uXCIgPyBvcC53aGVyZSh2YWx1ZSkgOiBvcC53aGVyZTtcbiAgICAgICAgcmV0dXJuIHdoZXJlXG4gICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgIFtPcC5hbmRdOiBbd2hlcmUsIG9wV2hlcmVdXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIDogb3BXaGVyZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFJ1bGVGcm9tS2V5cyhxdWVyeTogUXVlcnlNb2RlbCwga2V5czogc3RyaW5nW10pOiBRdWVyeVJ1bGVNb2RlbFtdIHtcbiAgICAgICAgY29uc3QgcnVsZXM6IFF1ZXJ5UnVsZU1vZGVsW10gPSBbXTtcbiAgICAgICAgZm9yIChjb25zdCBydWxlIG9mIHF1ZXJ5LnJ1bGVzKSB7XG4gICAgICAgICAgICBpZiAoKHJ1bGUgYXMgUXVlcnlNb2RlbCkuY29uZGl0aW9uKSB7XG4gICAgICAgICAgICAgICAgcnVsZXMucHVzaCguLi50aGlzLmdldFJ1bGVGcm9tS2V5cyhydWxlIGFzIFF1ZXJ5TW9kZWwsIGtleXMpKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5cy5zb21lKHggPT4gKHJ1bGUgYXMgUXVlcnlSdWxlTW9kZWwpLmlkID09PSB4KSkge1xuICAgICAgICAgICAgICAgIHJ1bGVzLnB1c2gocnVsZSBhcyBRdWVyeVJ1bGVNb2RlbCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gcnVsZXM7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFuc2Zvcm1Db25kaXRpb24ocnVsZTogUXVlcnlSdWxlTW9kZWwsIG5hbWU6IHN0cmluZyk6IFdoZXJlT3B0aW9ucyB7XG4gICAgICAgIGlmICghdGhpcy5qc29uKSB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgIFtuYW1lXTogU2VxdWVsaXplVXRpbHMuZ2VuZXJhdGVXaGVyZVZhbHVlKHJ1bGUpXG4gICAgICAgICAgICB9O1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRoaXMuanNvbi50eXBlID09PSBcImFycmF5XCIpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybUZvckpzb25BcnJheShydWxlLCBuYW1lKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB0aGlzLnRyYW5zZm9ybUZvckpzb25PYmplY3QocnVsZSwgbmFtZSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSB0cmFuc2Zvcm1Gb3JKc29uQXJyYXkocnVsZTogUXVlcnlSdWxlTW9kZWwsIG5hbWU6IHN0cmluZyk6IFdoZXJlT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IGNvbE5hbWUgPSB0aGlzLnBhdGggPyBTZXF1ZWxpemUuY29sKG5hbWUpIDogU2VxdWVsaXplLmxpdGVyYWwobmFtZSk7XG4gICAgICAgIGlmIChydWxlLm9wZXJhdGlvbiA9PT0gRmlsdGVyT3BlcmF0b3JUeXBlcy5Db250YWlucyB8fCBydWxlLm9wZXJhdGlvbiA9PT0gRmlsdGVyT3BlcmF0b3JUeXBlcy5Ob3RDb250YWlucykge1xuICAgICAgICAgICAgLyoqXG4gICAgICAgICAgICAgKiBXZSBvdmVycmlkZSB0aGUgcnVsZSB0byB1c2UgYW4gZXF1YWwgb3Igbm90IGVxdWFsIHdpdGggYSBKU09OX0NPTlRBSU5TIGZ1bmN0aW9uXG4gICAgICAgICAgICAgKi9cbiAgICAgICAgICAgIGNvbnN0IG5ld1J1bGUgPSB7XG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uOiBydWxlLm9wZXJhdGlvbiA9PT0gRmlsdGVyT3BlcmF0b3JUeXBlcy5Db250YWlucyA/IEZpbHRlck9wZXJhdG9yVHlwZXMuRXF1YWwgOiBGaWx0ZXJPcGVyYXRvclR5cGVzLk5vdEVxdWFsLFxuICAgICAgICAgICAgICAgIHZhbHVlOiB0cnVlXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGNvbnN0IHZhbHVlID0gdHlwZW9mIHJ1bGUudmFsdWUgPT09IFwic3RyaW5nXCIgPyBgXCIke3J1bGUudmFsdWV9XCJgIDogcnVsZS52YWx1ZTtcbiAgICAgICAgICAgIGlmICh0aGlzLmpzb24ucGF0aCkge1xuICAgICAgICAgICAgICAgIHJldHVybiB3aGVyZShmbihcIkpTT05fQ09OVEFJTlNcIiwgY29sTmFtZSwgdmFsdWUsIHRoaXMuanNvbi5wYXRoKSwgU2VxdWVsaXplVXRpbHMuZ2VuZXJhdGVXaGVyZVZhbHVlKG5ld1J1bGUgYXMgUnVsZU1vZGVsKSBhcyBMb2dpY1R5cGUpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4gd2hlcmUoZm4oXCJKU09OX0NPTlRBSU5TXCIsIGNvbE5hbWUsIHZhbHVlKSwgU2VxdWVsaXplVXRpbHMuZ2VuZXJhdGVXaGVyZVZhbHVlKG5ld1J1bGUgYXMgUnVsZU1vZGVsKSBhcyBMb2dpY1R5cGUpXG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG5cbiAgICBwcml2YXRlIHRyYW5zZm9ybUZvckpzb25PYmplY3QocnVsZTogUXVlcnlSdWxlTW9kZWwsIG5hbWU6IHN0cmluZyk6IFdoZXJlT3B0aW9ucyB7XG4gICAgICAgIGNvbnN0IGNvbE5hbWUgPSB0aGlzLnBhdGggPyBTZXF1ZWxpemUuY29sKG5hbWUpIDogU2VxdWVsaXplLmxpdGVyYWwobmFtZSk7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gU2VxdWVsaXplVXRpbHMuZ2VuZXJhdGVXaGVyZVZhbHVlKHJ1bGUpO1xuICAgICAgICBpZiAodGhpcy5qc29uLnBhdGgpIHtcbiAgICAgICAgICAgIHJldHVybiBTZXF1ZWxpemUud2hlcmUoU2VxdWVsaXplLmZuKFwiSlNPTl9FWFRSQUNUXCIsIGNvbE5hbWUsIHRoaXMuanNvbi5wYXRoKSwgdmFsdWUgYXMgTG9naWNUeXBlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBTZXF1ZWxpemUud2hlcmUoU2VxdWVsaXplLmZuKFwiSlNPTl9FWFRSQUNUXCIsIGNvbE5hbWUpLCB2YWx1ZSBhcyBMb2dpY1R5cGUpO1xuICAgIH1cbn1cbiJdfQ==
@@ -0,0 +1,16 @@
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
+ }
@@ -0,0 +1,58 @@
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==
@@ -38,7 +38,7 @@ class RadioFilter extends filter_1.Filter {
38
38
  }
39
39
  const conditions = [];
40
40
  const where = option.condition.condition === "and" ? { [sequelize_1.Op.and]: conditions } : { [sequelize_1.Op.or]: conditions };
41
- this.generateRuleWhereOptions(option.condition, conditions);
41
+ this.generateRuleWhereOptions(option.condition, conditions, rule);
42
42
  conditions.push(super.getWhereOptions({
43
43
  ...rule,
44
44
  value: option.value,
@@ -61,4 +61,4 @@ class RadioFilter extends filter_1.Filter {
61
61
  }
62
62
  exports.RadioFilter = RadioFilter;
63
63
 
64
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVycy9yYWRpby5maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTZDO0FBRTdDLGtEQUE4QztBQUc5Qyw0Q0FBbUQ7QUFDbkQsa0NBQXFDO0FBQ3JDLHFDQUF3RDtBQXNCeEQsTUFBYSxXQUFZLFNBQVEsZUFBTTtJQUtuQyxZQUFZLFVBQXdEO1FBQ2hFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUxmLFNBQUksR0FBRyxpQkFBVSxDQUFDLEtBQUssQ0FBQztRQUN4QixjQUFTLEdBQUcsQ0FBQywrQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUsvQyxDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFXLEVBQUUsSUFBMEI7UUFDMUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsT0FBTztTQUNWO1FBRUQsT0FBTztZQUNILEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEQsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHO2dCQUNWLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQzdDLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxRQUFRLEVBQ2QsMEJBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUN2RDthQUNKLENBQUMsQ0FBQyxDQUFDO1NBQ1AsQ0FBQztJQUNOLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQW9CO1FBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQ25CLE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQztnQkFDekIsR0FBRyxJQUFJO2dCQUNQLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztnQkFDbkIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVM7YUFDL0MsQ0FBQyxDQUFDO1NBQ047UUFFRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3hHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1FBQzVELFVBQVUsQ0FBQyxJQUFJLENBQ1gsS0FBSyxDQUFDLGVBQWUsQ0FBQztZQUNsQixHQUFHLElBQUk7WUFDUCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVM7U0FDL0MsQ0FBQyxDQUNMLENBQUM7UUFDRixPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRU0sS0FBSyxDQUFDLGdCQUFnQixDQUFDLElBQW9COztRQUM5QyxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLEtBQUssSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzVELElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN2QztRQUVELE9BQU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDO1lBQzFCLEdBQUcsSUFBSTtZQUNQLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztZQUNuQixTQUFTLEVBQUUsTUFBQSxNQUFNLENBQUMsUUFBUSxtQ0FBSSxJQUFJLENBQUMsU0FBUztTQUMvQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0o7QUFqRUQsa0NBaUVDIiwiZmlsZSI6ImxpYi9maWx0ZXIvZmlsdGVycy9yYWRpby5maWx0ZXIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBPcCwgV2hlcmVPcHRpb25zIH0gZnJvbSBcInNlcXVlbGl6ZVwiO1xuaW1wb3J0IHsgRGF0YUZpbHRlclVzZXJNb2RlbCwgRmlsdGVyQ29uZGl0aW9uIH0gZnJvbSBcIi4uLy4uXCI7XG5pbXBvcnQgeyBGaWx0ZXJVdGlscyB9IGZyb20gXCIuLi9maWx0ZXIudXRpbHNcIjtcbmltcG9ydCB7IFF1ZXJ5UnVsZU1vZGVsIH0gZnJvbSBcIi4uL21vZGVsc1wiO1xuaW1wb3J0IHsgRmlsdGVyQmFzZUNvbmZpZ3VyYXRpb25Nb2RlbCB9IGZyb20gXCIuLi9tb2RlbHMvZmlsdGVyLWNvbmZpZ3VyYXRpb24ubW9kZWxcIjtcbmltcG9ydCB7IEZpbHRlck9wZXJhdG9yVHlwZXMgfSBmcm9tIFwiLi4vb3BlcmF0b3JzXCI7XG5pbXBvcnQgeyBGaWx0ZXJUeXBlIH0gZnJvbSBcIi4uL3R5cGVcIjtcbmltcG9ydCB7IEJhc2VGaWx0ZXJEZWZpbml0aW9uLCBGaWx0ZXIgfSBmcm9tIFwiLi9maWx0ZXJcIjtcblxuZXhwb3J0IGludGVyZmFjZSBSYWRpb0ZpbHRlck9wdGlvbiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgdmFsdWU6IHVua25vd247XG4gICAgb3BlcmF0b3I/OiBGaWx0ZXJPcGVyYXRvclR5cGVzO1xuICAgIGNvbmRpdGlvbj86IEZpbHRlckNvbmRpdGlvbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYWRpb0ZpbHRlckRlZmluaXRpb24ge1xuICAgIG9wdGlvbnM6IFJhZGlvRmlsdGVyT3B0aW9uW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFkaW9GaWx0ZXJPcHRpb25Db25maWd1cmF0aW9uIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICBuYW1lPzogc3RyaW5nO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsIGV4dGVuZHMgRmlsdGVyQmFzZUNvbmZpZ3VyYXRpb25Nb2RlbCB7XG4gICAgb3B0aW9uczogUmFkaW9GaWx0ZXJPcHRpb25Db25maWd1cmF0aW9uW107XG59XG5cbmV4cG9ydCBjbGFzcyBSYWRpb0ZpbHRlciBleHRlbmRzIEZpbHRlciBpbXBsZW1lbnRzIFJhZGlvRmlsdGVyRGVmaW5pdGlvbiB7XG4gICAgcHVibGljIHR5cGUgPSBGaWx0ZXJUeXBlLlJhZGlvO1xuICAgIHB1YmxpYyBvcGVyYXRvcnMgPSBbRmlsdGVyT3BlcmF0b3JUeXBlcy5FcXVhbF07XG4gICAgcHVibGljIG9wdGlvbnM6IFJhZGlvRmlsdGVyT3B0aW9uW107XG5cbiAgICBjb25zdHJ1Y3RvcihkZWZpbml0aW9uOiBCYXNlRmlsdGVyRGVmaW5pdGlvbiAmIFJhZGlvRmlsdGVyRGVmaW5pdGlvbikge1xuICAgICAgICBzdXBlcihkZWZpbml0aW9uKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0Q29uZmlnKGtleTogc3RyaW5nLCB1c2VyPzogRGF0YUZpbHRlclVzZXJNb2RlbCk6IFByb21pc2U8UmFkaW9GaWx0ZXJDb25maWd1cmF0aW9uTW9kZWw+IHtcbiAgICAgICAgaWYgKHRoaXMucHJpdmF0ZSkge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLihhd2FpdCBzdXBlci5nZXRDb25maWcoa2V5LCB1c2VyKSksXG4gICAgICAgICAgICBvcHRpb25zOiBhd2FpdCBQcm9taXNlLmFsbCh0aGlzLm9wdGlvbnMubWFwKGFzeW5jIHggPT4gKHtcbiAgICAgICAgICAgICAgICBrZXk6IHgua2V5LFxuICAgICAgICAgICAgICAgIG5hbWU6IGF3YWl0IHRoaXMuX3RyYW5zbGF0ZVNlcnZpY2UuZ2V0VHJhbnNsYXRpb24oXG4gICAgICAgICAgICAgICAgICAgIHVzZXI/Lmxhbmd1YWdlLFxuICAgICAgICAgICAgICAgICAgICBGaWx0ZXJVdGlscy5nZXRSYWRpb09wdGlvblRyYW5zbGF0aW9uS2V5KGtleSwgeC5rZXkpXG4gICAgICAgICAgICAgICAgKVxuICAgICAgICAgICAgfSkpKVxuICAgICAgICB9O1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRXaGVyZU9wdGlvbnMocnVsZTogUXVlcnlSdWxlTW9kZWwpOiBQcm9taXNlPFdoZXJlT3B0aW9ucz4ge1xuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZCh4ID0+IHgua2V5ID09PSBydWxlLnZhbHVlKTtcbiAgICAgICAgaWYgKCFvcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZXRXaGVyZU9wdGlvbnMocnVsZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoIW9wdGlvbi5jb25kaXRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZXRXaGVyZU9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIC4uLnJ1bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IG9wdGlvbi5vcGVyYXRvciB8fCBydWxlLm9wZXJhdGlvblxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBjb25kaXRpb25zID0gW107XG4gICAgICAgIGNvbnN0IHdoZXJlID0gb3B0aW9uLmNvbmRpdGlvbi5jb25kaXRpb24gPT09IFwiYW5kXCIgPyB7IFtPcC5hbmRdOiBjb25kaXRpb25zIH0gOiB7IFtPcC5vcl06IGNvbmRpdGlvbnMgfTtcbiAgICAgICAgdGhpcy5nZW5lcmF0ZVJ1bGVXaGVyZU9wdGlvbnMob3B0aW9uLmNvbmRpdGlvbiwgY29uZGl0aW9ucyk7XG4gICAgICAgIGNvbmRpdGlvbnMucHVzaChcbiAgICAgICAgICAgIHN1cGVyLmdldFdoZXJlT3B0aW9ucyh7XG4gICAgICAgICAgICAgICAgLi4ucnVsZSxcbiAgICAgICAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgICAgIG9wZXJhdGlvbjogb3B0aW9uLm9wZXJhdG9yIHx8IHJ1bGUub3BlcmF0aW9uXG4gICAgICAgICAgICB9KVxuICAgICAgICApO1xuICAgICAgICByZXR1cm4gd2hlcmU7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldEhhdmluZ09wdGlvbnMocnVsZTogUXVlcnlSdWxlTW9kZWwpOiBQcm9taXNlPFdoZXJlT3B0aW9ucz4ge1xuICAgICAgICBjb25zdCBvcHRpb24gPSB0aGlzLm9wdGlvbnMuZmluZCh4ID0+IHgua2V5ID09PSBydWxlLnZhbHVlKTtcbiAgICAgICAgaWYgKCFvcHRpb24pIHtcbiAgICAgICAgICAgIHJldHVybiBzdXBlci5nZXRIYXZpbmdPcHRpb25zKHJ1bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHN1cGVyLmdldEhhdmluZ09wdGlvbnMoe1xuICAgICAgICAgICAgLi4ucnVsZSxcbiAgICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICBvcGVyYXRpb246IG9wdGlvbi5vcGVyYXRvciA/PyBydWxlLm9wZXJhdGlvblxuICAgICAgICB9KTtcbiAgICB9XG59XG4iXX0=
64
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL2xpYi9maWx0ZXIvZmlsdGVycy9yYWRpby5maWx0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEseUNBQTZDO0FBRTdDLGtEQUE4QztBQUc5Qyw0Q0FBbUQ7QUFDbkQsa0NBQXFDO0FBQ3JDLHFDQUF3RDtBQXNCeEQsTUFBYSxXQUFZLFNBQVEsZUFBTTtJQUtuQyxZQUFZLFVBQXdEO1FBQ2hFLEtBQUssQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUxmLFNBQUksR0FBRyxpQkFBVSxDQUFDLEtBQUssQ0FBQztRQUN4QixjQUFTLEdBQUcsQ0FBQywrQkFBbUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUsvQyxDQUFDO0lBRU0sS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFXLEVBQUUsSUFBMEI7UUFDMUQsSUFBSSxJQUFJLENBQUMsT0FBTyxFQUFFO1lBQ2QsT0FBTztTQUNWO1FBRUQsT0FBTztZQUNILEdBQUcsQ0FBQyxNQUFNLEtBQUssQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFLElBQUksQ0FBQyxDQUFDO1lBQ3JDLE9BQU8sRUFBRSxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFDLENBQUMsRUFBQyxFQUFFLENBQUMsQ0FBQztnQkFDcEQsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHO2dCQUNWLElBQUksRUFBRSxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQzdDLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRSxRQUFRLEVBQ2QsMEJBQVcsQ0FBQyw0QkFBNEIsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUN2RDthQUNKLENBQUMsQ0FBQyxDQUFDO1NBQ1AsQ0FBQztJQUNOLENBQUM7SUFFTSxLQUFLLENBQUMsZUFBZSxDQUFDLElBQW9CO1FBQzdDLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsS0FBSyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUQsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsQ0FBQztTQUN0QztRQUVELElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFO1lBQ25CLE9BQU8sS0FBSyxDQUFDLGVBQWUsQ0FBQztnQkFDekIsR0FBRyxJQUFJO2dCQUNQLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSztnQkFDbkIsU0FBUyxFQUFFLE1BQU0sQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLFNBQVM7YUFDL0MsQ0FBQyxDQUFDO1NBQ047UUFFRCxNQUFNLFVBQVUsR0FBRyxFQUFFLENBQUM7UUFDdEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsY0FBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDO1FBQ3hHLElBQUksQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNsRSxVQUFVLENBQUMsSUFBSSxDQUNYLEtBQUssQ0FBQyxlQUFlLENBQUM7WUFDbEIsR0FBRyxJQUFJO1lBQ1AsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTO1NBQy9DLENBQUMsQ0FDTCxDQUFDO1FBQ0YsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFvQjs7UUFDOUMsTUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxLQUFLLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM1RCxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDdkM7UUFFRCxPQUFPLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQztZQUMxQixHQUFHLElBQUk7WUFDUCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUs7WUFDbkIsU0FBUyxFQUFFLE1BQUEsTUFBTSxDQUFDLFFBQVEsbUNBQUksSUFBSSxDQUFDLFNBQVM7U0FDL0MsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKO0FBakVELGtDQWlFQyIsImZpbGUiOiJsaWIvZmlsdGVyL2ZpbHRlcnMvcmFkaW8uZmlsdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgT3AsIFdoZXJlT3B0aW9ucyB9IGZyb20gXCJzZXF1ZWxpemVcIjtcbmltcG9ydCB7IERhdGFGaWx0ZXJVc2VyTW9kZWwsIEZpbHRlckNvbmRpdGlvbiB9IGZyb20gXCIuLi8uLlwiO1xuaW1wb3J0IHsgRmlsdGVyVXRpbHMgfSBmcm9tIFwiLi4vZmlsdGVyLnV0aWxzXCI7XG5pbXBvcnQgeyBRdWVyeVJ1bGVNb2RlbCB9IGZyb20gXCIuLi9tb2RlbHNcIjtcbmltcG9ydCB7IEZpbHRlckJhc2VDb25maWd1cmF0aW9uTW9kZWwgfSBmcm9tIFwiLi4vbW9kZWxzL2ZpbHRlci1jb25maWd1cmF0aW9uLm1vZGVsXCI7XG5pbXBvcnQgeyBGaWx0ZXJPcGVyYXRvclR5cGVzIH0gZnJvbSBcIi4uL29wZXJhdG9yc1wiO1xuaW1wb3J0IHsgRmlsdGVyVHlwZSB9IGZyb20gXCIuLi90eXBlXCI7XG5pbXBvcnQgeyBCYXNlRmlsdGVyRGVmaW5pdGlvbiwgRmlsdGVyIH0gZnJvbSBcIi4vZmlsdGVyXCI7XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFkaW9GaWx0ZXJPcHRpb24ge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiB1bmtub3duO1xuICAgIG9wZXJhdG9yPzogRmlsdGVyT3BlcmF0b3JUeXBlcztcbiAgICBjb25kaXRpb24/OiBGaWx0ZXJDb25kaXRpb247XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmFkaW9GaWx0ZXJEZWZpbml0aW9uIHtcbiAgICBvcHRpb25zOiBSYWRpb0ZpbHRlck9wdGlvbltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJhZGlvRmlsdGVyT3B0aW9uQ29uZmlndXJhdGlvbiB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgbmFtZT86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSYWRpb0ZpbHRlckNvbmZpZ3VyYXRpb25Nb2RlbCBleHRlbmRzIEZpbHRlckJhc2VDb25maWd1cmF0aW9uTW9kZWwge1xuICAgIG9wdGlvbnM6IFJhZGlvRmlsdGVyT3B0aW9uQ29uZmlndXJhdGlvbltdO1xufVxuXG5leHBvcnQgY2xhc3MgUmFkaW9GaWx0ZXIgZXh0ZW5kcyBGaWx0ZXIgaW1wbGVtZW50cyBSYWRpb0ZpbHRlckRlZmluaXRpb24ge1xuICAgIHB1YmxpYyB0eXBlID0gRmlsdGVyVHlwZS5SYWRpbztcbiAgICBwdWJsaWMgb3BlcmF0b3JzID0gW0ZpbHRlck9wZXJhdG9yVHlwZXMuRXF1YWxdO1xuICAgIHB1YmxpYyBvcHRpb25zOiBSYWRpb0ZpbHRlck9wdGlvbltdO1xuXG4gICAgY29uc3RydWN0b3IoZGVmaW5pdGlvbjogQmFzZUZpbHRlckRlZmluaXRpb24gJiBSYWRpb0ZpbHRlckRlZmluaXRpb24pIHtcbiAgICAgICAgc3VwZXIoZGVmaW5pdGlvbik7XG4gICAgfVxuXG4gICAgcHVibGljIGFzeW5jIGdldENvbmZpZyhrZXk6IHN0cmluZywgdXNlcj86IERhdGFGaWx0ZXJVc2VyTW9kZWwpOiBQcm9taXNlPFJhZGlvRmlsdGVyQ29uZmlndXJhdGlvbk1vZGVsPiB7XG4gICAgICAgIGlmICh0aGlzLnByaXZhdGUpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAuLi4oYXdhaXQgc3VwZXIuZ2V0Q29uZmlnKGtleSwgdXNlcikpLFxuICAgICAgICAgICAgb3B0aW9uczogYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5vcHRpb25zLm1hcChhc3luYyB4ID0+ICh7XG4gICAgICAgICAgICAgICAga2V5OiB4LmtleSxcbiAgICAgICAgICAgICAgICBuYW1lOiBhd2FpdCB0aGlzLl90cmFuc2xhdGVTZXJ2aWNlLmdldFRyYW5zbGF0aW9uKFxuICAgICAgICAgICAgICAgICAgICB1c2VyPy5sYW5ndWFnZSxcbiAgICAgICAgICAgICAgICAgICAgRmlsdGVyVXRpbHMuZ2V0UmFkaW9PcHRpb25UcmFuc2xhdGlvbktleShrZXksIHgua2V5KVxuICAgICAgICAgICAgICAgIClcbiAgICAgICAgICAgIH0pKSlcbiAgICAgICAgfTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYXN5bmMgZ2V0V2hlcmVPcHRpb25zKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsKTogUHJvbWlzZTxXaGVyZU9wdGlvbnM+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoeCA9PiB4LmtleSA9PT0gcnVsZS52YWx1ZSk7XG4gICAgICAgIGlmICghb3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0V2hlcmVPcHRpb25zKHJ1bGUpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKCFvcHRpb24uY29uZGl0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0V2hlcmVPcHRpb25zKHtcbiAgICAgICAgICAgICAgICAuLi5ydWxlLFxuICAgICAgICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWUsXG4gICAgICAgICAgICAgICAgb3BlcmF0aW9uOiBvcHRpb24ub3BlcmF0b3IgfHwgcnVsZS5vcGVyYXRpb25cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgY29uZGl0aW9ucyA9IFtdO1xuICAgICAgICBjb25zdCB3aGVyZSA9IG9wdGlvbi5jb25kaXRpb24uY29uZGl0aW9uID09PSBcImFuZFwiID8geyBbT3AuYW5kXTogY29uZGl0aW9ucyB9IDogeyBbT3Aub3JdOiBjb25kaXRpb25zIH07XG4gICAgICAgIHRoaXMuZ2VuZXJhdGVSdWxlV2hlcmVPcHRpb25zKG9wdGlvbi5jb25kaXRpb24sIGNvbmRpdGlvbnMsIHJ1bGUpO1xuICAgICAgICBjb25kaXRpb25zLnB1c2goXG4gICAgICAgICAgICBzdXBlci5nZXRXaGVyZU9wdGlvbnMoe1xuICAgICAgICAgICAgICAgIC4uLnJ1bGUsXG4gICAgICAgICAgICAgICAgdmFsdWU6IG9wdGlvbi52YWx1ZSxcbiAgICAgICAgICAgICAgICBvcGVyYXRpb246IG9wdGlvbi5vcGVyYXRvciB8fCBydWxlLm9wZXJhdGlvblxuICAgICAgICAgICAgfSlcbiAgICAgICAgKTtcbiAgICAgICAgcmV0dXJuIHdoZXJlO1xuICAgIH1cblxuICAgIHB1YmxpYyBhc3luYyBnZXRIYXZpbmdPcHRpb25zKHJ1bGU6IFF1ZXJ5UnVsZU1vZGVsKTogUHJvbWlzZTxXaGVyZU9wdGlvbnM+IHtcbiAgICAgICAgY29uc3Qgb3B0aW9uID0gdGhpcy5vcHRpb25zLmZpbmQoeCA9PiB4LmtleSA9PT0gcnVsZS52YWx1ZSk7XG4gICAgICAgIGlmICghb3B0aW9uKSB7XG4gICAgICAgICAgICByZXR1cm4gc3VwZXIuZ2V0SGF2aW5nT3B0aW9ucyhydWxlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzdXBlci5nZXRIYXZpbmdPcHRpb25zKHtcbiAgICAgICAgICAgIC4uLnJ1bGUsXG4gICAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlLFxuICAgICAgICAgICAgb3BlcmF0aW9uOiBvcHRpb24ub3BlcmF0b3IgPz8gcnVsZS5vcGVyYXRpb25cbiAgICAgICAgfSk7XG4gICAgfVxufVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@recursyve/nestjs-data-filter",
3
- "version": "8.0.0",
3
+ "version": "8.1.2",
4
4
  "description": "NestJs DataFilter library",
5
5
  "main": "index.js",
6
6
  "scripts": {