@codeperfect/eslint-plugin 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (131) hide show
  1. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  2. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -1
  3. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +4 -2
  4. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
  5. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +2 -4
  6. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.d.ts.map +1 -1
  7. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-rule.js +4 -134
  8. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-utilities.d.ts +14 -0
  9. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-utilities.d.ts.map +1 -0
  10. package/dist/domain/architecture/consistent-barrel-files/no-import-export-aliases-utilities.js +154 -0
  11. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.d.ts.map +1 -1
  12. package/dist/domain/architecture/consistent-barrel-files/no-import-export-extensions-rule.js +10 -12
  13. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.d.ts.map +1 -1
  14. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-rule.js +4 -11
  15. package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.d.ts +14 -0
  16. package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.d.ts.map +1 -0
  17. package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.js +187 -0
  18. package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.d.ts +26 -0
  19. package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.d.ts.map +1 -0
  20. package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.js +95 -0
  21. package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.d.ts +32 -0
  22. package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.d.ts.map +1 -0
  23. package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.js +78 -0
  24. package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.d.ts +18 -0
  25. package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.d.ts.map +1 -0
  26. package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.js +45 -0
  27. package/dist/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.d.ts +34 -0
  28. package/dist/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.d.ts.map +1 -0
  29. package/dist/domain/architecture/no-unused-exports/no-unused-exports-record-utilities.js +44 -0
  30. package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.d.ts +59 -0
  31. package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.d.ts.map +1 -0
  32. package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.js +133 -0
  33. package/dist/domain/architecture/no-unused-exports/no-unused-exports-usage-utilities.d.ts +28 -0
  34. package/dist/domain/architecture/no-unused-exports/no-unused-exports-usage-utilities.d.ts.map +1 -0
  35. package/dist/domain/architecture/no-unused-exports/no-unused-exports-usage-utilities.js +106 -0
  36. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts +21 -21
  37. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.d.ts.map +1 -1
  38. package/dist/domain/architecture/no-unused-exports/no-unused-exports-utilities.js +24 -587
  39. package/dist/domain/core/no-multiple-declarators/rule-utilities.d.ts +58 -0
  40. package/dist/domain/core/no-multiple-declarators/rule-utilities.d.ts.map +1 -0
  41. package/dist/domain/core/no-multiple-declarators/rule-utilities.js +204 -0
  42. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
  43. package/dist/domain/core/no-multiple-declarators/rule.js +9 -211
  44. package/dist/domain/core/no-multiple-declarators/types.js +2 -2
  45. package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts +57 -0
  46. package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts.map +1 -0
  47. package/dist/domain/core/prefer-interface-types/rule-utilities.js +105 -0
  48. package/dist/domain/core/prefer-interface-types/rule.d.ts.map +1 -1
  49. package/dist/domain/core/prefer-interface-types/rule.js +2 -104
  50. package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.d.ts +25 -0
  51. package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.d.ts.map +1 -0
  52. package/dist/domain/docs/no-interface-member-docs/comment-removal-ranges.js +64 -0
  53. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts +2 -24
  54. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
  55. package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +3 -65
  56. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +2 -2
  57. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +2 -2
  58. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
  59. package/dist/domain/docs/no-interface-member-docs/rule.js +3 -2
  60. package/dist/domain/docs/require-example-language/examples-collect.d.ts +15 -0
  61. package/dist/domain/docs/require-example-language/examples-collect.d.ts.map +1 -0
  62. package/dist/domain/docs/require-example-language/examples-collect.js +113 -0
  63. package/dist/domain/docs/require-example-language/examples.d.ts +24 -13
  64. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
  65. package/dist/domain/docs/require-example-language/examples.js +2 -111
  66. package/dist/domain/docs/require-example-language/fixes.js +4 -4
  67. package/dist/domain/docs/require-example-language/rule.d.ts.map +1 -1
  68. package/dist/domain/docs/require-example-language/rule.js +9 -8
  69. package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
  70. package/dist/domain/docs/require-example-language/types.js +1 -1
  71. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
  72. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +8 -8
  73. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
  74. package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +10 -9
  75. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -1
  76. package/dist/domain/testing/aaa/analyzer.assertions.operands.js +2 -5
  77. package/dist/domain/testing/aaa/analyzer.classification.helpers.js +14 -16
  78. package/dist/domain/testing/aaa/analyzer.classification.traversal.js +6 -4
  79. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
  80. package/dist/domain/testing/aaa/analyzer.super.js +10 -8
  81. package/dist/domain/testing/assert-actual-expected-names/rule.d.ts.map +1 -1
  82. package/dist/domain/testing/assert-actual-expected-names/rule.js +21 -23
  83. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -1
  84. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +1 -1
  85. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.d.ts.map +1 -1
  86. package/dist/domain/testing/enforce-aaa-phase-purity/phase-purity-reporting.js +2 -160
  87. package/dist/domain/testing/enforce-aaa-phase-purity/statement-purity-reporters.d.ts +41 -0
  88. package/dist/domain/testing/enforce-aaa-phase-purity/statement-purity-reporters.d.ts.map +1 -0
  89. package/dist/domain/testing/enforce-aaa-phase-purity/statement-purity-reporters.js +161 -0
  90. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -1
  91. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +2 -2
  92. package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.d.ts +81 -0
  93. package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.d.ts.map +1 -0
  94. package/dist/domain/testing/enforce-aaa-structure/rule-section-reporting.js +181 -0
  95. package/dist/domain/testing/enforce-aaa-structure/rule.d.ts.map +1 -1
  96. package/dist/domain/testing/enforce-aaa-structure/rule.js +28 -217
  97. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts +29 -0
  98. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts.map +1 -0
  99. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.js +200 -0
  100. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts +12 -0
  101. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts.map +1 -0
  102. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.js +151 -0
  103. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts +16 -0
  104. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts.map +1 -0
  105. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.js +109 -0
  106. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts.map +1 -1
  107. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.js +18 -450
  108. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.d.ts.map +1 -1
  109. package/dist/domain/testing/prefer-vi-mocked-import/fix-import-updates.js +7 -4
  110. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.d.ts.map +1 -1
  111. package/dist/domain/testing/prefer-vi-mocked-import/fix-imports.js +7 -4
  112. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +2 -2
  113. package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.d.ts +18 -0
  114. package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.d.ts.map +1 -0
  115. package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.js +162 -0
  116. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.d.ts.map +1 -1
  117. package/dist/domain/testing/prefer-vi-mocked-import/match-rewrites.js +5 -4
  118. package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.d.ts +29 -0
  119. package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.d.ts.map +1 -0
  120. package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.js +100 -0
  121. package/dist/domain/testing/prefer-vi-mocked-import/match.d.ts.map +1 -1
  122. package/dist/domain/testing/prefer-vi-mocked-import/match.js +5 -246
  123. package/dist/domain/testing/prefer-vi-mocked-import/rule.d.ts.map +1 -1
  124. package/dist/domain/testing/prefer-vi-mocked-import/rule.js +18 -20
  125. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
  126. package/dist/domain/testing/require-act-result-capture/rule.js +47 -21
  127. package/dist/domain/testing/require-test-companion/rule.d.ts.map +1 -1
  128. package/dist/domain/testing/require-test-companion/rule.js +2 -4
  129. package/dist/domain/testing/single-act-statement/rule.d.ts.map +1 -1
  130. package/dist/domain/testing/single-act-statement/rule.js +20 -22
  131. package/package.json +35 -38
@@ -0,0 +1,58 @@
1
+ import type { Rule } from "eslint";
2
+ import type { FixableVariableDeclarationNode, RangedVariableDeclaratorNode, SourceCodeAccess, VariableDeclarationNode, VariableDeclaratorNode } from "./types.js";
3
+ /**
4
+ * Gets the source access wrapper from the ESLint context.
5
+ * @param context Rule execution context.
6
+ * @returns Source access helpers used by the fixer.
7
+ * @example
8
+ * ```typescript
9
+ * const sourceCode = getSourceCode(context);
10
+ * ```
11
+ */
12
+ declare const getSourceCode: (context: Rule.RuleContext) => SourceCodeAccess;
13
+ /**
14
+ * Reads the full source text for the active file.
15
+ * @param sourceCode Source access wrapper.
16
+ * @returns Full source text.
17
+ * @example
18
+ * ```typescript
19
+ * const sourceText = getSourceText(sourceCode);
20
+ * ```
21
+ */
22
+ declare const getSourceText: (sourceCode: SourceCodeAccess) => string;
23
+ /**
24
+ * Collects ranged declarators when every declarator exposes a range.
25
+ * @param declarations Declarators from the declaration node.
26
+ * @returns Declarators with confirmed ranges, or `undefined` when any range is missing.
27
+ * @example
28
+ * ```typescript
29
+ * const ranged = getRangedDeclarations(node.declarations ?? []);
30
+ * ```
31
+ */
32
+ declare const getRangedDeclarations: (declarations: readonly VariableDeclaratorNode[]) => readonly RangedVariableDeclaratorNode[] | undefined;
33
+ /**
34
+ * Determines whether a declaration can be safely rewritten.
35
+ * @param node Declaration node to inspect.
36
+ * @param declarations Declarators within the declaration.
37
+ * @param sourceText Full source text.
38
+ * @returns Whether the declaration is safe to autofix.
39
+ * @example
40
+ * ```typescript
41
+ * const fixable = canFix(node, declarations, sourceText);
42
+ * ```
43
+ */
44
+ declare const canFix: (node: VariableDeclarationNode, declarations: readonly VariableDeclaratorNode[], sourceText: string) => boolean;
45
+ /**
46
+ * Converts declarators into separate declaration statements.
47
+ * @param node Fixable declaration node.
48
+ * @param declarations Declarators that should be split.
49
+ * @param sourceCode Source access wrapper.
50
+ * @returns Replacement text for the full declaration.
51
+ * @example
52
+ * ```typescript
53
+ * const replacement = buildReplacement(node, declarations, sourceCode);
54
+ * ```
55
+ */
56
+ declare const buildReplacement: (node: FixableVariableDeclarationNode, declarations: readonly RangedVariableDeclaratorNode[], sourceCode: SourceCodeAccess) => string;
57
+ export { buildReplacement, canFix, getRangedDeclarations, getSourceCode, getSourceText, };
58
+ //# sourceMappingURL=rule-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/no-multiple-declarators/rule-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAEnC,OAAO,KAAK,EACV,8BAA8B,EAG9B,4BAA4B,EAC5B,gBAAgB,EAChB,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,SAAS,CAAC;AAejB;;;;;;;;GAQG;AACH,QAAA,MAAM,aAAa,GAAI,SAAS,IAAI,CAAC,WAAW,KAAG,gBACA,CAAC;AAEpD;;;;;;;;GAQG;AACH,QAAA,MAAM,aAAa,GAAI,YAAY,gBAAgB,KAAG,MACwB,CAAC;AA6I/E;;;;;;;;GAQG;AACH,QAAA,MAAM,qBAAqB,GACzB,cAAc,SAAS,sBAAsB,EAAE,KAC9C,SAAS,4BAA4B,EAAE,GAAG,SAY5C,CAAC;AAEF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,MAAM,GACV,MAAM,uBAAuB,EAC7B,cAAc,SAAS,sBAAsB,EAAE,EAC/C,YAAY,MAAM,KACjB,OAiBF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,gBAAgB,GACpB,MAAM,8BAA8B,EACpC,cAAc,SAAS,4BAA4B,EAAE,EACrD,YAAY,gBAAgB,KAC3B,MAQF,CAAC;AAEF,OAAO,EACL,gBAAgB,EAChB,MAAM,EACN,qBAAqB,EACrB,aAAa,EACb,aAAa,GACd,CAAC"}
@@ -0,0 +1,204 @@
1
+ import { hasFixData, hasRange } from "./types.js";
2
+ /** Matches comment syntax between declarators. */
3
+ const commentPattern = /\/\/|\/\*/u;
4
+ /** Declaration kinds that can be safely split into standalone statements. */
5
+ const fixableDeclarationKinds = new Set(["const", "let", "var"]);
6
+ /** Loop parent types whose initializers cannot be safely split. */
7
+ const loopParentTypes = new Set([
8
+ "ForAwaitOfStatement",
9
+ "ForInStatement",
10
+ "ForOfStatement",
11
+ ]);
12
+ /**
13
+ * Gets the source access wrapper from the ESLint context.
14
+ * @param context Rule execution context.
15
+ * @returns Source access helpers used by the fixer.
16
+ * @example
17
+ * ```typescript
18
+ * const sourceCode = getSourceCode(context);
19
+ * ```
20
+ */
21
+ const getSourceCode = (context) => context.sourceCode;
22
+ /**
23
+ * Reads the full source text for the active file.
24
+ * @param sourceCode Source access wrapper.
25
+ * @returns Full source text.
26
+ * @example
27
+ * ```typescript
28
+ * const sourceText = getSourceText(sourceCode);
29
+ * ```
30
+ */
31
+ const getSourceText = (sourceCode) => typeof sourceCode.text === "string" ? sourceCode.text : sourceCode.getText();
32
+ /**
33
+ * Gets the line separator style used by the current source file.
34
+ * @param sourceText Full source text.
35
+ * @returns File-native line separator sequence.
36
+ * @example
37
+ * ```typescript
38
+ * const lineSeparator = getLineSeparator("const a = 1;\r\nconst b = 2;");
39
+ * ```
40
+ */
41
+ const getLineSeparator = (sourceText) => sourceText.includes("\r\n") ? "\r\n" : "\n";
42
+ /**
43
+ * Determines whether a declaration is used as a loop initializer.
44
+ * @param node Declaration node to inspect.
45
+ * @returns Whether the declaration is attached to a loop initializer.
46
+ * @example
47
+ * ```typescript
48
+ * const inLoop = isLoopInitializer(node);
49
+ * ```
50
+ */
51
+ const isLoopInitializer = (node) => {
52
+ const { parent } = node;
53
+ if (parent?.type === "ForStatement") {
54
+ return parent.init === node;
55
+ }
56
+ if (parent !== void 0 && loopParentTypes.has(parent.type)) {
57
+ return parent.left === node;
58
+ }
59
+ return false;
60
+ };
61
+ /**
62
+ * Determines whether a declaration is wrapped in an export statement.
63
+ * @param node Declaration node to inspect.
64
+ * @returns Whether the declaration is directly exported.
65
+ * @example
66
+ * ```typescript
67
+ * const exported = isWrappedExport(node);
68
+ * ```
69
+ */
70
+ const isWrappedExport = (node) => node.parent?.type === "ExportDefaultDeclaration" ||
71
+ node.parent?.type === "ExportNamedDeclaration";
72
+ /**
73
+ * Determines whether a declaration is ambient in TypeScript source.
74
+ * @param node Declaration node to inspect.
75
+ * @returns Whether the declaration is marked with `declare`.
76
+ * @example
77
+ * ```typescript
78
+ * const ambient = isTypeScriptAmbientDeclaration(node);
79
+ * ```
80
+ */
81
+ const isTypeScriptAmbientDeclaration = (node) => node.declare === true;
82
+ /**
83
+ * Determines whether a declaration kind is safe to rewrite.
84
+ * @param node Declaration node to inspect.
85
+ * @returns Whether the declaration kind supports conservative split fixes.
86
+ * @example
87
+ * ```typescript
88
+ * const safeKind = hasFixableDeclarationKind(node);
89
+ * ```
90
+ */
91
+ const hasFixableDeclarationKind = (node) => hasFixData(node) && fixableDeclarationKinds.has(node.kind);
92
+ /**
93
+ * Gets the indentation for the line containing a declaration.
94
+ * @param sourceText Full source text.
95
+ * @param start Start offset of the declaration.
96
+ * @returns Leading indentation for the declaration line.
97
+ * @example
98
+ * ```typescript
99
+ * const indent = getLineIndent("const a = 1;", 0);
100
+ * ```
101
+ */
102
+ const getLineIndent = (sourceText, start) => {
103
+ const lineStart = sourceText.lastIndexOf("\n", start - 1) + 1;
104
+ const linePrefix = sourceText.slice(lineStart, start);
105
+ let indentLength = 0;
106
+ while (indentLength < linePrefix.length) {
107
+ const currentCharacter = linePrefix[indentLength];
108
+ if (currentCharacter !== "\t" && currentCharacter !== " ") {
109
+ break;
110
+ }
111
+ indentLength += 1;
112
+ }
113
+ return linePrefix.slice(0, indentLength);
114
+ };
115
+ /**
116
+ * Detects whether comments appear between declarators.
117
+ * @param declarations Declarators from a single declaration statement.
118
+ * @param sourceText Full source text.
119
+ * @returns Whether comments appear between declarators.
120
+ * @example
121
+ * ```typescript
122
+ * const blocked = hasSeparatorComment(declarations, sourceText);
123
+ * ```
124
+ */
125
+ const hasSeparatorComment = (declarations, sourceText) => {
126
+ for (const [index, declaration] of declarations.entries()) {
127
+ const nextDeclaration = declarations[index + 1];
128
+ if (nextDeclaration === void 0) {
129
+ break;
130
+ }
131
+ if (!hasRange(declaration) || !hasRange(nextDeclaration)) {
132
+ return true;
133
+ }
134
+ const separatorText = sourceText.slice(declaration.range[1], nextDeclaration.range[0]);
135
+ if (commentPattern.test(separatorText)) {
136
+ return true;
137
+ }
138
+ }
139
+ return false;
140
+ };
141
+ /**
142
+ * Collects ranged declarators when every declarator exposes a range.
143
+ * @param declarations Declarators from the declaration node.
144
+ * @returns Declarators with confirmed ranges, or `undefined` when any range is missing.
145
+ * @example
146
+ * ```typescript
147
+ * const ranged = getRangedDeclarations(node.declarations ?? []);
148
+ * ```
149
+ */
150
+ const getRangedDeclarations = (declarations) => {
151
+ const rangedDeclarations = [];
152
+ for (const declaration of declarations) {
153
+ if (!hasRange(declaration)) {
154
+ return void 0;
155
+ }
156
+ rangedDeclarations.push(declaration);
157
+ }
158
+ return rangedDeclarations;
159
+ };
160
+ /**
161
+ * Determines whether a declaration can be safely rewritten.
162
+ * @param node Declaration node to inspect.
163
+ * @param declarations Declarators within the declaration.
164
+ * @param sourceText Full source text.
165
+ * @returns Whether the declaration is safe to autofix.
166
+ * @example
167
+ * ```typescript
168
+ * const fixable = canFix(node, declarations, sourceText);
169
+ * ```
170
+ */
171
+ const canFix = (node, declarations, sourceText) => {
172
+ if (!hasFixData(node)) {
173
+ return false;
174
+ }
175
+ if (!hasFixableDeclarationKind(node) ||
176
+ isTypeScriptAmbientDeclaration(node)) {
177
+ return false;
178
+ }
179
+ if (isLoopInitializer(node) || isWrappedExport(node)) {
180
+ return false;
181
+ }
182
+ return !hasSeparatorComment(declarations, sourceText);
183
+ };
184
+ /**
185
+ * Converts declarators into separate declaration statements.
186
+ * @param node Fixable declaration node.
187
+ * @param declarations Declarators that should be split.
188
+ * @param sourceCode Source access wrapper.
189
+ * @returns Replacement text for the full declaration.
190
+ * @example
191
+ * ```typescript
192
+ * const replacement = buildReplacement(node, declarations, sourceCode);
193
+ * ```
194
+ */
195
+ const buildReplacement = (node, declarations, sourceCode) => {
196
+ const sourceText = getSourceText(sourceCode);
197
+ const indent = getLineIndent(sourceText, node.range[0]);
198
+ const lineSeparator = getLineSeparator(sourceText);
199
+ return declarations
200
+ .map((declaration) => `${node.kind} ${sourceCode.getText(declaration)};`)
201
+ .join(`${lineSeparator}${indent}`);
202
+ };
203
+ export { buildReplacement, canFix, getRangedDeclarations, getSourceCode, getSourceText, };
204
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2NvcmUvbm8tbXVsdGlwbGUtZGVjbGFyYXRvcnMvcnVsZS11dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFL0Msa0RBQWtEO0FBQ2xELE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQztBQUNwQyw2RUFBNkU7QUFDN0UsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqRSxtRUFBbUU7QUFDbkUsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDOUIscUJBQXFCO0lBQ3JCLGdCQUFnQjtJQUNoQixnQkFBZ0I7Q0FDakIsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQXlCLEVBQW9CLEVBQUUsQ0FDcEUsT0FBTyxDQUFDLFVBQXlDLENBQUM7QUFFcEQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLFVBQTRCLEVBQVUsRUFBRSxDQUM3RCxPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFL0U7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsVUFBa0IsRUFBVSxFQUFFLENBQ3RELFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRTlDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQTZC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TSxVQUFVLEdBQUcsYUFBYSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdDLE1BQU0sTUFBTSxHQUFHLGFBQWEsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3hELE1BQU0sYUFBYSxHQUFHLGdCQUFnQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRW5ELE9BQU8sWUFBWTtTQUNoQixHQUFHLENBQUMsQ0FBQyxXQUFXLEVBQUUsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksSUFBSSxVQUFVLENBQUMsT0FBTyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUM7U0FDeEUsSUFBSSxDQUFDLEdBQUcsYUFBYSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7QUFDdkMsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixNQUFNLEVBQ04scUJBQXFCLEVBQ3JCLGFBQWEsRUFDYixhQUFhLEdBQ2QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUge1xuICBGaXhhYmxlVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4gIEZvckluT3JPZlN0YXRlbWVudE5vZGUsXG4gIEZvclN0YXRlbWVudE5vZGUsXG4gIFJhbmdlZFZhcmlhYmxlRGVjbGFyYXRvck5vZGUsXG4gIFNvdXJjZUNvZGVBY2Nlc3MsXG4gIFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLFxuICBWYXJpYWJsZURlY2xhcmF0b3JOb2RlLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuXG5pbXBvcnQgeyBoYXNGaXhEYXRhLCBoYXNSYW5nZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKiBNYXRjaGVzIGNvbW1lbnQgc3ludGF4IGJldHdlZW4gZGVjbGFyYXRvcnMuICovXG5jb25zdCBjb21tZW50UGF0dGVybiA9IC9cXC9cXC98XFwvXFwqL3U7XG4vKiogRGVjbGFyYXRpb24ga2luZHMgdGhhdCBjYW4gYmUgc2FmZWx5IHNwbGl0IGludG8gc3RhbmRhbG9uZSBzdGF0ZW1lbnRzLiAqL1xuY29uc3QgZml4YWJsZURlY2xhcmF0aW9uS2luZHMgPSBuZXcgU2V0KFtcImNvbnN0XCIsIFwibGV0XCIsIFwidmFyXCJdKTtcbi8qKiBMb29wIHBhcmVudCB0eXBlcyB3aG9zZSBpbml0aWFsaXplcnMgY2Fubm90IGJlIHNhZmVseSBzcGxpdC4gKi9cbmNvbnN0IGxvb3BQYXJlbnRUeXBlcyA9IG5ldyBTZXQoW1xuICBcIkZvckF3YWl0T2ZTdGF0ZW1lbnRcIixcbiAgXCJGb3JJblN0YXRlbWVudFwiLFxuICBcIkZvck9mU3RhdGVtZW50XCIsXG5dKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBzb3VyY2UgYWNjZXNzIHdyYXBwZXIgZnJvbSB0aGUgRVNMaW50IGNvbnRleHQuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHJldHVybnMgU291cmNlIGFjY2VzcyBoZWxwZXJzIHVzZWQgYnkgdGhlIGZpeGVyLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNvdXJjZUNvZGUgPSBnZXRTb3VyY2VDb2RlKGNvbnRleHQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFNvdXJjZUNvZGUgPSAoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFNvdXJjZUNvZGVBY2Nlc3MgPT5cbiAgY29udGV4dC5zb3VyY2VDb2RlIGFzIHVua25vd24gYXMgU291cmNlQ29kZUFjY2VzcztcblxuLyoqXG4gKiBSZWFkcyB0aGUgZnVsbCBzb3VyY2UgdGV4dCBmb3IgdGhlIGFjdGl2ZSBmaWxlLlxuICogQHBhcmFtIHNvdXJjZUNvZGUgU291cmNlIGFjY2VzcyB3cmFwcGVyLlxuICogQHJldHVybnMgRnVsbCBzb3VyY2UgdGV4dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzb3VyY2VUZXh0ID0gZ2V0U291cmNlVGV4dChzb3VyY2VDb2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRTb3VyY2VUZXh0ID0gKHNvdXJjZUNvZGU6IFNvdXJjZUNvZGVBY2Nlc3MpOiBzdHJpbmcgPT5cbiAgdHlwZW9mIHNvdXJjZUNvZGUudGV4dCA9PT0gXCJzdHJpbmdcIiA/IHNvdXJjZUNvZGUudGV4dCA6IHNvdXJjZUNvZGUuZ2V0VGV4dCgpO1xuXG4vKipcbiAqIEdldHMgdGhlIGxpbmUgc2VwYXJhdG9yIHN0eWxlIHVzZWQgYnkgdGhlIGN1cnJlbnQgc291cmNlIGZpbGUuXG4gKiBAcGFyYW0gc291cmNlVGV4dCBGdWxsIHNvdXJjZSB0ZXh0LlxuICogQHJldHVybnMgRmlsZS1uYXRpdmUgbGluZSBzZXBhcmF0b3Igc2VxdWVuY2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGluZVNlcGFyYXRvciA9IGdldExpbmVTZXBhcmF0b3IoXCJjb25zdCBhID0gMTtcXHJcXG5jb25zdCBiID0gMjtcIik7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0TGluZVNlcGFyYXRvciA9IChzb3VyY2VUZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgc291cmNlVGV4dC5pbmNsdWRlcyhcIlxcclxcblwiKSA/IFwiXFxyXFxuXCIgOiBcIlxcblwiO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGRlY2xhcmF0aW9uIGlzIHVzZWQgYXMgYSBsb29wIGluaXRpYWxpemVyLlxuICogQHBhcmFtIG5vZGUgRGVjbGFyYXRpb24gbm9kZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZGVjbGFyYXRpb24gaXMgYXR0YWNoZWQgdG8gYSBsb29wIGluaXRpYWxpemVyLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGluTG9vcCA9IGlzTG9vcEluaXRpYWxpemVyKG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzTG9vcEluaXRpYWxpemVyID0gKG5vZGU6IFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHsgcGFyZW50IH0gPSBub2RlO1xuXG4gIGlmIChwYXJlbnQ/LnR5cGUgPT09IFwiRm9yU3RhdGVtZW50XCIpIHtcbiAgICByZXR1cm4gKHBhcmVudCBhcyBGb3JTdGF0ZW1lbnROb2RlKS5pbml0ID09PSBub2RlO1xuICB9XG5cbiAgaWYgKHBhcmVudCAhPT0gdm9pZCAwICYmIGxvb3BQYXJlbnRUeXBlcy5oYXMocGFyZW50LnR5cGUpKSB7XG4gICAgcmV0dXJuIChwYXJlbnQgYXMgRm9ySW5Pck9mU3RhdGVtZW50Tm9kZSkubGVmdCA9PT0gbm9kZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZGVjbGFyYXRpb24gaXMgd3JhcHBlZCBpbiBhbiBleHBvcnQgc3RhdGVtZW50LlxuICogQHBhcmFtIG5vZGUgRGVjbGFyYXRpb24gbm9kZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZGVjbGFyYXRpb24gaXMgZGlyZWN0bHkgZXhwb3J0ZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZXhwb3J0ZWQgPSBpc1dyYXBwZWRFeHBvcnQobm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNXcmFwcGVkRXhwb3J0ID0gKG5vZGU6IFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKTogYm9vbGVhbiA9PlxuICBub2RlLnBhcmVudD8udHlwZSA9PT0gXCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25cIiB8fFxuICBub2RlLnBhcmVudD8udHlwZSA9PT0gXCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCI7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZGVjbGFyYXRpb24gaXMgYW1iaWVudCBpbiBUeXBlU2NyaXB0IHNvdXJjZS5cbiAqIEBwYXJhbSBub2RlIERlY2xhcmF0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGRlY2xhcmF0aW9uIGlzIG1hcmtlZCB3aXRoIGBkZWNsYXJlYC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhbWJpZW50ID0gaXNUeXBlU2NyaXB0QW1iaWVudERlY2xhcmF0aW9uKG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzVHlwZVNjcmlwdEFtYmllbnREZWNsYXJhdGlvbiA9IChcbiAgbm9kZTogVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4pOiBib29sZWFuID0+IG5vZGUuZGVjbGFyZSA9PT0gdHJ1ZTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBkZWNsYXJhdGlvbiBraW5kIGlzIHNhZmUgdG8gcmV3cml0ZS5cbiAqIEBwYXJhbSBub2RlIERlY2xhcmF0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGRlY2xhcmF0aW9uIGtpbmQgc3VwcG9ydHMgY29uc2VydmF0aXZlIHNwbGl0IGZpeGVzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNhZmVLaW5kID0gaGFzRml4YWJsZURlY2xhcmF0aW9uS2luZChub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBoYXNGaXhhYmxlRGVjbGFyYXRpb25LaW5kID0gKG5vZGU6IFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKTogYm9vbGVhbiA9PlxuICBoYXNGaXhEYXRhKG5vZGUpICYmIGZpeGFibGVEZWNsYXJhdGlvbktpbmRzLmhhcyhub2RlLmtpbmQpO1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGVudGF0aW9uIGZvciB0aGUgbGluZSBjb250YWluaW5nIGEgZGVjbGFyYXRpb24uXG4gKiBAcGFyYW0gc291cmNlVGV4dCBGdWxsIHNvdXJjZSB0ZXh0LlxuICogQHBhcmFtIHN0YXJ0IFN0YXJ0IG9mZnNldCBvZiB0aGUgZGVjbGFyYXRpb24uXG4gKiBAcmV0dXJucyBMZWFkaW5nIGluZGVudGF0aW9uIGZvciB0aGUgZGVjbGFyYXRpb24gbGluZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBpbmRlbnQgPSBnZXRMaW5lSW5kZW50KFwiY29uc3QgYSA9IDE7XCIsIDApO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldExpbmVJbmRlbnQgPSAoc291cmNlVGV4dDogc3RyaW5nLCBzdGFydDogbnVtYmVyKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbGluZVN0YXJ0ID0gc291cmNlVGV4dC5sYXN0SW5kZXhPZihcIlxcblwiLCBzdGFydCAtIDEpICsgMTtcbiAgY29uc3QgbGluZVByZWZpeCA9IHNvdXJjZVRleHQuc2xpY2UobGluZVN0YXJ0LCBzdGFydCk7XG4gIGxldCBpbmRlbnRMZW5ndGggPSAwO1xuXG4gIHdoaWxlIChpbmRlbnRMZW5ndGggPCBsaW5lUHJlZml4Lmxlbmd0aCkge1xuICAgIGNvbnN0IGN1cnJlbnRDaGFyYWN0ZXIgPSBsaW5lUHJlZml4W2luZGVudExlbmd0aF07XG5cbiAgICBpZiAoY3VycmVudENoYXJhY3RlciAhPT0gXCJcXHRcIiAmJiBjdXJyZW50Q2hhcmFjdGVyICE9PSBcIiBcIikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaW5kZW50TGVuZ3RoICs9IDE7XG4gIH1cblxuICByZXR1cm4gbGluZVByZWZpeC5zbGljZSgwLCBpbmRlbnRMZW5ndGgpO1xufTtcblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgY29tbWVudHMgYXBwZWFyIGJldHdlZW4gZGVjbGFyYXRvcnMuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb25zIERlY2xhcmF0b3JzIGZyb20gYSBzaW5nbGUgZGVjbGFyYXRpb24gc3RhdGVtZW50LlxuICogQHBhcmFtIHNvdXJjZVRleHQgRnVsbCBzb3VyY2UgdGV4dC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgY29tbWVudHMgYXBwZWFyIGJldHdlZW4gZGVjbGFyYXRvcnMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYmxvY2tlZCA9IGhhc1NlcGFyYXRvckNvbW1lbnQoZGVjbGFyYXRpb25zLCBzb3VyY2VUZXh0KTtcbiAqIGBgYFxuICovXG5jb25zdCBoYXNTZXBhcmF0b3JDb21tZW50ID0gKFxuICBkZWNsYXJhdGlvbnM6IHJlYWRvbmx5IFZhcmlhYmxlRGVjbGFyYXRvck5vZGVbXSxcbiAgc291cmNlVGV4dDogc3RyaW5nLFxuKTogYm9vbGVhbiA9PiB7XG4gIGZvciAoY29uc3QgW2luZGV4LCBkZWNsYXJhdGlvbl0gb2YgZGVjbGFyYXRpb25zLmVudHJpZXMoKSkge1xuICAgIGNvbnN0IG5leHREZWNsYXJhdGlvbiA9IGRlY2xhcmF0aW9uc1tpbmRleCArIDFdO1xuXG4gICAgaWYgKG5leHREZWNsYXJhdGlvbiA9PT0gdm9pZCAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoIWhhc1JhbmdlKGRlY2xhcmF0aW9uKSB8fCAhaGFzUmFuZ2UobmV4dERlY2xhcmF0aW9uKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VwYXJhdG9yVGV4dCA9IHNvdXJjZVRleHQuc2xpY2UoXG4gICAgICBkZWNsYXJhdGlvbi5yYW5nZVsxXSxcbiAgICAgIG5leHREZWNsYXJhdGlvbi5yYW5nZVswXSxcbiAgICApO1xuXG4gICAgaWYgKGNvbW1lbnRQYXR0ZXJuLnRlc3Qoc2VwYXJhdG9yVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogQ29sbGVjdHMgcmFuZ2VkIGRlY2xhcmF0b3JzIHdoZW4gZXZlcnkgZGVjbGFyYXRvciBleHBvc2VzIGEgcmFuZ2UuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb25zIERlY2xhcmF0b3JzIGZyb20gdGhlIGRlY2xhcmF0aW9uIG5vZGUuXG4gKiBAcmV0dXJucyBEZWNsYXJhdG9ycyB3aXRoIGNvbmZpcm1lZCByYW5nZXMsIG9yIGB1bmRlZmluZWRgIHdoZW4gYW55IHJhbmdlIGlzIG1pc3NpbmcuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmFuZ2VkID0gZ2V0UmFuZ2VkRGVjbGFyYXRpb25zKG5vZGUuZGVjbGFyYXRpb25zID8/IFtdKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRSYW5nZWREZWNsYXJhdGlvbnMgPSAoXG4gIGRlY2xhcmF0aW9uczogcmVhZG9ubHkgVmFyaWFibGVEZWNsYXJhdG9yTm9kZVtdLFxuKTogcmVhZG9ubHkgUmFuZ2VkVmFyaWFibGVEZWNsYXJhdG9yTm9kZVtdIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcmFuZ2VkRGVjbGFyYXRpb25zOiBSYW5nZWRWYXJpYWJsZURlY2xhcmF0b3JOb2RlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGRlY2xhcmF0aW9uIG9mIGRlY2xhcmF0aW9ucykge1xuICAgIGlmICghaGFzUmFuZ2UoZGVjbGFyYXRpb24pKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cblxuICAgIHJhbmdlZERlY2xhcmF0aW9ucy5wdXNoKGRlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIHJldHVybiByYW5nZWREZWNsYXJhdGlvbnM7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGRlY2xhcmF0aW9uIGNhbiBiZSBzYWZlbHkgcmV3cml0dGVuLlxuICogQHBhcmFtIG5vZGUgRGVjbGFyYXRpb24gbm9kZSB0byBpbnNwZWN0LlxuICogQHBhcmFtIGRlY2xhcmF0aW9ucyBEZWNsYXJhdG9ycyB3aXRoaW4gdGhlIGRlY2xhcmF0aW9uLlxuICogQHBhcmFtIHNvdXJjZVRleHQgRnVsbCBzb3VyY2UgdGV4dC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGRlY2xhcmF0aW9uIGlzIHNhZmUgdG8gYXV0b2ZpeC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXhhYmxlID0gY2FuRml4KG5vZGUsIGRlY2xhcmF0aW9ucywgc291cmNlVGV4dCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY2FuRml4ID0gKFxuICBub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcbiAgZGVjbGFyYXRpb25zOiByZWFkb25seSBWYXJpYWJsZURlY2xhcmF0b3JOb2RlW10sXG4gIHNvdXJjZVRleHQ6IHN0cmluZyxcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAoIWhhc0ZpeERhdGEobm9kZSkpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoXG4gICAgIWhhc0ZpeGFibGVEZWNsYXJhdGlvbktpbmQobm9kZSkgfHxcbiAgICBpc1R5cGVTY3JpcHRBbWJpZW50RGVjbGFyYXRpb24obm9kZSlcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgaWYgKGlzTG9vcEluaXRpYWxpemVyKG5vZGUpIHx8IGlzV3JhcHBlZEV4cG9ydChub2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiAhaGFzU2VwYXJhdG9yQ29tbWVudChkZWNsYXJhdGlvbnMsIHNvdXJjZVRleHQpO1xufTtcblxuLyoqXG4gKiBDb252ZXJ0cyBkZWNsYXJhdG9ycyBpbnRvIHNlcGFyYXRlIGRlY2xhcmF0aW9uIHN0YXRlbWVudHMuXG4gKiBAcGFyYW0gbm9kZSBGaXhhYmxlIGRlY2xhcmF0aW9uIG5vZGUuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb25zIERlY2xhcmF0b3JzIHRoYXQgc2hvdWxkIGJlIHNwbGl0LlxuICogQHBhcmFtIHNvdXJjZUNvZGUgU291cmNlIGFjY2VzcyB3cmFwcGVyLlxuICogQHJldHVybnMgUmVwbGFjZW1lbnQgdGV4dCBmb3IgdGhlIGZ1bGwgZGVjbGFyYXRpb24uXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmVwbGFjZW1lbnQgPSBidWlsZFJlcGxhY2VtZW50KG5vZGUsIGRlY2xhcmF0aW9ucywgc291cmNlQ29kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgYnVpbGRSZXBsYWNlbWVudCA9IChcbiAgbm9kZTogRml4YWJsZVZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLFxuICBkZWNsYXJhdGlvbnM6IHJlYWRvbmx5IFJhbmdlZFZhcmlhYmxlRGVjbGFyYXRvck5vZGVbXSxcbiAgc291cmNlQ29kZTogU291cmNlQ29kZUFjY2Vzcyxcbik6IHN0cmluZyA9PiB7XG4gIGNvbnN0IHNvdXJjZVRleHQgPSBnZXRTb3VyY2VUZXh0KHNvdXJjZUNvZGUpO1xuICBjb25zdCBpbmRlbnQgPSBnZXRMaW5lSW5kZW50KHNvdXJjZVRleHQsIG5vZGUucmFuZ2VbMF0pO1xuICBjb25zdCBsaW5lU2VwYXJhdG9yID0gZ2V0TGluZVNlcGFyYXRvcihzb3VyY2VUZXh0KTtcblxuICByZXR1cm4gZGVjbGFyYXRpb25zXG4gICAgLm1hcCgoZGVjbGFyYXRpb24pID0+IGAke25vZGUua2luZH0gJHtzb3VyY2VDb2RlLmdldFRleHQoZGVjbGFyYXRpb24pfTtgKVxuICAgIC5qb2luKGAke2xpbmVTZXBhcmF0b3J9JHtpbmRlbnR9YCk7XG59O1xuXG5leHBvcnQge1xuICBidWlsZFJlcGxhY2VtZW50LFxuICBjYW5GaXgsXG4gIGdldFJhbmdlZERlY2xhcmF0aW9ucyxcbiAgZ2V0U291cmNlQ29kZSxcbiAgZ2V0U291cmNlVGV4dCxcbn07XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/no-multiple-declarators/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA+UnC,4EAA4E;AAC5E,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UAuBrC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/no-multiple-declarators/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAgFnC,4EAA4E;AAC5E,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UAqBrC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
@@ -1,205 +1,5 @@
1
- import { hasFixData, hasRange } from "./types.js";
2
- /** Matches comment syntax between declarators. */
3
- const commentPattern = /\/\/|\/\*/u;
4
- /** Declaration kinds that can be safely split into standalone statements. */
5
- const fixableDeclarationKinds = new Set(["const", "let", "var"]);
6
- /** Loop parent types whose initializers cannot be safely split. */
7
- const loopParentTypes = new Set([
8
- "ForAwaitOfStatement",
9
- "ForInStatement",
10
- "ForOfStatement",
11
- ]);
12
- /**
13
- * Gets the source access wrapper from the ESLint context.
14
- * @param context Rule execution context.
15
- * @returns Source access helpers used by the fixer.
16
- * @example
17
- * ```typescript
18
- * const sourceCode = getSourceCode(context);
19
- * ```
20
- */
21
- const getSourceCode = (context) => context.sourceCode;
22
- /**
23
- * Reads the full source text for the active file.
24
- * @param sourceCode Source access wrapper.
25
- * @returns Full source text.
26
- * @example
27
- * ```typescript
28
- * const sourceText = getSourceText(sourceCode);
29
- * ```
30
- */
31
- const getSourceText = (sourceCode) => typeof sourceCode.text === "string" ? sourceCode.text : sourceCode.getText();
32
- /**
33
- * Gets the line separator style used by the current source file.
34
- * @param sourceText Full source text.
35
- * @returns File-native line separator sequence.
36
- * @example
37
- * ```typescript
38
- * const lineSeparator = getLineSeparator("const a = 1;\r\nconst b = 2;");
39
- * ```
40
- */
41
- const getLineSeparator = (sourceText) => sourceText.includes("\r\n") ? "\r\n" : "\n";
42
- /**
43
- * Determines whether a declaration is used as a loop initializer.
44
- * @param node Declaration node to inspect.
45
- * @returns Whether the declaration is attached to a loop initializer.
46
- * @example
47
- * ```typescript
48
- * const inLoop = isLoopInitializer(node);
49
- * ```
50
- */
51
- const isLoopInitializer = (node) => {
52
- const { parent } = node;
53
- if (parent?.type === "ForStatement") {
54
- return parent.init === node;
55
- }
56
- if (parent !== void 0 && loopParentTypes.has(parent.type)) {
57
- return parent.left === node;
58
- }
59
- return false;
60
- };
61
- /**
62
- * Determines whether a declaration is wrapped in an export statement.
63
- * @param node Declaration node to inspect.
64
- * @returns Whether the declaration is directly exported.
65
- * @example
66
- * ```typescript
67
- * const exported = isWrappedExport(node);
68
- * ```
69
- */
70
- const isWrappedExport = (node) => node.parent?.type === "ExportDefaultDeclaration" ||
71
- node.parent?.type === "ExportNamedDeclaration";
72
- /**
73
- * Determines whether a declaration is ambient in TypeScript source.
74
- * @param node Declaration node to inspect.
75
- * @returns Whether the declaration is marked with `declare`.
76
- * @example
77
- * ```typescript
78
- * const ambient = isTypeScriptAmbientDeclaration(node);
79
- * ```
80
- */
81
- const isTypeScriptAmbientDeclaration = (node) => node.declare === true;
82
- /**
83
- * Determines whether a declaration kind is safe to rewrite.
84
- * @param node Declaration node to inspect.
85
- * @returns Whether the declaration kind supports conservative split fixes.
86
- * @example
87
- * ```typescript
88
- * const safeKind = hasFixableDeclarationKind(node);
89
- * ```
90
- */
91
- const hasFixableDeclarationKind = (node) => hasFixData(node) && fixableDeclarationKinds.has(node.kind);
92
- /**
93
- * Gets the indentation for the line containing a declaration.
94
- * @param sourceText Full source text.
95
- * @param start Start offset of the declaration.
96
- * @returns Leading indentation for the declaration line.
97
- * @example
98
- * ```typescript
99
- * const indent = getLineIndent("const a = 1;", 0);
100
- * ```
101
- */
102
- const getLineIndent = (sourceText, start) => {
103
- const lineStart = sourceText.lastIndexOf("\n", start - 1) + 1;
104
- const linePrefix = sourceText.slice(lineStart, start);
105
- let indentLength = 0;
106
- while (indentLength < linePrefix.length) {
107
- const currentCharacter = linePrefix[indentLength];
108
- if (currentCharacter !== "\t" && currentCharacter !== " ") {
109
- break;
110
- }
111
- indentLength += 1;
112
- }
113
- return linePrefix.slice(0, indentLength);
114
- };
115
- /**
116
- * Detects whether comments appear between declarators.
117
- * @param declarations Declarators from a single declaration statement.
118
- * @param sourceText Full source text.
119
- * @returns Whether comments appear between declarators.
120
- * @example
121
- * ```typescript
122
- * const blocked = hasSeparatorComment(declarations, sourceText);
123
- * ```
124
- */
125
- const hasSeparatorComment = (declarations, sourceText) => {
126
- for (const [index, declaration] of declarations.entries()) {
127
- const nextDeclaration = declarations[index + 1];
128
- if (nextDeclaration === void 0) {
129
- break;
130
- }
131
- if (!hasRange(declaration) || !hasRange(nextDeclaration)) {
132
- return true;
133
- }
134
- const separatorText = sourceText.slice(declaration.range[1], nextDeclaration.range[0]);
135
- if (commentPattern.test(separatorText)) {
136
- return true;
137
- }
138
- }
139
- return false;
140
- };
141
- /**
142
- * Determines whether a declaration can be safely rewritten.
143
- * @param node Declaration node to inspect.
144
- * @param declarations Declarators within the declaration.
145
- * @param sourceText Full source text.
146
- * @returns Whether the declaration is safe to autofix.
147
- * @example
148
- * ```typescript
149
- * const fixable = canFix(node, declarations, sourceText);
150
- * ```
151
- */
152
- const canFix = (node, declarations, sourceText) => {
153
- if (!hasFixData(node)) {
154
- return false;
155
- }
156
- if (!hasFixableDeclarationKind(node) ||
157
- isTypeScriptAmbientDeclaration(node)) {
158
- return false;
159
- }
160
- if (isLoopInitializer(node) || isWrappedExport(node)) {
161
- return false;
162
- }
163
- return !hasSeparatorComment(declarations, sourceText);
164
- };
165
- /**
166
- * Converts declarators into separate declaration statements.
167
- * @param node Fixable declaration node.
168
- * @param declarations Declarators that should be split.
169
- * @param sourceCode Source access wrapper.
170
- * @returns Replacement text for the full declaration.
171
- * @example
172
- * ```typescript
173
- * const replacement = buildReplacement(node, declarations, sourceCode);
174
- * ```
175
- */
176
- const buildReplacement = (node, declarations, sourceCode) => {
177
- const sourceText = getSourceText(sourceCode);
178
- const indent = getLineIndent(sourceText, node.range[0]);
179
- const lineSeparator = getLineSeparator(sourceText);
180
- return declarations
181
- .map((declaration) => `${node.kind} ${sourceCode.getText(declaration)};`)
182
- .join(`${lineSeparator}${indent}`);
183
- };
184
- /**
185
- * Collects ranged declarators when every declarator exposes a range.
186
- * @param declarations Declarators from the declaration node.
187
- * @returns Declarators with confirmed ranges, or `undefined` when any range is missing.
188
- * @example
189
- * ```typescript
190
- * const ranged = getRangedDeclarations(node.declarations ?? []);
191
- * ```
192
- */
193
- const getRangedDeclarations = (declarations) => {
194
- const rangedDeclarations = [];
195
- for (const declaration of declarations) {
196
- if (!hasRange(declaration)) {
197
- return void 0;
198
- }
199
- rangedDeclarations.push(declaration);
200
- }
201
- return rangedDeclarations;
202
- };
1
+ import { buildReplacement, canFix, getRangedDeclarations, getSourceCode, getSourceText, } from "./rule-utilities.js";
2
+ import { hasFixData } from "./types.js";
203
3
  /**
204
4
  * Creates an autofix callback when the declaration can be rewritten safely.
205
5
  * @param node Declaration node to inspect.
@@ -239,20 +39,18 @@ const reportVariableDeclaration = (context, node) => {
239
39
  const sourceCode = getSourceCode(context);
240
40
  const fix = createDeclarationFix(node, declarations, sourceCode);
241
41
  context.report({
242
- ...(fix === void 0 ? {} : { fix }),
42
+ ...(fix !== void 0 && { fix }),
243
43
  messageId: "singleDeclarator",
244
44
  node: node,
245
45
  });
246
46
  };
247
47
  /** ESLint rule implementation for single-declarator variable statements. */
248
48
  const noMultipleDeclaratorsRule = {
249
- create(context) {
250
- return {
251
- VariableDeclaration: (node) => {
252
- reportVariableDeclaration(context, node);
253
- },
254
- };
255
- },
49
+ create: (context) => ({
50
+ VariableDeclaration: (node) => {
51
+ reportVariableDeclaration(context, node);
52
+ },
53
+ }),
256
54
  meta: {
257
55
  docs: {
258
56
  description: "Require variable declarations to contain exactly one declarator per statement.",
@@ -268,4 +66,4 @@ const noMultipleDeclaratorsRule = {
268
66
  },
269
67
  };
270
68
  export { noMultipleDeclaratorsRule };
271
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9uby1tdWx0aXBsZS1kZWNsYXJhdG9ycy9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBRS9DLGtEQUFrRDtBQUNsRCxNQUFNLGNBQWMsR0FBRyxZQUFZLENBQUM7QUFDcEMsNkVBQTZFO0FBQzdFLE1BQU0sdUJBQXVCLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDakUsbUVBQW1FO0FBQ25FLE1BQU0sZUFBZSxHQUFHLElBQUksR0FBRyxDQUFDO0lBQzlCLHFCQUFxQjtJQUNyQixnQkFBZ0I7SUFDaEIsZ0JBQWdCO0NBQ2pCLENBQUMsQ0FBQztBQUVIOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FBQyxPQUF5QixFQUFvQixFQUFFLENBQ3BFLE9BQU8sQ0FBQyxVQUF5QyxDQUFDO0FBRXBEOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxhQUFhLEdBQUcsQ0FBQyxVQUE0QixFQUFVLEVBQUUsQ0FDN0QsT0FBTyxVQUFVLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLE9BQU8sRUFBRSxDQUFDO0FBRS9FOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFVBQWtCLEVBQVUsRUFBRSxDQUN0RCxVQUFVLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztBQUU5Qzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUE2QixFQUFXLEVBQUU7SUFDbkUsTUFB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QXlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUge1xuICBGaXhhYmxlVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4gIEZvckluT3JPZlN0YXRlbWVudE5vZGUsXG4gIEZvclN0YXRlbWVudE5vZGUsXG4gIFJhbmdlZFZhcmlhYmxlRGVjbGFyYXRvck5vZGUsXG4gIFNvdXJjZUNvZGVBY2Nlc3MsXG4gIFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLFxuICBWYXJpYWJsZURlY2xhcmF0b3JOb2RlLFxufSBmcm9tIFwiLi90eXBlc1wiO1xuXG5pbXBvcnQgeyBoYXNGaXhEYXRhLCBoYXNSYW5nZSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKiBNYXRjaGVzIGNvbW1lbnQgc3ludGF4IGJldHdlZW4gZGVjbGFyYXRvcnMuICovXG5jb25zdCBjb21tZW50UGF0dGVybiA9IC9cXC9cXC98XFwvXFwqL3U7XG4vKiogRGVjbGFyYXRpb24ga2luZHMgdGhhdCBjYW4gYmUgc2FmZWx5IHNwbGl0IGludG8gc3RhbmRhbG9uZSBzdGF0ZW1lbnRzLiAqL1xuY29uc3QgZml4YWJsZURlY2xhcmF0aW9uS2luZHMgPSBuZXcgU2V0KFtcImNvbnN0XCIsIFwibGV0XCIsIFwidmFyXCJdKTtcbi8qKiBMb29wIHBhcmVudCB0eXBlcyB3aG9zZSBpbml0aWFsaXplcnMgY2Fubm90IGJlIHNhZmVseSBzcGxpdC4gKi9cbmNvbnN0IGxvb3BQYXJlbnRUeXBlcyA9IG5ldyBTZXQoW1xuICBcIkZvckF3YWl0T2ZTdGF0ZW1lbnRcIixcbiAgXCJGb3JJblN0YXRlbWVudFwiLFxuICBcIkZvck9mU3RhdGVtZW50XCIsXG5dKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBzb3VyY2UgYWNjZXNzIHdyYXBwZXIgZnJvbSB0aGUgRVNMaW50IGNvbnRleHQuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHJldHVybnMgU291cmNlIGFjY2VzcyBoZWxwZXJzIHVzZWQgYnkgdGhlIGZpeGVyLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNvdXJjZUNvZGUgPSBnZXRTb3VyY2VDb2RlKGNvbnRleHQpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFNvdXJjZUNvZGUgPSAoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFNvdXJjZUNvZGVBY2Nlc3MgPT5cbiAgY29udGV4dC5zb3VyY2VDb2RlIGFzIHVua25vd24gYXMgU291cmNlQ29kZUFjY2VzcztcblxuLyoqXG4gKiBSZWFkcyB0aGUgZnVsbCBzb3VyY2UgdGV4dCBmb3IgdGhlIGFjdGl2ZSBmaWxlLlxuICogQHBhcmFtIHNvdXJjZUNvZGUgU291cmNlIGFjY2VzcyB3cmFwcGVyLlxuICogQHJldHVybnMgRnVsbCBzb3VyY2UgdGV4dC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzb3VyY2VUZXh0ID0gZ2V0U291cmNlVGV4dChzb3VyY2VDb2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRTb3VyY2VUZXh0ID0gKHNvdXJjZUNvZGU6IFNvdXJjZUNvZGVBY2Nlc3MpOiBzdHJpbmcgPT5cbiAgdHlwZW9mIHNvdXJjZUNvZGUudGV4dCA9PT0gXCJzdHJpbmdcIiA/IHNvdXJjZUNvZGUudGV4dCA6IHNvdXJjZUNvZGUuZ2V0VGV4dCgpO1xuXG4vKipcbiAqIEdldHMgdGhlIGxpbmUgc2VwYXJhdG9yIHN0eWxlIHVzZWQgYnkgdGhlIGN1cnJlbnQgc291cmNlIGZpbGUuXG4gKiBAcGFyYW0gc291cmNlVGV4dCBGdWxsIHNvdXJjZSB0ZXh0LlxuICogQHJldHVybnMgRmlsZS1uYXRpdmUgbGluZSBzZXBhcmF0b3Igc2VxdWVuY2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbGluZVNlcGFyYXRvciA9IGdldExpbmVTZXBhcmF0b3IoXCJjb25zdCBhID0gMTtcXHJcXG5jb25zdCBiID0gMjtcIik7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0TGluZVNlcGFyYXRvciA9IChzb3VyY2VUZXh0OiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgc291cmNlVGV4dC5pbmNsdWRlcyhcIlxcclxcblwiKSA/IFwiXFxyXFxuXCIgOiBcIlxcblwiO1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGRlY2xhcmF0aW9uIGlzIHVzZWQgYXMgYSBsb29wIGluaXRpYWxpemVyLlxuICogQHBhcmFtIG5vZGUgRGVjbGFyYXRpb24gbm9kZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZGVjbGFyYXRpb24gaXMgYXR0YWNoZWQgdG8gYSBsb29wIGluaXRpYWxpemVyLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGluTG9vcCA9IGlzTG9vcEluaXRpYWxpemVyKG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzTG9vcEluaXRpYWxpemVyID0gKG5vZGU6IFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHsgcGFyZW50IH0gPSBub2RlO1xuXG4gIGlmIChwYXJlbnQ/LnR5cGUgPT09IFwiRm9yU3RhdGVtZW50XCIpIHtcbiAgICByZXR1cm4gKHBhcmVudCBhcyBGb3JTdGF0ZW1lbnROb2RlKS5pbml0ID09PSBub2RlO1xuICB9XG5cbiAgaWYgKHBhcmVudCAhPT0gdm9pZCAwICYmIGxvb3BQYXJlbnRUeXBlcy5oYXMocGFyZW50LnR5cGUpKSB7XG4gICAgcmV0dXJuIChwYXJlbnQgYXMgRm9ySW5Pck9mU3RhdGVtZW50Tm9kZSkubGVmdCA9PT0gbm9kZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZGVjbGFyYXRpb24gaXMgd3JhcHBlZCBpbiBhbiBleHBvcnQgc3RhdGVtZW50LlxuICogQHBhcmFtIG5vZGUgRGVjbGFyYXRpb24gbm9kZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZGVjbGFyYXRpb24gaXMgZGlyZWN0bHkgZXhwb3J0ZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZXhwb3J0ZWQgPSBpc1dyYXBwZWRFeHBvcnQobm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNXcmFwcGVkRXhwb3J0ID0gKG5vZGU6IFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKTogYm9vbGVhbiA9PlxuICBub2RlLnBhcmVudD8udHlwZSA9PT0gXCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25cIiB8fFxuICBub2RlLnBhcmVudD8udHlwZSA9PT0gXCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCI7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZGVjbGFyYXRpb24gaXMgYW1iaWVudCBpbiBUeXBlU2NyaXB0IHNvdXJjZS5cbiAqIEBwYXJhbSBub2RlIERlY2xhcmF0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGRlY2xhcmF0aW9uIGlzIG1hcmtlZCB3aXRoIGBkZWNsYXJlYC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhbWJpZW50ID0gaXNUeXBlU2NyaXB0QW1iaWVudERlY2xhcmF0aW9uKG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzVHlwZVNjcmlwdEFtYmllbnREZWNsYXJhdGlvbiA9IChcbiAgbm9kZTogVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4pOiBib29sZWFuID0+IG5vZGUuZGVjbGFyZSA9PT0gdHJ1ZTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBkZWNsYXJhdGlvbiBraW5kIGlzIHNhZmUgdG8gcmV3cml0ZS5cbiAqIEBwYXJhbSBub2RlIERlY2xhcmF0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGRlY2xhcmF0aW9uIGtpbmQgc3VwcG9ydHMgY29uc2VydmF0aXZlIHNwbGl0IGZpeGVzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNhZmVLaW5kID0gaGFzRml4YWJsZURlY2xhcmF0aW9uS2luZChub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBoYXNGaXhhYmxlRGVjbGFyYXRpb25LaW5kID0gKG5vZGU6IFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKTogYm9vbGVhbiA9PlxuICBoYXNGaXhEYXRhKG5vZGUpICYmIGZpeGFibGVEZWNsYXJhdGlvbktpbmRzLmhhcyhub2RlLmtpbmQpO1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGVudGF0aW9uIGZvciB0aGUgbGluZSBjb250YWluaW5nIGEgZGVjbGFyYXRpb24uXG4gKiBAcGFyYW0gc291cmNlVGV4dCBGdWxsIHNvdXJjZSB0ZXh0LlxuICogQHBhcmFtIHN0YXJ0IFN0YXJ0IG9mZnNldCBvZiB0aGUgZGVjbGFyYXRpb24uXG4gKiBAcmV0dXJucyBMZWFkaW5nIGluZGVudGF0aW9uIGZvciB0aGUgZGVjbGFyYXRpb24gbGluZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBpbmRlbnQgPSBnZXRMaW5lSW5kZW50KFwiY29uc3QgYSA9IDE7XCIsIDApO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldExpbmVJbmRlbnQgPSAoc291cmNlVGV4dDogc3RyaW5nLCBzdGFydDogbnVtYmVyKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbGluZVN0YXJ0ID0gc291cmNlVGV4dC5sYXN0SW5kZXhPZihcIlxcblwiLCBzdGFydCAtIDEpICsgMTtcbiAgY29uc3QgbGluZVByZWZpeCA9IHNvdXJjZVRleHQuc2xpY2UobGluZVN0YXJ0LCBzdGFydCk7XG4gIGxldCBpbmRlbnRMZW5ndGggPSAwO1xuXG4gIHdoaWxlIChpbmRlbnRMZW5ndGggPCBsaW5lUHJlZml4Lmxlbmd0aCkge1xuICAgIGNvbnN0IGN1cnJlbnRDaGFyYWN0ZXIgPSBsaW5lUHJlZml4W2luZGVudExlbmd0aF07XG5cbiAgICBpZiAoY3VycmVudENoYXJhY3RlciAhPT0gXCJcXHRcIiAmJiBjdXJyZW50Q2hhcmFjdGVyICE9PSBcIiBcIikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaW5kZW50TGVuZ3RoICs9IDE7XG4gIH1cblxuICByZXR1cm4gbGluZVByZWZpeC5zbGljZSgwLCBpbmRlbnRMZW5ndGgpO1xufTtcblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgY29tbWVudHMgYXBwZWFyIGJldHdlZW4gZGVjbGFyYXRvcnMuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb25zIERlY2xhcmF0b3JzIGZyb20gYSBzaW5nbGUgZGVjbGFyYXRpb24gc3RhdGVtZW50LlxuICogQHBhcmFtIHNvdXJjZVRleHQgRnVsbCBzb3VyY2UgdGV4dC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgY29tbWVudHMgYXBwZWFyIGJldHdlZW4gZGVjbGFyYXRvcnMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYmxvY2tlZCA9IGhhc1NlcGFyYXRvckNvbW1lbnQoZGVjbGFyYXRpb25zLCBzb3VyY2VUZXh0KTtcbiAqIGBgYFxuICovXG5jb25zdCBoYXNTZXBhcmF0b3JDb21tZW50ID0gKFxuICBkZWNsYXJhdGlvbnM6IHJlYWRvbmx5IFZhcmlhYmxlRGVjbGFyYXRvck5vZGVbXSxcbiAgc291cmNlVGV4dDogc3RyaW5nLFxuKTogYm9vbGVhbiA9PiB7XG4gIGZvciAoY29uc3QgW2luZGV4LCBkZWNsYXJhdGlvbl0gb2YgZGVjbGFyYXRpb25zLmVudHJpZXMoKSkge1xuICAgIGNvbnN0IG5leHREZWNsYXJhdGlvbiA9IGRlY2xhcmF0aW9uc1tpbmRleCArIDFdO1xuXG4gICAgaWYgKG5leHREZWNsYXJhdGlvbiA9PT0gdm9pZCAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoIWhhc1JhbmdlKGRlY2xhcmF0aW9uKSB8fCAhaGFzUmFuZ2UobmV4dERlY2xhcmF0aW9uKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VwYXJhdG9yVGV4dCA9IHNvdXJjZVRleHQuc2xpY2UoXG4gICAgICBkZWNsYXJhdGlvbi5yYW5nZVsxXSxcbiAgICAgIG5leHREZWNsYXJhdGlvbi5yYW5nZVswXSxcbiAgICApO1xuXG4gICAgaWYgKGNvbW1lbnRQYXR0ZXJuLnRlc3Qoc2VwYXJhdG9yVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZGVjbGFyYXRpb24gY2FuIGJlIHNhZmVseSByZXdyaXR0ZW4uXG4gKiBAcGFyYW0gbm9kZSBEZWNsYXJhdGlvbiBub2RlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb25zIERlY2xhcmF0b3JzIHdpdGhpbiB0aGUgZGVjbGFyYXRpb24uXG4gKiBAcGFyYW0gc291cmNlVGV4dCBGdWxsIHNvdXJjZSB0ZXh0LlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZGVjbGFyYXRpb24gaXMgc2FmZSB0byBhdXRvZml4LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpeGFibGUgPSBjYW5GaXgobm9kZSwgZGVjbGFyYXRpb25zLCBzb3VyY2VUZXh0KTtcbiAqIGBgYFxuICovXG5jb25zdCBjYW5GaXggPSAoXG4gIG5vZGU6IFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLFxuICBkZWNsYXJhdGlvbnM6IHJlYWRvbmx5IFZhcmlhYmxlRGVjbGFyYXRvck5vZGVbXSxcbiAgc291cmNlVGV4dDogc3RyaW5nLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmICghaGFzRml4RGF0YShub2RlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGlmIChcbiAgICAhaGFzRml4YWJsZURlY2xhcmF0aW9uS2luZChub2RlKSB8fFxuICAgIGlzVHlwZVNjcmlwdEFtYmllbnREZWNsYXJhdGlvbihub2RlKVxuICApIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBpZiAoaXNMb29wSW5pdGlhbGl6ZXIobm9kZSkgfHwgaXNXcmFwcGVkRXhwb3J0KG5vZGUpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuICFoYXNTZXBhcmF0b3JDb21tZW50KGRlY2xhcmF0aW9ucywgc291cmNlVGV4dCk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGRlY2xhcmF0b3JzIGludG8gc2VwYXJhdGUgZGVjbGFyYXRpb24gc3RhdGVtZW50cy5cbiAqIEBwYXJhbSBub2RlIEZpeGFibGUgZGVjbGFyYXRpb24gbm9kZS5cbiAqIEBwYXJhbSBkZWNsYXJhdGlvbnMgRGVjbGFyYXRvcnMgdGhhdCBzaG91bGQgYmUgc3BsaXQuXG4gKiBAcGFyYW0gc291cmNlQ29kZSBTb3VyY2UgYWNjZXNzIHdyYXBwZXIuXG4gKiBAcmV0dXJucyBSZXBsYWNlbWVudCB0ZXh0IGZvciB0aGUgZnVsbCBkZWNsYXJhdGlvbi5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXBsYWNlbWVudCA9IGJ1aWxkUmVwbGFjZW1lbnQobm9kZSwgZGVjbGFyYXRpb25zLCBzb3VyY2VDb2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBidWlsZFJlcGxhY2VtZW50ID0gKFxuICBub2RlOiBGaXhhYmxlVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4gIGRlY2xhcmF0aW9uczogcmVhZG9ubHkgUmFuZ2VkVmFyaWFibGVEZWNsYXJhdG9yTm9kZVtdLFxuICBzb3VyY2VDb2RlOiBTb3VyY2VDb2RlQWNjZXNzLFxuKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgc291cmNlVGV4dCA9IGdldFNvdXJjZVRleHQoc291cmNlQ29kZSk7XG4gIGNvbnN0IGluZGVudCA9IGdldExpbmVJbmRlbnQoc291cmNlVGV4dCwgbm9kZS5yYW5nZVswXSk7XG4gIGNvbnN0IGxpbmVTZXBhcmF0b3IgPSBnZXRMaW5lU2VwYXJhdG9yKHNvdXJjZVRleHQpO1xuXG4gIHJldHVybiBkZWNsYXJhdGlvbnNcbiAgICAubWFwKChkZWNsYXJhdGlvbikgPT4gYCR7bm9kZS5raW5kfSAke3NvdXJjZUNvZGUuZ2V0VGV4dChkZWNsYXJhdGlvbil9O2ApXG4gICAgLmpvaW4oYCR7bGluZVNlcGFyYXRvcn0ke2luZGVudH1gKTtcbn07XG5cbi8qKlxuICogQ29sbGVjdHMgcmFuZ2VkIGRlY2xhcmF0b3JzIHdoZW4gZXZlcnkgZGVjbGFyYXRvciBleHBvc2VzIGEgcmFuZ2UuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb25zIERlY2xhcmF0b3JzIGZyb20gdGhlIGRlY2xhcmF0aW9uIG5vZGUuXG4gKiBAcmV0dXJucyBEZWNsYXJhdG9ycyB3aXRoIGNvbmZpcm1lZCByYW5nZXMsIG9yIGB1bmRlZmluZWRgIHdoZW4gYW55IHJhbmdlIGlzIG1pc3NpbmcuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmFuZ2VkID0gZ2V0UmFuZ2VkRGVjbGFyYXRpb25zKG5vZGUuZGVjbGFyYXRpb25zID8/IFtdKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRSYW5nZWREZWNsYXJhdGlvbnMgPSAoXG4gIGRlY2xhcmF0aW9uczogcmVhZG9ubHkgVmFyaWFibGVEZWNsYXJhdG9yTm9kZVtdLFxuKTogcmVhZG9ubHkgUmFuZ2VkVmFyaWFibGVEZWNsYXJhdG9yTm9kZVtdIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcmFuZ2VkRGVjbGFyYXRpb25zOiBSYW5nZWRWYXJpYWJsZURlY2xhcmF0b3JOb2RlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGRlY2xhcmF0aW9uIG9mIGRlY2xhcmF0aW9ucykge1xuICAgIGlmICghaGFzUmFuZ2UoZGVjbGFyYXRpb24pKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cblxuICAgIHJhbmdlZERlY2xhcmF0aW9ucy5wdXNoKGRlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIHJldHVybiByYW5nZWREZWNsYXJhdGlvbnM7XG59O1xuXG4vKipcbiAqIENyZWF0ZXMgYW4gYXV0b2ZpeCBjYWxsYmFjayB3aGVuIHRoZSBkZWNsYXJhdGlvbiBjYW4gYmUgcmV3cml0dGVuIHNhZmVseS5cbiAqIEBwYXJhbSBub2RlIERlY2xhcmF0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSBkZWNsYXJhdGlvbnMgRGVjbGFyYXRvcnMgZnJvbSB0aGUgZGVjbGFyYXRpb24gc3RhdGVtZW50LlxuICogQHBhcmFtIHNvdXJjZUNvZGUgU291cmNlIGFjY2VzcyB3cmFwcGVyLlxuICogQHJldHVybnMgRml4IGNhbGxiYWNrIHdoZW4gdGhlIGRlY2xhcmF0aW9uIGlzIHNhZmUgdG8gc3BsaXQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZml4ID0gY3JlYXRlRGVjbGFyYXRpb25GaXgobm9kZSwgZGVjbGFyYXRpb25zLCBzb3VyY2VDb2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBjcmVhdGVEZWNsYXJhdGlvbkZpeCA9IChcbiAgbm9kZTogVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4gIGRlY2xhcmF0aW9uczogcmVhZG9ubHkgVmFyaWFibGVEZWNsYXJhdG9yTm9kZVtdLFxuICBzb3VyY2VDb2RlOiBTb3VyY2VDb2RlQWNjZXNzLFxuKTogKChmaXhlcjogUnVsZS5SdWxlRml4ZXIpID0+IFJ1bGUuRml4KSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHNvdXJjZVRleHQgPSBnZXRTb3VyY2VUZXh0KHNvdXJjZUNvZGUpO1xuXG4gIGlmICghY2FuRml4KG5vZGUsIGRlY2xhcmF0aW9ucywgc291cmNlVGV4dCkgfHwgIWhhc0ZpeERhdGEobm9kZSkpIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgY29uc3QgcmFuZ2VkRGVjbGFyYXRpb25zID0gZ2V0UmFuZ2VkRGVjbGFyYXRpb25zKGRlY2xhcmF0aW9ucyk7XG4gIGlmIChyYW5nZWREZWNsYXJhdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICByZXR1cm4gKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IFJ1bGUuRml4ID0+XG4gICAgZml4ZXIucmVwbGFjZVRleHRSYW5nZShcbiAgICAgIG5vZGUucmFuZ2UsXG4gICAgICBidWlsZFJlcGxhY2VtZW50KG5vZGUsIHJhbmdlZERlY2xhcmF0aW9ucywgc291cmNlQ29kZSksXG4gICAgKTtcbn07XG5cbi8qKlxuICogUmVwb3J0cyBkZWNsYXJhdGlvbnMgdGhhdCBjb250YWluIG1vcmUgdGhhbiBvbmUgZGVjbGFyYXRvci5cbiAqIEBwYXJhbSBjb250ZXh0IFJ1bGUgZXhlY3V0aW9uIGNvbnRleHQuXG4gKiBAcGFyYW0gbm9kZSBEZWNsYXJhdGlvbiBub2RlIHRvIHJlcG9ydC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiByZXBvcnRWYXJpYWJsZURlY2xhcmF0aW9uKGNvbnRleHQsIG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IHJlcG9ydFZhcmlhYmxlRGVjbGFyYXRpb24gPSAoXG4gIGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQsXG4gIG5vZGU6IFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLFxuKTogdm9pZCA9PiB7XG4gIGNvbnN0IGRlY2xhcmF0aW9ucyA9IG5vZGUuZGVjbGFyYXRpb25zID8/IFtdO1xuXG4gIGlmIChkZWNsYXJhdGlvbnMubGVuZ3RoIDw9IDEpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBjb25zdCBzb3VyY2VDb2RlID0gZ2V0U291cmNlQ29kZShjb250ZXh0KTtcbiAgY29uc3QgZml4ID0gY3JlYXRlRGVjbGFyYXRpb25GaXgobm9kZSwgZGVjbGFyYXRpb25zLCBzb3VyY2VDb2RlKTtcblxuICBjb250ZXh0LnJlcG9ydCh7XG4gICAgLi4uKGZpeCA9PT0gdm9pZCAwID8ge30gOiB7IGZpeCB9KSxcbiAgICBtZXNzYWdlSWQ6IFwic2luZ2xlRGVjbGFyYXRvclwiLFxuICAgIG5vZGU6IG5vZGUgYXMgdW5rbm93biBhcyBSdWxlLk5vZGUsXG4gIH0pO1xufTtcblxuLyoqIEVTTGludCBydWxlIGltcGxlbWVudGF0aW9uIGZvciBzaW5nbGUtZGVjbGFyYXRvciB2YXJpYWJsZSBzdGF0ZW1lbnRzLiAqL1xuY29uc3Qgbm9NdWx0aXBsZURlY2xhcmF0b3JzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICByZXR1cm4ge1xuICAgICAgVmFyaWFibGVEZWNsYXJhdGlvbjogKG5vZGU6IFJ1bGUuTm9kZSk6IHZvaWQgPT4ge1xuICAgICAgICByZXBvcnRWYXJpYWJsZURlY2xhcmF0aW9uKGNvbnRleHQsIG5vZGUgYXMgVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUpO1xuICAgICAgfSxcbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUmVxdWlyZSB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgdG8gY29udGFpbiBleGFjdGx5IG9uZSBkZWNsYXJhdG9yIHBlciBzdGF0ZW1lbnQuXCIsXG4gICAgICByZWNvbW1lbmRlZDogZmFsc2UsXG4gICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL3BhcmxvdGkvZXNsaW50LXBsdWdpbi9ibG9iL21haW4vZG9jcy9ydWxlcy9uby1tdWx0aXBsZS1kZWNsYXJhdG9ycy5tZFwiLFxuICAgIH0sXG4gICAgZml4YWJsZTogXCJjb2RlXCIsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHNpbmdsZURlY2xhcmF0b3I6XG4gICAgICAgIFwiRGVjbGFyZSBleGFjdGx5IG9uZSB2YXJpYWJsZSBwZXIgZGVjbGFyYXRpb24gc3RhdGVtZW50LlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IG5vTXVsdGlwbGVEZWNsYXJhdG9yc1J1bGUgfTtcbiJdfQ==
69
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9uby1tdWx0aXBsZS1kZWNsYXJhdG9ycy9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLHFCQUFxQixFQUNyQixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUMzQixJQUE2QixFQUM3QixZQUErQyxFQUMvQyxVQUE0QixFQUN1QixFQUFFO0lBQ3JELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUU3QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNqRSxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9ELElBQUksa0JBQWtCLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBcUIsRUFBWSxFQUFFLENBQ3pDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDcEIsSUFBSSxDQUFDLEtBQUssRUFDVixnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQ3ZELENBQUM7QUFDTixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0seUJBQXlCLEdBQUcsQ0FDaEMsT0FBeUIsRUFDekIsSUFBNkIsRUFDdkIsRUFBRTtJQUNSLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO0lBRTdDLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRWpFLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDYixHQUFHLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDOUIsU0FBUyxFQUFFLGtCQUFrQjtRQUM3QixJQUFJLEVBQUUsSUFBNEI7S0FDbkMsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsNEVBQTRFO0FBQzVFLE1BQU0seUJBQXlCLEdBQW9CO0lBQ2pELE1BQU0sRUFBRSxDQUFDLE9BQXlCLEVBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELG1CQUFtQixFQUFFLENBQUMsSUFBZSxFQUFRLEVBQUU7WUFDN0MseUJBQXlCLENBQUMsT0FBTyxFQUFFLElBQStCLENBQUMsQ0FBQztRQUN0RSxDQUFDO0tBQ0YsQ0FBQztJQUNGLElBQUksRUFBRTtRQUNKLElBQUksRUFBRTtZQUNKLFdBQVcsRUFDVCxnRkFBZ0Y7WUFDbEYsV0FBVyxFQUFFLEtBQUs7WUFDbEIsR0FBRyxFQUFFLDBGQUEwRjtTQUNoRztRQUNELE9BQU8sRUFBRSxNQUFNO1FBQ2YsUUFBUSxFQUFFO1lBQ1IsZ0JBQWdCLEVBQ2QseURBQXlEO1NBQzVEO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsWUFBWTtLQUNuQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUge1xuICBTb3VyY2VDb2RlQWNjZXNzLFxuICBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcbiAgVmFyaWFibGVEZWNsYXJhdG9yTm9kZSxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgYnVpbGRSZXBsYWNlbWVudCxcbiAgY2FuRml4LFxuICBnZXRSYW5nZWREZWNsYXJhdGlvbnMsXG4gIGdldFNvdXJjZUNvZGUsXG4gIGdldFNvdXJjZVRleHQsXG59IGZyb20gXCIuL3J1bGUtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBoYXNGaXhEYXRhIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGF1dG9maXggY2FsbGJhY2sgd2hlbiB0aGUgZGVjbGFyYXRpb24gY2FuIGJlIHJld3JpdHRlbiBzYWZlbHkuXG4gKiBAcGFyYW0gbm9kZSBEZWNsYXJhdGlvbiBub2RlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb25zIERlY2xhcmF0b3JzIGZyb20gdGhlIGRlY2xhcmF0aW9uIHN0YXRlbWVudC5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIFNvdXJjZSBhY2Nlc3Mgd3JhcHBlci5cbiAqIEByZXR1cm5zIEZpeCBjYWxsYmFjayB3aGVuIHRoZSBkZWNsYXJhdGlvbiBpcyBzYWZlIHRvIHNwbGl0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpeCA9IGNyZWF0ZURlY2xhcmF0aW9uRml4KG5vZGUsIGRlY2xhcmF0aW9ucywgc291cmNlQ29kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY3JlYXRlRGVjbGFyYXRpb25GaXggPSAoXG4gIG5vZGU6IFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLFxuICBkZWNsYXJhdGlvbnM6IHJlYWRvbmx5IFZhcmlhYmxlRGVjbGFyYXRvck5vZGVbXSxcbiAgc291cmNlQ29kZTogU291cmNlQ29kZUFjY2Vzcyxcbik6ICgoZml4ZXI6IFJ1bGUuUnVsZUZpeGVyKSA9PiBSdWxlLkZpeCkgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBzb3VyY2VUZXh0ID0gZ2V0U291cmNlVGV4dChzb3VyY2VDb2RlKTtcblxuICBpZiAoIWNhbkZpeChub2RlLCBkZWNsYXJhdGlvbnMsIHNvdXJjZVRleHQpIHx8ICFoYXNGaXhEYXRhKG5vZGUpKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHJhbmdlZERlY2xhcmF0aW9ucyA9IGdldFJhbmdlZERlY2xhcmF0aW9ucyhkZWNsYXJhdGlvbnMpO1xuICBpZiAocmFuZ2VkRGVjbGFyYXRpb25zID09PSB2b2lkIDApIHtcbiAgICByZXR1cm4gdm9pZCAwO1xuICB9XG5cbiAgcmV0dXJuIChmaXhlcjogUnVsZS5SdWxlRml4ZXIpOiBSdWxlLkZpeCA9PlxuICAgIGZpeGVyLnJlcGxhY2VUZXh0UmFuZ2UoXG4gICAgICBub2RlLnJhbmdlLFxuICAgICAgYnVpbGRSZXBsYWNlbWVudChub2RlLCByYW5nZWREZWNsYXJhdGlvbnMsIHNvdXJjZUNvZGUpLFxuICAgICk7XG59O1xuXG4vKipcbiAqIFJlcG9ydHMgZGVjbGFyYXRpb25zIHRoYXQgY29udGFpbiBtb3JlIHRoYW4gb25lIGRlY2xhcmF0b3IuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIG5vZGUgRGVjbGFyYXRpb24gbm9kZSB0byByZXBvcnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcmVwb3J0VmFyaWFibGVEZWNsYXJhdGlvbihjb250ZXh0LCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCByZXBvcnRWYXJpYWJsZURlY2xhcmF0aW9uID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcbik6IHZvaWQgPT4ge1xuICBjb25zdCBkZWNsYXJhdGlvbnMgPSBub2RlLmRlY2xhcmF0aW9ucyA/PyBbXTtcblxuICBpZiAoZGVjbGFyYXRpb25zLmxlbmd0aCA8PSAxKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc291cmNlQ29kZSA9IGdldFNvdXJjZUNvZGUoY29udGV4dCk7XG4gIGNvbnN0IGZpeCA9IGNyZWF0ZURlY2xhcmF0aW9uRml4KG5vZGUsIGRlY2xhcmF0aW9ucywgc291cmNlQ29kZSk7XG5cbiAgY29udGV4dC5yZXBvcnQoe1xuICAgIC4uLihmaXggIT09IHZvaWQgMCAmJiB7IGZpeCB9KSxcbiAgICBtZXNzYWdlSWQ6IFwic2luZ2xlRGVjbGFyYXRvclwiLFxuICAgIG5vZGU6IG5vZGUgYXMgdW5rbm93biBhcyBSdWxlLk5vZGUsXG4gIH0pO1xufTtcblxuLyoqIEVTTGludCBydWxlIGltcGxlbWVudGF0aW9uIGZvciBzaW5nbGUtZGVjbGFyYXRvciB2YXJpYWJsZSBzdGF0ZW1lbnRzLiAqL1xuY29uc3Qgbm9NdWx0aXBsZURlY2xhcmF0b3JzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGU6IChjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIgPT4gKHtcbiAgICBWYXJpYWJsZURlY2xhcmF0aW9uOiAobm9kZTogUnVsZS5Ob2RlKTogdm9pZCA9PiB7XG4gICAgICByZXBvcnRWYXJpYWJsZURlY2xhcmF0aW9uKGNvbnRleHQsIG5vZGUgYXMgVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUpO1xuICAgIH0sXG4gIH0pLFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUmVxdWlyZSB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgdG8gY29udGFpbiBleGFjdGx5IG9uZSBkZWNsYXJhdG9yIHBlciBzdGF0ZW1lbnQuXCIsXG4gICAgICByZWNvbW1lbmRlZDogZmFsc2UsXG4gICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL3BhcmxvdGkvZXNsaW50LXBsdWdpbi9ibG9iL21haW4vZG9jcy9ydWxlcy9uby1tdWx0aXBsZS1kZWNsYXJhdG9ycy5tZFwiLFxuICAgIH0sXG4gICAgZml4YWJsZTogXCJjb2RlXCIsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHNpbmdsZURlY2xhcmF0b3I6XG4gICAgICAgIFwiRGVjbGFyZSBleGFjdGx5IG9uZSB2YXJpYWJsZSBwZXIgZGVjbGFyYXRpb24gc3RhdGVtZW50LlwiLFxuICAgIH0sXG4gICAgc2NoZW1hOiBbXSxcbiAgICB0eXBlOiBcInN1Z2dlc3Rpb25cIixcbiAgfSxcbn07XG5cbmV4cG9ydCB7IG5vTXVsdGlwbGVEZWNsYXJhdG9yc1J1bGUgfTtcbiJdfQ==
@@ -34,8 +34,8 @@ function hasRange(node) {
34
34
  function isRange(value) {
35
35
  return (Array.isArray(value) &&
36
36
  value.length === 2 &&
37
- value.every((part) => Number.isInteger(part) && part >= 0) &&
37
+ value.every((part) => Number.isSafeInteger(part) && part >= 0) &&
38
38
  value[0] <= value[1]);
39
39
  }
40
40
  export { hasFixData, hasRange };
41
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2NvcmUvbm8tbXVsdGlwbGUtZGVjbGFyYXRvcnMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0VBOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxVQUFVLENBQ2pCLElBQTZCO0lBRTdCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztBQUMzRSxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLFFBQVEsQ0FBQyxJQUEwQjtJQUMxQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxPQUFPLENBQUMsS0FBYztJQUM3QixPQUFPLENBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ2xCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztRQUMxRCxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUHJvdmlkZXMgdGhlIG1pbmltYWwgbm9kZSBzaGFwZSB1c2VkIGJ5IHRoZSBydWxlLiAqL1xyXG5pbnRlcmZhY2UgQmFzZU5vZGUge1xyXG4gIC8qKiBQYXJlbnQgbm9kZSB1c2VkIHRvIGluc3BlY3Qgc3Vycm91bmRpbmcgc3ludGF4LiAqL1xyXG4gIHBhcmVudD86IEJhc2VOb2RlO1xyXG4gIC8qKiBTb3VyY2UgcmFuZ2UgdXNlZCBieSBhdXRvZml4IGxvZ2ljLiAqL1xyXG4gIHJhbmdlPzogUmFuZ2U7XHJcbiAgLyoqIEVTVHJlZSBub2RlIHR5cGUuICovXHJcbiAgdHlwZTogc3RyaW5nO1xyXG59XHJcblxyXG4vKiogUmVwcmVzZW50cyBhIGRlY2xhcmF0aW9uIHRoYXQgY2FuIGJlIHJld3JpdHRlbiBieSB0aGUgZml4ZXIuICovXHJcbmludGVyZmFjZSBGaXhhYmxlVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUgZXh0ZW5kcyBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSB7XHJcbiAgLyoqIENvbmZpcm1lZCBkZWNsYXJhdGlvbiBrZXl3b3JkLiAqL1xyXG4gIGtpbmQ6IHN0cmluZztcclxuICAvKiogQ29uZmlybWVkIHNvdXJjZSByYW5nZSBmb3IgdGhlIGZ1bGwgZGVjbGFyYXRpb24uICovXHJcbiAgcmFuZ2U6IFJhbmdlO1xyXG59XHJcblxyXG4vKiogUmVwcmVzZW50cyBhIGBmb3IuLi5pbmAgb3IgYGZvci4uLm9mYCBzdGF0ZW1lbnQuICovXHJcbmludGVyZmFjZSBGb3JJbk9yT2ZTdGF0ZW1lbnROb2RlIGV4dGVuZHMgQmFzZU5vZGUge1xyXG4gIC8qKiBMZWZ0LWhhbmQgaW5pdGlhbGl6ZXIgb2YgdGhlIGxvb3AuICovXHJcbiAgbGVmdD86IEJhc2VOb2RlO1xyXG59XHJcblxyXG4vKiogUmVwcmVzZW50cyBhIGNsYXNzaWMgYGZvcmAgc3RhdGVtZW50LiAqL1xyXG5pbnRlcmZhY2UgRm9yU3RhdGVtZW50Tm9kZSBleHRlbmRzIEJhc2VOb2RlIHtcclxuICAvKiogSW5pdGlhbGl6ZXIgc2VjdGlvbiBvZiB0aGUgbG9vcC4gKi9cclxuICBpbml0PzogQmFzZU5vZGUgfCBudWxsO1xyXG59XHJcblxyXG4vKiogUmVwcmVzZW50cyBhIHNvdXJjZSByYW5nZSB3aXRoaW4gdGhlIG9yaWdpbmFsIGZpbGUuICovXHJcbnR5cGUgUmFuZ2UgPSBbbnVtYmVyLCBudW1iZXJdO1xyXG5cclxuLyoqIFJlcHJlc2VudHMgYSBub2RlIHdob3NlIHJhbmdlIGhhcyBiZWVuIGNvbmZpcm1lZC4gKi9cclxuaW50ZXJmYWNlIFJhbmdlZE5vZGUgZXh0ZW5kcyBCYXNlTm9kZSB7XHJcbiAgLyoqIENvbmZpcm1lZCBzb3VyY2UgcmFuZ2UgZm9yIHRoZSBub2RlLiAqL1xyXG4gIHJhbmdlOiBSYW5nZTtcclxufVxyXG5cclxuLyoqIFJlcHJlc2VudHMgYSBkZWNsYXJhdG9yIHdob3NlIHJhbmdlIGhhcyBiZWVuIGNvbmZpcm1lZC4gKi9cclxuaW50ZXJmYWNlIFJhbmdlZFZhcmlhYmxlRGVjbGFyYXRvck5vZGUgZXh0ZW5kcyBWYXJpYWJsZURlY2xhcmF0b3JOb2RlIHtcclxuICAvKiogQ29uZmlybWVkIHNvdXJjZSByYW5nZSBmb3IgdGhlIGRlY2xhcmF0b3IuICovXHJcbiAgcmFuZ2U6IFJhbmdlO1xyXG59XHJcblxyXG4vKiogRXhwb3NlcyB0aGUgc291cmNlIGFjY2VzcyBtZXRob2RzIHVzZWQgYnkgdGhlIHJ1bGUuICovXHJcbmludGVyZmFjZSBTb3VyY2VDb2RlQWNjZXNzIHtcclxuICAvKiogUmV0dXJucyB0aGUgc291cmNlIHRleHQgZm9yIGEgbm9kZSBvciB0aGUgZnVsbCBmaWxlIHdoZW4gb21pdHRlZC4gKi9cclxuICBnZXRUZXh0OiAobm9kZT86IEJhc2VOb2RlKSA9PiBzdHJpbmc7XHJcbiAgLyoqIFJhdyBzb3VyY2UgdGV4dCB3aGVuIGF2YWlsYWJsZSBmcm9tIEVTTGludC4gKi9cclxuICB0ZXh0Pzogc3RyaW5nO1xyXG59XHJcblxyXG4vKiogUmVwcmVzZW50cyBhIHZhcmlhYmxlIGRlY2xhcmF0aW9uIHN0YXRlbWVudC4gKi9cclxuaW50ZXJmYWNlIFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIGV4dGVuZHMgQmFzZU5vZGUge1xyXG4gIC8qKiBJbmRpdmlkdWFsIGRlY2xhcmF0b3JzIGNvbnRhaW5lZCBpbiB0aGUgZGVjbGFyYXRpb24uICovXHJcbiAgZGVjbGFyYXRpb25zPzogVmFyaWFibGVEZWNsYXJhdG9yTm9kZVtdO1xyXG4gIC8qKiBUeXBlU2NyaXB0IGFtYmllbnQgZGVjbGFyYXRpb24gbW9kaWZpZXIuICovXHJcbiAgZGVjbGFyZT86IGJvb2xlYW47XHJcbiAgLyoqIERlY2xhcmF0aW9uIGtpbmQgc3VjaCBhcyBgY29uc3RgLCBgbGV0YCwgb3IgYHZhcmAuICovXHJcbiAga2luZD86IHN0cmluZztcclxufVxyXG5cclxuLyoqIFJlcHJlc2VudHMgYSBzaW5nbGUgdmFyaWFibGUgZGVjbGFyYXRvci4gKi9cclxudHlwZSBWYXJpYWJsZURlY2xhcmF0b3JOb2RlID0gQmFzZU5vZGU7XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZGVjbGFyYXRpb24gY29udGFpbnMgdGhlIGRhdGEgbmVlZGVkIGZvciBhdXRvZml4LlxyXG4gKiBAcGFyYW0gbm9kZSBEZWNsYXJhdGlvbiB0byB2YWxpZGF0ZS5cclxuICogQHJldHVybnMgV2hldGhlciB0aGUgZGVjbGFyYXRpb24gZXhwb3NlcyBib3RoIGBraW5kYCBhbmQgYHJhbmdlYC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBmaXhhYmxlID0gaGFzRml4RGF0YSh7IGtpbmQ6IFwiY29uc3RcIiwgcmFuZ2U6IFswLCA1XSwgdHlwZTogXCJWYXJpYWJsZURlY2xhcmF0aW9uXCIgfSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaGFzRml4RGF0YShcclxuICBub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcclxuKTogbm9kZSBpcyBGaXhhYmxlVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUge1xyXG4gIHJldHVybiBoYXNSYW5nZShub2RlKSAmJiBcImtpbmRcIiBpbiBub2RlICYmIHR5cGVvZiBub2RlLmtpbmQgPT09IFwic3RyaW5nXCI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBub2RlIGhhcyBhIGNvbXBsZXRlIHJhbmdlLlxyXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIHZhbGlkYXRlLlxyXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBub2RlIGV4cG9zZXMgYSB2YWxpZCB0d28taXRlbSByYW5nZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCByYW5nZWQgPSBoYXNSYW5nZSh7IHJhbmdlOiBbMCwgMV0sIHR5cGU6IFwiSWRlbnRpZmllclwiIH0pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGhhc1JhbmdlKG5vZGU6IEJhc2VOb2RlIHwgdW5kZWZpbmVkKTogbm9kZSBpcyBSYW5nZWROb2RlIHtcclxuICByZXR1cm4gaXNSYW5nZShub2RlPy5yYW5nZSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGEgY29tcGxldGUgc291cmNlIHJhbmdlLlxyXG4gKiBAcGFyYW0gdmFsdWUgQ2FuZGlkYXRlIHJhbmdlIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBhIHZhbGlkIHNvdXJjZSByYW5nZSB0dXBsZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCB2YWxpZFJhbmdlID0gaXNSYW5nZShbMCwgMV0pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzUmFuZ2UodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSYW5nZSB7XHJcbiAgcmV0dXJuIChcclxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUpICYmXHJcbiAgICB2YWx1ZS5sZW5ndGggPT09IDIgJiZcclxuICAgIHZhbHVlLmV2ZXJ5KChwYXJ0KSA9PiBOdW1iZXIuaXNJbnRlZ2VyKHBhcnQpICYmIHBhcnQgPj0gMCkgJiZcclxuICAgIHZhbHVlWzBdIDw9IHZhbHVlWzFdXHJcbiAgKTtcclxufVxyXG5cclxuZXhwb3J0IHsgaGFzRml4RGF0YSwgaGFzUmFuZ2UgfTtcclxuZXhwb3J0IHR5cGUge1xyXG4gIEZpeGFibGVWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcclxuICBGb3JJbk9yT2ZTdGF0ZW1lbnROb2RlLFxyXG4gIEZvclN0YXRlbWVudE5vZGUsXHJcbiAgUmFuZ2VkVmFyaWFibGVEZWNsYXJhdG9yTm9kZSxcclxuICBTb3VyY2VDb2RlQWNjZXNzLFxyXG4gIFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLFxyXG4gIFZhcmlhYmxlRGVjbGFyYXRvck5vZGUsXHJcbn07XHJcbiJdfQ==
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2NvcmUvbm8tbXVsdGlwbGUtZGVjbGFyYXRvcnMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBa0VBOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxVQUFVLENBQ2pCLElBQTZCO0lBRTdCLE9BQU8sUUFBUSxDQUFDLElBQUksQ0FBQyxJQUFJLE1BQU0sSUFBSSxJQUFJLElBQUksT0FBTyxJQUFJLENBQUMsSUFBSSxLQUFLLFFBQVEsQ0FBQztBQUMzRSxDQUFDO0FBRUQ7Ozs7Ozs7O0dBUUc7QUFDSCxTQUFTLFFBQVEsQ0FBQyxJQUEwQjtJQUMxQyxPQUFPLE9BQU8sQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDOUIsQ0FBQztBQUVEOzs7Ozs7OztHQVFHO0FBQ0gsU0FBUyxPQUFPLENBQUMsS0FBYztJQUM3QixPQUFPLENBQ0wsS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7UUFDcEIsS0FBSyxDQUFDLE1BQU0sS0FBSyxDQUFDO1FBQ2xCLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsQ0FBQztRQUM5RCxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUNyQixDQUFDO0FBQ0osQ0FBQztBQUVELE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKiogUHJvdmlkZXMgdGhlIG1pbmltYWwgbm9kZSBzaGFwZSB1c2VkIGJ5IHRoZSBydWxlLiAqL1xyXG5pbnRlcmZhY2UgQmFzZU5vZGUge1xyXG4gIC8qKiBQYXJlbnQgbm9kZSB1c2VkIHRvIGluc3BlY3Qgc3Vycm91bmRpbmcgc3ludGF4LiAqL1xyXG4gIHBhcmVudD86IEJhc2VOb2RlO1xyXG4gIC8qKiBTb3VyY2UgcmFuZ2UgdXNlZCBieSBhdXRvZml4IGxvZ2ljLiAqL1xyXG4gIHJhbmdlPzogUmFuZ2U7XHJcbiAgLyoqIEVTVHJlZSBub2RlIHR5cGUuICovXHJcbiAgdHlwZTogc3RyaW5nO1xyXG59XHJcblxyXG4vKiogUmVwcmVzZW50cyBhIGRlY2xhcmF0aW9uIHRoYXQgY2FuIGJlIHJld3JpdHRlbiBieSB0aGUgZml4ZXIuICovXHJcbmludGVyZmFjZSBGaXhhYmxlVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUgZXh0ZW5kcyBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSB7XHJcbiAgLyoqIENvbmZpcm1lZCBkZWNsYXJhdGlvbiBrZXl3b3JkLiAqL1xyXG4gIGtpbmQ6IHN0cmluZztcclxuICAvKiogQ29uZmlybWVkIHNvdXJjZSByYW5nZSBmb3IgdGhlIGZ1bGwgZGVjbGFyYXRpb24uICovXHJcbiAgcmFuZ2U6IFJhbmdlO1xyXG59XHJcblxyXG4vKiogUmVwcmVzZW50cyBhIGBmb3IuLi5pbmAgb3IgYGZvci4uLm9mYCBzdGF0ZW1lbnQuICovXHJcbmludGVyZmFjZSBGb3JJbk9yT2ZTdGF0ZW1lbnROb2RlIGV4dGVuZHMgQmFzZU5vZGUge1xyXG4gIC8qKiBMZWZ0LWhhbmQgaW5pdGlhbGl6ZXIgb2YgdGhlIGxvb3AuICovXHJcbiAgbGVmdD86IEJhc2VOb2RlO1xyXG59XHJcblxyXG4vKiogUmVwcmVzZW50cyBhIGNsYXNzaWMgYGZvcmAgc3RhdGVtZW50LiAqL1xyXG5pbnRlcmZhY2UgRm9yU3RhdGVtZW50Tm9kZSBleHRlbmRzIEJhc2VOb2RlIHtcclxuICAvKiogSW5pdGlhbGl6ZXIgc2VjdGlvbiBvZiB0aGUgbG9vcC4gKi9cclxuICBpbml0PzogQmFzZU5vZGUgfCBudWxsO1xyXG59XHJcblxyXG4vKiogUmVwcmVzZW50cyBhIHNvdXJjZSByYW5nZSB3aXRoaW4gdGhlIG9yaWdpbmFsIGZpbGUuICovXHJcbnR5cGUgUmFuZ2UgPSBbbnVtYmVyLCBudW1iZXJdO1xyXG5cclxuLyoqIFJlcHJlc2VudHMgYSBub2RlIHdob3NlIHJhbmdlIGhhcyBiZWVuIGNvbmZpcm1lZC4gKi9cclxuaW50ZXJmYWNlIFJhbmdlZE5vZGUgZXh0ZW5kcyBCYXNlTm9kZSB7XHJcbiAgLyoqIENvbmZpcm1lZCBzb3VyY2UgcmFuZ2UgZm9yIHRoZSBub2RlLiAqL1xyXG4gIHJhbmdlOiBSYW5nZTtcclxufVxyXG5cclxuLyoqIFJlcHJlc2VudHMgYSBkZWNsYXJhdG9yIHdob3NlIHJhbmdlIGhhcyBiZWVuIGNvbmZpcm1lZC4gKi9cclxuaW50ZXJmYWNlIFJhbmdlZFZhcmlhYmxlRGVjbGFyYXRvck5vZGUgZXh0ZW5kcyBWYXJpYWJsZURlY2xhcmF0b3JOb2RlIHtcclxuICAvKiogQ29uZmlybWVkIHNvdXJjZSByYW5nZSBmb3IgdGhlIGRlY2xhcmF0b3IuICovXHJcbiAgcmFuZ2U6IFJhbmdlO1xyXG59XHJcblxyXG4vKiogRXhwb3NlcyB0aGUgc291cmNlIGFjY2VzcyBtZXRob2RzIHVzZWQgYnkgdGhlIHJ1bGUuICovXHJcbmludGVyZmFjZSBTb3VyY2VDb2RlQWNjZXNzIHtcclxuICAvKiogUmV0dXJucyB0aGUgc291cmNlIHRleHQgZm9yIGEgbm9kZSBvciB0aGUgZnVsbCBmaWxlIHdoZW4gb21pdHRlZC4gKi9cclxuICBnZXRUZXh0OiAobm9kZT86IEJhc2VOb2RlKSA9PiBzdHJpbmc7XHJcbiAgLyoqIFJhdyBzb3VyY2UgdGV4dCB3aGVuIGF2YWlsYWJsZSBmcm9tIEVTTGludC4gKi9cclxuICB0ZXh0Pzogc3RyaW5nO1xyXG59XHJcblxyXG4vKiogUmVwcmVzZW50cyBhIHZhcmlhYmxlIGRlY2xhcmF0aW9uIHN0YXRlbWVudC4gKi9cclxuaW50ZXJmYWNlIFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlIGV4dGVuZHMgQmFzZU5vZGUge1xyXG4gIC8qKiBJbmRpdmlkdWFsIGRlY2xhcmF0b3JzIGNvbnRhaW5lZCBpbiB0aGUgZGVjbGFyYXRpb24uICovXHJcbiAgZGVjbGFyYXRpb25zPzogVmFyaWFibGVEZWNsYXJhdG9yTm9kZVtdO1xyXG4gIC8qKiBUeXBlU2NyaXB0IGFtYmllbnQgZGVjbGFyYXRpb24gbW9kaWZpZXIuICovXHJcbiAgZGVjbGFyZT86IGJvb2xlYW47XHJcbiAgLyoqIERlY2xhcmF0aW9uIGtpbmQgc3VjaCBhcyBgY29uc3RgLCBgbGV0YCwgb3IgYHZhcmAuICovXHJcbiAga2luZD86IHN0cmluZztcclxufVxyXG5cclxuLyoqIFJlcHJlc2VudHMgYSBzaW5nbGUgdmFyaWFibGUgZGVjbGFyYXRvci4gKi9cclxudHlwZSBWYXJpYWJsZURlY2xhcmF0b3JOb2RlID0gQmFzZU5vZGU7XHJcblxyXG4vKipcclxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZGVjbGFyYXRpb24gY29udGFpbnMgdGhlIGRhdGEgbmVlZGVkIGZvciBhdXRvZml4LlxyXG4gKiBAcGFyYW0gbm9kZSBEZWNsYXJhdGlvbiB0byB2YWxpZGF0ZS5cclxuICogQHJldHVybnMgV2hldGhlciB0aGUgZGVjbGFyYXRpb24gZXhwb3NlcyBib3RoIGBraW5kYCBhbmQgYHJhbmdlYC5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCBmaXhhYmxlID0gaGFzRml4RGF0YSh7IGtpbmQ6IFwiY29uc3RcIiwgcmFuZ2U6IFswLCA1XSwgdHlwZTogXCJWYXJpYWJsZURlY2xhcmF0aW9uXCIgfSk7XHJcbiAqIGBgYFxyXG4gKi9cclxuZnVuY3Rpb24gaGFzRml4RGF0YShcclxuICBub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcclxuKTogbm9kZSBpcyBGaXhhYmxlVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUge1xyXG4gIHJldHVybiBoYXNSYW5nZShub2RlKSAmJiBcImtpbmRcIiBpbiBub2RlICYmIHR5cGVvZiBub2RlLmtpbmQgPT09IFwic3RyaW5nXCI7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBub2RlIGhhcyBhIGNvbXBsZXRlIHJhbmdlLlxyXG4gKiBAcGFyYW0gbm9kZSBOb2RlIHRvIHZhbGlkYXRlLlxyXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSBub2RlIGV4cG9zZXMgYSB2YWxpZCB0d28taXRlbSByYW5nZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCByYW5nZWQgPSBoYXNSYW5nZSh7IHJhbmdlOiBbMCwgMV0sIHR5cGU6IFwiSWRlbnRpZmllclwiIH0pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGhhc1JhbmdlKG5vZGU6IEJhc2VOb2RlIHwgdW5kZWZpbmVkKTogbm9kZSBpcyBSYW5nZWROb2RlIHtcclxuICByZXR1cm4gaXNSYW5nZShub2RlPy5yYW5nZSk7XHJcbn1cclxuXHJcbi8qKlxyXG4gKiBDaGVja3Mgd2hldGhlciBhIHZhbHVlIGlzIGEgY29tcGxldGUgc291cmNlIHJhbmdlLlxyXG4gKiBAcGFyYW0gdmFsdWUgQ2FuZGlkYXRlIHJhbmdlIHZhbHVlLlxyXG4gKiBAcmV0dXJucyBXaGV0aGVyIHRoZSB2YWx1ZSBpcyBhIHZhbGlkIHNvdXJjZSByYW5nZSB0dXBsZS5cclxuICogQGV4YW1wbGVcclxuICogYGBgdHlwZXNjcmlwdFxyXG4gKiBjb25zdCB2YWxpZFJhbmdlID0gaXNSYW5nZShbMCwgMV0pO1xyXG4gKiBgYGBcclxuICovXHJcbmZ1bmN0aW9uIGlzUmFuZ2UodmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBSYW5nZSB7XHJcbiAgcmV0dXJuIChcclxuICAgIEFycmF5LmlzQXJyYXkodmFsdWUpICYmXHJcbiAgICB2YWx1ZS5sZW5ndGggPT09IDIgJiZcclxuICAgIHZhbHVlLmV2ZXJ5KChwYXJ0KSA9PiBOdW1iZXIuaXNTYWZlSW50ZWdlcihwYXJ0KSAmJiBwYXJ0ID49IDApICYmXHJcbiAgICB2YWx1ZVswXSA8PSB2YWx1ZVsxXVxyXG4gICk7XHJcbn1cclxuXHJcbmV4cG9ydCB7IGhhc0ZpeERhdGEsIGhhc1JhbmdlIH07XHJcbmV4cG9ydCB0eXBlIHtcclxuICBGaXhhYmxlVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXHJcbiAgRm9ySW5Pck9mU3RhdGVtZW50Tm9kZSxcclxuICBGb3JTdGF0ZW1lbnROb2RlLFxyXG4gIFJhbmdlZFZhcmlhYmxlRGVjbGFyYXRvck5vZGUsXHJcbiAgU291cmNlQ29kZUFjY2VzcyxcclxuICBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcclxuICBWYXJpYWJsZURlY2xhcmF0b3JOb2RlLFxyXG59O1xyXG4iXX0=