@codeperfect/eslint-plugin 3.1.0 → 3.2.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/dist/adapters/angular/angular-template-block-usage-utilities.d.ts +4 -0
- package/dist/adapters/angular/angular-template-block-usage-utilities.d.ts.map +1 -0
- package/dist/adapters/angular/angular-template-block-usage-utilities.js +69 -0
- package/dist/adapters/angular/angular-template-expression-utilities.d.ts +5 -0
- package/dist/adapters/angular/angular-template-expression-utilities.d.ts.map +1 -0
- package/dist/adapters/angular/angular-template-expression-utilities.js +121 -0
- package/dist/adapters/angular/angular-template-node-usage-utilities.d.ts +4 -0
- package/dist/adapters/angular/angular-template-node-usage-utilities.d.ts.map +1 -0
- package/dist/adapters/angular/angular-template-node-usage-utilities.js +47 -0
- package/dist/adapters/angular/angular-template-usage-context.d.ts +26 -0
- package/dist/adapters/angular/angular-template-usage-context.d.ts.map +1 -0
- package/dist/adapters/angular/angular-template-usage-context.js +12 -0
- package/dist/adapters/angular/index.d.ts +2 -0
- package/dist/adapters/angular/index.d.ts.map +1 -0
- package/dist/adapters/angular/index.js +2 -0
- package/dist/adapters/angular/no-unused-public-members-template-adapter.d.ts +15 -0
- package/dist/adapters/angular/no-unused-public-members-template-adapter.d.ts.map +1 -0
- package/dist/adapters/angular/no-unused-public-members-template-adapter.js +126 -0
- package/dist/adapters/angular/plugin.d.ts +12 -0
- package/dist/adapters/angular/plugin.d.ts.map +1 -0
- package/dist/adapters/angular/plugin.js +14 -0
- package/dist/adapters/index.d.ts +2 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +2 -0
- package/dist/codeperfect-eslint-plugin-1.0.0.tgz +0 -0
- package/dist/domain/architecture/no-unused-public-members/member-public-api-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-public-members/member-public-api-utilities.js +7 -2
- package/dist/domain/architecture/no-unused-public-members/member-usage-expression-reference-utilities.d.ts +16 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-expression-reference-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-expression-reference-utilities.js +77 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-handoff-utilities.d.ts +2 -2
- package/dist/domain/architecture/no-unused-public-members/member-usage-handoff-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-public-members/member-usage-handoff-utilities.js +69 -43
- package/dist/domain/architecture/no-unused-public-members/member-usage-local-flow-utilities.d.ts +16 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-local-flow-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-local-flow-utilities.js +151 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-reference-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-public-members/member-usage-reference-utilities.js +12 -5
- package/dist/domain/architecture/no-unused-public-members/member-usage-serialization-utilities.d.ts +30 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-serialization-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-serialization-utilities.js +107 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-type-utilities.d.ts +26 -4
- package/dist/domain/architecture/no-unused-public-members/member-usage-type-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-public-members/member-usage-type-utilities.js +77 -21
- package/dist/domain/architecture/no-unused-public-members/member-usage-utilities.d.ts +5 -1
- package/dist/domain/architecture/no-unused-public-members/member-usage-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-public-members/member-usage-utilities.js +11 -2
- package/dist/domain/architecture/no-unused-public-members/member-usage-value-utilities.d.ts +43 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-value-utilities.d.ts.map +1 -0
- package/dist/domain/architecture/no-unused-public-members/member-usage-value-utilities.js +126 -0
- package/dist/domain/architecture/no-unused-public-members/member-utilities.d.ts +3 -1
- package/dist/domain/architecture/no-unused-public-members/member-utilities.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-public-members/member-utilities.js +4 -3
- package/dist/domain/architecture/no-unused-public-members/rule.d.ts +12 -1
- package/dist/domain/architecture/no-unused-public-members/rule.d.ts.map +1 -1
- package/dist/domain/architecture/no-unused-public-members/rule.js +45 -35
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/package.json +13 -1
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import * as ts from "typescript";
|
|
2
|
+
import { carriesMember } from "./member-usage-value-utilities.js";
|
|
2
3
|
/**
|
|
3
4
|
* Gets the declared type of the host that owns a public member.
|
|
4
5
|
* @param member Member whose host type is needed.
|
|
@@ -34,7 +35,6 @@ const hasCompatibleMemberShape = (valueType, member, checker) => {
|
|
|
34
35
|
const observedProperty = checker.getPropertyOfType(observedType, member.memberName);
|
|
35
36
|
return (hostProperty !== void 0 &&
|
|
36
37
|
observedProperty !== void 0 &&
|
|
37
|
-
checker.isTypeAssignableTo(observedType, hostType) &&
|
|
38
38
|
checker.isTypeAssignableTo(hostType, observedType));
|
|
39
39
|
};
|
|
40
40
|
/**
|
|
@@ -57,40 +57,96 @@ const getContextualPropertyType = (objectType, propertyName, location, checker)
|
|
|
57
57
|
? void 0
|
|
58
58
|
: checker.getTypeOfSymbolAtLocation(property, location);
|
|
59
59
|
};
|
|
60
|
+
/**
|
|
61
|
+
* Gets the resolved parameter type for a call argument.
|
|
62
|
+
* @param call Call expression containing the argument.
|
|
63
|
+
* @param argument Argument expression to inspect.
|
|
64
|
+
* @param checker TypeScript type checker.
|
|
65
|
+
* @returns Parameter type when TypeScript resolves the call.
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const parameterType = getCallArgumentType(call, argument, checker);
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
const getCallArgumentType = (call, argument, checker) => {
|
|
72
|
+
const contextualType = checker.getContextualType(argument);
|
|
73
|
+
if (contextualType !== void 0) {
|
|
74
|
+
return contextualType;
|
|
75
|
+
}
|
|
76
|
+
const argumentIndex = call.arguments.indexOf(argument);
|
|
77
|
+
const signature = checker.getResolvedSignature(call);
|
|
78
|
+
const parameter = signature === void 0 ? void 0 : signature.parameters[argumentIndex];
|
|
79
|
+
return parameter === void 0
|
|
80
|
+
? void 0
|
|
81
|
+
: checker.getTypeOfSymbolAtLocation(parameter, call);
|
|
82
|
+
};
|
|
83
|
+
/**
|
|
84
|
+
* Checks whether a method declaration contains only a contract.
|
|
85
|
+
* @param declaration Candidate method declaration.
|
|
86
|
+
* @returns True when the declaration has no implementation body.
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const declarationOnly = isDeclarationOnlyMethod(declaration);
|
|
90
|
+
* ```
|
|
91
|
+
*/
|
|
92
|
+
const isDeclarationOnlyMethod = (declaration) => ts.isCallSignatureDeclaration(declaration) ||
|
|
93
|
+
ts.isFunctionTypeNode(declaration) ||
|
|
94
|
+
ts.isMethodSignature(declaration) ||
|
|
95
|
+
(ts.isMethodDeclaration(declaration) && declaration.body === void 0);
|
|
96
|
+
/**
|
|
97
|
+
* Resolves a named property or the string-index contract accepting it.
|
|
98
|
+
* @param type Object type whose member is being forwarded.
|
|
99
|
+
* @param member Member supplying the property name and type location.
|
|
100
|
+
* @param checker TypeScript type checker.
|
|
101
|
+
* @returns Explicit property type or string-index value type.
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const valueType = getPropertyOrIndexType(type, member, checker);
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
const getPropertyOrIndexType = (type, member, checker) => {
|
|
108
|
+
const property = checker.getPropertyOfType(type, member.memberName);
|
|
109
|
+
return property === void 0
|
|
110
|
+
? checker.getIndexTypeOfType(type, ts.IndexKind.String)
|
|
111
|
+
: checker.getTypeOfSymbolAtLocation(property, member.declaration);
|
|
112
|
+
};
|
|
60
113
|
/**
|
|
61
114
|
* Checks whether a typed handoff carries a member into a compatible contract.
|
|
62
|
-
* @param
|
|
115
|
+
* @param sourceExpression Value being forwarded.
|
|
63
116
|
* @param targetType Type expected at the receiving boundary.
|
|
64
117
|
* @param member Member whose usage is being checked.
|
|
65
118
|
* @param checker TypeScript type checker.
|
|
66
119
|
* @returns True when the receiving contract accepts the corresponding member.
|
|
67
120
|
* @example
|
|
68
121
|
* ```typescript
|
|
69
|
-
* const used = isMemberHandoff(
|
|
122
|
+
* const used = isMemberHandoff(expression, targetType, member, checker);
|
|
70
123
|
* ```
|
|
71
124
|
*/
|
|
72
|
-
const isMemberHandoff = (
|
|
73
|
-
if (
|
|
125
|
+
const isMemberHandoff = (sourceExpression, targetType, member, checker) => {
|
|
126
|
+
if (targetType === void 0) {
|
|
74
127
|
return false;
|
|
75
128
|
}
|
|
76
129
|
const hostType = checker.getNonNullableType(getMemberHostType(member, checker));
|
|
77
|
-
const forwardedType = checker.getNonNullableType(
|
|
130
|
+
const forwardedType = checker.getNonNullableType(checker.getTypeAtLocation(sourceExpression));
|
|
78
131
|
const receivingType = checker.getNonNullableType(targetType);
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
if (
|
|
83
|
-
|
|
84
|
-
receivingProperty === void 0 ||
|
|
85
|
-
!(checker.isTypeAssignableTo(forwardedType, hostType) ||
|
|
86
|
-
checker.isTypeAssignableTo(hostType, forwardedType)) ||
|
|
87
|
-
!checker.isTypeAssignableTo(hostType, receivingType)) {
|
|
132
|
+
if (receivingType.isUnion()) {
|
|
133
|
+
return receivingType.types.some((part) => isMemberHandoff(sourceExpression, part, member, checker));
|
|
134
|
+
}
|
|
135
|
+
if (checker.getPropertyOfType(receivingType, member.memberName) === void 0 &&
|
|
136
|
+
!carriesMember(sourceExpression, checker, member)) {
|
|
88
137
|
return false;
|
|
89
138
|
}
|
|
90
|
-
const hostPropertyType =
|
|
91
|
-
const
|
|
92
|
-
|
|
93
|
-
|
|
139
|
+
const hostPropertyType = getPropertyOrIndexType(hostType, member, checker);
|
|
140
|
+
const forwardedPropertyType = getPropertyOrIndexType(forwardedType, member, checker);
|
|
141
|
+
const receivingPropertyType = getPropertyOrIndexType(receivingType, member, checker);
|
|
142
|
+
return (hostPropertyType !== void 0 &&
|
|
143
|
+
forwardedPropertyType !== void 0 &&
|
|
144
|
+
receivingPropertyType !== void 0 &&
|
|
145
|
+
(checker.isTypeAssignableTo(forwardedType, hostType) ||
|
|
146
|
+
checker.isTypeAssignableTo(hostType, forwardedType)) &&
|
|
147
|
+
checker.isTypeAssignableTo(hostType, receivingType) &&
|
|
148
|
+
(checker.isTypeAssignableTo(hostPropertyType, receivingPropertyType) ||
|
|
149
|
+
checker.isTypeAssignableTo(receivingPropertyType, hostPropertyType)));
|
|
94
150
|
};
|
|
95
|
-
export { getContextualPropertyType, hasCompatibleMemberShape, isMemberHandoff };
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLXVzYWdlLXR5cGUtdXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi9hcmNoaXRlY3R1cmUvbm8tdW51c2VkLXB1YmxpYy1tZW1iZXJzL21lbWJlci11c2FnZS10eXBlLXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUlqQzs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLGlCQUFpQixHQUFHLENBQ3hCLE1BQW9CLEVBQ3BCLE9BQXVCLEVBQ2QsRUFBRTtJQUNYLE1BQU0sV0FBVyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUM7SUFDM0MsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFDLHFCQUFxQixDQUFDLFdBQVcsQ0FBQztRQUNwRCxDQUFDLENBQUMsV0FBVyxDQUFDLElBQUk7UUFDbEIsQ0FBQyxDQUFDLFdBQVcsQ0FBQztJQUVoQixPQUFPLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztBQUM3QyxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7OztHQVVHO0FBQ0gsTUFBTSx3QkFBd0IsR0FBRyxDQUMvQixTQUFrQixFQUNsQixNQUFvQixFQUNwQixPQUF1QixFQUNkLEVBQUU7SUFDWCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQ3pDLGlCQUFpQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FDbkMsQ0FBQztJQUNGLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUMzRCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1RSxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FDaEQsWUFBWSxFQUNaLE1BQU0sQ0FBQyxVQUFVLENBQ2xCLENBQUM7SUFFRixPQUFPLENBQ0wsWUFBWSxLQUFLLEtBQUssQ0FBQztRQUN2QixnQkFBZ0IsS0FBSyxLQUFLLENBQUM7UUFDM0IsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxRQUFRLENBQUM7UUFDbEQsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxZQUFZLENBQUMsQ0FDbkQsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSx5QkFBeUIsR0FBRyxDQUNoQyxVQUErQixFQUMvQixZQUFvQixFQUNwQixRQUFpQixFQUNqQixPQUF1QixFQUNGLEVBQUU7SUFDdkIsTUFBTSxRQUFRLEdBQ1osVUFBVSxLQUFLLEtBQUssQ0FBQztRQUNuQixDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ1IsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDLENBQUM7SUFFMUQsT0FBTyxRQUFRLEtBQUssS0FBSyxDQUFDO1FBQ3hCLENBQUMsQ0FBQyxLQUFLLENBQUM7UUFDUixDQUFDLENBQUMsT0FBTyxDQUFDLHlCQUF5QixDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsQ0FBQztBQUM1RCxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQU0sZUFBZSxHQUFHLENBQ3RCLFVBQStCLEVBQy9CLFVBQStCLEVBQy9CLE1BQW9CLEVBQ3BCLE9BQXVCLEVBQ2QsRUFBRTtJQUNYLElBQUksVUFBVSxLQUFLLEtBQUssQ0FBQyxJQUFJLFVBQVUsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25ELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FDekMsaUJBQWlCLENBQUMsTUFBTSxFQUFFLE9BQU8sQ0FBQyxDQUNuQyxDQUFDO0lBQ0YsTUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBQzdELE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM3RCxNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUM1RSxNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FDakQsYUFBYSxFQUNiLE1BQU0sQ0FBQyxVQUFVLENBQ2xCLENBQUM7SUFDRixNQUFNLGlCQUFpQixHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FDakQsYUFBYSxFQUNiLE1BQU0sQ0FBQyxVQUFVLENBQ2xCLENBQUM7SUFFRixJQUNFLFlBQVksS0FBSyxLQUFLLENBQUM7UUFDdkIsaUJBQWlCLEtBQUssS0FBSyxDQUFDO1FBQzVCLGlCQUFpQixLQUFLLEtBQUssQ0FBQztRQUM1QixDQUFDLENBQ0MsT0FBTyxDQUFDLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxRQUFRLENBQUM7WUFDbkQsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUMsQ0FDcEQ7UUFDRCxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLEVBQ3BELENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFFRCxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyx5QkFBeUIsQ0FDeEQsWUFBWSxFQUNaLE1BQU0sQ0FBQyxXQUFXLENBQ25CLENBQUM7SUFDRixNQUFNLHFCQUFxQixHQUFHLE9BQU8sQ0FBQyx5QkFBeUIsQ0FDN0QsaUJBQWlCLEVBQ2pCLE1BQU0sQ0FBQyxXQUFXLENBQ25CLENBQUM7SUFFRixPQUFPLENBQ0wsT0FBTyxDQUFDLGtCQUFrQixDQUFDLGdCQUFnQixFQUFFLHFCQUFxQixDQUFDO1FBQ25FLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxxQkFBcUIsRUFBRSxnQkFBZ0IsQ0FBQyxDQUNwRSxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLHlCQUF5QixFQUFFLHdCQUF3QixFQUFFLGVBQWUsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuaW1wb3J0IHR5cGUgeyBQdWJsaWNNZW1iZXIgfSBmcm9tIFwiLi9tZW1iZXItZGVjbGFyYXRpb24tdXRpbGl0aWVzXCI7XG5cbi8qKlxuICogR2V0cyB0aGUgZGVjbGFyZWQgdHlwZSBvZiB0aGUgaG9zdCB0aGF0IG93bnMgYSBwdWJsaWMgbWVtYmVyLlxuICogQHBhcmFtIG1lbWJlciBNZW1iZXIgd2hvc2UgaG9zdCB0eXBlIGlzIG5lZWRlZC5cbiAqIEBwYXJhbSBjaGVja2VyIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyLlxuICogQHJldHVybnMgSG9zdCB0eXBlIHVzZWQgZm9yIHN0cnVjdHVyYWwgdXNhZ2UgY2hlY2tzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGhvc3RUeXBlID0gZ2V0TWVtYmVySG9zdFR5cGUobWVtYmVyLCBjaGVja2VyKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRNZW1iZXJIb3N0VHlwZSA9IChcbiAgbWVtYmVyOiBQdWJsaWNNZW1iZXIsXG4gIGNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuKTogdHMuVHlwZSA9PiB7XG4gIGNvbnN0IGRlY2xhcmF0aW9uID0gbWVtYmVyLmhvc3REZWNsYXJhdGlvbjtcbiAgY29uc3QgbG9jYXRpb24gPSB0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb24pXG4gICAgPyBkZWNsYXJhdGlvbi5uYW1lXG4gICAgOiBkZWNsYXJhdGlvbjtcblxuICByZXR1cm4gY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihsb2NhdGlvbik7XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgdmFsdWUgdHlwZSBjYXJyaWVzIGEgc3RydWN0dXJhbGx5IGNvcnJlc3BvbmRpbmcgbWVtYmVyLlxuICogQHBhcmFtIHZhbHVlVHlwZSBUeXBlIG9mIHRoZSB2YWx1ZSBiZWluZyBpbnNwZWN0ZWQuXG4gKiBAcGFyYW0gbWVtYmVyIE1lbWJlciB3aG9zZSBob3N0IHNoYXBlIGlzIHJlcXVpcmVkLlxuICogQHBhcmFtIGNoZWNrZXIgVHlwZVNjcmlwdCB0eXBlIGNoZWNrZXIuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gVHlwZVNjcmlwdCByZWxhdGVzIHRoZSB2YWx1ZSBhbmQgaG9zdCBzaGFwZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWF0Y2hlcyA9IGhhc0NvbXBhdGlibGVNZW1iZXJTaGFwZSh2YWx1ZVR5cGUsIG1lbWJlciwgY2hlY2tlcik7XG4gKiBgYGBcbiAqL1xuY29uc3QgaGFzQ29tcGF0aWJsZU1lbWJlclNoYXBlID0gKFxuICB2YWx1ZVR5cGU6IHRzLlR5cGUsXG4gIG1lbWJlcjogUHVibGljTWVtYmVyLFxuICBjaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBob3N0VHlwZSA9IGNoZWNrZXIuZ2V0Tm9uTnVsbGFibGVUeXBlKFxuICAgIGdldE1lbWJlckhvc3RUeXBlKG1lbWJlciwgY2hlY2tlciksXG4gICk7XG4gIGNvbnN0IG9ic2VydmVkVHlwZSA9IGNoZWNrZXIuZ2V0Tm9uTnVsbGFibGVUeXBlKHZhbHVlVHlwZSk7XG4gIGNvbnN0IGhvc3RQcm9wZXJ0eSA9IGNoZWNrZXIuZ2V0UHJvcGVydHlPZlR5cGUoaG9zdFR5cGUsIG1lbWJlci5tZW1iZXJOYW1lKTtcbiAgY29uc3Qgb2JzZXJ2ZWRQcm9wZXJ0eSA9IGNoZWNrZXIuZ2V0UHJvcGVydHlPZlR5cGUoXG4gICAgb2JzZXJ2ZWRUeXBlLFxuICAgIG1lbWJlci5tZW1iZXJOYW1lLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgaG9zdFByb3BlcnR5ICE9PSB2b2lkIDAgJiZcbiAgICBvYnNlcnZlZFByb3BlcnR5ICE9PSB2b2lkIDAgJiZcbiAgICBjaGVja2VyLmlzVHlwZUFzc2lnbmFibGVUbyhvYnNlcnZlZFR5cGUsIGhvc3RUeXBlKSAmJlxuICAgIGNoZWNrZXIuaXNUeXBlQXNzaWduYWJsZVRvKGhvc3RUeXBlLCBvYnNlcnZlZFR5cGUpXG4gICk7XG59O1xuXG4vKipcbiAqIEdldHMgdGhlIHByb3BlcnR5IHR5cGUgc3VwcGxpZWQgYnkgYW4gb2JqZWN0J3MgY29udGV4dHVhbCBjb250cmFjdC5cbiAqIEBwYXJhbSBvYmplY3RUeXBlIEV4cGVjdGVkIHNoYXBlIGZvciB0aGUgb2JqZWN0IGxpdGVyYWwuXG4gKiBAcGFyYW0gcHJvcGVydHlOYW1lIFByb3BlcnR5IG5hbWUgaW4gdGhlIG9iamVjdCBsaXRlcmFsLlxuICogQHBhcmFtIGxvY2F0aW9uIE5vZGUgdXNlZCB0byByZXNvbHZlIHRoZSBwcm9wZXJ0eSB0eXBlLlxuICogQHBhcmFtIGNoZWNrZXIgVHlwZVNjcmlwdCB0eXBlIGNoZWNrZXIuXG4gKiBAcmV0dXJucyBDb250ZXh0dWFsIHByb3BlcnR5IHR5cGUgd2hlbiBvbmUgaXMgZGVjbGFyZWQuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdHlwZSA9IGdldENvbnRleHR1YWxQcm9wZXJ0eVR5cGUob2JqZWN0VHlwZSwgXCJkb2NzXCIsIG5vZGUsIGNoZWNrZXIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldENvbnRleHR1YWxQcm9wZXJ0eVR5cGUgPSAoXG4gIG9iamVjdFR5cGU6IHRzLlR5cGUgfCB1bmRlZmluZWQsXG4gIHByb3BlcnR5TmFtZTogc3RyaW5nLFxuICBsb2NhdGlvbjogdHMuTm9kZSxcbiAgY2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4pOiB0cy5UeXBlIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcHJvcGVydHkgPVxuICAgIG9iamVjdFR5cGUgPT09IHZvaWQgMFxuICAgICAgPyB2b2lkIDBcbiAgICAgIDogY2hlY2tlci5nZXRQcm9wZXJ0eU9mVHlwZShvYmplY3RUeXBlLCBwcm9wZXJ0eU5hbWUpO1xuXG4gIHJldHVybiBwcm9wZXJ0eSA9PT0gdm9pZCAwXG4gICAgPyB2b2lkIDBcbiAgICA6IGNoZWNrZXIuZ2V0VHlwZU9mU3ltYm9sQXRMb2NhdGlvbihwcm9wZXJ0eSwgbG9jYXRpb24pO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHR5cGVkIGhhbmRvZmYgY2FycmllcyBhIG1lbWJlciBpbnRvIGEgY29tcGF0aWJsZSBjb250cmFjdC5cbiAqIEBwYXJhbSBzb3VyY2VUeXBlIFR5cGUgb2YgdGhlIHZhbHVlIGJlaW5nIGZvcndhcmRlZC5cbiAqIEBwYXJhbSB0YXJnZXRUeXBlIFR5cGUgZXhwZWN0ZWQgYXQgdGhlIHJlY2VpdmluZyBib3VuZGFyeS5cbiAqIEBwYXJhbSBtZW1iZXIgTWVtYmVyIHdob3NlIHVzYWdlIGlzIGJlaW5nIGNoZWNrZWQuXG4gKiBAcGFyYW0gY2hlY2tlciBUeXBlU2NyaXB0IHR5cGUgY2hlY2tlci5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgcmVjZWl2aW5nIGNvbnRyYWN0IGFjY2VwdHMgdGhlIGNvcnJlc3BvbmRpbmcgbWVtYmVyLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHVzZWQgPSBpc01lbWJlckhhbmRvZmYoc291cmNlVHlwZSwgdGFyZ2V0VHlwZSwgbWVtYmVyLCBjaGVja2VyKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc01lbWJlckhhbmRvZmYgPSAoXG4gIHNvdXJjZVR5cGU6IHRzLlR5cGUgfCB1bmRlZmluZWQsXG4gIHRhcmdldFR5cGU6IHRzLlR5cGUgfCB1bmRlZmluZWQsXG4gIG1lbWJlcjogUHVibGljTWVtYmVyLFxuICBjaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAoc291cmNlVHlwZSA9PT0gdm9pZCAwIHx8IHRhcmdldFR5cGUgPT09IHZvaWQgMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGhvc3RUeXBlID0gY2hlY2tlci5nZXROb25OdWxsYWJsZVR5cGUoXG4gICAgZ2V0TWVtYmVySG9zdFR5cGUobWVtYmVyLCBjaGVja2VyKSxcbiAgKTtcbiAgY29uc3QgZm9yd2FyZGVkVHlwZSA9IGNoZWNrZXIuZ2V0Tm9uTnVsbGFibGVUeXBlKHNvdXJjZVR5cGUpO1xuICBjb25zdCByZWNlaXZpbmdUeXBlID0gY2hlY2tlci5nZXROb25OdWxsYWJsZVR5cGUodGFyZ2V0VHlwZSk7XG4gIGNvbnN0IGhvc3RQcm9wZXJ0eSA9IGNoZWNrZXIuZ2V0UHJvcGVydHlPZlR5cGUoaG9zdFR5cGUsIG1lbWJlci5tZW1iZXJOYW1lKTtcbiAgY29uc3QgZm9yd2FyZGVkUHJvcGVydHkgPSBjaGVja2VyLmdldFByb3BlcnR5T2ZUeXBlKFxuICAgIGZvcndhcmRlZFR5cGUsXG4gICAgbWVtYmVyLm1lbWJlck5hbWUsXG4gICk7XG4gIGNvbnN0IHJlY2VpdmluZ1Byb3BlcnR5ID0gY2hlY2tlci5nZXRQcm9wZXJ0eU9mVHlwZShcbiAgICByZWNlaXZpbmdUeXBlLFxuICAgIG1lbWJlci5tZW1iZXJOYW1lLFxuICApO1xuXG4gIGlmIChcbiAgICBob3N0UHJvcGVydHkgPT09IHZvaWQgMCB8fFxuICAgIGZvcndhcmRlZFByb3BlcnR5ID09PSB2b2lkIDAgfHxcbiAgICByZWNlaXZpbmdQcm9wZXJ0eSA9PT0gdm9pZCAwIHx8XG4gICAgIShcbiAgICAgIGNoZWNrZXIuaXNUeXBlQXNzaWduYWJsZVRvKGZvcndhcmRlZFR5cGUsIGhvc3RUeXBlKSB8fFxuICAgICAgY2hlY2tlci5pc1R5cGVBc3NpZ25hYmxlVG8oaG9zdFR5cGUsIGZvcndhcmRlZFR5cGUpXG4gICAgKSB8fFxuICAgICFjaGVja2VyLmlzVHlwZUFzc2lnbmFibGVUbyhob3N0VHlwZSwgcmVjZWl2aW5nVHlwZSlcbiAgKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgaG9zdFByb3BlcnR5VHlwZSA9IGNoZWNrZXIuZ2V0VHlwZU9mU3ltYm9sQXRMb2NhdGlvbihcbiAgICBob3N0UHJvcGVydHksXG4gICAgbWVtYmVyLmRlY2xhcmF0aW9uLFxuICApO1xuICBjb25zdCByZWNlaXZpbmdQcm9wZXJ0eVR5cGUgPSBjaGVja2VyLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24oXG4gICAgcmVjZWl2aW5nUHJvcGVydHksXG4gICAgbWVtYmVyLmRlY2xhcmF0aW9uLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgY2hlY2tlci5pc1R5cGVBc3NpZ25hYmxlVG8oaG9zdFByb3BlcnR5VHlwZSwgcmVjZWl2aW5nUHJvcGVydHlUeXBlKSB8fFxuICAgIGNoZWNrZXIuaXNUeXBlQXNzaWduYWJsZVRvKHJlY2VpdmluZ1Byb3BlcnR5VHlwZSwgaG9zdFByb3BlcnR5VHlwZSlcbiAgKTtcbn07XG5cbmV4cG9ydCB7IGdldENvbnRleHR1YWxQcm9wZXJ0eVR5cGUsIGhhc0NvbXBhdGlibGVNZW1iZXJTaGFwZSwgaXNNZW1iZXJIYW5kb2ZmIH07XG4iXX0=
|
|
151
|
+
export { getCallArgumentType, getContextualPropertyType, hasCompatibleMemberShape, isDeclarationOnlyMethod, isMemberHandoff, };
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLXVzYWdlLXR5cGUtdXRpbGl0aWVzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RvbWFpbi9hcmNoaXRlY3R1cmUvbm8tdW51c2VkLXB1YmxpYy1tZW1iZXJzL21lbWJlci11c2FnZS10eXBlLXV0aWxpdGllcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUlqQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFL0Q7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBRyxDQUN4QixNQUFvQixFQUNwQixPQUF1QixFQUNkLEVBQUU7SUFDWCxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsZUFBZSxDQUFDO0lBQzNDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxXQUFXLENBQUM7UUFDcEQsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxJQUFJO1FBQ2xCLENBQUMsQ0FBQyxXQUFXLENBQUM7SUFFaEIsT0FBTyxPQUFPLENBQUMsaUJBQWlCLENBQUMsUUFBUSxDQUFDLENBQUM7QUFDN0MsQ0FBQyxDQUFDO0FBRUY7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sd0JBQXdCLEdBQUcsQ0FDL0IsU0FBa0IsRUFDbEIsTUFBb0IsRUFDcEIsT0FBdUIsRUFDZCxFQUFFO0lBQ1gsTUFBTSxRQUFRLEdBQUcsT0FBTyxDQUFDLGtCQUFrQixDQUN6QyxpQkFBaUIsQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLENBQ25DLENBQUM7SUFDRixNQUFNLFlBQVksR0FBRyxPQUFPLENBQUMsa0JBQWtCLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDM0QsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLGlCQUFpQixDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUUsTUFBTSxnQkFBZ0IsR0FBRyxPQUFP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YUFBYSxFQUNiLE1BQU0sRUFDTixPQUFPLENBQ1IsQ0FBQztJQUVGLE9BQU8sQ0FDTCxnQkFBZ0IsS0FBSyxLQUFLLENBQUM7UUFDM0IscUJBQXFCLEtBQUssS0FBSyxDQUFDO1FBQ2hDLHFCQUFxQixLQUFLLEtBQUssQ0FBQztRQUNoQyxDQUFDLE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxhQUFhLEVBQUUsUUFBUSxDQUFDO1lBQ2xELE9BQU8sQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsYUFBYSxDQUFDLENBQUM7UUFDdEQsT0FBTyxDQUFDLGtCQUFrQixDQUFDLFFBQVEsRUFBRSxhQUFhLENBQUM7UUFDbkQsQ0FBQyxPQUFPLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLEVBQUUscUJBQXFCLENBQUM7WUFDbEUsT0FBTyxDQUFDLGtCQUFrQixDQUFDLHFCQUFxQixFQUFFLGdCQUFnQixDQUFDLENBQUMsQ0FDdkUsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE9BQU8sRUFDTCxtQkFBbUIsRUFDbkIseUJBQXlCLEVBQ3pCLHdCQUF3QixFQUN4Qix1QkFBdUIsRUFDdkIsZUFBZSxHQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuaW1wb3J0IHR5cGUgeyBQdWJsaWNNZW1iZXIgfSBmcm9tIFwiLi9tZW1iZXItZGVjbGFyYXRpb24tdXRpbGl0aWVzXCI7XG5cbmltcG9ydCB7IGNhcnJpZXNNZW1iZXIgfSBmcm9tIFwiLi9tZW1iZXItdXNhZ2UtdmFsdWUtdXRpbGl0aWVzXCI7XG5cbi8qKlxuICogR2V0cyB0aGUgZGVjbGFyZWQgdHlwZSBvZiB0aGUgaG9zdCB0aGF0IG93bnMgYSBwdWJsaWMgbWVtYmVyLlxuICogQHBhcmFtIG1lbWJlciBNZW1iZXIgd2hvc2UgaG9zdCB0eXBlIGlzIG5lZWRlZC5cbiAqIEBwYXJhbSBjaGVja2VyIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyLlxuICogQHJldHVybnMgSG9zdCB0eXBlIHVzZWQgZm9yIHN0cnVjdHVyYWwgdXNhZ2UgY2hlY2tzLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IGhvc3RUeXBlID0gZ2V0TWVtYmVySG9zdFR5cGUobWVtYmVyLCBjaGVja2VyKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRNZW1iZXJIb3N0VHlwZSA9IChcbiAgbWVtYmVyOiBQdWJsaWNNZW1iZXIsXG4gIGNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuKTogdHMuVHlwZSA9PiB7XG4gIGNvbnN0IGRlY2xhcmF0aW9uID0gbWVtYmVyLmhvc3REZWNsYXJhdGlvbjtcbiAgY29uc3QgbG9jYXRpb24gPSB0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24oZGVjbGFyYXRpb24pXG4gICAgPyBkZWNsYXJhdGlvbi5uYW1lXG4gICAgOiBkZWNsYXJhdGlvbjtcblxuICByZXR1cm4gY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihsb2NhdGlvbik7XG59O1xuXG4vKipcbiAqIENoZWNrcyB3aGV0aGVyIGEgdmFsdWUgdHlwZSBjYXJyaWVzIGEgc3RydWN0dXJhbGx5IGNvcnJlc3BvbmRpbmcgbWVtYmVyLlxuICogQHBhcmFtIHZhbHVlVHlwZSBUeXBlIG9mIHRoZSB2YWx1ZSBiZWluZyBpbnNwZWN0ZWQuXG4gKiBAcGFyYW0gbWVtYmVyIE1lbWJlciB3aG9zZSBob3N0IHNoYXBlIGlzIHJlcXVpcmVkLlxuICogQHBhcmFtIGNoZWNrZXIgVHlwZVNjcmlwdCB0eXBlIGNoZWNrZXIuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gVHlwZVNjcmlwdCByZWxhdGVzIHRoZSB2YWx1ZSBhbmQgaG9zdCBzaGFwZXMuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWF0Y2hlcyA9IGhhc0NvbXBhdGlibGVNZW1iZXJTaGFwZSh2YWx1ZVR5cGUsIG1lbWJlciwgY2hlY2tlcik7XG4gKiBgYGBcbiAqL1xuY29uc3QgaGFzQ29tcGF0aWJsZU1lbWJlclNoYXBlID0gKFxuICB2YWx1ZVR5cGU6IHRzLlR5cGUsXG4gIG1lbWJlcjogUHVibGljTWVtYmVyLFxuICBjaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbik6IGJvb2xlYW4gPT4ge1xuICBjb25zdCBob3N0VHlwZSA9IGNoZWNrZXIuZ2V0Tm9uTnVsbGFibGVUeXBlKFxuICAgIGdldE1lbWJlckhvc3RUeXBlKG1lbWJlciwgY2hlY2tlciksXG4gICk7XG4gIGNvbnN0IG9ic2VydmVkVHlwZSA9IGNoZWNrZXIuZ2V0Tm9uTnVsbGFibGVUeXBlKHZhbHVlVHlwZSk7XG4gIGNvbnN0IGhvc3RQcm9wZXJ0eSA9IGNoZWNrZXIuZ2V0UHJvcGVydHlPZlR5cGUoaG9zdFR5cGUsIG1lbWJlci5tZW1iZXJOYW1lKTtcbiAgY29uc3Qgb2JzZXJ2ZWRQcm9wZXJ0eSA9IGNoZWNrZXIuZ2V0UHJvcGVydHlPZlR5cGUoXG4gICAgb2JzZXJ2ZWRUeXBlLFxuICAgIG1lbWJlci5tZW1iZXJOYW1lLFxuICApO1xuXG4gIHJldHVybiAoXG4gICAgaG9zdFByb3BlcnR5ICE9PSB2b2lkIDAgJiZcbiAgICBvYnNlcnZlZFByb3BlcnR5ICE9PSB2b2lkIDAgJiZcbiAgICBjaGVja2VyLmlzVHlwZUFzc2lnbmFibGVUbyhob3N0VHlwZSwgb2JzZXJ2ZWRUeXBlKVxuICApO1xufTtcblxuLyoqXG4gKiBHZXRzIHRoZSBwcm9wZXJ0eSB0eXBlIHN1cHBsaWVkIGJ5IGFuIG9iamVjdCdzIGNvbnRleHR1YWwgY29udHJhY3QuXG4gKiBAcGFyYW0gb2JqZWN0VHlwZSBFeHBlY3RlZCBzaGFwZSBmb3IgdGhlIG9iamVjdCBsaXRlcmFsLlxuICogQHBhcmFtIHByb3BlcnR5TmFtZSBQcm9wZXJ0eSBuYW1lIGluIHRoZSBvYmplY3QgbGl0ZXJhbC5cbiAqIEBwYXJhbSBsb2NhdGlvbiBOb2RlIHVzZWQgdG8gcmVzb2x2ZSB0aGUgcHJvcGVydHkgdHlwZS5cbiAqIEBwYXJhbSBjaGVja2VyIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyLlxuICogQHJldHVybnMgQ29udGV4dHVhbCBwcm9wZXJ0eSB0eXBlIHdoZW4gb25lIGlzIGRlY2xhcmVkLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHR5cGUgPSBnZXRDb250ZXh0dWFsUHJvcGVydHlUeXBlKG9iamVjdFR5cGUsIFwiZG9jc1wiLCBub2RlLCBjaGVja2VyKTtcbiAqIGBgYFxuICovXG5jb25zdCBnZXRDb250ZXh0dWFsUHJvcGVydHlUeXBlID0gKFxuICBvYmplY3RUeXBlOiB0cy5UeXBlIHwgdW5kZWZpbmVkLFxuICBwcm9wZXJ0eU5hbWU6IHN0cmluZyxcbiAgbG9jYXRpb246IHRzLk5vZGUsXG4gIGNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuKTogdHMuVHlwZSB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHByb3BlcnR5ID1cbiAgICBvYmplY3RUeXBlID09PSB2b2lkIDBcbiAgICAgID8gdm9pZCAwXG4gICAgICA6IGNoZWNrZXIuZ2V0UHJvcGVydHlPZlR5cGUob2JqZWN0VHlwZSwgcHJvcGVydHlOYW1lKTtcblxuICByZXR1cm4gcHJvcGVydHkgPT09IHZvaWQgMFxuICAgID8gdm9pZCAwXG4gICAgOiBjaGVja2VyLmdldFR5cGVPZlN5bWJvbEF0TG9jYXRpb24ocHJvcGVydHksIGxvY2F0aW9uKTtcbn07XG5cbi8qKlxuICogR2V0cyB0aGUgcmVzb2x2ZWQgcGFyYW1ldGVyIHR5cGUgZm9yIGEgY2FsbCBhcmd1bWVudC5cbiAqIEBwYXJhbSBjYWxsIENhbGwgZXhwcmVzc2lvbiBjb250YWluaW5nIHRoZSBhcmd1bWVudC5cbiAqIEBwYXJhbSBhcmd1bWVudCBBcmd1bWVudCBleHByZXNzaW9uIHRvIGluc3BlY3QuXG4gKiBAcGFyYW0gY2hlY2tlciBUeXBlU2NyaXB0IHR5cGUgY2hlY2tlci5cbiAqIEByZXR1cm5zIFBhcmFtZXRlciB0eXBlIHdoZW4gVHlwZVNjcmlwdCByZXNvbHZlcyB0aGUgY2FsbC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBwYXJhbWV0ZXJUeXBlID0gZ2V0Q2FsbEFyZ3VtZW50VHlwZShjYWxsLCBhcmd1bWVudCwgY2hlY2tlcik7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0Q2FsbEFyZ3VtZW50VHlwZSA9IChcbiAgY2FsbDogdHMuQ2FsbEV4cHJlc3Npb24sXG4gIGFyZ3VtZW50OiB0cy5FeHByZXNzaW9uLFxuICBjaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbik6IHRzLlR5cGUgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBjb250ZXh0dWFsVHlwZSA9IGNoZWNrZXIuZ2V0Q29udGV4dHVhbFR5cGUoYXJndW1lbnQpO1xuXG4gIGlmIChjb250ZXh0dWFsVHlwZSAhPT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGNvbnRleHR1YWxUeXBlO1xuICB9XG5cbiAgY29uc3QgYXJndW1lbnRJbmRleCA9IGNhbGwuYXJndW1lbnRzLmluZGV4T2YoYXJndW1lbnQpO1xuICBjb25zdCBzaWduYXR1cmUgPSBjaGVja2VyLmdldFJlc29sdmVkU2lnbmF0dXJlKGNhbGwpO1xuICBjb25zdCBwYXJhbWV0ZXIgPVxuICAgIHNpZ25hdHVyZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogc2lnbmF0dXJlLnBhcmFtZXRlcnNbYXJndW1lbnRJbmRleF07XG5cbiAgcmV0dXJuIHBhcmFtZXRlciA9PT0gdm9pZCAwXG4gICAgPyB2b2lkIDBcbiAgICA6IGNoZWNrZXIuZ2V0VHlwZU9mU3ltYm9sQXRMb2NhdGlvbihwYXJhbWV0ZXIsIGNhbGwpO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIG1ldGhvZCBkZWNsYXJhdGlvbiBjb250YWlucyBvbmx5IGEgY29udHJhY3QuXG4gKiBAcGFyYW0gZGVjbGFyYXRpb24gQ2FuZGlkYXRlIG1ldGhvZCBkZWNsYXJhdGlvbi5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgZGVjbGFyYXRpb24gaGFzIG5vIGltcGxlbWVudGF0aW9uIGJvZHkuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZGVjbGFyYXRpb25Pbmx5ID0gaXNEZWNsYXJhdGlvbk9ubHlNZXRob2QoZGVjbGFyYXRpb24pO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzRGVjbGFyYXRpb25Pbmx5TWV0aG9kID0gKGRlY2xhcmF0aW9uOiB0cy5Ob2RlKTogYm9vbGVhbiA9PlxuICB0cy5pc0NhbGxTaWduYXR1cmVEZWNsYXJhdGlvbihkZWNsYXJhdGlvbikgfHxcbiAgdHMuaXNGdW5jdGlvblR5cGVOb2RlKGRlY2xhcmF0aW9uKSB8fFxuICB0cy5pc01ldGhvZFNpZ25hdHVyZShkZWNsYXJhdGlvbikgfHxcbiAgKHRzLmlzTWV0aG9kRGVjbGFyYXRpb24oZGVjbGFyYXRpb24pICYmIGRlY2xhcmF0aW9uLmJvZHkgPT09IHZvaWQgMCk7XG5cbi8qKlxuICogUmVzb2x2ZXMgYSBuYW1lZCBwcm9wZXJ0eSBvciB0aGUgc3RyaW5nLWluZGV4IGNvbnRyYWN0IGFjY2VwdGluZyBpdC5cbiAqIEBwYXJhbSB0eXBlIE9iamVjdCB0eXBlIHdob3NlIG1lbWJlciBpcyBiZWluZyBmb3J3YXJkZWQuXG4gKiBAcGFyYW0gbWVtYmVyIE1lbWJlciBzdXBwbHlpbmcgdGhlIHByb3BlcnR5IG5hbWUgYW5kIHR5cGUgbG9jYXRpb24uXG4gKiBAcGFyYW0gY2hlY2tlciBUeXBlU2NyaXB0IHR5cGUgY2hlY2tlci5cbiAqIEByZXR1cm5zIEV4cGxpY2l0IHByb3BlcnR5IHR5cGUgb3Igc3RyaW5nLWluZGV4IHZhbHVlIHR5cGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdmFsdWVUeXBlID0gZ2V0UHJvcGVydHlPckluZGV4VHlwZSh0eXBlLCBtZW1iZXIsIGNoZWNrZXIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFByb3BlcnR5T3JJbmRleFR5cGUgPSAoXG4gIHR5cGU6IHRzLlR5cGUsXG4gIG1lbWJlcjogUHVibGljTWVtYmVyLFxuICBjaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbik6IHRzLlR5cGUgfCB1bmRlZmluZWQgPT4ge1xuICBjb25zdCBwcm9wZXJ0eSA9IGNoZWNrZXIuZ2V0UHJvcGVydHlPZlR5cGUodHlwZSwgbWVtYmVyLm1lbWJlck5hbWUpO1xuXG4gIHJldHVybiBwcm9wZXJ0eSA9PT0gdm9pZCAwXG4gICAgPyBjaGVja2VyLmdldEluZGV4VHlwZU9mVHlwZSh0eXBlLCB0cy5JbmRleEtpbmQuU3RyaW5nKVxuICAgIDogY2hlY2tlci5nZXRUeXBlT2ZTeW1ib2xBdExvY2F0aW9uKHByb3BlcnR5LCBtZW1iZXIuZGVjbGFyYXRpb24pO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIHR5cGVkIGhhbmRvZmYgY2FycmllcyBhIG1lbWJlciBpbnRvIGEgY29tcGF0aWJsZSBjb250cmFjdC5cbiAqIEBwYXJhbSBzb3VyY2VFeHByZXNzaW9uIFZhbHVlIGJlaW5nIGZvcndhcmRlZC5cbiAqIEBwYXJhbSB0YXJnZXRUeXBlIFR5cGUgZXhwZWN0ZWQgYXQgdGhlIHJlY2VpdmluZyBib3VuZGFyeS5cbiAqIEBwYXJhbSBtZW1iZXIgTWVtYmVyIHdob3NlIHVzYWdlIGlzIGJlaW5nIGNoZWNrZWQuXG4gKiBAcGFyYW0gY2hlY2tlciBUeXBlU2NyaXB0IHR5cGUgY2hlY2tlci5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgcmVjZWl2aW5nIGNvbnRyYWN0IGFjY2VwdHMgdGhlIGNvcnJlc3BvbmRpbmcgbWVtYmVyLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHVzZWQgPSBpc01lbWJlckhhbmRvZmYoZXhwcmVzc2lvbiwgdGFyZ2V0VHlwZSwgbWVtYmVyLCBjaGVja2VyKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc01lbWJlckhhbmRvZmYgPSAoXG4gIHNvdXJjZUV4cHJlc3Npb246IHRzLkV4cHJlc3Npb24sXG4gIHRhcmdldFR5cGU6IHRzLlR5cGUgfCB1bmRlZmluZWQsXG4gIG1lbWJlcjogUHVibGljTWVtYmVyLFxuICBjaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAodGFyZ2V0VHlwZSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgaG9zdFR5cGUgPSBjaGVja2VyLmdldE5vbk51bGxhYmxlVHlwZShcbiAgICBnZXRNZW1iZXJIb3N0VHlwZShtZW1iZXIsIGNoZWNrZXIpLFxuICApO1xuICBjb25zdCBmb3J3YXJkZWRUeXBlID0gY2hlY2tlci5nZXROb25OdWxsYWJsZVR5cGUoXG4gICAgY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihzb3VyY2VFeHByZXNzaW9uKSxcbiAgKTtcbiAgY29uc3QgcmVjZWl2aW5nVHlwZSA9IGNoZWNrZXIuZ2V0Tm9uTnVsbGFibGVUeXBlKHRhcmdldFR5cGUpO1xuXG4gIGlmIChyZWNlaXZpbmdUeXBlLmlzVW5pb24oKSkge1xuICAgIHJldHVybiByZWNlaXZpbmdUeXBlLnR5cGVzLnNvbWUoKHBhcnQpID0+XG4gICAgICBpc01lbWJlckhhbmRvZmYoc291cmNlRXhwcmVzc2lvbiwgcGFydCwgbWVtYmVyLCBjaGVja2VyKSxcbiAgICApO1xuICB9XG5cbiAgaWYgKFxuICAgIGNoZWNrZXIuZ2V0UHJvcGVydHlPZlR5cGUocmVjZWl2aW5nVHlwZSwgbWVtYmVyLm1lbWJlck5hbWUpID09PSB2b2lkIDAgJiZcbiAgICAhY2Fycmllc01lbWJlcihzb3VyY2VFeHByZXNzaW9uLCBjaGVja2VyLCBtZW1iZXIpXG4gICkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IGhvc3RQcm9wZXJ0eVR5cGUgPSBnZXRQcm9wZXJ0eU9ySW5kZXhUeXBlKGhvc3RUeXBlLCBtZW1iZXIsIGNoZWNrZXIpO1xuICBjb25zdCBmb3J3YXJkZWRQcm9wZXJ0eVR5cGUgPSBnZXRQcm9wZXJ0eU9ySW5kZXhUeXBlKFxuICAgIGZvcndhcmRlZFR5cGUsXG4gICAgbWVtYmVyLFxuICAgIGNoZWNrZXIsXG4gICk7XG4gIGNvbnN0IHJlY2VpdmluZ1Byb3BlcnR5VHlwZSA9IGdldFByb3BlcnR5T3JJbmRleFR5cGUoXG4gICAgcmVjZWl2aW5nVHlwZSxcbiAgICBtZW1iZXIsXG4gICAgY2hlY2tlcixcbiAgKTtcblxuICByZXR1cm4gKFxuICAgIGhvc3RQcm9wZXJ0eVR5cGUgIT09IHZvaWQgMCAmJlxuICAgIGZvcndhcmRlZFByb3BlcnR5VHlwZSAhPT0gdm9pZCAwICYmXG4gICAgcmVjZWl2aW5nUHJvcGVydHlUeXBlICE9PSB2b2lkIDAgJiZcbiAgICAoY2hlY2tlci5pc1R5cGVBc3NpZ25hYmxlVG8oZm9yd2FyZGVkVHlwZSwgaG9zdFR5cGUpIHx8XG4gICAgICBjaGVja2VyLmlzVHlwZUFzc2lnbmFibGVUbyhob3N0VHlwZSwgZm9yd2FyZGVkVHlwZSkpICYmXG4gICAgY2hlY2tlci5pc1R5cGVBc3NpZ25hYmxlVG8oaG9zdFR5cGUsIHJlY2VpdmluZ1R5cGUpICYmXG4gICAgKGNoZWNrZXIuaXNUeXBlQXNzaWduYWJsZVRvKGhvc3RQcm9wZXJ0eVR5cGUsIHJlY2VpdmluZ1Byb3BlcnR5VHlwZSkgfHxcbiAgICAgIGNoZWNrZXIuaXNUeXBlQXNzaWduYWJsZVRvKHJlY2VpdmluZ1Byb3BlcnR5VHlwZSwgaG9zdFByb3BlcnR5VHlwZSkpXG4gICk7XG59O1xuXG5leHBvcnQge1xuICBnZXRDYWxsQXJndW1lbnRUeXBlLFxuICBnZXRDb250ZXh0dWFsUHJvcGVydHlUeXBlLFxuICBoYXNDb21wYXRpYmxlTWVtYmVyU2hhcGUsXG4gIGlzRGVjbGFyYXRpb25Pbmx5TWV0aG9kLFxuICBpc01lbWJlckhhbmRvZmYsXG59O1xuIl19
|
|
@@ -1,18 +1,22 @@
|
|
|
1
1
|
import * as ts from "typescript";
|
|
2
2
|
import type { NoUnusedExportsState } from "../no-unused-exports/types.js";
|
|
3
3
|
import type { PublicMember } from "./member-declaration-utilities.js";
|
|
4
|
+
/** Framework-specific member usage detector supplied by an opt-in adapter. */
|
|
5
|
+
type MemberUsageAdapter = (sourceFile: ts.SourceFile, checker: ts.TypeChecker, member: PublicMember) => boolean;
|
|
4
6
|
/**
|
|
5
7
|
* Checks whether a member has a concrete reference in production TypeScript.
|
|
6
8
|
* @param program TypeScript project program.
|
|
7
9
|
* @param state Normalized public API and test patterns.
|
|
8
10
|
* @param repoRoot Root directory used for glob matching.
|
|
9
11
|
* @param member Member whose production usage is being checked.
|
|
12
|
+
* @param usageAdapters Optional framework-specific usage detectors.
|
|
10
13
|
* @returns True when production code references the member.
|
|
11
14
|
* @example
|
|
12
15
|
* ```typescript
|
|
13
16
|
* const used = hasProductionUsage(program, state, repoRoot, member);
|
|
14
17
|
* ```
|
|
15
18
|
*/
|
|
16
|
-
declare const hasProductionUsage: (program: ts.Program, state: NoUnusedExportsState, repoRoot: string, member: PublicMember) => boolean;
|
|
19
|
+
declare const hasProductionUsage: (program: ts.Program, state: NoUnusedExportsState, repoRoot: string, member: PublicMember, usageAdapters?: readonly MemberUsageAdapter[]) => boolean;
|
|
17
20
|
export { hasProductionUsage };
|
|
21
|
+
export type { MemberUsageAdapter };
|
|
18
22
|
//# sourceMappingURL=member-usage-utilities.d.ts.map
|
|
@@ -1 +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;
|
|
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;AAsBnE,8EAA8E;AAC9E,KAAK,kBAAkB,GAAG,CACxB,UAAU,EAAE,EAAE,CAAC,UAAU,EACzB,OAAO,EAAE,EAAE,CAAC,WAAW,EACvB,MAAM,EAAE,YAAY,KACjB,OAAO,CAAC;AA0Eb;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,kBAAkB,GACtB,SAAS,EAAE,CAAC,OAAO,EACnB,OAAO,oBAAoB,EAC3B,UAAU,MAAM,EAChB,QAAQ,YAAY,EACpB,gBAAe,SAAS,kBAAkB,EAAO,KAChD,OA8EF,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC9B,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -4,7 +4,9 @@ import { isTestFile } from "../no-unused-exports/no-unused-exports-options.js";
|
|
|
4
4
|
import { isSameSymbol, resolveCanonicalSymbol, } from "../no-unused-exports/no-unused-exports-symbol-utilities.js";
|
|
5
5
|
import { collectHeritageMemberSymbols } from "./member-contract-utilities.js";
|
|
6
6
|
import { isCallArgumentMember, isObjectContractHandoff, } from "./member-usage-handoff-utilities.js";
|
|
7
|
+
import { isLocalCallArgumentTransmitted } from "./member-usage-local-flow-utilities.js";
|
|
7
8
|
import { isComputedMemberRead, isStructuralPropertyRead, } from "./member-usage-reference-utilities.js";
|
|
9
|
+
import { isLocalCallArgumentSerialized, isWholeObjectRead, } from "./member-usage-serialization-utilities.js";
|
|
8
10
|
/**
|
|
9
11
|
* Resolves destructured member names or direct reference symbols.
|
|
10
12
|
* @param node Candidate reference node.
|
|
@@ -70,13 +72,14 @@ const isDeclarationName = (node) => {
|
|
|
70
72
|
* @param state Normalized public API and test patterns.
|
|
71
73
|
* @param repoRoot Root directory used for glob matching.
|
|
72
74
|
* @param member Member whose production usage is being checked.
|
|
75
|
+
* @param usageAdapters Optional framework-specific usage detectors.
|
|
73
76
|
* @returns True when production code references the member.
|
|
74
77
|
* @example
|
|
75
78
|
* ```typescript
|
|
76
79
|
* const used = hasProductionUsage(program, state, repoRoot, member);
|
|
77
80
|
* ```
|
|
78
81
|
*/
|
|
79
|
-
const hasProductionUsage = (program, state, repoRoot, member) => {
|
|
82
|
+
const hasProductionUsage = (program, state, repoRoot, member, usageAdapters = []) => {
|
|
80
83
|
const checker = program.getTypeChecker();
|
|
81
84
|
const relatedSymbols = [
|
|
82
85
|
resolveCanonicalSymbol(member.memberSymbol, checker),
|
|
@@ -100,6 +103,9 @@ const hasProductionUsage = (program, state, repoRoot, member) => {
|
|
|
100
103
|
isTestFile(filename, state, normalizedRoot)) {
|
|
101
104
|
continue;
|
|
102
105
|
}
|
|
106
|
+
if (usageAdapters.some((adapter) => adapter(sourceFile, checker, member))) {
|
|
107
|
+
return true;
|
|
108
|
+
}
|
|
103
109
|
const findUsageSymbol = (node) => {
|
|
104
110
|
if ((ts.isIdentifier(node) || ts.isStringLiteralLike(node)) &&
|
|
105
111
|
!isDeclarationName(node)) {
|
|
@@ -113,6 +119,9 @@ const hasProductionUsage = (program, state, repoRoot, member) => {
|
|
|
113
119
|
}
|
|
114
120
|
}
|
|
115
121
|
return isComputedMemberRead(node, checker, member, relatedSymbols) ||
|
|
122
|
+
isWholeObjectRead(node, checker, member, program) ||
|
|
123
|
+
isLocalCallArgumentSerialized(node, checker, member, program) ||
|
|
124
|
+
isLocalCallArgumentTransmitted(node, checker, member) ||
|
|
116
125
|
isCallArgumentMember(node, checker, member) ||
|
|
117
126
|
isObjectContractHandoff(node, checker, member)
|
|
118
127
|
? member.memberSymbol
|
|
@@ -125,4 +134,4 @@ const hasProductionUsage = (program, state, repoRoot, member) => {
|
|
|
125
134
|
return false;
|
|
126
135
|
};
|
|
127
136
|
export { hasProductionUsage };
|
|
128
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLXVzYWdlLXV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vYXJjaGl0ZWN0dXJlL25vLXVudXNlZC1wdWJsaWMtbWVtYmVycy9tZW1iZXItdXNhZ2UtdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUtqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDNUUsT0FBTyxFQUNMLFlBQVksRUFDWixzQkFBc0IsR0FDdkIsTUFBTSx5REFBeUQsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHVCQUF1QixHQUN4QixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsd0JBQXdCLEdBQ3pCLE1BQU0sb0NBQW9DLENBQUM7QUFFNUM7Ozs7Ozs7OztHQVNHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FDckIsSUFBYSxFQUNiLE9BQXVCLEVBQ0EsRUFBRTtJQUN6QixNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBRTNCLElBQ0UsRUFBRSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7UUFDckIsRUFBRSxDQUFDLGdCQUFnQixDQUFDLE1BQU0sQ0FBQztRQUMzQixNQUFNLENBQUMsSUFBSSxLQUFLLElBQUk7UUFDcEIsTUFBTSxDQUFDLFlBQVksS0FBSyxLQUFLLENBQUM7UUFDOUIsRUFBRSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFDeEMsQ0FBQztRQUNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1FBQ25DLE1BQU0sVUFBVSxHQUFHLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUM7WUFDaEQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxXQUFXLEtBQUssS0FBSyxDQUFDO2dCQUM1QixDQUFDLENBQUMsS0FBSyxDQUFDO2dCQUNSLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDLFdBQVcsQ0FBQztZQUNoRCxDQUFDLENBQUMsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUM7Z0JBQ3JCLENBQUMsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLENBQUMsS0FBSyxDQUFDO2dCQUNsQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFYixPQUFPLFVBQVUsS0FBSyxLQUFLLENBQUM7WUFDMUIsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUM7WUFDbkMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3ZELENBQUM7SUFFRCxPQUFPLE9BQU8sQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUMzQyxDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxJQUFhLEVBQVcsRUFBRTtJQUNuRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBRTNCLE9BQU8sQ0FDTCxDQUFDLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLE1BQU0sQ0FBQztRQUNoQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1FBQzlCLEVBQUUsQ0FBQyx3QkFBd0IsQ0FBQyxNQUFNLENBQUM7UUFDbkMsRUFBRSxDQUFDLHdCQUF3QixDQUFDLE1BQU0sQ0FBQztRQUNuQyxFQUFFLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO1FBQzlCLEVBQUUsQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUM7UUFDNUIsRUFBRSxDQUFDLG9CQUFvQixDQUFDLE1BQU0sQ0FBQztRQUMvQixFQUFFLENBQUMsNkJBQTZCLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDekMsTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7UUFDdkIsQ0FBQyxFQUFFLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUM7UUFDMUQsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUM7WUFDN0IsRUFBRSxDQUFDLHNCQUFzQixDQUFDLE1BQU0sQ0FBQztZQUNqQyxFQUFFLENBQUMsc0JBQXNCLENBQUMsTUFBTSxDQUFDO1lBQ2pDLEVBQUUsQ0FBQyxxQkFBcUIsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUNqQyxNQUFNLENBQUMsSUFBSSxLQUFLLElBQUksQ0FBQztRQUN2QixDQUFDLEVBQUUsQ0FBQyxXQUFXLENBQUMsTUFBTSxDQUFDLElBQUksTUFBTSxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FDakQsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7OztHQVdHO0FBQ0gsTUFBTSxrQkFBa0IsR0FBRyxDQUN6QixPQUFtQixFQUNuQixLQUEyQixFQUMzQixRQUFnQixFQUNoQixNQUFvQixFQUNYLEVBQUU7SUFDWCxNQUFNLE9BQU8sR0FBRyxPQUFPLENBQUMsY0FBYyxFQUFFLENBQUM7SUFDekMsTUFBTSxjQUFjLEdBQUc7UUFDckIsc0JBQXNCLENBQUMsTUFBTSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUM7UUFDcEQsR0FBRyw0QkFBNEIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQ3ZFLHNCQUFzQixDQUFDLE1BQU0sRUFBRSxPQUFPLENBQUMsQ0FDeEM7S0FDRixDQUFDO0lBQ0YsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUMxRSxDQUFDLENBQUMsTUFBTSxDQUFDLGVBQWU7UUFDeEIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBRVgsSUFBSSxtQkFBbUIsS0FBSyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25DLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUN6RSxNQUFNLGNBQWMsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQzlDLFlBQVksRUFDWixNQUFNLENBQUMsVUFBVSxDQUNsQixDQUFDO1FBRUYsSUFDRSxjQUFjLEtBQUssS0FBSyxDQUFDO1lBQ3pCLGNBQWMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsWUFBWSxDQUFDLE1BQU0sRUFBRSxjQUFjLENBQUMsQ0FBQyxFQUN2RSxDQUFDO1lBQ0QsY0FBYyxDQUFDLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUN2RSxDQUFDO0lBQ0gsQ0FBQztJQUVELE1BQU0sY0FBYyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFFOUMsS0FBSyxNQUFNLFVBQVUsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUUsQ0FBQztRQUNsRCxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUVuRCxJQUNFLFVBQVUsQ0FBQyxpQkFBaUI7WUFDNUIsVUFBVSxDQUFDLFFBQVEsRUFBRSxLQUFLLEVBQUUsY0FBYyxDQUFDLEVBQzNDLENBQUM7WUFDRCxTQUFTO1FBQ1gsQ0FBQztRQUVELE1BQU0sZUFBZSxHQUFHLENBQUMsSUFBYSxFQUF5QixFQUFFO1lBQy9ELElBQ0UsQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDdkQsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsRUFDeEIsQ0FBQztnQkFDRCxNQUFNLFNBQVMsR0FBRyxjQUFjLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO2dCQUVoRCxJQUNFLFNBQVMsS0FBSyxLQUFLLENBQUM7b0JBQ3BCLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLFlBQVksQ0FBQyxNQUFNLEVBQUUsU0FBUyxDQUFDLENBQUMsRUFDaEUsQ0FBQztvQkFDRCxPQUFPLFNBQVMsQ0FBQztnQkFDbkIsQ0FBQztnQkFFRCxJQUFJLHdCQUF3QixDQUFDLElBQUksRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQztvQkFDcEQsT0FBTyxNQUFNLENBQUMsWUFBWSxDQUFDO2dCQUM3QixDQUFDO1lBQ0gsQ0FBQztZQUVELE9BQU8sb0JBQW9CLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsY0FBYyxDQUFDO2dCQUNoRSxvQkFBb0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQztnQkFDM0MsdUJBQXVCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWTtnQkFDckIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQztRQUVGLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgKiBhcyB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG5pbXBvcnQgdHlwZSB7IE5vVW51c2VkRXhwb3J0c1N0YXRlIH0gZnJvbSBcIi4uL25vLXVudXNlZC1leHBvcnRzL3R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFB1YmxpY01lbWJlciB9IGZyb20gXCIuL21lbWJlci1kZWNsYXJhdGlvbi11dGlsaXRpZXNcIjtcblxuaW1wb3J0IHsgaXNUZXN0RmlsZSB9IGZyb20gXCIuLi9uby11bnVzZWQtZXhwb3J0cy9uby11bnVzZWQtZXhwb3J0cy1vcHRpb25zXCI7XG5pbXBvcnQge1xuICBpc1NhbWVTeW1ib2wsXG4gIHJlc29sdmVDYW5vbmljYWxTeW1ib2wsXG59IGZyb20gXCIuLi9uby11bnVzZWQtZXhwb3J0cy9uby11bnVzZWQtZXhwb3J0cy1zeW1ib2wtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBjb2xsZWN0SGVyaXRhZ2VNZW1iZXJTeW1ib2xzIH0gZnJvbSBcIi4vbWVtYmVyLWNvbnRyYWN0LXV0aWxpdGllc1wiO1xuaW1wb3J0IHtcbiAgaXNDYWxsQXJndW1lbnRNZW1iZXIsXG4gIGlzT2JqZWN0Q29udHJhY3RIYW5kb2ZmLFxufSBmcm9tIFwiLi9tZW1iZXItdXNhZ2UtaGFuZG9mZi11dGlsaXRpZXNcIjtcbmltcG9ydCB7XG4gIGlzQ29tcHV0ZWRNZW1iZXJSZWFkLFxuICBpc1N0cnVjdHVyYWxQcm9wZXJ0eVJlYWQsXG59IGZyb20gXCIuL21lbWJlci11c2FnZS1yZWZlcmVuY2UtdXRpbGl0aWVzXCI7XG5cbi8qKlxuICogUmVzb2x2ZXMgZGVzdHJ1Y3R1cmVkIG1lbWJlciBuYW1lcyBvciBkaXJlY3QgcmVmZXJlbmNlIHN5bWJvbHMuXG4gKiBAcGFyYW0gbm9kZSBDYW5kaWRhdGUgcmVmZXJlbmNlIG5vZGUuXG4gKiBAcGFyYW0gY2hlY2tlciBUeXBlU2NyaXB0IHR5cGUgY2hlY2tlci5cbiAqIEByZXR1cm5zIFJlZmVyZW5jZWQgbWVtYmVyIHN5bWJvbCB3aGVuIGF2YWlsYWJsZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzeW1ib2wgPSBnZXRVc2FnZVN5bWJvbChwcm9wZXJ0eUlkZW50aWZpZXIsIGNoZWNrZXIpO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFVzYWdlU3ltYm9sID0gKFxuICBub2RlOiB0cy5Ob2RlLFxuICBjaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbik6IHRzLlN5bWJvbCB8IHVuZGVmaW5lZCA9PiB7XG4gIGNvbnN0IHBhcmVudCA9IG5vZGUucGFyZW50O1xuXG4gIGlmIChcbiAgICB0cy5pc0lkZW50aWZpZXIobm9kZSkgJiZcbiAgICB0cy5pc0JpbmRpbmdFbGVtZW50KHBhcmVudCkgJiZcbiAgICBwYXJlbnQubmFtZSA9PT0gbm9kZSAmJlxuICAgIHBhcmVudC5wcm9wZXJ0eU5hbWUgPT09IHZvaWQgMCAmJlxuICAgIHRzLmlzT2JqZWN0QmluZGluZ1BhdHRlcm4ocGFyZW50LnBhcmVudClcbiAgKSB7XG4gICAgY29uc3Qgb3duZXIgPSBwYXJlbnQucGFyZW50LnBhcmVudDtcbiAgICBjb25zdCBzb3VyY2VUeXBlID0gdHMuaXNWYXJpYWJsZURlY2xhcmF0aW9uKG93bmVyKVxuICAgICAgPyBvd25lci5pbml0aWFsaXplciA9PT0gdm9pZCAwXG4gICAgICAgID8gdm9pZCAwXG4gICAgICAgIDogY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihvd25lci5pbml0aWFsaXplcilcbiAgICAgIDogdHMuaXNQYXJhbWV0ZXIob3duZXIpXG4gICAgICAgID8gY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihvd25lcilcbiAgICAgICAgOiB2b2lkIDA7XG5cbiAgICByZXR1cm4gc291cmNlVHlwZSA9PT0gdm9pZCAwXG4gICAgICA/IGNoZWNrZXIuZ2V0U3ltYm9sQXRMb2NhdGlvbihub2RlKVxuICAgICAgOiBjaGVja2VyLmdldFByb3BlcnR5T2ZUeXBlKHNvdXJjZVR5cGUsIG5vZGUudGV4dCk7XG4gIH1cblxuICByZXR1cm4gY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKG5vZGUpO1xufTtcblxuLyoqXG4gKiBJZGVudGlmaWVzIGRlY2xhcmF0aW9uIG5hbWVzIHRoYXQgYXJlIG5vdCBtZW1iZXIgcmVmZXJlbmNlcy5cbiAqIEBwYXJhbSBub2RlIENhbmRpZGF0ZSByZWZlcmVuY2Ugbm9kZS5cbiAqIEByZXR1cm5zIFRydWUgd2hlbiB0aGUgbm9kZSBpcyBvbmx5IGRlY2xhcmluZyBhIG5hbWUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgZGVjbGFyYXRpb25Pbmx5ID0gaXNEZWNsYXJhdGlvbk5hbWUocHJvcGVydHlOYW1lKTtcbiAqIGBgYFxuICovXG5jb25zdCBpc0RlY2xhcmF0aW9uTmFtZSA9IChub2RlOiB0cy5Ob2RlKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IHBhcmVudCA9IG5vZGUucGFyZW50O1xuXG4gIHJldHVybiAoXG4gICAgKCh0cy5pc1Byb3BlcnR5RGVjbGFyYXRpb24ocGFyZW50KSB8fFxuICAgICAgdHMuaXNNZXRob2REZWNsYXJhdGlvbihwYXJlbnQpIHx8XG4gICAgICB0cy5pc0dldEFjY2Vzc29yRGVjbGFyYXRpb24ocGFyZW50KSB8fFxuICAgICAgdHMuaXNTZXRBY2Nlc3NvckRlY2xhcmF0aW9uKHBhcmVudCkgfHxcbiAgICAgIHRzLmlzUHJvcGVydHlTaWduYXR1cmUocGFyZW50KSB8fFxuICAgICAgdHMuaXNNZXRob2RTaWduYXR1cmUocGFyZW50KSB8fFxuICAgICAgdHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQocGFyZW50KSB8fFxuICAgICAgdHMuaXNTaG9ydGhhbmRQcm9wZXJ0eUFzc2lnbm1lbnQocGFyZW50KSkgJiZcbiAgICAgIHBhcmVudC5uYW1lID09PSBub2RlKSB8fFxuICAgICh0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24ocGFyZW50KSAmJiBwYXJlbnQubmFtZSA9PT0gbm9kZSkgfHxcbiAgICAoKHRzLmlzQ2xhc3NEZWNsYXJhdGlvbihwYXJlbnQpIHx8XG4gICAgICB0cy5pc0ludGVyZmFjZURlY2xhcmF0aW9uKHBhcmVudCkgfHxcbiAgICAgIHRzLmlzVHlwZUFsaWFzRGVjbGFyYXRpb24ocGFyZW50KSB8fFxuICAgICAgdHMuaXNGdW5jdGlvbkRlY2xhcmF0aW9uKHBhcmVudCkpICYmXG4gICAgICBwYXJlbnQubmFtZSA9PT0gbm9kZSkgfHxcbiAgICAodHMuaXNQYXJhbWV0ZXIocGFyZW50KSAmJiBwYXJlbnQubmFtZSA9PT0gbm9kZSlcbiAgKTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYSBtZW1iZXIgaGFzIGEgY29uY3JldGUgcmVmZXJlbmNlIGluIHByb2R1Y3Rpb24gVHlwZVNjcmlwdC5cbiAqIEBwYXJhbSBwcm9ncmFtIFR5cGVTY3JpcHQgcHJvamVjdCBwcm9ncmFtLlxuICogQHBhcmFtIHN0YXRlIE5vcm1hbGl6ZWQgcHVibGljIEFQSSBhbmQgdGVzdCBwYXR0ZXJucy5cbiAqIEBwYXJhbSByZXBvUm9vdCBSb290IGRpcmVjdG9yeSB1c2VkIGZvciBnbG9iIG1hdGNoaW5nLlxuICogQHBhcmFtIG1lbWJlciBNZW1iZXIgd2hvc2UgcHJvZHVjdGlvbiB1c2FnZSBpcyBiZWluZyBjaGVja2VkLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHByb2R1Y3Rpb24gY29kZSByZWZlcmVuY2VzIHRoZSBtZW1iZXIuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdXNlZCA9IGhhc1Byb2R1Y3Rpb25Vc2FnZShwcm9ncmFtLCBzdGF0ZSwgcmVwb1Jvb3QsIG1lbWJlcik7XG4gKiBgYGBcbiAqL1xuY29uc3QgaGFzUHJvZHVjdGlvblVzYWdlID0gKFxuICBwcm9ncmFtOiB0cy5Qcm9ncmFtLFxuICBzdGF0ZTogTm9VbnVzZWRFeHBvcnRzU3RhdGUsXG4gIHJlcG9Sb290OiBzdHJpbmcsXG4gIG1lbWJlcjogUHVibGljTWVtYmVyLFxuKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IGNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IHJlbGF0ZWRTeW1ib2xzID0gW1xuICAgIHJlc29sdmVDYW5vbmljYWxTeW1ib2wobWVtYmVyLm1lbWJlclN5bWJvbCwgY2hlY2tlciksXG4gICAgLi4uY29sbGVjdEhlcml0YWdlTWVtYmVyU3ltYm9scyhwcm9ncmFtLCBjaGVja2VyLCBtZW1iZXIpLm1hcCgoc3ltYm9sKSA9PlxuICAgICAgcmVzb2x2ZUNhbm9uaWNhbFN5bWJvbChzeW1ib2wsIGNoZWNrZXIpLFxuICAgICksXG4gIF07XG4gIGNvbnN0IHZhcmlhYmxlRGVjbGFyYXRpb24gPSB0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24obWVtYmVyLmhvc3REZWNsYXJhdGlvbilcbiAgICA/IG1lbWJlci5ob3N0RGVjbGFyYXRpb25cbiAgICA6IHZvaWQgMDtcblxuICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgY29uc3QgZGVjbGFyZWRUeXBlID0gY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbih2YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUpO1xuICAgIGNvbnN0IGRlY2xhcmVkTWVtYmVyID0gY2hlY2tlci5nZXRQcm9wZXJ0eU9mVHlwZShcbiAgICAgIGRlY2xhcmVkVHlwZSxcbiAgICAgIG1lbWJlci5tZW1iZXJOYW1lLFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBkZWNsYXJlZE1lbWJlciAhPT0gdm9pZCAwICYmXG4gICAgICByZWxhdGVkU3ltYm9scy5ldmVyeSgoc3ltYm9sKSA9PiAhaXNTYW1lU3ltYm9sKHN5bWJvbCwgZGVjbGFyZWRNZW1iZXIpKVxuICAgICkge1xuICAgICAgcmVsYXRlZFN5bWJvbHMucHVzaChyZXNvbHZlQ2Fub25pY2FsU3ltYm9sKGRlY2xhcmVkTWVtYmVyLCBjaGVja2VyKSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZFJvb3QgPSBwYXRoLnJlc29sdmUocmVwb1Jvb3QpO1xuXG4gIGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkpIHtcbiAgICBjb25zdCBmaWxlbmFtZSA9IHBhdGgucmVzb2x2ZShzb3VyY2VGaWxlLmZpbGVOYW1lKTtcblxuICAgIGlmIChcbiAgICAgIHNvdXJjZUZpbGUuaXNEZWNsYXJhdGlvbkZpbGUgfHxcbiAgICAgIGlzVGVzdEZpbGUoZmlsZW5hbWUsIHN0YXRlLCBub3JtYWxpemVkUm9vdClcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmRVc2FnZVN5bWJvbCA9IChub2RlOiB0cy5Ob2RlKTogdHMuU3ltYm9sIHwgdW5kZWZpbmVkID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgKHRzLmlzSWRlbnRpZmllcihub2RlKSB8fCB0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKG5vZGUpKSAmJlxuICAgICAgICAhaXNEZWNsYXJhdGlvbk5hbWUobm9kZSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSBnZXRVc2FnZVN5bWJvbChub2RlLCBjaGVja2VyKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgY2FuZGlkYXRlICE9PSB2b2lkIDAgJiZcbiAgICAgICAgICByZWxhdGVkU3ltYm9scy5zb21lKChzeW1ib2wpID0+IGlzU2FtZVN5bWJvbChzeW1ib2wsIGNhbmRpZGF0ZSkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNTdHJ1Y3R1cmFsUHJvcGVydHlSZWFkKG5vZGUsIGNoZWNrZXIsIG1lbWJlcikpIHtcbiAgICAgICAgICByZXR1cm4gbWVtYmVyLm1lbWJlclN5bWJvbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXNDb21wdXRlZE1lbWJlclJlYWQobm9kZSwgY2hlY2tlciwgbWVtYmVyLCByZWxhdGVkU3ltYm9scykgfHxcbiAgICAgICAgaXNDYWxsQXJndW1lbnRNZW1iZXIobm9kZSwgY2hlY2tlciwgbWVtYmVyKSB8fFxuICAgICAgICBpc09iamVjdENvbnRyYWN0SGFuZG9mZihub2RlLCBjaGVja2VyLCBtZW1iZXIpXG4gICAgICAgID8gbWVtYmVyLm1lbWJlclN5bWJvbFxuICAgICAgICA6IHRzLmZvckVhY2hDaGlsZChub2RlLCBmaW5kVXNhZ2VTeW1ib2wpO1xuICAgIH07XG5cbiAgICBpZiAoZmluZFVzYWdlU3ltYm9sKHNvdXJjZUZpbGUpICE9PSB2b2lkIDApIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCB7IGhhc1Byb2R1Y3Rpb25Vc2FnZSB9O1xuIl19
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLXVzYWdlLXV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vYXJjaGl0ZWN0dXJlL25vLXVudXNlZC1wdWJsaWMtbWVtYmVycy9tZW1iZXItdXNhZ2UtdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sSUFBSSxNQUFNLFdBQVcsQ0FBQztBQUM3QixPQUFPLEtBQUssRUFBRSxNQUFNLFlBQVksQ0FBQztBQUtqQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0RBQWdELENBQUM7QUFDNUUsT0FBTyxFQUNMLFlBQVksRUFDWixzQkFBc0IsR0FDdkIsTUFBTSx5REFBeUQsQ0FBQztBQUNqRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsTUFBTSw2QkFBNkIsQ0FBQztBQUMzRSxPQUFPLEVBQ0wsb0JBQW9CLEVBQ3BCLHVCQUF1QixHQUN4QixNQUFNLGtDQUFrQyxDQUFDO0FBQzFDLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLHFDQUFxQyxDQUFDO0FBQ3JGLE9BQU8sRUFDTCxvQkFBb0IsRUFDcEIsd0JBQXdCLEdBQ3pCLE1BQU0sb0NBQW9DLENBQUM7QUFDNUMsT0FBTyxFQUNMLDZCQUE2QixFQUM3QixpQkFBaUIsR0FDbEIsTUFBTSx3Q0FBd0MsQ0FBQztBQVNoRDs7Ozs7Ozs7O0dBU0c7QUFDSCxNQUFNLGNBQWMsR0FBRyxDQUNyQixJQUFhLEVBQ2IsT0FBdUIsRUFDQSxFQUFFO0lBQ3pCLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUM7SUFFM0IsSUFDRSxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQztRQUNyQixFQUFFLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDO1FBQzNCLE1BQU0sQ0FBQyxJQUFJLEtBQUssSUFBSTtRQUNwQixNQUFNLENBQUMsWUFBWSxLQUFLLEtBQUssQ0FBQztRQUM5QixFQUFFLENBQUMsc0JBQXNC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M0MsdUJBQXVCLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7Z0JBQzlDLENBQUMsQ0FBQyxNQUFNLENBQUMsWUFBWTtnQkFDckIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxFQUFFLGVBQWUsQ0FBQyxDQUFDO1FBQzdDLENBQUMsQ0FBQztRQUVGLElBQUksZUFBZSxDQUFDLFVBQVUsQ0FBQyxLQUFLLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDM0MsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyxDQUFDO0FBRUYsT0FBTyxFQUFFLGtCQUFrQixFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgcGF0aCBmcm9tIFwibm9kZTpwYXRoXCI7XG5pbXBvcnQgKiBhcyB0cyBmcm9tIFwidHlwZXNjcmlwdFwiO1xuXG5pbXBvcnQgdHlwZSB7IE5vVW51c2VkRXhwb3J0c1N0YXRlIH0gZnJvbSBcIi4uL25vLXVudXNlZC1leHBvcnRzL3R5cGVzXCI7XG5pbXBvcnQgdHlwZSB7IFB1YmxpY01lbWJlciB9IGZyb20gXCIuL21lbWJlci1kZWNsYXJhdGlvbi11dGlsaXRpZXNcIjtcblxuaW1wb3J0IHsgaXNUZXN0RmlsZSB9IGZyb20gXCIuLi9uby11bnVzZWQtZXhwb3J0cy9uby11bnVzZWQtZXhwb3J0cy1vcHRpb25zXCI7XG5pbXBvcnQge1xuICBpc1NhbWVTeW1ib2wsXG4gIHJlc29sdmVDYW5vbmljYWxTeW1ib2wsXG59IGZyb20gXCIuLi9uby11bnVzZWQtZXhwb3J0cy9uby11bnVzZWQtZXhwb3J0cy1zeW1ib2wtdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBjb2xsZWN0SGVyaXRhZ2VNZW1iZXJTeW1ib2xzIH0gZnJvbSBcIi4vbWVtYmVyLWNvbnRyYWN0LXV0aWxpdGllc1wiO1xuaW1wb3J0IHtcbiAgaXNDYWxsQXJndW1lbnRNZW1iZXIsXG4gIGlzT2JqZWN0Q29udHJhY3RIYW5kb2ZmLFxufSBmcm9tIFwiLi9tZW1iZXItdXNhZ2UtaGFuZG9mZi11dGlsaXRpZXNcIjtcbmltcG9ydCB7IGlzTG9jYWxDYWxsQXJndW1lbnRUcmFuc21pdHRlZCB9IGZyb20gXCIuL21lbWJlci11c2FnZS1sb2NhbC1mbG93LXV0aWxpdGllc1wiO1xuaW1wb3J0IHtcbiAgaXNDb21wdXRlZE1lbWJlclJlYWQsXG4gIGlzU3RydWN0dXJhbFByb3BlcnR5UmVhZCxcbn0gZnJvbSBcIi4vbWVtYmVyLXVzYWdlLXJlZmVyZW5jZS11dGlsaXRpZXNcIjtcbmltcG9ydCB7XG4gIGlzTG9jYWxDYWxsQXJndW1lbnRTZXJpYWxpemVkLFxuICBpc1dob2xlT2JqZWN0UmVhZCxcbn0gZnJvbSBcIi4vbWVtYmVyLXVzYWdlLXNlcmlhbGl6YXRpb24tdXRpbGl0aWVzXCI7XG5cbi8qKiBGcmFtZXdvcmstc3BlY2lmaWMgbWVtYmVyIHVzYWdlIGRldGVjdG9yIHN1cHBsaWVkIGJ5IGFuIG9wdC1pbiBhZGFwdGVyLiAqL1xudHlwZSBNZW1iZXJVc2FnZUFkYXB0ZXIgPSAoXG4gIHNvdXJjZUZpbGU6IHRzLlNvdXJjZUZpbGUsXG4gIGNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuICBtZW1iZXI6IFB1YmxpY01lbWJlcixcbikgPT4gYm9vbGVhbjtcblxuLyoqXG4gKiBSZXNvbHZlcyBkZXN0cnVjdHVyZWQgbWVtYmVyIG5hbWVzIG9yIGRpcmVjdCByZWZlcmVuY2Ugc3ltYm9scy5cbiAqIEBwYXJhbSBub2RlIENhbmRpZGF0ZSByZWZlcmVuY2Ugbm9kZS5cbiAqIEBwYXJhbSBjaGVja2VyIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyLlxuICogQHJldHVybnMgUmVmZXJlbmNlZCBtZW1iZXIgc3ltYm9sIHdoZW4gYXZhaWxhYmxlLlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHN5bWJvbCA9IGdldFVzYWdlU3ltYm9sKHByb3BlcnR5SWRlbnRpZmllciwgY2hlY2tlcik7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0VXNhZ2VTeW1ib2wgPSAoXG4gIG5vZGU6IHRzLk5vZGUsXG4gIGNoZWNrZXI6IHRzLlR5cGVDaGVja2VyLFxuKTogdHMuU3ltYm9sIHwgdW5kZWZpbmVkID0+IHtcbiAgY29uc3QgcGFyZW50ID0gbm9kZS5wYXJlbnQ7XG5cbiAgaWYgKFxuICAgIHRzLmlzSWRlbnRpZmllcihub2RlKSAmJlxuICAgIHRzLmlzQmluZGluZ0VsZW1lbnQocGFyZW50KSAmJlxuICAgIHBhcmVudC5uYW1lID09PSBub2RlICYmXG4gICAgcGFyZW50LnByb3BlcnR5TmFtZSA9PT0gdm9pZCAwICYmXG4gICAgdHMuaXNPYmplY3RCaW5kaW5nUGF0dGVybihwYXJlbnQucGFyZW50KVxuICApIHtcbiAgICBjb25zdCBvd25lciA9IHBhcmVudC5wYXJlbnQucGFyZW50O1xuICAgIGNvbnN0IHNvdXJjZVR5cGUgPSB0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24ob3duZXIpXG4gICAgICA/IG93bmVyLmluaXRpYWxpemVyID09PSB2b2lkIDBcbiAgICAgICAgPyB2b2lkIDBcbiAgICAgICAgOiBjaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKG93bmVyLmluaXRpYWxpemVyKVxuICAgICAgOiB0cy5pc1BhcmFtZXRlcihvd25lcilcbiAgICAgICAgPyBjaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKG93bmVyKVxuICAgICAgICA6IHZvaWQgMDtcblxuICAgIHJldHVybiBzb3VyY2VUeXBlID09PSB2b2lkIDBcbiAgICAgID8gY2hlY2tlci5nZXRTeW1ib2xBdExvY2F0aW9uKG5vZGUpXG4gICAgICA6IGNoZWNrZXIuZ2V0UHJvcGVydHlPZlR5cGUoc291cmNlVHlwZSwgbm9kZS50ZXh0KTtcbiAgfVxuXG4gIHJldHVybiBjaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24obm9kZSk7XG59O1xuXG4vKipcbiAqIElkZW50aWZpZXMgZGVjbGFyYXRpb24gbmFtZXMgdGhhdCBhcmUgbm90IG1lbWJlciByZWZlcmVuY2VzLlxuICogQHBhcmFtIG5vZGUgQ2FuZGlkYXRlIHJlZmVyZW5jZSBub2RlLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBub2RlIGlzIG9ubHkgZGVjbGFyaW5nIGEgbmFtZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBkZWNsYXJhdGlvbk9ubHkgPSBpc0RlY2xhcmF0aW9uTmFtZShwcm9wZXJ0eU5hbWUpO1xuICogYGBgXG4gKi9cbmNvbnN0IGlzRGVjbGFyYXRpb25OYW1lID0gKG5vZGU6IHRzLk5vZGUpOiBib29sZWFuID0+IHtcbiAgY29uc3QgcGFyZW50ID0gbm9kZS5wYXJlbnQ7XG5cbiAgcmV0dXJuIChcbiAgICAoKHRzLmlzUHJvcGVydHlEZWNsYXJhdGlvbihwYXJlbnQpIHx8XG4gICAgICB0cy5pc01ldGhvZERlY2xhcmF0aW9uKHBhcmVudCkgfHxcbiAgICAgIHRzLmlzR2V0QWNjZXNzb3JEZWNsYXJhdGlvbihwYXJlbnQpIHx8XG4gICAgICB0cy5pc1NldEFjY2Vzc29yRGVjbGFyYXRpb24ocGFyZW50KSB8fFxuICAgICAgdHMuaXNQcm9wZXJ0eVNpZ25hdHVyZShwYXJlbnQpIHx8XG4gICAgICB0cy5pc01ldGhvZFNpZ25hdHVyZShwYXJlbnQpIHx8XG4gICAgICB0cy5pc1Byb3BlcnR5QXNzaWdubWVudChwYXJlbnQpIHx8XG4gICAgICB0cy5pc1Nob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudChwYXJlbnQpKSAmJlxuICAgICAgcGFyZW50Lm5hbWUgPT09IG5vZGUpIHx8XG4gICAgKHRzLmlzVmFyaWFibGVEZWNsYXJhdGlvbihwYXJlbnQpICYmIHBhcmVudC5uYW1lID09PSBub2RlKSB8fFxuICAgICgodHMuaXNDbGFzc0RlY2xhcmF0aW9uKHBhcmVudCkgfHxcbiAgICAgIHRzLmlzSW50ZXJmYWNlRGVjbGFyYXRpb24ocGFyZW50KSB8fFxuICAgICAgdHMuaXNUeXBlQWxpYXNEZWNsYXJhdGlvbihwYXJlbnQpIHx8XG4gICAgICB0cy5pc0Z1bmN0aW9uRGVjbGFyYXRpb24ocGFyZW50KSkgJiZcbiAgICAgIHBhcmVudC5uYW1lID09PSBub2RlKSB8fFxuICAgICh0cy5pc1BhcmFtZXRlcihwYXJlbnQpICYmIHBhcmVudC5uYW1lID09PSBub2RlKVxuICApO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhIG1lbWJlciBoYXMgYSBjb25jcmV0ZSByZWZlcmVuY2UgaW4gcHJvZHVjdGlvbiBUeXBlU2NyaXB0LlxuICogQHBhcmFtIHByb2dyYW0gVHlwZVNjcmlwdCBwcm9qZWN0IHByb2dyYW0uXG4gKiBAcGFyYW0gc3RhdGUgTm9ybWFsaXplZCBwdWJsaWMgQVBJIGFuZCB0ZXN0IHBhdHRlcm5zLlxuICogQHBhcmFtIHJlcG9Sb290IFJvb3QgZGlyZWN0b3J5IHVzZWQgZm9yIGdsb2IgbWF0Y2hpbmcuXG4gKiBAcGFyYW0gbWVtYmVyIE1lbWJlciB3aG9zZSBwcm9kdWN0aW9uIHVzYWdlIGlzIGJlaW5nIGNoZWNrZWQuXG4gKiBAcGFyYW0gdXNhZ2VBZGFwdGVycyBPcHRpb25hbCBmcmFtZXdvcmstc3BlY2lmaWMgdXNhZ2UgZGV0ZWN0b3JzLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHByb2R1Y3Rpb24gY29kZSByZWZlcmVuY2VzIHRoZSBtZW1iZXIuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdXNlZCA9IGhhc1Byb2R1Y3Rpb25Vc2FnZShwcm9ncmFtLCBzdGF0ZSwgcmVwb1Jvb3QsIG1lbWJlcik7XG4gKiBgYGBcbiAqL1xuY29uc3QgaGFzUHJvZHVjdGlvblVzYWdlID0gKFxuICBwcm9ncmFtOiB0cy5Qcm9ncmFtLFxuICBzdGF0ZTogTm9VbnVzZWRFeHBvcnRzU3RhdGUsXG4gIHJlcG9Sb290OiBzdHJpbmcsXG4gIG1lbWJlcjogUHVibGljTWVtYmVyLFxuICB1c2FnZUFkYXB0ZXJzOiByZWFkb25seSBNZW1iZXJVc2FnZUFkYXB0ZXJbXSA9IFtdLFxuKTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IGNoZWNrZXIgPSBwcm9ncmFtLmdldFR5cGVDaGVja2VyKCk7XG4gIGNvbnN0IHJlbGF0ZWRTeW1ib2xzID0gW1xuICAgIHJlc29sdmVDYW5vbmljYWxTeW1ib2wobWVtYmVyLm1lbWJlclN5bWJvbCwgY2hlY2tlciksXG4gICAgLi4uY29sbGVjdEhlcml0YWdlTWVtYmVyU3ltYm9scyhwcm9ncmFtLCBjaGVja2VyLCBtZW1iZXIpLm1hcCgoc3ltYm9sKSA9PlxuICAgICAgcmVzb2x2ZUNhbm9uaWNhbFN5bWJvbChzeW1ib2wsIGNoZWNrZXIpLFxuICAgICksXG4gIF07XG4gIGNvbnN0IHZhcmlhYmxlRGVjbGFyYXRpb24gPSB0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24obWVtYmVyLmhvc3REZWNsYXJhdGlvbilcbiAgICA/IG1lbWJlci5ob3N0RGVjbGFyYXRpb25cbiAgICA6IHZvaWQgMDtcblxuICBpZiAodmFyaWFibGVEZWNsYXJhdGlvbiAhPT0gdm9pZCAwKSB7XG4gICAgY29uc3QgZGVjbGFyZWRUeXBlID0gY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbih2YXJpYWJsZURlY2xhcmF0aW9uLm5hbWUpO1xuICAgIGNvbnN0IGRlY2xhcmVkTWVtYmVyID0gY2hlY2tlci5nZXRQcm9wZXJ0eU9mVHlwZShcbiAgICAgIGRlY2xhcmVkVHlwZSxcbiAgICAgIG1lbWJlci5tZW1iZXJOYW1lLFxuICAgICk7XG5cbiAgICBpZiAoXG4gICAgICBkZWNsYXJlZE1lbWJlciAhPT0gdm9pZCAwICYmXG4gICAgICByZWxhdGVkU3ltYm9scy5ldmVyeSgoc3ltYm9sKSA9PiAhaXNTYW1lU3ltYm9sKHN5bWJvbCwgZGVjbGFyZWRNZW1iZXIpKVxuICAgICkge1xuICAgICAgcmVsYXRlZFN5bWJvbHMucHVzaChyZXNvbHZlQ2Fub25pY2FsU3ltYm9sKGRlY2xhcmVkTWVtYmVyLCBjaGVja2VyKSk7XG4gICAgfVxuICB9XG5cbiAgY29uc3Qgbm9ybWFsaXplZFJvb3QgPSBwYXRoLnJlc29sdmUocmVwb1Jvb3QpO1xuXG4gIGZvciAoY29uc3Qgc291cmNlRmlsZSBvZiBwcm9ncmFtLmdldFNvdXJjZUZpbGVzKCkpIHtcbiAgICBjb25zdCBmaWxlbmFtZSA9IHBhdGgucmVzb2x2ZShzb3VyY2VGaWxlLmZpbGVOYW1lKTtcblxuICAgIGlmIChcbiAgICAgIHNvdXJjZUZpbGUuaXNEZWNsYXJhdGlvbkZpbGUgfHxcbiAgICAgIGlzVGVzdEZpbGUoZmlsZW5hbWUsIHN0YXRlLCBub3JtYWxpemVkUm9vdClcbiAgICApIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGlmICh1c2FnZUFkYXB0ZXJzLnNvbWUoKGFkYXB0ZXIpID0+IGFkYXB0ZXIoc291cmNlRmlsZSwgY2hlY2tlciwgbWVtYmVyKSkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbmRVc2FnZVN5bWJvbCA9IChub2RlOiB0cy5Ob2RlKTogdHMuU3ltYm9sIHwgdW5kZWZpbmVkID0+IHtcbiAgICAgIGlmIChcbiAgICAgICAgKHRzLmlzSWRlbnRpZmllcihub2RlKSB8fCB0cy5pc1N0cmluZ0xpdGVyYWxMaWtlKG5vZGUpKSAmJlxuICAgICAgICAhaXNEZWNsYXJhdGlvbk5hbWUobm9kZSlcbiAgICAgICkge1xuICAgICAgICBjb25zdCBjYW5kaWRhdGUgPSBnZXRVc2FnZVN5bWJvbChub2RlLCBjaGVja2VyKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgY2FuZGlkYXRlICE9PSB2b2lkIDAgJiZcbiAgICAgICAgICByZWxhdGVkU3ltYm9scy5zb21lKChzeW1ib2wpID0+IGlzU2FtZVN5bWJvbChzeW1ib2wsIGNhbmRpZGF0ZSkpXG4gICAgICAgICkge1xuICAgICAgICAgIHJldHVybiBjYW5kaWRhdGU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNTdHJ1Y3R1cmFsUHJvcGVydHlSZWFkKG5vZGUsIGNoZWNrZXIsIG1lbWJlcikpIHtcbiAgICAgICAgICByZXR1cm4gbWVtYmVyLm1lbWJlclN5bWJvbDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gaXNDb21wdXRlZE1lbWJlclJlYWQobm9kZSwgY2hlY2tlciwgbWVtYmVyLCByZWxhdGVkU3ltYm9scykgfHxcbiAgICAgICAgaXNXaG9sZU9iamVjdFJlYWQobm9kZSwgY2hlY2tlciwgbWVtYmVyLCBwcm9ncmFtKSB8fFxuICAgICAgICBpc0xvY2FsQ2FsbEFyZ3VtZW50U2VyaWFsaXplZChub2RlLCBjaGVja2VyLCBtZW1iZXIsIHByb2dyYW0pIHx8XG4gICAgICAgIGlzTG9jYWxDYWxsQXJndW1lbnRUcmFuc21pdHRlZChub2RlLCBjaGVja2VyLCBtZW1iZXIpIHx8XG4gICAgICAgIGlzQ2FsbEFyZ3VtZW50TWVtYmVyKG5vZGUsIGNoZWNrZXIsIG1lbWJlcikgfHxcbiAgICAgICAgaXNPYmplY3RDb250cmFjdEhhbmRvZmYobm9kZSwgY2hlY2tlciwgbWVtYmVyKVxuICAgICAgICA/IG1lbWJlci5tZW1iZXJTeW1ib2xcbiAgICAgICAgOiB0cy5mb3JFYWNoQ2hpbGQobm9kZSwgZmluZFVzYWdlU3ltYm9sKTtcbiAgICB9O1xuXG4gICAgaWYgKGZpbmRVc2FnZVN5bWJvbChzb3VyY2VGaWxlKSAhPT0gdm9pZCAwKSB7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmFsc2U7XG59O1xuXG5leHBvcnQgeyBoYXNQcm9kdWN0aW9uVXNhZ2UgfTtcbmV4cG9ydCB0eXBlIHsgTWVtYmVyVXNhZ2VBZGFwdGVyIH07XG4iXX0=
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import * as ts from "typescript";
|
|
2
|
+
import type { PublicMember } from "./member-declaration-utilities.js";
|
|
3
|
+
/**
|
|
4
|
+
* Checks whether an expression carries the member's declaration.
|
|
5
|
+
* @param expression Value being copied or serialized.
|
|
6
|
+
* @param checker TypeScript type checker.
|
|
7
|
+
* @param member Member whose declaration must be present.
|
|
8
|
+
* @param visitedExpressions Expressions already inspected across local return paths.
|
|
9
|
+
* @returns True when the expression carries this member rather than an unrelated matching shape.
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const matches = carriesMember(expression, checker, member);
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
declare const carriesMember: (expression: ts.Expression, checker: ts.TypeChecker, member: PublicMember, visitedExpressions?: Set<ts.Expression>) => boolean;
|
|
16
|
+
/**
|
|
17
|
+
* Checks serialized property types without following method signatures.
|
|
18
|
+
* @param type Type whose enumerable data may be serialized.
|
|
19
|
+
* @param checker TypeScript type checker.
|
|
20
|
+
* @param member Member whose declaration must be reachable.
|
|
21
|
+
* @param visitedTypes Types already searched.
|
|
22
|
+
* @param depth Remaining nested data depth.
|
|
23
|
+
* @returns Whether the serialized data contains the member declaration.
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const used = containsSerializedMember(type, checker, member, new Set(), 5);
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
declare const containsSerializedMember: (type: ts.Type, checker: ts.TypeChecker, member: PublicMember, visitedTypes: Set<ts.Type>, depth: number) => boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Checks whether an expression contains a value carrying the member.
|
|
32
|
+
* @param expression Value expression to inspect.
|
|
33
|
+
* @param checker TypeScript type checker.
|
|
34
|
+
* @param member Member whose value is being searched for.
|
|
35
|
+
* @returns True when the expression contains the member or its host value.
|
|
36
|
+
* @example
|
|
37
|
+
* ```typescript
|
|
38
|
+
* const carries = expressionCarriesMemberValue(value, checker, member);
|
|
39
|
+
* ```
|
|
40
|
+
*/
|
|
41
|
+
declare const expressionCarriesMemberValue: (expression: ts.Expression, checker: ts.TypeChecker, member: PublicMember) => boolean;
|
|
42
|
+
export { carriesMember, containsSerializedMember, expressionCarriesMemberValue, };
|
|
43
|
+
//# sourceMappingURL=member-usage-value-utilities.d.ts.map
|
package/dist/domain/architecture/no-unused-public-members/member-usage-value-utilities.d.ts.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"member-usage-value-utilities.d.ts","sourceRoot":"","sources":["../../../../src/domain/architecture/no-unused-public-members/member-usage-value-utilities.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,YAAY,CAAC;AAEjC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAOnE;;;;;;;;;;;GAWG;AACH,QAAA,MAAM,aAAa,GACjB,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,CAAC,WAAW,EACvB,QAAQ,YAAY,EACpB,qBAAoB,GAAG,CAAC,EAAE,CAAC,UAAU,CAAa,KACjD,OAiEF,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,QAAA,MAAM,wBAAwB,GAC5B,MAAM,EAAE,CAAC,IAAI,EACb,SAAS,EAAE,CAAC,WAAW,EACvB,QAAQ,YAAY,EACpB,cAAc,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAC1B,OAAO,MAAM,KACZ,OA8CF,CAAC;AAEF;;;;;;;;;;GAUG;AACH,QAAA,MAAM,4BAA4B,GAChC,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,CAAC,WAAW,EACvB,QAAQ,YAAY,KACnB,OAmCF,CAAC;AAEF,OAAO,EACL,aAAa,EACb,wBAAwB,EACxB,4BAA4B,GAC7B,CAAC"}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import * as ts from "typescript";
|
|
2
|
+
import { isSameSymbol, resolveCanonicalSymbol, } from "../no-unused-exports/no-unused-exports-symbol-utilities.js";
|
|
3
|
+
/**
|
|
4
|
+
* Checks whether an expression carries the member's declaration.
|
|
5
|
+
* @param expression Value being copied or serialized.
|
|
6
|
+
* @param checker TypeScript type checker.
|
|
7
|
+
* @param member Member whose declaration must be present.
|
|
8
|
+
* @param visitedExpressions Expressions already inspected across local return paths.
|
|
9
|
+
* @returns True when the expression carries this member rather than an unrelated matching shape.
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const matches = carriesMember(expression, checker, member);
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
const carriesMember = (expression, checker, member, visitedExpressions = new Set()) => {
|
|
16
|
+
if (visitedExpressions.has(expression)) {
|
|
17
|
+
return false;
|
|
18
|
+
}
|
|
19
|
+
visitedExpressions.add(expression);
|
|
20
|
+
const expressionSymbol = ts.isShorthandPropertyAssignment(expression.parent)
|
|
21
|
+
? checker.getShorthandAssignmentValueSymbol(expression.parent)
|
|
22
|
+
: checker.getSymbolAtLocation(expression);
|
|
23
|
+
if (ts.isVariableDeclaration(member.hostDeclaration) &&
|
|
24
|
+
member.hostSymbol !== void 0 &&
|
|
25
|
+
expressionSymbol !== void 0 &&
|
|
26
|
+
isSameSymbol(resolveCanonicalSymbol(expressionSymbol, checker), resolveCanonicalSymbol(member.hostSymbol, checker))) {
|
|
27
|
+
return true;
|
|
28
|
+
}
|
|
29
|
+
const property = checker.getPropertyOfType(checker.getNonNullableType(checker.getTypeAtLocation(expression)), member.memberName);
|
|
30
|
+
const declaredProperty = checker.getPropertyOfType(checker.getTypeAtLocation(member.hostDeclaration), member.memberName);
|
|
31
|
+
if (property !== void 0 &&
|
|
32
|
+
(isSameSymbol(property, member.memberSymbol) ||
|
|
33
|
+
(declaredProperty !== void 0 && isSameSymbol(property, declaredProperty)))) {
|
|
34
|
+
return true;
|
|
35
|
+
}
|
|
36
|
+
if (!ts.isCallExpression(expression)) {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
const declaration = checker
|
|
40
|
+
.getResolvedSignature(expression)
|
|
41
|
+
?.getDeclaration();
|
|
42
|
+
const body = declaration !== void 0 && "body" in declaration ? declaration.body : void 0;
|
|
43
|
+
if (body === void 0) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
if (!ts.isBlock(body)) {
|
|
47
|
+
return carriesMember(body, checker, member, visitedExpressions);
|
|
48
|
+
}
|
|
49
|
+
const findReturnedMember = (node) => {
|
|
50
|
+
if (ts.isFunctionLike(node)) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return ts.isReturnStatement(node)
|
|
54
|
+
? node.expression !== void 0 &&
|
|
55
|
+
carriesMember(node.expression, checker, member, visitedExpressions)
|
|
56
|
+
: ts.forEachChild(node, findReturnedMember) === true;
|
|
57
|
+
};
|
|
58
|
+
return findReturnedMember(body);
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Checks serialized property types without following method signatures.
|
|
62
|
+
* @param type Type whose enumerable data may be serialized.
|
|
63
|
+
* @param checker TypeScript type checker.
|
|
64
|
+
* @param member Member whose declaration must be reachable.
|
|
65
|
+
* @param visitedTypes Types already searched.
|
|
66
|
+
* @param depth Remaining nested data depth.
|
|
67
|
+
* @returns Whether the serialized data contains the member declaration.
|
|
68
|
+
* @example
|
|
69
|
+
* ```typescript
|
|
70
|
+
* const used = containsSerializedMember(type, checker, member, new Set(), 5);
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
const containsSerializedMember = (type, checker, member, visitedTypes, depth) => {
|
|
74
|
+
if (depth < 0 || visitedTypes.has(type)) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
visitedTypes.add(type);
|
|
78
|
+
if (type.isUnionOrIntersection()) {
|
|
79
|
+
return type.types.some((part) => containsSerializedMember(part, checker, member, visitedTypes, depth));
|
|
80
|
+
}
|
|
81
|
+
if ((type.flags & ts.TypeFlags.Object) === 0) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
const property = checker.getPropertyOfType(type, member.memberName);
|
|
85
|
+
if (property !== void 0 && isSameSymbol(property, member.memberSymbol)) {
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
88
|
+
const elementType = checker.getIndexTypeOfType(type, ts.IndexKind.Number);
|
|
89
|
+
return elementType === void 0
|
|
90
|
+
? checker
|
|
91
|
+
.getPropertiesOfType(type)
|
|
92
|
+
.some((nestedProperty) => (nestedProperty.flags & ts.SymbolFlags.Method) === 0 &&
|
|
93
|
+
containsSerializedMember(checker.getTypeOfSymbolAtLocation(nestedProperty, member.declaration), checker, member, visitedTypes, depth - 1))
|
|
94
|
+
: containsSerializedMember(elementType, checker, member, visitedTypes, depth - 1);
|
|
95
|
+
};
|
|
96
|
+
/**
|
|
97
|
+
* Checks whether an expression contains a value carrying the member.
|
|
98
|
+
* @param expression Value expression to inspect.
|
|
99
|
+
* @param checker TypeScript type checker.
|
|
100
|
+
* @param member Member whose value is being searched for.
|
|
101
|
+
* @returns True when the expression contains the member or its host value.
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const carries = expressionCarriesMemberValue(value, checker, member);
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
const expressionCarriesMemberValue = (expression, checker, member) => {
|
|
108
|
+
if (carriesMember(expression, checker, member) ||
|
|
109
|
+
containsSerializedMember(checker.getTypeAtLocation(expression), checker, member, new Set(), 5)) {
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
if (ts.isObjectLiteralExpression(expression)) {
|
|
113
|
+
return expression.properties.some((property) => {
|
|
114
|
+
return ts.isSpreadAssignment(property)
|
|
115
|
+
? expressionCarriesMemberValue(property.expression, checker, member)
|
|
116
|
+
: (ts.isPropertyAssignment(property) &&
|
|
117
|
+
expressionCarriesMemberValue(property.initializer, checker, member)) ||
|
|
118
|
+
(ts.isShorthandPropertyAssignment(property) &&
|
|
119
|
+
expressionCarriesMemberValue(property.name, checker, member));
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return (ts.isArrayLiteralExpression(expression) &&
|
|
123
|
+
expression.elements.some((element) => expressionCarriesMemberValue(element, checker, member)));
|
|
124
|
+
};
|
|
125
|
+
export { carriesMember, containsSerializedMember, expressionCarriesMemberValue, };
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLXVzYWdlLXZhbHVlLXV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vYXJjaGl0ZWN0dXJlL25vLXVudXNlZC1wdWJsaWMtbWVtYmVycy9tZW1iZXItdXNhZ2UtdmFsdWUtdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBSWpDLE9BQU8sRUFDTCxZQUFZLEVBQ1osc0JBQXNCLEdBQ3ZCLE1BQU0seURBQXlELENBQUM7QUFFakU7Ozs7Ozs7Ozs7O0dBV0c7QUFDSCxNQUFNLGFBQWEsR0FBRyxDQUNwQixVQUF5QixFQUN6QixPQUF1QixFQUN2QixNQUFvQixFQUNwQixxQkFBeUMsSUFBSSxHQUFHLEVBQUUsRUFDekMsRUFBRTtJQUNYLElBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDdkMsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0Qsa0JBQWtCLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBRW5DLE1BQU0sZ0JBQWdCLEdBQUcsRUFBRSxDQUFDLDZCQUE2QixDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7UUFDMUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxpQ0FBaUMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDO1FBQzlELENBQUMsQ0FBQyxPQUFPLENBQUMsbUJBQW1CLENBQUMsVUFBVSxDQUFDLENBQUM7SUFDNUMsSUFDRSxFQUFFLENBQUMscUJBQXFCLENBQUMsTUFBTSxDQUFDLGVBQWUsQ0FBQztRQUNoRCxNQUFNLENBQUMsVUFBVSxLQUFLLEtBQUssQ0FBQztRQUM1QixnQkFBZ0IsS0FBSyxLQUFLLENBQUM7UUFDM0IsWUFBWSxDQUNWLHNCQUFzQixDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxFQUNqRCxzQkFBc0IsQ0FBQyxNQUFNLENB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QyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sQ0FBQyxDQUN2RCxDQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixPQUFPLEVBQ0wsYUFBYSxFQUNiLHdCQUF3QixFQUN4Qiw0QkFBNEIsR0FDN0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHRzIGZyb20gXCJ0eXBlc2NyaXB0XCI7XG5cbmltcG9ydCB0eXBlIHsgUHVibGljTWVtYmVyIH0gZnJvbSBcIi4vbWVtYmVyLWRlY2xhcmF0aW9uLXV0aWxpdGllc1wiO1xuXG5pbXBvcnQge1xuICBpc1NhbWVTeW1ib2wsXG4gIHJlc29sdmVDYW5vbmljYWxTeW1ib2wsXG59IGZyb20gXCIuLi9uby11bnVzZWQtZXhwb3J0cy9uby11bnVzZWQtZXhwb3J0cy1zeW1ib2wtdXRpbGl0aWVzXCI7XG5cbi8qKlxuICogQ2hlY2tzIHdoZXRoZXIgYW4gZXhwcmVzc2lvbiBjYXJyaWVzIHRoZSBtZW1iZXIncyBkZWNsYXJhdGlvbi5cbiAqIEBwYXJhbSBleHByZXNzaW9uIFZhbHVlIGJlaW5nIGNvcGllZCBvciBzZXJpYWxpemVkLlxuICogQHBhcmFtIGNoZWNrZXIgVHlwZVNjcmlwdCB0eXBlIGNoZWNrZXIuXG4gKiBAcGFyYW0gbWVtYmVyIE1lbWJlciB3aG9zZSBkZWNsYXJhdGlvbiBtdXN0IGJlIHByZXNlbnQuXG4gKiBAcGFyYW0gdmlzaXRlZEV4cHJlc3Npb25zIEV4cHJlc3Npb25zIGFscmVhZHkgaW5zcGVjdGVkIGFjcm9zcyBsb2NhbCByZXR1cm4gcGF0aHMuXG4gKiBAcmV0dXJucyBUcnVlIHdoZW4gdGhlIGV4cHJlc3Npb24gY2FycmllcyB0aGlzIG1lbWJlciByYXRoZXIgdGhhbiBhbiB1bnJlbGF0ZWQgbWF0Y2hpbmcgc2hhcGUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgbWF0Y2hlcyA9IGNhcnJpZXNNZW1iZXIoZXhwcmVzc2lvbiwgY2hlY2tlciwgbWVtYmVyKTtcbiAqIGBgYFxuICovXG5jb25zdCBjYXJyaWVzTWVtYmVyID0gKFxuICBleHByZXNzaW9uOiB0cy5FeHByZXNzaW9uLFxuICBjaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbiAgbWVtYmVyOiBQdWJsaWNNZW1iZXIsXG4gIHZpc2l0ZWRFeHByZXNzaW9uczogU2V0PHRzLkV4cHJlc3Npb24+ID0gbmV3IFNldCgpLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmICh2aXNpdGVkRXhwcmVzc2lvbnMuaGFzKGV4cHJlc3Npb24pKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZpc2l0ZWRFeHByZXNzaW9ucy5hZGQoZXhwcmVzc2lvbik7XG5cbiAgY29uc3QgZXhwcmVzc2lvblN5bWJvbCA9IHRzLmlzU2hvcnRoYW5kUHJvcGVydHlBc3NpZ25tZW50KGV4cHJlc3Npb24ucGFyZW50KVxuICAgID8gY2hlY2tlci5nZXRTaG9ydGhhbmRBc3NpZ25tZW50VmFsdWVTeW1ib2woZXhwcmVzc2lvbi5wYXJlbnQpXG4gICAgOiBjaGVja2VyLmdldFN5bWJvbEF0TG9jYXRpb24oZXhwcmVzc2lvbik7XG4gIGlmIChcbiAgICB0cy5pc1ZhcmlhYmxlRGVjbGFyYXRpb24obWVtYmVyLmhvc3REZWNsYXJhdGlvbikgJiZcbiAgICBtZW1iZXIuaG9zdFN5bWJvbCAhPT0gdm9pZCAwICYmXG4gICAgZXhwcmVzc2lvblN5bWJvbCAhPT0gdm9pZCAwICYmXG4gICAgaXNTYW1lU3ltYm9sKFxuICAgICAgcmVzb2x2ZUNhbm9uaWNhbFN5bWJvbChleHByZXNzaW9uU3ltYm9sLCBjaGVja2VyKSxcbiAgICAgIHJlc29sdmVDYW5vbmljYWxTeW1ib2wobWVtYmVyLmhvc3RTeW1ib2wsIGNoZWNrZXIpLFxuICAgIClcbiAgKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBwcm9wZXJ0eSA9IGNoZWNrZXIuZ2V0UHJvcGVydHlPZlR5cGUoXG4gICAgY2hlY2tlci5nZXROb25OdWxsYWJsZVR5cGUoY2hlY2tlci5nZXRUeXBlQXRMb2NhdGlvbihleHByZXNzaW9uKSksXG4gICAgbWVtYmVyLm1lbWJlck5hbWUsXG4gICk7XG4gIGNvbnN0IGRlY2xhcmVkUHJvcGVydHkgPSBjaGVja2VyLmdldFByb3BlcnR5T2ZUeXBlKFxuICAgIGNoZWNrZXIuZ2V0VHlwZUF0TG9jYXRpb24obWVtYmVyLmhvc3REZWNsYXJhdGlvbiksXG4gICAgbWVtYmVyLm1lbWJlck5hbWUsXG4gICk7XG5cbiAgaWYgKFxuICAgIHByb3BlcnR5ICE9PSB2b2lkIDAgJiZcbiAgICAoaXNTYW1lU3ltYm9sKHByb3BlcnR5LCBtZW1iZXIubWVtYmVyU3ltYm9sKSB8fFxuICAgICAgKGRlY2xhcmVkUHJvcGVydHkgIT09IHZvaWQgMCAmJiBpc1NhbWVTeW1ib2wocHJvcGVydHksIGRlY2xhcmVkUHJvcGVydHkpKSlcbiAgKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoIXRzLmlzQ2FsbEV4cHJlc3Npb24oZXhwcmVzc2lvbikpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICBjb25zdCBkZWNsYXJhdGlvbiA9IGNoZWNrZXJcbiAgICAuZ2V0UmVzb2x2ZWRTaWduYXR1cmUoZXhwcmVzc2lvbilcbiAgICA/LmdldERlY2xhcmF0aW9uKCk7XG4gIGNvbnN0IGJvZHkgPVxuICAgIGRlY2xhcmF0aW9uICE9PSB2b2lkIDAgJiYgXCJib2R5XCIgaW4gZGVjbGFyYXRpb24gPyBkZWNsYXJhdGlvbi5ib2R5IDogdm9pZCAwO1xuICBpZiAoYm9keSA9PT0gdm9pZCAwKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIGlmICghdHMuaXNCbG9jayhib2R5KSkge1xuICAgIHJldHVybiBjYXJyaWVzTWVtYmVyKGJvZHksIGNoZWNrZXIsIG1lbWJlciwgdmlzaXRlZEV4cHJlc3Npb25zKTtcbiAgfVxuXG4gIGNvbnN0IGZpbmRSZXR1cm5lZE1lbWJlciA9IChub2RlOiB0cy5Ob2RlKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKHRzLmlzRnVuY3Rpb25MaWtlKG5vZGUpKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0cy5pc1JldHVyblN0YXRlbWVudChub2RlKVxuICAgICAgPyBub2RlLmV4cHJlc3Npb24gIT09IHZvaWQgMCAmJlxuICAgICAgICAgIGNhcnJpZXNNZW1iZXIobm9kZS5leHByZXNzaW9uLCBjaGVja2VyLCBtZW1iZXIsIHZpc2l0ZWRFeHByZXNzaW9ucylcbiAgICAgIDogdHMuZm9yRWFjaENoaWxkKG5vZGUsIGZpbmRSZXR1cm5lZE1lbWJlcikgPT09IHRydWU7XG4gIH07XG5cbiAgcmV0dXJuIGZpbmRSZXR1cm5lZE1lbWJlcihib2R5KTtcbn07XG5cbi8qKlxuICogQ2hlY2tzIHNlcmlhbGl6ZWQgcHJvcGVydHkgdHlwZXMgd2l0aG91dCBmb2xsb3dpbmcgbWV0aG9kIHNpZ25hdHVyZXMuXG4gKiBAcGFyYW0gdHlwZSBUeXBlIHdob3NlIGVudW1lcmFibGUgZGF0YSBtYXkgYmUgc2VyaWFsaXplZC5cbiAqIEBwYXJhbSBjaGVja2VyIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyLlxuICogQHBhcmFtIG1lbWJlciBNZW1iZXIgd2hvc2UgZGVjbGFyYXRpb24gbXVzdCBiZSByZWFjaGFibGUuXG4gKiBAcGFyYW0gdmlzaXRlZFR5cGVzIFR5cGVzIGFscmVhZHkgc2VhcmNoZWQuXG4gKiBAcGFyYW0gZGVwdGggUmVtYWluaW5nIG5lc3RlZCBkYXRhIGRlcHRoLlxuICogQHJldHVybnMgV2hldGhlciB0aGUgc2VyaWFsaXplZCBkYXRhIGNvbnRhaW5zIHRoZSBtZW1iZXIgZGVjbGFyYXRpb24uXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgdXNlZCA9IGNvbnRhaW5zU2VyaWFsaXplZE1lbWJlcih0eXBlLCBjaGVja2VyLCBtZW1iZXIsIG5ldyBTZXQoKSwgNSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgY29udGFpbnNTZXJpYWxpemVkTWVtYmVyID0gKFxuICB0eXBlOiB0cy5UeXBlLFxuICBjaGVja2VyOiB0cy5UeXBlQ2hlY2tlcixcbiAgbWVtYmVyOiBQdWJsaWNNZW1iZXIsXG4gIHZpc2l0ZWRUeXBlczogU2V0PHRzLlR5cGU+LFxuICBkZXB0aDogbnVtYmVyLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmIChkZXB0aCA8IDAgfHwgdmlzaXRlZFR5cGVzLmhhcyh0eXBlKSkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICB2aXNpdGVkVHlwZXMuYWRkKHR5cGUpO1xuXG4gIGlmICh0eXBlLmlzVW5pb25PckludGVyc2VjdGlvbigpKSB7XG4gICAgcmV0dXJuIHR5cGUudHlwZXMuc29tZSgocGFydCkgPT5cbiAgICAgIGNvbnRhaW5zU2VyaWFsaXplZE1lbWJlcihwYXJ0LCBjaGVja2VyLCBtZW1iZXIsIHZpc2l0ZWRUeXBlcywgZGVwdGgpLFxuICAgICk7XG4gIH1cblxuICBpZiAoKHR5cGUuZmxhZ3MgJiB0cy5UeXBlRmxhZ3MuT2JqZWN0KSA9PT0gMCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGNvbnN0IHByb3BlcnR5ID0gY2hlY2tlci5nZXRQcm9wZXJ0eU9mVHlwZSh0eXBlLCBtZW1iZXIubWVtYmVyTmFtZSk7XG4gIGlmIChwcm9wZXJ0eSAhPT0gdm9pZCAwICYmIGlzU2FtZVN5bWJvbChwcm9wZXJ0eSwgbWVtYmVyLm1lbWJlclN5bWJvbCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGNvbnN0IGVsZW1lbnRUeXBlID0gY2hlY2tlci5nZXRJbmRleFR5cGVPZlR5cGUodHlwZSwgdHMuSW5kZXhLaW5kLk51bWJlcik7XG4gIHJldHVybiBlbGVtZW50VHlwZSA9PT0gdm9pZCAwXG4gICAgPyBjaGVja2VyXG4gICAgICAgIC5nZXRQcm9wZXJ0aWVzT2ZUeXBlKHR5cGUpXG4gICAgICAgIC5zb21lKFxuICAgICAgICAgIChuZXN0ZWRQcm9wZXJ0eSkgPT5cbiAgICAgICAgICAgIChuZXN0ZWRQcm9wZXJ0eS5mbGFncyAmIHRzLlN5bWJvbEZsYWdzLk1ldGhvZCkgPT09IDAgJiZcbiAgICAgICAgICAgIGNvbnRhaW5zU2VyaWFsaXplZE1lbWJlcihcbiAgICAgICAgICAgICAgY2hlY2tlci5nZXRUeXBlT2ZTeW1ib2xBdExvY2F0aW9uKFxuICAgICAgICAgICAgICAgIG5lc3RlZFByb3BlcnR5LFxuICAgICAgICAgICAgICAgIG1lbWJlci5kZWNsYXJhdGlvbixcbiAgICAgICAgICAgICAgKSxcbiAgICAgICAgICAgICAgY2hlY2tlcixcbiAgICAgICAgICAgICAgbWVtYmVyLFxuICAgICAgICAgICAgICB2aXNpdGVkVHlwZXMsXG4gICAgICAgICAgICAgIGRlcHRoIC0gMSxcbiAgICAgICAgICAgICksXG4gICAgICAgIClcbiAgICA6IGNvbnRhaW5zU2VyaWFsaXplZE1lbWJlcihcbiAgICAgICAgZWxlbWVudFR5cGUsXG4gICAgICAgIGNoZWNrZXIsXG4gICAgICAgIG1lbWJlcixcbiAgICAgICAgdmlzaXRlZFR5cGVzLFxuICAgICAgICBkZXB0aCAtIDEsXG4gICAgICApO1xufTtcblxuLyoqXG4gKiBDaGVja3Mgd2hldGhlciBhbiBleHByZXNzaW9uIGNvbnRhaW5zIGEgdmFsdWUgY2FycnlpbmcgdGhlIG1lbWJlci5cbiAqIEBwYXJhbSBleHByZXNzaW9uIFZhbHVlIGV4cHJlc3Npb24gdG8gaW5zcGVjdC5cbiAqIEBwYXJhbSBjaGVja2VyIFR5cGVTY3JpcHQgdHlwZSBjaGVja2VyLlxuICogQHBhcmFtIG1lbWJlciBNZW1iZXIgd2hvc2UgdmFsdWUgaXMgYmVpbmcgc2VhcmNoZWQgZm9yLlxuICogQHJldHVybnMgVHJ1ZSB3aGVuIHRoZSBleHByZXNzaW9uIGNvbnRhaW5zIHRoZSBtZW1iZXIgb3IgaXRzIGhvc3QgdmFsdWUuXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgY2FycmllcyA9IGV4cHJlc3Npb25DYXJyaWVzTWVtYmVyVmFsdWUodmFsdWUsIGNoZWNrZXIsIG1lbWJlcik7XG4gKiBgYGBcbiAqL1xuY29uc3QgZXhwcmVzc2lvbkNhcnJpZXNNZW1iZXJWYWx1ZSA9IChcbiAgZXhwcmVzc2lvbjogdHMuRXhwcmVzc2lvbixcbiAgY2hlY2tlcjogdHMuVHlwZUNoZWNrZXIsXG4gIG1lbWJlcjogUHVibGljTWVtYmVyLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmIChcbiAgICBjYXJyaWVzTWVtYmVyKGV4cHJlc3Npb24sIGNoZWNrZXIsIG1lbWJlcikgfHxcbiAgICBjb250YWluc1NlcmlhbGl6ZWRNZW1iZXIoXG4gICAgICBjaGVja2VyLmdldFR5cGVBdExvY2F0aW9uKGV4cHJlc3Npb24pLFxuICAgICAgY2hlY2tlcixcbiAgICAgIG1lbWJlcixcbiAgICAgIG5ldyBTZXQoKSxcbiAgICAgIDUsXG4gICAgKVxuICApIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIGlmICh0cy5pc09iamVjdExpdGVyYWxFeHByZXNzaW9uKGV4cHJlc3Npb24pKSB7XG4gICAgcmV0dXJuIGV4cHJlc3Npb24ucHJvcGVydGllcy5zb21lKChwcm9wZXJ0eSkgPT4ge1xuICAgICAgcmV0dXJuIHRzLmlzU3ByZWFkQXNzaWdubWVudChwcm9wZXJ0eSlcbiAgICAgICAgPyBleHByZXNzaW9uQ2Fycmllc01lbWJlclZhbHVlKHByb3BlcnR5LmV4cHJlc3Npb24sIGNoZWNrZXIsIG1lbWJlcilcbiAgICAgICAgOiAodHMuaXNQcm9wZXJ0eUFzc2lnbm1lbnQocHJvcGVydHkpICYmXG4gICAgICAgICAgICBleHByZXNzaW9uQ2Fycmllc01lbWJlclZhbHVlKFxuICAgICAgICAgICAgICBwcm9wZXJ0eS5pbml0aWFsaXplcixcbiAgICAgICAgICAgICAgY2hlY2tlcixcbiAgICAgICAgICAgICAgbWVtYmVyLFxuICAgICAgICAgICAgKSkgfHxcbiAgICAgICAgICAgICh0cy5pc1Nob3J0aGFuZFByb3BlcnR5QXNzaWdubWVudChwcm9wZXJ0eSkgJiZcbiAgICAgICAgICAgICAgZXhwcmVzc2lvbkNhcnJpZXNNZW1iZXJWYWx1ZShwcm9wZXJ0eS5uYW1lLCBjaGVja2VyLCBtZW1iZXIpKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgdHMuaXNBcnJheUxpdGVyYWxFeHByZXNzaW9uKGV4cHJlc3Npb24pICYmXG4gICAgZXhwcmVzc2lvbi5lbGVtZW50cy5zb21lKChlbGVtZW50KSA9PlxuICAgICAgZXhwcmVzc2lvbkNhcnJpZXNNZW1iZXJWYWx1ZShlbGVtZW50LCBjaGVja2VyLCBtZW1iZXIpLFxuICAgIClcbiAgKTtcbn07XG5cbmV4cG9ydCB7XG4gIGNhcnJpZXNNZW1iZXIsXG4gIGNvbnRhaW5zU2VyaWFsaXplZE1lbWJlcixcbiAgZXhwcmVzc2lvbkNhcnJpZXNNZW1iZXJWYWx1ZSxcbn07XG4iXX0=
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { ESLintUtils } from "@typescript-eslint/utils";
|
|
2
2
|
import * as ts from "typescript";
|
|
3
3
|
import type { NoUnusedExportsState } from "../no-unused-exports/types.js";
|
|
4
|
+
import type { MemberUsageAdapter } from "./member-usage-utilities.js";
|
|
4
5
|
type ParserServices = ReturnType<typeof ESLintUtils.getParserServices>;
|
|
5
6
|
/**
|
|
6
7
|
* Collects unused direct public members from a linted source file.
|
|
@@ -9,13 +10,14 @@ type ParserServices = ReturnType<typeof ESLintUtils.getParserServices>;
|
|
|
9
10
|
* @param state Normalized public API and test patterns.
|
|
10
11
|
* @param repoRoot Root directory used for glob matching.
|
|
11
12
|
* @param parserServices TypeScript and ESTree node maps.
|
|
13
|
+
* @param usageAdapters Adapters that recognize usage outside TypeScript source.
|
|
12
14
|
* @returns Members outside the public API with no production use.
|
|
13
15
|
* @example
|
|
14
16
|
* ```typescript
|
|
15
17
|
* const unused = collectUnusedPublicMembers(sourceFile, program, state, repoRoot, services);
|
|
16
18
|
* ```
|
|
17
19
|
*/
|
|
18
|
-
declare const collectUnusedPublicMembers: (sourceFile: ts.SourceFile, program: ts.Program, state: NoUnusedExportsState, repoRoot: string, parserServices: ParserServices) => import("./member-declaration-utilities.js").PublicMember[];
|
|
20
|
+
declare const collectUnusedPublicMembers: (sourceFile: ts.SourceFile, program: ts.Program, state: NoUnusedExportsState, repoRoot: string, parserServices: ParserServices, usageAdapters?: readonly MemberUsageAdapter[]) => import("./member-declaration-utilities.js").PublicMember[];
|
|
19
21
|
/**
|
|
20
22
|
* Finds the program source file matching an absolute lint filename.
|
|
21
23
|
* @param program TypeScript project program.
|
|
@@ -1 +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;
|
|
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;AACvE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AASnE,KAAK,cAAc,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC,iBAAiB,CAAC,CAAC;AAEvE;;;;;;;;;;;;;GAaG;AACH,QAAA,MAAM,0BAA0B,GAC9B,YAAY,EAAE,CAAC,UAAU,EACzB,SAAS,EAAE,CAAC,OAAO,EACnB,OAAO,oBAAoB,EAC3B,UAAU,MAAM,EAChB,gBAAgB,cAAc,EAC9B,gBAAe,SAAS,kBAAkB,EAAO,4DAUlD,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"}
|
|
@@ -11,17 +11,18 @@ import { hasProductionUsage } from "./member-usage-utilities.js";
|
|
|
11
11
|
* @param state Normalized public API and test patterns.
|
|
12
12
|
* @param repoRoot Root directory used for glob matching.
|
|
13
13
|
* @param parserServices TypeScript and ESTree node maps.
|
|
14
|
+
* @param usageAdapters Adapters that recognize usage outside TypeScript source.
|
|
14
15
|
* @returns Members outside the public API with no production use.
|
|
15
16
|
* @example
|
|
16
17
|
* ```typescript
|
|
17
18
|
* const unused = collectUnusedPublicMembers(sourceFile, program, state, repoRoot, services);
|
|
18
19
|
* ```
|
|
19
20
|
*/
|
|
20
|
-
const collectUnusedPublicMembers = (sourceFile, program, state, repoRoot, parserServices) => {
|
|
21
|
+
const collectUnusedPublicMembers = (sourceFile, program, state, repoRoot, parserServices, usageAdapters = []) => {
|
|
21
22
|
const checker = program.getTypeChecker();
|
|
22
23
|
return collectPublicMembers(sourceFile, checker, parserServices).filter((member) => !isPublicApiHost(program, state, repoRoot, member.hostSymbol) &&
|
|
23
24
|
!isPublicApiMember(program, state, repoRoot, member.memberSymbol) &&
|
|
24
|
-
!hasProductionUsage(program, state, repoRoot, member));
|
|
25
|
+
!hasProductionUsage(program, state, repoRoot, member, usageAdapters));
|
|
25
26
|
};
|
|
26
27
|
/**
|
|
27
28
|
* Finds the program source file matching an absolute lint filename.
|
|
@@ -48,4 +49,4 @@ const getProgramSourceFile = (program, filename) => program
|
|
|
48
49
|
*/
|
|
49
50
|
const getProjectRoot = (program) => path.resolve(program.getCurrentDirectory());
|
|
50
51
|
export { collectUnusedPublicMembers, getProgramSourceFile, getProjectRoot };
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
52
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtYmVyLXV0aWxpdGllcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kb21haW4vYXJjaGl0ZWN0dXJlL25vLXVudXNlZC1wdWJsaWMtbWVtYmVycy9tZW1iZXItdXRpbGl0aWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN2RCxPQUFPLElBQUksTUFBTSxXQUFXLENBQUM7QUFDN0IsT0FBTyxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFLakMsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDdEUsT0FBTyxFQUNMLGVBQWUsRUFDZixpQkFBaUIsR0FDbEIsTUFBTSwrQkFBK0IsQ0FBQztBQUN2QyxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUk5RDs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBRyxDQUNqQyxVQUF5QixFQUN6QixPQUFtQixFQUNuQixLQUEyQixFQUMzQixRQUFnQixFQUNoQixjQUE4QixFQUM5QixnQkFBK0MsRUFBRSxFQUNqRCxFQUFFO0lBQ0YsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLGNBQWMsRUFBRSxDQUFDO0lBRXpDLE9BQU8sb0JBQW9CLENBQUMsVUFBVSxFQUFFLE9BQU8sRUFBRSxjQUFjLENBQUMsQ0FBQyxNQUFNLENBQ3JFLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDVCxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLENBQUMsVUFBVSxDQUFDO1FBQzdELENBQUMsaUJBQWlCLENBQUMsT0FBTyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQztRQUNqRSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sRUFBRSxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxhQUFhLENBQUMsQ0FDdkUsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGOzs7Ozs7Ozs7R0FTRztBQUNILE1BQU0sb0JBQW9CLEdBQUcsQ0FDM0IsT0FBbUIsRUFDbkIsUUFBZ0IsRUFDVyxFQUFFLENBQzdCLE9BQU87S0FDSixjQUFjLEVBQUU7S0FDaEIsSUFBSSxDQUNILENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FDYixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUU7SUFDL0MsSUFBSSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FDdkMsQ0FBQztBQUVOOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFtQixFQUFVLEVBQUUsQ0FDckQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDO0FBRTlDLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxvQkFBb0IsRUFBRSxjQUFjLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEVTTGludFV0aWxzIH0gZnJvbSBcIkB0eXBlc2NyaXB0LWVzbGludC91dGlsc1wiO1xuaW1wb3J0IHBhdGggZnJvbSBcIm5vZGU6cGF0aFwiO1xuaW1wb3J0ICogYXMgdHMgZnJvbSBcInR5cGVzY3JpcHRcIjtcblxuaW1wb3J0IHR5cGUgeyBOb1VudXNlZEV4cG9ydHNTdGF0ZSB9IGZyb20gXCIuLi9uby11bnVzZWQtZXhwb3J0cy90eXBlc1wiO1xuaW1wb3J0IHR5cGUgeyBNZW1iZXJVc2FnZUFkYXB0ZXIgfSBmcm9tIFwiLi9tZW1iZXItdXNhZ2UtdXRpbGl0aWVzXCI7XG5cbmltcG9ydCB7IGNvbGxlY3RQdWJsaWNNZW1iZXJzIH0gZnJvbSBcIi4vbWVtYmVyLWRlY2xhcmF0aW9uLXV0aWxpdGllc1wiO1xuaW1wb3J0IHtcbiAgaXNQdWJsaWNBcGlIb3N0LFxuICBpc1B1YmxpY0FwaU1lbWJlcixcbn0gZnJvbSBcIi4vbWVtYmVyLXB1YmxpYy1hcGktdXRpbGl0aWVzXCI7XG5pbXBvcnQgeyBoYXNQcm9kdWN0aW9uVXNhZ2UgfSBmcm9tIFwiLi9tZW1iZXItdXNhZ2UtdXRpbGl0aWVzXCI7XG5cbnR5cGUgUGFyc2VyU2VydmljZXMgPSBSZXR1cm5UeXBlPHR5cGVvZiBFU0xpbnRVdGlscy5nZXRQYXJzZXJTZXJ2aWNlcz47XG5cbi8qKlxuICogQ29sbGVjdHMgdW51c2VkIGRpcmVjdCBwdWJsaWMgbWVtYmVycyBmcm9tIGEgbGludGVkIHNvdXJjZSBmaWxlLlxuICogQHBhcmFtIHNvdXJjZUZpbGUgU291cmNlIGZpbGUgYmVpbmcgbGludGVkLlxuICogQHBhcmFtIHByb2dyYW0gVHlwZVNjcmlwdCBwcm9qZWN0IHByb2dyYW0uXG4gKiBAcGFyYW0gc3RhdGUgTm9ybWFsaXplZCBwdWJsaWMgQVBJIGFuZCB0ZXN0IHBhdHRlcm5zLlxuICogQHBhcmFtIHJlcG9Sb290IFJvb3QgZGlyZWN0b3J5IHVzZWQgZm9yIGdsb2IgbWF0Y2hpbmcuXG4gKiBAcGFyYW0gcGFyc2VyU2VydmljZXMgVHlwZVNjcmlwdCBhbmQgRVNUcmVlIG5vZGUgbWFwcy5cbiAqIEBwYXJhbSB1c2FnZUFkYXB0ZXJzIEFkYXB0ZXJzIHRoYXQgcmVjb2duaXplIHVzYWdlIG91dHNpZGUgVHlwZVNjcmlwdCBzb3VyY2UuXG4gKiBAcmV0dXJucyBNZW1iZXJzIG91dHNpZGUgdGhlIHB1YmxpYyBBUEkgd2l0aCBubyBwcm9kdWN0aW9uIHVzZS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB1bnVzZWQgPSBjb2xsZWN0VW51c2VkUHVibGljTWVtYmVycyhzb3VyY2VGaWxlLCBwcm9ncmFtLCBzdGF0ZSwgcmVwb1Jvb3QsIHNlcnZpY2VzKTtcbiAqIGBgYFxuICovXG5jb25zdCBjb2xsZWN0VW51c2VkUHVibGljTWVtYmVycyA9IChcbiAgc291cmNlRmlsZTogdHMuU291cmNlRmlsZSxcbiAgcHJvZ3JhbTogdHMuUHJvZ3JhbSxcbiAgc3RhdGU6IE5vVW51c2VkRXhwb3J0c1N0YXRlLFxuICByZXBvUm9vdDogc3RyaW5nLFxuICBwYXJzZXJTZXJ2aWNlczogUGFyc2VyU2VydmljZXMsXG4gIHVzYWdlQWRhcHRlcnM6IHJlYWRvbmx5IE1lbWJlclVzYWdlQWRhcHRlcltdID0gW10sXG4pID0+IHtcbiAgY29uc3QgY2hlY2tlciA9IHByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcblxuICByZXR1cm4gY29sbGVjdFB1YmxpY01lbWJlcnMoc291cmNlRmlsZSwgY2hlY2tlciwgcGFyc2VyU2VydmljZXMpLmZpbHRlcihcbiAgICAobWVtYmVyKSA9PlxuICAgICAgIWlzUHVibGljQXBpSG9zdChwcm9ncmFtLCBzdGF0ZSwgcmVwb1Jvb3QsIG1lbWJlci5ob3N0U3ltYm9sKSAmJlxuICAgICAgIWlzUHVibGljQXBpTWVtYmVyKHByb2dyYW0sIHN0YXRlLCByZXBvUm9vdCwgbWVtYmVyLm1lbWJlclN5bWJvbCkgJiZcbiAgICAgICFoYXNQcm9kdWN0aW9uVXNhZ2UocHJvZ3JhbSwgc3RhdGUsIHJlcG9Sb290LCBtZW1iZXIsIHVzYWdlQWRhcHRlcnMpLFxuICApO1xufTtcblxuLyoqXG4gKiBGaW5kcyB0aGUgcHJvZ3JhbSBzb3VyY2UgZmlsZSBtYXRjaGluZyBhbiBhYnNvbHV0ZSBsaW50IGZpbGVuYW1lLlxuICogQHBhcmFtIHByb2dyYW0gVHlwZVNjcmlwdCBwcm9qZWN0IHByb2dyYW0uXG4gKiBAcGFyYW0gZmlsZW5hbWUgQWJzb2x1dGUgZmlsZW5hbWUgdG8gZmluZC5cbiAqIEByZXR1cm5zIE1hdGNoaW5nIHNvdXJjZSBmaWxlIHdoZW4gaXQgYmVsb25ncyB0byB0aGUgcHJvZ3JhbS5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBzb3VyY2VGaWxlID0gZ2V0UHJvZ3JhbVNvdXJjZUZpbGUocHJvZ3JhbSwgY29udGV4dC5maWxlbmFtZSk7XG4gKiBgYGBcbiAqL1xuY29uc3QgZ2V0UHJvZ3JhbVNvdXJjZUZpbGUgPSAoXG4gIHByb2dyYW06IHRzLlByb2dyYW0sXG4gIGZpbGVuYW1lOiBzdHJpbmcsXG4pOiB0cy5Tb3VyY2VGaWxlIHwgdW5kZWZpbmVkID0+XG4gIHByb2dyYW1cbiAgICAuZ2V0U291cmNlRmlsZXMoKVxuICAgIC5maW5kKFxuICAgICAgKHNvdXJjZUZpbGUpID0+XG4gICAgICAgIHBhdGgucmVzb2x2ZShzb3VyY2VGaWxlLmZpbGVOYW1lKS50b0xvd2VyQ2FzZSgpID09PVxuICAgICAgICBwYXRoLnJlc29sdmUoZmlsZW5hbWUpLnRvTG93ZXJDYXNlKCksXG4gICAgKTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBhYnNvbHV0ZSBwcm9qZWN0IHJvb3QgZnJvbSB0aGUgVHlwZVNjcmlwdCBwcm9ncmFtLlxuICogQHBhcmFtIHByb2dyYW0gVHlwZVNjcmlwdCBwcm9qZWN0IHByb2dyYW0uXG4gKiBAcmV0dXJucyBBYnNvbHV0ZSBUeXBlU2NyaXB0IHByb2plY3Qgcm9vdC5cbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCBwcm9qZWN0Um9vdCA9IGdldFByb2plY3RSb290KHByb2dyYW0pO1xuICogYGBgXG4gKi9cbmNvbnN0IGdldFByb2plY3RSb290ID0gKHByb2dyYW06IHRzLlByb2dyYW0pOiBzdHJpbmcgPT5cbiAgcGF0aC5yZXNvbHZlKHByb2dyYW0uZ2V0Q3VycmVudERpcmVjdG9yeSgpKTtcblxuZXhwb3J0IHsgY29sbGVjdFVudXNlZFB1YmxpY01lbWJlcnMsIGdldFByb2dyYW1Tb3VyY2VGaWxlLCBnZXRQcm9qZWN0Um9vdCB9O1xuIl19
|