@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.
- package/README.md +0 -1
- package/dist/application/custom-rules.d.ts +3 -0
- package/dist/application/custom-rules.d.ts.map +1 -1
- package/dist/application/custom-rules.js +3 -2
- package/dist/application/index.d.ts +1 -1
- package/dist/application/index.d.ts.map +1 -1
- package/dist/application/index.js +2 -2
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts +0 -2
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/barrel-file-utilities.js +4 -6
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-listeners.js +12 -15
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts +0 -2
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/consistent-barrel-files-options.js +2 -10
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/exports-only-rule.js +8 -17
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/no-reexports-outside-barrels-utilities.js +6 -8
- package/dist/domain/architecture/consistent-barrel-files/rule.d.ts.map +1 -1
- package/dist/domain/architecture/consistent-barrel-files/rule.js +4 -5
- package/dist/domain/architecture/index.d.ts +1 -0
- package/dist/domain/architecture/index.d.ts.map +1 -1
- package/dist/domain/architecture/index.js +2 -1
- package/dist/domain/architecture/no-import-export-extensions/no-import-export-extensions-rule.d.ts.map +1 -1
- package/dist/domain/architecture/no-import-export-extensions/no-import-export-extensions-rule.js +6 -13
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-declaration-utilities.js +11 -10
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-identifier-utilities.js +5 -9
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-options.js +6 -9
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-pattern-utilities.js +5 -10
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-public-api-usage-utilities.js +4 -8
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-exports/no-unused-exports-symbol-utilities.js +4 -5
- package/dist/domain/architecture/no-unused-public-members/index.d.ts +2 -0
- package/dist/domain/architecture/no-unused-public-members/index.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/index.js +2 -0
- package/dist/domain/architecture/no-unused-public-members/member-contract-utilities.d.ts +16 -0
- package/dist/domain/architecture/no-unused-public-members/member-contract-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/member-contract-utilities.js +102 -0
- package/dist/domain/architecture/no-unused-public-members/member-declaration-utilities.d.ts +34 -0
- package/dist/domain/architecture/no-unused-public-members/member-declaration-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/member-declaration-utilities.js +55 -0
- package/dist/domain/architecture/no-unused-public-members/member-host-utilities.d.ts +68 -0
- package/dist/domain/architecture/no-unused-public-members/member-host-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/member-host-utilities.js +195 -0
- package/dist/domain/architecture/no-unused-public-members/member-public-api-utilities.d.ts +30 -0
- package/dist/domain/architecture/no-unused-public-members/member-public-api-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/member-public-api-utilities.js +101 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-handoff-utilities.d.ts +28 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-handoff-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-handoff-utilities.js +125 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-reference-utilities.d.ts +29 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-reference-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-reference-utilities.js +108 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-type-utilities.d.ts +42 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-type-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-type-utilities.js +96 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-utilities.d.ts +18 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-utilities.js +128 -0
- package/dist/domain/architecture/no-unused-public-members/member-utilities.d.ts +41 -0
- package/dist/domain/architecture/no-unused-public-members/member-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/member-utilities.js +51 -0
- package/dist/domain/architecture/no-unused-public-members/rule.d.ts +5 -0
- package/dist/domain/architecture/no-unused-public-members/rule.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/rule.js +78 -0
- package/dist/domain/core/no-multiple-declarators/rule-utilities.d.ts.map +1 -1
- package/dist/domain/core/no-multiple-declarators/rule-utilities.js +13 -19
- package/dist/domain/core/no-multiple-declarators/rule.d.ts.map +1 -1
- package/dist/domain/core/no-multiple-declarators/rule.js +4 -5
- package/dist/domain/core/no-useless-delegation/rule.d.ts.map +1 -1
- package/dist/domain/core/no-useless-delegation/rule.js +5 -6
- package/dist/domain/core/prefer-interface-types/autofix.js +4 -5
- package/dist/domain/core/prefer-interface-types/rule-utilities.d.ts.map +1 -1
- package/dist/domain/core/prefer-interface-types/rule-utilities.js +7 -9
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/comment-utilities.js +10 -8
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-tags.js +5 -6
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/parameter-utilities.js +7 -9
- package/dist/domain/docs/no-interface-member-docs/rule.d.ts.map +1 -1
- package/dist/domain/docs/no-interface-member-docs/rule.js +2 -5
- package/dist/domain/docs/require-example-language/empty-fence-fixes.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/empty-fence-fixes.js +2 -5
- package/dist/domain/docs/require-example-language/example-utilities.d.ts +1 -7
- package/dist/domain/docs/require-example-language/example-utilities.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/example-utilities.js +6 -14
- package/dist/domain/docs/require-example-language/examples.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/examples.js +7 -16
- package/dist/domain/docs/require-example-language/fixes.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/fixes.js +8 -13
- package/dist/domain/docs/require-example-language/reporting.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/reporting.js +4 -8
- package/dist/domain/docs/require-example-language/types.d.ts +0 -2
- package/dist/domain/docs/require-example-language/types.d.ts.map +1 -1
- package/dist/domain/docs/require-example-language/types.js +1 -1
- package/dist/domain/docs/single-line-jsdoc/rule.d.ts.map +1 -1
- package/dist/domain/docs/single-line-jsdoc/rule.js +5 -11
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.d.ts.map +1 -1
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-content.js +5 -14
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.d.ts.map +1 -1
- package/dist/domain/docs/single-line-jsdoc/single-line-jsdoc-utilities.js +5 -9
- package/dist/domain/index.d.ts +2 -2
- package/dist/domain/index.d.ts.map +1 -1
- package/dist/domain/index.js +3 -3
- package/dist/domain/testing/aaa/analyzer.analysis.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.analysis.helpers.js +2 -5
- package/dist/domain/testing/aaa/analyzer.analysis.js +6 -11
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.assertions.helpers.js +5 -14
- package/dist/domain/testing/aaa/analyzer.assertions.js +2 -2
- package/dist/domain/testing/aaa/analyzer.assertions.operands.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.assertions.operands.js +12 -16
- package/dist/domain/testing/aaa/analyzer.classification.helpers.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.classification.helpers.js +11 -21
- package/dist/domain/testing/aaa/analyzer.classification.js +2 -2
- package/dist/domain/testing/aaa/analyzer.super.d.ts.map +1 -1
- package/dist/domain/testing/aaa/analyzer.super.js +5 -6
- package/dist/domain/testing/aaa/types.d.ts +0 -4
- package/dist/domain/testing/aaa/types.d.ts.map +1 -1
- package/dist/domain/testing/aaa/types.js +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-phase-purity/pattern-identifiers.js +2 -7
- package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.d.ts.map +1 -1
- package/dist/domain/testing/enforce-aaa-structure/missing-section-fixes.js +4 -5
- package/dist/domain/testing/index.d.ts +0 -1
- package/dist/domain/testing/index.d.ts.map +1 -1
- package/dist/domain/testing/index.js +1 -2
- package/dist/domain/testing/prefer-vi-mocked-import/fix.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/fix.js +9 -7
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-bindings.js +5 -9
- package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-collisions.js +2 -7
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-declarations.js +5 -5
- package/dist/domain/testing/prefer-vi-mocked-import/match-helpers.js +3 -5
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-imports.js +13 -18
- package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/match-seeds.js +5 -6
- package/dist/domain/testing/prefer-vi-mocked-import/types.d.ts +0 -2
- package/dist/domain/testing/prefer-vi-mocked-import/types.d.ts.map +1 -1
- package/dist/domain/testing/prefer-vi-mocked-import/types.js +1 -1
- package/dist/domain/testing/require-act-result-capture/rule.d.ts.map +1 -1
- package/dist/domain/testing/require-act-result-capture/rule.js +9 -12
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.d.ts.map +1 -1
- package/dist/domain/testing/require-test-companion/require-test-companion-listeners.js +5 -11
- package/dist/domain/testing/require-test-companion/require-test-companion-options.js +6 -7
- package/dist/domain/testing/require-test-companion/rule.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/infrastructure/codeperfect-plugin.d.ts +2 -2
- package/dist/infrastructure/codeperfect-plugin.js +3 -3
- package/dist/infrastructure/presets.js +3 -3
- package/package.json +26 -27
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/index.d.ts +0 -2
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/index.d.ts.map +0 -1
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/index.js +0 -2
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts +0 -29
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.d.ts.map +0 -1
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-detection.js +0 -200
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts +0 -12
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.d.ts.map +0 -1
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-names.js +0 -151
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts +0 -16
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.d.ts.map +0 -1
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule-reporting.js +0 -109
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts +0 -5
- package/dist/domain/testing/no-unsafe-vitest-mock-factory-cast/rule.d.ts.map +0 -1
- 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 @@
|
|
|
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;
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
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;
|
|
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
|
-
|
|
21
|
-
|
|
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,
|
|
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;
|
|
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"}
|