find-cli 1.7.25 → 1.7.26

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.
Files changed (72) hide show
  1. package/.aiignore +11 -0
  2. package/.swcrc +3 -0
  3. package/lib/abbreviations.js +15 -15
  4. package/lib/action/addRootDirectoryPath.js +9 -9
  5. package/lib/action/find.js +30 -30
  6. package/lib/action/help.js +47 -2
  7. package/lib/action/initialise.js +4 -4
  8. package/lib/action/listRootDirectoryPaths.js +5 -5
  9. package/lib/action/removeRootDirectoryPath.js +10 -10
  10. package/lib/action/version.js +6 -6
  11. package/lib/commands.js +8 -8
  12. package/lib/configuration/version_1_1.js +9 -9
  13. package/lib/configuration/version_1_2.js +14 -14
  14. package/lib/configuration/version_1_3.js +6 -6
  15. package/lib/configuration/version_1_4.js +9 -9
  16. package/lib/configuration/version_1_7.js +14 -14
  17. package/lib/configuration.js +76 -114
  18. package/lib/constants.js +12 -12
  19. package/lib/converter/alternates.js +16 -117
  20. package/lib/converter/characterClass.js +28 -129
  21. package/lib/converter/default.js +12 -113
  22. package/lib/converter/directory.js +12 -113
  23. package/lib/converter/escapedCharacter.js +12 -113
  24. package/lib/converter/period.js +12 -113
  25. package/lib/converter/questionMark.js +12 -113
  26. package/lib/converter/repeatedDirectories.js +12 -113
  27. package/lib/converter/repeatedWildcard.js +12 -113
  28. package/lib/converter/singleDirectory.js +12 -113
  29. package/lib/converter/singleWildcard.js +12 -113
  30. package/lib/converter.js +24 -57
  31. package/lib/converters.js +14 -14
  32. package/lib/defaults.js +10 -10
  33. package/lib/descriptions.js +5 -5
  34. package/lib/find.js +15 -15
  35. package/lib/isIgnored/asynchronous.js +15 -15
  36. package/lib/isIgnored/synchronous.js +24 -24
  37. package/lib/line.js +99 -174
  38. package/lib/main.js +18 -18
  39. package/lib/messages.js +16 -16
  40. package/lib/occurrence.js +19 -55
  41. package/lib/operation/addRootDirectoryPath.js +3 -3
  42. package/lib/operation/find.js +12 -35
  43. package/lib/operation/listRootDirectoryPaths.js +5 -5
  44. package/lib/operation/previousRule.js +10 -10
  45. package/lib/operation/prompt/addRootDirectoryPath.js +15 -15
  46. package/lib/operation/prompt/ignoreOrPermitPath.js +15 -15
  47. package/lib/operation/prompt/pathRule.js +17 -17
  48. package/lib/operation/prompt/previousRule.js +10 -10
  49. package/lib/operation/prompt/removeRootDirectoryPath.js +18 -18
  50. package/lib/operation/prompt/rule.js +21 -21
  51. package/lib/operation/removeRootDirectoryPath.js +5 -5
  52. package/lib/operation/removeRootDirectoryPathByIndex.js +4 -4
  53. package/lib/operation/rule.js +6 -6
  54. package/lib/operation/updatePatRules.js +7 -7
  55. package/lib/operation/validateRootDirectoryPath.js +7 -7
  56. package/lib/options.js +11 -11
  57. package/lib/prepare.js +5 -5
  58. package/lib/rule/glob.js +87 -167
  59. package/lib/rule/regex.js +73 -127
  60. package/lib/rule/string.js +69 -120
  61. package/lib/types.js +4 -4
  62. package/lib/utilities/find.js +44 -44
  63. package/lib/utilities/literal.js +2 -2
  64. package/lib/utilities/log.js +7 -7
  65. package/lib/utilities/operation.js +7 -7
  66. package/lib/utilities/path.js +12 -12
  67. package/lib/utilities/prompt.js +11 -11
  68. package/lib/utilities/rule.js +5 -5
  69. package/lib/utilities/string.js +6 -6
  70. package/lib/utilities/validate.js +7 -7
  71. package/lib/versions.js +7 -7
  72. package/package.json +1 -1
package/lib/rule/glob.js CHANGED
@@ -8,184 +8,104 @@ Object.defineProperty(exports, "default", {
8
8
  return GlobRule;
9
9
  }
10
10
  });
11
- var _converters = /*#__PURE__*/ _interop_require_default(require("../converters"));
12
- var _occurrence = /*#__PURE__*/ _interop_require_default(require("../occurrence"));
13
- var _types = require("../types");
14
- var _constants = require("../constants");
15
- var _literal = require("../utilities/literal");
16
- var _string = require("../utilities/string");
17
- function _array_like_to_array(arr, len) {
18
- if (len == null || len > arr.length) len = arr.length;
19
- for(var i = 0, arr2 = new Array(len); i < len; i++)arr2[i] = arr[i];
20
- return arr2;
21
- }
22
- function _array_without_holes(arr) {
23
- if (Array.isArray(arr)) return _array_like_to_array(arr);
24
- }
25
- function _class_call_check(instance, Constructor) {
26
- if (!(instance instanceof Constructor)) {
27
- throw new TypeError("Cannot call a class as a function");
28
- }
29
- }
30
- function _defineProperties(target, props) {
31
- for(var i = 0; i < props.length; i++){
32
- var descriptor = props[i];
33
- descriptor.enumerable = descriptor.enumerable || false;
34
- descriptor.configurable = true;
35
- if ("value" in descriptor) descriptor.writable = true;
36
- Object.defineProperty(target, descriptor.key, descriptor);
37
- }
38
- }
39
- function _create_class(Constructor, protoProps, staticProps) {
40
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
41
- if (staticProps) _defineProperties(Constructor, staticProps);
42
- return Constructor;
43
- }
11
+ const _converters = /*#__PURE__*/ _interop_require_default(require("../converters"));
12
+ const _occurrence = /*#__PURE__*/ _interop_require_default(require("../occurrence"));
13
+ const _types = require("../types");
14
+ const _constants = require("../constants");
15
+ const _literal = require("../utilities/literal");
16
+ const _string = require("../utilities/string");
44
17
  function _interop_require_default(obj) {
45
18
  return obj && obj.__esModule ? obj : {
46
19
  default: obj
47
20
  };
48
21
  }
49
- function _iterable_to_array(iter) {
50
- if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
51
- }
52
- function _non_iterable_spread() {
53
- throw new TypeError("Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
54
- }
55
- function _to_consumable_array(arr) {
56
- return _array_without_holes(arr) || _iterable_to_array(arr) || _unsupported_iterable_to_array(arr) || _non_iterable_spread();
57
- }
58
- function _unsupported_iterable_to_array(o, minLen) {
59
- if (!o) return;
60
- if (typeof o === "string") return _array_like_to_array(o, minLen);
61
- var n = Object.prototype.toString.call(o).slice(8, -1);
62
- if (n === "Object" && o.constructor) n = o.constructor.name;
63
- if (n === "Map" || n === "Set") return Array.from(n);
64
- if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _array_like_to_array(o, minLen);
65
- }
66
- var GlobRule = /*#__PURE__*/ function() {
67
- function GlobRule(type, glob, pattern, regExp) {
68
- _class_call_check(this, GlobRule);
22
+ class GlobRule {
23
+ constructor(type, glob, pattern, regExp){
69
24
  this.type = type;
70
25
  this.glob = glob;
71
26
  this.pattern = pattern;
72
27
  this.regExp = regExp;
73
28
  }
74
- _create_class(GlobRule, [
75
- {
76
- key: "getType",
77
- value: function getType() {
78
- return this.type;
79
- }
80
- },
81
- {
82
- key: "getGlob",
83
- value: function getGlob() {
84
- return this.glob;
85
- }
86
- },
87
- {
88
- key: "getPattern",
89
- value: function getPattern() {
90
- return this.pattern;
91
- }
92
- },
93
- {
94
- key: "getRegExp",
95
- value: function getRegExp() {
96
- return this.regExp;
97
- }
98
- },
99
- {
100
- key: "toJSON",
101
- value: function toJSON() {
102
- var type = this.type, glob = this.glob, pattern = this.pattern, json = {
103
- type: type,
104
- glob: glob,
105
- pattern: pattern
106
- };
107
- return json;
108
- }
109
- },
110
- {
111
- key: "find",
112
- value: function find(line) {
113
- var occurrences = [], content = line.getContent();
114
- var offset = 0, string = content, result = string.match(this.regExp);
115
- while(result !== null){
116
- var occurrence = _occurrence.default.fromResultAndOffset(result, offset), end = occurrence.getEnd(), start = end; ///
117
- string = string.substring(start); ///
118
- offset += start;
119
- occurrences.push(occurrence);
120
- result = string.match(this.regExp);
121
- }
122
- return occurrences;
123
- }
124
- },
125
- {
126
- key: "match",
127
- value: function match(string) {
128
- var matches = this.regExp.test(string);
129
- return matches;
130
- }
131
- },
132
- {
133
- key: "isEqualTo",
134
- value: function isEqualTo(rule) {
135
- var equalTo = false;
136
- var ruleType = rule.getType();
137
- if (ruleType === this.type) {
138
- var ruleGlob = rule.getGlob();
139
- if (ruleGlob === this.glob) {
140
- equalTo = true;
141
- }
142
- }
143
- return equalTo;
144
- }
145
- },
146
- {
147
- key: "asString",
148
- value: function asString() {
149
- var string = this.glob; ///
150
- return string;
151
- }
29
+ getType() {
30
+ return this.type;
31
+ }
32
+ getGlob() {
33
+ return this.glob;
34
+ }
35
+ getPattern() {
36
+ return this.pattern;
37
+ }
38
+ getRegExp() {
39
+ return this.regExp;
40
+ }
41
+ toJSON() {
42
+ const type = this.type, glob = this.glob, pattern = this.pattern, json = {
43
+ type,
44
+ glob,
45
+ pattern
46
+ };
47
+ return json;
48
+ }
49
+ find(line) {
50
+ const occurrences = [], content = line.getContent();
51
+ let offset = 0, string = content, result = string.match(this.regExp);
52
+ while(result !== null){
53
+ const occurrence = _occurrence.default.fromResultAndOffset(result, offset), end = occurrence.getEnd(), start = end; ///
54
+ string = string.substring(start); ///
55
+ offset += start;
56
+ occurrences.push(occurrence);
57
+ result = string.match(this.regExp);
152
58
  }
153
- ], [
154
- {
155
- key: "fromJSON",
156
- value: function fromJSON(json) {
157
- var globRule = null;
158
- var type = json.type;
159
- if (type === _types.GLOB_TYPE) {
160
- var glob = json.glob, pattern = json.pattern, regExp = new RegExp(pattern);
161
- globRule = new GlobRule(type, glob, pattern, regExp);
162
- }
163
- return globRule;
164
- }
165
- },
166
- {
167
- key: "fromStringAnchoredAndDirectory",
168
- value: function fromStringAnchoredAndDirectory(string, anchored, directory) {
169
- var globRule = null;
170
- var glob = globFromStringAndDirectory(string, directory);
171
- if (glob !== null) {
172
- var type = _types.GLOB_TYPE, pattern = patternFromGlobAndAnchored(glob, anchored), regExp = new RegExp(pattern);
173
- globRule = new GlobRule(type, glob, pattern, regExp);
174
- }
175
- return globRule;
59
+ return occurrences;
60
+ }
61
+ match(string) {
62
+ const matches = this.regExp.test(string);
63
+ return matches;
64
+ }
65
+ isEqualTo(rule) {
66
+ let equalTo = false;
67
+ const ruleType = rule.getType();
68
+ if (ruleType === this.type) {
69
+ const ruleGlob = rule.getGlob();
70
+ if (ruleGlob === this.glob) {
71
+ equalTo = true;
176
72
  }
177
73
  }
178
- ]);
179
- return GlobRule;
180
- }();
74
+ return equalTo;
75
+ }
76
+ asString() {
77
+ const string = this.glob; ///
78
+ return string;
79
+ }
80
+ static fromJSON(json) {
81
+ let globRule = null;
82
+ const { type } = json;
83
+ if (type === _types.GLOB_TYPE) {
84
+ const { glob, pattern } = json, regExp = new RegExp(pattern);
85
+ globRule = new GlobRule(type, glob, pattern, regExp);
86
+ }
87
+ return globRule;
88
+ }
89
+ static fromStringAnchoredAndDirectory(string, anchored, directory) {
90
+ let globRule = null;
91
+ const glob = globFromStringAndDirectory(string, directory);
92
+ if (glob !== null) {
93
+ const type = _types.GLOB_TYPE, pattern = patternFromGlobAndAnchored(glob, anchored), regExp = new RegExp(pattern);
94
+ globRule = new GlobRule(type, glob, pattern, regExp);
95
+ }
96
+ return globRule;
97
+ }
98
+ }
181
99
  function patternFromGlobAndAnchored(glob, anchored) {
182
- var pattern = _constants.EMPTY_STRING;
183
- var characters = _to_consumable_array(glob);
100
+ let pattern = _constants.EMPTY_STRING;
101
+ const characters = [
102
+ ...glob
103
+ ];
184
104
  for(;;){
185
- var converted = _converters.default.some(function(converter) {
186
- var result = converter.match(characters);
105
+ const converted = _converters.default.some((converter)=>{
106
+ const result = converter.match(characters);
187
107
  if (result !== null) {
188
- pattern = "".concat(pattern).concat(result);
108
+ pattern = `${pattern}${result}`;
189
109
  return true;
190
110
  }
191
111
  });
@@ -199,17 +119,17 @@ function patternFromGlobAndAnchored(glob, anchored) {
199
119
  return pattern;
200
120
  }
201
121
  function globFromStringAndDirectory(string, directory) {
202
- var glob;
203
- var stringGlobLiteral = (0, _literal.isStringGlobLiteral)(string);
122
+ let glob;
123
+ const stringGlobLiteral = (0, _literal.isStringGlobLiteral)(string);
204
124
  if (stringGlobLiteral) {
205
- var globLiteral = string; ///
125
+ const globLiteral = string; ///
206
126
  glob = globLiteral; ///
207
127
  glob = (0, _string.removeTrailingForwardSlash)(glob); ///
208
128
  if (directory) {
209
129
  glob = (0, _string.addTrailingForwardSlash)(glob); ///
210
130
  }
211
131
  try {
212
- var anchored = false, pattern = patternFromGlobAndAnchored(glob, anchored);
132
+ const anchored = false, pattern = patternFromGlobAndAnchored(glob, anchored);
213
133
  new RegExp(pattern);
214
134
  } catch (error) {
215
135
  glob = null;
@@ -220,4 +140,4 @@ function globFromStringAndDirectory(string, directory) {
220
140
  return glob;
221
141
  }
222
142
 
223
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlL2dsb2IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBjb252ZXJ0ZXJzIGZyb20gXCIuLi9jb252ZXJ0ZXJzXCI7XG5pbXBvcnQgT2NjdXJyZW5jZSBmcm9tIFwiLi4vb2NjdXJyZW5jZVwiO1xuXG5pbXBvcnQgeyBHTE9CX1RZUEUgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IEVNUFRZX1NUUklORyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGlzU3RyaW5nR2xvYkxpdGVyYWwgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2xpdGVyYWxcIjtcbmltcG9ydCB7IGFkZEFuY2hvcnMsIGFkZFRyYWlsaW5nRm9yd2FyZFNsYXNoLCByZW1vdmVUcmFpbGluZ0ZvcndhcmRTbGFzaCB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsb2JSdWxlIHtcbiAgY29uc3RydWN0b3IodHlwZSwgZ2xvYiwgcGF0dGVybiwgcmVnRXhwKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmdsb2IgPSBnbG9iO1xuICAgIHRoaXMucGF0dGVybiA9IHBhdHRlcm47XG4gICAgdGhpcy5yZWdFeHAgPSByZWdFeHA7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRHbG9iKCkge1xuICAgIHJldHVybiB0aGlzLmdsb2I7XG4gIH1cblxuICBnZXRQYXR0ZXJuKCkge1xuICAgIHJldHVybiB0aGlzLnBhdHRlcm47XG4gIH1cblxuICBnZXRSZWdFeHAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVnRXhwO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnR5cGUsXG4gICAgICAgICAgZ2xvYiA9IHRoaXMuZ2xvYixcbiAgICAgICAgICBwYXR0ZXJuID0gdGhpcy5wYXR0ZXJuLFxuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgZ2xvYixcbiAgICAgICAgICAgIHBhdHRlcm5cbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBmaW5kKGxpbmUpIHtcbiAgICBjb25zdCBvY2N1cnJlbmNlcyA9IFtdLFxuICAgICAgICAgIGNvbnRlbnQgPSBsaW5lLmdldENvbnRlbnQoKTtcblxuICAgIGxldCBvZmZzZXQgPSAwLFxuICAgICAgICBzdHJpbmcgPSBjb250ZW50LCAvLy9cbiAgICAgICAgcmVzdWx0ID0gc3RyaW5nLm1hdGNoKHRoaXMucmVnRXhwKTtcblxuICAgIHdoaWxlIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG9jY3VycmVuY2UgPSBPY2N1cnJlbmNlLmZyb21SZXN1bHRBbmRPZmZzZXQocmVzdWx0LCBvZmZzZXQpLFxuICAgICAgICAgICAgZW5kID0gb2NjdXJyZW5jZS5nZXRFbmQoKSxcbiAgICAgICAgICAgIHN0YXJ0ID0gZW5kOyAgLy8vXG5cbiAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHJpbmcoc3RhcnQpOyAvLy9cblxuICAgICAgb2Zmc2V0ICs9IHN0YXJ0O1xuXG4gICAgICBvY2N1cnJlbmNlcy5wdXNoKG9jY3VycmVuY2UpO1xuXG4gICAgICByZXN1bHQgPSBzdHJpbmcubWF0Y2godGhpcy5yZWdFeHApO1xuICAgIH1cblxuICAgIHJldHVybiBvY2N1cnJlbmNlcztcbiAgfVxuXG4gIG1hdGNoKHN0cmluZykge1xuICAgIGNvbnN0IG1hdGNoZXMgPSB0aGlzLnJlZ0V4cC50ZXN0KHN0cmluZyk7XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIGlzRXF1YWxUbyhydWxlKSB7XG4gICAgbGV0IGVxdWFsVG8gPSBmYWxzZTtcblxuICAgIGNvbnN0IHJ1bGVUeXBlID0gcnVsZS5nZXRUeXBlKCk7XG5cbiAgICBpZiAocnVsZVR5cGUgPT09IHRoaXMudHlwZSkge1xuICAgICAgY29uc3QgcnVsZUdsb2IgPSBydWxlLmdldEdsb2IoKTtcblxuICAgICAgaWYgKHJ1bGVHbG9iID09PSB0aGlzLmdsb2IpIHtcbiAgICAgICAgZXF1YWxUbyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdsb2I7IC8vL1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgbGV0IGdsb2JSdWxlID0gbnVsbDtcblxuICAgIGNvbnN0IHsgdHlwZSB9ID0ganNvbjtcblxuICAgIGlmICh0eXBlID09PSBHTE9CX1RZUEUpIHtcbiAgICAgIGNvbnN0IHsgZ2xvYiwgcGF0dGVybiB9ID0ganNvbixcbiAgICAgICAgICAgIHJlZ0V4cCA9IG5ldyBSZWdFeHAocGF0dGVybik7XG5cbiAgICAgIGdsb2JSdWxlID0gbmV3IEdsb2JSdWxlKHR5cGUsIGdsb2IsIHBhdHRlcm4sIHJlZ0V4cCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdsb2JSdWxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdHJpbmdBbmNob3JlZEFuZERpcmVjdG9yeShzdHJpbmcsIGFuY2hvcmVkLCBkaXJlY3RvcnkpIHtcbiAgICBsZXQgZ2xvYlJ1bGUgPSBudWxsO1xuXG4gICAgY29uc3QgZ2xvYiA9IGdsb2JGcm9tU3RyaW5nQW5kRGlyZWN0b3J5KHN0cmluZywgZGlyZWN0b3J5KTtcblxuICAgIGlmIChnbG9iICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0eXBlID0gR0xPQl9UWVBFLFxuICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm5Gcm9tR2xvYkFuZEFuY2hvcmVkKGdsb2IsIGFuY2hvcmVkKSxcbiAgICAgICAgICAgIHJlZ0V4cCA9IG5ldyBSZWdFeHAocGF0dGVybik7XG5cbiAgICAgIGdsb2JSdWxlID0gbmV3IEdsb2JSdWxlKHR5cGUsIGdsb2IsIHBhdHRlcm4sIHJlZ0V4cCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdsb2JSdWxlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhdHRlcm5Gcm9tR2xvYkFuZEFuY2hvcmVkKGdsb2IsIGFuY2hvcmVkKSB7XG4gIGxldCBwYXR0ZXJuID0gRU1QVFlfU1RSSU5HO1xuXG4gIGNvbnN0IGNoYXJhY3RlcnMgPSBbIC4uLmdsb2IgXTtcblxuICBmb3IgKDs7KSB7XG4gICAgY29uc3QgY29udmVydGVkID0gY29udmVydGVycy5zb21lKChjb252ZXJ0ZXIpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRlci5tYXRjaChjaGFyYWN0ZXJzKTtcblxuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICBwYXR0ZXJuID0gYCR7cGF0dGVybn0ke3Jlc3VsdH1gO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFjb252ZXJ0ZWQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhbmNob3JlZCkge1xuICAgIHBhdHRlcm4gPSBhZGRBbmNob3JzKHBhdHRlcm4pO1xuICB9XG5cbiAgcmV0dXJuIHBhdHRlcm47XG59XG5cbmZ1bmN0aW9uIGdsb2JGcm9tU3RyaW5nQW5kRGlyZWN0b3J5KHN0cmluZywgZGlyZWN0b3J5KSB7XG4gIGxldCBnbG9iO1xuXG4gIGNvbnN0IHN0cmluZ0dsb2JMaXRlcmFsID0gaXNTdHJpbmdHbG9iTGl0ZXJhbChzdHJpbmcpO1xuXG4gIGlmIChzdHJpbmdHbG9iTGl0ZXJhbCkge1xuICAgIGNvbnN0IGdsb2JMaXRlcmFsID0gc3RyaW5nOyAvLy9cblxuICAgIGdsb2IgPSBnbG9iTGl0ZXJhbDsgIC8vL1xuXG4gICAgZ2xvYiA9IHJlbW92ZVRyYWlsaW5nRm9yd2FyZFNsYXNoKGdsb2IpOyAgLy8vXG5cbiAgICBpZiAoZGlyZWN0b3J5KSB7XG4gICAgICBnbG9iID0gYWRkVHJhaWxpbmdGb3J3YXJkU2xhc2goZ2xvYik7IC8vL1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBhbmNob3JlZCA9IGZhbHNlLFxuICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm5Gcm9tR2xvYkFuZEFuY2hvcmVkKGdsb2IsIGFuY2hvcmVkKTtcblxuICAgICAgbmV3IFJlZ0V4cChwYXR0ZXJuKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZ2xvYiA9IG51bGw7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGdsb2IgPSBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGdsb2I7XG59XG4iXSwibmFtZXMiOlsiR2xvYlJ1bGUiLCJ0eXBlIiwiZ2xvYiIsInBhdHRlcm4iLCJyZWdFeHAiLCJnZXRUeXBlIiwiZ2V0R2xvYiIsImdldFBhdHRlcm4iLCJnZXRSZWdFeHAiLCJ0b0pTT04iLCJqc29uIiwiZmluZCIsImxpbmUiLCJvY2N1cnJlbmNlcyIsImNvbnRlbnQiLCJnZXRDb250ZW50Iiwib2Zmc2V0Iiwic3RyaW5nIiwicmVzdWx0IiwibWF0Y2giLCJvY2N1cnJlbmNlIiwiT2NjdXJyZW5jZSIsImZyb21SZXN1bHRBbmRPZmZzZXQiLCJlbmQiLCJnZXRFbmQiLCJzdGFydCIsInN1YnN0cmluZyIsInB1c2giLCJtYXRjaGVzIiwidGVzdCIsImlzRXF1YWxUbyIsInJ1bGUiLCJlcXVhbFRvIiwicnVsZVR5cGUiLCJydWxlR2xvYiIsImFzU3RyaW5nIiwiZnJvbUpTT04iLCJnbG9iUnVsZSIsIkdMT0JfVFlQRSIsIlJlZ0V4cCIsImZyb21TdHJpbmdBbmNob3JlZEFuZERpcmVjdG9yeSIsImFuY2hvcmVkIiwiZGlyZWN0b3J5IiwiZ2xvYkZyb21TdHJpbmdBbmREaXJlY3RvcnkiLCJwYXR0ZXJuRnJvbUdsb2JBbmRBbmNob3JlZCIsIkVNUFRZX1NUUklORyIsImNoYXJhY3RlcnMiLCJjb252ZXJ0ZWQiLCJjb252ZXJ0ZXJzIiwic29tZSIsImNvbnZlcnRlciIsImFkZEFuY2hvcnMiLCJzdHJpbmdHbG9iTGl0ZXJhbCIsImlzU3RyaW5nR2xvYkxpdGVyYWwiLCJnbG9iTGl0ZXJhbCIsInJlbW92ZVRyYWlsaW5nRm9yd2FyZFNsYXNoIiwiYWRkVHJhaWxpbmdGb3J3YXJkU2xhc2giLCJlcnJvciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFVcUJBOzs7aUVBUkU7aUVBQ0E7cUJBRUc7eUJBQ0c7dUJBQ087c0JBQzRDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUVqRSxJQUFBLEFBQU1BLHlCQUFOO2FBQU1BLFNBQ1BDLElBQUksRUFBRUMsSUFBSSxFQUFFQyxPQUFPLEVBQUVDLE1BQU07Z0NBRHBCSjtRQUVqQixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLElBQUksR0FBR0E7UUFDWixJQUFJLENBQUNDLE9BQU8sR0FBR0E7UUFDZixJQUFJLENBQUNDLE1BQU0sR0FBR0E7O2tCQUxHSjs7WUFRbkJLLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0osSUFBSTtZQUNsQjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0osSUFBSTtZQUNsQjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0osT0FBTztZQUNyQjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxPQUFPLElBQUksQ0FBQ0osTUFBTTtZQUNwQjs7O1lBRUFLLEtBQUFBO21CQUFBQSxTQUFBQTtnQkFDRSxJQUFNUixPQUFPLElBQUksQ0FBQ0EsSUFBSSxFQUNoQkMsT0FBTyxJQUFJLENBQUNBLElBQUksRUFDaEJDLFVBQVUsSUFBSSxDQUFDQSxPQUFPLEVBQ3RCTyxPQUFPO29CQUNMVCxNQUFBQTtvQkFDQUMsTUFBQUE7b0JBQ0FDLFNBQUFBO2dCQUNGO2dCQUVOLE9BQU9PO1lBQ1Q7OztZQUVBQyxLQUFBQTttQkFBQUEs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
143
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlL2dsb2IuanMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCBjb252ZXJ0ZXJzIGZyb20gXCIuLi9jb252ZXJ0ZXJzXCI7XG5pbXBvcnQgT2NjdXJyZW5jZSBmcm9tIFwiLi4vb2NjdXJyZW5jZVwiO1xuXG5pbXBvcnQgeyBHTE9CX1RZUEUgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IEVNUFRZX1NUUklORyB9IGZyb20gXCIuLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGlzU3RyaW5nR2xvYkxpdGVyYWwgfSBmcm9tIFwiLi4vdXRpbGl0aWVzL2xpdGVyYWxcIjtcbmltcG9ydCB7IGFkZEFuY2hvcnMsIGFkZFRyYWlsaW5nRm9yd2FyZFNsYXNoLCByZW1vdmVUcmFpbGluZ0ZvcndhcmRTbGFzaCB9IGZyb20gXCIuLi91dGlsaXRpZXMvc3RyaW5nXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEdsb2JSdWxlIHtcbiAgY29uc3RydWN0b3IodHlwZSwgZ2xvYiwgcGF0dGVybiwgcmVnRXhwKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLmdsb2IgPSBnbG9iO1xuICAgIHRoaXMucGF0dGVybiA9IHBhdHRlcm47XG4gICAgdGhpcy5yZWdFeHAgPSByZWdFeHA7XG4gIH1cblxuICBnZXRUeXBlKCkge1xuICAgIHJldHVybiB0aGlzLnR5cGU7XG4gIH1cblxuICBnZXRHbG9iKCkge1xuICAgIHJldHVybiB0aGlzLmdsb2I7XG4gIH1cblxuICBnZXRQYXR0ZXJuKCkge1xuICAgIHJldHVybiB0aGlzLnBhdHRlcm47XG4gIH1cblxuICBnZXRSZWdFeHAoKSB7XG4gICAgcmV0dXJuIHRoaXMucmVnRXhwO1xuICB9XG5cbiAgdG9KU09OKCkge1xuICAgIGNvbnN0IHR5cGUgPSB0aGlzLnR5cGUsXG4gICAgICAgICAgZ2xvYiA9IHRoaXMuZ2xvYixcbiAgICAgICAgICBwYXR0ZXJuID0gdGhpcy5wYXR0ZXJuLFxuICAgICAgICAgIGpzb24gPSB7XG4gICAgICAgICAgICB0eXBlLFxuICAgICAgICAgICAgZ2xvYixcbiAgICAgICAgICAgIHBhdHRlcm5cbiAgICAgICAgICB9O1xuXG4gICAgcmV0dXJuIGpzb247XG4gIH1cblxuICBmaW5kKGxpbmUpIHtcbiAgICBjb25zdCBvY2N1cnJlbmNlcyA9IFtdLFxuICAgICAgICAgIGNvbnRlbnQgPSBsaW5lLmdldENvbnRlbnQoKTtcblxuICAgIGxldCBvZmZzZXQgPSAwLFxuICAgICAgICBzdHJpbmcgPSBjb250ZW50LCAvLy9cbiAgICAgICAgcmVzdWx0ID0gc3RyaW5nLm1hdGNoKHRoaXMucmVnRXhwKTtcblxuICAgIHdoaWxlIChyZXN1bHQgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IG9jY3VycmVuY2UgPSBPY2N1cnJlbmNlLmZyb21SZXN1bHRBbmRPZmZzZXQocmVzdWx0LCBvZmZzZXQpLFxuICAgICAgICAgICAgZW5kID0gb2NjdXJyZW5jZS5nZXRFbmQoKSxcbiAgICAgICAgICAgIHN0YXJ0ID0gZW5kOyAgLy8vXG5cbiAgICAgIHN0cmluZyA9IHN0cmluZy5zdWJzdHJpbmcoc3RhcnQpOyAvLy9cblxuICAgICAgb2Zmc2V0ICs9IHN0YXJ0O1xuXG4gICAgICBvY2N1cnJlbmNlcy5wdXNoKG9jY3VycmVuY2UpO1xuXG4gICAgICByZXN1bHQgPSBzdHJpbmcubWF0Y2godGhpcy5yZWdFeHApO1xuICAgIH1cblxuICAgIHJldHVybiBvY2N1cnJlbmNlcztcbiAgfVxuXG4gIG1hdGNoKHN0cmluZykge1xuICAgIGNvbnN0IG1hdGNoZXMgPSB0aGlzLnJlZ0V4cC50ZXN0KHN0cmluZyk7XG5cbiAgICByZXR1cm4gbWF0Y2hlcztcbiAgfVxuXG4gIGlzRXF1YWxUbyhydWxlKSB7XG4gICAgbGV0IGVxdWFsVG8gPSBmYWxzZTtcblxuICAgIGNvbnN0IHJ1bGVUeXBlID0gcnVsZS5nZXRUeXBlKCk7XG5cbiAgICBpZiAocnVsZVR5cGUgPT09IHRoaXMudHlwZSkge1xuICAgICAgY29uc3QgcnVsZUdsb2IgPSBydWxlLmdldEdsb2IoKTtcblxuICAgICAgaWYgKHJ1bGVHbG9iID09PSB0aGlzLmdsb2IpIHtcbiAgICAgICAgZXF1YWxUbyA9IHRydWU7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGVxdWFsVG87XG4gIH1cblxuICBhc1N0cmluZygpIHtcbiAgICBjb25zdCBzdHJpbmcgPSB0aGlzLmdsb2I7IC8vL1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgbGV0IGdsb2JSdWxlID0gbnVsbDtcblxuICAgIGNvbnN0IHsgdHlwZSB9ID0ganNvbjtcblxuICAgIGlmICh0eXBlID09PSBHTE9CX1RZUEUpIHtcbiAgICAgIGNvbnN0IHsgZ2xvYiwgcGF0dGVybiB9ID0ganNvbixcbiAgICAgICAgICAgIHJlZ0V4cCA9IG5ldyBSZWdFeHAocGF0dGVybik7XG5cbiAgICAgIGdsb2JSdWxlID0gbmV3IEdsb2JSdWxlKHR5cGUsIGdsb2IsIHBhdHRlcm4sIHJlZ0V4cCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdsb2JSdWxlO1xuICB9XG5cbiAgc3RhdGljIGZyb21TdHJpbmdBbmNob3JlZEFuZERpcmVjdG9yeShzdHJpbmcsIGFuY2hvcmVkLCBkaXJlY3RvcnkpIHtcbiAgICBsZXQgZ2xvYlJ1bGUgPSBudWxsO1xuXG4gICAgY29uc3QgZ2xvYiA9IGdsb2JGcm9tU3RyaW5nQW5kRGlyZWN0b3J5KHN0cmluZywgZGlyZWN0b3J5KTtcblxuICAgIGlmIChnbG9iICE9PSBudWxsKSB7XG4gICAgICBjb25zdCB0eXBlID0gR0xPQl9UWVBFLFxuICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm5Gcm9tR2xvYkFuZEFuY2hvcmVkKGdsb2IsIGFuY2hvcmVkKSxcbiAgICAgICAgICAgIHJlZ0V4cCA9IG5ldyBSZWdFeHAocGF0dGVybik7XG5cbiAgICAgIGdsb2JSdWxlID0gbmV3IEdsb2JSdWxlKHR5cGUsIGdsb2IsIHBhdHRlcm4sIHJlZ0V4cCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGdsb2JSdWxlO1xuICB9XG59XG5cbmZ1bmN0aW9uIHBhdHRlcm5Gcm9tR2xvYkFuZEFuY2hvcmVkKGdsb2IsIGFuY2hvcmVkKSB7XG4gIGxldCBwYXR0ZXJuID0gRU1QVFlfU1RSSU5HO1xuXG4gIGNvbnN0IGNoYXJhY3RlcnMgPSBbIC4uLmdsb2IgXTtcblxuICBmb3IgKDs7KSB7XG4gICAgY29uc3QgY29udmVydGVkID0gY29udmVydGVycy5zb21lKChjb252ZXJ0ZXIpID0+IHtcbiAgICAgIGNvbnN0IHJlc3VsdCA9IGNvbnZlcnRlci5tYXRjaChjaGFyYWN0ZXJzKTtcblxuICAgICAgaWYgKHJlc3VsdCAhPT0gbnVsbCkge1xuICAgICAgICBwYXR0ZXJuID0gYCR7cGF0dGVybn0ke3Jlc3VsdH1gO1xuXG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKCFjb252ZXJ0ZWQpIHtcbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgfVxuXG4gIGlmIChhbmNob3JlZCkge1xuICAgIHBhdHRlcm4gPSBhZGRBbmNob3JzKHBhdHRlcm4pO1xuICB9XG5cbiAgcmV0dXJuIHBhdHRlcm47XG59XG5cbmZ1bmN0aW9uIGdsb2JGcm9tU3RyaW5nQW5kRGlyZWN0b3J5KHN0cmluZywgZGlyZWN0b3J5KSB7XG4gIGxldCBnbG9iO1xuXG4gIGNvbnN0IHN0cmluZ0dsb2JMaXRlcmFsID0gaXNTdHJpbmdHbG9iTGl0ZXJhbChzdHJpbmcpO1xuXG4gIGlmIChzdHJpbmdHbG9iTGl0ZXJhbCkge1xuICAgIGNvbnN0IGdsb2JMaXRlcmFsID0gc3RyaW5nOyAvLy9cblxuICAgIGdsb2IgPSBnbG9iTGl0ZXJhbDsgIC8vL1xuXG4gICAgZ2xvYiA9IHJlbW92ZVRyYWlsaW5nRm9yd2FyZFNsYXNoKGdsb2IpOyAgLy8vXG5cbiAgICBpZiAoZGlyZWN0b3J5KSB7XG4gICAgICBnbG9iID0gYWRkVHJhaWxpbmdGb3J3YXJkU2xhc2goZ2xvYik7IC8vL1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBhbmNob3JlZCA9IGZhbHNlLFxuICAgICAgICAgICAgcGF0dGVybiA9IHBhdHRlcm5Gcm9tR2xvYkFuZEFuY2hvcmVkKGdsb2IsIGFuY2hvcmVkKTtcblxuICAgICAgbmV3IFJlZ0V4cChwYXR0ZXJuKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgZ2xvYiA9IG51bGw7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGdsb2IgPSBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGdsb2I7XG59XG4iXSwibmFtZXMiOlsiR2xvYlJ1bGUiLCJ0eXBlIiwiZ2xvYiIsInBhdHRlcm4iLCJyZWdFeHAiLCJnZXRUeXBlIiwiZ2V0R2xvYiIsImdldFBhdHRlcm4iLCJnZXRSZWdFeHAiLCJ0b0pTT04iLCJqc29uIiwiZmluZCIsImxpbmUiLCJvY2N1cnJlbmNlcyIsImNvbnRlbnQiLCJnZXRDb250ZW50Iiwib2Zmc2V0Iiwic3RyaW5nIiwicmVzdWx0IiwibWF0Y2giLCJvY2N1cnJlbmNlIiwiT2NjdXJyZW5jZSIsImZyb21SZXN1bHRBbmRPZmZzZXQiLCJlbmQiLCJnZXRFbmQiLCJzdGFydCIsInN1YnN0cmluZyIsInB1c2giLCJtYXRjaGVzIiwidGVzdCIsImlzRXF1YWxUbyIsInJ1bGUiLCJlcXVhbFRvIiwicnVsZVR5cGUiLCJydWxlR2xvYiIsImFzU3RyaW5nIiwiZnJvbUpTT04iLCJnbG9iUnVsZSIsIkdMT0JfVFlQRSIsIlJlZ0V4cCIsImZyb21TdHJpbmdBbmNob3JlZEFuZERpcmVjdG9yeSIsImFuY2hvcmVkIiwiZGlyZWN0b3J5IiwiZ2xvYkZyb21TdHJpbmdBbmREaXJlY3RvcnkiLCJwYXR0ZXJuRnJvbUdsb2JBbmRBbmNob3JlZCIsIkVNUFRZX1NUUklORyIsImNoYXJhY3RlcnMiLCJjb252ZXJ0ZWQiLCJjb252ZXJ0ZXJzIiwic29tZSIsImNvbnZlcnRlciIsImFkZEFuY2hvcnMiLCJzdHJpbmdHbG9iTGl0ZXJhbCIsImlzU3RyaW5nR2xvYkxpdGVyYWwiLCJnbG9iTGl0ZXJhbCIsInJlbW92ZVRyYWlsaW5nRm9yd2FyZFNsYXNoIiwiYWRkVHJhaWxpbmdGb3J3YXJkU2xhc2giLCJlcnJvciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBVUE7OztlQUFxQkE7OzttRUFSRTttRUFDQTt1QkFFRzsyQkFDRzt5QkFDTzt3QkFDNEM7Ozs7OztBQUVqRSxNQUFNQTtJQUNuQixZQUFZQyxJQUFJLEVBQUVDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxNQUFNLENBQUU7UUFDdkMsSUFBSSxDQUFDSCxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxPQUFPLEdBQUdBO1FBQ2YsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO0lBQ2hCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0osSUFBSTtJQUNsQjtJQUVBSyxVQUFVO1FBQ1IsT0FBTyxJQUFJLENBQUNKLElBQUk7SUFDbEI7SUFFQUssYUFBYTtRQUNYLE9BQU8sSUFBSSxDQUFDSixPQUFPO0lBQ3JCO0lBRUFLLFlBQVk7UUFDVixPQUFPLElBQUksQ0FBQ0osTUFBTTtJQUNwQjtJQUVBSyxTQUFTO1FBQ1AsTUFBTVIsT0FBTyxJQUFJLENBQUNBLElBQUksRUFDaEJDLE9BQU8sSUFBSSxDQUFDQSxJQUFJLEVBQ2hCQyxVQUFVLElBQUksQ0FBQ0EsT0FBTyxFQUN0Qk8sT0FBTztZQUNMVDtZQUNBQztZQUNBQztRQUNGO1FBRU4sT0FBT087SUFDVDtJQUVBQyxLQUFLQyxJQUFJLEVBQUU7UUFDVCxNQUFNQyxjQUFjLEVBQUUsRUFDaEJDLFVBQVVGLEtBQUtHLFVBQVU7UUFFL0IsSUFBSUMsU0FBUyxHQUNUQyxTQUFTSCxTQUNUSSxTQUFTRCxPQUFPRSxLQUFLLENBQUMsSUFBSSxDQUFDZixNQUFNO1FBRXJDLE1BQU9jLFdBQVcsS0FBTTtZQUN0QixNQUFNRSxhQUFhQyxtQkFB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
package/lib/rule/regex.js CHANGED
@@ -8,146 +8,92 @@ Object.defineProperty(exports, "default", {
8
8
  return RegexRule;
9
9
  }
10
10
  });
11
- var _occurrence = /*#__PURE__*/ _interop_require_default(require("../occurrence"));
12
- var _types = require("../types");
13
- var _literal = require("../utilities/literal");
14
- var _string = require("../utilities/string");
15
- function _class_call_check(instance, Constructor) {
16
- if (!(instance instanceof Constructor)) {
17
- throw new TypeError("Cannot call a class as a function");
18
- }
19
- }
20
- function _defineProperties(target, props) {
21
- for(var i = 0; i < props.length; i++){
22
- var descriptor = props[i];
23
- descriptor.enumerable = descriptor.enumerable || false;
24
- descriptor.configurable = true;
25
- if ("value" in descriptor) descriptor.writable = true;
26
- Object.defineProperty(target, descriptor.key, descriptor);
27
- }
28
- }
29
- function _create_class(Constructor, protoProps, staticProps) {
30
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
31
- if (staticProps) _defineProperties(Constructor, staticProps);
32
- return Constructor;
33
- }
11
+ const _occurrence = /*#__PURE__*/ _interop_require_default(require("../occurrence"));
12
+ const _types = require("../types");
13
+ const _literal = require("../utilities/literal");
14
+ const _string = require("../utilities/string");
34
15
  function _interop_require_default(obj) {
35
16
  return obj && obj.__esModule ? obj : {
36
17
  default: obj
37
18
  };
38
19
  }
39
- var RegexRule = /*#__PURE__*/ function() {
40
- function RegexRule(type, pattern, regExp) {
41
- _class_call_check(this, RegexRule);
20
+ class RegexRule {
21
+ constructor(type, pattern, regExp){
42
22
  this.type = type;
43
23
  this.pattern = pattern;
44
24
  this.regExp = regExp;
45
25
  }
46
- _create_class(RegexRule, [
47
- {
48
- key: "getType",
49
- value: function getType() {
50
- return this.type;
51
- }
52
- },
53
- {
54
- key: "getPattern",
55
- value: function getPattern() {
56
- return this.pattern;
57
- }
58
- },
59
- {
60
- key: "getRegExp",
61
- value: function getRegExp() {
62
- return this.regExp;
63
- }
64
- },
65
- {
66
- key: "toJSON",
67
- value: function toJSON() {
68
- var type = this.type, pattern = this.pattern, json = {
69
- type: type,
70
- pattern: pattern
71
- };
72
- return json;
73
- }
74
- },
75
- {
76
- key: "find",
77
- value: function find(line) {
78
- var occurrences = [], content = line.getContent();
79
- var offset = 0, string = content, result = string.match(this.regExp);
80
- while(result !== null){
81
- var occurrence = _occurrence.default.fromResultAndOffset(result, offset), end = occurrence.getEnd(), start = end; ///
82
- string = string.substring(start); ///
83
- offset += start;
84
- occurrences.push(occurrence);
85
- result = string.match(this.regExp);
86
- }
87
- return occurrences;
88
- }
89
- },
90
- {
91
- key: "match",
92
- value: function match(string) {
93
- var matches = this.regExp.test(string);
94
- return matches;
95
- }
96
- },
97
- {
98
- key: "isEqualTo",
99
- value: function isEqualTo(rule) {
100
- var equalTo = false;
101
- var ruleType = rule.getType();
102
- if (ruleType === this.type) {
103
- var rulePattern = rule.getPattern();
104
- if (rulePattern === this.pattern) {
105
- equalTo = true;
106
- }
107
- }
108
- return equalTo;
109
- }
110
- },
111
- {
112
- key: "asString",
113
- value: function asString() {
114
- var string = (0, _string.addForwardSlashes)(this.pattern); ///
115
- return string;
116
- }
26
+ getType() {
27
+ return this.type;
28
+ }
29
+ getPattern() {
30
+ return this.pattern;
31
+ }
32
+ getRegExp() {
33
+ return this.regExp;
34
+ }
35
+ toJSON() {
36
+ const type = this.type, pattern = this.pattern, json = {
37
+ type,
38
+ pattern
39
+ };
40
+ return json;
41
+ }
42
+ find(line) {
43
+ const occurrences = [], content = line.getContent();
44
+ let offset = 0, string = content, result = string.match(this.regExp);
45
+ while(result !== null){
46
+ const occurrence = _occurrence.default.fromResultAndOffset(result, offset), end = occurrence.getEnd(), start = end; ///
47
+ string = string.substring(start); ///
48
+ offset += start;
49
+ occurrences.push(occurrence);
50
+ result = string.match(this.regExp);
117
51
  }
118
- ], [
119
- {
120
- key: "fromJSON",
121
- value: function fromJSON(json) {
122
- var regexRule = null;
123
- var type = json.type;
124
- if (type === _types.REGEX_TYPE) {
125
- var pattern = json.pattern, regExp = new RegExp(pattern);
126
- regexRule = new RegexRule(type, pattern, regExp);
127
- }
128
- return regexRule;
129
- }
130
- },
131
- {
132
- key: "fromStringAnchoredAndDirectory",
133
- value: function fromStringAnchoredAndDirectory(string, anchored, directory) {
134
- var regexRule = null;
135
- var pattern = patternFromStringAndDirectory(string, anchored, directory);
136
- if (pattern !== null) {
137
- var type = _types.REGEX_TYPE, regExp = new RegExp(pattern);
138
- regexRule = new RegexRule(type, pattern, regExp);
139
- }
140
- return regexRule;
52
+ return occurrences;
53
+ }
54
+ match(string) {
55
+ const matches = this.regExp.test(string);
56
+ return matches;
57
+ }
58
+ isEqualTo(rule) {
59
+ let equalTo = false;
60
+ const ruleType = rule.getType();
61
+ if (ruleType === this.type) {
62
+ const rulePattern = rule.getPattern();
63
+ if (rulePattern === this.pattern) {
64
+ equalTo = true;
141
65
  }
142
66
  }
143
- ]);
144
- return RegexRule;
145
- }();
67
+ return equalTo;
68
+ }
69
+ asString() {
70
+ const string = (0, _string.addForwardSlashes)(this.pattern); ///
71
+ return string;
72
+ }
73
+ static fromJSON(json) {
74
+ let regexRule = null;
75
+ const { type } = json;
76
+ if (type === _types.REGEX_TYPE) {
77
+ const { pattern } = json, regExp = new RegExp(pattern);
78
+ regexRule = new RegexRule(type, pattern, regExp);
79
+ }
80
+ return regexRule;
81
+ }
82
+ static fromStringAnchoredAndDirectory(string, anchored, directory) {
83
+ let regexRule = null;
84
+ const pattern = patternFromStringAndDirectory(string, anchored, directory);
85
+ if (pattern !== null) {
86
+ const type = _types.REGEX_TYPE, regExp = new RegExp(pattern);
87
+ regexRule = new RegexRule(type, pattern, regExp);
88
+ }
89
+ return regexRule;
90
+ }
91
+ }
146
92
  function patternFromStringAndDirectory(string, anchored, directory) {
147
- var pattern;
148
- var stringRegexLiteral = (0, _literal.isStringRegexLiteral)(string);
93
+ let pattern;
94
+ const stringRegexLiteral = (0, _literal.isStringRegexLiteral)(string);
149
95
  if (stringRegexLiteral) {
150
- var regexLiteral = string; ///
96
+ const regexLiteral = string; ///
151
97
  pattern = (0, _string.removeForwardSlashes)(regexLiteral);
152
98
  pattern = (0, _string.removeAnchors)(pattern); ///
153
99
  pattern = (0, _string.removeTrailingEscapedForwardSlash)(pattern); ///
@@ -168,4 +114,4 @@ function patternFromStringAndDirectory(string, anchored, directory) {
168
114
  return pattern;
169
115
  }
170
116
 
171
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlL3JlZ2V4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgT2NjdXJyZW5jZSBmcm9tIFwiLi4vb2NjdXJyZW5jZVwiO1xuXG5pbXBvcnQgeyBSRUdFWF9UWVBFIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBpc1N0cmluZ1JlZ2V4TGl0ZXJhbCB9IGZyb20gXCIuLi91dGlsaXRpZXMvbGl0ZXJhbFwiO1xuaW1wb3J0IHsgYWRkQW5jaG9ycyxcbiAgICAgICAgIHJlbW92ZUFuY2hvcnMsXG4gICAgICAgICBhZGRGb3J3YXJkU2xhc2hlcyxcbiAgICAgICAgIHJlbW92ZUZvcndhcmRTbGFzaGVzLFxuICAgICAgICAgYWRkVHJhaWxpbmdFc2NhcGVkRm9yd2FyZFNsYXNoLFxuICAgICAgICAgcmVtb3ZlVHJhaWxpbmdFc2NhcGVkRm9yd2FyZFNsYXNoIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVnZXhSdWxlIHtcbiAgY29uc3RydWN0b3IodHlwZSwgcGF0dGVybiwgcmVnRXhwKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuO1xuICAgIHRoaXMucmVnRXhwID0gcmVnRXhwO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0UGF0dGVybigpIHtcbiAgICByZXR1cm4gdGhpcy5wYXR0ZXJuO1xuICB9XG5cbiAgZ2V0UmVnRXhwKCkge1xuICAgIHJldHVybiB0aGlzLnJlZ0V4cDtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlLFxuICAgICAgICAgIHBhdHRlcm4gPSB0aGlzLnBhdHRlcm4sXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBwYXR0ZXJuXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgZmluZChsaW5lKSB7XG4gICAgY29uc3Qgb2NjdXJyZW5jZXMgPSBbXSxcbiAgICAgICAgICBjb250ZW50ID0gbGluZS5nZXRDb250ZW50KCk7XG5cbiAgICBsZXQgb2Zmc2V0ID0gMCxcbiAgICAgICAgc3RyaW5nID0gY29udGVudCwgLy8vXG4gICAgICAgIHJlc3VsdCA9IHN0cmluZy5tYXRjaCh0aGlzLnJlZ0V4cCk7XG5cbiAgICB3aGlsZSAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBvY2N1cnJlbmNlID0gT2NjdXJyZW5jZS5mcm9tUmVzdWx0QW5kT2Zmc2V0KHJlc3VsdCwgb2Zmc2V0KSxcbiAgICAgICAgICAgIGVuZCA9IG9jY3VycmVuY2UuZ2V0RW5kKCksXG4gICAgICAgICAgICBzdGFydCA9IGVuZDsgIC8vL1xuXG4gICAgICBzdHJpbmcgPSBzdHJpbmcuc3Vic3RyaW5nKHN0YXJ0KTsgLy8vXG5cbiAgICAgIG9mZnNldCArPSBzdGFydDtcblxuICAgICAgb2NjdXJyZW5jZXMucHVzaChvY2N1cnJlbmNlKTtcblxuICAgICAgcmVzdWx0ID0gc3RyaW5nLm1hdGNoKHRoaXMucmVnRXhwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2NjdXJyZW5jZXM7XG4gIH1cblxuICBtYXRjaChzdHJpbmcpIHtcbiAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5yZWdFeHAudGVzdChzdHJpbmcpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cblxuICBpc0VxdWFsVG8ocnVsZSkge1xuICAgIGxldCBlcXVhbFRvID0gZmFsc2U7XG5cbiAgICBjb25zdCBydWxlVHlwZSA9IHJ1bGUuZ2V0VHlwZSgpO1xuXG4gICAgaWYgKHJ1bGVUeXBlID09PSB0aGlzLnR5cGUpIHtcbiAgICAgIGNvbnN0IHJ1bGVQYXR0ZXJuID0gcnVsZS5nZXRQYXR0ZXJuKCk7XG5cbiAgICAgIGlmIChydWxlUGF0dGVybiA9PT0gdGhpcy5wYXR0ZXJuKSB7XG4gICAgICAgIGVxdWFsVG8gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgY29uc3Qgc3RyaW5nID0gYWRkRm9yd2FyZFNsYXNoZXModGhpcy5wYXR0ZXJuKTsgIC8vL1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgbGV0IHJlZ2V4UnVsZSA9IG51bGw7XG5cbiAgICBjb25zdCB7IHR5cGUgfSA9IGpzb247XG5cbiAgICBpZiAodHlwZSA9PT0gUkVHRVhfVFlQRSkge1xuICAgICAgY29uc3QgeyBwYXR0ZXJuIH0gPSBqc29uLFxuICAgICAgICAgICAgcmVnRXhwID0gbmV3IFJlZ0V4cChwYXR0ZXJuKTtcblxuICAgICAgcmVnZXhSdWxlID0gbmV3IFJlZ2V4UnVsZSh0eXBlLCBwYXR0ZXJuLCByZWdFeHApO1xuICAgIH1cblxuICAgIHJldHVybiByZWdleFJ1bGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0cmluZ0FuY2hvcmVkQW5kRGlyZWN0b3J5KHN0cmluZywgYW5jaG9yZWQsIGRpcmVjdG9yeSkge1xuICAgIGxldCByZWdleFJ1bGUgPSBudWxsO1xuXG4gICAgY29uc3QgcGF0dGVybiA9IHBhdHRlcm5Gcm9tU3RyaW5nQW5kRGlyZWN0b3J5KHN0cmluZywgYW5jaG9yZWQsIGRpcmVjdG9yeSk7XG5cbiAgICBpZiAocGF0dGVybiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZSA9IFJFR0VYX1RZUEUsXG4gICAgICAgICAgICByZWdFeHAgPSBuZXcgUmVnRXhwKHBhdHRlcm4pO1xuXG4gICAgICByZWdleFJ1bGUgPSBuZXcgUmVnZXhSdWxlKHR5cGUsIHBhdHRlcm4sIHJlZ0V4cCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZ2V4UnVsZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXR0ZXJuRnJvbVN0cmluZ0FuZERpcmVjdG9yeShzdHJpbmcsIGFuY2hvcmVkLCBkaXJlY3RvcnkpIHtcbiAgbGV0IHBhdHRlcm47XG5cbiAgY29uc3Qgc3RyaW5nUmVnZXhMaXRlcmFsID0gaXNTdHJpbmdSZWdleExpdGVyYWwoc3RyaW5nKTtcblxuICBpZiAoc3RyaW5nUmVnZXhMaXRlcmFsKSB7XG4gICAgY29uc3QgcmVnZXhMaXRlcmFsID0gc3RyaW5nOyAgLy8vXG5cbiAgICBwYXR0ZXJuID0gcmVtb3ZlRm9yd2FyZFNsYXNoZXMocmVnZXhMaXRlcmFsKTtcblxuICAgIHBhdHRlcm4gPSByZW1vdmVBbmNob3JzKHBhdHRlcm4pOyAvLy9cblxuICAgIHBhdHRlcm4gPSByZW1vdmVUcmFpbGluZ0VzY2FwZWRGb3J3YXJkU2xhc2gocGF0dGVybik7ICAvLy9cblxuICAgIGlmIChkaXJlY3RvcnkpIHtcbiAgICAgIHBhdHRlcm4gPSBhZGRUcmFpbGluZ0VzY2FwZWRGb3J3YXJkU2xhc2gocGF0dGVybik7IC8vL1xuICAgIH1cblxuICAgIGlmIChhbmNob3JlZCkge1xuICAgICAgcGF0dGVybiA9IGFkZEFuY2hvcnMocGF0dGVybik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIG5ldyBSZWdFeHAocGF0dGVybik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHBhdHRlcm4gPSBudWxsO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwYXR0ZXJuID0gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBwYXR0ZXJuO1xufVxuXG4iXSwibmFtZXMiOlsiUmVnZXhSdWxlIiwidHlwZSIsInBhdHRlcm4iLCJyZWdFeHAiLCJnZXRUeXBlIiwiZ2V0UGF0dGVybiIsImdldFJlZ0V4cCIsInRvSlNPTiIsImpzb24iLCJmaW5kIiwibGluZSIsIm9jY3VycmVuY2VzIiwiY29udGVudCIsImdldENvbnRlbnQiLCJvZmZzZXQiLCJzdHJpbmciLCJyZXN1bHQiLCJtYXRjaCIsIm9jY3VycmVuY2UiLCJPY2N1cnJlbmNlIiwiZnJvbVJlc3VsdEFuZE9mZnNldCIsImVuZCIsImdldEVuZCIsInN0YXJ0Iiwic3Vic3RyaW5nIiwicHVzaCIsIm1hdGNoZXMiLCJ0ZXN0IiwiaXNFcXVhbFRvIiwicnVsZSIsImVxdWFsVG8iLCJydWxlVHlwZSIsInJ1bGVQYXR0ZXJuIiwiYXNTdHJpbmciLCJhZGRGb3J3YXJkU2xhc2hlcyIsImZyb21KU09OIiwicmVnZXhSdWxlIiwiUkVHRVhfVFlQRSIsIlJlZ0V4cCIsImZyb21TdHJpbmdBbmNob3JlZEFuZERpcmVjdG9yeSIsImFuY2hvcmVkIiwiZGlyZWN0b3J5IiwicGF0dGVybkZyb21TdHJpbmdBbmREaXJlY3RvcnkiLCJzdHJpbmdSZWdleExpdGVyYWwiLCJpc1N0cmluZ1JlZ2V4TGl0ZXJhbCIsInJlZ2V4TGl0ZXJhbCIsInJlbW92ZUZvcndhcmRTbGFzaGVzIiwicmVtb3ZlQW5jaG9ycyIsInJlbW92ZVRyYWlsaW5nRXNjYXBlZEZvcndhcmRTbGFzaCIsImFkZFRyYWlsaW5nRXNjYXBlZEZvcndhcmRTbGFzaCIsImFkZEFuY2hvcnMiLCJlcnJvciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7ZUFhcUJBOzs7aUVBWEU7cUJBRUk7dUJBQ1U7c0JBTWE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFbkMsSUFBQSxBQUFNQSwwQkFBTjthQUFNQSxVQUNQQyxJQUFJLEVBQUVDLE9BQU8sRUFBRUMsTUFBTTtnQ0FEZEg7UUFFakIsSUFBSSxDQUFDQyxJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxPQUFPLEdBQUdBO1FBQ2YsSUFBSSxDQUFDQyxNQUFNLEdBQUdBOztrQkFKR0g7O1lBT25CSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNILElBQUk7WUFDbEI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNILE9BQU87WUFDckI7OztZQUVBSSxLQUFBQTttQkFBQUEsU0FBQUE7Z0JBQ0UsT0FBTyxJQUFJLENBQUNILE1BQU07WUFDcEI7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
117
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9ydWxlL3JlZ2V4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgT2NjdXJyZW5jZSBmcm9tIFwiLi4vb2NjdXJyZW5jZVwiO1xuXG5pbXBvcnQgeyBSRUdFWF9UWVBFIH0gZnJvbSBcIi4uL3R5cGVzXCI7XG5pbXBvcnQgeyBpc1N0cmluZ1JlZ2V4TGl0ZXJhbCB9IGZyb20gXCIuLi91dGlsaXRpZXMvbGl0ZXJhbFwiO1xuaW1wb3J0IHsgYWRkQW5jaG9ycyxcbiAgICAgICAgIHJlbW92ZUFuY2hvcnMsXG4gICAgICAgICBhZGRGb3J3YXJkU2xhc2hlcyxcbiAgICAgICAgIHJlbW92ZUZvcndhcmRTbGFzaGVzLFxuICAgICAgICAgYWRkVHJhaWxpbmdFc2NhcGVkRm9yd2FyZFNsYXNoLFxuICAgICAgICAgcmVtb3ZlVHJhaWxpbmdFc2NhcGVkRm9yd2FyZFNsYXNoIH0gZnJvbSBcIi4uL3V0aWxpdGllcy9zdHJpbmdcIjtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUmVnZXhSdWxlIHtcbiAgY29uc3RydWN0b3IodHlwZSwgcGF0dGVybiwgcmVnRXhwKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgICB0aGlzLnBhdHRlcm4gPSBwYXR0ZXJuO1xuICAgIHRoaXMucmVnRXhwID0gcmVnRXhwO1xuICB9XG5cbiAgZ2V0VHlwZSgpIHtcbiAgICByZXR1cm4gdGhpcy50eXBlO1xuICB9XG5cbiAgZ2V0UGF0dGVybigpIHtcbiAgICByZXR1cm4gdGhpcy5wYXR0ZXJuO1xuICB9XG5cbiAgZ2V0UmVnRXhwKCkge1xuICAgIHJldHVybiB0aGlzLnJlZ0V4cDtcbiAgfVxuXG4gIHRvSlNPTigpIHtcbiAgICBjb25zdCB0eXBlID0gdGhpcy50eXBlLFxuICAgICAgICAgIHBhdHRlcm4gPSB0aGlzLnBhdHRlcm4sXG4gICAgICAgICAganNvbiA9IHtcbiAgICAgICAgICAgIHR5cGUsXG4gICAgICAgICAgICBwYXR0ZXJuXG4gICAgICAgICAgfTtcblxuICAgIHJldHVybiBqc29uO1xuICB9XG5cbiAgZmluZChsaW5lKSB7XG4gICAgY29uc3Qgb2NjdXJyZW5jZXMgPSBbXSxcbiAgICAgICAgICBjb250ZW50ID0gbGluZS5nZXRDb250ZW50KCk7XG5cbiAgICBsZXQgb2Zmc2V0ID0gMCxcbiAgICAgICAgc3RyaW5nID0gY29udGVudCwgLy8vXG4gICAgICAgIHJlc3VsdCA9IHN0cmluZy5tYXRjaCh0aGlzLnJlZ0V4cCk7XG5cbiAgICB3aGlsZSAocmVzdWx0ICE9PSBudWxsKSB7XG4gICAgICBjb25zdCBvY2N1cnJlbmNlID0gT2NjdXJyZW5jZS5mcm9tUmVzdWx0QW5kT2Zmc2V0KHJlc3VsdCwgb2Zmc2V0KSxcbiAgICAgICAgICAgIGVuZCA9IG9jY3VycmVuY2UuZ2V0RW5kKCksXG4gICAgICAgICAgICBzdGFydCA9IGVuZDsgIC8vL1xuXG4gICAgICBzdHJpbmcgPSBzdHJpbmcuc3Vic3RyaW5nKHN0YXJ0KTsgLy8vXG5cbiAgICAgIG9mZnNldCArPSBzdGFydDtcblxuICAgICAgb2NjdXJyZW5jZXMucHVzaChvY2N1cnJlbmNlKTtcblxuICAgICAgcmVzdWx0ID0gc3RyaW5nLm1hdGNoKHRoaXMucmVnRXhwKTtcbiAgICB9XG5cbiAgICByZXR1cm4gb2NjdXJyZW5jZXM7XG4gIH1cblxuICBtYXRjaChzdHJpbmcpIHtcbiAgICBjb25zdCBtYXRjaGVzID0gdGhpcy5yZWdFeHAudGVzdChzdHJpbmcpO1xuXG4gICAgcmV0dXJuIG1hdGNoZXM7XG4gIH1cblxuICBpc0VxdWFsVG8ocnVsZSkge1xuICAgIGxldCBlcXVhbFRvID0gZmFsc2U7XG5cbiAgICBjb25zdCBydWxlVHlwZSA9IHJ1bGUuZ2V0VHlwZSgpO1xuXG4gICAgaWYgKHJ1bGVUeXBlID09PSB0aGlzLnR5cGUpIHtcbiAgICAgIGNvbnN0IHJ1bGVQYXR0ZXJuID0gcnVsZS5nZXRQYXR0ZXJuKCk7XG5cbiAgICAgIGlmIChydWxlUGF0dGVybiA9PT0gdGhpcy5wYXR0ZXJuKSB7XG4gICAgICAgIGVxdWFsVG8gPSB0cnVlO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBlcXVhbFRvO1xuICB9XG5cbiAgYXNTdHJpbmcoKSB7XG4gICAgY29uc3Qgc3RyaW5nID0gYWRkRm9yd2FyZFNsYXNoZXModGhpcy5wYXR0ZXJuKTsgIC8vL1xuXG4gICAgcmV0dXJuIHN0cmluZztcbiAgfVxuXG4gIHN0YXRpYyBmcm9tSlNPTihqc29uKSB7XG4gICAgbGV0IHJlZ2V4UnVsZSA9IG51bGw7XG5cbiAgICBjb25zdCB7IHR5cGUgfSA9IGpzb247XG5cbiAgICBpZiAodHlwZSA9PT0gUkVHRVhfVFlQRSkge1xuICAgICAgY29uc3QgeyBwYXR0ZXJuIH0gPSBqc29uLFxuICAgICAgICAgICAgcmVnRXhwID0gbmV3IFJlZ0V4cChwYXR0ZXJuKTtcblxuICAgICAgcmVnZXhSdWxlID0gbmV3IFJlZ2V4UnVsZSh0eXBlLCBwYXR0ZXJuLCByZWdFeHApO1xuICAgIH1cblxuICAgIHJldHVybiByZWdleFJ1bGU7XG4gIH1cblxuICBzdGF0aWMgZnJvbVN0cmluZ0FuY2hvcmVkQW5kRGlyZWN0b3J5KHN0cmluZywgYW5jaG9yZWQsIGRpcmVjdG9yeSkge1xuICAgIGxldCByZWdleFJ1bGUgPSBudWxsO1xuXG4gICAgY29uc3QgcGF0dGVybiA9IHBhdHRlcm5Gcm9tU3RyaW5nQW5kRGlyZWN0b3J5KHN0cmluZywgYW5jaG9yZWQsIGRpcmVjdG9yeSk7XG5cbiAgICBpZiAocGF0dGVybiAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgdHlwZSA9IFJFR0VYX1RZUEUsXG4gICAgICAgICAgICByZWdFeHAgPSBuZXcgUmVnRXhwKHBhdHRlcm4pO1xuXG4gICAgICByZWdleFJ1bGUgPSBuZXcgUmVnZXhSdWxlKHR5cGUsIHBhdHRlcm4sIHJlZ0V4cCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlZ2V4UnVsZTtcbiAgfVxufVxuXG5mdW5jdGlvbiBwYXR0ZXJuRnJvbVN0cmluZ0FuZERpcmVjdG9yeShzdHJpbmcsIGFuY2hvcmVkLCBkaXJlY3RvcnkpIHtcbiAgbGV0IHBhdHRlcm47XG5cbiAgY29uc3Qgc3RyaW5nUmVnZXhMaXRlcmFsID0gaXNTdHJpbmdSZWdleExpdGVyYWwoc3RyaW5nKTtcblxuICBpZiAoc3RyaW5nUmVnZXhMaXRlcmFsKSB7XG4gICAgY29uc3QgcmVnZXhMaXRlcmFsID0gc3RyaW5nOyAgLy8vXG5cbiAgICBwYXR0ZXJuID0gcmVtb3ZlRm9yd2FyZFNsYXNoZXMocmVnZXhMaXRlcmFsKTtcblxuICAgIHBhdHRlcm4gPSByZW1vdmVBbmNob3JzKHBhdHRlcm4pOyAvLy9cblxuICAgIHBhdHRlcm4gPSByZW1vdmVUcmFpbGluZ0VzY2FwZWRGb3J3YXJkU2xhc2gocGF0dGVybik7ICAvLy9cblxuICAgIGlmIChkaXJlY3RvcnkpIHtcbiAgICAgIHBhdHRlcm4gPSBhZGRUcmFpbGluZ0VzY2FwZWRGb3J3YXJkU2xhc2gocGF0dGVybik7IC8vL1xuICAgIH1cblxuICAgIGlmIChhbmNob3JlZCkge1xuICAgICAgcGF0dGVybiA9IGFkZEFuY2hvcnMocGF0dGVybik7XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIG5ldyBSZWdFeHAocGF0dGVybik7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIHBhdHRlcm4gPSBudWxsO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBwYXR0ZXJuID0gbnVsbDtcbiAgfVxuXG4gIHJldHVybiBwYXR0ZXJuO1xufVxuXG4iXSwibmFtZXMiOlsiUmVnZXhSdWxlIiwidHlwZSIsInBhdHRlcm4iLCJyZWdFeHAiLCJnZXRUeXBlIiwiZ2V0UGF0dGVybiIsImdldFJlZ0V4cCIsInRvSlNPTiIsImpzb24iLCJmaW5kIiwibGluZSIsIm9jY3VycmVuY2VzIiwiY29udGVudCIsImdldENvbnRlbnQiLCJvZmZzZXQiLCJzdHJpbmciLCJyZXN1bHQiLCJtYXRjaCIsIm9jY3VycmVuY2UiLCJPY2N1cnJlbmNlIiwiZnJvbVJlc3VsdEFuZE9mZnNldCIsImVuZCIsImdldEVuZCIsInN0YXJ0Iiwic3Vic3RyaW5nIiwicHVzaCIsIm1hdGNoZXMiLCJ0ZXN0IiwiaXNFcXVhbFRvIiwicnVsZSIsImVxdWFsVG8iLCJydWxlVHlwZSIsInJ1bGVQYXR0ZXJuIiwiYXNTdHJpbmciLCJhZGRGb3J3YXJkU2xhc2hlcyIsImZyb21KU09OIiwicmVnZXhSdWxlIiwiUkVHRVhfVFlQRSIsIlJlZ0V4cCIsImZyb21TdHJpbmdBbmNob3JlZEFuZERpcmVjdG9yeSIsImFuY2hvcmVkIiwiZGlyZWN0b3J5IiwicGF0dGVybkZyb21TdHJpbmdBbmREaXJlY3RvcnkiLCJzdHJpbmdSZWdleExpdGVyYWwiLCJpc1N0cmluZ1JlZ2V4TGl0ZXJhbCIsInJlZ2V4TGl0ZXJhbCIsInJlbW92ZUZvcndhcmRTbGFzaGVzIiwicmVtb3ZlQW5jaG9ycyIsInJlbW92ZVRyYWlsaW5nRXNjYXBlZEZvcndhcmRTbGFzaCIsImFkZFRyYWlsaW5nRXNjYXBlZEZvcndhcmRTbGFzaCIsImFkZEFuY2hvcnMiLCJlcnJvciJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7K0JBYUE7OztlQUFxQkE7OzttRUFYRTt1QkFFSTt5QkFDVTt3QkFNYTs7Ozs7O0FBRW5DLE1BQU1BO0lBQ25CLFlBQVlDLElBQUksRUFBRUMsT0FBTyxFQUFFQyxNQUFNLENBQUU7UUFDakMsSUFBSSxDQUFDRixJQUFJLEdBQUdBO1FBQ1osSUFBSSxDQUFDQyxPQUFPLEdBQUdBO1FBQ2YsSUFBSSxDQUFDQyxNQUFNLEdBQUdBO0lBQ2hCO0lBRUFDLFVBQVU7UUFDUixPQUFPLElBQUksQ0FBQ0gsSUFBSTtJQUNsQjtJQUVBSSxhQUFhO1FBQ1gsT0FBTyxJQUFJLENBQUNILE9BQU87SUFDckI7SUFFQUksWUFBWTtRQUNWLE9BQU8sSUFBSSxDQUFDSCxNQUFNO0lBQ3BCO0lBRUFJLFNBQVM7UUFDUCxNQUFNTixPQUFPLElBQUksQ0FBQ0EsSUFBSSxFQUNoQkMsVUFBVSxJQUFJLENBQUNBLE9BQU8sRUFDdEJNLE9B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