ts2famix 1.4.0 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/analyze.js +6 -3
- package/dist/analyze_functions/process_functions.js +248 -100
- package/dist/famix2puml.js +1 -0
- package/dist/famix_functions/EntityDictionary.js +661 -155
- package/dist/famix_functions/helpers_creation.js +26 -6
- package/dist/fqn.js +156 -69
- package/dist/lib/famix/src/famix_JSON_exporter.js +1 -0
- package/dist/lib/famix/src/famix_base_element.js +1 -0
- package/dist/lib/famix/src/famix_repository.js +9 -8
- package/dist/lib/famix/src/index.js +1 -0
- package/dist/lib/famix/src/model/famix/access.js +3 -2
- package/dist/lib/famix/src/model/famix/accessor.js +1 -0
- package/dist/lib/famix/src/model/famix/alias.js +2 -1
- package/dist/lib/famix/src/model/famix/arrowFunction.js +17 -0
- package/dist/lib/famix/src/model/famix/behavioral_entity.js +13 -15
- package/dist/lib/famix/src/model/famix/class.js +1 -0
- package/dist/lib/famix/src/model/famix/comment.js +2 -1
- package/dist/lib/famix/src/model/famix/concretisation.js +31 -0
- package/dist/lib/famix/src/model/famix/container_entity.js +7 -6
- package/dist/lib/famix/src/model/famix/decorator.js +2 -1
- package/dist/lib/famix/src/model/famix/entity.js +1 -0
- package/dist/lib/famix/src/model/famix/enum.js +2 -1
- package/dist/lib/famix/src/model/famix/enum_value.js +2 -1
- package/dist/lib/famix/src/model/famix/function.js +1 -0
- package/dist/lib/famix/src/model/famix/implicit_variable.js +1 -0
- package/dist/lib/famix/src/model/famix/import_clause.js +5 -3
- package/dist/lib/famix/src/model/famix/index.js +18 -11
- package/dist/lib/famix/src/model/famix/indexed_file_anchor.js +3 -2
- package/dist/lib/famix/src/model/famix/inheritance.js +3 -2
- package/dist/lib/famix/src/model/famix/interface.js +2 -1
- package/dist/lib/famix/src/model/famix/invocation.js +3 -2
- package/dist/lib/famix/src/model/famix/method.js +2 -1
- package/dist/lib/famix/src/model/famix/module.js +53 -0
- package/dist/lib/famix/src/model/famix/named_entity.js +4 -3
- package/dist/lib/famix/src/model/famix/parameter.js +2 -1
- package/dist/lib/famix/src/model/famix/parameterConcretisation.js +44 -0
- package/dist/lib/famix/src/model/famix/parameter_type.js +22 -1
- package/dist/lib/famix/src/model/famix/parametric_arrow_function.js +31 -0
- package/dist/lib/famix/src/model/famix/parametric_class.js +44 -0
- package/dist/lib/famix/src/model/famix/parametric_function.js +31 -0
- package/dist/lib/famix/src/model/famix/parametric_interface.js +44 -0
- package/dist/lib/famix/src/model/famix/parametric_method.js +31 -0
- package/dist/lib/famix/src/model/famix/primitive_type.js +1 -0
- package/dist/lib/famix/src/model/famix/property.js +91 -9
- package/dist/lib/famix/src/model/famix/reference.js +3 -2
- package/dist/lib/famix/src/model/famix/scoping_entity.js +12 -10
- package/dist/lib/famix/src/model/famix/script_entity.js +1 -2
- package/dist/lib/famix/src/model/famix/source_anchor.js +1 -0
- package/dist/lib/famix/src/model/famix/source_language.js +1 -1
- package/dist/lib/famix/src/model/famix/sourced_entity.js +2 -1
- package/dist/lib/famix/src/model/famix/structural_entity.js +1 -0
- package/dist/lib/famix/src/model/famix/text_anchor.js +1 -0
- package/dist/lib/famix/src/model/famix/type.js +6 -4
- package/dist/lib/famix/src/model/famix/variable.js +1 -0
- package/dist/lib/ts-complex/cyclomatic-service.js +2 -2
- package/dist/ts2famix-cli-wrapper.js +16 -0
- package/dist/ts2famix-cli.js +8 -1
- package/dist/ts2famix-tsconfig.js +1 -0
- package/doc-uml/famix-typescript-model.puml +559 -0
- package/doc-uml/famix-typescript-model.svg +1 -0
- package/jest.config.json +2 -1
- package/package.json +10 -10
- package/src/analyze.ts +25 -22
- package/src/analyze_functions/process_functions.ts +272 -96
- package/src/famix_functions/EntityDictionary.ts +731 -182
- package/src/famix_functions/helpers_creation.ts +28 -2
- package/src/fqn.ts +132 -10
- package/src/lib/famix/src/famix_repository.ts +9 -9
- package/src/lib/famix/src/model/famix/access.ts +2 -2
- package/src/lib/famix/src/model/famix/alias.ts +1 -1
- package/src/lib/famix/src/model/famix/arrowFunction.ts +15 -0
- package/src/lib/famix/src/model/famix/behavioral_entity.ts +12 -19
- package/src/lib/famix/src/model/famix/comment.ts +1 -1
- package/src/lib/famix/src/model/famix/concretisation.ts +42 -0
- package/src/lib/famix/src/model/famix/container_entity.ts +6 -6
- package/src/lib/famix/src/model/famix/decorator.ts +1 -1
- package/src/lib/famix/src/model/famix/enum.ts +1 -1
- package/src/lib/famix/src/model/famix/enum_value.ts +1 -1
- package/src/lib/famix/src/model/famix/import_clause.ts +4 -3
- package/src/lib/famix/src/model/famix/index.ts +8 -5
- package/src/lib/famix/src/model/famix/indexed_file_anchor.ts +2 -2
- package/src/lib/famix/src/model/famix/inheritance.ts +3 -4
- package/src/lib/famix/src/model/famix/interface.ts +1 -1
- package/src/lib/famix/src/model/famix/invocation.ts +2 -2
- package/src/lib/famix/src/model/famix/method.ts +1 -1
- package/src/lib/famix/src/model/famix/module.ts +67 -1
- package/src/lib/famix/src/model/famix/named_entity.ts +3 -3
- package/src/lib/famix/src/model/famix/parameter.ts +1 -1
- package/src/lib/famix/src/model/famix/parameterConcretisation.ts +54 -0
- package/src/lib/famix/src/model/famix/parameter_type.ts +33 -6
- package/src/lib/famix/src/model/famix/parametric_arrow_function.ts +32 -0
- package/src/lib/famix/src/model/famix/parametric_class.ts +49 -0
- package/src/lib/famix/src/model/famix/parametric_function.ts +32 -0
- package/src/lib/famix/src/model/famix/parametric_interface.ts +49 -0
- package/src/lib/famix/src/model/famix/parametric_method.ts +32 -0
- package/src/lib/famix/src/model/famix/property.ts +109 -11
- package/src/lib/famix/src/model/famix/reference.ts +2 -2
- package/src/lib/famix/src/model/famix/scoping_entity.ts +12 -11
- package/src/lib/famix/src/model/famix/script_entity.ts +0 -2
- package/src/lib/famix/src/model/famix/source_language.ts +0 -1
- package/src/lib/famix/src/model/famix/sourced_entity.ts +1 -1
- package/src/lib/famix/src/model/famix/type.ts +5 -4
- package/src/ts2famix-cli-wrapper.ts +17 -0
- package/src/ts2famix-cli.ts +7 -1
- package/tsconfig.json +5 -5
- package/dist/lib/famix/src/model/famix/association.js +0 -36
- package/dist/lib/famix/src/model/famix/namespace.js +0 -24
- package/dist/lib/famix/src/model/famix/parameterizable_class.js +0 -30
- package/dist/lib/famix/src/model/famix/parameterizable_interface.js +0 -30
- package/dist/lib/famix/src/model/famix/parameterized_type.js +0 -36
- package/doc-uml/metamodel-full.svg +0 -1
- package/doc-uml/metamodel.svg +0 -1
- package/plantuml.jar +0 -0
- package/src/lib/famix/src/model/famix/association.ts +0 -44
- package/src/lib/famix/src/model/famix/namespace.ts +0 -28
- package/src/lib/famix/src/model/famix/parameterizable_class.ts +0 -31
- package/src/lib/famix/src/model/famix/parameterizable_interface.ts +0 -31
- package/src/lib/famix/src/model/famix/parameterized_type.ts +0 -40
|
@@ -23,7 +23,13 @@ var __importStar = (this && this.__importStar) || function (mod) {
|
|
|
23
23
|
return result;
|
|
24
24
|
};
|
|
25
25
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
26
|
-
exports.
|
|
26
|
+
exports.indexOfSplitArray = indexOfSplitArray;
|
|
27
|
+
exports.getSubTypeName = getSubTypeName;
|
|
28
|
+
exports.computeSignature = computeSignature;
|
|
29
|
+
exports.findAncestor = findAncestor;
|
|
30
|
+
exports.findTypeAncestor = findTypeAncestor;
|
|
31
|
+
exports.arraysAreEqual = arraysAreEqual;
|
|
32
|
+
exports.replaceLastBetweenTags = replaceLastBetweenTags;
|
|
27
33
|
const Famix = __importStar(require("../lib/famix/src/model/famix"));
|
|
28
34
|
const analyze_1 = require("../analyze");
|
|
29
35
|
const ts_morph_1 = require("ts-morph");
|
|
@@ -47,7 +53,6 @@ function indexOfSplitArray(params) {
|
|
|
47
53
|
}
|
|
48
54
|
return -1; // Return -1 if the target array was not found in the search array
|
|
49
55
|
}
|
|
50
|
-
exports.indexOfSplitArray = indexOfSplitArray;
|
|
51
56
|
function getSubTypeName(fmxNamedEntity) {
|
|
52
57
|
const name = fmxNamedEntity instanceof Famix.Class ? 'Class' :
|
|
53
58
|
fmxNamedEntity instanceof Famix.Interface ? 'Interface' :
|
|
@@ -66,7 +71,6 @@ function getSubTypeName(fmxNamedEntity) {
|
|
|
66
71
|
analyze_1.logger.debug(`${fmxNamedEntity.getName()} is of type ${name}`);
|
|
67
72
|
return name;
|
|
68
73
|
}
|
|
69
|
-
exports.getSubTypeName = getSubTypeName;
|
|
70
74
|
/**
|
|
71
75
|
* Gets the signature of a method or a function
|
|
72
76
|
* @param text A method or a function source code
|
|
@@ -76,7 +80,6 @@ function computeSignature(text) {
|
|
|
76
80
|
const endSignatureText = text.indexOf("{");
|
|
77
81
|
return text.substring(0, endSignatureText).trim();
|
|
78
82
|
}
|
|
79
|
-
exports.computeSignature = computeSignature;
|
|
80
83
|
/**
|
|
81
84
|
* Finds the ancestor of a node
|
|
82
85
|
* @param node A node
|
|
@@ -85,7 +88,6 @@ exports.computeSignature = computeSignature;
|
|
|
85
88
|
function findAncestor(node) {
|
|
86
89
|
return node.getAncestors().find(a => a.getKind() === ts_morph_1.SyntaxKind.MethodDeclaration || a.getKind() === ts_morph_1.SyntaxKind.Constructor || a.getKind() === ts_morph_1.SyntaxKind.FunctionDeclaration || a.getKind() === ts_morph_1.SyntaxKind.FunctionExpression || a.getKind() === ts_morph_1.SyntaxKind.ModuleDeclaration || a.getKind() === ts_morph_1.SyntaxKind.SourceFile || a.getKindName() === "GetAccessor" || a.getKindName() === "SetAccessor" || a.getKind() === ts_morph_1.SyntaxKind.ClassDeclaration);
|
|
87
90
|
}
|
|
88
|
-
exports.findAncestor = findAncestor;
|
|
89
91
|
/**
|
|
90
92
|
* Finds the ancestor of a ts-morph element
|
|
91
93
|
* @param element A ts-morph element
|
|
@@ -94,4 +96,22 @@ exports.findAncestor = findAncestor;
|
|
|
94
96
|
function findTypeAncestor(element) {
|
|
95
97
|
return element.getAncestors().find(a => a.getKind() === ts_morph_1.SyntaxKind.MethodDeclaration || a.getKind() === ts_morph_1.SyntaxKind.Constructor || a.getKind() === ts_morph_1.SyntaxKind.MethodSignature || a.getKind() === ts_morph_1.SyntaxKind.FunctionDeclaration || a.getKind() === ts_morph_1.SyntaxKind.FunctionExpression || a.getKind() === ts_morph_1.SyntaxKind.ModuleDeclaration || a.getKind() === ts_morph_1.SyntaxKind.SourceFile || a.getKindName() === "GetAccessor" || a.getKindName() === "SetAccessor" || a.getKind() === ts_morph_1.SyntaxKind.ClassDeclaration || a.getKind() === ts_morph_1.SyntaxKind.InterfaceDeclaration);
|
|
96
98
|
}
|
|
97
|
-
|
|
99
|
+
function arraysAreEqual(array1, array2) {
|
|
100
|
+
if (array1 && array2) {
|
|
101
|
+
return array1.length === array2.length && array1.every((value, index) => value === array2[index]);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
function replaceLastBetweenTags(input, replacement) {
|
|
105
|
+
const lastTagIndex = input.lastIndexOf('<');
|
|
106
|
+
if (lastTagIndex === -1) {
|
|
107
|
+
return input; // Return the original string if no tags are found
|
|
108
|
+
}
|
|
109
|
+
const closingTagIndex = input.indexOf('>', lastTagIndex);
|
|
110
|
+
if (closingTagIndex === -1) {
|
|
111
|
+
return input; // Return the original string if no closing tag is found
|
|
112
|
+
}
|
|
113
|
+
const beforeTag = input.substring(0, lastTagIndex + 1); // Include '<'
|
|
114
|
+
const afterTag = input.substring(closingTagIndex); // Include '>'
|
|
115
|
+
return beforeTag + replacement + afterTag;
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscGVyc19jcmVhdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9mYW1peF9mdW5jdGlvbnMvaGVscGVyc19jcmVhdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsOENBZUM7QUFFRCx3Q0FpQkM7QUFPRCw0Q0FHQztBQU9ELG9DQUVDO0FBT0QsNENBRUM7QUFFRCx3Q0FJQztBQUVELHdEQWlCQztBQXRHRCxvRUFBc0Q7QUFDdEQsd0NBQW9DO0FBQ3BDLHVDQUFrVTtBQVNsVTs7O0dBR0c7QUFDSCxTQUFnQixpQkFBaUIsQ0FBQyxNQUF3QjtJQUN0RCxNQUFNLEVBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFDLEdBQUcsTUFBTSxDQUFDO0lBQ3JELEtBQUssSUFBSSxDQUFDLEdBQUcsS0FBSyxFQUFFLENBQUMsSUFBSSxXQUFXLENBQUMsTUFBTSxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNwRSxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUM7UUFDakIsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLFdBQVcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztZQUMxQyxJQUFJLFdBQVcsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssV0FBVyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3hDLEtBQUssR0FBRyxLQUFLLENBQUM7Z0JBQ2QsTUFBTTtZQUNWLENBQUM7UUFDTCxDQUFDO1FBQ0QsSUFBSSxLQUFLLEVBQUUsQ0FBQztZQUNSLE9BQU8sQ0FBQyxDQUFDLENBQUMsb0RBQW9EO1FBQ2xFLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLGtFQUFrRTtBQUNqRixDQUFDO0FBRUQsU0FBZ0IsY0FBYyxDQUFDLGNBQWlDO0lBQzVELE1BQU0sSUFBSSxHQUFHLGNBQWMsWUFBWSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUMxRCxjQUFjLFlBQVksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7WUFDckQsY0FBYyxZQUFZLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDO2dCQUNuRCxjQUFjLFlBQVksS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUM7b0JBQzNDLGNBQWMsWUFBWSxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsQ0FBQzt3QkFDckQsY0FBYyxZQUFZLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDOzRCQUM3QyxjQUFjLFlBQVksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7Z0NBQ25ELGNBQWMsWUFBWSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQztvQ0FDM0MsY0FBYyxZQUFZLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDO3dDQUMvQyxjQUFjLFlBQVksS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLENBQUM7NENBQ3JELGNBQWMsWUFBWSxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUMsQ0FBQztnREFDbkQsY0FBYyxZQUFZLEtBQUssQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLFdBQVcsQ0FBQyxDQUFDO29EQUNyRCxjQUFjLFlBQVksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUM7d0RBQ25ELGFBQWEsQ0FBQztJQUNsRSxnQkFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLGNBQWMsQ0FBQyxPQUFPLEVBQUUsZUFBZSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQy9ELE9BQU8sSUFBSSxDQUFDO0FBQ2hCLENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQUMsSUFBWTtJQUN6QyxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDM0MsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBQ3RELENBQUM7QUFFRDs7OztHQUlHO0FBQ0gsU0FBZ0IsWUFBWSxDQUFDLElBQWdCO0lBQ3pDLE9BQU8sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxxQkFBVSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxxQkFBVSxDQUFDLFdBQVcsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUsscUJBQVUsQ0FBQyxtQkFBbUIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUsscUJBQVUsQ0FBQyxrQkFBa0IsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUsscUJBQVUsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUsscUJBQVUsQ0FBQyxVQUFVLElBQUksQ0FBQyxDQUFDLFdBQVcsRUFBRSxLQUFLLGFBQWEsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssYUFBYSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxxQkFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdGIsQ0FBQztBQUVEOzs7O0dBSUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxPQUF3QjtJQUNyRCxPQUFPLE9BQU8sQ0FBQyxZQUFZLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUsscUJBQVUsQ0FBQyxpQkFBaUIsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEtBQUsscUJBQVUsQ0FBQyxXQUFXLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLHFCQUFVLENBQUMsZUFBZSxJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxxQkFBVSxDQUFDLG1CQUFtQixJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxxQkFBVSxDQUFDLGtCQUFrQixJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxxQkFBVSxDQUFDLGlCQUFpQixJQUFJLENBQUMsQ0FBQyxPQUFPLEVBQUUsS0FBSyxxQkFBVSxDQUFDLFVBQVUsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLEtBQUssYUFBYSxJQUFJLENBQUMsQ0FBQyxXQUFXLEVBQUUsS0FBSyxhQUFhLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLHFCQUFVLENBQUMsZ0JBQWdCLElBQUksQ0FBQyxDQUFDLE9BQU8sRUFBRSxLQUFLLHFCQUFVLENBQUMsb0JBQW9CLENBQUMsQ0FBQztBQUMxaEIsQ0FBQztBQUVELFNBQWdCLGNBQWMsQ0FBQyxNQUFnQixFQUFFLE1BQWdCO0lBQzdELElBQUksTUFBTSxJQUFJLE1BQU0sRUFBRyxDQUFDO1FBQ3BCLE9BQU8sTUFBTSxDQUFDLE1BQU0sS0FBSyxNQUFNLENBQUMsTUFBTSxJQUFJLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7SUFDdEcsQ0FBQztBQUNMLENBQUM7QUFFRCxTQUFnQixzQkFBc0IsQ0FBQyxLQUFhLEVBQUUsV0FBbUI7SUFDckUsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUU1QyxJQUFJLFlBQVksS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3RCLE9BQU8sS0FBSyxDQUFDLENBQUMsa0RBQWtEO0lBQ3BFLENBQUM7SUFFRCxNQUFNLGVBQWUsR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUMsQ0FBQztJQUV6RCxJQUFJLGVBQWUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE9BQU8sS0FBSyxDQUFDLENBQUMsd0RBQXdEO0lBQzFFLENBQUM7SUFFRCxNQUFNLFNBQVMsR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxZQUFZLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxjQUFjO0lBQ3RFLE1BQU0sUUFBUSxHQUFHLEtBQUssQ0FBQyxTQUFTLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxjQUFjO0lBRWpFLE9BQU8sU0FBUyxHQUFHLFdBQVcsR0FBRyxRQUFRLENBQUM7QUFDOUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEZhbWl4IGZyb20gXCIuLi9saWIvZmFtaXgvc3JjL21vZGVsL2ZhbWl4XCI7XG5pbXBvcnQgeyBsb2dnZXIgfSBmcm9tIFwiLi4vYW5hbHl6ZVwiO1xuaW1wb3J0IHsgQ29uc3RydWN0b3JEZWNsYXJhdGlvbiwgSWRlbnRpZmllciwgRnVuY3Rpb25EZWNsYXJhdGlvbiwgTWV0aG9kRGVjbGFyYXRpb24sIE1ldGhvZFNpZ25hdHVyZSwgUHJvcGVydHlEZWNsYXJhdGlvbiwgUHJvcGVydHlTaWduYXR1cmUsIFZhcmlhYmxlRGVjbGFyYXRpb24sIFBhcmFtZXRlckRlY2xhcmF0aW9uLCBHZXRBY2Nlc3NvckRlY2xhcmF0aW9uLCBTZXRBY2Nlc3NvckRlY2xhcmF0aW9uLCBFbnVtTWVtYmVyLCBUeXBlQWxpYXNEZWNsYXJhdGlvbiwgTm9kZSwgU3ludGF4S2luZCwgRnVuY3Rpb25FeHByZXNzaW9uIH0gZnJvbSBcInRzLW1vcnBoXCI7XG5pbXBvcnQgeyBUeXBlRGVjbGFyYXRpb24gfSBmcm9tIFwiLi9FbnRpdHlEaWN0aW9uYXJ5XCI7XG5cbmludGVyZmFjZSBTZWFyY2hQYXJhbWV0ZXJzIHtcbiAgICBzZWFyY2hBcnJheTogc3RyaW5nW107XG4gICAgdGFyZ2V0QXJyYXk6IHN0cmluZ1tdO1xuICAgIHN0YXJ0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFRoaXMgZnVuY3Rpb24gd29ya3MgbGlrZSBpbmRleE9mLCBidXQgaXQgd29ya3Mgd2l0aCBhcnJheXMgb2YgZ3JhcGhlbWUgY2x1c3RlcnMuXG4gKiBAcGFyYW0gdGFyZ2V0QXJyYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGluZGV4T2ZTcGxpdEFycmF5KHBhcmFtczogU2VhcmNoUGFyYW1ldGVycyk6IG51bWJlciB7XG4gICAgY29uc3Qge3NlYXJjaEFycmF5LCB0YXJnZXRBcnJheSwgc3RhcnQgPSAwfSA9IHBhcmFtcztcbiAgICBmb3IgKGxldCBpID0gc3RhcnQ7IGkgPD0gc2VhcmNoQXJyYXkubGVuZ3RoIC0gdGFyZ2V0QXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgbGV0IGZvdW5kID0gdHJ1ZTtcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0YXJnZXRBcnJheS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgaWYgKHNlYXJjaEFycmF5W2kgKyBqXSAhPT0gdGFyZ2V0QXJyYXlbal0pIHtcbiAgICAgICAgICAgICAgICBmb3VuZCA9IGZhbHNlO1xuICAgICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIGlmIChmb3VuZCkge1xuICAgICAgICAgICAgcmV0dXJuIGk7IC8vIFJldHVybiB0aGUgaW5kZXggd2hlcmUgdGhlIHRhcmdldCBhcnJheSB3YXMgZm91bmRcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gLTE7IC8vIFJldHVybiAtMSBpZiB0aGUgdGFyZ2V0IGFycmF5IHdhcyBub3QgZm91bmQgaW4gdGhlIHNlYXJjaCBhcnJheVxufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0U3ViVHlwZU5hbWUoZm14TmFtZWRFbnRpdHk6IEZhbWl4Lk5hbWVkRW50aXR5KSB7XG4gICAgY29uc3QgbmFtZSA9IGZteE5hbWVkRW50aXR5IGluc3RhbmNlb2YgRmFtaXguQ2xhc3MgPyAnQ2xhc3MnIDpcbiAgICAgICAgZm14TmFtZWRFbnRpdHkgaW5zdGFuY2VvZiBGYW1peC5JbnRlcmZhY2UgPyAnSW50ZXJmYWNlJyA6XG4gICAgICAgICAgICBmbXhOYW1lZEVudGl0eSBpbnN0YW5jZW9mIEZhbWl4LkZ1bmN0aW9uID8gJ0Z1bmN0aW9uJyA6XG4gICAgICAgICAgICAgICAgZm14TmFtZWRFbnRpdHkgaW5zdGFuY2VvZiBGYW1peC5FbnVtID8gJ0VudW0nIDpcbiAgICAgICAgICAgICAgICAgICAgZm14TmFtZWRFbnRpdHkgaW5zdGFuY2VvZiBGYW1peC5FbnVtVmFsdWUgPyAnRW51bVZhbHVlJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICBmbXhOYW1lZEVudGl0eSBpbnN0YW5jZW9mIEZhbWl4LkFsaWFzID8gJ0FsaWFzJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm14TmFtZWRFbnRpdHkgaW5zdGFuY2VvZiBGYW1peC5WYXJpYWJsZSA/ICdWYXJpYWJsZScgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbXhOYW1lZEVudGl0eSBpbnN0YW5jZW9mIEZhbWl4LlR5cGUgPyAnVHlwZScgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm14TmFtZWRFbnRpdHkgaW5zdGFuY2VvZiBGYW1peC5NZXRob2QgPyAnTWV0aG9kJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm14TmFtZWRFbnRpdHkgaW5zdGFuY2VvZiBGYW1peC5EZWNvcmF0b3IgPyAnRGVjb3JhdG9yJyA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZteE5hbWVkRW50aXR5IGluc3RhbmNlb2YgRmFtaXguQWNjZXNzb3IgPyAnQWNjZXNzb3InIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZteE5hbWVkRW50aXR5IGluc3RhbmNlb2YgRmFtaXguUGFyYW1ldGVyID8gJ1BhcmFtZXRlcicgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZteE5hbWVkRW50aXR5IGluc3RhbmNlb2YgRmFtaXguUHJvcGVydHkgPyAnUHJvcGVydHknIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ05hbWVkRW50aXR5JztcbiAgICBsb2dnZXIuZGVidWcoYCR7Zm14TmFtZWRFbnRpdHkuZ2V0TmFtZSgpfSBpcyBvZiB0eXBlICR7bmFtZX1gKTtcbiAgICByZXR1cm4gbmFtZTtcbn1cblxuLyoqXG4gKiBHZXRzIHRoZSBzaWduYXR1cmUgb2YgYSBtZXRob2Qgb3IgYSBmdW5jdGlvblxuICogQHBhcmFtIHRleHQgQSBtZXRob2Qgb3IgYSBmdW5jdGlvbiBzb3VyY2UgY29kZVxuICogQHJldHVybnMgVGhlIHNpZ25hdHVyZSBvZiB0aGUgbWV0aG9kIG9yIHRoZSBmdW5jdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcHV0ZVNpZ25hdHVyZSh0ZXh0OiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIGNvbnN0IGVuZFNpZ25hdHVyZVRleHQgPSB0ZXh0LmluZGV4T2YoXCJ7XCIpO1xuICAgIHJldHVybiB0ZXh0LnN1YnN0cmluZygwLCBlbmRTaWduYXR1cmVUZXh0KS50cmltKCk7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIGFuY2VzdG9yIG9mIGEgbm9kZVxuICogQHBhcmFtIG5vZGUgQSBub2RlXG4gKiBAcmV0dXJucyBUaGUgYW5jZXN0b3Igb2YgdGhlIG5vZGVcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRBbmNlc3Rvcihub2RlOiBJZGVudGlmaWVyKTogTm9kZSB7XG4gICAgcmV0dXJuIG5vZGUuZ2V0QW5jZXN0b3JzKCkuZmluZChhID0+IGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uIHx8IGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLkNvbnN0cnVjdG9yIHx8IGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLkZ1bmN0aW9uRGVjbGFyYXRpb24gfHwgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuRnVuY3Rpb25FeHByZXNzaW9uIHx8IGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLk1vZHVsZURlY2xhcmF0aW9uIHx8IGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLlNvdXJjZUZpbGUgfHwgYS5nZXRLaW5kTmFtZSgpID09PSBcIkdldEFjY2Vzc29yXCIgfHwgYS5nZXRLaW5kTmFtZSgpID09PSBcIlNldEFjY2Vzc29yXCIgfHwgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuQ2xhc3NEZWNsYXJhdGlvbik7XG59XG5cbi8qKlxuICogRmluZHMgdGhlIGFuY2VzdG9yIG9mIGEgdHMtbW9ycGggZWxlbWVudFxuICogQHBhcmFtIGVsZW1lbnQgQSB0cy1tb3JwaCBlbGVtZW50XG4gKiBAcmV0dXJucyBUaGUgYW5jZXN0b3Igb2YgdGhlIHRzLW1vcnBoIGVsZW1lbnRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZpbmRUeXBlQW5jZXN0b3IoZWxlbWVudDogVHlwZURlY2xhcmF0aW9uKTogTm9kZSB7XG4gICAgcmV0dXJuIGVsZW1lbnQuZ2V0QW5jZXN0b3JzKCkuZmluZChhID0+IGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uIHx8IGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLkNvbnN0cnVjdG9yIHx8IGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLk1ldGhvZFNpZ25hdHVyZSB8fCBhLmdldEtpbmQoKSA9PT0gU3ludGF4S2luZC5GdW5jdGlvbkRlY2xhcmF0aW9uIHx8IGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLkZ1bmN0aW9uRXhwcmVzc2lvbiB8fCBhLmdldEtpbmQoKSA9PT0gU3ludGF4S2luZC5Nb2R1bGVEZWNsYXJhdGlvbiB8fCBhLmdldEtpbmQoKSA9PT0gU3ludGF4S2luZC5Tb3VyY2VGaWxlIHx8IGEuZ2V0S2luZE5hbWUoKSA9PT0gXCJHZXRBY2Nlc3NvclwiIHx8IGEuZ2V0S2luZE5hbWUoKSA9PT0gXCJTZXRBY2Nlc3NvclwiIHx8IGEuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLkNsYXNzRGVjbGFyYXRpb24gfHwgYS5nZXRLaW5kKCkgPT09IFN5bnRheEtpbmQuSW50ZXJmYWNlRGVjbGFyYXRpb24pO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXJyYXlzQXJlRXF1YWwoYXJyYXkxOiBzdHJpbmdbXSwgYXJyYXkyOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xuICAgIGlmIChhcnJheTEgJiYgYXJyYXkyICkge1xuICAgICAgICByZXR1cm4gYXJyYXkxLmxlbmd0aCA9PT0gYXJyYXkyLmxlbmd0aCAmJiBhcnJheTEuZXZlcnkoKHZhbHVlLCBpbmRleCkgPT4gdmFsdWUgPT09IGFycmF5MltpbmRleF0pO1xuICAgIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlcGxhY2VMYXN0QmV0d2VlblRhZ3MoaW5wdXQ6IHN0cmluZywgcmVwbGFjZW1lbnQ6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbGFzdFRhZ0luZGV4ID0gaW5wdXQubGFzdEluZGV4T2YoJzwnKTtcbiAgICBcbiAgICBpZiAobGFzdFRhZ0luZGV4ID09PSAtMSkge1xuICAgICAgICByZXR1cm4gaW5wdXQ7IC8vIFJldHVybiB0aGUgb3JpZ2luYWwgc3RyaW5nIGlmIG5vIHRhZ3MgYXJlIGZvdW5kXG4gICAgfVxuXG4gICAgY29uc3QgY2xvc2luZ1RhZ0luZGV4ID0gaW5wdXQuaW5kZXhPZignPicsIGxhc3RUYWdJbmRleCk7XG4gICAgXG4gICAgaWYgKGNsb3NpbmdUYWdJbmRleCA9PT0gLTEpIHtcbiAgICAgICAgcmV0dXJuIGlucHV0OyAvLyBSZXR1cm4gdGhlIG9yaWdpbmFsIHN0cmluZyBpZiBubyBjbG9zaW5nIHRhZyBpcyBmb3VuZFxuICAgIH1cblxuICAgIGNvbnN0IGJlZm9yZVRhZyA9IGlucHV0LnN1YnN0cmluZygwLCBsYXN0VGFnSW5kZXggKyAxKTsgLy8gSW5jbHVkZSAnPCdcbiAgICBjb25zdCBhZnRlclRhZyA9IGlucHV0LnN1YnN0cmluZyhjbG9zaW5nVGFnSW5kZXgpOyAvLyBJbmNsdWRlICc+J1xuXG4gICAgcmV0dXJuIGJlZm9yZVRhZyArIHJlcGxhY2VtZW50ICsgYWZ0ZXJUYWc7XG59XG4iXX0=
|
package/dist/fqn.js
CHANGED
|
@@ -1,43 +1,95 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
-
if (mod && mod.__esModule) return mod;
|
|
20
|
-
var result = {};
|
|
21
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
-
__setModuleDefault(result, mod);
|
|
23
|
-
return result;
|
|
24
|
-
};
|
|
25
2
|
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
4
|
};
|
|
28
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
-
exports.
|
|
30
|
-
|
|
6
|
+
exports.getFQN = getFQN;
|
|
7
|
+
exports.getUniqueFQN = getUniqueFQN;
|
|
8
|
+
exports.oldGetFQN = oldGetFQN;
|
|
9
|
+
exports.getNameOfNode = getNameOfNode;
|
|
10
|
+
exports.getParameters = getParameters;
|
|
11
|
+
const ts_morph_1 = require("ts-morph");
|
|
31
12
|
const analyze_1 = require("./analyze");
|
|
32
13
|
const path_1 = __importDefault(require("path"));
|
|
14
|
+
function isFQNNode(node) {
|
|
15
|
+
return ts_morph_1.Node.isVariableDeclaration(node) || ts_morph_1.Node.isArrowFunction(node) || ts_morph_1.Node.isIdentifier(node) || ts_morph_1.Node.isMethodDeclaration(node) || ts_morph_1.Node.isClassDeclaration(node) || ts_morph_1.Node.isClassExpression(node) || ts_morph_1.Node.isDecorator(node) || ts_morph_1.Node.isModuleDeclaration(node) || ts_morph_1.Node.isCallExpression(node);
|
|
16
|
+
}
|
|
17
|
+
function getFQN(node) {
|
|
18
|
+
const absolutePathProject = analyze_1.entityDictionary.famixRep.getAbsolutePath();
|
|
19
|
+
const sourceFile = node.getSourceFile();
|
|
20
|
+
let parts = [];
|
|
21
|
+
let currentNode = node;
|
|
22
|
+
while (currentNode && !ts_morph_1.Node.isSourceFile(currentNode)) {
|
|
23
|
+
const { line, column } = sourceFile.getLineAndColumnAtPos(currentNode.getStart());
|
|
24
|
+
const lc = `${line}:${column}`;
|
|
25
|
+
if (ts_morph_1.Node.isClassDeclaration(currentNode) ||
|
|
26
|
+
ts_morph_1.Node.isClassExpression(currentNode) ||
|
|
27
|
+
ts_morph_1.Node.isInterfaceDeclaration(currentNode) ||
|
|
28
|
+
ts_morph_1.Node.isFunctionDeclaration(currentNode) ||
|
|
29
|
+
ts_morph_1.Node.isMethodDeclaration(currentNode) ||
|
|
30
|
+
ts_morph_1.Node.isModuleDeclaration(currentNode) ||
|
|
31
|
+
ts_morph_1.Node.isVariableDeclaration(currentNode) ||
|
|
32
|
+
ts_morph_1.Node.isGetAccessorDeclaration(currentNode) ||
|
|
33
|
+
ts_morph_1.Node.isSetAccessorDeclaration(currentNode) ||
|
|
34
|
+
ts_morph_1.Node.isIdentifier(currentNode)) {
|
|
35
|
+
let name = ts_morph_1.Node.isIdentifier(currentNode) ? currentNode.getText()
|
|
36
|
+
: getNameOfNode(currentNode) /* currentNode.getName() */ || 'Unnamed_' + currentNode.getKindName() + `(${lc})`;
|
|
37
|
+
parts.unshift(name);
|
|
38
|
+
}
|
|
39
|
+
else if (ts_morph_1.Node.isArrowFunction(currentNode) ||
|
|
40
|
+
ts_morph_1.Node.isBlock(currentNode) ||
|
|
41
|
+
ts_morph_1.Node.isForInStatement(currentNode) ||
|
|
42
|
+
ts_morph_1.Node.isForOfStatement(currentNode) ||
|
|
43
|
+
ts_morph_1.Node.isForStatement(currentNode) ||
|
|
44
|
+
ts_morph_1.Node.isCatchClause(currentNode)) {
|
|
45
|
+
parts.unshift(`${currentNode.getKindName()}(${lc})`);
|
|
46
|
+
}
|
|
47
|
+
else if (ts_morph_1.Node.isConstructorDeclaration(currentNode)) {
|
|
48
|
+
parts.unshift(`constructor`);
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
// For other kinds, you might want to handle them specifically or ignore
|
|
52
|
+
//console.log(`Ignoring node kind: ${currentNode.getKindName()}`);
|
|
53
|
+
}
|
|
54
|
+
currentNode = currentNode.getParent();
|
|
55
|
+
}
|
|
56
|
+
// Prepend the relative path of the source file
|
|
57
|
+
const relativePath = analyze_1.entityDictionary.convertToRelativePath(path_1.default.normalize(sourceFile.getFilePath()), absolutePathProject).replace(/\\/sg, "/");
|
|
58
|
+
parts.unshift(`{${relativePath}}`);
|
|
59
|
+
const fqn = parts.join(".") + `[${node.getKindName()}]`; // disambiguate
|
|
60
|
+
analyze_1.logger.debug(fqn);
|
|
61
|
+
return fqn;
|
|
62
|
+
}
|
|
63
|
+
function getUniqueFQN(node) {
|
|
64
|
+
const absolutePathProject = analyze_1.entityDictionary.famixRep.getAbsolutePath();
|
|
65
|
+
let parts = [];
|
|
66
|
+
if (node instanceof ts_morph_1.SourceFile) {
|
|
67
|
+
return analyze_1.entityDictionary.convertToRelativePath(path_1.default.normalize(node.getFilePath()), absolutePathProject).replace(/\\/g, "/");
|
|
68
|
+
}
|
|
69
|
+
while (node) {
|
|
70
|
+
if (ts_morph_1.Node.isSourceFile(node)) {
|
|
71
|
+
const relativePath = analyze_1.entityDictionary.convertToRelativePath(path_1.default.normalize(node.getFilePath()), absolutePathProject).replace(/\\/g, "/");
|
|
72
|
+
parts.unshift(relativePath); // Add file path at the start
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
else if (node.getSymbol()) {
|
|
76
|
+
const name = node.getSymbol().getName();
|
|
77
|
+
// For anonymous nodes, use kind and position as unique identifiers
|
|
78
|
+
const identifier = name !== "__computed" ? name : `${node.getKindName()}_${node.getStartLinePos()}`;
|
|
79
|
+
parts.unshift(identifier);
|
|
80
|
+
}
|
|
81
|
+
node = node.getParent();
|
|
82
|
+
}
|
|
83
|
+
return parts.join("::");
|
|
84
|
+
}
|
|
33
85
|
/**
|
|
34
86
|
* Gets the fully qualified name of a node, if it has one
|
|
35
87
|
* @param node A node
|
|
36
88
|
* @returns The fully qualified name of the node, or undefined if it doesn't have one
|
|
37
89
|
*/
|
|
38
|
-
function
|
|
90
|
+
function oldGetFQN(node) {
|
|
39
91
|
const absolutePathProject = analyze_1.entityDictionary.famixRep.getAbsolutePath();
|
|
40
|
-
if (node instanceof
|
|
92
|
+
if (node instanceof ts_morph_1.SourceFile) {
|
|
41
93
|
return analyze_1.entityDictionary.convertToRelativePath(path_1.default.normalize(node.getFilePath()), absolutePathProject).replace(/\\/sg, "/");
|
|
42
94
|
}
|
|
43
95
|
const symbol = node.getSymbol();
|
|
@@ -80,58 +132,93 @@ function getFQN(node) {
|
|
|
80
132
|
return undefined;
|
|
81
133
|
}
|
|
82
134
|
}
|
|
83
|
-
exports.getFQN = getFQN;
|
|
84
135
|
/**
|
|
85
136
|
* Gets the name of a node, if it has one
|
|
86
137
|
* @param a A node
|
|
87
138
|
* @returns The name of the node, or an empty string if it doesn't have one
|
|
88
139
|
*/
|
|
89
140
|
function getNameOfNode(a) {
|
|
90
|
-
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
|
|
91
141
|
switch (a.getKind()) {
|
|
92
|
-
case ts.SyntaxKind.SourceFile:
|
|
93
|
-
return
|
|
94
|
-
case ts.SyntaxKind.ModuleDeclaration:
|
|
95
|
-
return
|
|
96
|
-
case ts.SyntaxKind.ClassDeclaration:
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
case ts.SyntaxKind.
|
|
111
|
-
return
|
|
112
|
-
case ts.SyntaxKind.
|
|
113
|
-
return
|
|
114
|
-
case ts.SyntaxKind.
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
142
|
+
case ts_morph_1.ts.SyntaxKind.SourceFile:
|
|
143
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.SourceFile)?.getBaseName();
|
|
144
|
+
case ts_morph_1.ts.SyntaxKind.ModuleDeclaration:
|
|
145
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.ModuleDeclaration)?.getName();
|
|
146
|
+
case ts_morph_1.ts.SyntaxKind.ClassDeclaration:
|
|
147
|
+
if (a.asKind(ts_morph_1.ts.SyntaxKind.ClassDeclaration).getTypeParameters().length > 0) {
|
|
148
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.ClassDeclaration)?.getName() + getParameters(a);
|
|
149
|
+
}
|
|
150
|
+
else {
|
|
151
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.ClassDeclaration)?.getName();
|
|
152
|
+
}
|
|
153
|
+
case ts_morph_1.ts.SyntaxKind.InterfaceDeclaration:
|
|
154
|
+
if (a.asKind(ts_morph_1.ts.SyntaxKind.InterfaceDeclaration).getTypeParameters().length > 0) {
|
|
155
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.InterfaceDeclaration)?.getName() + getParameters(a);
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.InterfaceDeclaration)?.getName();
|
|
159
|
+
}
|
|
160
|
+
case ts_morph_1.ts.SyntaxKind.PropertyDeclaration:
|
|
161
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.PropertyDeclaration)?.getName();
|
|
162
|
+
case ts_morph_1.ts.SyntaxKind.PropertySignature:
|
|
163
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.PropertySignature)?.getName();
|
|
164
|
+
case ts_morph_1.ts.SyntaxKind.MethodDeclaration:
|
|
165
|
+
if (a.asKind(ts_morph_1.ts.SyntaxKind.MethodDeclaration).getTypeParameters().length > 0) {
|
|
166
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.MethodDeclaration)?.getName() + getParameters(a);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.MethodDeclaration)?.getName();
|
|
170
|
+
}
|
|
171
|
+
case ts_morph_1.ts.SyntaxKind.MethodSignature:
|
|
172
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.MethodSignature)?.getName();
|
|
173
|
+
case ts_morph_1.ts.SyntaxKind.GetAccessor:
|
|
174
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.GetAccessor)?.getName();
|
|
175
|
+
case ts_morph_1.ts.SyntaxKind.SetAccessor:
|
|
176
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.SetAccessor)?.getName();
|
|
177
|
+
case ts_morph_1.ts.SyntaxKind.FunctionDeclaration:
|
|
178
|
+
if (a.asKind(ts_morph_1.ts.SyntaxKind.FunctionDeclaration).getTypeParameters().length > 0) {
|
|
179
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.FunctionDeclaration)?.getName() + getParameters(a);
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.FunctionDeclaration)?.getName();
|
|
183
|
+
}
|
|
184
|
+
case ts_morph_1.ts.SyntaxKind.FunctionExpression:
|
|
185
|
+
return (a.asKind(ts_morph_1.ts.SyntaxKind.FunctionExpression)?.getName()) ? a.asKind(ts_morph_1.ts.SyntaxKind.FunctionExpression)?.getName() : "anonymous";
|
|
186
|
+
case ts_morph_1.ts.SyntaxKind.Parameter:
|
|
187
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.Parameter)?.getName();
|
|
188
|
+
case ts_morph_1.ts.SyntaxKind.VariableDeclaration:
|
|
189
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.VariableDeclaration)?.getName();
|
|
190
|
+
case ts_morph_1.ts.SyntaxKind.Decorator:
|
|
191
|
+
return "@" + a.asKind(ts_morph_1.ts.SyntaxKind.Decorator)?.getName();
|
|
192
|
+
case ts_morph_1.ts.SyntaxKind.TypeParameter:
|
|
193
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.TypeParameter)?.getName();
|
|
194
|
+
case ts_morph_1.ts.SyntaxKind.EnumDeclaration:
|
|
195
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.EnumDeclaration)?.getName();
|
|
196
|
+
case ts_morph_1.ts.SyntaxKind.EnumMember:
|
|
197
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.EnumMember)?.getName();
|
|
198
|
+
case ts_morph_1.ts.SyntaxKind.TypeAliasDeclaration:
|
|
199
|
+
return a.asKind(ts_morph_1.ts.SyntaxKind.TypeAliasDeclaration)?.getName();
|
|
200
|
+
case ts_morph_1.ts.SyntaxKind.Constructor:
|
|
131
201
|
return "constructor";
|
|
132
202
|
default:
|
|
133
203
|
// ancestor hasn't got a useful name
|
|
134
204
|
return "";
|
|
135
205
|
}
|
|
136
206
|
}
|
|
137
|
-
|
|
207
|
+
/**
|
|
208
|
+
* Gets the name of a node, if it has one
|
|
209
|
+
* @param a A node
|
|
210
|
+
* @returns The name of the node, or an empty string if it doesn't have one
|
|
211
|
+
*/
|
|
212
|
+
function getParameters(a) {
|
|
213
|
+
switch (a.getKind()) {
|
|
214
|
+
case ts_morph_1.ts.SyntaxKind.ClassDeclaration:
|
|
215
|
+
return "<" + a.asKind(ts_morph_1.ts.SyntaxKind.ClassDeclaration)?.getTypeParameters().map(tp => tp.getName()).join(", ") + ">";
|
|
216
|
+
case ts_morph_1.ts.SyntaxKind.InterfaceDeclaration:
|
|
217
|
+
return "<" + a.asKind(ts_morph_1.ts.SyntaxKind.InterfaceDeclaration)?.getTypeParameters().map(tp => tp.getName()).join(", ") + ">";
|
|
218
|
+
case ts_morph_1.ts.SyntaxKind.MethodDeclaration:
|
|
219
|
+
return "<" + a.asKind(ts_morph_1.ts.SyntaxKind.MethodDeclaration)?.getTypeParameters().map(tp => tp.getName()).join(", ") + ">";
|
|
220
|
+
case ts_morph_1.ts.SyntaxKind.FunctionDeclaration:
|
|
221
|
+
return "<" + a.asKind(ts_morph_1.ts.SyntaxKind.FunctionDeclaration)?.getTypeParameters().map(tp => tp.getName()).join(", ") + ">";
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnFuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2Zxbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7OztBQWFBLHdCQWtEQztBQUdELG9DQXVCQztBQVFELDhCQXFEQztBQU9ELHNDQWtGQztBQU9ELHNDQVdDO0FBalFELHVDQUF3YztBQUN4Yyx1Q0FBcUQ7QUFDckQsZ0RBQXdCO0FBTXhCLFNBQVMsU0FBUyxDQUFDLElBQVU7SUFDekIsT0FBTyxlQUFJLENBQUMscUJBQXFCLENBQUMsSUFBSSxDQUFDLElBQUksZUFBSSxDQUFDLGVBQWUsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFJLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxJQUFJLGVBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsSUFBSSxlQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLElBQUksZUFBSSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxJQUFJLGVBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLElBQUksZUFBSSxDQUFDLG1CQUFtQixDQUFDLElBQUksQ0FBQyxJQUFJLGVBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUVuUyxDQUFDO0FBRUQsU0FBZ0IsTUFBTSxDQUFDLElBQW9CO0lBQ3ZDLE1BQU0sbUJBQW1CLEdBQUcsMEJBQWdCLENBQUMsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBRXhFLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztJQUN4QyxJQUFJLEtBQUssR0FBYSxFQUFFLENBQUM7SUFDekIsSUFBSSxXQUFXLEdBQXFCLElBQUksQ0FBQztJQUV6QyxPQUFPLFdBQVcsSUFBSSxDQUFDLGVBQUksQ0FBQyxZQUFZLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQztRQUNwRCxNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxX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RSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN4SCxLQUFLLGFBQUUsQ0FBQyxVQUFVLENBQUMsb0JBQW9CO1lBQ25DLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBRSxDQUFDLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUM1SCxLQUFLLGFBQUUsQ0FBQyxVQUFVLENBQUMsaUJBQWlCO1lBQ2hDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBRSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztRQUN6SCxLQUFLLGFBQUUsQ0FBQyxVQUFVLENBQUMsbUJBQW1CO1lBQ2xDLE9BQU8sR0FBRyxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBRSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsQ0FBQyxFQUFFLGlCQUFpQixFQUFFLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsQ0FBQztJQUMvSCxDQUFDO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFycm93RnVuY3Rpb24sIENhbGxFeHByZXNzaW9uLCBDbGFzc0RlY2xhcmF0aW9uLCBDbGFzc0V4cHJlc3Npb24sIENvbnN0cnVjdG9yRGVjbGFyYXRpb24sIERlY29yYXRvciwgRW51bURlY2xhcmF0aW9uLCBGdW5jdGlvbkRlY2xhcmF0aW9uLCBGdW5jdGlvbkV4cHJlc3Npb24sIEdldEFjY2Vzc29yRGVjbGFyYXRpb24sIElkZW50aWZpZXIsIEltcG9ydERlY2xhcmF0aW9uLCBJbXBvcnRFcXVhbHNEZWNsYXJhdGlvbiwgSW50ZXJmYWNlRGVjbGFyYXRpb24sIE1ldGhvZERlY2xhcmF0aW9uLCBNZXRob2RTaWduYXR1cmUsIE1vZHVsZURlY2xhcmF0aW9uLCBOb2RlLCBQcm9wZXJ0eURlY2xhcmF0aW9uLCBTZXRBY2Nlc3NvckRlY2xhcmF0aW9uLCBTb3VyY2VGaWxlLCB0cywgVHlwZVBhcmFtZXRlckRlY2xhcmF0aW9uLCBWYXJpYWJsZURlY2xhcmF0aW9uIH0gZnJvbSBcInRzLW1vcnBoXCI7XHJcbmltcG9ydCB7IGVudGl0eURpY3Rpb25hcnksIGxvZ2dlciB9IGZyb20gXCIuL2FuYWx5emVcIjtcclxuaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcclxuaW1wb3J0IHsgVHlwZURlY2xhcmF0aW9uIH0gZnJvbSBcIi4vZmFtaXhfZnVuY3Rpb25zL0VudGl0eURpY3Rpb25hcnlcIjtcclxuXHJcblxyXG50eXBlIEZRTk5vZGUgPSBTb3VyY2VGaWxlIHwgVmFyaWFibGVEZWNsYXJhdGlvbiB8IEFycm93RnVuY3Rpb24gfCBJZGVudGlmaWVyIHwgTWV0aG9kRGVjbGFyYXRpb24gfCBNZXRob2RTaWduYXR1cmUgfCBGdW5jdGlvbkRlY2xhcmF0aW9uIHwgRnVuY3Rpb25FeHByZXNzaW9uIHwgUHJvcGVydHlEZWNsYXJhdGlvbiB8IFR5cGVEZWNsYXJhdGlvbiB8IEVudW1EZWNsYXJhdGlvbiB8IEltcG9ydERlY2xhcmF0aW9uIHwgSW1wb3J0RXF1YWxzRGVjbGFyYXRpb24gfCBDYWxsRXhwcmVzc2lvbiB8IEdldEFjY2Vzc29yRGVjbGFyYXRpb24gfCBTZXRBY2Nlc3NvckRlY2xhcmF0aW9uIHwgQ29uc3RydWN0b3JEZWNsYXJhdGlvbiB8IFR5cGVQYXJhbWV0ZXJEZWNsYXJhdGlvbiB8IENsYXNzRGVjbGFyYXRpb24gfCBJbnRlcmZhY2VEZWNsYXJhdGlvbiB8IERlY29yYXRvciB8IE1vZHVsZURlY2xhcmF0aW9uO1xyXG5cclxuZnVuY3Rpb24gaXNGUU5Ob2RlKG5vZGU6IE5vZGUpOiBub2RlIGlzIEZRTk5vZGUge1xyXG4gICAgcmV0dXJuIE5vZGUuaXNWYXJpYWJsZURlY2xhcmF0aW9uKG5vZGUpIHx8IE5vZGUuaXNBcnJvd0Z1bmN0aW9uKG5vZGUpIHx8IE5vZGUuaXNJZGVudGlmaWVyKG5vZGUpIHx8IE5vZGUuaXNNZXRob2REZWNsYXJhdGlvbihub2RlKSB8fCBOb2RlLmlzQ2xhc3NEZWNsYXJhdGlvbihub2RlKSB8fCBOb2RlLmlzQ2xhc3NFeHByZXNzaW9uKG5vZGUpIHx8IE5vZGUuaXNEZWNvcmF0b3Iobm9kZSkgfHwgTm9kZS5pc01vZHVsZURlY2xhcmF0aW9uKG5vZGUpIHx8IE5vZGUuaXNDYWxsRXhwcmVzc2lvbihub2RlKTtcclxuXHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRGUU4obm9kZTogRlFOTm9kZSB8IE5vZGUpOiBzdHJpbmcge1xyXG4gICAgY29uc3QgYWJzb2x1dGVQYXRoUHJvamVjdCA9IGVudGl0eURpY3Rpb25hcnkuZmFtaXhSZXAuZ2V0QWJzb2x1dGVQYXRoKCk7XHJcblxyXG4gICAgY29uc3Qgc291cmNlRmlsZSA9IG5vZGUuZ2V0U291cmNlRmlsZSgpO1xyXG4gICAgbGV0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgbGV0IGN1cnJlbnROb2RlOiBOb2RlIHwgdW5kZWZpbmVkID0gbm9kZTtcclxuXHJcbiAgICB3aGlsZSAoY3VycmVudE5vZGUgJiYgIU5vZGUuaXNTb3VyY2VGaWxlKGN1cnJlbnROb2RlKSkge1xyXG4gICAgICAgIGNvbnN0IHsgbGluZSwgY29sdW1uIH0gPSBzb3VyY2VGaWxlLmdldExpbmVBbmRDb2x1bW5BdFBvcyhjdXJyZW50Tm9kZS5nZXRTdGFydCgpKTtcclxuICAgICAgICBjb25zdCBsYyA9IGAke2xpbmV9OiR7Y29sdW1ufWA7XHJcbiAgICAgICAgaWYgKE5vZGUuaXNDbGFzc0RlY2xhcmF0aW9uKGN1cnJlbnROb2RlKSB8fCBcclxuICAgICAgICAgICAgTm9kZS5pc0NsYXNzRXhwcmVzc2lvbihjdXJyZW50Tm9kZSkgfHwgXHJcbiAgICAgICAgICAgIE5vZGUuaXNJbnRlcmZhY2VEZWNsYXJhdGlvbihjdXJyZW50Tm9kZSkgfHxcclxuICAgICAgICAgICAgTm9kZS5pc0Z1bmN0aW9uRGVjbGFyYXRpb24oY3VycmVudE5vZGUpIHx8IFxyXG4gICAgICAgICAgICBOb2RlLmlzTWV0aG9kRGVjbGFyYXRpb24oY3VycmVudE5vZGUpIHx8IFxyXG4gICAgICAgICAgICBOb2RlLmlzTW9kdWxlRGVjbGFyYXRpb24oY3VycmVudE5vZGUpIHx8IFxyXG4gICAgICAgICAgICBOb2RlLmlzVmFyaWFibGVEZWNsYXJhdGlvbihjdXJyZW50Tm9kZSkgfHwgXHJcbiAgICAgICAgICAgIE5vZGUuaXNHZXRBY2Nlc3NvckRlY2xhcmF0aW9uKGN1cnJlbnROb2RlKSB8fFxyXG4gICAgICAgICAgICBOb2RlLmlzU2V0QWNjZXNzb3JEZWNsYXJhdGlvbihjdXJyZW50Tm9kZSkgfHxcclxuICAgICAgICAgICAgTm9kZS5pc0lkZW50aWZpZXIoY3VycmVudE5vZGUpKSB7XHJcbiAgICAgICAgICAgIGxldCBuYW1lID0gTm9kZS5pc0lkZW50aWZpZXIoY3VycmVudE5vZGUpID8gY3VycmVudE5vZGUuZ2V0VGV4dCgpIFxyXG4gICAgICAgICAgICAgICAgOiBnZXROYW1lT2ZOb2RlKGN1cnJlbnROb2RlKSAvKiBjdXJyZW50Tm9kZS5nZXROYW1lKCkgKi8gfHwgJ1VubmFtZWRfJyArIGN1cnJlbnROb2RlLmdldEtpbmROYW1lKCkgKyBgKCR7bGN9KWA7XHJcbiAgICAgICAgICAgIHBhcnRzLnVuc2hpZnQobmFtZSk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChOb2RlLmlzQXJyb3dGdW5jdGlvbihjdXJyZW50Tm9kZSkgfHwgXHJcbiAgICAgICAgICAgICAgICAgICBOb2RlLmlzQmxvY2soY3VycmVudE5vZGUpIHx8IFxyXG4gICAgICAgICAgICAgICAgICAgTm9kZS5pc0ZvckluU3RhdGVtZW50KGN1cnJlbnROb2RlKSB8fCBcclxuICAgICAgICAgICAgICAgICAgIE5vZGUuaXNGb3JPZlN0YXRlbWVudChjdXJyZW50Tm9kZSkgfHwgXHJcbiAgICAgICAgICAgICAgICAgICBOb2RlLmlzRm9yU3RhdGVtZW50KGN1cnJlbnROb2RlKSB8fCBcclxuICAgICAgICAgICAgICAgICAgIE5vZGUuaXNDYXRjaENsYXVzZShjdXJyZW50Tm9kZSkpIHtcclxuICAgICAgICAgICAgcGFydHMudW5zaGlmdChgJHtjdXJyZW50Tm9kZS5nZXRLaW5kTmFtZSgpfSgke2xjfSlgKTtcclxuICAgICAgICB9IGVsc2UgaWYgKE5vZGUuaXNDb25zdHJ1Y3RvckRlY2xhcmF0aW9uKGN1cnJlbnROb2RlKSkge1xyXG4gICAgICAgICAgICBwYXJ0cy51bnNoaWZ0KGBjb25zdHJ1Y3RvcmApO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIEZvciBvdGhlciBraW5kcywgeW91IG1pZ2h0IHdhbnQgdG8gaGFuZGxlIHRoZW0gc3BlY2lmaWNhbGx5IG9yIGlnbm9yZVxyXG4gICAgICAgICAgICAvL2NvbnNvbGUubG9nKGBJZ25vcmluZyBub2RlIGtpbmQ6ICR7Y3VycmVudE5vZGUuZ2V0S2luZE5hbWUoKX1gKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY3VycmVudE5vZGUgPSBjdXJyZW50Tm9kZS5nZXRQYXJlbnQoKTtcclxuICAgIH1cclxuXHJcblxyXG5cclxuICAgIC8vIFByZXBlbmQgdGhlIHJlbGF0aXZlIHBhdGggb2YgdGhlIHNvdXJjZSBmaWxlXHJcbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBlbnRpdHlEaWN0aW9uYXJ5LmNvbnZlcnRUb1JlbGF0aXZlUGF0aChcclxuICAgICAgICBwYXRoLm5vcm1hbGl6ZShzb3VyY2VGaWxlLmdldEZpbGVQYXRoKCkpLCBcclxuICAgICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZVBhdGhQcm9qZWN0KS5yZXBsYWNlKC9cXFxcL3NnLCBcIi9cIik7XHJcbiAgICBwYXJ0cy51bnNoaWZ0KGB7JHtyZWxhdGl2ZVBhdGh9fWApO1xyXG4gICAgY29uc3QgZnFuID0gcGFydHMuam9pbihcIi5cIikgKyBgWyR7bm9kZS5nZXRLaW5kTmFtZSgpfV1gOyAgLy8gZGlzYW1iaWd1YXRlXHJcblxyXG4gICAgbG9nZ2VyLmRlYnVnKGZxbik7XHJcbiAgICByZXR1cm4gZnFuO1xyXG59XHJcblxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFVuaXF1ZUZRTihub2RlOiBOb2RlKTogc3RyaW5nIHwgdW5kZWZpbmVkIHtcclxuICAgIGNvbnN0IGFic29sdXRlUGF0aFByb2plY3QgPSBlbnRpdHlEaWN0aW9uYXJ5LmZhbWl4UmVwLmdldEFic29sdXRlUGF0aCgpO1xyXG4gICAgbGV0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xyXG5cclxuICAgIGlmIChub2RlIGluc3RhbmNlb2YgU291cmNlRmlsZSkge1xyXG4gICAgICAgIHJldHVybiBlbnRpdHlEaWN0aW9uYXJ5LmNvbnZlcnRUb1JlbGF0aXZlUGF0aChwYXRoLm5vcm1hbGl6ZShub2RlLmdldEZpbGVQYXRoKCkpLCBhYnNvbHV0ZVBhdGhQcm9qZWN0KS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcclxuICAgIH1cclxuXHJcbiAgICB3aGlsZSAobm9kZSkge1xyXG4gICAgICAgIGlmIChOb2RlLmlzU291cmNlRmlsZShub2RlKSkge1xyXG4gICAgICAgICAgICBjb25zdCByZWxhdGl2ZVBhdGggPSBlbnRpdHlEaWN0aW9uYXJ5LmNvbnZlcnRUb1JlbGF0aXZlUGF0aChwYXRoLm5vcm1hbGl6ZShub2RlLmdldEZpbGVQYXRoKCkpLCBhYnNvbHV0ZVBhdGhQcm9qZWN0KS5yZXBsYWNlKC9cXFxcL2csIFwiL1wiKTtcclxuICAgICAgICAgICAgcGFydHMudW5zaGlmdChyZWxhdGl2ZVBhdGgpOyAvLyBBZGQgZmlsZSBwYXRoIGF0IHRoZSBzdGFydFxyXG4gICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2UgaWYgKG5vZGUuZ2V0U3ltYm9sKCkpIHtcclxuICAgICAgICAgICAgY29uc3QgbmFtZSA9IG5vZGUuZ2V0U3ltYm9sKCkhLmdldE5hbWUoKTtcclxuICAgICAgICAgICAgLy8gRm9yIGFub255bW91cyBub2RlcywgdXNlIGtpbmQgYW5kIHBvc2l0aW9uIGFzIHVuaXF1ZSBpZGVudGlmaWVyc1xyXG4gICAgICAgICAgICBjb25zdCBpZGVudGlmaWVyID0gbmFtZSAhPT0gXCJfX2NvbXB1dGVkXCIgPyBuYW1lIDogYCR7bm9kZS5nZXRLaW5kTmFtZSgpfV8ke25vZGUuZ2V0U3RhcnRMaW5lUG9zKCl9YDtcclxuICAgICAgICAgICAgcGFydHMudW5zaGlmdChpZGVudGlmaWVyKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgbm9kZSA9IG5vZGUuZ2V0UGFyZW50KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIHBhcnRzLmpvaW4oXCI6OlwiKTtcclxufVxyXG5cclxuXHJcbi8qKlxyXG4gKiBHZXRzIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiBhIG5vZGUsIGlmIGl0IGhhcyBvbmVcclxuICogQHBhcmFtIG5vZGUgQSBub2RlXHJcbiAqIEByZXR1cm5zIFRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvZiB0aGUgbm9kZSwgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgaGF2ZSBvbmVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBvbGRHZXRGUU4obm9kZTogTm9kZSk6IHN0cmluZyB7XHJcbiAgICBjb25zdCBhYnNvbHV0ZVBhdGhQcm9qZWN0ID0gZW50aXR5RGljdGlvbmFyeS5mYW1peFJlcC5nZXRBYnNvbHV0ZVBhdGgoKTtcclxuICAgIFxyXG4gICAgaWYgKG5vZGUgaW5zdGFuY2VvZiBTb3VyY2VGaWxlKSB7XHJcbiAgICAgICAgcmV0dXJuIGVudGl0eURpY3Rpb25hcnkuY29udmVydFRvUmVsYXRpdmVQYXRoKHBhdGgubm9ybWFsaXplKG5vZGUuZ2V0RmlsZVBhdGgoKSksIFxyXG4gICAgICAgICAgICBhYnNvbHV0ZVBhdGhQcm9qZWN0KS5yZXBsYWNlKC9cXFxcL3NnLCBcIi9cIik7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc3ltYm9sID0gbm9kZS5nZXRTeW1ib2woKTtcclxuICAgIGlmICghc3ltYm9sKSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBkZWNsYXJhdGlvbnMgPSBzeW1ib2wuZ2V0RGVjbGFyYXRpb25zKCk7XHJcbiAgICBpZiAoIWRlY2xhcmF0aW9ucykge1xyXG4gICAgICAgIHJldHVybiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3Qgc291cmNlRmlsZSA9IGRlY2xhcmF0aW9uc1swXS5nZXRTb3VyY2VGaWxlKCk7XHJcbiAgICBpZiAoIXNvdXJjZUZpbGUpIHtcclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IGFic29sdXRlUGF0aCA9IHBhdGgubm9ybWFsaXplKHNvdXJjZUZpbGUuZ2V0RmlsZVBhdGgoKSk7XHJcbiAgICBjb25zdCBwb3NpdGlvbk5vZGVNb2R1bGVzID0gYWJzb2x1dGVQYXRoLmluZGV4T2YoJ25vZGVfbW9kdWxlcycpO1xyXG4gICAgbGV0IHBhdGhJblByb2plY3Q6IHN0cmluZyA9IFwiXCI7XHJcblxyXG4gICAgaWYgKHBvc2l0aW9uTm9kZU1vZHVsZXMgIT09IC0xKSB7XHJcbiAgICAgICAgY29uc3QgcGF0aEZyb21Ob2RlTW9kdWxlcyA9IGFic29sdXRlUGF0aC5zdWJzdHJpbmcocG9zaXRpb25Ob2RlTW9kdWxlcyk7XHJcbiAgICAgICAgcGF0aEluUHJvamVjdCA9IHBhdGhGcm9tTm9kZU1vZHVsZXM7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIHBhdGhJblByb2plY3QgPSBlbnRpdHlEaWN0aW9uYXJ5LmNvbnZlcnRUb1JlbGF0aXZlUGF0aChhYnNvbHV0ZVBhdGgsIGFic29sdXRlUGF0aFByb2plY3QpLnJlcGxhY2UoL1xcXFwvZywgXCIvXCIpOyAgICAgXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcXVhbGlmaWVkTmFtZVBhcnRzOiBBcnJheTxzdHJpbmc+ID0gW107XHJcblxyXG4gICAgY29uc3Qgbm9kZU5hbWUgPSB0aGlzLmdldE5hbWVPZk5vZGUobm9kZSk7XHJcbiAgICBpZiAobm9kZU5hbWUpIHF1YWxpZmllZE5hbWVQYXJ0cy5wdXNoKG5vZGVOYW1lKTtcclxuXHJcbiAgICBjb25zdCBhbmNlc3RvcnMgPSBub2RlLmdldEFuY2VzdG9ycygpO1xyXG4gICAgYW5jZXN0b3JzLmZvckVhY2goYSA9PiB7XHJcbiAgICAgICAgY29uc3QgcGFydE5hbWUgPSB0aGlzLmdldE5hbWVPZk5vZGUoYSk7XHJcbiAgICAgICAgaWYgKHBhcnROYW1lKSBxdWFsaWZpZWROYW1lUGFydHMucHVzaChwYXJ0TmFtZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICBxdWFsaWZpZWROYW1lUGFydHMucG9wKCk7XHJcblxyXG4gICAgaWYgKHF1YWxpZmllZE5hbWVQYXJ0cy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgcmV0dXJuIGB7JHtwYXRoSW5Qcm9qZWN0fX0uJHtxdWFsaWZpZWROYW1lUGFydHMucmV2ZXJzZSgpLmpvaW4oXCIuXCIpfWA7XHJcbiAgICB9IFxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcclxuICAgIH1cclxufVxyXG5cclxuLyoqXHJcbiAqIEdldHMgdGhlIG5hbWUgb2YgYSBub2RlLCBpZiBpdCBoYXMgb25lXHJcbiAqIEBwYXJhbSBhIEEgbm9kZVxyXG4gKiBAcmV0dXJucyBUaGUgbmFtZSBvZiB0aGUgbm9kZSwgb3IgYW4gZW1wdHkgc3RyaW5nIGlmIGl0IGRvZXNuJ3QgaGF2ZSBvbmVcclxuICovXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXROYW1lT2ZOb2RlKGE6IE5vZGUpOiBzdHJpbmcge1xyXG4gICAgc3dpdGNoIChhLmdldEtpbmQoKSkge1xyXG4gICAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5Tb3VyY2VGaWxlOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQodHMuU3ludGF4S2luZC5Tb3VyY2VGaWxlKT8uZ2V0QmFzZU5hbWUoKTtcclxuXHJcbiAgICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLk1vZHVsZURlY2xhcmF0aW9uOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQodHMuU3ludGF4S2luZC5Nb2R1bGVEZWNsYXJhdGlvbik/LmdldE5hbWUoKTsgXHJcblxyXG4gICAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5DbGFzc0RlY2xhcmF0aW9uOlxyXG4gICAgICAgICAgICBpZiAoYS5hc0tpbmQodHMuU3ludGF4S2luZC5DbGFzc0RlY2xhcmF0aW9uKS5nZXRUeXBlUGFyYW1ldGVycygpLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhLmFzS2luZCh0cy5TeW50YXhLaW5kLkNsYXNzRGVjbGFyYXRpb24pPy5nZXROYW1lKCkrZ2V0UGFyYW1ldGVycyhhKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhLmFzS2luZCh0cy5TeW50YXhLaW5kLkNsYXNzRGVjbGFyYXRpb24pPy5nZXROYW1lKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLkludGVyZmFjZURlY2xhcmF0aW9uOlxyXG4gICAgICAgICAgICBpZiAoYS5hc0tpbmQodHMuU3ludGF4S2luZC5JbnRlcmZhY2VEZWNsYXJhdGlvbikuZ2V0VHlwZVBhcmFtZXRlcnMoKS5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQodHMuU3ludGF4S2luZC5JbnRlcmZhY2VEZWNsYXJhdGlvbik/LmdldE5hbWUoKStnZXRQYXJhbWV0ZXJzKGEpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKHRzLlN5bnRheEtpbmQuSW50ZXJmYWNlRGVjbGFyYXRpb24pPy5nZXROYW1lKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIFxyXG4gICAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5Qcm9wZXJ0eURlY2xhcmF0aW9uOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQodHMuU3ludGF4S2luZC5Qcm9wZXJ0eURlY2xhcmF0aW9uKT8uZ2V0TmFtZSgpOyAgICBcclxuXHJcbiAgICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLlByb3BlcnR5U2lnbmF0dXJlOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQodHMuU3ludGF4S2luZC5Qcm9wZXJ0eVNpZ25hdHVyZSk/LmdldE5hbWUoKTsgICAgXHJcbiAgICBcclxuICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuTWV0aG9kRGVjbGFyYXRpb246XHJcbiAgICAgICAgICAgIGlmIChhLmFzS2luZCh0cy5TeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uKS5nZXRUeXBlUGFyYW1ldGVycygpLmxlbmd0aD4wKXtcclxuICAgICAgICAgICAgICAgIHJldHVybiBhLmFzS2luZCh0cy5TeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uKT8uZ2V0TmFtZSgpK2dldFBhcmFtZXRlcnMoYSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQodHMuU3ludGF4S2luZC5NZXRob2REZWNsYXJhdGlvbik/LmdldE5hbWUoKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuTWV0aG9kU2lnbmF0dXJlOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQodHMuU3ludGF4S2luZC5NZXRob2RTaWduYXR1cmUpPy5nZXROYW1lKCk7ICAgXHJcblxyXG4gICAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5HZXRBY2Nlc3NvcjpcclxuICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKHRzLlN5bnRheEtpbmQuR2V0QWNjZXNzb3IpPy5nZXROYW1lKCk7XHJcblxyXG4gICAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5TZXRBY2Nlc3NvcjpcclxuICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKHRzLlN5bnRheEtpbmQuU2V0QWNjZXNzb3IpPy5nZXROYW1lKCk7XHJcbiAgICBcclxuICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuRnVuY3Rpb25EZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgaWYgKGEuYXNLaW5kKHRzLlN5bnRheEtpbmQuRnVuY3Rpb25EZWNsYXJhdGlvbikuZ2V0VHlwZVBhcmFtZXRlcnMoKS5sZW5ndGg+MCl7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQodHMuU3ludGF4S2luZC5GdW5jdGlvbkRlY2xhcmF0aW9uKT8uZ2V0TmFtZSgpK2dldFBhcmFtZXRlcnMoYSk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQodHMuU3ludGF4S2luZC5GdW5jdGlvbkRlY2xhcmF0aW9uKT8uZ2V0TmFtZSgpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5GdW5jdGlvbkV4cHJlc3Npb246XHJcbiAgICAgICAgICAgIHJldHVybiAoYS5hc0tpbmQodHMuU3ludGF4S2luZC5GdW5jdGlvbkV4cHJlc3Npb24pPy5nZXROYW1lKCkpID8gYS5hc0tpbmQodHMuU3ludGF4S2luZC5GdW5jdGlvbkV4cHJlc3Npb24pPy5nZXROYW1lKCkgOiBcImFub255bW91c1wiO1xyXG4gICAgICAgICAgICBcclxuICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuUGFyYW1ldGVyOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQodHMuU3ludGF4S2luZC5QYXJhbWV0ZXIpPy5nZXROYW1lKCk7XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuVmFyaWFibGVEZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKHRzLlN5bnRheEtpbmQuVmFyaWFibGVEZWNsYXJhdGlvbik/LmdldE5hbWUoKTtcclxuXHJcbiAgICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLkRlY29yYXRvcjpcclxuICAgICAgICAgICAgcmV0dXJuIFwiQFwiICsgYS5hc0tpbmQodHMuU3ludGF4S2luZC5EZWNvcmF0b3IpPy5nZXROYW1lKCk7ICAgIFxyXG5cclxuICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuVHlwZVBhcmFtZXRlcjpcclxuICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKHRzLlN5bnRheEtpbmQuVHlwZVBhcmFtZXRlcik/LmdldE5hbWUoKTtcclxuXHJcbiAgICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLkVudW1EZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKHRzLlN5bnRheEtpbmQuRW51bURlY2xhcmF0aW9uKT8uZ2V0TmFtZSgpO1xyXG5cclxuICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuRW51bU1lbWJlcjpcclxuICAgICAgICAgICAgcmV0dXJuIGEuYXNLaW5kKHRzLlN5bnRheEtpbmQuRW51bU1lbWJlcik/LmdldE5hbWUoKTtcclxuXHJcbiAgICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLlR5cGVBbGlhc0RlY2xhcmF0aW9uOlxyXG4gICAgICAgICAgICByZXR1cm4gYS5hc0tpbmQodHMuU3ludGF4S2luZC5UeXBlQWxpYXNEZWNsYXJhdGlvbik/LmdldE5hbWUoKTtcclxuXHJcbiAgICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLkNvbnN0cnVjdG9yOlxyXG4gICAgICAgICAgICByZXR1cm4gXCJjb25zdHJ1Y3RvclwiOyAgIFxyXG4gICAgICAgICAgICBcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAvLyBhbmNlc3RvciBoYXNuJ3QgZ290IGEgdXNlZnVsIG5hbWVcclxuICAgICAgICAgICAgcmV0dXJuIFwiXCI7XHJcbiAgICAgICAgfVxyXG59XHJcblxyXG4vKipcclxuICogR2V0cyB0aGUgbmFtZSBvZiBhIG5vZGUsIGlmIGl0IGhhcyBvbmVcclxuICogQHBhcmFtIGEgQSBub2RlXHJcbiAqIEByZXR1cm5zIFRoZSBuYW1lIG9mIHRoZSBub2RlLCBvciBhbiBlbXB0eSBzdHJpbmcgaWYgaXQgZG9lc24ndCBoYXZlIG9uZVxyXG4gKi9cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFBhcmFtZXRlcnMoYTogTm9kZSk6IHN0cmluZyB7XHJcbiAgICBzd2l0Y2ggKGEuZ2V0S2luZCgpKSB7XHJcbiAgICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLkNsYXNzRGVjbGFyYXRpb246ICAgIFxyXG4gICAgICAgICAgICByZXR1cm4gXCI8XCIgKyBhLmFzS2luZCh0cy5TeW50YXhLaW5kLkNsYXNzRGVjbGFyYXRpb24pPy5nZXRUeXBlUGFyYW1ldGVycygpLm1hcCh0cCA9PiB0cC5nZXROYW1lKCkpLmpvaW4oXCIsIFwiKSArIFwiPlwiO1xyXG4gICAgICAgIGNhc2UgdHMuU3ludGF4S2luZC5JbnRlcmZhY2VEZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgcmV0dXJuIFwiPFwiICsgYS5hc0tpbmQodHMuU3ludGF4S2luZC5JbnRlcmZhY2VEZWNsYXJhdGlvbik/LmdldFR5cGVQYXJhbWV0ZXJzKCkubWFwKHRwID0+IHRwLmdldE5hbWUoKSkuam9pbihcIiwgXCIpICsgXCI+XCI7XHJcbiAgICAgICAgY2FzZSB0cy5TeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uOlxyXG4gICAgICAgICAgICByZXR1cm4gXCI8XCIgKyBhLmFzS2luZCh0cy5TeW50YXhLaW5kLk1ldGhvZERlY2xhcmF0aW9uKT8uZ2V0VHlwZVBhcmFtZXRlcnMoKS5tYXAodHAgPT4gdHAuZ2V0TmFtZSgpKS5qb2luKFwiLCBcIikgKyBcIj5cIjtcclxuICAgICAgICBjYXNlIHRzLlN5bnRheEtpbmQuRnVuY3Rpb25EZWNsYXJhdGlvbjpcclxuICAgICAgICAgICAgcmV0dXJuIFwiPFwiICsgYS5hc0tpbmQodHMuU3ludGF4S2luZC5GdW5jdGlvbkRlY2xhcmF0aW9uKT8uZ2V0VHlwZVBhcmFtZXRlcnMoKS5tYXAodHAgPT4gdHAuZ2V0TmFtZSgpKS5qb2luKFwiLCBcIikgKyBcIj5cIjtcclxuICAgIH1cclxufVxyXG4iXX0=
|
|
@@ -52,3 +52,4 @@ class FamixJSONExporter {
|
|
|
52
52
|
}
|
|
53
53
|
}
|
|
54
54
|
exports.FamixJSONExporter = FamixJSONExporter;
|
|
55
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFtaXhfSlNPTl9leHBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZmFtaXgvc3JjL2ZhbWl4X0pTT05fZXhwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXdEO0FBRXhEOztHQUVHO0FBQ0gsTUFBYSxpQkFBaUI7SUFNNUI7Ozs7T0FJRztJQUNILFlBQVksWUFBb0IsRUFBRSxPQUF5QjtRQVJuRCxnQkFBVyxHQUFRLEVBQUUsQ0FBQyxDQUFDLHdEQUF3RDtRQUMvRSxnQkFBVyxHQUFHLGlCQUFpQixDQUFDLENBQUMsOEJBQThCO1FBUXJFLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsWUFBWSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDM0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsSUFBWSxFQUFFLElBQWE7UUFDNUMsSUFBSSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDeEIsTUFBTSxVQUFVLEdBQW1CLEVBQUUsQ0FBQztZQUN0QyxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDOUMsSUFBSSxLQUFLLFlBQVkscUNBQWdCLEVBQUUsQ0FBQztvQkFDdEMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztxQkFDSSxDQUFDO29CQUNKLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQ3pCLENBQUM7WUFDSCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDdEMsQ0FBQzthQUNJLElBQUksSUFBSSxZQUFZLHFDQUFnQixFQUFFLENBQUM7WUFDMUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDOUMsQ0FBQzthQUNJLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDdEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDaEMsQ0FBQztJQUNILENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPO1FBQ1osT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0Y7QUFsREQsOENBa0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFtaXhCYXNlRWxlbWVudCB9IGZyb20gXCIuL2ZhbWl4X2Jhc2VfZWxlbWVudFwiO1xuXG4vKipcbiAqIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBleHBvcnQgRmFtaXggZWxlbWVudHMgdG8gSlNPTlxuICovXG5leHBvcnQgY2xhc3MgRmFtaXhKU09ORXhwb3J0ZXIge1xuXG4gIHByaXZhdGUgZWxlbWVudDogRmFtaXhCYXNlRWxlbWVudDsgLy8gQSBGYW1peCBlbGVtZW50IHRvIGV4cG9ydFxuICBwcml2YXRlIGJ1ZmZlckFycmF5OiBhbnkgPSB7fTsgLy8gQSBidWZmZXIgdG8gc3RvcmUgdGhlIHByb3BlcnRpZXMgb2YgdGhlIEZhbWl4IGVsZW1lbnRcbiAgcHJpdmF0ZSBGYW1peFByZWZpeCA9IFwiRmFtaXhUeXBlU2NyaXB0XCI7IC8vIFByZWZpeCBvZiB0aGUgRmFtaXggZWxlbWVudFxuXG4gIC8qKlxuICAgKiBDb25zdHJ1Y3RvciBvZiB0aGUgRmFtaXhKU09ORXhwb3J0ZXIgY2xhc3NcbiAgICogQHBhcmFtIHBhY2thZ2VDbGFzcyBOYW1lIG9mIGEgRmFtaXggY2xhc3NcbiAgICogQHBhcmFtIGVsZW1lbnQgQSBGYW1peCBlbGVtZW50IHRvIGV4cG9ydCwgdGhpcyBlbGVtZW50IGlzIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcyBuYW1lZCBcInBhY2thZ2VDbGFzc1wiXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwYWNrYWdlQ2xhc3M6IHN0cmluZywgZWxlbWVudDogRmFtaXhCYXNlRWxlbWVudCkge1xuICAgIHRoaXMuZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5idWZmZXJBcnJheVtcIkZNM1wiXSA9IHRoaXMuRmFtaXhQcmVmaXggKyBcIi5cIiArIHBhY2thZ2VDbGFzcztcbiAgICB0aGlzLmJ1ZmZlckFycmF5W1wiaWRcIl0gPSB0aGlzLmVsZW1lbnQuaWQ7XG4gIH1cblxuICAvKipcbiAgICogQWRkcyBhIHByb3BlcnR5IHRvIHRoZSBGYW1peCBlbGVtZW50XG4gICAqIEBwYXJhbSBuYW1lIE5hbWUgb2YgdGhlIHByb3BlcnR5XG4gICAqIEBwYXJhbSBwcm9wIEEgcHJvcGVydHlcbiAgICovXG4gIHB1YmxpYyBhZGRQcm9wZXJ0eShuYW1lOiBzdHJpbmcsIHByb3A6IHVua25vd24pOiB2b2lkIHtcbiAgICBpZiAocHJvcCBpbnN0YW5jZW9mIFNldCkge1xuICAgICAgY29uc3QgdmFsdWVBcnJheTogQXJyYXk8dW5rbm93bj4gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgQXJyYXkuZnJvbShwcm9wLnZhbHVlcygpKSkge1xuICAgICAgICBpZiAodmFsdWUgaW5zdGFuY2VvZiBGYW1peEJhc2VFbGVtZW50KSB7XG4gICAgICAgICAgdmFsdWVBcnJheS5wdXNoKHsgXCJyZWZcIjogdmFsdWUuaWQgfSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgdmFsdWVBcnJheS5wdXNoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5idWZmZXJBcnJheVtuYW1lXSA9IHZhbHVlQXJyYXk7XG4gICAgfVxuICAgIGVsc2UgaWYgKHByb3AgaW5zdGFuY2VvZiBGYW1peEJhc2VFbGVtZW50KSB7XG4gICAgICB0aGlzLmJ1ZmZlckFycmF5W25hbWVdID0geyBcInJlZlwiOiBwcm9wLmlkIH07XG4gICAgfVxuICAgIGVsc2UgaWYgKHByb3AgIT09IHVuZGVmaW5lZCAmJiAhKHByb3AgaW5zdGFuY2VvZiBTZXQpKSB7XG4gICAgICB0aGlzLmJ1ZmZlckFycmF5W25hbWVdID0gcHJvcDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIEZhbWl4IGVsZW1lbnRcbiAgICogQHJldHVybnMgQSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBGYW1peCBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgZ2V0SlNPTigpOiBzdHJpbmcge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeSh0aGlzLmJ1ZmZlckFycmF5KTtcbiAgfVxufVxuIl19
|
|
@@ -15,3 +15,4 @@ class FamixBaseElement {
|
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
exports.FamixBaseElement = FamixBaseElement;
|
|
18
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFtaXhfYmFzZV9lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9mYW1peC9zcmMvZmFtaXhfYmFzZV9lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUEwQztBQUUxQyx3REFBd0Q7QUFFeEQsTUFBc0IsZ0JBQWdCO0lBSXBDLHVDQUF1QztJQUN2QywyQkFBMkI7SUFDM0IsSUFBSTtJQUVKO0lBQ0EsQ0FBQztJQUlELDZEQUE2RDtJQUN0RCx1QkFBdUIsQ0FBQyxRQUEyQjtRQUN4RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDekcsQ0FBQztDQUNGO0FBakJELDRDQWlCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuLi8uLi8uLi9hbmFseXplXCI7XG5pbXBvcnQgeyBGYW1peEpTT05FeHBvcnRlciB9IGZyb20gXCIuL2ZhbWl4X0pTT05fZXhwb3J0ZXJcIjtcbi8vIGltcG9ydCB7IEZhbWl4UmVwb3NpdG9yeSB9IGZyb20gXCIuL2ZhbWl4X3JlcG9zaXRvcnlcIjtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEZhbWl4QmFzZUVsZW1lbnQge1xuXG4gIHB1YmxpYyBpZDogbnVtYmVyO1xuXG4gIC8vIGNvbnN0cnVjdG9yKHJlcG86IEZhbWl4UmVwb3NpdG9yeSkge1xuICAvLyAgIHJlcG8uYWRkRWxlbWVudCh0aGlzKTtcbiAgLy8gfVxuXG4gIGNvbnN0cnVjdG9yKCl7XG4gIH1cblxuICBwdWJsaWMgYWJzdHJhY3QgZ2V0SlNPTigpOiBzdHJpbmc7XG5cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuICBwdWJsaWMgYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoZXhwb3J0ZXI6IEZhbWl4SlNPTkV4cG9ydGVyKTogdm9pZCB7XG4gICAgbG9nZ2VyLmRlYnVnKFwiYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIgbm90IGltcGxlbWVudGVkIGZvciBcIiArIHRoaXMuY29uc3RydWN0b3IubmFtZSArIGAoJHtleHBvcnRlcn0pYCk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -10,7 +10,7 @@ class FamixRepository {
|
|
|
10
10
|
this.elements = new Set(); // All Famix elements
|
|
11
11
|
this.famixClasses = new Set(); // All Famix classes
|
|
12
12
|
this.famixInterfaces = new Set(); // All Famix interfaces
|
|
13
|
-
this.
|
|
13
|
+
this.famixModules = new Set(); // All Famix namespaces
|
|
14
14
|
this.famixMethods = new Set(); // All Famix methods
|
|
15
15
|
this.famixVariables = new Set(); // All Famix variables
|
|
16
16
|
this.famixFunctions = new Set(); // All Famix functions
|
|
@@ -120,15 +120,15 @@ class FamixRepository {
|
|
|
120
120
|
* @param name A namespace name
|
|
121
121
|
* @returns The Famix namespace corresponding to the name or undefined if it doesn't exist
|
|
122
122
|
*/
|
|
123
|
-
|
|
124
|
-
return Array.from(this.
|
|
123
|
+
_getFamixModule(fullyQualifiedName) {
|
|
124
|
+
return Array.from(this.famixModules.values()).find(ns => ns.getFullyQualifiedName() === fullyQualifiedName);
|
|
125
125
|
}
|
|
126
126
|
/**
|
|
127
127
|
* Gets all Famix namespaces
|
|
128
128
|
* @returns All Famix namespaces
|
|
129
129
|
*/
|
|
130
|
-
|
|
131
|
-
return new Set(Array.from(this.
|
|
130
|
+
_getFamixModules() {
|
|
131
|
+
return new Set(Array.from(this.famixModules.values()));
|
|
132
132
|
}
|
|
133
133
|
/**
|
|
134
134
|
* Gets a Famix file by name
|
|
@@ -187,8 +187,8 @@ class FamixRepository {
|
|
|
187
187
|
else if (element instanceof famix_1.Interface) {
|
|
188
188
|
this.famixInterfaces.add(element);
|
|
189
189
|
}
|
|
190
|
-
else if (element instanceof famix_1.
|
|
191
|
-
this.
|
|
190
|
+
else if (element instanceof famix_1.Module) {
|
|
191
|
+
this.famixModules.add(element);
|
|
192
192
|
}
|
|
193
193
|
else if (element instanceof famix_1.Variable) {
|
|
194
194
|
this.famixVariables.add(element);
|
|
@@ -196,7 +196,7 @@ class FamixRepository {
|
|
|
196
196
|
else if (element instanceof famix_1.Method) {
|
|
197
197
|
this.famixMethods.add(element);
|
|
198
198
|
}
|
|
199
|
-
else if (element instanceof famix_1.Function) {
|
|
199
|
+
else if (element instanceof famix_1.Function || element instanceof famix_1.ArrowFunction) {
|
|
200
200
|
this.famixFunctions.add(element);
|
|
201
201
|
}
|
|
202
202
|
else if (element instanceof famix_1.ScriptEntity || element instanceof famix_1.Module) {
|
|
@@ -220,3 +220,4 @@ class FamixRepository {
|
|
|
220
220
|
}
|
|
221
221
|
}
|
|
222
222
|
exports.FamixRepository = FamixRepository;
|
|
223
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFtaXhfcmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZmFtaXgvc3JjL2ZhbWl4X3JlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQTRLO0FBSTVLOztHQUVHO0FBQ0gsTUFBYSxlQUFlO0lBYTFCO1FBWlEsYUFBUSxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDLENBQUMscUJBQXFCO1FBQzdELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVMsQ0FBQyxDQUFDLG9CQUFvQjtRQUNyRCxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUFhLENBQUMsQ0FBQyx1QkFBdUI7UUFDL0QsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDLENBQUMsdUJBQXVCO1FBQ3pELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQyxDQUFDLG9CQUFvQjtRQUN0RCxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUFZLENBQUMsQ0FBQyxzQkFBc0I7UUFDNUQsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBdUIsQ0FBQyxDQUFDLHNCQUFzQjtRQUN2RSxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUMsQ0FBQyxrQkFBa0I7UUFDakUsY0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDNUIsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFDMUIsd0JBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQWtDLENBQUM7UUFHdEUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLHNCQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUUsOENBQThDO0lBQ3hGLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxtQkFBd0Q7UUFDcEYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO0lBQ2pELENBQUM7SUFFTSxzQkFBc0I7UUFDM0IsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDbEMsQ0FBQztJQUVNLGVB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TUFBTSxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN6RCxHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDdEMsQ0FBQztRQUNELEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUExT0QsMENBME9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFtaXhCYXNlRWxlbWVudCB9IGZyb20gXCIuL2ZhbWl4X2Jhc2VfZWxlbWVudFwiO1xuaW1wb3J0IHsgQ2xhc3MsIEludGVyZmFjZSwgVmFyaWFibGUsIE1ldGhvZCwgQXJyb3dGdW5jdGlvbiwgRnVuY3Rpb24gYXMgRmFtaXhGdW5jdGlvbkVudGl0eSwgVHlwZSwgTmFtZWRFbnRpdHksIFNjcmlwdEVudGl0eSwgTW9kdWxlLCBTb3VyY2VMYW5ndWFnZSB9IGZyb20gXCIuL21vZGVsL2ZhbWl4XCI7XG4vLyBpbXBvcnQgeyBDbGFzc0RlY2xhcmF0aW9uLCBDb25zdHJ1Y3RvckRlY2xhcmF0aW9uLCBGdW5jdGlvbkRlY2xhcmF0aW9uLCBJZGVudGlmaWVyLCBJbnRlcmZhY2VEZWNsYXJhdGlvbiwgTWV0aG9kRGVjbGFyYXRpb24sIE1ldGhvZFNpZ25hdHVyZSwgTW9kdWxlRGVjbGFyYXRpb24sIFByb3BlcnR5RGVjbGFyYXRpb24sIFByb3BlcnR5U2lnbmF0dXJlLCBTb3VyY2VGaWxlLCBUeXBlUGFyYW1ldGVyRGVjbGFyYXRpb24sIFZhcmlhYmxlRGVjbGFyYXRpb24sIFBhcmFtZXRlckRlY2xhcmF0aW9uLCBEZWNvcmF0b3IsIEdldEFjY2Vzc29yRGVjbGFyYXRpb24sIFNldEFjY2Vzc29yRGVjbGFyYXRpb24sIEltcG9ydFNwZWNpZmllciwgQ29tbWVudFJhbmdlLCBFbnVtRGVjbGFyYXRpb24sIEVudW1NZW1iZXIsIFR5cGVBbGlhc0RlY2xhcmF0aW9uLCBGdW5jdGlvbkV4cHJlc3Npb24sIEV4cHJlc3Npb25XaXRoVHlwZUFyZ3VtZW50cywgSW1wb3J0RGVjbGFyYXRpb24sIEltcG9ydEVxdWFsc0RlY2xhcmF0aW9uIH0gZnJvbSBcInRzLW1vcnBoXCI7XG5pbXBvcnQgKiBhcyBGYW1peCBmcm9tIFwiLi9tb2RlbC9mYW1peFwiO1xuaW1wb3J0IHsgVFNNb3JwaE9iamVjdFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vZmFtaXhfZnVuY3Rpb25zL0VudGl0eURpY3Rpb25hcnlcIjtcbi8qKlxuICogVGhpcyBjbGFzcyBpcyB1c2VkIHRvIHN0b3JlIGFsbCBGYW1peCBlbGVtZW50c1xuICovXG5leHBvcnQgY2xhc3MgRmFtaXhSZXBvc2l0b3J5IHtcbiAgcHJpdmF0ZSBlbGVtZW50cyA9IG5ldyBTZXQ8RmFtaXhCYXNlRWxlbWVudD4oKTsgLy8gQWxsIEZhbWl4IGVsZW1lbnRzXG4gIHByaXZhdGUgZmFtaXhDbGFzc2VzID0gbmV3IFNldDxDbGFzcz4oKTsgLy8gQWxsIEZhbWl4IGNsYXNzZXNcbiAgcHJpdmF0ZSBmYW1peEludGVyZmFjZXMgPSBuZXcgU2V0PEludGVyZmFjZT4oKTsgLy8gQWxsIEZhbWl4IGludGVyZmFjZXNcbiAgcHJpdmF0ZSBmYW1peE1vZHVsZXMgPSBuZXcgU2V0PE1vZHVsZT4oKTsgLy8gQWxsIEZhbWl4IG5hbWVzcGFjZXNcbiAgcHJpdmF0ZSBmYW1peE1ldGhvZHMgPSBuZXcgU2V0PE1ldGhvZD4oKTsgLy8gQWxsIEZhbWl4IG1ldGhvZHNcbiAgcHJpdmF0ZSBmYW1peFZhcmlhYmxlcyA9IG5ldyBTZXQ8VmFyaWFibGU+KCk7IC8vIEFsbCBGYW1peCB2YXJpYWJsZXNcbiAgcHJpdmF0ZSBmYW1peEZ1bmN0aW9ucyA9IG5ldyBTZXQ8RmFtaXhGdW5jdGlvbkVudGl0eT4oKTsgLy8gQWxsIEZhbWl4IGZ1bmN0aW9uc1xuICBwcml2YXRlIGZhbWl4RmlsZXMgPSBuZXcgU2V0PFNjcmlwdEVudGl0eSB8IE1vZHVsZT4oKTsgLy8gQWxsIEZhbWl4IGZpbGVzXG4gIHByaXZhdGUgaWRDb3VudGVyID0gMTsgLy8gSWQgY291bnRlclxuICBwcml2YXRlIGFic29sdXRlUGF0aDogc3RyaW5nID0gXCJcIjtcbiAgcHJpdmF0ZSBmbXhFbGVtZW50T2JqZWN0TWFwID0gbmV3IE1hcDxGYW1peC5FbnRpdHksVFNNb3JwaE9iamVjdFR5cGU+KCk7XG5cbiAgY29uc3RydWN0b3IoKSB7XG4gICAgdGhpcy5hZGRFbGVtZW50KG5ldyBTb3VyY2VMYW5ndWFnZSgpKTsgIC8vIGFkZCB0aGUgc291cmNlIGxhbmd1YWdlIGVudGl0eSAoVHlwZVNjcmlwdClcbiAgfVxuXG4gIHB1YmxpYyBzZXRGbXhFbGVtZW50T2JqZWN0TWFwKGZteEVsZW1lbnRPYmplY3RNYXA6IE1hcDxGYW1peC5FbnRpdHksVFNNb3JwaE9iamVjdFR5cGU+KXtcbiAgICB0aGlzLmZteEVsZW1lbnRPYmplY3RNYXAgPSBmbXhFbGVtZW50T2JqZWN0TWFwO1xuICB9XG5cbiAgcHVibGljIGdldEZteEVsZW1lbnRPYmplY3RNYXAoKXtcbiAgICByZXR1cm4gdGhpcy5mbXhFbGVtZW50T2JqZWN0TWFwO1xuICB9XG5cbiAgcHVibGljIGdldEFic29sdXRlUGF0aCgpIDogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5hYnNvbHV0ZVBhdGg7XG4gIH1cblxuICBwdWJsaWMgc2V0QWJzb2x1dGVQYXRoKCBwYXRoOiBzdHJpbmcgKXtcbiAgICB0aGlzLmFic29sdXRlUGF0aCA9IHBhdGg7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIEZhbWl4IGVudGl0eSBieSBpZFxuICAgKiBAcGFyYW0gaWQgQW4gaWQgb2YgYSBGYW1peCBlbnRpdHlcbiAgICogQHJldHVybnMgVGhlIEZhbWl4IGVudGl0eSBjb3JyZXNwb25kaW5nIHRvIHRoZSBpZCBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgKi9cbiAgcHVibGljIGdldEZhbWl4RW50aXR5QnlJZChpZDogbnVtYmVyKTogRmFtaXhCYXNlRWxlbWVudCB8IHVuZGVmaW5lZCB7XG4gICAgY29uc3QgZW50aXR5ID0gQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnRzLnZhbHVlcygpKS5maW5kKGUgPT4gZS5pZCA9PT0gaWQpO1xuICAgIHJldHVybiBlbnRpdHk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIEZhbWl4IGVudGl0eSBieSBmdWxseSBxdWFsaWZpZWQgbmFtZVxuICAgKiBAcGFyYW0gZnVsbHlRdWFsaWZpZWROYW1lIEEgZnVsbHkgcXVhbGlmaWVkIG5hbWVcbiAgICogQHJldHVybnMgVGhlIEZhbWl4IGVudGl0eSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgKi9cbiAgcHVibGljIGdldEZhbWl4RW50aXR5QnlGdWxseVF1YWxpZmllZE5hbWUoZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcpOiBGYW1peEJhc2VFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBhbGxFbnRpdGllcyA9IEFycmF5LmZyb20odGhpcy5lbGVtZW50cy52YWx1ZXMoKSkuZmlsdGVyKGUgPT4gZSBpbnN0YW5jZW9mIE5hbWVkRW50aXR5KSBhcyBBcnJheTxOYW1lZEVudGl0eT47XG4gICAgY29uc3QgZW50aXR5ID0gYWxsRW50aXRpZXMuZmluZChlID0+IGUuZ2V0RnVsbHlRdWFsaWZpZWROYW1lKCkgPT09IGZ1bGx5UXVhbGlmaWVkTmFtZSk7XG4gICAgcmV0dXJuIGVudGl0eTtcbiAgfVxuXG4gIGV4cG9ydChhcmcwOiB7IGZvcm1hdDogc3RyaW5nOyB9KSB7XG4gICAgaWYoYXJnMC5mb3JtYXQgPT09IFwianNvblwiKSB7XG4gICAgICByZXR1cm4gdGhpcy5nZXRKU09OKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGZvcm1hdFwiKTtcbiAgICB9XG4gIH1cblxuXG4gIC8vIE9ubHkgZm9yIHRlc3RzXG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIEZhbWl4IGVudGl0aWVzXG4gICAqIEByZXR1cm5zIEFsbCBGYW1peCBlbnRpdGllc1xuICAgKi9cbiAgcHVibGljIF9nZXRBbGxFbnRpdGllcygpOiBTZXQ8RmFtaXhCYXNlRWxlbWVudD4ge1xuICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20odGhpcy5lbGVtZW50cy52YWx1ZXMoKSkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIEZhbWl4IGVudGl0aWVzIG9mIGEgZ2l2ZW4gdHlwZVxuICAgKiBAcGFyYW0gdGhlVHlwZSBBIHR5cGUgb2YgRmFtaXggZW50aXR5XG4gICAqIEByZXR1cm5zIEFsbCBGYW1peCBlbnRpdGllcyBvZiB0aGUgZ2l2ZW4gdHlwZVxuICAgKi9cbiAgcHVibGljIF9nZXRBbGxFbnRpdGllc1dpdGhUeXBlKHRoZVR5cGU6IHN0cmluZyk6IFNldDxGYW1peEJhc2VFbGVtZW50PiB7XG4gICAgcmV0dXJuIG5ldyBTZXQoQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnRzLnZhbHVlcygpKS5maWx0ZXIoZSA9PiAoZSBhcyBGYW1peEJhc2VFbGVtZW50KS5jb25zdHJ1Y3Rvci5uYW1lID09PSB0aGVUeXBlKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIEZhbWl4IGNsYXNzIGJ5IG5hbWVcbiAgICogQHBhcmFtIG5hbWUgQSBjbGFzcyBuYW1lXG4gICAqIEByZXR1cm5zIFRoZSBGYW1peCBjbGFzcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAqL1xuICBwdWJsaWMgX2dldEZhbWl4Q2xhc3MoZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcpOiBDbGFzcyB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mYW1peENsYXNzZXMudmFsdWVzKCkpLmZpbmQobnMgPT4gbnMuZ2V0RnVsbHlRdWFsaWZpZWROYW1lKCkgPT09IGZ1bGx5UXVhbGlmaWVkTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIEZhbWl4IGludGVyZmFjZSBieSBuYW1lXG4gICAqIEBwYXJhbSBuYW1lIEFuIGludGVyZmFjZSBuYW1lXG4gICAqIEByZXR1cm5zIFRoZSBGYW1peCBpbnRlcmZhY2UgY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgKi9cbiAgcHVibGljIF9nZXRGYW1peEludGVyZmFjZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IEludGVyZmFjZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mYW1peEludGVyZmFjZXMudmFsdWVzKCkpLmZpbmQobnMgPT4gbnMuZ2V0RnVsbHlRdWFsaWZpZWROYW1lKCkgPT09IGZ1bGx5UXVhbGlmaWVkTmFtZSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIEZhbWl4IG1ldGhvZCBieSBuYW1lXG4gICAqIEBwYXJhbSBuYW1lIEEgbWV0aG9kIG5hbWVcbiAgICogQHJldHVybnMgVGhlIEZhbWl4IG1ldGhvZCBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAqL1xuICBwdWJsaWMgX2dldEZhbWl4TWV0aG9kKGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogTWV0aG9kIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZhbWl4TWV0aG9kcy52YWx1ZXMoKSkuZmluZChucyA9PiBucy5nZXRGdWxseVF1YWxpZmllZE5hbWUoKSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgRmFtaXggZnVuY3Rpb24gYnkgbmFtZVxuICAgKiBAcGFyYW0gbmFtZSBBIGZ1bmN0aW9uIG5hbWVcbiAgICogQHJldHVybnMgVGhlIEZhbWl4IGZ1bmN0aW9uIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5hbWUgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICovXG4gIHB1YmxpYyBfZ2V0RmFtaXhGdW5jdGlvbihmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IEZhbWl4RnVuY3Rpb25FbnRpdHkgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhGdW5jdGlvbnMudmFsdWVzKCkpLmZpbmQobnMgPT4gbnMuZ2V0RnVsbHlRdWFsaWZpZWROYW1lKCkgPT09IGZ1bGx5UXVhbGlmaWVkTmFtZSk7XG4gIH1cblxuXG4gIC8qKlxuICAgKiBHZXRzIGEgRmFtaXggdmFyaWFibGUgYnkgbmFtZVxuICAgKiBAcGFyYW0gbmFtZSBBIHZhcmlhYmxlIG5hbWVcbiAgICogQHJldHVybnMgVGhlIEZhbWl4IHZhcmlhYmxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5hbWUgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICovXG4gIHB1YmxpYyBfZ2V0RmFtaXhWYXJpYWJsZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IFZhcmlhYmxlIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZhbWl4VmFyaWFibGVzLnZhbHVlcygpKS5maW5kKHYgPT4gdi5nZXRGdWxseVF1YWxpZmllZE5hbWUoKSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGEgRmFtaXggbmFtZXNwYWNlIGJ5IG5hbWVcbiAgICogQHBhcmFtIG5hbWUgQSBuYW1lc3BhY2UgbmFtZVxuICAgKiBAcmV0dXJucyBUaGUgRmFtaXggbmFtZXNwYWNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5hbWUgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICovXG4gIHB1YmxpYyBfZ2V0RmFtaXhNb2R1bGUoZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcpOiBNb2R1bGUgfCB1bmRlZmluZWQge1xuICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhNb2R1bGVzLnZhbHVlcygpKS5maW5kKG5zID0+IG5zLmdldEZ1bGx5UXVhbGlmaWVkTmFtZSgpID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldHMgYWxsIEZhbWl4IG5hbWVzcGFjZXNcbiAgICogQHJldHVybnMgQWxsIEZhbWl4IG5hbWVzcGFjZXNcbiAgICovXG4gIHB1YmxpYyBfZ2V0RmFtaXhNb2R1bGVzKCk6IFNldDxNb2R1bGU+IHtcbiAgICByZXR1cm4gbmV3IFNldChBcnJheS5mcm9tKHRoaXMuZmFtaXhNb2R1bGVzLnZhbHVlcygpKSk7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIEZhbWl4IGZpbGUgYnkgbmFtZVxuICAgKiBAcGFyYW0gbmFtZSBBIGZpbGUgbmFtZVxuICAgKiBAcmV0dXJucyBUaGUgRmFtaXggZmlsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAqL1xuICBwdWJsaWMgX2dldEZhbWl4RmlsZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IFNjcmlwdEVudGl0eSB8IE1vZHVsZSB8IHVuZGVmaW5lZCB7XG4gICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mYW1peEZpbGVzLnZhbHVlcygpKS5maW5kKG5zID0+IG5zLmdldE5hbWUoKSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCBGYW1peCBmaWxlc1xuICAgKiBAcmV0dXJucyBBbGwgRmFtaXggZmlsZXNcbiAgICovXG4gIHB1YmxpYyBfZ2V0RmFtaXhGaWxlcygpOiBTZXQ8U2NyaXB0RW50aXR5IHwgTW9kdWxlPiB7XG4gICAgcmV0dXJuIG5ldyBTZXQoQXJyYXkuZnJvbSh0aGlzLmZhbWl4RmlsZXMudmFsdWVzKCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCBtZXRob2QgbmFtZXMgYXMgYSBzZXQgZnJvbSBhIGNsYXNzXG4gICAqIEBwYXJhbSBjbGFzc05hbWUgQSBjbGFzcyBuYW1lXG4gICAqIEByZXR1cm5zIFRoZSBzZXQgb2YgY2xhc3MgXCJjbGFzc05hbWVcIiBtZXRob2QgbmFtZXNcbiAgICovXG4gIHB1YmxpYyBfbWV0aG9kTmFtZXNBc1NldEZyb21DbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IFNldDxzdHJpbmc+IHtcbiAgICBjb25zdCB0aGVDbGFzcyA9IHRoaXMuX2dldEZhbWl4Q2xhc3MoY2xhc3NOYW1lKSBhcyBDbGFzcztcbiAgICByZXR1cm4gbmV3IFNldChBcnJheS5mcm9tKHRoZUNsYXNzLmdldE1ldGhvZHMoKSkubWFwKG0gPT4gbS5nZXROYW1lKCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIGFsbCBtZXRob2QgcGFyZW50cyBhcyBhIHNldCBmcm9tIGEgY2xhc3NcbiAgICogQHBhcmFtIGNsYXNzTmFtZSBBIGNsYXNzIG5hbWVcbiAgICogQHJldHVybnMgVGhlIHNldCBvZiBjbGFzcyBcImNsYXNzTmFtZVwiIG1ldGhvZCBwYXJlbnRzXG4gICAqL1xuICBwdWJsaWMgX21ldGhvZFBhcmVudHNBc1NldEZyb21DbGFzcyhjbGFzc05hbWU6IHN0cmluZyk6IFNldDxUeXBlPiB7XG4gICAgY29uc3QgdGhlQ2xhc3MgPSB0aGlzLl9nZXRGYW1peENsYXNzKGNsYXNzTmFtZSkgYXMgQ2xhc3M7XG4gICAgcmV0dXJuIG5ldyBTZXQoQXJyYXkuZnJvbSh0aGVDbGFzcy5nZXRNZXRob2RzKCkpLm1hcChtID0+IG0uZ2V0UGFyZW50RW50aXR5KCkpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXRzIHRoZSBtYXAgb2YgRmFtaXggZWxlbWVudCBpZHMgYW5kIHRoZWlyIEZhbWl4IGVsZW1lbnQgZnJvbSBhIEpTT04gbW9kZWxcbiAgICogQHBhcmFtIG1vZGVsIEEgSlNPTiBtb2RlbFxuICAgKiBAcmV0dXJucyBUaGUgbWFwIG9mIEZhbWl4IGVsZW1lbnQgaWRzIGFuZCB0aGVpciBGYW1peCBlbGVtZW50IGZyb20gdGhlIEpTT04gbW9kZWxcbiAgICovXG4gIHB1YmxpYyBfaW5pdE1hcEZyb21Nb2RlbChtb2RlbDogc3RyaW5nKTogTWFwPG51bWJlciwgdW5rbm93bj4ge1xuICAgIGNvbnN0IHBhcnNlZE1vZGVsOiBBcnJheTxGYW1peEJhc2VFbGVtZW50PiA9IEpTT04ucGFyc2UobW9kZWwpO1xuICAgIGNvbnN0IGlkVG9FbGVtZW50TWFwOiBNYXA8bnVtYmVyLCB1bmtub3duPiA9IG5ldyBNYXAoKTtcbiAgICBwYXJzZWRNb2RlbC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xuICAgICAgICBpZFRvRWxlbWVudE1hcC5zZXQoZWxlbWVudC5pZCwgZWxlbWVudCk7XG4gICAgfSk7XG4gICAgcmV0dXJuIGlkVG9FbGVtZW50TWFwO1xuICB9XG5cblxuICAvKipcbiAgICogQWRkcyBhIEZhbWl4IGVsZW1lbnQgdG8gdGhlIHJlcG9zaXRvcnlcbiAgICogQHBhcmFtIGVsZW1lbnQgQSBGYW1peCBlbGVtZW50XG4gICAqL1xuICBwdWJsaWMgYWRkRWxlbWVudChlbGVtZW50OiBGYW1peEJhc2VFbGVtZW50KTogdm9pZCB7XG4gICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBDbGFzcykge1xuICAgICAgdGhpcy5mYW1peENsYXNzZXMuYWRkKGVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEludGVyZmFjZSkge1xuICAgICAgdGhpcy5mYW1peEludGVyZmFjZXMuYWRkKGVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIE1vZHVsZSkge1xuICAgICAgdGhpcy5mYW1peE1vZHVsZXMuYWRkKGVsZW1lbnQpO1xuICAgIH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFZhcmlhYmxlKSB7XG4gICAgICB0aGlzLmZhbWl4VmFyaWFibGVzLmFkZChlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBNZXRob2QpIHtcbiAgICAgIHRoaXMuZmFtaXhNZXRob2RzLmFkZChlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBGYW1peEZ1bmN0aW9uRW50aXR5IHx8IGVsZW1lbnQgaW5zdGFuY2VvZiBBcnJvd0Z1bmN0aW9uKSB7XG4gICAgICB0aGlzLmZhbWl4RnVuY3Rpb25zLmFkZChlbGVtZW50KTtcbiAgICB9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBTY3JpcHRFbnRpdHkgfHwgZWxlbWVudCBpbnN0YW5jZW9mIE1vZHVsZSkge1xuICAgICAgdGhpcy5mYW1peEZpbGVzLmFkZChlbGVtZW50KTtcbiAgICB9XG4gICAgdGhpcy5lbGVtZW50cy5hZGQoZWxlbWVudCk7XG4gICAgZWxlbWVudC5pZCA9IHRoaXMuaWRDb3VudGVyO1xuICAgIHRoaXMuaWRDb3VudGVyKys7XG4gIH1cblxuICAvKipcbiAgICogR2V0cyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIHJlcG9zaXRvcnlcbiAgICogQHJldHVybnMgQSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXBvc2l0b3J5XG4gICAqL1xuICBwdWJsaWMgZ2V0SlNPTigpOiBzdHJpbmcge1xuICAgIGxldCByZXQgPSBcIltcIjtcbiAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnRzLnZhbHVlcygpKSkge1xuICAgICAgcmV0ID0gcmV0ICsgZWxlbWVudC5nZXRKU09OKCkgKyBcIixcIjtcbiAgICB9XG4gICAgcmV0ID0gcmV0LnN1YnN0cmluZygwLCByZXQubGVuZ3RoIC0gMSk7XG4gICAgcmV0dXJuIHJldCArIFwiXVwiO1xuICB9XG59XG4iXX0=
|
|
@@ -28,3 +28,4 @@ const famix_JSON_exporter_1 = require("./famix_JSON_exporter");
|
|
|
28
28
|
const famix_repository_1 = require("./famix_repository");
|
|
29
29
|
const model = { Famix };
|
|
30
30
|
module.exports = { FamixBaseElement: famix_base_element_1.FamixBaseElement, FamixJSONExporter: famix_JSON_exporter_1.FamixJSONExporter, FamixRepository: famix_repository_1.FamixRepository, model };
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2ZhbWl4L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBdUM7QUFDdkMsNkRBQXdEO0FBQ3hELCtEQUEwRDtBQUMxRCx5REFBcUQ7QUFFckQsTUFBTSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUV4QixpQkFBUyxFQUFFLGdCQUFnQixFQUFoQixxQ0FBZ0IsRUFBRSxpQkFBaUIsRUFBakIsdUNBQWlCLEVBQUUsZUFBZSxFQUFmLGtDQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBGYW1peCBmcm9tIFwiLi9tb2RlbC9mYW1peFwiO1xuaW1wb3J0IHsgRmFtaXhCYXNlRWxlbWVudCB9IGZyb20gXCIuL2ZhbWl4X2Jhc2VfZWxlbWVudFwiO1xuaW1wb3J0IHsgRmFtaXhKU09ORXhwb3J0ZXIgfSBmcm9tIFwiLi9mYW1peF9KU09OX2V4cG9ydGVyXCI7XG5pbXBvcnQgeyBGYW1peFJlcG9zaXRvcnkgfSBmcm9tIFwiLi9mYW1peF9yZXBvc2l0b3J5XCI7XG5cbmNvbnN0IG1vZGVsID0geyBGYW1peCB9O1xuXG5leHBvcnQgPSB7IEZhbWl4QmFzZUVsZW1lbnQsIEZhbWl4SlNPTkV4cG9ydGVyLCBGYW1peFJlcG9zaXRvcnksIG1vZGVsIH07XG4iXX0=
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Access = void 0;
|
|
4
4
|
const famix_JSON_exporter_1 = require("../../famix_JSON_exporter");
|
|
5
|
-
const
|
|
6
|
-
class Access extends
|
|
5
|
+
const entity_1 = require("./entity");
|
|
6
|
+
class Access extends entity_1.Entity {
|
|
7
7
|
getAccessor() {
|
|
8
8
|
return this.accessor;
|
|
9
9
|
}
|
|
@@ -37,3 +37,4 @@ class Access extends association_1.Association {
|
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
39
|
exports.Access = Access;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9mYW1peC9zcmMvbW9kZWwvZmFtaXgvYWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1FQUE4RDtBQUc5RCxxQ0FBa0M7QUFFbEMsTUFBYSxNQUFPLFNBQVEsZUFBTTtJQUl6QixXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN2QixDQUFDO0lBRU0sV0FBVyxDQUFDLFFBQXlCO1FBQzFDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDM0IsQ0FBQztJQUlNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFTSxXQUFXLENBQUMsUUFBMEI7UUFDM0MsSUFBSSxDQUFDLFFBQVEsR0FBRyxRQUFRLENBQUM7UUFDekIsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFJTSxVQUFVO1FBQ2YsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFTSxVQUFVLENBQUMsT0FBZ0I7UUFDaEMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7SUFDekIsQ0FBQztJQUdNLE9BQU87UUFDWixNQUFNLElBQUksR0FBc0IsSUFBSSx1Q0FBaUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxRQUEyQjtRQUN4RCxLQUFLLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDckQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDckQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNGO0FBL0NELHdCQStDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhbWl4SlNPTkV4cG9ydGVyIH0gZnJvbSBcIi4uLy4uL2ZhbWl4X0pTT05fZXhwb3J0ZXJcIjtcbmltcG9ydCB7IFN0cnVjdHVyYWxFbnRpdHkgfSBmcm9tIFwiLi9zdHJ1Y3R1cmFsX2VudGl0eVwiO1xuaW1wb3J0IHsgQ29udGFpbmVyRW50aXR5IH0gZnJvbSBcIi4vY29udGFpbmVyX2VudGl0eVwiO1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSBcIi4vZW50aXR5XCI7XG5cbmV4cG9ydCBjbGFzcyBBY2Nlc3MgZXh0ZW5kcyBFbnRpdHkge1xuXG4gIHByaXZhdGUgYWNjZXNzb3I6IENvbnRhaW5lckVudGl0eTtcblxuICBwdWJsaWMgZ2V0QWNjZXNzb3IoKTogQ29udGFpbmVyRW50aXR5IHtcbiAgICByZXR1cm4gdGhpcy5hY2Nlc3NvcjtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBY2Nlc3NvcihhY2Nlc3NvcjogQ29udGFpbmVyRW50aXR5KTogdm9pZCB7XG4gICAgdGhpcy5hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgIGFjY2Vzc29yLmFkZEFjY2Vzcyh0aGlzKTtcbiAgfVxuXG4gIHByaXZhdGUgdmFyaWFibGU6IFN0cnVjdHVyYWxFbnRpdHk7XG5cbiAgcHVibGljIGdldFZhcmlhYmxlKCk6IFN0cnVjdHVyYWxFbnRpdHkge1xuICAgIHJldHVybiB0aGlzLnZhcmlhYmxlO1xuICB9XG5cbiAgcHVibGljIHNldFZhcmlhYmxlKHZhcmlhYmxlOiBTdHJ1Y3R1cmFsRW50aXR5KTogdm9pZCB7XG4gICAgdGhpcy52YXJpYWJsZSA9IHZhcmlhYmxlO1xuICAgIHZhcmlhYmxlLmFkZEluY29taW5nQWNjZXNzKHRoaXMpO1xuICB9XG5cbiAgcHJpdmF0ZSBpc1dyaXRlOiBib29sZWFuO1xuXG4gIHB1YmxpYyBnZXRJc1dyaXRlKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiB0aGlzLmlzV3JpdGU7XG4gIH1cblxuICBwdWJsaWMgc2V0SXNXcml0ZShpc1dyaXRlOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5pc1dyaXRlID0gaXNXcml0ZTtcbiAgfVxuXG5cbiAgcHVibGljIGdldEpTT04oKTogc3RyaW5nIHtcbiAgICBjb25zdCBqc29uOiBGYW1peEpTT05FeHBvcnRlciA9IG5ldyBGYW1peEpTT05FeHBvcnRlcihcIkFjY2Vzc1wiLCB0aGlzKTtcbiAgICB0aGlzLmFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGpzb24pO1xuICAgIHJldHVybiBqc29uLmdldEpTT04oKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRQcm9wZXJ0aWVzVG9FeHBvcnRlcihleHBvcnRlcjogRmFtaXhKU09ORXhwb3J0ZXIpOiB2b2lkIHtcbiAgICBzdXBlci5hZGRQcm9wZXJ0aWVzVG9FeHBvcnRlcihleHBvcnRlcik7XG4gICAgZXhwb3J0ZXIuYWRkUHJvcGVydHkoXCJhY2Nlc3NvclwiLCB0aGlzLmdldEFjY2Vzc29yKCkpO1xuICAgIGV4cG9ydGVyLmFkZFByb3BlcnR5KFwidmFyaWFibGVcIiwgdGhpcy5nZXRWYXJpYWJsZSgpKTtcbiAgICBleHBvcnRlci5hZGRQcm9wZXJ0eShcImlzV3JpdGVcIiwgdGhpcy5nZXRJc1dyaXRlKCkpO1xuICB9XG59XG4iXX0=
|
|
@@ -14,3 +14,4 @@ class Accessor extends method_1.Method {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
exports.Accessor = Accessor;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ZhbWl4L3NyYy9tb2RlbC9mYW1peC9hY2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtRUFBOEQ7QUFDOUQscUNBQWtDO0FBRWxDLE1BQWEsUUFBUyxTQUFRLGVBQU07SUFFM0IsT0FBTztRQUNaLE1BQU0sSUFBSSxHQUFzQixJQUFJLHVDQUFpQixDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUN4RSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFFBQTJCO1FBQ3hELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0Y7QUFYRCw0QkFXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhbWl4SlNPTkV4cG9ydGVyIH0gZnJvbSBcIi4uLy4uL2ZhbWl4X0pTT05fZXhwb3J0ZXJcIjtcbmltcG9ydCB7IE1ldGhvZCB9IGZyb20gXCIuL21ldGhvZFwiO1xuXG5leHBvcnQgY2xhc3MgQWNjZXNzb3IgZXh0ZW5kcyBNZXRob2Qge1xuICBcbiAgcHVibGljIGdldEpTT04oKTogc3RyaW5nIHtcbiAgICBjb25zdCBqc29uOiBGYW1peEpTT05FeHBvcnRlciA9IG5ldyBGYW1peEpTT05FeHBvcnRlcihcIkFjY2Vzc29yXCIsIHRoaXMpO1xuICAgIHRoaXMuYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoanNvbik7XG4gICAgcmV0dXJuIGpzb24uZ2V0SlNPTigpO1xuICB9XG5cbiAgcHVibGljIGFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGV4cG9ydGVyOiBGYW1peEpTT05FeHBvcnRlcik6IHZvaWQge1xuICAgIHN1cGVyLmFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGV4cG9ydGVyKTtcbiAgfVxufVxuIl19
|
|
@@ -25,8 +25,9 @@ class Alias extends named_entity_1.NamedEntity {
|
|
|
25
25
|
}
|
|
26
26
|
addPropertiesToExporter(exporter) {
|
|
27
27
|
super.addPropertiesToExporter(exporter);
|
|
28
|
-
exporter.addProperty("
|
|
28
|
+
exporter.addProperty("parentType", this.getParentEntity());
|
|
29
29
|
exporter.addProperty("aliasedEntity", this.getAliasedEntity());
|
|
30
30
|
}
|
|
31
31
|
}
|
|
32
32
|
exports.Alias = Alias;
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ZhbWl4L3NyYy9tb2RlbC9mYW1peC9hbGlhcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtRUFBOEQ7QUFDOUQsaURBQTZDO0FBRzdDLE1BQWEsS0FBTSxTQUFRLDBCQUFXO0lBSTdCLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFTSxlQUFlLENBQUMsWUFBeUI7UUFDOUMsSUFBSSxDQUFDLFlBQVksR0FBRyxZQUFZLENBQUM7UUFDakMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM5QixDQUFDO0lBSU0sZ0JBQWdCO1FBQ3JCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM1QixDQUFDO0lBRU0sZ0JBQWdCLENBQUMsYUFBbUI7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNuQyxDQUFDO0lBR00sT0FBTztRQUNaLE1BQU0sSUFBSSxHQUFzQixJQUFJLHVDQUFpQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFFBQTJCO1FBQ3hELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUMsQ0FBQztRQUMzRCxRQUFRLENBQUMsV0FBVyxDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFDO0lBQ2pFLENBQUM7Q0FDRjtBQXBDRCxzQkFvQ0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYW1peEpTT05FeHBvcnRlciB9IGZyb20gXCIuLi8uLi9mYW1peF9KU09OX2V4cG9ydGVyXCI7XG5pbXBvcnQgeyBOYW1lZEVudGl0eSB9IGZyb20gXCIuL25hbWVkX2VudGl0eVwiO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gXCIuL3R5cGVcIjtcblxuZXhwb3J0IGNsYXNzIEFsaWFzIGV4dGVuZHMgTmFtZWRFbnRpdHkge1xuXG4gIHByaXZhdGUgcGFyZW50RW50aXR5OiBOYW1lZEVudGl0eTtcblxuICBwdWJsaWMgZ2V0UGFyZW50RW50aXR5KCk6IE5hbWVkRW50aXR5IHtcbiAgICByZXR1cm4gdGhpcy5wYXJlbnRFbnRpdHk7XG4gIH1cblxuICBwdWJsaWMgc2V0UGFyZW50RW50aXR5KHBhcmVudEVudGl0eTogTmFtZWRFbnRpdHkpOiB2b2lkIHtcbiAgICB0aGlzLnBhcmVudEVudGl0eSA9IHBhcmVudEVudGl0eTtcbiAgICBwYXJlbnRFbnRpdHkuYWRkQWxpYXModGhpcyk7XG4gIH1cblxuICBwcml2YXRlIGFsaWFzZWRFbnRpdHk6IFR5cGU7XG5cbiAgcHVibGljIGdldEFsaWFzZWRFbnRpdHkoKTogVHlwZSB7XG4gICAgcmV0dXJuIHRoaXMuYWxpYXNlZEVudGl0eTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRBbGlhc2VkRW50aXR5KGFsaWFzZWRFbnRpdHk6IFR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLmFsaWFzZWRFbnRpdHkgPSBhbGlhc2VkRW50aXR5O1xuICAgIGFsaWFzZWRFbnRpdHkuYWRkVHlwZUFsaWFzKHRoaXMpO1xuICB9XG5cblxuICBwdWJsaWMgZ2V0SlNPTigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGpzb246IEZhbWl4SlNPTkV4cG9ydGVyID0gbmV3IEZhbWl4SlNPTkV4cG9ydGVyKFwiQWxpYXNcIiwgdGhpcyk7XG4gICAgdGhpcy5hZGRQcm9wZXJ0aWVzVG9FeHBvcnRlcihqc29uKTtcbiAgICByZXR1cm4ganNvbi5nZXRKU09OKCk7XG4gIH1cblxuICBwdWJsaWMgYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoZXhwb3J0ZXI6IEZhbWl4SlNPTkV4cG9ydGVyKTogdm9pZCB7XG4gICAgc3VwZXIuYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoZXhwb3J0ZXIpO1xuICAgIGV4cG9ydGVyLmFkZFByb3BlcnR5KFwicGFyZW50VHlwZVwiLCB0aGlzLmdldFBhcmVudEVudGl0eSgpKTtcbiAgICBleHBvcnRlci5hZGRQcm9wZXJ0eShcImFsaWFzZWRFbnRpdHlcIiwgdGhpcy5nZXRBbGlhc2VkRW50aXR5KCkpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ArrowFunction = void 0;
|
|
4
|
+
const famix_JSON_exporter_1 = require("../../famix_JSON_exporter");
|
|
5
|
+
const behavioral_entity_1 = require("./behavioral_entity");
|
|
6
|
+
class ArrowFunction extends behavioral_entity_1.BehavioralEntity {
|
|
7
|
+
getJSON() {
|
|
8
|
+
const json = new famix_JSON_exporter_1.FamixJSONExporter("ArrowFunction", this);
|
|
9
|
+
this.addPropertiesToExporter(json);
|
|
10
|
+
return json.getJSON();
|
|
11
|
+
}
|
|
12
|
+
addPropertiesToExporter(exporter) {
|
|
13
|
+
super.addPropertiesToExporter(exporter);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.ArrowFunction = ArrowFunction;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyb3dGdW5jdGlvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZmFtaXgvc3JjL21vZGVsL2ZhbWl4L2Fycm93RnVuY3Rpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUVBQThEO0FBQzlELDJEQUF1RDtBQUV2RCxNQUFhLGFBQWMsU0FBUSxvQ0FBZ0I7SUFFMUMsT0FBTztRQUNaLE1BQU0sSUFBSSxHQUFzQixJQUFJLHVDQUFpQixDQUFDLGVBQWUsRUFBRSxJQUFJLENBQUMsQ0FBQztRQUM3RSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDeEIsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFFBQTJCO1FBQ3hELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUMxQyxDQUFDO0NBQ0Y7QUFYRCxzQ0FXQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhbWl4SlNPTkV4cG9ydGVyIH0gZnJvbSBcIi4uLy4uL2ZhbWl4X0pTT05fZXhwb3J0ZXJcIjtcbmltcG9ydCB7IEJlaGF2aW9yYWxFbnRpdHkgfSBmcm9tIFwiLi9iZWhhdmlvcmFsX2VudGl0eVwiO1xuXG5leHBvcnQgY2xhc3MgQXJyb3dGdW5jdGlvbiBleHRlbmRzIEJlaGF2aW9yYWxFbnRpdHkge1xuXG4gIHB1YmxpYyBnZXRKU09OKCk6IHN0cmluZyB7XG4gICAgY29uc3QganNvbjogRmFtaXhKU09ORXhwb3J0ZXIgPSBuZXcgRmFtaXhKU09ORXhwb3J0ZXIoXCJBcnJvd0Z1bmN0aW9uXCIsIHRoaXMpO1xuICAgIHRoaXMuYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoanNvbik7XG4gICAgcmV0dXJuIGpzb24uZ2V0SlNPTigpO1xuICB9XG5cbiAgcHVibGljIGFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGV4cG9ydGVyOiBGYW1peEpTT05FeHBvcnRlcik6IHZvaWQge1xuICAgIHN1cGVyLmFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGV4cG9ydGVyKTtcbiAgfVxufVxuIl19
|