@codeperfect/eslint-plugin 2.11.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (180) hide show
  1. package/README.md +0 -1
  2. package/dist/application/custom-rules.d.ts +3 -0
  3. package/dist/application/custom-rules.d.ts.map +1 -1
  4. package/dist/application/custom-rules.js +3 -2
  5. package/dist/application/index.d.ts +1 -1
  6. package/dist/application/index.d.ts.map +1 -1
  7. package/dist/application/index.js +2 -2
  8. package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
  9. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +0 -2
  10. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -1
  11. package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +4 -6
  12. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -1
  13. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +12 -15
  14. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +0 -2
  15. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -1
  16. package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +2 -10
  17. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
  18. package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +8 -17
  19. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -1
  20. package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +6 -8
  21. package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
  22. package/dist/domain/architecture/consistent-barrel-files/rule.js +4 -5
  23. package/dist/domain/architecture/index.d.ts +1 -0
  24. package/dist/domain/architecture/index.d.ts.map +1 -1
  25. package/dist/domain/architecture/index.js +2 -1
  26. package/dist/domain/architecture/no-import-export-extensions/no-import-export-extensions-rule.d.ts.map +1 -1
  27. package/dist/domain/architecture/no-import-export-extensions/no-import-export-extensions-rule.js +6 -13
  28. package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.d.ts.map +1 -1
  29. package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.js +11 -10
  30. package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.d.ts.map +1 -1
  31. package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.js +5 -9
  32. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts.map +1 -1
  33. package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.js +6 -9
  34. package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.d.ts.map +1 -1
  35. package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.js +5 -10
  36. package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.d.ts.map +1 -1
  37. package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.js +4 -8
  38. package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.d.ts.map +1 -1
  39. package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.js +4 -5
  40. package/dist/domain/architecture/no-unused-public-members/index.d.ts +2 -0
  41. package/dist/domain/architecture/no-unused-public-members/index.d.ts.map +1 -0
  42. package/dist/domain/architecture/no-unused-public-members/index.js +2 -0
  43. package/dist/domain/architecture/no-unused-public-members/member-contract-utilities.d.ts +16 -0
  44. package/dist/domain/architecture/no-unused-public-members/member-contract-utilities.d.ts.map +1 -0
  45. package/dist/domain/architecture/no-unused-public-members/member-contract-utilities.js +102 -0
  46. package/dist/domain/architecture/no-unused-public-members/member-declaration-utilities.d.ts +34 -0
  47. package/dist/domain/architecture/no-unused-public-members/member-declaration-utilities.d.ts.map +1 -0
  48. package/dist/domain/architecture/no-unused-public-members/member-declaration-utilities.js +55 -0
  49. package/dist/domain/architecture/no-unused-public-members/member-host-utilities.d.ts +68 -0
  50. package/dist/domain/architecture/no-unused-public-members/member-host-utilities.d.ts.map +1 -0
  51. package/dist/domain/architecture/no-unused-public-members/member-host-utilities.js +195 -0
  52. package/dist/domain/architecture/no-unused-public-members/member-public-api-utilities.d.ts +30 -0
  53. package/dist/domain/architecture/no-unused-public-members/member-public-api-utilities.d.ts.map +1 -0
  54. package/dist/domain/architecture/no-unused-public-members/member-public-api-utilities.js +101 -0
  55. package/dist/domain/architecture/no-unused-public-members/member-usage-handoff-utilities.d.ts +28 -0
  56. package/dist/domain/architecture/no-unused-public-members/member-usage-handoff-utilities.d.ts.map +1 -0
  57. package/dist/domain/architecture/no-unused-public-members/member-usage-handoff-utilities.js +125 -0
  58. package/dist/domain/architecture/no-unused-public-members/member-usage-reference-utilities.d.ts +29 -0
  59. package/dist/domain/architecture/no-unused-public-members/member-usage-reference-utilities.d.ts.map +1 -0
  60. package/dist/domain/architecture/no-unused-public-members/member-usage-reference-utilities.js +108 -0
  61. package/dist/domain/architecture/no-unused-public-members/member-usage-type-utilities.d.ts +42 -0
  62. package/dist/domain/architecture/no-unused-public-members/member-usage-type-utilities.d.ts.map +1 -0
  63. package/dist/domain/architecture/no-unused-public-members/member-usage-type-utilities.js +96 -0
  64. package/dist/domain/architecture/no-unused-public-members/member-usage-utilities.d.ts +18 -0
  65. package/dist/domain/architecture/no-unused-public-members/member-usage-utilities.d.ts.map +1 -0
  66. package/dist/domain/architecture/no-unused-public-members/member-usage-utilities.js +128 -0
  67. package/dist/domain/architecture/no-unused-public-members/member-utilities.d.ts +41 -0
  68. package/dist/domain/architecture/no-unused-public-members/member-utilities.d.ts.map +1 -0
  69. package/dist/domain/architecture/no-unused-public-members/member-utilities.js +51 -0
  70. package/dist/domain/architecture/no-unused-public-members/rule.d.ts +5 -0
  71. package/dist/domain/architecture/no-unused-public-members/rule.d.ts.map +1 -0
  72. package/dist/domain/architecture/no-unused-public-members/rule.js +78 -0
  73. package/dist/domain/core/no-multiple-declarators/rule-utilities.d.ts.map +1 -1
  74. package/dist/domain/core/no-multiple-declarators/rule-utilities.js +13 -19
  75. package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
  76. package/dist/domain/core/no-multiple-declarators/rule.js +4 -5
  77. package/dist/domain/core/no-useless-delegation/rule.d.ts.map +1 -1
  78. package/dist/domain/core/no-useless-delegation/rule.js +5 -6
  79. package/dist/domain/core/prefer-interface-types/autofix.js +4 -5
  80. package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts.map +1 -1
  81. package/dist/domain/core/prefer-interface-types/rule-utilities.js +7 -9
  82. package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
  83. package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +10 -8
  84. package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
  85. package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +5 -6
  86. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -1
  87. package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +7 -9
  88. package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
  89. package/dist/domain/docs/no-interface-member-docs/rule.js +2 -5
  90. package/dist/domain/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -1
  91. package/dist/domain/docs/require-example-language/empty-fence-fixes.js +2 -5
  92. package/dist/domain/docs/require-example-language/example-utilities.d.ts +1 -7
  93. package/dist/domain/docs/require-example-language/example-utilities.d.ts.map +1 -1
  94. package/dist/domain/docs/require-example-language/example-utilities.js +6 -14
  95. package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
  96. package/dist/domain/docs/require-example-language/examples.js +7 -16
  97. package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -1
  98. package/dist/domain/docs/require-example-language/fixes.js +8 -13
  99. package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
  100. package/dist/domain/docs/require-example-language/reporting.js +4 -8
  101. package/dist/domain/docs/require-example-language/types.d.ts +0 -2
  102. package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
  103. package/dist/domain/docs/require-example-language/types.js +1 -1
  104. package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -1
  105. package/dist/domain/docs/single-line-jsdoc/rule.js +5 -11
  106. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -1
  107. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.js +5 -14
  108. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -1
  109. package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +5 -9
  110. package/dist/domain/index.d.ts +2 -2
  111. package/dist/domain/index.d.ts.map +1 -1
  112. package/dist/domain/index.js +3 -3
  113. package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -1
  114. package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
  115. package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +2 -5
  116. package/dist/domain/testing/aaa/analyzer.analysis.js +6 -11
  117. package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
  118. package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +5 -14
  119. package/dist/domain/testing/aaa/analyzer.assertions.js +2 -2
  120. package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -1
  121. package/dist/domain/testing/aaa/analyzer.assertions.operands.js +12 -16
  122. package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -1
  123. package/dist/domain/testing/aaa/analyzer.classification.helpers.js +11 -21
  124. package/dist/domain/testing/aaa/analyzer.classification.js +2 -2
  125. package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
  126. package/dist/domain/testing/aaa/analyzer.super.js +5 -6
  127. package/dist/domain/testing/aaa/types.d.ts +0 -4
  128. package/dist/domain/testing/aaa/types.d.ts.map +1 -1
  129. package/dist/domain/testing/aaa/types.js +1 -1
  130. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -1
  131. package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +2 -7
  132. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -1
  133. package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +4 -5
  134. package/dist/domain/testing/index.d.ts +0 -1
  135. package/dist/domain/testing/index.d.ts.map +1 -1
  136. package/dist/domain/testing/index.js +1 -2
  137. package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -1
  138. package/dist/domain/testing/prefer-vi-mocked-import/fix.js +9 -7
  139. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -1
  140. package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +5 -9
  141. package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.d.ts.map +1 -1
  142. package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.js +2 -7
  143. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -1
  144. package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +5 -5
  145. package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.js +3 -5
  146. package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -1
  147. package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +13 -18
  148. package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.d.ts.map +1 -1
  149. package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.js +5 -6
  150. package/dist/domain/testing/prefer-vi-mocked-import/types.d.ts +0 -2
  151. package/dist/domain/testing/prefer-vi-mocked-import/types.d.ts.map +1 -1
  152. package/dist/domain/testing/prefer-vi-mocked-import/types.js +1 -1
  153. package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
  154. package/dist/domain/testing/require-act-result-capture/rule.js +9 -12
  155. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -1
  156. package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +5 -11
  157. package/dist/domain/testing/require-test-companion/require-test-companion-options.js +6 -7
  158. package/dist/domain/testing/require-test-companion/rule.js +2 -2
  159. package/dist/index.d.ts +1 -1
  160. package/dist/index.d.ts.map +1 -1
  161. package/dist/index.js +2 -2
  162. package/dist/infrastructure/codeperfect-plugin.d.ts +2 -2
  163. package/dist/infrastructure/codeperfect-plugin.js +3 -3
  164. package/dist/infrastructure/presets.js +3 -3
  165. package/package.json +26 -27
  166. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/index.d.ts +0 -2
  167. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/index.d.ts.map +0 -1
  168. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/index.js +0 -2
  169. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts +0 -29
  170. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts.map +0 -1
  171. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.js +0 -200
  172. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts +0 -12
  173. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts.map +0 -1
  174. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.js +0 -151
  175. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts +0 -16
  176. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts.map +0 -1
  177. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.js +0 -109
  178. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts +0 -5
  179. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts.map +0 -1
  180. package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.js +0 -41
@@ -0,0 +1,18 @@
1
+ import * as ts from "typescript";
2
+ import type { NoUnusedExportsState } from "../no-unused-exports/types.js";
3
+ import type { PublicMember } from "./member-declaration-utilities.js";
4
+ /**
5
+ * Checks whether a member has a concrete reference in production TypeScript.
6
+ * @param program TypeScript project program.
7
+ * @param state Normalized public API and test patterns.
8
+ * @param repoRoot Root directory used for glob matching.
9
+ * @param member Member whose production usage is being checked.
10
+ * @returns True when production code references the member.
11
+ * @example
12
+ * ```typescript
13
+ * const used = hasProductionUsage(program, state, repoRoot, member);
14
+ * ```
15
+ */
16
+ declare const hasProductionUsage: (program: ts.Program, state: NoUnusedExportsState, repoRoot: string, member: PublicMember) => boolean;
17
+ export { hasProductionUsage };
18
+ //# sourceMappingURL=member-usage-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member-usage-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-public-members/member-usage-utilities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAyFnE;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,kBAAkB,GACtB,SAAS,EAAE,CAAC,OAAO,EACnB,OAAO,oBAAoB,EAC3B,UAAU,MAAM,EAChB,QAAQ,YAAY,KACnB,OAuEF,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -0,0 +1,128 @@
1
+ import path from "node:path";
2
+ import * as ts from "typescript";
3
+ import { isTestFile } from "../no-unused-exports/no-unused-exports-options.js";
4
+ import { isSameSymbol, resolveCanonicalSymbol, } from "../no-unused-exports/no-unused-exports-symbol-utilities.js";
5
+ import { collectHeritageMemberSymbols } from "./member-contract-utilities.js";
6
+ import { isCallArgumentMember, isObjectContractHandoff, } from "./member-usage-handoff-utilities.js";
7
+ import { isComputedMemberRead, isStructuralPropertyRead, } from "./member-usage-reference-utilities.js";
8
+ /**
9
+ * Resolves destructured member names or direct reference symbols.
10
+ * @param node Candidate reference node.
11
+ * @param checker TypeScript type checker.
12
+ * @returns Referenced member symbol when available.
13
+ * @example
14
+ * ```typescript
15
+ * const symbol = getUsageSymbol(propertyIdentifier, checker);
16
+ * ```
17
+ */
18
+ const getUsageSymbol = (node, checker) => {
19
+ const parent = node.parent;
20
+ if (ts.isIdentifier(node) &&
21
+ ts.isBindingElement(parent) &&
22
+ parent.name === node &&
23
+ parent.propertyName === void 0 &&
24
+ ts.isObjectBindingPattern(parent.parent)) {
25
+ const owner = parent.parent.parent;
26
+ const sourceType = ts.isVariableDeclaration(owner)
27
+ ? owner.initializer === void 0
28
+ ? void 0
29
+ : checker.getTypeAtLocation(owner.initializer)
30
+ : ts.isParameter(owner)
31
+ ? checker.getTypeAtLocation(owner)
32
+ : void 0;
33
+ return sourceType === void 0
34
+ ? checker.getSymbolAtLocation(node)
35
+ : checker.getPropertyOfType(sourceType, node.text);
36
+ }
37
+ return checker.getSymbolAtLocation(node);
38
+ };
39
+ /**
40
+ * Identifies declaration names that are not member references.
41
+ * @param node Candidate reference node.
42
+ * @returns True when the node is only declaring a name.
43
+ * @example
44
+ * ```typescript
45
+ * const declarationOnly = isDeclarationName(propertyName);
46
+ * ```
47
+ */
48
+ const isDeclarationName = (node) => {
49
+ const parent = node.parent;
50
+ return (((ts.isPropertyDeclaration(parent) ||
51
+ ts.isMethodDeclaration(parent) ||
52
+ ts.isGetAccessorDeclaration(parent) ||
53
+ ts.isSetAccessorDeclaration(parent) ||
54
+ ts.isPropertySignature(parent) ||
55
+ ts.isMethodSignature(parent) ||
56
+ ts.isPropertyAssignment(parent) ||
57
+ ts.isShorthandPropertyAssignment(parent)) &&
58
+ parent.name === node) ||
59
+ (ts.isVariableDeclaration(parent) && parent.name === node) ||
60
+ ((ts.isClassDeclaration(parent) ||
61
+ ts.isInterfaceDeclaration(parent) ||
62
+ ts.isTypeAliasDeclaration(parent) ||
63
+ ts.isFunctionDeclaration(parent)) &&
64
+ parent.name === node) ||
65
+ (ts.isParameter(parent) && parent.name === node));
66
+ };
67
+ /**
68
+ * Checks whether a member has a concrete reference in production TypeScript.
69
+ * @param program TypeScript project program.
70
+ * @param state Normalized public API and test patterns.
71
+ * @param repoRoot Root directory used for glob matching.
72
+ * @param member Member whose production usage is being checked.
73
+ * @returns True when production code references the member.
74
+ * @example
75
+ * ```typescript
76
+ * const used = hasProductionUsage(program, state, repoRoot, member);
77
+ * ```
78
+ */
79
+ const hasProductionUsage = (program, state, repoRoot, member) => {
80
+ const checker = program.getTypeChecker();
81
+ const relatedSymbols = [
82
+ resolveCanonicalSymbol(member.memberSymbol, checker),
83
+ ...collectHeritageMemberSymbols(program, checker, member).map((symbol) => resolveCanonicalSymbol(symbol, checker)),
84
+ ];
85
+ const variableDeclaration = ts.isVariableDeclaration(member.hostDeclaration)
86
+ ? member.hostDeclaration
87
+ : void 0;
88
+ if (variableDeclaration !== void 0) {
89
+ const declaredType = checker.getTypeAtLocation(variableDeclaration.name);
90
+ const declaredMember = checker.getPropertyOfType(declaredType, member.memberName);
91
+ if (declaredMember !== void 0 &&
92
+ relatedSymbols.every((symbol) => !isSameSymbol(symbol, declaredMember))) {
93
+ relatedSymbols.push(resolveCanonicalSymbol(declaredMember, checker));
94
+ }
95
+ }
96
+ const normalizedRoot = path.resolve(repoRoot);
97
+ for (const sourceFile of program.getSourceFiles()) {
98
+ const filename = path.resolve(sourceFile.fileName);
99
+ if (sourceFile.isDeclarationFile ||
100
+ isTestFile(filename, state, normalizedRoot)) {
101
+ continue;
102
+ }
103
+ const findUsageSymbol = (node) => {
104
+ if ((ts.isIdentifier(node) || ts.isStringLiteralLike(node)) &&
105
+ !isDeclarationName(node)) {
106
+ const candidate = getUsageSymbol(node, checker);
107
+ if (candidate !== void 0 &&
108
+ relatedSymbols.some((symbol) => isSameSymbol(symbol, candidate))) {
109
+ return candidate;
110
+ }
111
+ if (isStructuralPropertyRead(node, checker, member)) {
112
+ return member.memberSymbol;
113
+ }
114
+ }
115
+ return isComputedMemberRead(node, checker, member, relatedSymbols) ||
116
+ isCallArgumentMember(node, checker, member) ||
117
+ isObjectContractHandoff(node, checker, member)
118
+ ? member.memberSymbol
119
+ : ts.forEachChild(node, findUsageSymbol);
120
+ };
121
+ if (findUsageSymbol(sourceFile) !== void 0) {
122
+ return true;
123
+ }
124
+ }
125
+ return false;
126
+ };
127
+ export { hasProductionUsage };
128
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLXVzYWdlLXV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vYXJjaGl0ZWN0dXJlL25vLXVudXNlZC1wdWJsaWMtbWVtYmVycy9tZW1iZXItdXNhZ2UtdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUtqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDNUUsT0FBTyxFQUNMLFlBQVksRUFDWixzQkFBc0IsR0FDdkIsTUFBTSx5REFBeUQsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHVCQUF1QixHQUN4QixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsd0JBQXdCLEdBQ3pCLE1BQU0sb0NBQW9DLENBQUM7QUFFNUM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FDckIsSUFBYSxFQUNiLE9BQXVCLEVBQ0EsRUFBRTtJQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBRTNCLElBQ0UsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDckIsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUMzQixNQUFNLENBQUMsSUFBSSxLQUFLLElBQUk7UUFDcEIsTUFBTSxDQUFDLFlBQVksS0FBSyxLQUFLLENBQUM7UUFDOUIsRUFBRSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFDeEMsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ25DLE1BQU0sVUFBVSxH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LENBQUMsRUFDeEIsQ0FBQztnQkFDRCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUVoRCxJQUNFLFNBQVMsS0FBSyxLQUFLLENBQUM7b0JBQ3BCLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFDaEUsQ0FBQztvQkFDRCxPQUFPLFNBQVMsQ0FBQztnQkFDbkIsQ0FBQztnQkFFRCxJQUFJLHdCQUF3QixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDcEQsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sb0JBQW9CLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDO2dCQUNoRSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQztnQkFDM0MsdUJBQXVCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWTtnQkFDckIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQztRQUVGLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgKiBhcyB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG5pbXBvcnQgdHlwZSB7IE5vVW51c2VkRXhwb3J0c1N0YXRlIH0gZnJvbSBcIi4uL25vLXVudXNlZC1leHBvcnRzL3R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFB1YmxpY01lbWJlciB9IGZyb20gXCIuL21lbWJlci1kZWNsYXJhdGlvbi11dGlsaXRpZXNcIjtcblxuaW1wb3J0IHsgaXNUZXN0RmlsZSB9IGZyb20gXCIuLi9uby11bnVzZWQtZXhwb3J0cy9uby11bnVzZWQtZXhwb3J0cy1vcHRpb25zXCI7XG5pbXBvcnQge1xuICBpc1NhbWVTeW1ib2wsXG4gIHJlc29sdmVDYW5vbmljYWxTeW1ib2wsXG59IGZyb20gXCIuLi9uby11bnVzZWQtZXhwb3J0cy9uby11bnVzZWQtZXhwb3J0cy1zeW1ib2wtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBjb2xsZWN0SGVyaXRhZ2VNZW1iZXJTeW1ib2xzIH0gZnJvbSBcIi4vbWVtYmVyLWNvbnRyYWN0LXV0aWxpdGllc1wiO1xuaW1wb3J0IHtcbiAgaXNDYWxsQXJndW1lbnRNZW1iZXIsXG4gIGlzT2JqZWN0Q29udHJhY3RIYW5kb2ZmLFxufSBmcm9tIFwiLi9tZW1iZXItdXNhZ2UtaGFuZG9mZi11dGlsaXRpZXNcIjtcbmltcG9ydCB7XG4gIGlzQ29tcHV0ZWRNZW1iZXJSZWFkLFxuICBpc1N0cnVjdHVyYWxQcm9wZXJ0eVJlYWQsXG59IGZyb20gXCIuL21lbWJlci11c2FnZS1yZWZlcmVuY2UtdXRpbGl0aWVzXCI7XG5cbi8qKlxuICogUmVzb2x2ZXMgZGVzdHJ1Y3R1cmVkIG1lbWJlciBuYW1lcyBvciBkaXJlY3QgcmVmZXJlbmNlIHN5bWJvbHMuXG4gKiBAcGFyYW0gbm9kZSBDYW5kaWRhdGUgcmVmZXJlbmNlIG5vZGUuXG4gKiBAcGFyYW0gY2hlY2tlciBUeXBlU2NyaXB0IHR5cGUgY2hlY2tlci5cbiAqIEByZXR1cm5zIFJlZmVyZW5jZWQgbWVtYmVyIHN5bWJvbCB3aGVuIGF2YWlsYWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzeW1ib2wgPSBnZXRVc2FnZVN5bWJvbChwcm9wZXJ0eUlkZW50aWZpZXIsIGNoZWNrZXIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFVzYWdlU3ltYm9sID0gKFxuICBub2RlOiB0cy5Ob2RlLFxuICBjaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbik6IHRzLlN5bWJvbCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHBhcmVudCA9IG5vZGUucGFyZW50O1xuXG4gIGlmIChcbiAgICB0cy5pc0lkZW50aWZpZXIobm9kZSkgJiZcbiAgICB0cy5pc0JpbmRpbmdFbGVtZW50KHBhcmVudCkgJiZcbiAgICBwYXJlbnQubmFtZSA9PT0gbm9kZSAmJlxuICAgIHBhcmVudC5wcm9wZXJ0eU5hbWUgPT09IHZvaWQgMCAmJlxuICAgIHRzLmlzT2JqZWN0QmluZGluZ1BhdHRlcm4ocGFyZW50LnBhcmVudClcbiAgKSB7XG4gICAgY29uc3Qgb3duZXIgPSBwYXJlbnQucGFyZW50LnBhcmVudDtcbiAgICBjb25zdCBzb3VyY2VUeXBlID0gdHMuaXNWYXJpYWJsZURlY2xhcmF0aW9uKG93bmVyKVxuICAgICAgPyBvd25lci5pbml0aWFsaXplciA9PT0gdm9pZCAwXG4gICAgICAgID8gdm9pZCAwXG4gICAgICAgIDogY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihvd25lci5pbml0aWFsaXplcilcbiAgICAgIDogdHMuaXNQYXJhbWV0ZXIob3duZXIpXG4gICAgICAgID8gY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihvd25lcilcbiAgICAgICAgOiB2b2lkIDA7XG5cbiAgICByZXR1cm4gc291cmNlVHlwZSA9PT0gdm9pZCAwXG4gICAgICA/IGNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihub2RlKVxuICAgICAgOiBjaGVja2VyLmdldFByb3BlcnR5T2ZUeXBlKHNvdXJjZVR5cGUsIG5vZGUudGV4dCk7XG4gIH1cblxuICByZXR1cm4gY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKG5vZGUpO1xufTtcblxuLyoqXG4gKiBJZGVudGlmaWVzIGRlY2xhcmF0aW9uIG5hbWVzIHRoYXQgYXJlIG5vdCBtZW1iZXIgcmVmZXJlbmNlcy5cbiAqIEBwYXJhbSBub2RlIENhbmRpZGF0ZSByZWZlcmVuY2Ugbm9kZS5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgbm9kZSBpcyBvbmx5IGRlY2xhcmluZyBhIG5hbWUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZGVjbGFyYXRpb25Pbmx5ID0gaXNEZWNsYXJhdGlvbk5hbWUocHJvcGVydHlOYW1lKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc0RlY2xhcmF0aW9uTmFtZSA9IChub2RlOiB0cy5Ob2RlKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHBhcmVudCA9IG5vZGUucGFyZW50O1xuXG4gIHJldHVybiAoXG4gICAgKCh0cy5pc1Byb3BlcnR5RGVjbGFyYXRpb24ocGFyZW50KSB8fFxuICAgICAgdHMuaXNNZXRob2REZWNsYXJhdGlvbihwYXJlbnQpIHx8XG4gICAgICB0cy5pc0dldEFjY2Vzc29yRGVjbGFyYXRpb24ocGFyZW50KSB8fFxuICAgICAgdHMuaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKHBhcmVudCkgfHxcbiAgICAgIHRzLmlzUHJvcGVydHlTaWduYXR1cmUocGFyZW50KSB8fFxuICAgICAgdHMuaXNNZXRob2RTaWduYXR1cmUocGFyZW50KSB8fFxuICAgICAgdHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQocGFyZW50KSB8fFxuICAgICAgdHMuaXNTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQocGFyZW50KSkgJiZcbiAgICAgIHBhcmVudC5uYW1lID09PSBub2RlKSB8fFxuICAgICh0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24ocGFyZW50KSAmJiBwYXJlbnQubmFtZSA9PT0gbm9kZSkgfHxcbiAgICAoKHRzLmlzQ2xhc3NEZWNsYXJhdGlvbihwYXJlbnQpIHx8XG4gICAgICB0cy5pc0ludGVyZmFjZURlY2xhcmF0aW9uKHBhcmVudCkgfHxcbiAgICAgIHRzLmlzVHlwZUFsaWFzRGVjbGFyYXRpb24ocGFyZW50KSB8fFxuICAgICAgdHMuaXNGdW5jdGlvbkRlY2xhcmF0aW9uKHBhcmVudCkpICYmXG4gICAgICBwYXJlbnQubmFtZSA9PT0gbm9kZSkgfHxcbiAgICAodHMuaXNQYXJhbWV0ZXIocGFyZW50KSAmJiBwYXJlbnQubmFtZSA9PT0gbm9kZSlcbiAgKTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBtZW1iZXIgaGFzIGEgY29uY3JldGUgcmVmZXJlbmNlIGluIHByb2R1Y3Rpb24gVHlwZVNjcmlwdC5cbiAqIEBwYXJhbSBwcm9ncmFtIFR5cGVTY3JpcHQgcHJvamVjdCBwcm9ncmFtLlxuICogQHBhcmFtIHN0YXRlIE5vcm1hbGl6ZWQgcHVibGljIEFQSSBhbmQgdGVzdCBwYXR0ZXJucy5cbiAqIEBwYXJhbSByZXBvUm9vdCBSb290IGRpcmVjdG9yeSB1c2VkIGZvciBnbG9iIG1hdGNoaW5nLlxuICogQHBhcmFtIG1lbWJlciBNZW1iZXIgd2hvc2UgcHJvZHVjdGlvbiB1c2FnZSBpcyBiZWluZyBjaGVja2VkLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHByb2R1Y3Rpb24gY29kZSByZWZlcmVuY2VzIHRoZSBtZW1iZXIuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdXNlZCA9IGhhc1Byb2R1Y3Rpb25Vc2FnZShwcm9ncmFtLCBzdGF0ZSwgcmVwb1Jvb3QsIG1lbWJlcik7XG4gKiBgYGBcbiAqL1xuY29uc3QgaGFzUHJvZHVjdGlvblVzYWdlID0gKFxuICBwcm9ncmFtOiB0cy5Qcm9ncmFtLFxuICBzdGF0ZTogTm9VbnVzZWRFeHBvcnRzU3RhdGUsXG4gIHJlcG9Sb290OiBzdHJpbmcsXG4gIG1lbWJlcjogUHVibGljTWVtYmVyLFxuKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IGNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IHJlbGF0ZWRTeW1ib2xzID0gW1xuICAgIHJlc29sdmVDYW5vbmljYWxTeW1ib2wobWVtYmVyLm1lbWJlclN5bWJvbCwgY2hlY2tlciksXG4gICAgLi4uY29sbGVjdEhlcml0YWdlTWVtYmVyU3ltYm9scyhwcm9ncmFtLCBjaGVja2VyLCBtZW1iZXIpLm1hcCgoc3ltYm9sKSA9PlxuICAgICAgcmVzb2x2ZUNhbm9uaWNhbFN5bWJvbChzeW1ib2wsIGNoZWNrZXIpLFxuICAgICksXG4gIF07XG4gIGNvbnN0IHZhcmlhYmxlRGVjbGFyYXRpb24gPSB0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24obWVtYmVyLmhvc3REZWNsYXJhdGlvbilcbiAgICA/IG1lbWJlci5ob3N0RGVjbGFyYXRpb25cbiAgICA6IHZvaWQgMDtcblxuICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgY29uc3QgZGVjbGFyZWRUeXBlID0gY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbih2YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUpO1xuICAgIGNvbnN0IGRlY2xhcmVkTWVtYmVyID0gY2hlY2tlci5nZXRQcm9wZXJ0eU9mVHlwZShcbiAgICAgIGRlY2xhcmVkVHlwZSxcbiAgICAgIG1lbWJlci5tZW1iZXJOYW1lLFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBkZWNsYXJlZE1lbWJlciAhPT0gdm9pZCAwICYmXG4gICAgICByZWxhdGVkU3ltYm9scy5ldmVyeSgoc3ltYm9sKSA9PiAhaXNTYW1lU3ltYm9sKHN5bWJvbCwgZGVjbGFyZWRNZW1iZXIpKVxuICAgICkge1xuICAgICAgcmVsYXRlZFN5bWJvbHMucHVzaChyZXNvbHZlQ2Fub25pY2FsU3ltYm9sKGRlY2xhcmVkTWVtYmVyLCBjaGVja2VyKSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZFJvb3QgPSBwYXRoLnJlc29sdmUocmVwb1Jvb3QpO1xuXG4gIGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkpIHtcbiAgICBjb25zdCBmaWxlbmFtZSA9IHBhdGgucmVzb2x2ZShzb3VyY2VGaWxlLmZpbGVOYW1lKTtcblxuICAgIGlmIChcbiAgICAgIHNvdXJjZUZpbGUuaXNEZWNsYXJhdGlvbkZpbGUgfHxcbiAgICAgIGlzVGVzdEZpbGUoZmlsZW5hbWUsIHN0YXRlLCBub3JtYWxpemVkUm9vdClcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmRVc2FnZVN5bWJvbCA9IChub2RlOiB0cy5Ob2RlKTogdHMuU3ltYm9sIHwgdW5kZWZpbmVkID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgKHRzLmlzSWRlbnRpZmllcihub2RlKSB8fCB0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKG5vZGUpKSAmJlxuICAgICAgICAhaXNEZWNsYXJhdGlvbk5hbWUobm9kZSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSBnZXRVc2FnZVN5bWJvbChub2RlLCBjaGVja2VyKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgY2FuZGlkYXRlICE9PSB2b2lkIDAgJiZcbiAgICAgICAgICByZWxhdGVkU3ltYm9scy5zb21lKChzeW1ib2wpID0+IGlzU2FtZVN5bWJvbChzeW1ib2wsIGNhbmRpZGF0ZSkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNTdHJ1Y3R1cmFsUHJvcGVydHlSZWFkKG5vZGUsIGNoZWNrZXIsIG1lbWJlcikpIHtcbiAgICAgICAgICByZXR1cm4gbWVtYmVyLm1lbWJlclN5bWJvbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXNDb21wdXRlZE1lbWJlclJlYWQobm9kZSwgY2hlY2tlciwgbWVtYmVyLCByZWxhdGVkU3ltYm9scykgfHxcbiAgICAgICAgaXNDYWxsQXJndW1lbnRNZW1iZXIobm9kZSwgY2hlY2tlciwgbWVtYmVyKSB8fFxuICAgICAgICBpc09iamVjdENvbnRyYWN0SGFuZG9mZihub2RlLCBjaGVja2VyLCBtZW1iZXIpXG4gICAgICAgID8gbWVtYmVyLm1lbWJlclN5bWJvbFxuICAgICAgICA6IHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kVXNhZ2VTeW1ib2wpO1xuICAgIH07XG5cbiAgICBpZiAoZmluZFVzYWdlU3ltYm9sKHNvdXJjZUZpbGUpICE9PSB2b2lkIDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCB7IGhhc1Byb2R1Y3Rpb25Vc2FnZSB9O1xuIl19
@@ -0,0 +1,41 @@
1
+ import { ESLintUtils } from "@typescript-eslint/utils";
2
+ import * as ts from "typescript";
3
+ import type { NoUnusedExportsState } from "../no-unused-exports/types.js";
4
+ type ParserServices = ReturnType<typeof ESLintUtils.getParserServices>;
5
+ /**
6
+ * Collects unused direct public members from a linted source file.
7
+ * @param sourceFile Source file being linted.
8
+ * @param program TypeScript project program.
9
+ * @param state Normalized public API and test patterns.
10
+ * @param repoRoot Root directory used for glob matching.
11
+ * @param parserServices TypeScript and ESTree node maps.
12
+ * @returns Members outside the public API with no production use.
13
+ * @example
14
+ * ```typescript
15
+ * const unused = collectUnusedPublicMembers(sourceFile, program, state, repoRoot, services);
16
+ * ```
17
+ */
18
+ declare const collectUnusedPublicMembers: (sourceFile: ts.SourceFile, program: ts.Program, state: NoUnusedExportsState, repoRoot: string, parserServices: ParserServices) => import("./member-declaration-utilities.js").PublicMember[];
19
+ /**
20
+ * Finds the program source file matching an absolute lint filename.
21
+ * @param program TypeScript project program.
22
+ * @param filename Absolute filename to find.
23
+ * @returns Matching source file when it belongs to the program.
24
+ * @example
25
+ * ```typescript
26
+ * const sourceFile = getProgramSourceFile(program, context.filename);
27
+ * ```
28
+ */
29
+ declare const getProgramSourceFile: (program: ts.Program, filename: string) => ts.SourceFile | undefined;
30
+ /**
31
+ * Returns the absolute project root from the TypeScript program.
32
+ * @param program TypeScript project program.
33
+ * @returns Absolute TypeScript project root.
34
+ * @example
35
+ * ```typescript
36
+ * const projectRoot = getProjectRoot(program);
37
+ * ```
38
+ */
39
+ declare const getProjectRoot: (program: ts.Program) => string;
40
+ export { collectUnusedPublicMembers, getProgramSourceFile, getProjectRoot };
41
+ //# sourceMappingURL=member-utilities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-public-members/member-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AASvE,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAEvE;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,0BAA0B,GAC9B,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,CAAC,OAAO,EACnB,OAAO,oBAAoB,EAC3B,UAAU,MAAM,EAChB,gBAAgB,cAAc,4DAU/B,CAAC;AAEF;;;;;;;;;GASG;AACH,QAAA,MAAM,oBAAoB,GACxB,SAAS,EAAE,CAAC,OAAO,EACnB,UAAU,MAAM,KACf,EAAE,CAAC,UAAU,GAAG,SAOd,CAAC;AAEN;;;;;;;;GAQG;AACH,QAAA,MAAM,cAAc,GAAI,SAAS,EAAE,CAAC,OAAO,KAAG,MACD,CAAC;AAE9C,OAAO,EAAE,0BAA0B,EAAE,oBAAoB,EAAE,cAAc,EAAE,CAAC"}
@@ -0,0 +1,51 @@
1
+ import { ESLintUtils } from "@typescript-eslint/utils";
2
+ import path from "node:path";
3
+ import * as ts from "typescript";
4
+ import { collectPublicMembers } from "./member-declaration-utilities.js";
5
+ import { isPublicApiHost, isPublicApiMember, } from "./member-public-api-utilities.js";
6
+ import { hasProductionUsage } from "./member-usage-utilities.js";
7
+ /**
8
+ * Collects unused direct public members from a linted source file.
9
+ * @param sourceFile Source file being linted.
10
+ * @param program TypeScript project program.
11
+ * @param state Normalized public API and test patterns.
12
+ * @param repoRoot Root directory used for glob matching.
13
+ * @param parserServices TypeScript and ESTree node maps.
14
+ * @returns Members outside the public API with no production use.
15
+ * @example
16
+ * ```typescript
17
+ * const unused = collectUnusedPublicMembers(sourceFile, program, state, repoRoot, services);
18
+ * ```
19
+ */
20
+ const collectUnusedPublicMembers = (sourceFile, program, state, repoRoot, parserServices) => {
21
+ const checker = program.getTypeChecker();
22
+ return collectPublicMembers(sourceFile, checker, parserServices).filter((member) => !isPublicApiHost(program, state, repoRoot, member.hostSymbol) &&
23
+ !isPublicApiMember(program, state, repoRoot, member.memberSymbol) &&
24
+ !hasProductionUsage(program, state, repoRoot, member));
25
+ };
26
+ /**
27
+ * Finds the program source file matching an absolute lint filename.
28
+ * @param program TypeScript project program.
29
+ * @param filename Absolute filename to find.
30
+ * @returns Matching source file when it belongs to the program.
31
+ * @example
32
+ * ```typescript
33
+ * const sourceFile = getProgramSourceFile(program, context.filename);
34
+ * ```
35
+ */
36
+ const getProgramSourceFile = (program, filename) => program
37
+ .getSourceFiles()
38
+ .find((sourceFile) => path.resolve(sourceFile.fileName).toLowerCase() ===
39
+ path.resolve(filename).toLowerCase());
40
+ /**
41
+ * Returns the absolute project root from the TypeScript program.
42
+ * @param program TypeScript project program.
43
+ * @returns Absolute TypeScript project root.
44
+ * @example
45
+ * ```typescript
46
+ * const projectRoot = getProjectRoot(program);
47
+ * ```
48
+ */
49
+ const getProjectRoot = (program) => path.resolve(program.getCurrentDirectory());
50
+ export { collectUnusedPublicMembers, getProgramSourceFile, getProjectRoot };
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLXV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vYXJjaGl0ZWN0dXJlL25vLXVudXNlZC1wdWJsaWMtbWVtYmVycy9tZW1iZXItdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFJakMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUNMLGVBQWUsRUFDZixpQkFBaUIsR0FDbEIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUk5RDs7Ozs7Ozs7Ozs7O0dBWUc7QUFDSCxNQUFNLDBCQUEwQixHQUFHLENBQ2pDLFVBQXlCLEVBQ3pCLE9BQW1CLEVBQ25CLEtBQTJCLEVBQzNCLFFBQWdCLEVBQ2hCLGNBQThCLEVBQzlCLEVBQUU7SUFDRixNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7SUFFekMsT0FBTyxvQkFBb0IsQ0FBQyxVQUFVLEVBQUUsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLE1BQU0sQ0FDckUsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNULENBQUMsZUFBZSxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUM7UUFDN0QsQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDO1FBQ2pFLENBQUMsa0JBQWtCLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQ3hELENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLG9CQUFvQixHQUFHLENBQzNCLE9BQW1CLEVBQ25CLFFBQWdCLEVBQ1csRUFBRSxDQUM3QixPQUFPO0tBQ0osY0FBYyxFQUFFO0tBQ2hCLElBQUksQ0FDSCxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQ2IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFO0lBQy9DLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQ3ZDLENBQUM7QUFFTjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sY0FBYyxHQUFHLENBQUMsT0FBbUIsRUFBVSxFQUFFLENBQ3JELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLG1CQUFtQixFQUFFLENBQUMsQ0FBQztBQUU5QyxPQUFPLEVBQUUsMEJBQTBCLEVBQUUsb0JBQW9CLEVBQUUsY0FBYyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBFU0xpbnRVdGlscyB9IGZyb20gXCJAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHNcIjtcbmltcG9ydCBwYXRoIGZyb20gXCJub2RlOnBhdGhcIjtcbmltcG9ydCAqIGFzIHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbmltcG9ydCB0eXBlIHsgTm9VbnVzZWRFeHBvcnRzU3RhdGUgfSBmcm9tIFwiLi4vbm8tdW51c2VkLWV4cG9ydHMvdHlwZXNcIjtcblxuaW1wb3J0IHsgY29sbGVjdFB1YmxpY01lbWJlcnMgfSBmcm9tIFwiLi9tZW1iZXItZGVjbGFyYXRpb24tdXRpbGl0aWVzXCI7XG5pbXBvcnQge1xuICBpc1B1YmxpY0FwaUhvc3QsXG4gIGlzUHVibGljQXBpTWVtYmVyLFxufSBmcm9tIFwiLi9tZW1iZXItcHVibGljLWFwaS11dGlsaXRpZXNcIjtcbmltcG9ydCB7IGhhc1Byb2R1Y3Rpb25Vc2FnZSB9IGZyb20gXCIuL21lbWJlci11c2FnZS11dGlsaXRpZXNcIjtcblxudHlwZSBQYXJzZXJTZXJ2aWNlcyA9IFJldHVyblR5cGU8dHlwZW9mIEVTTGludFV0aWxzLmdldFBhcnNlclNlcnZpY2VzPjtcblxuLyoqXG4gKiBDb2xsZWN0cyB1bnVzZWQgZGlyZWN0IHB1YmxpYyBtZW1iZXJzIGZyb20gYSBsaW50ZWQgc291cmNlIGZpbGUuXG4gKiBAcGFyYW0gc291cmNlRmlsZSBTb3VyY2UgZmlsZSBiZWluZyBsaW50ZWQuXG4gKiBAcGFyYW0gcHJvZ3JhbSBUeXBlU2NyaXB0IHByb2plY3QgcHJvZ3JhbS5cbiAqIEBwYXJhbSBzdGF0ZSBOb3JtYWxpemVkIHB1YmxpYyBBUEkgYW5kIHRlc3QgcGF0dGVybnMuXG4gKiBAcGFyYW0gcmVwb1Jvb3QgUm9vdCBkaXJlY3RvcnkgdXNlZCBmb3IgZ2xvYiBtYXRjaGluZy5cbiAqIEBwYXJhbSBwYXJzZXJTZXJ2aWNlcyBUeXBlU2NyaXB0IGFuZCBFU1RyZWUgbm9kZSBtYXBzLlxuICogQHJldHVybnMgTWVtYmVycyBvdXRzaWRlIHRoZSBwdWJsaWMgQVBJIHdpdGggbm8gcHJvZHVjdGlvbiB1c2UuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdW51c2VkID0gY29sbGVjdFVudXNlZFB1YmxpY01lbWJlcnMoc291cmNlRmlsZSwgcHJvZ3JhbSwgc3RhdGUsIHJlcG9Sb290LCBzZXJ2aWNlcyk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY29sbGVjdFVudXNlZFB1YmxpY01lbWJlcnMgPSAoXG4gIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsXG4gIHByb2dyYW06IHRzLlByb2dyYW0sXG4gIHN0YXRlOiBOb1VudXNlZEV4cG9ydHNTdGF0ZSxcbiAgcmVwb1Jvb3Q6IHN0cmluZyxcbiAgcGFyc2VyU2VydmljZXM6IFBhcnNlclNlcnZpY2VzLFxuKSA9PiB7XG4gIGNvbnN0IGNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG5cbiAgcmV0dXJuIGNvbGxlY3RQdWJsaWNNZW1iZXJzKHNvdXJjZUZpbGUsIGNoZWNrZXIsIHBhcnNlclNlcnZpY2VzKS5maWx0ZXIoXG4gICAgKG1lbWJlcikgPT5cbiAgICAgICFpc1B1YmxpY0FwaUhvc3QocHJvZ3JhbSwgc3RhdGUsIHJlcG9Sb290LCBtZW1iZXIuaG9zdFN5bWJvbCkgJiZcbiAgICAgICFpc1B1YmxpY0FwaU1lbWJlcihwcm9ncmFtLCBzdGF0ZSwgcmVwb1Jvb3QsIG1lbWJlci5tZW1iZXJTeW1ib2wpICYmXG4gICAgICAhaGFzUHJvZHVjdGlvblVzYWdlKHByb2dyYW0sIHN0YXRlLCByZXBvUm9vdCwgbWVtYmVyKSxcbiAgKTtcbn07XG5cbi8qKlxuICogRmluZHMgdGhlIHByb2dyYW0gc291cmNlIGZpbGUgbWF0Y2hpbmcgYW4gYWJzb2x1dGUgbGludCBmaWxlbmFtZS5cbiAqIEBwYXJhbSBwcm9ncmFtIFR5cGVTY3JpcHQgcHJvamVjdCBwcm9ncmFtLlxuICogQHBhcmFtIGZpbGVuYW1lIEFic29sdXRlIGZpbGVuYW1lIHRvIGZpbmQuXG4gKiBAcmV0dXJucyBNYXRjaGluZyBzb3VyY2UgZmlsZSB3aGVuIGl0IGJlbG9uZ3MgdG8gdGhlIHByb2dyYW0uXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc291cmNlRmlsZSA9IGdldFByb2dyYW1Tb3VyY2VGaWxlKHByb2dyYW0sIGNvbnRleHQuZmlsZW5hbWUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFByb2dyYW1Tb3VyY2VGaWxlID0gKFxuICBwcm9ncmFtOiB0cy5Qcm9ncmFtLFxuICBmaWxlbmFtZTogc3RyaW5nLFxuKTogdHMuU291cmNlRmlsZSB8IHVuZGVmaW5lZCA9PlxuICBwcm9ncmFtXG4gICAgLmdldFNvdXJjZUZpbGVzKClcbiAgICAuZmluZChcbiAgICAgIChzb3VyY2VGaWxlKSA9PlxuICAgICAgICBwYXRoLnJlc29sdmUoc291cmNlRmlsZS5maWxlTmFtZSkudG9Mb3dlckNhc2UoKSA9PT1cbiAgICAgICAgcGF0aC5yZXNvbHZlKGZpbGVuYW1lKS50b0xvd2VyQ2FzZSgpLFxuICAgICk7XG5cbi8qKlxuICogUmV0dXJucyB0aGUgYWJzb2x1dGUgcHJvamVjdCByb290IGZyb20gdGhlIFR5cGVTY3JpcHQgcHJvZ3JhbS5cbiAqIEBwYXJhbSBwcm9ncmFtIFR5cGVTY3JpcHQgcHJvamVjdCBwcm9ncmFtLlxuICogQHJldHVybnMgQWJzb2x1dGUgVHlwZVNjcmlwdCBwcm9qZWN0IHJvb3QuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcHJvamVjdFJvb3QgPSBnZXRQcm9qZWN0Um9vdChwcm9ncmFtKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRQcm9qZWN0Um9vdCA9IChwcm9ncmFtOiB0cy5Qcm9ncmFtKTogc3RyaW5nID0+XG4gIHBhdGgucmVzb2x2ZShwcm9ncmFtLmdldEN1cnJlbnREaXJlY3RvcnkoKSk7XG5cbmV4cG9ydCB7IGNvbGxlY3RVbnVzZWRQdWJsaWNNZW1iZXJzLCBnZXRQcm9ncmFtU291cmNlRmlsZSwgZ2V0UHJvamVjdFJvb3QgfTtcbiJdfQ==
@@ -0,0 +1,5 @@
1
+ import type { Rule } from "eslint";
2
+ /** ESLint rule flagging public members unused by production code. */
3
+ declare const noUnusedPublicMembersRule: Rule.RuleModule;
4
+ export { noUnusedPublicMembersRule };
5
+ //# sourceMappingURL=rule.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-public-members/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAiBnC,qEAAqE;AACrE,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UAsFrC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
@@ -0,0 +1,78 @@
1
+ import { ESLintUtils } from "@typescript-eslint/utils";
2
+ import { DEFAULT_PUBLIC_API_FILES, DEFAULT_TEST_FILE_PATTERNS, getOptions, isLintableFilename, isTestFile, } from "../no-unused-exports/no-unused-exports-options.js";
3
+ import { collectUnusedPublicMembers, getProgramSourceFile, getProjectRoot, } from "./member-utilities.js";
4
+ /** ESLint rule flagging public members unused by production code. */
5
+ const noUnusedPublicMembersRule = {
6
+ create(context) {
7
+ if (!isLintableFilename(context.filename)) {
8
+ return {};
9
+ }
10
+ let parserServices;
11
+ try {
12
+ parserServices = ESLintUtils.getParserServices(context);
13
+ }
14
+ catch {
15
+ return {};
16
+ }
17
+ const program = parserServices.program;
18
+ const state = getOptions(context.options);
19
+ const projectRoot = getProjectRoot(program);
20
+ if (isTestFile(context.filename, state, projectRoot)) {
21
+ return {};
22
+ }
23
+ return {
24
+ Program() {
25
+ const sourceFile = getProgramSourceFile(program, context.filename);
26
+ if (sourceFile === void 0) {
27
+ return;
28
+ }
29
+ for (const member of collectUnusedPublicMembers(sourceFile, program, state, projectRoot, parserServices)) {
30
+ context.report({
31
+ data: { hostName: member.hostName, memberName: member.memberName },
32
+ messageId: "unusedPublicMember",
33
+ node: member.reportNode,
34
+ });
35
+ }
36
+ },
37
+ };
38
+ },
39
+ meta: {
40
+ defaultOptions: [
41
+ {
42
+ publicApiFiles: [...DEFAULT_PUBLIC_API_FILES],
43
+ testFilePatterns: [...DEFAULT_TEST_FILE_PATTERNS],
44
+ },
45
+ ],
46
+ docs: {
47
+ description: "Disallow public members that are unused by production code unless their host is part of the public API.",
48
+ recommended: false,
49
+ url: "https://github.com/parloti/eslint-plugin/blob/main/docs/rules/no-unused-public-members.md",
50
+ },
51
+ messages: {
52
+ unusedPublicMember: "Member '{{memberName}}' of '{{hostName}}' is never used by production code; remove it or make it private.",
53
+ },
54
+ schema: [
55
+ {
56
+ additionalProperties: false,
57
+ properties: {
58
+ publicApiFiles: {
59
+ description: "File globs that define public API export surfaces.",
60
+ items: { type: "string" },
61
+ minItems: 1,
62
+ type: "array",
63
+ },
64
+ testFilePatterns: {
65
+ description: "File globs treated as tests when classifying member consumers.",
66
+ items: { type: "string" },
67
+ minItems: 1,
68
+ type: "array",
69
+ },
70
+ },
71
+ type: "object",
72
+ },
73
+ ],
74
+ type: "problem",
75
+ },
76
+ };
77
+ export { noUnusedPublicMembersRule };
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vYXJjaGl0ZWN0dXJlL25vLXVudXNlZC1wdWJsaWMtbWVtYmVycy9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RCxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDBCQUEwQixFQUMxQixVQUFVLEVBQ1Ysa0JBQWtCLEVBQ2xCLFVBQVUsR0FDWCxNQUFNLGdEQUFnRCxDQUFDO0FBQ3hELE9BQU8sRUFDTCwwQkFBMEIsRUFDMUIsb0JBQW9CLEVBQ3BCLGNBQWMsR0FDZixNQUFNLG9CQUFvQixDQUFDO0FBRTVCLHFFQUFxRTtBQUNyRSxNQUFNLHlCQUF5QixHQUFvQjtJQUNqRCxNQUFNLENBQUMsT0FBeUI7UUFDOUIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQzFDLE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELElBQUksY0FBZ0UsQ0FBQztRQUVyRSxJQUFJLENBQUM7WUFDSCxjQUFjLEdBQUcsV0FBVyxDQUFDLGlCQUFpQixDQUFDLE9BQWdCLENBQUMsQ0FBQztRQUNuRSxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ1AsT0FBTyxFQUFFLENBQUM7UUFDWixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQztRQUN2QyxNQUFNLEtBQUssR0FBRyxVQUFVLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzFDLE1BQU0sV0FBVyxHQUFHLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUU1QyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLEtBQUssRUFBRSxXQUFXLENBQUMsRUFBRSxDQUFDO1lBQ3JELE9BQU8sRUFBRSxDQUFDO1FBQ1osQ0FBQztRQUVELE9BQU87WUFDTCxPQUFPO2dCQUNMLE1BQU0sVUFBVSxHQUFHLG9CQUFvQixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBRW5FLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7b0JBQzFCLE9BQU87Z0JBQ1QsQ0FBQztnQkFFRCxLQUFLLE1BQU0sTUFBTSxJQUFJLDBCQUEwQixDQUM3QyxVQUFVLEVBQ1YsT0FBTyxFQUNQLEtBQUssRUFDTCxXQUFXLEVBQ1gsY0FBYyxDQUNmLEVBQUUsQ0FBQztvQkFDRixPQUFPLENBQUMsTUFBTSxDQUFDO3dCQUNiLElBQUksRUFBRSxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUFFLFVBQVUsRUFBRSxNQUFNLENBQUMsVUFBVSxFQUFFO3dCQUNsRSxTQUFTLEVBQUUsb0JBQW9CO3dCQUMvQixJQUFJLEVBQUUsTUFBTSxDQUFDLFVBQVU7cUJBQ3hCLENBQUMsQ0FBQztnQkFDTCxDQUFDO1lBQ0gsQ0FBQztTQUNGLENBQUM7SUFDSixDQUFDO0lBQ0QsSUFBSSxFQUFFO1FBQ0osY0FBYyxFQUFFO1lBQ2Q7Z0JBQ0UsY0FBYyxFQUFFLENBQUMsR0FBRyx3QkFBd0IsQ0FBQztnQkFDN0MsZ0JBQWdCLEVBQUUsQ0FBQyxHQUFHLDBCQUEwQixDQUFDO2FBQ2xEO1NBQ0Y7UUFDRCxJQUFJLEVBQUU7WUFDSixXQUFXLEVBQ1QseUdBQXlHO1lBQzNHLFdBQVcsRUFBRSxLQUFLO1lBQ2xCLEdBQUcsRUFBRSwyRkFBMkY7U0FDakc7UUFDRCxRQUFRLEVBQUU7WUFDUixrQkFBa0IsRUFDaEIsMkdBQTJHO1NBQzlHO1FBQ0QsTUFBTSxFQUFFO1lBQ047Z0JBQ0Usb0JBQW9CLEVBQUUsS0FBSztnQkFDM0IsVUFBVSxFQUFFO29CQUNWLGNBQWMsRUFBRTt3QkFDZCxXQUFXLEVBQUUsb0RBQW9EO3dCQUNqRSxLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFO3dCQUN6QixRQUFRLEVBQUUsQ0FBQzt3QkFDWCxJQUFJLEVBQUUsT0FBTztxQkFDZDtvQkFDRCxnQkFBZ0IsRUFBRTt3QkFDaEIsV0FBVyxFQUNULGdFQUFnRTt3QkFDbEUsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTt3QkFDekIsUUFBUSxFQUFFLENBQUM7d0JBQ1gsSUFBSSxFQUFFLE9BQU87cUJBQ2Q7aUJBQ0Y7Z0JBQ0QsSUFBSSxFQUFFLFFBQVE7YUFDZjtTQUNGO1FBQ0QsSUFBSSxFQUFFLFNBQVM7S0FDaEI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB7IEVTTGludFV0aWxzIH0gZnJvbSBcIkB0eXBlc2NyaXB0LWVzbGludC91dGlsc1wiO1xuXG5pbXBvcnQge1xuICBERUZBVUxUX1BVQkxJQ19BUElfRklMRVMsXG4gIERFRkFVTFRfVEVTVF9GSUxFX1BBVFRFUk5TLFxuICBnZXRPcHRpb25zLFxuICBpc0xpbnRhYmxlRmlsZW5hbWUsXG4gIGlzVGVzdEZpbGUsXG59IGZyb20gXCIuLi9uby11bnVzZWQtZXhwb3J0cy9uby11bnVzZWQtZXhwb3J0cy1vcHRpb25zXCI7XG5pbXBvcnQge1xuICBjb2xsZWN0VW51c2VkUHVibGljTWVtYmVycyxcbiAgZ2V0UHJvZ3JhbVNvdXJjZUZpbGUsXG4gIGdldFByb2plY3RSb290LFxufSBmcm9tIFwiLi9tZW1iZXItdXRpbGl0aWVzXCI7XG5cbi8qKiBFU0xpbnQgcnVsZSBmbGFnZ2luZyBwdWJsaWMgbWVtYmVycyB1bnVzZWQgYnkgcHJvZHVjdGlvbiBjb2RlLiAqL1xuY29uc3Qgbm9VbnVzZWRQdWJsaWNNZW1iZXJzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGUoY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCk6IFJ1bGUuUnVsZUxpc3RlbmVyIHtcbiAgICBpZiAoIWlzTGludGFibGVGaWxlbmFtZShjb250ZXh0LmZpbGVuYW1lKSkge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGxldCBwYXJzZXJTZXJ2aWNlczogUmV0dXJuVHlwZTx0eXBlb2YgRVNMaW50VXRpbHMuZ2V0UGFyc2VyU2VydmljZXM+O1xuXG4gICAgdHJ5IHtcbiAgICAgIHBhcnNlclNlcnZpY2VzID0gRVNMaW50VXRpbHMuZ2V0UGFyc2VyU2VydmljZXMoY29udGV4dCBhcyBuZXZlcik7XG4gICAgfSBjYXRjaCB7XG4gICAgICByZXR1cm4ge307XG4gICAgfVxuXG4gICAgY29uc3QgcHJvZ3JhbSA9IHBhcnNlclNlcnZpY2VzLnByb2dyYW07XG4gICAgY29uc3Qgc3RhdGUgPSBnZXRPcHRpb25zKGNvbnRleHQub3B0aW9ucyk7XG4gICAgY29uc3QgcHJvamVjdFJvb3QgPSBnZXRQcm9qZWN0Um9vdChwcm9ncmFtKTtcblxuICAgIGlmIChpc1Rlc3RGaWxlKGNvbnRleHQuZmlsZW5hbWUsIHN0YXRlLCBwcm9qZWN0Um9vdCkpIHtcbiAgICAgIHJldHVybiB7fTtcbiAgICB9XG5cbiAgICByZXR1cm4ge1xuICAgICAgUHJvZ3JhbSgpOiB2b2lkIHtcbiAgICAgICAgY29uc3Qgc291cmNlRmlsZSA9IGdldFByb2dyYW1Tb3VyY2VGaWxlKHByb2dyYW0sIGNvbnRleHQuZmlsZW5hbWUpO1xuXG4gICAgICAgIGlmIChzb3VyY2VGaWxlID09PSB2b2lkIDApIHtcbiAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICBmb3IgKGNvbnN0IG1lbWJlciBvZiBjb2xsZWN0VW51c2VkUHVibGljTWVtYmVycyhcbiAgICAgICAgICBzb3VyY2VGaWxlLFxuICAgICAgICAgIHByb2dyYW0sXG4gICAgICAgICAgc3RhdGUsXG4gICAgICAgICAgcHJvamVjdFJvb3QsXG4gICAgICAgICAgcGFyc2VyU2VydmljZXMsXG4gICAgICAgICkpIHtcbiAgICAgICAgICBjb250ZXh0LnJlcG9ydCh7XG4gICAgICAgICAgICBkYXRhOiB7IGhvc3ROYW1lOiBtZW1iZXIuaG9zdE5hbWUsIG1lbWJlck5hbWU6IG1lbWJlci5tZW1iZXJOYW1lIH0sXG4gICAgICAgICAgICBtZXNzYWdlSWQ6IFwidW51c2VkUHVibGljTWVtYmVyXCIsXG4gICAgICAgICAgICBub2RlOiBtZW1iZXIucmVwb3J0Tm9kZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSxcbiAgICB9O1xuICB9LFxuICBtZXRhOiB7XG4gICAgZGVmYXVsdE9wdGlvbnM6IFtcbiAgICAgIHtcbiAgICAgICAgcHVibGljQXBpRmlsZXM6IFsuLi5ERUZBVUxUX1BVQkxJQ19BUElfRklMRVNdLFxuICAgICAgICB0ZXN0RmlsZVBhdHRlcm5zOiBbLi4uREVGQVVMVF9URVNUX0ZJTEVfUEFUVEVSTlNdLFxuICAgICAgfSxcbiAgICBdLFxuICAgIGRvY3M6IHtcbiAgICAgIGRlc2NyaXB0aW9uOlxuICAgICAgICBcIkRpc2FsbG93IHB1YmxpYyBtZW1iZXJzIHRoYXQgYXJlIHVudXNlZCBieSBwcm9kdWN0aW9uIGNvZGUgdW5sZXNzIHRoZWlyIGhvc3QgaXMgcGFydCBvZiB0aGUgcHVibGljIEFQSS5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL25vLXVudXNlZC1wdWJsaWMtbWVtYmVycy5tZFwiLFxuICAgIH0sXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHVudXNlZFB1YmxpY01lbWJlcjpcbiAgICAgICAgXCJNZW1iZXIgJ3t7bWVtYmVyTmFtZX19JyBvZiAne3tob3N0TmFtZX19JyBpcyBuZXZlciB1c2VkIGJ5IHByb2R1Y3Rpb24gY29kZTsgcmVtb3ZlIGl0IG9yIG1ha2UgaXQgcHJpdmF0ZS5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW1xuICAgICAge1xuICAgICAgICBhZGRpdGlvbmFsUHJvcGVydGllczogZmFsc2UsXG4gICAgICAgIHByb3BlcnRpZXM6IHtcbiAgICAgICAgICBwdWJsaWNBcGlGaWxlczoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246IFwiRmlsZSBnbG9icyB0aGF0IGRlZmluZSBwdWJsaWMgQVBJIGV4cG9ydCBzdXJmYWNlcy5cIixcbiAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgdGVzdEZpbGVQYXR0ZXJuczoge1xuICAgICAgICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgICAgICAgIFwiRmlsZSBnbG9icyB0cmVhdGVkIGFzIHRlc3RzIHdoZW4gY2xhc3NpZnlpbmcgbWVtYmVyIGNvbnN1bWVycy5cIixcbiAgICAgICAgICAgIGl0ZW1zOiB7IHR5cGU6IFwic3RyaW5nXCIgfSxcbiAgICAgICAgICAgIG1pbkl0ZW1zOiAxLFxuICAgICAgICAgICAgdHlwZTogXCJhcnJheVwiLFxuICAgICAgICAgIH0sXG4gICAgICAgIH0sXG4gICAgICAgIHR5cGU6IFwib2JqZWN0XCIsXG4gICAgICB9LFxuICAgIF0sXG4gICAgdHlwZTogXCJwcm9ibGVtXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBub1VudXNlZFB1YmxpY01lbWJlcnNSdWxlIH07XG4iXX0=
@@ -1 +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"}
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;AAyI/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,OAYF,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"}
@@ -50,13 +50,11 @@ const getLineSeparator = (sourceText) => sourceText.includes("\r\n") ? "\r\n" :
50
50
  */
51
51
  const isLoopInitializer = (node) => {
52
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;
53
+ return parent?.type === "ForStatement"
54
+ ? parent.init === node
55
+ : parent !== void 0 &&
56
+ loopParentTypes.has(parent.type) &&
57
+ parent.left === node;
60
58
  };
61
59
  /**
62
60
  * Determines whether a declaration is wrapped in an export statement.
@@ -169,17 +167,13 @@ const getRangedDeclarations = (declarations) => {
169
167
  * ```
170
168
  */
171
169
  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);
170
+ const isFixable = hasFixData(node) &&
171
+ hasFixableDeclarationKind(node) &&
172
+ !isTypeScriptAmbientDeclaration(node);
173
+ return (isFixable &&
174
+ !isLoopInitializer(node) &&
175
+ !isWrappedExport(node) &&
176
+ !hasSeparatorComment(declarations, sourceText));
183
177
  };
184
178
  /**
185
179
  * Converts declarators into separate declaration statements.
@@ -201,4 +195,4 @@ const buildReplacement = (node, declarations, sourceCode) => {
201
195
  .join(`${lineSeparator}${indent}`);
202
196
  };
203
197
  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=
198
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS11dGlsaXRpZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvZG9tYWluL2NvcmUvbm8tbXVsdGlwbGUtZGVjbGFyYXRvcnMvcnVsZS11dGlsaXRpZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBWUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFFL0Msa0RBQWtEO0FBQ2xELE1BQU0sY0FBYyxHQUFHLFlBQVksQ0FBQztBQUNwQyw2RUFBNkU7QUFDN0UsTUFBTSx1QkFBdUIsR0FBRyxJQUFJLEdBQUcsQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUMsQ0FBQztBQUNqRSxtRUFBbUU7QUFDbkUsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLENBQUM7SUFDOUIscUJBQXFCO0lBQ3JCLGdCQUFnQjtJQUNoQixnQkFBZ0I7Q0FDakIsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLE9BQXlCLEVBQW9CLEVBQUUsQ0FDcEUsT0FBTyxDQUFDLFVBQXlDLENBQUM7QUFFcEQ7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUFDLFVBQTRCLEVBQVUsRUFBRSxDQUM3RCxPQUFPLFVBQVUsQ0FBQyxJQUFJLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLENBQUM7QUFFL0U7Ozs7Ozs7O0dBUUc7QUFDSCxNQUFNLGdCQUFnQixHQUFHLENBQUMsVUFBa0IsRUFBVSxFQUFFLENBQ3RELFVBQVUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0FBRTlDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUFDLElBQTZC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QyxVQUFVLENBQUMsQ0FBQztJQUVuRCxPQUFPLFlBQVk7U0FDaEIsR0FBRyxDQUFDLENBQUMsV0FBVyxFQUFFLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO1NBQ3hFLElBQUksQ0FBQyxHQUFHLGFBQWEsR0FBRyxNQUFNLEVBQUUsQ0FBQyxDQUFDO0FBQ3ZDLENBQUMsQ0FBQztBQUVGLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLHFCQUFxQixFQUNyQixhQUFhLEVBQ2IsYUFBYSxHQUNkLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB0eXBlIHtcbiAgRml4YWJsZVZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLFxuICBGb3JJbk9yT2ZTdGF0ZW1lbnROb2RlLFxuICBGb3JTdGF0ZW1lbnROb2RlLFxuICBSYW5nZWRWYXJpYWJsZURlY2xhcmF0b3JOb2RlLFxuICBTb3VyY2VDb2RlQWNjZXNzLFxuICBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcbiAgVmFyaWFibGVEZWNsYXJhdG9yTm9kZSxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHsgaGFzRml4RGF0YSwgaGFzUmFuZ2UgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKiogTWF0Y2hlcyBjb21tZW50IHN5bnRheCBiZXR3ZWVuIGRlY2xhcmF0b3JzLiAqL1xuY29uc3QgY29tbWVudFBhdHRlcm4gPSAvXFwvXFwvfFxcL1xcKi91O1xuLyoqIERlY2xhcmF0aW9uIGtpbmRzIHRoYXQgY2FuIGJlIHNhZmVseSBzcGxpdCBpbnRvIHN0YW5kYWxvbmUgc3RhdGVtZW50cy4gKi9cbmNvbnN0IGZpeGFibGVEZWNsYXJhdGlvbktpbmRzID0gbmV3IFNldChbXCJjb25zdFwiLCBcImxldFwiLCBcInZhclwiXSk7XG4vKiogTG9vcCBwYXJlbnQgdHlwZXMgd2hvc2UgaW5pdGlhbGl6ZXJzIGNhbm5vdCBiZSBzYWZlbHkgc3BsaXQuICovXG5jb25zdCBsb29wUGFyZW50VHlwZXMgPSBuZXcgU2V0KFtcbiAgXCJGb3JBd2FpdE9mU3RhdGVtZW50XCIsXG4gIFwiRm9ySW5TdGF0ZW1lbnRcIixcbiAgXCJGb3JPZlN0YXRlbWVudFwiLFxuXSk7XG5cbi8qKlxuICogR2V0cyB0aGUgc291cmNlIGFjY2VzcyB3cmFwcGVyIGZyb20gdGhlIEVTTGludCBjb250ZXh0LlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEByZXR1cm5zIFNvdXJjZSBhY2Nlc3MgaGVscGVycyB1c2VkIGJ5IHRoZSBmaXhlci5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzb3VyY2VDb2RlID0gZ2V0U291cmNlQ29kZShjb250ZXh0KTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRTb3VyY2VDb2RlID0gKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBTb3VyY2VDb2RlQWNjZXNzID0+XG4gIGNvbnRleHQuc291cmNlQ29kZSBhcyB1bmtub3duIGFzIFNvdXJjZUNvZGVBY2Nlc3M7XG5cbi8qKlxuICogUmVhZHMgdGhlIGZ1bGwgc291cmNlIHRleHQgZm9yIHRoZSBhY3RpdmUgZmlsZS5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIFNvdXJjZSBhY2Nlc3Mgd3JhcHBlci5cbiAqIEByZXR1cm5zIEZ1bGwgc291cmNlIHRleHQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3Qgc291cmNlVGV4dCA9IGdldFNvdXJjZVRleHQoc291cmNlQ29kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0U291cmNlVGV4dCA9IChzb3VyY2VDb2RlOiBTb3VyY2VDb2RlQWNjZXNzKTogc3RyaW5nID0+XG4gIHR5cGVvZiBzb3VyY2VDb2RlLnRleHQgPT09IFwic3RyaW5nXCIgPyBzb3VyY2VDb2RlLnRleHQgOiBzb3VyY2VDb2RlLmdldFRleHQoKTtcblxuLyoqXG4gKiBHZXRzIHRoZSBsaW5lIHNlcGFyYXRvciBzdHlsZSB1c2VkIGJ5IHRoZSBjdXJyZW50IHNvdXJjZSBmaWxlLlxuICogQHBhcmFtIHNvdXJjZVRleHQgRnVsbCBzb3VyY2UgdGV4dC5cbiAqIEByZXR1cm5zIEZpbGUtbmF0aXZlIGxpbmUgc2VwYXJhdG9yIHNlcXVlbmNlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGxpbmVTZXBhcmF0b3IgPSBnZXRMaW5lU2VwYXJhdG9yKFwiY29uc3QgYSA9IDE7XFxyXFxuY29uc3QgYiA9IDI7XCIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldExpbmVTZXBhcmF0b3IgPSAoc291cmNlVGV4dDogc3RyaW5nKTogc3RyaW5nID0+XG4gIHNvdXJjZVRleHQuaW5jbHVkZXMoXCJcXHJcXG5cIikgPyBcIlxcclxcblwiIDogXCJcXG5cIjtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBkZWNsYXJhdGlvbiBpcyB1c2VkIGFzIGEgbG9vcCBpbml0aWFsaXplci5cbiAqIEBwYXJhbSBub2RlIERlY2xhcmF0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGRlY2xhcmF0aW9uIGlzIGF0dGFjaGVkIHRvIGEgbG9vcCBpbml0aWFsaXplci5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBpbkxvb3AgPSBpc0xvb3BJbml0aWFsaXplcihub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc0xvb3BJbml0aWFsaXplciA9IChub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSk6IGJvb2xlYW4gPT4ge1xuICBjb25zdCB7IHBhcmVudCB9ID0gbm9kZTtcblxuICByZXR1cm4gcGFyZW50Py50eXBlID09PSBcIkZvclN0YXRlbWVudFwiXG4gICAgPyAocGFyZW50IGFzIEZvclN0YXRlbWVudE5vZGUpLmluaXQgPT09IG5vZGVcbiAgICA6IHBhcmVudCAhPT0gdm9pZCAwICYmXG4gICAgICAgIGxvb3BQYXJlbnRUeXBlcy5oYXMocGFyZW50LnR5cGUpICYmXG4gICAgICAgIChwYXJlbnQgYXMgRm9ySW5Pck9mU3RhdGVtZW50Tm9kZSkubGVmdCA9PT0gbm9kZTtcbn07XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZGVjbGFyYXRpb24gaXMgd3JhcHBlZCBpbiBhbiBleHBvcnQgc3RhdGVtZW50LlxuICogQHBhcmFtIG5vZGUgRGVjbGFyYXRpb24gbm9kZSB0byBpbnNwZWN0LlxuICogQHJldHVybnMgV2hldGhlciB0aGUgZGVjbGFyYXRpb24gaXMgZGlyZWN0bHkgZXhwb3J0ZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZXhwb3J0ZWQgPSBpc1dyYXBwZWRFeHBvcnQobm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgaXNXcmFwcGVkRXhwb3J0ID0gKG5vZGU6IFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKTogYm9vbGVhbiA9PlxuICBub2RlLnBhcmVudD8udHlwZSA9PT0gXCJFeHBvcnREZWZhdWx0RGVjbGFyYXRpb25cIiB8fFxuICBub2RlLnBhcmVudD8udHlwZSA9PT0gXCJFeHBvcnROYW1lZERlY2xhcmF0aW9uXCI7XG5cbi8qKlxuICogRGV0ZXJtaW5lcyB3aGV0aGVyIGEgZGVjbGFyYXRpb24gaXMgYW1iaWVudCBpbiBUeXBlU2NyaXB0IHNvdXJjZS5cbiAqIEBwYXJhbSBub2RlIERlY2xhcmF0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGRlY2xhcmF0aW9uIGlzIG1hcmtlZCB3aXRoIGBkZWNsYXJlYC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBhbWJpZW50ID0gaXNUeXBlU2NyaXB0QW1iaWVudERlY2xhcmF0aW9uKG5vZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzVHlwZVNjcmlwdEFtYmllbnREZWNsYXJhdGlvbiA9IChcbiAgbm9kZTogVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4pOiBib29sZWFuID0+IG5vZGUuZGVjbGFyZSA9PT0gdHJ1ZTtcblxuLyoqXG4gKiBEZXRlcm1pbmVzIHdoZXRoZXIgYSBkZWNsYXJhdGlvbiBraW5kIGlzIHNhZmUgdG8gcmV3cml0ZS5cbiAqIEBwYXJhbSBub2RlIERlY2xhcmF0aW9uIG5vZGUgdG8gaW5zcGVjdC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGRlY2xhcmF0aW9uIGtpbmQgc3VwcG9ydHMgY29uc2VydmF0aXZlIHNwbGl0IGZpeGVzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHNhZmVLaW5kID0gaGFzRml4YWJsZURlY2xhcmF0aW9uS2luZChub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBoYXNGaXhhYmxlRGVjbGFyYXRpb25LaW5kID0gKG5vZGU6IFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlKTogYm9vbGVhbiA9PlxuICBoYXNGaXhEYXRhKG5vZGUpICYmIGZpeGFibGVEZWNsYXJhdGlvbktpbmRzLmhhcyhub2RlLmtpbmQpO1xuXG4vKipcbiAqIEdldHMgdGhlIGluZGVudGF0aW9uIGZvciB0aGUgbGluZSBjb250YWluaW5nIGEgZGVjbGFyYXRpb24uXG4gKiBAcGFyYW0gc291cmNlVGV4dCBGdWxsIHNvdXJjZSB0ZXh0LlxuICogQHBhcmFtIHN0YXJ0IFN0YXJ0IG9mZnNldCBvZiB0aGUgZGVjbGFyYXRpb24uXG4gKiBAcmV0dXJucyBMZWFkaW5nIGluZGVudGF0aW9uIGZvciB0aGUgZGVjbGFyYXRpb24gbGluZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBpbmRlbnQgPSBnZXRMaW5lSW5kZW50KFwiY29uc3QgYSA9IDE7XCIsIDApO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldExpbmVJbmRlbnQgPSAoc291cmNlVGV4dDogc3RyaW5nLCBzdGFydDogbnVtYmVyKTogc3RyaW5nID0+IHtcbiAgY29uc3QgbGluZVN0YXJ0ID0gc291cmNlVGV4dC5sYXN0SW5kZXhPZihcIlxcblwiLCBzdGFydCAtIDEpICsgMTtcbiAgY29uc3QgbGluZVByZWZpeCA9IHNvdXJjZVRleHQuc2xpY2UobGluZVN0YXJ0LCBzdGFydCk7XG4gIGxldCBpbmRlbnRMZW5ndGggPSAwO1xuXG4gIHdoaWxlIChpbmRlbnRMZW5ndGggPCBsaW5lUHJlZml4Lmxlbmd0aCkge1xuICAgIGNvbnN0IGN1cnJlbnRDaGFyYWN0ZXIgPSBsaW5lUHJlZml4W2luZGVudExlbmd0aF07XG5cbiAgICBpZiAoY3VycmVudENoYXJhY3RlciAhPT0gXCJcXHRcIiAmJiBjdXJyZW50Q2hhcmFjdGVyICE9PSBcIiBcIikge1xuICAgICAgYnJlYWs7XG4gICAgfVxuXG4gICAgaW5kZW50TGVuZ3RoICs9IDE7XG4gIH1cblxuICByZXR1cm4gbGluZVByZWZpeC5zbGljZSgwLCBpbmRlbnRMZW5ndGgpO1xufTtcblxuLyoqXG4gKiBEZXRlY3RzIHdoZXRoZXIgY29tbWVudHMgYXBwZWFyIGJldHdlZW4gZGVjbGFyYXRvcnMuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb25zIERlY2xhcmF0b3JzIGZyb20gYSBzaW5nbGUgZGVjbGFyYXRpb24gc3RhdGVtZW50LlxuICogQHBhcmFtIHNvdXJjZVRleHQgRnVsbCBzb3VyY2UgdGV4dC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgY29tbWVudHMgYXBwZWFyIGJldHdlZW4gZGVjbGFyYXRvcnMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgYmxvY2tlZCA9IGhhc1NlcGFyYXRvckNvbW1lbnQoZGVjbGFyYXRpb25zLCBzb3VyY2VUZXh0KTtcbiAqIGBgYFxuICovXG5jb25zdCBoYXNTZXBhcmF0b3JDb21tZW50ID0gKFxuICBkZWNsYXJhdGlvbnM6IHJlYWRvbmx5IFZhcmlhYmxlRGVjbGFyYXRvck5vZGVbXSxcbiAgc291cmNlVGV4dDogc3RyaW5nLFxuKTogYm9vbGVhbiA9PiB7XG4gIGZvciAoY29uc3QgW2luZGV4LCBkZWNsYXJhdGlvbl0gb2YgZGVjbGFyYXRpb25zLmVudHJpZXMoKSkge1xuICAgIGNvbnN0IG5leHREZWNsYXJhdGlvbiA9IGRlY2xhcmF0aW9uc1tpbmRleCArIDFdO1xuXG4gICAgaWYgKG5leHREZWNsYXJhdGlvbiA9PT0gdm9pZCAwKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBpZiAoIWhhc1JhbmdlKGRlY2xhcmF0aW9uKSB8fCAhaGFzUmFuZ2UobmV4dERlY2xhcmF0aW9uKSkge1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfVxuXG4gICAgY29uc3Qgc2VwYXJhdG9yVGV4dCA9IHNvdXJjZVRleHQuc2xpY2UoXG4gICAgICBkZWNsYXJhdGlvbi5yYW5nZVsxXSxcbiAgICAgIG5leHREZWNsYXJhdGlvbi5yYW5nZVswXSxcbiAgICApO1xuXG4gICAgaWYgKGNvbW1lbnRQYXR0ZXJuLnRlc3Qoc2VwYXJhdG9yVGV4dCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbi8qKlxuICogQ29sbGVjdHMgcmFuZ2VkIGRlY2xhcmF0b3JzIHdoZW4gZXZlcnkgZGVjbGFyYXRvciBleHBvc2VzIGEgcmFuZ2UuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb25zIERlY2xhcmF0b3JzIGZyb20gdGhlIGRlY2xhcmF0aW9uIG5vZGUuXG4gKiBAcmV0dXJucyBEZWNsYXJhdG9ycyB3aXRoIGNvbmZpcm1lZCByYW5nZXMsIG9yIGB1bmRlZmluZWRgIHdoZW4gYW55IHJhbmdlIGlzIG1pc3NpbmcuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcmFuZ2VkID0gZ2V0UmFuZ2VkRGVjbGFyYXRpb25zKG5vZGUuZGVjbGFyYXRpb25zID8/IFtdKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRSYW5nZWREZWNsYXJhdGlvbnMgPSAoXG4gIGRlY2xhcmF0aW9uczogcmVhZG9ubHkgVmFyaWFibGVEZWNsYXJhdG9yTm9kZVtdLFxuKTogcmVhZG9ubHkgUmFuZ2VkVmFyaWFibGVEZWNsYXJhdG9yTm9kZVtdIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcmFuZ2VkRGVjbGFyYXRpb25zOiBSYW5nZWRWYXJpYWJsZURlY2xhcmF0b3JOb2RlW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IGRlY2xhcmF0aW9uIG9mIGRlY2xhcmF0aW9ucykge1xuICAgIGlmICghaGFzUmFuZ2UoZGVjbGFyYXRpb24pKSB7XG4gICAgICByZXR1cm4gdm9pZCAwO1xuICAgIH1cblxuICAgIHJhbmdlZERlY2xhcmF0aW9ucy5wdXNoKGRlY2xhcmF0aW9uKTtcbiAgfVxuXG4gIHJldHVybiByYW5nZWREZWNsYXJhdGlvbnM7XG59O1xuXG4vKipcbiAqIERldGVybWluZXMgd2hldGhlciBhIGRlY2xhcmF0aW9uIGNhbiBiZSBzYWZlbHkgcmV3cml0dGVuLlxuICogQHBhcmFtIG5vZGUgRGVjbGFyYXRpb24gbm9kZSB0byBpbnNwZWN0LlxuICogQHBhcmFtIGRlY2xhcmF0aW9ucyBEZWNsYXJhdG9ycyB3aXRoaW4gdGhlIGRlY2xhcmF0aW9uLlxuICogQHBhcmFtIHNvdXJjZVRleHQgRnVsbCBzb3VyY2UgdGV4dC5cbiAqIEByZXR1cm5zIFdoZXRoZXIgdGhlIGRlY2xhcmF0aW9uIGlzIHNhZmUgdG8gYXV0b2ZpeC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXhhYmxlID0gY2FuRml4KG5vZGUsIGRlY2xhcmF0aW9ucywgc291cmNlVGV4dCk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY2FuRml4ID0gKFxuICBub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcbiAgZGVjbGFyYXRpb25zOiByZWFkb25seSBWYXJpYWJsZURlY2xhcmF0b3JOb2RlW10sXG4gIHNvdXJjZVRleHQ6IHN0cmluZyxcbik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBpc0ZpeGFibGUgPVxuICAgIGhhc0ZpeERhdGEobm9kZSkgJiZcbiAgICBoYXNGaXhhYmxlRGVjbGFyYXRpb25LaW5kKG5vZGUpICYmXG4gICAgIWlzVHlwZVNjcmlwdEFtYmllbnREZWNsYXJhdGlvbihub2RlKTtcblxuICByZXR1cm4gKFxuICAgIGlzRml4YWJsZSAmJlxuICAgICFpc0xvb3BJbml0aWFsaXplcihub2RlKSAmJlxuICAgICFpc1dyYXBwZWRFeHBvcnQobm9kZSkgJiZcbiAgICAhaGFzU2VwYXJhdG9yQ29tbWVudChkZWNsYXJhdGlvbnMsIHNvdXJjZVRleHQpXG4gICk7XG59O1xuXG4vKipcbiAqIENvbnZlcnRzIGRlY2xhcmF0b3JzIGludG8gc2VwYXJhdGUgZGVjbGFyYXRpb24gc3RhdGVtZW50cy5cbiAqIEBwYXJhbSBub2RlIEZpeGFibGUgZGVjbGFyYXRpb24gbm9kZS5cbiAqIEBwYXJhbSBkZWNsYXJhdGlvbnMgRGVjbGFyYXRvcnMgdGhhdCBzaG91bGQgYmUgc3BsaXQuXG4gKiBAcGFyYW0gc291cmNlQ29kZSBTb3VyY2UgYWNjZXNzIHdyYXBwZXIuXG4gKiBAcmV0dXJucyBSZXBsYWNlbWVudCB0ZXh0IGZvciB0aGUgZnVsbCBkZWNsYXJhdGlvbi5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXBsYWNlbWVudCA9IGJ1aWxkUmVwbGFjZW1lbnQobm9kZSwgZGVjbGFyYXRpb25zLCBzb3VyY2VDb2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCBidWlsZFJlcGxhY2VtZW50ID0gKFxuICBub2RlOiBGaXhhYmxlVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4gIGRlY2xhcmF0aW9uczogcmVhZG9ubHkgUmFuZ2VkVmFyaWFibGVEZWNsYXJhdG9yTm9kZVtdLFxuICBzb3VyY2VDb2RlOiBTb3VyY2VDb2RlQWNjZXNzLFxuKTogc3RyaW5nID0+IHtcbiAgY29uc3Qgc291cmNlVGV4dCA9IGdldFNvdXJjZVRleHQoc291cmNlQ29kZSk7XG4gIGNvbnN0IGluZGVudCA9IGdldExpbmVJbmRlbnQoc291cmNlVGV4dCwgbm9kZS5yYW5nZVswXSk7XG4gIGNvbnN0IGxpbmVTZXBhcmF0b3IgPSBnZXRMaW5lU2VwYXJhdG9yKHNvdXJjZVRleHQpO1xuXG4gIHJldHVybiBkZWNsYXJhdGlvbnNcbiAgICAubWFwKChkZWNsYXJhdGlvbikgPT4gYCR7bm9kZS5raW5kfSAke3NvdXJjZUNvZGUuZ2V0VGV4dChkZWNsYXJhdGlvbil9O2ApXG4gICAgLmpvaW4oYCR7bGluZVNlcGFyYXRvcn0ke2luZGVudH1gKTtcbn07XG5cbmV4cG9ydCB7XG4gIGJ1aWxkUmVwbGFjZW1lbnQsXG4gIGNhbkZpeCxcbiAgZ2V0UmFuZ2VkRGVjbGFyYXRpb25zLFxuICBnZXRTb3VyY2VDb2RlLFxuICBnZXRTb3VyY2VUZXh0LFxufTtcbiJdfQ==
@@ -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;AAmFnC,4EAA4E;AAC5E,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UAwBrC,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;AAiFnC,4EAA4E;AAC5E,QAAA,MAAM,yBAAyB,EAAE,IAAI,CAAC,UAwBrC,CAAC;AAEF,OAAO,EAAE,yBAAyB,EAAE,CAAC"}
@@ -17,10 +17,9 @@ const createDeclarationFix = (node, declarations, sourceCode) => {
17
17
  return void 0;
18
18
  }
19
19
  const rangedDeclarations = getRangedDeclarations(declarations);
20
- if (rangedDeclarations === void 0) {
21
- return void 0;
22
- }
23
- return (fixer) => fixer.replaceTextRange(node.range, buildReplacement(node, rangedDeclarations, sourceCode));
20
+ return rangedDeclarations === void 0
21
+ ? void 0
22
+ : (fixer) => fixer.replaceTextRange(node.range, buildReplacement(node, rangedDeclarations, sourceCode));
24
23
  };
25
24
  /**
26
25
  * Reports declarations that contain more than one declarator.
@@ -71,4 +70,4 @@ const noMultipleDeclaratorsRule = {
71
70
  },
72
71
  };
73
72
  export { noMultipleDeclaratorsRule };
74
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9uby1tdWx0aXBsZS1kZWNsYXJhdG9ycy9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLHFCQUFxQixFQUNyQixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUMzQixJQUE2QixFQUM3QixZQUErQyxFQUMvQyxVQUE0QixFQUN1QixFQUFFO0lBQ3JELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUU3QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNqRSxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9ELElBQUksa0JBQWtCLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxPQUFPLENBQUMsS0FBcUIsRUFBWSxFQUFFLENBQ3pDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FDcEIsSUFBSSxDQUFDLEtBQUssRUFDVixnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsa0JBQWtCLEVBQUUsVUFBVSxDQUFDLENBQ3ZELENBQUM7QUFDTixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0seUJBQXlCLEdBQUcsQ0FDaEMsT0FBeUIsRUFDekIsSUFBNkIsRUFDdkIsRUFBRTtJQUNSLE1BQU0sWUFBWSxHQUFHLElBQUksQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO0lBRTdDLElBQUksWUFBWSxDQUFDLE1BQU0sSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUM3QixPQUFPO0lBQ1QsQ0FBQztJQUVELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUMxQyxNQUFNLEdBQUcsR0FBRyxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsWUFBWSxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRWpFLE9BQU8sQ0FBQyxNQUFNLENBQUM7UUFDYixHQUFHLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUM7UUFDOUIsU0FBUyxFQUFFLGtCQUFrQjtRQUM3QixJQUFJLEVBQUUsSUFBNEI7UUFDbEMsR0FBRyxDQUFDLEdBQUcsS0FBSyxLQUFLLENBQUMsSUFBSTtZQUNwQixPQUFPLEVBQUUsQ0FBQyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsa0JBQWtCLEVBQUUsQ0FBQztTQUNsRCxDQUFDO0tBQ0gsQ0FBQyxDQUFDO0FBQ0wsQ0FBQyxDQUFDO0FBRUYsNEVBQTRFO0FBQzVFLE1BQU0seUJBQXlCLEdBQW9CO0lBQ2pELE1BQU0sRUFBRSxDQUFDLE9BQXlCLEVBQXFCLEVBQUUsQ0FBQyxDQUFDO1FBQ3pELG1CQUFtQixFQUFFLENBQUMsSUFBZSxFQUFRLEVBQUU7WUFDN0MseUJBQXlCLENBQUMsT0FBTyxFQUFFLElBQStCLENBQUMsQ0FBQztRQUN0RSxDQUFDO0tBQ0YsQ0FBQztJQUNGLElBQUksRUFBRTtRQUNKLElBQUksRUFBRTtZQUNKLFdBQVcsRUFDVCxnRkFBZ0Y7WUFDbEYsV0FBVyxFQUFFLEtBQUs7WUFDbEIsR0FBRyxFQUFFLDBGQUEwRjtTQUNoRztRQUNELE9BQU8sRUFBRSxNQUFNO1FBQ2YsY0FBYyxFQUFFLElBQUk7UUFDcEIsUUFBUSxFQUFFO1lBQ1IsZ0JBQWdCLEVBQ2QseURBQXlEO1lBQzNELGdCQUFnQixFQUNkLGtFQUFrRTtTQUNyRTtRQUNELE1BQU0sRUFBRSxFQUFFO1FBQ1YsSUFBSSxFQUFFLFlBQVk7S0FDbkI7Q0FDRixDQUFDO0FBRUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJ1bGUgfSBmcm9tIFwiZXNsaW50XCI7XG5cbmltcG9ydCB0eXBlIHtcbiAgU291cmNlQ29kZUFjY2VzcyxcbiAgVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4gIFZhcmlhYmxlRGVjbGFyYXRvck5vZGUsXG59IGZyb20gXCIuL3R5cGVzXCI7XG5cbmltcG9ydCB7XG4gIGJ1aWxkUmVwbGFjZW1lbnQsXG4gIGNhbkZpeCxcbiAgZ2V0UmFuZ2VkRGVjbGFyYXRpb25zLFxuICBnZXRTb3VyY2VDb2RlLFxuICBnZXRTb3VyY2VUZXh0LFxufSBmcm9tIFwiLi9ydWxlLXV0aWxpdGllc1wiO1xuaW1wb3J0IHsgaGFzRml4RGF0YSB9IGZyb20gXCIuL3R5cGVzXCI7XG5cbi8qKlxuICogQ3JlYXRlcyBhbiBhdXRvZml4IGNhbGxiYWNrIHdoZW4gdGhlIGRlY2xhcmF0aW9uIGNhbiBiZSByZXdyaXR0ZW4gc2FmZWx5LlxuICogQHBhcmFtIG5vZGUgRGVjbGFyYXRpb24gbm9kZSB0byBpbnNwZWN0LlxuICogQHBhcmFtIGRlY2xhcmF0aW9ucyBEZWNsYXJhdG9ycyBmcm9tIHRoZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnQuXG4gKiBAcGFyYW0gc291cmNlQ29kZSBTb3VyY2UgYWNjZXNzIHdyYXBwZXIuXG4gKiBAcmV0dXJucyBGaXggY2FsbGJhY2sgd2hlbiB0aGUgZGVjbGFyYXRpb24gaXMgc2FmZSB0byBzcGxpdC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBmaXggPSBjcmVhdGVEZWNsYXJhdGlvbkZpeChub2RlLCBkZWNsYXJhdGlvbnMsIHNvdXJjZUNvZGUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGNyZWF0ZURlY2xhcmF0aW9uRml4ID0gKFxuICBub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcbiAgZGVjbGFyYXRpb25zOiByZWFkb25seSBWYXJpYWJsZURlY2xhcmF0b3JOb2RlW10sXG4gIHNvdXJjZUNvZGU6IFNvdXJjZUNvZGVBY2Nlc3MsXG4pOiAoKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcikgPT4gUnVsZS5GaXgpIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3Qgc291cmNlVGV4dCA9IGdldFNvdXJjZVRleHQoc291cmNlQ29kZSk7XG5cbiAgaWYgKCFjYW5GaXgobm9kZSwgZGVjbGFyYXRpb25zLCBzb3VyY2VUZXh0KSB8fCAhaGFzRml4RGF0YShub2RlKSkge1xuICAgIHJldHVybiB2b2lkIDA7XG4gIH1cblxuICBjb25zdCByYW5nZWREZWNsYXJhdGlvbnMgPSBnZXRSYW5nZWREZWNsYXJhdGlvbnMoZGVjbGFyYXRpb25zKTtcbiAgaWYgKHJhbmdlZERlY2xhcmF0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIHJldHVybiAoZml4ZXI6IFJ1bGUuUnVsZUZpeGVyKTogUnVsZS5GaXggPT5cbiAgICBmaXhlci5yZXBsYWNlVGV4dFJhbmdlKFxuICAgICAgbm9kZS5yYW5nZSxcbiAgICAgIGJ1aWxkUmVwbGFjZW1lbnQobm9kZSwgcmFuZ2VkRGVjbGFyYXRpb25zLCBzb3VyY2VDb2RlKSxcbiAgICApO1xufTtcblxuLyoqXG4gKiBSZXBvcnRzIGRlY2xhcmF0aW9ucyB0aGF0IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBkZWNsYXJhdG9yLlxuICogQHBhcmFtIGNvbnRleHQgUnVsZSBleGVjdXRpb24gY29udGV4dC5cbiAqIEBwYXJhbSBub2RlIERlY2xhcmF0aW9uIG5vZGUgdG8gcmVwb3J0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIHJlcG9ydFZhcmlhYmxlRGVjbGFyYXRpb24oY29udGV4dCwgbm9kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgcmVwb3J0VmFyaWFibGVEZWNsYXJhdGlvbiA9IChcbiAgY29udGV4dDogUnVsZS5SdWxlQ29udGV4dCxcbiAgbm9kZTogVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUsXG4pOiB2b2lkID0+IHtcbiAgY29uc3QgZGVjbGFyYXRpb25zID0gbm9kZS5kZWNsYXJhdGlvbnMgPz8gW107XG5cbiAgaWYgKGRlY2xhcmF0aW9ucy5sZW5ndGggPD0gMSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbnN0IHNvdXJjZUNvZGUgPSBnZXRTb3VyY2VDb2RlKGNvbnRleHQpO1xuICBjb25zdCBmaXggPSBjcmVhdGVEZWNsYXJhdGlvbkZpeChub2RlLCBkZWNsYXJhdGlvbnMsIHNvdXJjZUNvZGUpO1xuXG4gIGNvbnRleHQucmVwb3J0KHtcbiAgICAuLi4oZml4ICE9PSB2b2lkIDAgJiYgeyBmaXggfSksXG4gICAgbWVzc2FnZUlkOiBcInNpbmdsZURlY2xhcmF0b3JcIixcbiAgICBub2RlOiBub2RlIGFzIHVua25vd24gYXMgUnVsZS5Ob2RlLFxuICAgIC4uLihmaXggIT09IHZvaWQgMCAmJiB7XG4gICAgICBzdWdnZXN0OiBbeyBmaXgsIG1lc3NhZ2VJZDogXCJzcGxpdERlY2xhcmF0aW9uXCIgfV0sXG4gICAgfSksXG4gIH0pO1xufTtcblxuLyoqIEVTTGludCBydWxlIGltcGxlbWVudGF0aW9uIGZvciBzaW5nbGUtZGVjbGFyYXRvciB2YXJpYWJsZSBzdGF0ZW1lbnRzLiAqL1xuY29uc3Qgbm9NdWx0aXBsZURlY2xhcmF0b3JzUnVsZTogUnVsZS5SdWxlTW9kdWxlID0ge1xuICBjcmVhdGU6IChjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0KTogUnVsZS5SdWxlTGlzdGVuZXIgPT4gKHtcbiAgICBWYXJpYWJsZURlY2xhcmF0aW9uOiAobm9kZTogUnVsZS5Ob2RlKTogdm9pZCA9PiB7XG4gICAgICByZXBvcnRWYXJpYWJsZURlY2xhcmF0aW9uKGNvbnRleHQsIG5vZGUgYXMgVmFyaWFibGVEZWNsYXJhdGlvbk5vZGUpO1xuICAgIH0sXG4gIH0pLFxuICBtZXRhOiB7XG4gICAgZG9jczoge1xuICAgICAgZGVzY3JpcHRpb246XG4gICAgICAgIFwiUmVxdWlyZSB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgdG8gY29udGFpbiBleGFjdGx5IG9uZSBkZWNsYXJhdG9yIHBlciBzdGF0ZW1lbnQuXCIsXG4gICAgICByZWNvbW1lbmRlZDogZmFsc2UsXG4gICAgICB1cmw6IFwiaHR0cHM6Ly9naXRodWIuY29tL3BhcmxvdGkvZXNsaW50LXBsdWdpbi9ibG9iL21haW4vZG9jcy9ydWxlcy9uby1tdWx0aXBsZS1kZWNsYXJhdG9ycy5tZFwiLFxuICAgIH0sXG4gICAgZml4YWJsZTogXCJjb2RlXCIsXG4gICAgaGFzU3VnZ2VzdGlvbnM6IHRydWUsXG4gICAgbWVzc2FnZXM6IHtcbiAgICAgIHNpbmdsZURlY2xhcmF0b3I6XG4gICAgICAgIFwiRGVjbGFyZSBleGFjdGx5IG9uZSB2YXJpYWJsZSBwZXIgZGVjbGFyYXRpb24gc3RhdGVtZW50LlwiLFxuICAgICAgc3BsaXREZWNsYXJhdGlvbjpcbiAgICAgICAgXCJTcGxpdCB0aGlzIGRlY2xhcmF0aW9uIGludG8gc2VwYXJhdGUgc2luZ2xlLXZhcmlhYmxlIHN0YXRlbWVudHMuXCIsXG4gICAgfSxcbiAgICBzY2hlbWE6IFtdLFxuICAgIHR5cGU6IFwic3VnZ2VzdGlvblwiLFxuICB9LFxufTtcblxuZXhwb3J0IHsgbm9NdWx0aXBsZURlY2xhcmF0b3JzUnVsZSB9O1xuIl19
73
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vY29yZS9uby1tdWx0aXBsZS1kZWNsYXJhdG9ycy9ydWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVFBLE9BQU8sRUFDTCxnQkFBZ0IsRUFDaEIsTUFBTSxFQUNOLHFCQUFxQixFQUNyQixhQUFhLEVBQ2IsYUFBYSxHQUNkLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUVyQzs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSxvQkFBb0IsR0FBRyxDQUMzQixJQUE2QixFQUM3QixZQUErQyxFQUMvQyxVQUE0QixFQUN1QixFQUFFO0lBQ3JELE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUU3QyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztRQUNqRSxPQUFPLEtBQUssQ0FBQyxDQUFDO0lBQ2hCLENBQUM7SUFFRCxNQUFNLGtCQUFrQixHQUFHLHFCQUFxQixDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQy9ELE9BQU8sa0JBQWtCLEtBQUssS0FBSyxDQUFDO1FBQ2xDLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDUixDQUFDLENBQUMsQ0FBQyxLQUFxQixFQUFZLEVBQUUsQ0FDbEMsS0FBSyxDQUFDLGdCQUFnQixDQUNwQixJQUFJLENBQUMsS0FBSyxFQUNWLGdCQUFnQixDQUFDLElBQUksRUFBRSxrQkFBa0IsRUFBRSxVQUFVLENBQUMsQ0FDdkQsQ0FBQztBQUNWLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSx5QkFBeUIsR0FBRyxDQUNoQyxPQUF5QixFQUN6QixJQUE2QixFQUN2QixFQUFFO0lBQ1IsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLFlBQVksSUFBSSxFQUFFLENBQUM7SUFFN0MsSUFBSSxZQUFZLENBQUMsTUFBTSxJQUFJLENBQUMsRUFBRSxDQUFDO1FBQzdCLE9BQU87SUFDVCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFDLE1BQU0sR0FBRyxHQUFHLG9CQUFvQixDQUFDLElBQUksRUFBRSxZQUFZLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFakUsT0FBTyxDQUFDLE1BQU0sQ0FBQztRQUNiLEdBQUcsQ0FBQyxHQUFHLEtBQUssS0FBSyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQztRQUM5QixTQUFTLEVBQUUsa0JBQWtCO1FBQzdCLElBQUksRUFBRSxJQUE0QjtRQUNsQyxHQUFHLENBQUMsR0FBRyxLQUFLLEtBQUssQ0FBQyxJQUFJO1lBQ3BCLE9BQU8sRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxrQkFBa0IsRUFBRSxDQUFDO1NBQ2xELENBQUM7S0FDSCxDQUFDLENBQUM7QUFDTCxDQUFDLENBQUM7QUFFRiw0RUFBNEU7QUFDNUUsTUFBTSx5QkFBeUIsR0FBb0I7SUFDakQsTUFBTSxFQUFFLENBQUMsT0FBeUIsRUFBcUIsRUFBRSxDQUFDLENBQUM7UUFDekQsbUJBQW1CLEVBQUUsQ0FBQyxJQUFlLEVBQVEsRUFBRTtZQUM3Qyx5QkFBeUIsQ0FBQyxPQUFPLEVBQUUsSUFBK0IsQ0FBQyxDQUFDO1FBQ3RFLENBQUM7S0FDRixDQUFDO0lBQ0YsSUFBSSxFQUFFO1FBQ0osSUFBSSxFQUFFO1lBQ0osV0FBVyxFQUNULGdGQUFnRjtZQUNsRixXQUFXLEVBQUUsS0FBSztZQUNsQixHQUFHLEVBQUUsMEZBQTBGO1NBQ2hHO1FBQ0QsT0FBTyxFQUFFLE1BQU07UUFDZixjQUFjLEVBQUUsSUFBSTtRQUNwQixRQUFRLEVBQUU7WUFDUixnQkFBZ0IsRUFDZCx5REFBeUQ7WUFDM0QsZ0JBQWdCLEVBQ2Qsa0VBQWtFO1NBQ3JFO1FBQ0QsTUFBTSxFQUFFLEVBQUU7UUFDVixJQUFJLEVBQUUsWUFBWTtLQUNuQjtDQUNGLENBQUM7QUFFRixPQUFPLEVBQUUseUJBQXlCLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUnVsZSB9IGZyb20gXCJlc2xpbnRcIjtcblxuaW1wb3J0IHR5cGUge1xuICBTb3VyY2VDb2RlQWNjZXNzLFxuICBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcbiAgVmFyaWFibGVEZWNsYXJhdG9yTm9kZSxcbn0gZnJvbSBcIi4vdHlwZXNcIjtcblxuaW1wb3J0IHtcbiAgYnVpbGRSZXBsYWNlbWVudCxcbiAgY2FuRml4LFxuICBnZXRSYW5nZWREZWNsYXJhdGlvbnMsXG4gIGdldFNvdXJjZUNvZGUsXG4gIGdldFNvdXJjZVRleHQsXG59IGZyb20gXCIuL3J1bGUtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBoYXNGaXhEYXRhIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBDcmVhdGVzIGFuIGF1dG9maXggY2FsbGJhY2sgd2hlbiB0aGUgZGVjbGFyYXRpb24gY2FuIGJlIHJld3JpdHRlbiBzYWZlbHkuXG4gKiBAcGFyYW0gbm9kZSBEZWNsYXJhdGlvbiBub2RlIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb25zIERlY2xhcmF0b3JzIGZyb20gdGhlIGRlY2xhcmF0aW9uIHN0YXRlbWVudC5cbiAqIEBwYXJhbSBzb3VyY2VDb2RlIFNvdXJjZSBhY2Nlc3Mgd3JhcHBlci5cbiAqIEByZXR1cm5zIEZpeCBjYWxsYmFjayB3aGVuIHRoZSBkZWNsYXJhdGlvbiBpcyBzYWZlIHRvIHNwbGl0LlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGZpeCA9IGNyZWF0ZURlY2xhcmF0aW9uRml4KG5vZGUsIGRlY2xhcmF0aW9ucywgc291cmNlQ29kZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY3JlYXRlRGVjbGFyYXRpb25GaXggPSAoXG4gIG5vZGU6IFZhcmlhYmxlRGVjbGFyYXRpb25Ob2RlLFxuICBkZWNsYXJhdGlvbnM6IHJlYWRvbmx5IFZhcmlhYmxlRGVjbGFyYXRvck5vZGVbXSxcbiAgc291cmNlQ29kZTogU291cmNlQ29kZUFjY2Vzcyxcbik6ICgoZml4ZXI6IFJ1bGUuUnVsZUZpeGVyKSA9PiBSdWxlLkZpeCkgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBzb3VyY2VUZXh0ID0gZ2V0U291cmNlVGV4dChzb3VyY2VDb2RlKTtcblxuICBpZiAoIWNhbkZpeChub2RlLCBkZWNsYXJhdGlvbnMsIHNvdXJjZVRleHQpIHx8ICFoYXNGaXhEYXRhKG5vZGUpKSB7XG4gICAgcmV0dXJuIHZvaWQgMDtcbiAgfVxuXG4gIGNvbnN0IHJhbmdlZERlY2xhcmF0aW9ucyA9IGdldFJhbmdlZERlY2xhcmF0aW9ucyhkZWNsYXJhdGlvbnMpO1xuICByZXR1cm4gcmFuZ2VkRGVjbGFyYXRpb25zID09PSB2b2lkIDBcbiAgICA/IHZvaWQgMFxuICAgIDogKGZpeGVyOiBSdWxlLlJ1bGVGaXhlcik6IFJ1bGUuRml4ID0+XG4gICAgICAgIGZpeGVyLnJlcGxhY2VUZXh0UmFuZ2UoXG4gICAgICAgICAgbm9kZS5yYW5nZSxcbiAgICAgICAgICBidWlsZFJlcGxhY2VtZW50KG5vZGUsIHJhbmdlZERlY2xhcmF0aW9ucywgc291cmNlQ29kZSksXG4gICAgICAgICk7XG59O1xuXG4vKipcbiAqIFJlcG9ydHMgZGVjbGFyYXRpb25zIHRoYXQgY29udGFpbiBtb3JlIHRoYW4gb25lIGRlY2xhcmF0b3IuXG4gKiBAcGFyYW0gY29udGV4dCBSdWxlIGV4ZWN1dGlvbiBjb250ZXh0LlxuICogQHBhcmFtIG5vZGUgRGVjbGFyYXRpb24gbm9kZSB0byByZXBvcnQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogcmVwb3J0VmFyaWFibGVEZWNsYXJhdGlvbihjb250ZXh0LCBub2RlKTtcbiAqIGBgYFxuICovXG5jb25zdCByZXBvcnRWYXJpYWJsZURlY2xhcmF0aW9uID0gKFxuICBjb250ZXh0OiBSdWxlLlJ1bGVDb250ZXh0LFxuICBub2RlOiBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSxcbik6IHZvaWQgPT4ge1xuICBjb25zdCBkZWNsYXJhdGlvbnMgPSBub2RlLmRlY2xhcmF0aW9ucyA/PyBbXTtcblxuICBpZiAoZGVjbGFyYXRpb25zLmxlbmd0aCA8PSAxKSB7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgY29uc3Qgc291cmNlQ29kZSA9IGdldFNvdXJjZUNvZGUoY29udGV4dCk7XG4gIGNvbnN0IGZpeCA9IGNyZWF0ZURlY2xhcmF0aW9uRml4KG5vZGUsIGRlY2xhcmF0aW9ucywgc291cmNlQ29kZSk7XG5cbiAgY29udGV4dC5yZXBvcnQoe1xuICAgIC4uLihmaXggIT09IHZvaWQgMCAmJiB7IGZpeCB9KSxcbiAgICBtZXNzYWdlSWQ6IFwic2luZ2xlRGVjbGFyYXRvclwiLFxuICAgIG5vZGU6IG5vZGUgYXMgdW5rbm93biBhcyBSdWxlLk5vZGUsXG4gICAgLi4uKGZpeCAhPT0gdm9pZCAwICYmIHtcbiAgICAgIHN1Z2dlc3Q6IFt7IGZpeCwgbWVzc2FnZUlkOiBcInNwbGl0RGVjbGFyYXRpb25cIiB9XSxcbiAgICB9KSxcbiAgfSk7XG59O1xuXG4vKiogRVNMaW50IHJ1bGUgaW1wbGVtZW50YXRpb24gZm9yIHNpbmdsZS1kZWNsYXJhdG9yIHZhcmlhYmxlIHN0YXRlbWVudHMuICovXG5jb25zdCBub011bHRpcGxlRGVjbGFyYXRvcnNSdWxlOiBSdWxlLlJ1bGVNb2R1bGUgPSB7XG4gIGNyZWF0ZTogKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciA9PiAoe1xuICAgIFZhcmlhYmxlRGVjbGFyYXRpb246IChub2RlOiBSdWxlLk5vZGUpOiB2b2lkID0+IHtcbiAgICAgIHJlcG9ydFZhcmlhYmxlRGVjbGFyYXRpb24oY29udGV4dCwgbm9kZSBhcyBWYXJpYWJsZURlY2xhcmF0aW9uTm9kZSk7XG4gICAgfSxcbiAgfSksXG4gIG1ldGE6IHtcbiAgICBkb2NzOiB7XG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJSZXF1aXJlIHZhcmlhYmxlIGRlY2xhcmF0aW9ucyB0byBjb250YWluIGV4YWN0bHkgb25lIGRlY2xhcmF0b3IgcGVyIHN0YXRlbWVudC5cIixcbiAgICAgIHJlY29tbWVuZGVkOiBmYWxzZSxcbiAgICAgIHVybDogXCJodHRwczovL2dpdGh1Yi5jb20vcGFybG90aS9lc2xpbnQtcGx1Z2luL2Jsb2IvbWFpbi9kb2NzL3J1bGVzL25vLW11bHRpcGxlLWRlY2xhcmF0b3JzLm1kXCIsXG4gICAgfSxcbiAgICBmaXhhYmxlOiBcImNvZGVcIixcbiAgICBoYXNTdWdnZXN0aW9uczogdHJ1ZSxcbiAgICBtZXNzYWdlczoge1xuICAgICAgc2luZ2xlRGVjbGFyYXRvcjpcbiAgICAgICAgXCJEZWNsYXJlIGV4YWN0bHkgb25lIHZhcmlhYmxlIHBlciBkZWNsYXJhdGlvbiBzdGF0ZW1lbnQuXCIsXG4gICAgICBzcGxpdERlY2xhcmF0aW9uOlxuICAgICAgICBcIlNwbGl0IHRoaXMgZGVjbGFyYXRpb24gaW50byBzZXBhcmF0ZSBzaW5nbGUtdmFyaWFibGUgc3RhdGVtZW50cy5cIixcbiAgICB9LFxuICAgIHNjaGVtYTogW10sXG4gICAgdHlwZTogXCJzdWdnZXN0aW9uXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgeyBub011bHRpcGxlRGVjbGFyYXRvcnNSdWxlIH07XG4iXX0=
@@ -1 +1 @@
1
- {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/no-useless-delegation/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA6OnC,kFAAkF;AAClF,QAAA,MAAM,uBAAuB,EAAE,IAAI,CAAC,UAqCnC,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
1
+ {"version":3,"file":"rule.d.ts","sourceRoot":"","sources":["../../../../src/domain/core/no-useless-delegation/rule.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAyOnC,kFAAkF;AAClF,QAAA,MAAM,uBAAuB,EAAE,IAAI,CAAC,UAqCnC,CAAC;AAEF,OAAO,EAAE,uBAAuB,EAAE,CAAC"}