@cdklabs/eslint-plugin 1.4.0 → 1.4.2
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.
|
@@ -4,9 +4,10 @@ exports.defaultOptions = exports.meta = void 0;
|
|
|
4
4
|
exports.create = create;
|
|
5
5
|
const utils_1 = require("@typescript-eslint/utils");
|
|
6
6
|
const eslint_utils_1 = require("@typescript-eslint/utils/eslint-utils");
|
|
7
|
+
const typescript_1 = require("typescript");
|
|
7
8
|
exports.meta = {
|
|
8
9
|
messages: {
|
|
9
|
-
avoidAccess: "{{ memberAccess }}: this will evaluate
|
|
10
|
+
avoidAccess: "{{ memberAccess }}: this will evaluate a property, which might throw if it's a getter. Prefer using `'{{ prop }}' in {{ obj }}` (don't forget to check for object-ness of {{ obj }} if necessary!)",
|
|
10
11
|
},
|
|
11
12
|
};
|
|
12
13
|
exports.defaultOptions = {};
|
|
@@ -17,6 +18,8 @@ function create(context) {
|
|
|
17
18
|
/**
|
|
18
19
|
* Whether this function is a type predicate
|
|
19
20
|
*
|
|
21
|
+
* This is a short and sweet way to determine whether this is a function we should be checking.
|
|
22
|
+
*
|
|
20
23
|
* ```
|
|
21
24
|
* function isSomething(x: unknown): x is Something { ... }
|
|
22
25
|
* ```
|
|
@@ -30,6 +33,9 @@ function create(context) {
|
|
|
30
33
|
/**
|
|
31
34
|
* Whether this looks like a type coercion function
|
|
32
35
|
*
|
|
36
|
+
* There are a lot more heuristics involved here to determine whether this is actually
|
|
37
|
+
* a function that does a run-time type check. It could look like this for a number of reasons.
|
|
38
|
+
*
|
|
33
39
|
* ```
|
|
34
40
|
* function toSomething(x: SomeType): SomeSubType { ... }
|
|
35
41
|
* ```
|
|
@@ -37,13 +43,37 @@ function create(context) {
|
|
|
37
43
|
function isTypeCoercionFunction(node) {
|
|
38
44
|
const typeChecker = services.program.getTypeChecker();
|
|
39
45
|
const functionType = services.getTypeAtLocation(node);
|
|
40
|
-
const
|
|
41
|
-
|
|
46
|
+
const callSignature = functionType.getCallSignatures()[0];
|
|
47
|
+
if (!callSignature) {
|
|
48
|
+
// Constructors, getters and setters don't have a call signature
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
const firstParameter = callSignature.getParameters()[0];
|
|
52
|
+
if (!firstParameter) {
|
|
53
|
+
// Couldn't resolve first parameter for some reason. This can happen if the argument is 'this'
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
const argumentType = typeChecker.getTypeOfSymbol(firstParameter);
|
|
57
|
+
const returnType = callSignature.getReturnType();
|
|
58
|
+
// If the output type is void this is not a type coercion
|
|
59
|
+
// eslint-disable-next-line no-bitwise
|
|
60
|
+
if ((returnType.getFlags() & typescript_1.TypeFlags.VoidLike) !== 0) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
// If the output type doesn't have a symbol, it's an anonymous type (`return { x: 3, y: 42 };`)
|
|
64
|
+
// Which is most likely not a coercion function.
|
|
65
|
+
if (returnType.getSymbol() == null || returnType.getSymbol()?.escapedName === '__object') {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
// Object methods are never type testing functions (static class methods might be)
|
|
69
|
+
if (node.parent.type === utils_1.AST_NODE_TYPES.MethodDefinition && !node.parent.static) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
42
72
|
// If the return type is assignable to the input type, then this looks like
|
|
43
|
-
// a downcast which probably means it's a type
|
|
44
|
-
return typeChecker.isTypeAssignableTo(returnType, argumentType)
|
|
73
|
+
// a downcast which probably means it's a type coercion function.
|
|
74
|
+
return (typeChecker.isTypeAssignableTo(returnType, argumentType)
|
|
75
|
+
&& !typeChecker.isTypeAssignableTo(argumentType, returnType));
|
|
45
76
|
}
|
|
46
|
-
// eslint-disable-next-line @stylistic/max-len
|
|
47
77
|
function maybeInteresting(node) {
|
|
48
78
|
if (node.params.length !== 1 || node.params[0].type !== utils_1.AST_NODE_TYPES.Identifier) {
|
|
49
79
|
return undefined;
|
|
@@ -103,7 +133,7 @@ function create(context) {
|
|
|
103
133
|
&& node.parent.parent.operator === '!') {
|
|
104
134
|
dangerous = true;
|
|
105
135
|
}
|
|
106
|
-
if (node.parent.type === utils_1.AST_NODE_TYPES.LogicalExpression) {
|
|
136
|
+
if (node.parent.type === utils_1.AST_NODE_TYPES.LogicalExpression && ['&&', '||'].includes(node.parent.operator)) {
|
|
107
137
|
dangerous = true;
|
|
108
138
|
}
|
|
109
139
|
if ([utils_1.AST_NODE_TYPES.ReturnStatement, utils_1.AST_NODE_TYPES.IfStatement, utils_1.AST_NODE_TYPES.ConditionalExpression].includes(node.parent.type)) {
|
|
@@ -131,4 +161,4 @@ function create(context) {
|
|
|
131
161
|
'MemberExpression': onlyInInterestingFunction(memberExpression),
|
|
132
162
|
};
|
|
133
163
|
}
|
|
134
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tZXZhbHVhdGluZy10eXBlZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVsZXMvbm8tZXZhbHVhdGluZy10eXBlZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBb0JBLHdCQW1JQztBQXZKRCxvREFBb0U7QUFFcEUsd0VBQTBFO0FBSzdELFFBQUEsSUFBSSxHQUFzQjtJQUNyQyxRQUFRLEVBQUU7UUFDUixXQUFXLEVBQUUsc01BQXNNO0tBQ3BOO0NBQ0YsQ0FBQztBQUVXLFFBQUEsY0FBYyxHQUFHLEVBQUUsQ0FBQztBQU9qQyxTQUFnQixNQUFNLENBQUMsT0FBeUI7SUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBQSxnQ0FBaUIsRUFBQyxPQUFjLENBQUMsQ0FBQztJQUVuRCxNQUFNLGFBQWEsR0FBMkMsRUFBRSxDQUFDO0lBQ2pFLHVFQUF1RTtJQUV2RTs7Ozs7O09BTUc7SUFDSCxTQUFTLHNCQUFzQixDQUFDLElBQWdFO1FBQzlGLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLHNCQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7WUFBQyxPQUFPLEtBQUssQ0FBQztRQUFDLENBQUM7UUFDcEcsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxJQUFJLEtBQUssc0JBQWMsQ0FBQyxlQUFlLENBQUM7SUFDakYsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILFNBQVMsc0JBQXNCLENBQUMsSUFBZ0U7UUFDOUYsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0RCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsTUFBTSxZQUFZLEdBQUcsV0FBVyxDQUFDLGVBQWUsQ0FBQyxZQUFZ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WVBFUywgVFNFU1RyZWUgfSBmcm9tICdAdHlwZXNjcmlwdC1lc2xpbnQvdXRpbHMnO1xuXG5pbXBvcnQgeyBnZXRQYXJzZXJTZXJ2aWNlcyB9IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscy9lc2xpbnQtdXRpbHMnO1xuaW1wb3J0IHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5pbXBvcnQgdHlwZSB7IE1lbWJlckV4cHJlc3Npb24gfSBmcm9tICdlc3RyZWUnO1xuaW1wb3J0IE5vZGVQYXJlbnRFeHRlbnNpb24gPSBSdWxlLk5vZGVQYXJlbnRFeHRlbnNpb247XG5cbmV4cG9ydCBjb25zdCBtZXRhOiBSdWxlLlJ1bGVNZXRhRGF0YSA9IHtcbiAgbWVzc2FnZXM6IHtcbiAgICBhdm9pZEFjY2VzczogXCJ7eyBtZW1iZXJBY2Nlc3MgfX06IHRoaXMgd2lsbCBldmFsdWF0ZSAne3sgcHJvcCB9fScsIHdoaWNoIG1pZ2h0IHRocm93IGlmIGl0J3MgYSBnZXR0ZXIuIFByZWZlciB1c2luZyBgJ3t7IHByb3AgfX0nIGluIHt7IG9iaiB9fWAgKGRvbid0IGZvcmdldCB0byBjaGVjayBmb3Igb2JqZWN0LW5lc3Mgb2Yge3sgb2JqIH19IGlmIG5lY2Vzc2FyeSEpXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7fTtcblxuXG5pbnRlcmZhY2UgSW50ZXJlc3RpbmdGdW5jdGlvbiB7XG4gIHJlYWRvbmx5IGFyZ3VtZW50TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciB7XG4gIGNvbnN0IHNlcnZpY2VzID0gZ2V0UGFyc2VyU2VydmljZXMoY29udGV4dCBhcyBhbnkpO1xuXG4gIGNvbnN0IGZ1bmN0aW9uU3RhY2s6IEFycmF5PEludGVyZXN0aW5nRnVuY3Rpb24gfCB1bmRlZmluZWQ+ID0gW107XG4gIC8vICBjb25zdCBjbGFzc0RlY2xhcmF0aW9uczogTWFwPHN0cmluZywgQ2xhc3NEZWNsYXJhdGlvbj4gPSBuZXcgTWFwKCk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBmdW5jdGlvbiBpcyBhIHR5cGUgcHJlZGljYXRlXG4gICAqXG4gICAqIGBgYFxuICAgKiBmdW5jdGlvbiBpc1NvbWV0aGluZyh4OiB1bmtub3duKTogeCBpcyBTb21ldGhpbmcgeyAuLi4gfVxuICAgKiBgYGBcbiAgICovXG4gIGZ1bmN0aW9uIGlzVXNlckRlZmluZWRUeXBlR3VhcmQobm9kZTogVFNFU1RyZWUuRnVuY3Rpb25EZWNsYXJhdGlvbiB8IFRTRVNUcmVlLkZ1bmN0aW9uRXhwcmVzc2lvbikge1xuICAgIGlmIChub2RlLnBhcmFtcy5sZW5ndGggIT09IDEgfHwgbm9kZS5wYXJhbXNbMF0udHlwZSAhPT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllcikgeyByZXR1cm4gZmFsc2U7IH1cbiAgICByZXR1cm4gbm9kZS5yZXR1cm5UeXBlPy50eXBlQW5ub3RhdGlvbi50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5UU1R5cGVQcmVkaWNhdGU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGxvb2tzIGxpa2UgYSB0eXBlIGNvZXJjaW9uIGZ1bmN0aW9uXG4gICAqXG4gICAqIGBgYFxuICAgKiBmdW5jdGlvbiB0b1NvbWV0aGluZyh4OiBTb21lVHlwZSk6IFNvbWVTdWJUeXBlIHsgLi4uIH1cbiAgICogYGBgXG4gICAqL1xuICBmdW5jdGlvbiBpc1R5cGVDb2VyY2lvbkZ1bmN0aW9uKG5vZGU6IFRTRVNUcmVlLkZ1bmN0aW9uRGVjbGFyYXRpb24gfCBUU0VTVHJlZS5GdW5jdGlvbkV4cHJlc3Npb24pIHtcbiAgICBjb25zdCB0eXBlQ2hlY2tlciA9IHNlcnZpY2VzLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcblxuICAgIGNvbnN0IGZ1bmN0aW9uVHlwZSA9IHNlcnZpY2VzLmdldFR5cGVBdExvY2F0aW9uKG5vZGUpO1xuICAgIGNvbnN0IGFyZ3VtZW50VHlwZSA9IHR5cGVDaGVja2VyLmdldFR5cGVPZlN5bWJvbChmdW5jdGlvblR5cGUuZ2V0Q2FsbFNpZ25hdHVyZXMoKVswXS5nZXRQYXJhbWV0ZXJzKClbMF0pO1xuICAgIGNvbnN0IHJldHVyblR5cGUgPSBmdW5jdGlvblR5cGUuZ2V0Q2FsbFNpZ25hdHVyZXMoKVswXS5nZXRSZXR1cm5UeXBlKCk7XG5cbiAgICAvLyBJZiB0aGUgcmV0dXJuIHR5cGUgaXMgYXNzaWduYWJsZSB0byB0aGUgaW5wdXQgdHlwZSwgdGhlbiB0aGlzIGxvb2tzIGxpa2VcbiAgICAvLyBhIGRvd25jYXN0IHdoaWNoIHByb2JhYmx5IG1lYW5zIGl0J3MgYSB0eXBlIGNvZXJjdGlvbiBmdW5jdGlvbi5cbiAgICByZXR1cm4gdHlwZUNoZWNrZXIuaXNUeXBlQXNzaWduYWJsZVRvKHJldHVyblR5cGUsIGFyZ3VtZW50VHlwZSk7XG4gIH1cblxuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHN0eWxpc3RpYy9tYXgtbGVuXG4gIGZ1bmN0aW9uIG1heWJlSW50ZXJlc3Rpbmcobm9kZTogVFNFU1RyZWUuRnVuY3Rpb25EZWNsYXJhdGlvbiB8IFRTRVNUcmVlLkZ1bmN0aW9uRXhwcmVzc2lvbik6IEludGVyZXN0aW5nRnVuY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIGlmIChub2RlLnBhcmFtcy5sZW5ndGggIT09IDEgfHwgbm9kZS5wYXJhbXNbMF0udHlwZSAhPT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllcikgeyByZXR1cm4gdW5kZWZpbmVkOyB9XG4gICAgaWYgKGlzVXNlckRlZmluZWRUeXBlR3VhcmQobm9kZSkgfHwgaXNUeXBlQ29lcmNpb25GdW5jdGlvbihub2RlKSkge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgYXJndW1lbnROYW1lOiAobm9kZS5wYXJhbXNbMF0gYXMgVFNFU1RyZWUuSWRlbnRpZmllcikubmFtZSxcbiAgICAgIH07XG4gICAgfVxuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cblxuICAvKipcbiAgICogRW50ZXIgYSBmdW5jdGlvbiBhbmQgc2VlIGlmIGl0J3MgaW50ZXJlc3RpbmdcbiAgICovXG4gIGZ1bmN0aW9uIGVudGVyRnVuY3Rpb24obm9kZTogKFRTRVNUcmVlLkZ1bmN0aW9uRGVjbGFyYXRpb24gfCBUU0VTVHJlZS5GdW5jdGlvbkV4cHJlc3Npb24pICYgTm9kZVBhcmVudEV4dGVuc2lvbikge1xuICAgIGZ1bmN0aW9uU3RhY2sucHVzaChtYXliZUludGVyZXN0aW5nKG5vZGUpKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGV4aXRGdW5jdGlvbigpIHtcbiAgICBmdW5jdGlvblN0YWNrLnBvcCgpO1xuICB9XG5cbiAgZnVuY3Rpb24gY3VycmVudEludGVyZXN0aW5nKCk6IEludGVyZXN0aW5nRnVuY3Rpb24gfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBmdW5jdGlvblN0YWNrLmxlbmd0aCA+IDAgPyBmdW5jdGlvblN0YWNrW2Z1bmN0aW9uU3RhY2subGVuZ3RoIC0gMV0gOiB1bmRlZmluZWQ7XG4gIH1cblxuICBmdW5jdGlvbiBvbmx5SW5JbnRlcmVzdGluZ0Z1bmN0aW9uPEEgZXh0ZW5kcyBGdW5jdGlvbj4oZm46IEEpOiBBIHtcbiAgICByZXR1cm4gKCguLi5hcmdzOiBhbnlbXSkgPT4ge1xuICAgICAgaWYgKGN1cnJlbnRJbnRlcmVzdGluZygpKSB7XG4gICAgICAgIHJldHVybiBmbiguLi5hcmdzKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSkgYXMgYW55O1xuICB9XG5cbiAgLyoqXG4gICAqIEZvciBtZW1iZXIgZXhwcmVzc2lvbnMgaW4gaW50ZXJlc3RpbmcgZnVuY3Rpb25zXG4gICAqXG4gICAqIC0gSWYgdGhlaXIgTEhTIHJlZmVycyB0byB0aGUgb25seSBmdW5jdGlvbiBhcmd1bWVudDsgQU5EXG4gICAqICAgLSBJZiB0aGVpciBwYXJlbnQgaXMgYSBgdHlwZW9mYCBub2RlOyBPUlxuICAgKiAgIC0gVGhlIG1lbWJlciBleHByZXNzaW9uIGlzIHBhcnQgb2YgYSBib29sZWFuIGV4cHJlc3Npb247IE9SXG4gICAqICAgLSBUaGUgbWVtYmVyIGV4cHJlc3Npb24gaXMgaW4gYSBiYW5nLWJhbmcgb3BlcmF0b3IgKCEhKTsgT1JcbiAgICogICAtIFRoZSBleHByZXNzaW9uIGlzIGJ5IGl0c2VsZiBpbiBhbiBgaWZgIG9yIGByZXR1cm5gIG9yIGA/OmAgdGVybmFyeVxuICAgKlxuICAgKiBUaGVuIHRoYXQgaXMgYSBwb3RlbnRpYWwgcHJvYmxlbSBiZWNhdXNlIGl0IHdpbGwgZXZhbHVhdGUgYSBtZW1iZXJcbiAgICogdGhhdCB3ZSBwb3RlbnRpYWxseSBvbmx5IHdhbnRlZCB0byB0ZXN0IGZvciBwcmVzZW5jZS5cbiAgICovXG4gIGZ1bmN0aW9uIG1lbWJlckV4cHJlc3Npb24obm9kZTogVFNFU1RyZWUuTWVtYmVyRXhwcmVzc2lvbikge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBjdXJyZW50SW50ZXJlc3RpbmcoKSE7XG5cbiAgICAvLyBPbmx5IHByb3BlcnR5IGFjY2VzcyBvbiB0aGUgcHJpbWFyeSBhcmd1bWVudFxuICAgIGlmICgobm9kZS5vYmplY3QudHlwZSAhPT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllcikgfHwgKG5vZGUub2JqZWN0IGFzIFRTRVNUcmVlLklkZW50aWZpZXIpLm5hbWUgIT09IGN1cnJlbnQuYXJndW1lbnROYW1lKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgbGV0IGRhbmdlcm91cyA9IGZhbHNlO1xuICAgIGlmIChub2RlLnBhcmVudC50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5VbmFyeUV4cHJlc3Npb24gJiYgbm9kZS5wYXJlbnQub3BlcmF0b3IgPT09ICd0eXBlb2YnKSB7XG4gICAgICBkYW5nZXJvdXMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAobm9kZS5wYXJlbnQudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuVW5hcnlFeHByZXNzaW9uXG4gICAgICAmJiBub2RlLnBhcmVudC5vcGVyYXRvciA9PT0gJyEnXG4gICAgICAmJiBub2RlLnBhcmVudC5wYXJlbnQudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuVW5hcnlFeHByZXNzaW9uXG4gICAgICAmJiBub2RlLnBhcmVudC5wYXJlbnQub3BlcmF0b3IgPT09ICchJykge1xuICAgICAgZGFuZ2Vyb3VzID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG5vZGUucGFyZW50LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLkxvZ2ljYWxFeHByZXNzaW9uKSB7XG4gICAgICBkYW5nZXJvdXMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoW0FTVF9OT0RFX1RZUEVTLlJldHVyblN0YXRlbWVudCwgQVNUX05PREVfVFlQRVMuSWZTdGF0ZW1lbnQsIEFTVF9OT0RFX1RZUEVTLkNvbmRpdGlvbmFsRXhwcmVzc2lvbl0uaW5jbHVkZXMobm9kZS5wYXJlbnQudHlwZSkpIHtcbiAgICAgIGRhbmdlcm91cyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRhbmdlcm91cykge1xuICAgICAgY29uc3QgZXNsaW50Tm9kZSA9IG5vZGUgYXMgTWVtYmVyRXhwcmVzc2lvbjtcbiAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgbm9kZTogZXNsaW50Tm9kZSxcbiAgICAgICAgbWVzc2FnZUlkOiAnYXZvaWRBY2Nlc3MnLFxuICAgICAgICBsb2M6IGVzbGludE5vZGUubG9jID8/IHsgbGluZTogMCwgY29sdW1uOiAwIH0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBtZW1iZXJBY2Nlc3M6IGNvbnRleHQuc291cmNlQ29kZS5nZXRUZXh0KGVzbGludE5vZGUpLFxuICAgICAgICAgIG9iajogY3VycmVudC5hcmd1bWVudE5hbWUsXG4gICAgICAgICAgcHJvcDogKG5vZGUucHJvcGVydHkgYXMgVFNFU1RyZWUuUHJpdmF0ZUlkZW50aWZpZXIgfCBUU0VTVHJlZS5JZGVudGlmaWVyKS5uYW1lLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAnRnVuY3Rpb25EZWNsYXJhdGlvbic6IGVudGVyRnVuY3Rpb24gYXMgYW55LFxuICAgICdGdW5jdGlvbkV4cHJlc3Npb24nOiBlbnRlckZ1bmN0aW9uIGFzIGFueSxcbiAgICAnRnVuY3Rpb25EZWNsYXJhdGlvbjpleGl0JzogZXhpdEZ1bmN0aW9uLFxuICAgICdGdW5jdGlvbkV4cHJlc3Npb246ZXhpdCc6IGV4aXRGdW5jdGlvbixcbiAgICAnTWVtYmVyRXhwcmVzc2lvbic6IG9ubHlJbkludGVyZXN0aW5nRnVuY3Rpb24obWVtYmVyRXhwcmVzc2lvbikgYXMgYW55LFxuICB9O1xufVxuIl19
|
|
164
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm8tZXZhbHVhdGluZy10eXBlZ3VhcmQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvcnVsZXMvbm8tZXZhbHVhdGluZy10eXBlZ3VhcmQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBb0JBLHdCQXFLQztBQXpMRCxvREFBb0U7QUFDcEUsd0VBQTBFO0FBRzFFLDJDQUF1QztBQUcxQixRQUFBLElBQUksR0FBc0I7SUFDckMsUUFBUSxFQUFFO1FBQ1IsV0FBVyxFQUFFLG9NQUFvTTtLQUNsTjtDQUNGLENBQUM7QUFFVyxRQUFBLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFPakMsU0FBZ0IsTUFBTSxDQUFDLE9BQXlCO0lBQzlDLE1BQU0sUUFBUSxHQUFHLElBQUEsZ0NBQWlCLEVBQUMsT0FBYyxDQUFDLENBQUM7SUFFbkQsTUFBTSxhQUFhLEdBQTJDLEVBQUUsQ0FBQztJQUNqRSx1RUFBdUU7SUFFdkU7Ozs7Ozs7O09BUUc7SUFDSCxTQUFTLHNCQUFzQixDQUFDLElBQWdFO1FBQzlGLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLHNCQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7WUFBQyxPQUFPLEtBQUssQ0FBQztRQUFDLENBQUM7UUFDcEcsT0FBTyxJQUFJLENBQUMsVUFBVSxFQUFFLGNBQWMsQ0FBQyxJQUFJLEtBQUssc0JBQWMsQ0FBQyxlQUFlLENBQUM7SUFDakYsQ0FBQztJQUVEOzs7Ozs7Ozs7T0FTRztJQUNILFNBQVMsc0JBQXNCLENBQUMsSUFBZ0U7UUFDOUYsTUFBTSxXQUFXLEdBQUcsUUFBUSxDQUFDLE9BQU8sQ0FBQyxjQUFjLEVBQUUsQ0FBQztRQUV0RCxNQUFNLFlBQVksR0FBRyxRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDdEQsTUFBTSxhQUFhLEdBQUcsWUFBWSxDQUFDLGlCQUFpQixFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDMUQsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQ25CLGdFQUFnRTtZQUNoRSxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLGNBQWMsR0FBRyxhQUFhLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDeEQsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ3BCLDhGQUE4RjtZQUM5RixPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCxNQUFNLFlBQVksR0FBRyxXQUFXLENBQUMsZUFBZSxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ2pFLE1BQU0sVUFBVSxHQUFHLGFBQWEsQ0FBQyxhQUFhLEVBQUUsQ0FBQztRQUVqRCx5REFBeUQ7UUFDekQsc0NBQXNDO1FBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLEdBQUcsc0JBQVMsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN2RCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFFRCwrRkFBK0Y7UUFDL0YsZ0RBQWdEO1FBQ2hELElBQUksVUFBVSxDQUFDLFNBQVMsRUFBRSxJQUFJLElBQUksSUFBSSxVQUFVLENBQUMsU0FBUyxFQUFFLEVBQUUsV0FBVyxLQUFLLFVBQVUsRUFBRSxDQUFDO1lBQ3pGLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELGtGQUFrRjtRQUNsRixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLHNCQUFjLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hGLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUVELDJFQUEyRTtRQUMzRSxpRUFBaUU7UUFDakUsT0FBTyxDQUFDLFdBQVcsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLEVBQUUsWUFBWSxDQUFDO2VBQzNELENBQUMsV0FBVyxDQUFDLGtCQUFrQixDQUFDLFlBQVksRUFBRSxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBQ2xFLENBQUM7SUFFRCxTQUFTLGdCQUFnQixDQUFDLElBQWdFO1FBQ3hGLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssQ0FBQyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLHNCQUFjLENBQUMsVUFBVSxFQUFFLENBQUM7WUFBQyxPQUFPLFNBQVMsQ0FBQztRQUFDLENBQUM7UUFDeEcsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsSUFBSSxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2pFLE9BQU87Z0JBQ0wsWUFBWSxFQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUF5QixDQUFDLElBQUk7YUFDM0QsQ0FBQztRQUNKLENBQUM7UUFDRCxPQUFPLFNBQVMsQ0FBQztJQUNuQixDQUFDO0lBRUQ7O09BRUc7SUFDSCxTQUFTLGFBQWEsQ0FBQyxJQUF3RjtRQUM3RyxhQUFhLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDN0MsQ0FBQztJQUVELFNBQVMsWUFBWTtRQUNuQixhQUFhLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDdEIsQ0FBQztJQUVELFNBQVMsa0JBQWtCO1FBQ3pCLE9BQU8sYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUM7SUFDeEYsQ0FBQztJQUVELFNBQVMseUJBQXlCLENBQXFCLEVBQUs7UUFDMUQsT0FBTyxDQUFDLENBQUMsR0FBRyxJQUFXLEVBQUUsRUFBRTtZQUN6QixJQUFJLGtCQUFrQixFQUFFLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxFQUFFLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQztZQUNyQixDQUFDO1lBQ0QsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQyxDQUFRLENBQUM7SUFDWixDQUFDO0lBRUQ7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxTQUFTLGdCQUFnQixDQUFDLElBQStCO1FBQ3ZELE1BQU0sT0FBTyxHQUFHLGtCQUFrQixFQUFHLENBQUM7UUFFdEMsK0NBQStDO1FBQy9DLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxzQkFBYyxDQUFDLFVBQVUsQ0FBQyxJQUFLLElBQUksQ0FBQyxNQUE4QixDQUFDLElBQUksS0FBSyxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDM0gsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLFNBQVMsR0FBRyxLQUFLLENBQUM7UUFDdEIsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxzQkFBYyxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM3RixTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxLQUFLLHNCQUFjLENBQUMsZUFBZTtlQUNsRCxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsS0FBSyxHQUFHO2VBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksS0FBSyxzQkFBYyxDQUFDLGVBQWU7ZUFDMUQsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxLQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ3pDLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDbkIsQ0FBQztRQUNELElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEtBQUssc0JBQWMsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDO1lBQ3pHLFNBQVMsR0FBRyxJQUFJLENBQUM7UUFDbkIsQ0FBQztRQUNELElBQUksQ0FBQyxzQkFBYyxDQUFDLGVBQWUsRUFBRSxzQkFBYyxDQUFDLFdBQVcsRUFBRSxzQkFBYyxDQUFDLHFCQUFxQixDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQztZQUNsSSxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ25CLENBQUM7UUFFRCxJQUFJLFNBQVMsRUFBRSxDQUFDO1lBQ2QsTUFBTSxVQUFVLEdBQUcsSUFBd0IsQ0FBQztZQUM1QyxPQUFPLENBQUMsTUFBTSxDQUFDO2dCQUNiLElBQUksRUFBRSxVQUFVO2dCQUNoQixTQUFTLEVBQUUsYUFBYTtnQkFDeEIsR0FBRyxFQUFFLFVBQVUsQ0FBQyxHQUFHLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLEVBQUU7Z0JBQzdDLElBQUksRUFBRTtvQkFDSixZQUFZLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDO29CQUNwRCxHQUFHLEVBQUUsT0FBTyxDQUFDLFlBQVk7b0JBQ3pCLElBQUksRUFBRyxJQUFJLENBQUMsUUFBNkQsQ0FBQyxJQUFJO2lCQUMvRTthQUNGLENBQUMsQ0FBQztRQUNMLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTztRQUNMLHFCQUFxQixFQUFFLGFBQW9CO1FBQzNDLG9CQUFvQixFQUFFLGFBQW9CO1FBQzFDLDBCQUEwQixFQUFFLFlBQVk7UUFDeEMseUJBQXlCLEVBQUUsWUFBWTtRQUN2QyxrQkFBa0IsRUFBRSx5QkFBeUIsQ0FBQyxnQkFBZ0IsQ0FBUTtLQUN2RSxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFTVF9OT0RFX1RZUEVTLCBUU0VTVHJlZSB9IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscyc7XG5pbXBvcnQgeyBnZXRQYXJzZXJTZXJ2aWNlcyB9IGZyb20gJ0B0eXBlc2NyaXB0LWVzbGludC91dGlscy9lc2xpbnQtdXRpbHMnO1xuaW1wb3J0IHsgUnVsZSB9IGZyb20gJ2VzbGludCc7XG5pbXBvcnQgdHlwZSB7IE1lbWJlckV4cHJlc3Npb24gfSBmcm9tICdlc3RyZWUnO1xuaW1wb3J0IHsgVHlwZUZsYWdzIH0gZnJvbSAndHlwZXNjcmlwdCc7XG5pbXBvcnQgTm9kZVBhcmVudEV4dGVuc2lvbiA9IFJ1bGUuTm9kZVBhcmVudEV4dGVuc2lvbjtcblxuZXhwb3J0IGNvbnN0IG1ldGE6IFJ1bGUuUnVsZU1ldGFEYXRhID0ge1xuICBtZXNzYWdlczoge1xuICAgIGF2b2lkQWNjZXNzOiBcInt7IG1lbWJlckFjY2VzcyB9fTogdGhpcyB3aWxsIGV2YWx1YXRlIGEgcHJvcGVydHksIHdoaWNoIG1pZ2h0IHRocm93IGlmIGl0J3MgYSBnZXR0ZXIuIFByZWZlciB1c2luZyBgJ3t7IHByb3AgfX0nIGluIHt7IG9iaiB9fWAgKGRvbid0IGZvcmdldCB0byBjaGVjayBmb3Igb2JqZWN0LW5lc3Mgb2Yge3sgb2JqIH19IGlmIG5lY2Vzc2FyeSEpXCIsXG4gIH0sXG59O1xuXG5leHBvcnQgY29uc3QgZGVmYXVsdE9wdGlvbnMgPSB7fTtcblxuXG5pbnRlcmZhY2UgSW50ZXJlc3RpbmdGdW5jdGlvbiB7XG4gIHJlYWRvbmx5IGFyZ3VtZW50TmFtZTogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlKGNvbnRleHQ6IFJ1bGUuUnVsZUNvbnRleHQpOiBSdWxlLlJ1bGVMaXN0ZW5lciB7XG4gIGNvbnN0IHNlcnZpY2VzID0gZ2V0UGFyc2VyU2VydmljZXMoY29udGV4dCBhcyBhbnkpO1xuXG4gIGNvbnN0IGZ1bmN0aW9uU3RhY2s6IEFycmF5PEludGVyZXN0aW5nRnVuY3Rpb24gfCB1bmRlZmluZWQ+ID0gW107XG4gIC8vICBjb25zdCBjbGFzc0RlY2xhcmF0aW9uczogTWFwPHN0cmluZywgQ2xhc3NEZWNsYXJhdGlvbj4gPSBuZXcgTWFwKCk7XG5cbiAgLyoqXG4gICAqIFdoZXRoZXIgdGhpcyBmdW5jdGlvbiBpcyBhIHR5cGUgcHJlZGljYXRlXG4gICAqXG4gICAqIFRoaXMgaXMgYSBzaG9ydCBhbmQgc3dlZXQgd2F5IHRvIGRldGVybWluZSB3aGV0aGVyIHRoaXMgaXMgYSBmdW5jdGlvbiB3ZSBzaG91bGQgYmUgY2hlY2tpbmcuXG4gICAqXG4gICAqIGBgYFxuICAgKiBmdW5jdGlvbiBpc1NvbWV0aGluZyh4OiB1bmtub3duKTogeCBpcyBTb21ldGhpbmcgeyAuLi4gfVxuICAgKiBgYGBcbiAgICovXG4gIGZ1bmN0aW9uIGlzVXNlckRlZmluZWRUeXBlR3VhcmQobm9kZTogVFNFU1RyZWUuRnVuY3Rpb25EZWNsYXJhdGlvbiB8IFRTRVNUcmVlLkZ1bmN0aW9uRXhwcmVzc2lvbikge1xuICAgIGlmIChub2RlLnBhcmFtcy5sZW5ndGggIT09IDEgfHwgbm9kZS5wYXJhbXNbMF0udHlwZSAhPT0gQVNUX05PREVfVFlQRVMuSWRlbnRpZmllcikgeyByZXR1cm4gZmFsc2U7IH1cbiAgICByZXR1cm4gbm9kZS5yZXR1cm5UeXBlPy50eXBlQW5ub3RhdGlvbi50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5UU1R5cGVQcmVkaWNhdGU7XG4gIH1cblxuICAvKipcbiAgICogV2hldGhlciB0aGlzIGxvb2tzIGxpa2UgYSB0eXBlIGNvZXJjaW9uIGZ1bmN0aW9uXG4gICAqXG4gICAqIFRoZXJlIGFyZSBhIGxvdCBtb3JlIGhldXJpc3RpY3MgaW52b2x2ZWQgaGVyZSB0byBkZXRlcm1pbmUgd2hldGhlciB0aGlzIGlzIGFjdHVhbGx5XG4gICAqIGEgZnVuY3Rpb24gdGhhdCBkb2VzIGEgcnVuLXRpbWUgdHlwZSBjaGVjay4gSXQgY291bGQgbG9vayBsaWtlIHRoaXMgZm9yIGEgbnVtYmVyIG9mIHJlYXNvbnMuXG4gICAqXG4gICAqIGBgYFxuICAgKiBmdW5jdGlvbiB0b1NvbWV0aGluZyh4OiBTb21lVHlwZSk6IFNvbWVTdWJUeXBlIHsgLi4uIH1cbiAgICogYGBgXG4gICAqL1xuICBmdW5jdGlvbiBpc1R5cGVDb2VyY2lvbkZ1bmN0aW9uKG5vZGU6IFRTRVNUcmVlLkZ1bmN0aW9uRGVjbGFyYXRpb24gfCBUU0VTVHJlZS5GdW5jdGlvbkV4cHJlc3Npb24pIHtcbiAgICBjb25zdCB0eXBlQ2hlY2tlciA9IHNlcnZpY2VzLnByb2dyYW0uZ2V0VHlwZUNoZWNrZXIoKTtcblxuICAgIGNvbnN0IGZ1bmN0aW9uVHlwZSA9IHNlcnZpY2VzLmdldFR5cGVBdExvY2F0aW9uKG5vZGUpO1xuICAgIGNvbnN0IGNhbGxTaWduYXR1cmUgPSBmdW5jdGlvblR5cGUuZ2V0Q2FsbFNpZ25hdHVyZXMoKVswXTtcbiAgICBpZiAoIWNhbGxTaWduYXR1cmUpIHtcbiAgICAgIC8vIENvbnN0cnVjdG9ycywgZ2V0dGVycyBhbmQgc2V0dGVycyBkb24ndCBoYXZlIGEgY2FsbCBzaWduYXR1cmVcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBmaXJzdFBhcmFtZXRlciA9IGNhbGxTaWduYXR1cmUuZ2V0UGFyYW1ldGVycygpWzBdO1xuICAgIGlmICghZmlyc3RQYXJhbWV0ZXIpIHtcbiAgICAgIC8vIENvdWxkbid0IHJlc29sdmUgZmlyc3QgcGFyYW1ldGVyIGZvciBzb21lIHJlYXNvbi4gVGhpcyBjYW4gaGFwcGVuIGlmIHRoZSBhcmd1bWVudCBpcyAndGhpcydcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBjb25zdCBhcmd1bWVudFR5cGUgPSB0eXBlQ2hlY2tlci5nZXRUeXBlT2ZTeW1ib2woZmlyc3RQYXJhbWV0ZXIpO1xuICAgIGNvbnN0IHJldHVyblR5cGUgPSBjYWxsU2lnbmF0dXJlLmdldFJldHVyblR5cGUoKTtcblxuICAgIC8vIElmIHRoZSBvdXRwdXQgdHlwZSBpcyB2b2lkIHRoaXMgaXMgbm90IGEgdHlwZSBjb2VyY2lvblxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1iaXR3aXNlXG4gICAgaWYgKChyZXR1cm5UeXBlLmdldEZsYWdzKCkgJiBUeXBlRmxhZ3MuVm9pZExpa2UpICE9PSAwKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gSWYgdGhlIG91dHB1dCB0eXBlIGRvZXNuJ3QgaGF2ZSBhIHN5bWJvbCwgaXQncyBhbiBhbm9ueW1vdXMgdHlwZSAoYHJldHVybiB7IHg6IDMsIHk6IDQyIH07YClcbiAgICAvLyBXaGljaCBpcyBtb3N0IGxpa2VseSBub3QgYSBjb2VyY2lvbiBmdW5jdGlvbi5cbiAgICBpZiAocmV0dXJuVHlwZS5nZXRTeW1ib2woKSA9PSBudWxsIHx8IHJldHVyblR5cGUuZ2V0U3ltYm9sKCk/LmVzY2FwZWROYW1lID09PSAnX19vYmplY3QnKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgLy8gT2JqZWN0IG1ldGhvZHMgYXJlIG5ldmVyIHR5cGUgdGVzdGluZyBmdW5jdGlvbnMgKHN0YXRpYyBjbGFzcyBtZXRob2RzIG1pZ2h0IGJlKVxuICAgIGlmIChub2RlLnBhcmVudC50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5NZXRob2REZWZpbml0aW9uICYmICFub2RlLnBhcmVudC5zdGF0aWMpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICAvLyBJZiB0aGUgcmV0dXJuIHR5cGUgaXMgYXNzaWduYWJsZSB0byB0aGUgaW5wdXQgdHlwZSwgdGhlbiB0aGlzIGxvb2tzIGxpa2VcbiAgICAvLyBhIGRvd25jYXN0IHdoaWNoIHByb2JhYmx5IG1lYW5zIGl0J3MgYSB0eXBlIGNvZXJjaW9uIGZ1bmN0aW9uLlxuICAgIHJldHVybiAodHlwZUNoZWNrZXIuaXNUeXBlQXNzaWduYWJsZVRvKHJldHVyblR5cGUsIGFyZ3VtZW50VHlwZSlcbiAgICAgICYmICF0eXBlQ2hlY2tlci5pc1R5cGVBc3NpZ25hYmxlVG8oYXJndW1lbnRUeXBlLCByZXR1cm5UeXBlKSk7XG4gIH1cblxuICBmdW5jdGlvbiBtYXliZUludGVyZXN0aW5nKG5vZGU6IFRTRVNUcmVlLkZ1bmN0aW9uRGVjbGFyYXRpb24gfCBUU0VTVHJlZS5GdW5jdGlvbkV4cHJlc3Npb24pOiBJbnRlcmVzdGluZ0Z1bmN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBpZiAobm9kZS5wYXJhbXMubGVuZ3RoICE9PSAxIHx8IG5vZGUucGFyYW1zWzBdLnR5cGUgIT09IEFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIpIHsgcmV0dXJuIHVuZGVmaW5lZDsgfVxuICAgIGlmIChpc1VzZXJEZWZpbmVkVHlwZUd1YXJkKG5vZGUpIHx8IGlzVHlwZUNvZXJjaW9uRnVuY3Rpb24obm9kZSkpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIGFyZ3VtZW50TmFtZTogKG5vZGUucGFyYW1zWzBdIGFzIFRTRVNUcmVlLklkZW50aWZpZXIpLm5hbWUsXG4gICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gdW5kZWZpbmVkO1xuICB9XG5cbiAgLyoqXG4gICAqIEVudGVyIGEgZnVuY3Rpb24gYW5kIHNlZSBpZiBpdCdzIGludGVyZXN0aW5nXG4gICAqL1xuICBmdW5jdGlvbiBlbnRlckZ1bmN0aW9uKG5vZGU6IChUU0VTVHJlZS5GdW5jdGlvbkRlY2xhcmF0aW9uIHwgVFNFU1RyZWUuRnVuY3Rpb25FeHByZXNzaW9uKSAmIE5vZGVQYXJlbnRFeHRlbnNpb24pIHtcbiAgICBmdW5jdGlvblN0YWNrLnB1c2gobWF5YmVJbnRlcmVzdGluZyhub2RlKSk7XG4gIH1cblxuICBmdW5jdGlvbiBleGl0RnVuY3Rpb24oKSB7XG4gICAgZnVuY3Rpb25TdGFjay5wb3AoKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGN1cnJlbnRJbnRlcmVzdGluZygpOiBJbnRlcmVzdGluZ0Z1bmN0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gZnVuY3Rpb25TdGFjay5sZW5ndGggPiAwID8gZnVuY3Rpb25TdGFja1tmdW5jdGlvblN0YWNrLmxlbmd0aCAtIDFdIDogdW5kZWZpbmVkO1xuICB9XG5cbiAgZnVuY3Rpb24gb25seUluSW50ZXJlc3RpbmdGdW5jdGlvbjxBIGV4dGVuZHMgRnVuY3Rpb24+KGZuOiBBKTogQSB7XG4gICAgcmV0dXJuICgoLi4uYXJnczogYW55W10pID0+IHtcbiAgICAgIGlmIChjdXJyZW50SW50ZXJlc3RpbmcoKSkge1xuICAgICAgICByZXR1cm4gZm4oLi4uYXJncyk7XG4gICAgICB9XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0pIGFzIGFueTtcbiAgfVxuXG4gIC8qKlxuICAgKiBGb3IgbWVtYmVyIGV4cHJlc3Npb25zIGluIGludGVyZXN0aW5nIGZ1bmN0aW9uc1xuICAgKlxuICAgKiAtIElmIHRoZWlyIExIUyByZWZlcnMgdG8gdGhlIG9ubHkgZnVuY3Rpb24gYXJndW1lbnQ7IEFORFxuICAgKiAgIC0gSWYgdGhlaXIgcGFyZW50IGlzIGEgYHR5cGVvZmAgbm9kZTsgT1JcbiAgICogICAtIFRoZSBtZW1iZXIgZXhwcmVzc2lvbiBpcyBwYXJ0IG9mIGEgYm9vbGVhbiBleHByZXNzaW9uOyBPUlxuICAgKiAgIC0gVGhlIG1lbWJlciBleHByZXNzaW9uIGlzIGluIGEgYmFuZy1iYW5nIG9wZXJhdG9yICghISk7IE9SXG4gICAqICAgLSBUaGUgZXhwcmVzc2lvbiBpcyBieSBpdHNlbGYgaW4gYW4gYGlmYCBvciBgcmV0dXJuYCBvciBgPzpgIHRlcm5hcnlcbiAgICpcbiAgICogVGhlbiB0aGF0IGlzIGEgcG90ZW50aWFsIHByb2JsZW0gYmVjYXVzZSBpdCB3aWxsIGV2YWx1YXRlIGEgbWVtYmVyXG4gICAqIHRoYXQgd2UgcG90ZW50aWFsbHkgb25seSB3YW50ZWQgdG8gdGVzdCBmb3IgcHJlc2VuY2UuXG4gICAqL1xuICBmdW5jdGlvbiBtZW1iZXJFeHByZXNzaW9uKG5vZGU6IFRTRVNUcmVlLk1lbWJlckV4cHJlc3Npb24pIHtcbiAgICBjb25zdCBjdXJyZW50ID0gY3VycmVudEludGVyZXN0aW5nKCkhO1xuXG4gICAgLy8gT25seSBwcm9wZXJ0eSBhY2Nlc3Mgb24gdGhlIHByaW1hcnkgYXJndW1lbnRcbiAgICBpZiAoKG5vZGUub2JqZWN0LnR5cGUgIT09IEFTVF9OT0RFX1RZUEVTLklkZW50aWZpZXIpIHx8IChub2RlLm9iamVjdCBhcyBUU0VTVHJlZS5JZGVudGlmaWVyKS5uYW1lICE9PSBjdXJyZW50LmFyZ3VtZW50TmFtZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGxldCBkYW5nZXJvdXMgPSBmYWxzZTtcbiAgICBpZiAobm9kZS5wYXJlbnQudHlwZSA9PT0gQVNUX05PREVfVFlQRVMuVW5hcnlFeHByZXNzaW9uICYmIG5vZGUucGFyZW50Lm9wZXJhdG9yID09PSAndHlwZW9mJykge1xuICAgICAgZGFuZ2Vyb3VzID0gdHJ1ZTtcbiAgICB9XG4gICAgaWYgKG5vZGUucGFyZW50LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLlVuYXJ5RXhwcmVzc2lvblxuICAgICAgJiYgbm9kZS5wYXJlbnQub3BlcmF0b3IgPT09ICchJ1xuICAgICAgJiYgbm9kZS5wYXJlbnQucGFyZW50LnR5cGUgPT09IEFTVF9OT0RFX1RZUEVTLlVuYXJ5RXhwcmVzc2lvblxuICAgICAgJiYgbm9kZS5wYXJlbnQucGFyZW50Lm9wZXJhdG9yID09PSAnIScpIHtcbiAgICAgIGRhbmdlcm91cyA9IHRydWU7XG4gICAgfVxuICAgIGlmIChub2RlLnBhcmVudC50eXBlID09PSBBU1RfTk9ERV9UWVBFUy5Mb2dpY2FsRXhwcmVzc2lvbiAmJiBbJyYmJywgJ3x8J10uaW5jbHVkZXMobm9kZS5wYXJlbnQub3BlcmF0b3IpKSB7XG4gICAgICBkYW5nZXJvdXMgPSB0cnVlO1xuICAgIH1cbiAgICBpZiAoW0FTVF9OT0RFX1RZUEVTLlJldHVyblN0YXRlbWVudCwgQVNUX05PREVfVFlQRVMuSWZTdGF0ZW1lbnQsIEFTVF9OT0RFX1RZUEVTLkNvbmRpdGlvbmFsRXhwcmVzc2lvbl0uaW5jbHVkZXMobm9kZS5wYXJlbnQudHlwZSkpIHtcbiAgICAgIGRhbmdlcm91cyA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKGRhbmdlcm91cykge1xuICAgICAgY29uc3QgZXNsaW50Tm9kZSA9IG5vZGUgYXMgTWVtYmVyRXhwcmVzc2lvbjtcbiAgICAgIGNvbnRleHQucmVwb3J0KHtcbiAgICAgICAgbm9kZTogZXNsaW50Tm9kZSxcbiAgICAgICAgbWVzc2FnZUlkOiAnYXZvaWRBY2Nlc3MnLFxuICAgICAgICBsb2M6IGVzbGludE5vZGUubG9jID8/IHsgbGluZTogMCwgY29sdW1uOiAwIH0sXG4gICAgICAgIGRhdGE6IHtcbiAgICAgICAgICBtZW1iZXJBY2Nlc3M6IGNvbnRleHQuc291cmNlQ29kZS5nZXRUZXh0KGVzbGludE5vZGUpLFxuICAgICAgICAgIG9iajogY3VycmVudC5hcmd1bWVudE5hbWUsXG4gICAgICAgICAgcHJvcDogKG5vZGUucHJvcGVydHkgYXMgVFNFU1RyZWUuUHJpdmF0ZUlkZW50aWZpZXIgfCBUU0VTVHJlZS5JZGVudGlmaWVyKS5uYW1lLFxuICAgICAgICB9LFxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHtcbiAgICAnRnVuY3Rpb25EZWNsYXJhdGlvbic6IGVudGVyRnVuY3Rpb24gYXMgYW55LFxuICAgICdGdW5jdGlvbkV4cHJlc3Npb24nOiBlbnRlckZ1bmN0aW9uIGFzIGFueSxcbiAgICAnRnVuY3Rpb25EZWNsYXJhdGlvbjpleGl0JzogZXhpdEZ1bmN0aW9uLFxuICAgICdGdW5jdGlvbkV4cHJlc3Npb246ZXhpdCc6IGV4aXRGdW5jdGlvbixcbiAgICAnTWVtYmVyRXhwcmVzc2lvbic6IG9ubHlJbkludGVyZXN0aW5nRnVuY3Rpb24obWVtYmVyRXhwcmVzc2lvbikgYXMgYW55LFxuICB9O1xufVxuIl19
|
package/package.json
CHANGED
|
@@ -62,7 +62,8 @@
|
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"@typescript-eslint/utils": "^8.52.0",
|
|
65
|
-
"fs-extra": "^11.3.3"
|
|
65
|
+
"fs-extra": "^11.3.3",
|
|
66
|
+
"typescript": "^5.9.3"
|
|
66
67
|
},
|
|
67
68
|
"engines": {
|
|
68
69
|
"node": ">= 18.12.0"
|
|
@@ -72,7 +73,7 @@
|
|
|
72
73
|
"publishConfig": {
|
|
73
74
|
"access": "public"
|
|
74
75
|
},
|
|
75
|
-
"version": "1.4.
|
|
76
|
+
"version": "1.4.2",
|
|
76
77
|
"jest": {
|
|
77
78
|
"coverageProvider": "v8",
|
|
78
79
|
"testMatch": [
|