ts2famix 2.0.0 → 2.0.1
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/LICENSE +1 -0
- package/README.md +29 -60
- package/dist/analyze.js +1 -1
- package/dist/analyze_functions/process_functions.js +49 -43
- package/dist/famix_functions/EntityDictionary.js +309 -182
- package/dist/famix_functions/helpers_creation.js +36 -5
- package/dist/fqn.js +76 -114
- package/dist/lib/famix/famix_JSON_exporter.js +55 -0
- package/dist/lib/famix/famix_base_element.js +18 -0
- package/dist/lib/famix/famix_repository.js +224 -0
- package/dist/lib/famix/{src/index.js → index.js} +1 -1
- package/dist/lib/famix/model/famix/access.js +40 -0
- package/dist/lib/famix/model/famix/accessor.js +17 -0
- package/dist/lib/famix/model/famix/alias.js +33 -0
- package/dist/lib/famix/model/famix/arrow_function.js +17 -0
- package/dist/lib/famix/model/famix/behavioral_entity.js +79 -0
- package/dist/lib/famix/model/famix/class.js +71 -0
- package/dist/lib/famix/model/famix/comment.js +39 -0
- package/dist/lib/famix/model/famix/concretisation.js +31 -0
- package/dist/lib/famix/model/famix/container_entity.js +126 -0
- package/dist/lib/famix/model/famix/decorator.js +32 -0
- package/dist/lib/famix/model/famix/entity.js +17 -0
- package/dist/lib/famix/model/famix/enum.js +31 -0
- package/dist/lib/famix/model/famix/enum_value.js +25 -0
- package/dist/lib/famix/model/famix/function.js +17 -0
- package/dist/lib/famix/model/famix/import_clause.js +41 -0
- package/dist/lib/famix/{src/model → model}/famix/index.js +6 -10
- package/dist/lib/famix/model/famix/indexed_file_anchor.js +38 -0
- package/dist/lib/famix/model/famix/inheritance.js +33 -0
- package/dist/lib/famix/model/famix/interface.js +64 -0
- package/dist/lib/famix/model/famix/invocation.js +54 -0
- package/dist/lib/famix/model/famix/method.js +67 -0
- package/dist/lib/famix/model/famix/module.js +60 -0
- package/dist/lib/famix/model/famix/named_entity.js +78 -0
- package/dist/lib/famix/model/famix/parameter.js +25 -0
- package/dist/lib/famix/model/famix/parameter_concretisation.js +44 -0
- package/dist/lib/famix/model/famix/parameter_type.js +45 -0
- package/dist/lib/famix/model/famix/parametric_arrow_function.js +31 -0
- package/dist/lib/famix/model/famix/parametric_class.js +44 -0
- package/dist/lib/famix/model/famix/parametric_function.js +31 -0
- package/dist/lib/famix/model/famix/parametric_interface.js +44 -0
- package/dist/lib/famix/model/famix/parametric_method.js +31 -0
- package/dist/lib/famix/model/famix/primitive_type.js +17 -0
- package/dist/lib/famix/model/famix/property.js +73 -0
- package/dist/lib/famix/model/famix/reference.js +33 -0
- package/dist/lib/famix/model/famix/scoping_entity.js +36 -0
- package/dist/lib/famix/model/famix/script_entity.js +29 -0
- package/dist/lib/famix/model/famix/source_anchor.js +27 -0
- package/dist/lib/famix/model/famix/source_language.js +35 -0
- package/dist/lib/famix/model/famix/sourced_entity.js +60 -0
- package/dist/lib/famix/model/famix/structural_entity.js +39 -0
- package/dist/lib/famix/model/famix/type.js +73 -0
- package/dist/lib/famix/model/famix/variable.js +24 -0
- package/dist/lib/ts-complex/cyclomatic-service.js +2 -2
- package/dist/refactorer/refactor-getter-setter.js +142 -0
- package/dist/ts2famix-cli-wrapper.js +29 -3
- package/dist/ts2famix-cli.js +1 -1
- package/doc-uml/famix-typescript-model.puml +390 -341
- package/doc-uml/famix-typescript-model.svg +1 -1
- package/package.json +8 -7
- package/src/analyze.ts +2 -2
- package/src/analyze_functions/process_functions.ts +49 -44
- package/src/famix_functions/EntityDictionary.ts +345 -216
- package/src/famix_functions/helpers_creation.ts +36 -4
- package/src/fqn.ts +76 -125
- package/src/lib/famix/famix_JSON_exporter.ts +56 -0
- package/src/lib/famix/famix_base_element.ts +22 -0
- package/src/lib/famix/famix_repository.ts +243 -0
- package/src/lib/famix/model/famix/access.ts +50 -0
- package/src/lib/famix/model/famix/alias.ts +39 -0
- package/src/lib/famix/model/famix/behavioral_entity.ts +97 -0
- package/src/lib/famix/model/famix/class.ts +85 -0
- package/src/lib/famix/model/famix/comment.ts +47 -0
- package/src/lib/famix/model/famix/concretisation.ts +40 -0
- package/src/lib/famix/model/famix/container_entity.ts +160 -0
- package/src/lib/famix/model/famix/decorator.ts +37 -0
- package/src/lib/famix/model/famix/enum.ts +30 -0
- package/src/lib/famix/model/famix/enum_value.ts +28 -0
- package/src/lib/famix/model/famix/import_clause.ts +51 -0
- package/src/lib/famix/{src/model → model}/famix/index.ts +2 -4
- package/src/lib/famix/model/famix/indexed_file_anchor.ts +46 -0
- package/src/lib/famix/model/famix/inheritance.ts +40 -0
- package/src/lib/famix/model/famix/interface.ts +75 -0
- package/src/lib/famix/model/famix/invocation.ts +65 -0
- package/src/lib/famix/model/famix/method.ts +89 -0
- package/src/lib/famix/model/famix/module.ts +71 -0
- package/src/lib/famix/model/famix/named_entity.ts +95 -0
- package/src/lib/famix/{src/model → model}/famix/parameter.ts +11 -12
- package/src/lib/famix/model/famix/parameter_concretisation.ts +51 -0
- package/src/lib/famix/model/famix/parameter_type.ts +58 -0
- package/src/lib/famix/model/famix/parametric_arrow_function.ts +32 -0
- package/src/lib/famix/model/famix/parametric_class.ts +49 -0
- package/src/lib/famix/model/famix/parametric_function.ts +32 -0
- package/src/lib/famix/model/famix/parametric_interface.ts +49 -0
- package/src/lib/famix/model/famix/parametric_method.ts +32 -0
- package/src/lib/famix/model/famix/primitive_type.ts +15 -0
- package/src/lib/famix/model/famix/property.ts +94 -0
- package/src/lib/famix/model/famix/reference.ts +40 -0
- package/src/lib/famix/model/famix/scoping_entity.ts +35 -0
- package/src/lib/famix/model/famix/script_entity.ts +34 -0
- package/src/lib/famix/model/famix/source_anchor.ts +30 -0
- package/src/lib/famix/model/famix/source_language.ts +35 -0
- package/src/lib/famix/model/famix/sourced_entity.ts +70 -0
- package/src/lib/famix/model/famix/structural_entity.ts +43 -0
- package/src/lib/famix/model/famix/type.ts +87 -0
- package/src/lib/famix/model/famix/variable.ts +27 -0
- package/src/lib/famix/package.json +1 -1
- package/src/lib/ts-complex/cyclomatic-service.ts +10 -10
- package/src/refactorer/refactor-getter-setter.ts +140 -0
- package/src/ts2famix-cli-wrapper.ts +6 -2
- package/src/ts2famix-cli.ts +1 -1
- package/tsconfig.check-tests.json +14 -0
- package/tsconfig.json +70 -68
- package/dist/famix2puml.js +0 -126
- package/dist/lib/famix/src/famix_JSON_exporter.js +0 -55
- package/dist/lib/famix/src/famix_base_element.js +0 -18
- package/dist/lib/famix/src/famix_repository.js +0 -223
- package/dist/lib/famix/src/model/famix/access.js +0 -40
- package/dist/lib/famix/src/model/famix/accessor.js +0 -17
- package/dist/lib/famix/src/model/famix/alias.js +0 -33
- package/dist/lib/famix/src/model/famix/arrowFunction.js +0 -17
- package/dist/lib/famix/src/model/famix/behavioral_entity.js +0 -79
- package/dist/lib/famix/src/model/famix/class.js +0 -71
- package/dist/lib/famix/src/model/famix/comment.js +0 -39
- package/dist/lib/famix/src/model/famix/concretisation.js +0 -31
- package/dist/lib/famix/src/model/famix/container_entity.js +0 -126
- package/dist/lib/famix/src/model/famix/decorator.js +0 -32
- package/dist/lib/famix/src/model/famix/entity.js +0 -17
- package/dist/lib/famix/src/model/famix/enum.js +0 -31
- package/dist/lib/famix/src/model/famix/enum_value.js +0 -25
- package/dist/lib/famix/src/model/famix/function.js +0 -17
- package/dist/lib/famix/src/model/famix/implicit_variable.js +0 -17
- package/dist/lib/famix/src/model/famix/import_clause.js +0 -41
- package/dist/lib/famix/src/model/famix/indexed_file_anchor.js +0 -52
- package/dist/lib/famix/src/model/famix/inheritance.js +0 -33
- package/dist/lib/famix/src/model/famix/interface.js +0 -64
- package/dist/lib/famix/src/model/famix/invocation.js +0 -54
- package/dist/lib/famix/src/model/famix/method.js +0 -67
- package/dist/lib/famix/src/model/famix/module.js +0 -84
- package/dist/lib/famix/src/model/famix/named_entity.js +0 -78
- package/dist/lib/famix/src/model/famix/parameter.js +0 -25
- package/dist/lib/famix/src/model/famix/parameterConcretisation.js +0 -44
- package/dist/lib/famix/src/model/famix/parameter_type.js +0 -45
- package/dist/lib/famix/src/model/famix/parametric_arrow_function.js +0 -31
- package/dist/lib/famix/src/model/famix/parametric_class.js +0 -44
- package/dist/lib/famix/src/model/famix/parametric_function.js +0 -31
- package/dist/lib/famix/src/model/famix/parametric_interface.js +0 -44
- package/dist/lib/famix/src/model/famix/parametric_method.js +0 -31
- package/dist/lib/famix/src/model/famix/primitive_type.js +0 -17
- package/dist/lib/famix/src/model/famix/property.js +0 -126
- package/dist/lib/famix/src/model/famix/reference.js +0 -33
- package/dist/lib/famix/src/model/famix/scoping_entity.js +0 -37
- package/dist/lib/famix/src/model/famix/script_entity.js +0 -29
- package/dist/lib/famix/src/model/famix/source_anchor.js +0 -27
- package/dist/lib/famix/src/model/famix/source_language.js +0 -35
- package/dist/lib/famix/src/model/famix/sourced_entity.js +0 -60
- package/dist/lib/famix/src/model/famix/structural_entity.js +0 -39
- package/dist/lib/famix/src/model/famix/text_anchor.js +0 -38
- package/dist/lib/famix/src/model/famix/type.js +0 -73
- package/dist/lib/famix/src/model/famix/variable.js +0 -24
- package/jest.config-old.ts +0 -199
- package/src/famix2puml.ts +0 -119
- package/src/lib/famix/package-lock.json +0 -301
- package/src/lib/famix/readme.md +0 -5
- package/src/lib/famix/src/famix_JSON_exporter.ts +0 -56
- package/src/lib/famix/src/famix_base_element.ts +0 -22
- package/src/lib/famix/src/famix_repository.ts +0 -243
- package/src/lib/famix/src/model/famix/access.ts +0 -53
- package/src/lib/famix/src/model/famix/alias.ts +0 -41
- package/src/lib/famix/src/model/famix/behavioral_entity.ts +0 -100
- package/src/lib/famix/src/model/famix/class.ts +0 -86
- package/src/lib/famix/src/model/famix/comment.ts +0 -50
- package/src/lib/famix/src/model/famix/concretisation.ts +0 -42
- package/src/lib/famix/src/model/famix/container_entity.ts +0 -165
- package/src/lib/famix/src/model/famix/decorator.ts +0 -39
- package/src/lib/famix/src/model/famix/enum.ts +0 -31
- package/src/lib/famix/src/model/famix/enum_value.ts +0 -29
- package/src/lib/famix/src/model/famix/implicit_variable.ts +0 -15
- package/src/lib/famix/src/model/famix/import_clause.ts +0 -54
- package/src/lib/famix/src/model/famix/indexed_file_anchor.ts +0 -71
- package/src/lib/famix/src/model/famix/inheritance.ts +0 -41
- package/src/lib/famix/src/model/famix/interface.ts +0 -75
- package/src/lib/famix/src/model/famix/invocation.ts +0 -68
- package/src/lib/famix/src/model/famix/method.ts +0 -96
- package/src/lib/famix/src/model/famix/module.ts +0 -97
- package/src/lib/famix/src/model/famix/named_entity.ts +0 -98
- package/src/lib/famix/src/model/famix/parameterConcretisation.ts +0 -54
- package/src/lib/famix/src/model/famix/parameter_type.ts +0 -60
- package/src/lib/famix/src/model/famix/parametric_arrow_function.ts +0 -32
- package/src/lib/famix/src/model/famix/parametric_class.ts +0 -49
- package/src/lib/famix/src/model/famix/parametric_function.ts +0 -32
- package/src/lib/famix/src/model/famix/parametric_interface.ts +0 -49
- package/src/lib/famix/src/model/famix/parametric_method.ts +0 -32
- package/src/lib/famix/src/model/famix/primitive_type.ts +0 -15
- package/src/lib/famix/src/model/famix/property.ts +0 -152
- package/src/lib/famix/src/model/famix/reference.ts +0 -42
- package/src/lib/famix/src/model/famix/scoping_entity.ts +0 -36
- package/src/lib/famix/src/model/famix/script_entity.ts +0 -36
- package/src/lib/famix/src/model/famix/source_anchor.ts +0 -31
- package/src/lib/famix/src/model/famix/source_language.ts +0 -36
- package/src/lib/famix/src/model/famix/sourced_entity.ts +0 -73
- package/src/lib/famix/src/model/famix/structural_entity.ts +0 -44
- package/src/lib/famix/src/model/famix/text_anchor.ts +0 -49
- package/src/lib/famix/src/model/famix/type.ts +0 -89
- package/src/lib/famix/src/model/famix/variable.ts +0 -28
- package/src/lib/famix/tsconfig.json +0 -27
- package/src/lib/famix/tslint.json +0 -15
- /package/src/lib/famix/{src/index.ts → index.ts} +0 -0
- /package/src/lib/famix/{src/model → model}/famix/accessor.ts +0 -0
- /package/src/lib/famix/{src/model/famix/arrowFunction.ts → model/famix/arrow_function.ts} +0 -0
- /package/src/lib/famix/{src/model → model}/famix/entity.ts +0 -0
- /package/src/lib/famix/{src/model → model}/famix/function.ts +0 -0
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.FamixRepository = void 0;
|
|
4
|
+
const famix_1 = require("./model/famix");
|
|
5
|
+
/**
|
|
6
|
+
* This class is used to store all Famix elements
|
|
7
|
+
*/
|
|
8
|
+
class FamixRepository {
|
|
9
|
+
constructor() {
|
|
10
|
+
this.elements = new Set(); // All Famix elements
|
|
11
|
+
this.famixClasses = new Set(); // All Famix classes
|
|
12
|
+
this.famixInterfaces = new Set(); // All Famix interfaces
|
|
13
|
+
this.famixModules = new Set(); // All Famix namespaces
|
|
14
|
+
this.famixMethods = new Set(); // All Famix methods
|
|
15
|
+
this.famixVariables = new Set(); // All Famix variables
|
|
16
|
+
this.famixFunctions = new Set(); // All Famix functions
|
|
17
|
+
this.famixFiles = new Set(); // All Famix files
|
|
18
|
+
this.idCounter = 1; // Id counter
|
|
19
|
+
this.absolutePath = "";
|
|
20
|
+
this.fmxElementObjectMap = new Map();
|
|
21
|
+
this.tsMorphObjectMap = new Map(); // TODO: add this map to have two-way mapping between Famix and TS Morph objects
|
|
22
|
+
this.addElement(new famix_1.SourceLanguage()); // add the source language entity (TypeScript)
|
|
23
|
+
}
|
|
24
|
+
setFmxElementObjectMap(fmxElementObjectMap) {
|
|
25
|
+
this.fmxElementObjectMap = fmxElementObjectMap;
|
|
26
|
+
}
|
|
27
|
+
getFmxElementObjectMap() {
|
|
28
|
+
return this.fmxElementObjectMap;
|
|
29
|
+
}
|
|
30
|
+
getAbsolutePath() {
|
|
31
|
+
return this.absolutePath;
|
|
32
|
+
}
|
|
33
|
+
setAbsolutePath(path) {
|
|
34
|
+
this.absolutePath = path;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Gets a Famix entity by id
|
|
38
|
+
* @param id An id of a Famix entity
|
|
39
|
+
* @returns The Famix entity corresponding to the id or undefined if it doesn't exist
|
|
40
|
+
*/
|
|
41
|
+
getFamixEntityById(id) {
|
|
42
|
+
const entity = Array.from(this.elements.values()).find(e => e.id === id);
|
|
43
|
+
return entity;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Gets a Famix entity by fully qualified name
|
|
47
|
+
* @param fullyQualifiedName A fully qualified name
|
|
48
|
+
* @returns The Famix entity corresponding to the fully qualified name or undefined if it doesn't exist
|
|
49
|
+
*/
|
|
50
|
+
getFamixEntityByFullyQualifiedName(fullyQualifiedName) {
|
|
51
|
+
const allEntities = Array.from(this.elements.values()).filter(e => e instanceof famix_1.NamedEntity);
|
|
52
|
+
const entity = allEntities.find(e => e.fullyQualifiedName === fullyQualifiedName);
|
|
53
|
+
return entity;
|
|
54
|
+
}
|
|
55
|
+
export(arg0) {
|
|
56
|
+
if (arg0.format === "json") {
|
|
57
|
+
return this.getJSON();
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
throw new Error("Unsupported format");
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Only for tests
|
|
64
|
+
/**
|
|
65
|
+
* Gets all Famix entities
|
|
66
|
+
* @returns All Famix entities
|
|
67
|
+
*/
|
|
68
|
+
_getAllEntities() {
|
|
69
|
+
return new Set(Array.from(this.elements.values()));
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Gets all Famix entities of a given type
|
|
73
|
+
* @param theType A type of Famix entity
|
|
74
|
+
* @returns All Famix entities of the given type
|
|
75
|
+
*/
|
|
76
|
+
_getAllEntitiesWithType(theType) {
|
|
77
|
+
return new Set(Array.from(this.elements.values()).filter(e => e.constructor.name === theType));
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Gets a Famix class by name
|
|
81
|
+
* @param name A class name
|
|
82
|
+
* @returns The Famix class corresponding to the name or undefined if it doesn't exist
|
|
83
|
+
*/
|
|
84
|
+
_getFamixClass(fullyQualifiedName) {
|
|
85
|
+
return Array.from(this.famixClasses.values()).find(ns => ns.fullyQualifiedName === fullyQualifiedName);
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Gets a Famix interface by name
|
|
89
|
+
* @param name An interface name
|
|
90
|
+
* @returns The Famix interface corresponding to the name or undefined if it doesn't exist
|
|
91
|
+
*/
|
|
92
|
+
_getFamixInterface(fullyQualifiedName) {
|
|
93
|
+
return Array.from(this.famixInterfaces.values()).find(ns => ns.fullyQualifiedName === fullyQualifiedName);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Gets a Famix method by name
|
|
97
|
+
* @param name A method name
|
|
98
|
+
* @returns The Famix method corresponding to the name or undefined if it doesn't exist
|
|
99
|
+
*/
|
|
100
|
+
_getFamixMethod(fullyQualifiedName) {
|
|
101
|
+
return Array.from(this.famixMethods.values()).find(ns => ns.fullyQualifiedName === fullyQualifiedName);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Gets a Famix function by name
|
|
105
|
+
* @param name A function name
|
|
106
|
+
* @returns The Famix function corresponding to the name or undefined if it doesn't exist
|
|
107
|
+
*/
|
|
108
|
+
_getFamixFunction(fullyQualifiedName) {
|
|
109
|
+
return Array.from(this.famixFunctions.values()).find(ns => ns.fullyQualifiedName === fullyQualifiedName);
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Gets a Famix variable by name
|
|
113
|
+
* @param name A variable name
|
|
114
|
+
* @returns The Famix variable corresponding to the name or undefined if it doesn't exist
|
|
115
|
+
*/
|
|
116
|
+
_getFamixVariable(fullyQualifiedName) {
|
|
117
|
+
return Array.from(this.famixVariables.values()).find(v => v.fullyQualifiedName === fullyQualifiedName);
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Gets a Famix namespace by name
|
|
121
|
+
* @param name A namespace name
|
|
122
|
+
* @returns The Famix namespace corresponding to the name or undefined if it doesn't exist
|
|
123
|
+
*/
|
|
124
|
+
_getFamixModule(fullyQualifiedName) {
|
|
125
|
+
return Array.from(this.famixModules.values()).find(ns => ns.fullyQualifiedName === fullyQualifiedName);
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Gets all Famix namespaces
|
|
129
|
+
* @returns All Famix namespaces
|
|
130
|
+
*/
|
|
131
|
+
_getFamixModules() {
|
|
132
|
+
return new Set(Array.from(this.famixModules.values()));
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Gets a Famix file by name
|
|
136
|
+
* @param name A file name
|
|
137
|
+
* @returns The Famix file corresponding to the name or undefined if it doesn't exist
|
|
138
|
+
*/
|
|
139
|
+
_getFamixFile(fullyQualifiedName) {
|
|
140
|
+
return Array.from(this.famixFiles.values()).find(ns => ns.name === fullyQualifiedName);
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Gets all Famix files
|
|
144
|
+
* @returns All Famix files
|
|
145
|
+
*/
|
|
146
|
+
_getFamixFiles() {
|
|
147
|
+
return new Set(Array.from(this.famixFiles.values()));
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Gets all method names as a set from a class
|
|
151
|
+
* @param className A class name
|
|
152
|
+
* @returns The set of class "className" method names
|
|
153
|
+
*/
|
|
154
|
+
_methodNamesAsSetFromClass(className) {
|
|
155
|
+
const theClass = this._getFamixClass(className);
|
|
156
|
+
return new Set(Array.from(theClass.methods).map(m => m.name));
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* Gets all method parents as a set from a class
|
|
160
|
+
* @param className A class name
|
|
161
|
+
* @returns The set of class "className" method parents
|
|
162
|
+
*/
|
|
163
|
+
_methodParentsAsSetFromClass(className) {
|
|
164
|
+
const theClass = this._getFamixClass(className);
|
|
165
|
+
return new Set(Array.from(theClass.methods).map(m => m.parentEntity));
|
|
166
|
+
}
|
|
167
|
+
/**
|
|
168
|
+
* Gets the map of Famix element ids and their Famix element from a JSON model
|
|
169
|
+
* @param model A JSON model
|
|
170
|
+
* @returns The map of Famix element ids and their Famix element from the JSON model
|
|
171
|
+
*/
|
|
172
|
+
_initMapFromModel(model) {
|
|
173
|
+
const parsedModel = JSON.parse(model);
|
|
174
|
+
const idToElementMap = new Map();
|
|
175
|
+
parsedModel.forEach(element => {
|
|
176
|
+
idToElementMap.set(element.id, element);
|
|
177
|
+
});
|
|
178
|
+
return idToElementMap;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Adds a Famix element to the repository
|
|
182
|
+
* @param element A Famix element
|
|
183
|
+
*/
|
|
184
|
+
addElement(element) {
|
|
185
|
+
if (element instanceof famix_1.Class) {
|
|
186
|
+
this.famixClasses.add(element);
|
|
187
|
+
}
|
|
188
|
+
else if (element instanceof famix_1.Interface) {
|
|
189
|
+
this.famixInterfaces.add(element);
|
|
190
|
+
}
|
|
191
|
+
else if (element instanceof famix_1.Module) {
|
|
192
|
+
this.famixModules.add(element);
|
|
193
|
+
}
|
|
194
|
+
else if (element instanceof famix_1.Variable) {
|
|
195
|
+
this.famixVariables.add(element);
|
|
196
|
+
}
|
|
197
|
+
else if (element instanceof famix_1.Method) {
|
|
198
|
+
this.famixMethods.add(element);
|
|
199
|
+
}
|
|
200
|
+
else if (element instanceof famix_1.Function || element instanceof famix_1.ArrowFunction) {
|
|
201
|
+
this.famixFunctions.add(element);
|
|
202
|
+
}
|
|
203
|
+
else if (element instanceof famix_1.ScriptEntity || element instanceof famix_1.Module) {
|
|
204
|
+
this.famixFiles.add(element);
|
|
205
|
+
}
|
|
206
|
+
this.elements.add(element);
|
|
207
|
+
element.id = this.idCounter;
|
|
208
|
+
this.idCounter++;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Gets a JSON representation of the repository
|
|
212
|
+
* @returns A JSON representation of the repository
|
|
213
|
+
*/
|
|
214
|
+
getJSON() {
|
|
215
|
+
let ret = "[";
|
|
216
|
+
for (const element of Array.from(this.elements.values())) {
|
|
217
|
+
ret = ret + element.getJSON() + ",";
|
|
218
|
+
}
|
|
219
|
+
ret = ret.substring(0, ret.length - 1);
|
|
220
|
+
return ret + "]";
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
exports.FamixRepository = FamixRepository;
|
|
224
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFtaXhfcmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvZmFtaXgvZmFtaXhfcmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFDQSx5Q0FBNEs7QUFHNUs7O0dBRUc7QUFDSCxNQUFhLGVBQWU7SUFjeEI7UUFiUSxhQUFRLEdBQUcsSUFBSSxHQUFHLEVBQW9CLENBQUMsQ0FBQyxxQkFBcUI7UUFDN0QsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBUyxDQUFDLENBQUMsb0JBQW9CO1FBQ3JELG9CQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWEsQ0FBQyxDQUFDLHVCQUF1QjtRQUMvRCxpQkFBWSxHQUFHLElBQUksR0FBRyxFQUFVLENBQUMsQ0FBQyx1QkFBdUI7UUFDekQsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDLENBQUMsb0JBQW9CO1FBQ3RELG1CQUFjLEdBQUcsSUFBSSxHQUFHLEVBQVksQ0FBQyxDQUFDLHNCQUFzQjtRQUM1RCxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUF1QixDQUFDLENBQUMsc0JBQXNCO1FBQ3ZFLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBeUIsQ0FBQyxDQUFDLGtCQUFrQjtRQUNqRSxjQUFTLEdBQUcsQ0FBQyxDQUFDLENBQUMsYUFBYTtRQUM1QixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUMxQix3QkFBbUIsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQztRQUNqRSxxQkFBZ0IsR0FBRyxJQUFJLEdBQUcsRUFBbUMsQ0FBQyxDQUFDLGdGQUFnRjtRQUduSixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksc0JBQWMsRUFBRSxDQUFDLENBQUMsQ0FBRSw4Q0FBOEM7SUFDMUYsQ0FBQztJQUVNLHNCQUFzQixDQUFDLG1CQUF5RDtRQUNuRixJQUFJLENBQUMsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7SUFDbkQsQ0FBQztJQUVNLHNCQUFzQjtRQUN6QixP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QUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxDQUFDO1lBQ3ZELEdBQUcsR0FBRyxHQUFHLEdBQUcsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsQ0FBQztRQUN4QyxDQUFDO1FBQ0QsR0FBRyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7UUFDdkMsT0FBTyxHQUFHLEdBQUcsR0FBRyxDQUFDO0lBQ3JCLENBQUM7Q0FDSjtBQTNPRCwwQ0EyT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYW1peEJhc2VFbGVtZW50IH0gZnJvbSBcIi4vZmFtaXhfYmFzZV9lbGVtZW50XCI7XG5pbXBvcnQgeyBDbGFzcywgSW50ZXJmYWNlLCBWYXJpYWJsZSwgTWV0aG9kLCBBcnJvd0Z1bmN0aW9uLCBGdW5jdGlvbiBhcyBGYW1peEZ1bmN0aW9uRW50aXR5LCBUeXBlLCBOYW1lZEVudGl0eSwgU2NyaXB0RW50aXR5LCBNb2R1bGUsIFNvdXJjZUxhbmd1YWdlIH0gZnJvbSBcIi4vbW9kZWwvZmFtaXhcIjtcbmltcG9ydCAqIGFzIEZhbWl4IGZyb20gXCIuL21vZGVsL2ZhbWl4XCI7XG5pbXBvcnQgeyBUU01vcnBoT2JqZWN0VHlwZSB9IGZyb20gXCIuLi8uLi9mYW1peF9mdW5jdGlvbnMvRW50aXR5RGljdGlvbmFyeVwiO1xuLyoqXG4gKiBUaGlzIGNsYXNzIGlzIHVzZWQgdG8gc3RvcmUgYWxsIEZhbWl4IGVsZW1lbnRzXG4gKi9cbmV4cG9ydCBjbGFzcyBGYW1peFJlcG9zaXRvcnkge1xuICAgIHByaXZhdGUgZWxlbWVudHMgPSBuZXcgU2V0PEZhbWl4QmFzZUVsZW1lbnQ+KCk7IC8vIEFsbCBGYW1peCBlbGVtZW50c1xuICAgIHByaXZhdGUgZmFtaXhDbGFzc2VzID0gbmV3IFNldDxDbGFzcz4oKTsgLy8gQWxsIEZhbWl4IGNsYXNzZXNcbiAgICBwcml2YXRlIGZhbWl4SW50ZXJmYWNlcyA9IG5ldyBTZXQ8SW50ZXJmYWNlPigpOyAvLyBBbGwgRmFtaXggaW50ZXJmYWNlc1xuICAgIHByaXZhdGUgZmFtaXhNb2R1bGVzID0gbmV3IFNldDxNb2R1bGU+KCk7IC8vIEFsbCBGYW1peCBuYW1lc3BhY2VzXG4gICAgcHJpdmF0ZSBmYW1peE1ldGhvZHMgPSBuZXcgU2V0PE1ldGhvZD4oKTsgLy8gQWxsIEZhbWl4IG1ldGhvZHNcbiAgICBwcml2YXRlIGZhbWl4VmFyaWFibGVzID0gbmV3IFNldDxWYXJpYWJsZT4oKTsgLy8gQWxsIEZhbWl4IHZhcmlhYmxlc1xuICAgIHByaXZhdGUgZmFtaXhGdW5jdGlvbnMgPSBuZXcgU2V0PEZhbWl4RnVuY3Rpb25FbnRpdHk+KCk7IC8vIEFsbCBGYW1peCBmdW5jdGlvbnNcbiAgICBwcml2YXRlIGZhbWl4RmlsZXMgPSBuZXcgU2V0PFNjcmlwdEVudGl0eSB8IE1vZHVsZT4oKTsgLy8gQWxsIEZhbWl4IGZpbGVzXG4gICAgcHJpdmF0ZSBpZENvdW50ZXIgPSAxOyAvLyBJZCBjb3VudGVyXG4gICAgcHJpdmF0ZSBhYnNvbHV0ZVBhdGg6IHN0cmluZyA9IFwiXCI7XG4gICAgcHJpdmF0ZSBmbXhFbGVtZW50T2JqZWN0TWFwID0gbmV3IE1hcDxGYW1peC5FbnRpdHksIFRTTW9ycGhPYmplY3RUeXBlPigpO1xuICAgIHByaXZhdGUgdHNNb3JwaE9iamVjdE1hcCA9IG5ldyBNYXA8VFNNb3JwaE9iamVjdFR5cGUsIEZhbWl4LkVudGl0eT4oKTsgLy8gVE9ETzogYWRkIHRoaXMgbWFwIHRvIGhhdmUgdHdvLXdheSBtYXBwaW5nIGJldHdlZW4gRmFtaXggYW5kIFRTIE1vcnBoIG9iamVjdHNcbiAgICBcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5hZGRFbGVtZW50KG5ldyBTb3VyY2VMYW5ndWFnZSgpKTsgIC8vIGFkZCB0aGUgc291cmNlIGxhbmd1YWdlIGVudGl0eSAoVHlwZVNjcmlwdClcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0Rm14RWxlbWVudE9iamVjdE1hcChmbXhFbGVtZW50T2JqZWN0TWFwOiBNYXA8RmFtaXguRW50aXR5LCBUU01vcnBoT2JqZWN0VHlwZT4pIHtcbiAgICAgICAgdGhpcy5mbXhFbGVtZW50T2JqZWN0TWFwID0gZm14RWxlbWVudE9iamVjdE1hcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0Rm14RWxlbWVudE9iamVjdE1hcCgpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZm14RWxlbWVudE9iamVjdE1hcDtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0QWJzb2x1dGVQYXRoKCk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmFic29sdXRlUGF0aDtcbiAgICB9XG5cbiAgICBwdWJsaWMgc2V0QWJzb2x1dGVQYXRoKHBhdGg6IHN0cmluZykge1xuICAgICAgICB0aGlzLmFic29sdXRlUGF0aCA9IHBhdGg7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEZhbWl4IGVudGl0eSBieSBpZFxuICAgICAqIEBwYXJhbSBpZCBBbiBpZCBvZiBhIEZhbWl4IGVudGl0eVxuICAgICAqIEByZXR1cm5zIFRoZSBGYW1peCBlbnRpdHkgY29ycmVzcG9uZGluZyB0byB0aGUgaWQgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgKi9cbiAgICBwdWJsaWMgZ2V0RmFtaXhFbnRpdHlCeUlkKGlkOiBudW1iZXIpOiBGYW1peEJhc2VFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgZW50aXR5ID0gQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnRzLnZhbHVlcygpKS5maW5kKGUgPT4gZS5pZCA9PT0gaWQpO1xuICAgICAgICByZXR1cm4gZW50aXR5O1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBGYW1peCBlbnRpdHkgYnkgZnVsbHkgcXVhbGlmaWVkIG5hbWVcbiAgICAgKiBAcGFyYW0gZnVsbHlRdWFsaWZpZWROYW1lIEEgZnVsbHkgcXVhbGlmaWVkIG5hbWVcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggZW50aXR5IGNvcnJlc3BvbmRpbmcgdG8gdGhlIGZ1bGx5IHF1YWxpZmllZCBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICovXG4gICAgcHVibGljIGdldEZhbWl4RW50aXR5QnlGdWxseVF1YWxpZmllZE5hbWUoZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcpOiBGYW1peEJhc2VFbGVtZW50IHwgdW5kZWZpbmVkIHtcbiAgICAgICAgY29uc3QgYWxsRW50aXRpZXMgPSBBcnJheS5mcm9tKHRoaXMuZWxlbWVudHMudmFsdWVzKCkpLmZpbHRlcihlID0+IGUgaW5zdGFuY2VvZiBOYW1lZEVudGl0eSkgYXMgQXJyYXk8TmFtZWRFbnRpdHk+O1xuICAgICAgICBjb25zdCBlbnRpdHkgPSBhbGxFbnRpdGllcy5maW5kKGUgPT4gZS5mdWxseVF1YWxpZmllZE5hbWUgPT09IGZ1bGx5UXVhbGlmaWVkTmFtZSk7XG4gICAgICAgIHJldHVybiBlbnRpdHk7XG4gICAgfVxuXG4gICAgZXhwb3J0KGFyZzA6IHsgZm9ybWF0OiBzdHJpbmc7IH0pIHtcbiAgICAgICAgaWYgKGFyZzAuZm9ybWF0ID09PSBcImpzb25cIikge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SlNPTigpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiVW5zdXBwb3J0ZWQgZm9ybWF0XCIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICAvLyBPbmx5IGZvciB0ZXN0c1xuXG4gICAgLyoqXG4gICAgICogR2V0cyBhbGwgRmFtaXggZW50aXRpZXNcbiAgICAgKiBAcmV0dXJucyBBbGwgRmFtaXggZW50aXRpZXNcbiAgICAgKi9cbiAgICBwdWJsaWMgX2dldEFsbEVudGl0aWVzKCk6IFNldDxGYW1peEJhc2VFbGVtZW50PiB7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20odGhpcy5lbGVtZW50cy52YWx1ZXMoKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIEZhbWl4IGVudGl0aWVzIG9mIGEgZ2l2ZW4gdHlwZVxuICAgICAqIEBwYXJhbSB0aGVUeXBlIEEgdHlwZSBvZiBGYW1peCBlbnRpdHlcbiAgICAgKiBAcmV0dXJucyBBbGwgRmFtaXggZW50aXRpZXMgb2YgdGhlIGdpdmVuIHR5cGVcbiAgICAgKi9cbiAgICBwdWJsaWMgX2dldEFsbEVudGl0aWVzV2l0aFR5cGUodGhlVHlwZTogc3RyaW5nKTogU2V0PEZhbWl4QmFzZUVsZW1lbnQ+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnRzLnZhbHVlcygpKS5maWx0ZXIoZSA9PiAoZSBhcyBGYW1peEJhc2VFbGVtZW50KS5jb25zdHJ1Y3Rvci5uYW1lID09PSB0aGVUeXBlKSk7XG4gICAgfVxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEZhbWl4IGNsYXNzIGJ5IG5hbWVcbiAgICAgKiBAcGFyYW0gbmFtZSBBIGNsYXNzIG5hbWVcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggY2xhc3MgY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAqL1xuICAgIHB1YmxpYyBfZ2V0RmFtaXhDbGFzcyhmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IENsYXNzIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mYW1peENsYXNzZXMudmFsdWVzKCkpLmZpbmQobnMgPT4gbnMuZnVsbHlRdWFsaWZpZWROYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBGYW1peCBpbnRlcmZhY2UgYnkgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lIEFuIGludGVyZmFjZSBuYW1lXG4gICAgICogQHJldHVybnMgVGhlIEZhbWl4IGludGVyZmFjZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICovXG4gICAgcHVibGljIF9nZXRGYW1peEludGVyZmFjZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IEludGVyZmFjZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhJbnRlcmZhY2VzLnZhbHVlcygpKS5maW5kKG5zID0+IG5zLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgRmFtaXggbWV0aG9kIGJ5IG5hbWVcbiAgICAgKiBAcGFyYW0gbmFtZSBBIG1ldGhvZCBuYW1lXG4gICAgICogQHJldHVybnMgVGhlIEZhbWl4IG1ldGhvZCBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICovXG4gICAgcHVibGljIF9nZXRGYW1peE1ldGhvZChmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IE1ldGhvZCB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhNZXRob2RzLnZhbHVlcygpKS5maW5kKG5zID0+IG5zLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGEgRmFtaXggZnVuY3Rpb24gYnkgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lIEEgZnVuY3Rpb24gbmFtZVxuICAgICAqIEByZXR1cm5zIFRoZSBGYW1peCBmdW5jdGlvbiBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XG4gICAgICovXG4gICAgcHVibGljIF9nZXRGYW1peEZ1bmN0aW9uKGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogRmFtaXhGdW5jdGlvbkVudGl0eSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhGdW5jdGlvbnMudmFsdWVzKCkpLmZpbmQobnMgPT4gbnMuZnVsbHlRdWFsaWZpZWROYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xuICAgIH1cblxuXG4gICAgLyoqXG4gICAgICogR2V0cyBhIEZhbWl4IHZhcmlhYmxlIGJ5IG5hbWVcbiAgICAgKiBAcGFyYW0gbmFtZSBBIHZhcmlhYmxlIG5hbWVcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggdmFyaWFibGUgY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxuICAgICAqL1xuICAgIHB1YmxpYyBfZ2V0RmFtaXhWYXJpYWJsZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IFZhcmlhYmxlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mYW1peFZhcmlhYmxlcy52YWx1ZXMoKSkuZmluZCh2ID0+IHYuZnVsbHlRdWFsaWZpZWROYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBGYW1peCBuYW1lc3BhY2UgYnkgbmFtZVxuICAgICAqIEBwYXJhbSBuYW1lIEEgbmFtZXNwYWNlIG5hbWVcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggbmFtZXNwYWNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5hbWUgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgKi9cbiAgICBwdWJsaWMgX2dldEZhbWl4TW9kdWxlKGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogTW9kdWxlIHwgdW5kZWZpbmVkIHtcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mYW1peE1vZHVsZXMudmFsdWVzKCkpLmZpbmQobnMgPT4gbnMuZnVsbHlRdWFsaWZpZWROYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIEZhbWl4IG5hbWVzcGFjZXNcbiAgICAgKiBAcmV0dXJucyBBbGwgRmFtaXggbmFtZXNwYWNlc1xuICAgICAqL1xuICAgIHB1YmxpYyBfZ2V0RmFtaXhNb2R1bGVzKCk6IFNldDxNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoQXJyYXkuZnJvbSh0aGlzLmZhbWl4TW9kdWxlcy52YWx1ZXMoKSkpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBGYW1peCBmaWxlIGJ5IG5hbWVcbiAgICAgKiBAcGFyYW0gbmFtZSBBIGZpbGUgbmFtZVxuICAgICAqIEByZXR1cm5zIFRoZSBGYW1peCBmaWxlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5hbWUgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcbiAgICAgKi9cbiAgICBwdWJsaWMgX2dldEZhbWl4RmlsZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IFNjcmlwdEVudGl0eSB8IE1vZHVsZSB8IHVuZGVmaW5lZCB7XG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhGaWxlcy52YWx1ZXMoKSkuZmluZChucyA9PiBucy5uYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYWxsIEZhbWl4IGZpbGVzXG4gICAgICogQHJldHVybnMgQWxsIEZhbWl4IGZpbGVzXG4gICAgICovXG4gICAgcHVibGljIF9nZXRGYW1peEZpbGVzKCk6IFNldDxTY3JpcHRFbnRpdHkgfCBNb2R1bGU+IHtcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoQXJyYXkuZnJvbSh0aGlzLmZhbWl4RmlsZXMudmFsdWVzKCkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBtZXRob2QgbmFtZXMgYXMgYSBzZXQgZnJvbSBhIGNsYXNzXG4gICAgICogQHBhcmFtIGNsYXNzTmFtZSBBIGNsYXNzIG5hbWVcbiAgICAgKiBAcmV0dXJucyBUaGUgc2V0IG9mIGNsYXNzIFwiY2xhc3NOYW1lXCIgbWV0aG9kIG5hbWVzXG4gICAgICovXG4gICAgcHVibGljIF9tZXRob2ROYW1lc0FzU2V0RnJvbUNsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xuICAgICAgICBjb25zdCB0aGVDbGFzcyA9IHRoaXMuX2dldEZhbWl4Q2xhc3MoY2xhc3NOYW1lKSBhcyBDbGFzcztcbiAgICAgICAgcmV0dXJuIG5ldyBTZXQoQXJyYXkuZnJvbSh0aGVDbGFzcy5tZXRob2RzKS5tYXAobSA9PiBtLm5hbWUpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIGFsbCBtZXRob2QgcGFyZW50cyBhcyBhIHNldCBmcm9tIGEgY2xhc3NcbiAgICAgKiBAcGFyYW0gY2xhc3NOYW1lIEEgY2xhc3MgbmFtZVxuICAgICAqIEByZXR1cm5zIFRoZSBzZXQgb2YgY2xhc3MgXCJjbGFzc05hbWVcIiBtZXRob2QgcGFyZW50c1xuICAgICAqL1xuICAgIHB1YmxpYyBfbWV0aG9kUGFyZW50c0FzU2V0RnJvbUNsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogU2V0PFR5cGU+IHtcbiAgICAgICAgY29uc3QgdGhlQ2xhc3MgPSB0aGlzLl9nZXRGYW1peENsYXNzKGNsYXNzTmFtZSkgYXMgQ2xhc3M7XG4gICAgICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20odGhlQ2xhc3MubWV0aG9kcykubWFwKG0gPT4gbS5wYXJlbnRFbnRpdHkpKTtcbiAgICB9XG5cbiAgICAvKipcbiAgICAgKiBHZXRzIHRoZSBtYXAgb2YgRmFtaXggZWxlbWVudCBpZHMgYW5kIHRoZWlyIEZhbWl4IGVsZW1lbnQgZnJvbSBhIEpTT04gbW9kZWxcbiAgICAgKiBAcGFyYW0gbW9kZWwgQSBKU09OIG1vZGVsXG4gICAgICogQHJldHVybnMgVGhlIG1hcCBvZiBGYW1peCBlbGVtZW50IGlkcyBhbmQgdGhlaXIgRmFtaXggZWxlbWVudCBmcm9tIHRoZSBKU09OIG1vZGVsXG4gICAgICovXG4gICAgcHVibGljIF9pbml0TWFwRnJvbU1vZGVsKG1vZGVsOiBzdHJpbmcpOiBNYXA8bnVtYmVyLCB1bmtub3duPiB7XG4gICAgICAgIGNvbnN0IHBhcnNlZE1vZGVsOiBBcnJheTxGYW1peEJhc2VFbGVtZW50PiA9IEpTT04ucGFyc2UobW9kZWwpO1xuICAgICAgICBjb25zdCBpZFRvRWxlbWVudE1hcDogTWFwPG51bWJlciwgdW5rbm93bj4gPSBuZXcgTWFwKCk7XG4gICAgICAgIHBhcnNlZE1vZGVsLmZvckVhY2goZWxlbWVudCA9PiB7XG4gICAgICAgICAgICBpZFRvRWxlbWVudE1hcC5zZXQoZWxlbWVudC5pZCwgZWxlbWVudCk7XG4gICAgICAgIH0pO1xuICAgICAgICByZXR1cm4gaWRUb0VsZW1lbnRNYXA7XG4gICAgfVxuXG5cbiAgICAvKipcbiAgICAgKiBBZGRzIGEgRmFtaXggZWxlbWVudCB0byB0aGUgcmVwb3NpdG9yeVxuICAgICAqIEBwYXJhbSBlbGVtZW50IEEgRmFtaXggZWxlbWVudFxuICAgICAqL1xuICAgIHB1YmxpYyBhZGRFbGVtZW50KGVsZW1lbnQ6IEZhbWl4QmFzZUVsZW1lbnQpOiB2b2lkIHtcbiAgICAgICAgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBDbGFzcykge1xuICAgICAgICAgICAgdGhpcy5mYW1peENsYXNzZXMuYWRkKGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBJbnRlcmZhY2UpIHtcbiAgICAgICAgICAgIHRoaXMuZmFtaXhJbnRlcmZhY2VzLmFkZChlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgTW9kdWxlKSB7XG4gICAgICAgICAgICB0aGlzLmZhbWl4TW9kdWxlcy5hZGQoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIFZhcmlhYmxlKSB7XG4gICAgICAgICAgICB0aGlzLmZhbWl4VmFyaWFibGVzLmFkZChlbGVtZW50KTtcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgTWV0aG9kKSB7XG4gICAgICAgICAgICB0aGlzLmZhbWl4TWV0aG9kcy5hZGQoZWxlbWVudCk7XG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEZhbWl4RnVuY3Rpb25FbnRpdHkgfHwgZWxlbWVudCBpbnN0YW5jZW9mIEFycm93RnVuY3Rpb24pIHtcbiAgICAgICAgICAgIHRoaXMuZmFtaXhGdW5jdGlvbnMuYWRkKGVsZW1lbnQpO1xuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBTY3JpcHRFbnRpdHkgfHwgZWxlbWVudCBpbnN0YW5jZW9mIE1vZHVsZSkge1xuICAgICAgICAgICAgdGhpcy5mYW1peEZpbGVzLmFkZChlbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLmVsZW1lbnRzLmFkZChlbGVtZW50KTtcbiAgICAgICAgZWxlbWVudC5pZCA9IHRoaXMuaWRDb3VudGVyO1xuICAgICAgICB0aGlzLmlkQ291bnRlcisrO1xuICAgIH1cblxuICAgIC8qKlxuICAgICAqIEdldHMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXBvc2l0b3J5XG4gICAgICogQHJldHVybnMgQSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXBvc2l0b3J5XG4gICAgICovXG4gICAgcHVibGljIGdldEpTT04oKTogc3RyaW5nIHtcbiAgICAgICAgbGV0IHJldCA9IFwiW1wiO1xuICAgICAgICBmb3IgKGNvbnN0IGVsZW1lbnQgb2YgQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnRzLnZhbHVlcygpKSkge1xuICAgICAgICAgICAgcmV0ID0gcmV0ICsgZWxlbWVudC5nZXRKU09OKCkgKyBcIixcIjtcbiAgICAgICAgfVxuICAgICAgICByZXQgPSByZXQuc3Vic3RyaW5nKDAsIHJldC5sZW5ndGggLSAxKTtcbiAgICAgICAgcmV0dXJuIHJldCArIFwiXVwiO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -28,4 +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,
|
|
31
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2ZhbWl4L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLHFEQUF1QztBQUN2Qyw2REFBd0Q7QUFDeEQsK0RBQTBEO0FBQzFELHlEQUFxRDtBQUVyRCxNQUFNLEtBQUssR0FBRyxFQUFFLEtBQUssRUFBRSxDQUFDO0FBRXhCLGlCQUFTLEVBQUUsZ0JBQWdCLEVBQWhCLHFDQUFnQixFQUFFLGlCQUFpQixFQUFqQix1Q0FBaUIsRUFBRSxlQUFlLEVBQWYsa0NBQWUsRUFBRSxLQUFLLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIEZhbWl4IGZyb20gXCIuL21vZGVsL2ZhbWl4XCI7XG5pbXBvcnQgeyBGYW1peEJhc2VFbGVtZW50IH0gZnJvbSBcIi4vZmFtaXhfYmFzZV9lbGVtZW50XCI7XG5pbXBvcnQgeyBGYW1peEpTT05FeHBvcnRlciB9IGZyb20gXCIuL2ZhbWl4X0pTT05fZXhwb3J0ZXJcIjtcbmltcG9ydCB7IEZhbWl4UmVwb3NpdG9yeSB9IGZyb20gXCIuL2ZhbWl4X3JlcG9zaXRvcnlcIjtcblxuY29uc3QgbW9kZWwgPSB7IEZhbWl4IH07XG5cbmV4cG9ydCA9IHsgRmFtaXhCYXNlRWxlbWVudCwgRmFtaXhKU09ORXhwb3J0ZXIsIEZhbWl4UmVwb3NpdG9yeSwgbW9kZWwgfTtcbiJdfQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Access = void 0;
|
|
4
|
+
const famix_JSON_exporter_1 = require("../../famix_JSON_exporter");
|
|
5
|
+
const entity_1 = require("./entity");
|
|
6
|
+
class Access extends entity_1.Entity {
|
|
7
|
+
getJSON() {
|
|
8
|
+
const json = new famix_JSON_exporter_1.FamixJSONExporter("Access", this);
|
|
9
|
+
this.addPropertiesToExporter(json);
|
|
10
|
+
return json.getJSON();
|
|
11
|
+
}
|
|
12
|
+
addPropertiesToExporter(exporter) {
|
|
13
|
+
super.addPropertiesToExporter(exporter);
|
|
14
|
+
exporter.addProperty("accessor", this.accessor);
|
|
15
|
+
exporter.addProperty("variable", this.variable);
|
|
16
|
+
exporter.addProperty("isWrite", this.isWrite);
|
|
17
|
+
}
|
|
18
|
+
get accessor() {
|
|
19
|
+
return this._accessor;
|
|
20
|
+
}
|
|
21
|
+
set accessor(accessor) {
|
|
22
|
+
this._accessor = accessor;
|
|
23
|
+
accessor.addAccess(this);
|
|
24
|
+
}
|
|
25
|
+
get variable() {
|
|
26
|
+
return this._variable;
|
|
27
|
+
}
|
|
28
|
+
set variable(variable) {
|
|
29
|
+
this._variable = variable;
|
|
30
|
+
variable.addIncomingAccess(this);
|
|
31
|
+
}
|
|
32
|
+
get isWrite() {
|
|
33
|
+
return this._isWrite;
|
|
34
|
+
}
|
|
35
|
+
set isWrite(isWrite) {
|
|
36
|
+
this._isWrite = isWrite;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
exports.Access = Access;
|
|
40
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9mYW1peC9tb2RlbC9mYW1peC9hY2Nlc3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsbUVBQThEO0FBRzlELHFDQUFrQztBQUVsQyxNQUFhLE1BQU8sU0FBUSxlQUFNO0lBTXZCLE9BQU87UUFDVixNQUFNLElBQUksR0FBc0IsSUFBSSx1Q0FBaUIsQ0FBQyxRQUFRLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxRQUEyQjtRQUN0RCxLQUFLLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ2hELFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxRQUFRLENBQUMsV0FBVyxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsUUFBeUI7UUFDbEMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsUUFBUSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUM3QixDQUFDO0lBRUQsSUFBSSxRQUFRO1FBQ1IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO0lBQzFCLENBQUM7SUFFRCxJQUFJLFFBQVEsQ0FBQyxRQUEwQjtRQUNuQyxJQUFJLENBQUMsU0FBUyxHQUFHLFFBQVEsQ0FBQztRQUMxQixRQUFRLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksT0FBTztRQUNQLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBSSxPQUFPLENBQUMsT0FBZ0I7UUFDeEIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztDQUNKO0FBNUNELHdCQTRDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhbWl4SlNPTkV4cG9ydGVyIH0gZnJvbSBcIi4uLy4uL2ZhbWl4X0pTT05fZXhwb3J0ZXJcIjtcbmltcG9ydCB7IFN0cnVjdHVyYWxFbnRpdHkgfSBmcm9tIFwiLi9zdHJ1Y3R1cmFsX2VudGl0eVwiO1xuaW1wb3J0IHsgQ29udGFpbmVyRW50aXR5IH0gZnJvbSBcIi4vY29udGFpbmVyX2VudGl0eVwiO1xuaW1wb3J0IHsgRW50aXR5IH0gZnJvbSBcIi4vZW50aXR5XCI7XG5cbmV4cG9ydCBjbGFzcyBBY2Nlc3MgZXh0ZW5kcyBFbnRpdHkge1xuXG4gICAgcHJpdmF0ZSBfYWNjZXNzb3IhOiBDb250YWluZXJFbnRpdHk7XG4gICAgcHJpdmF0ZSBfdmFyaWFibGUhOiBTdHJ1Y3R1cmFsRW50aXR5O1xuICAgIHByaXZhdGUgX2lzV3JpdGUhOiBib29sZWFuO1xuXG4gICAgcHVibGljIGdldEpTT04oKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QganNvbjogRmFtaXhKU09ORXhwb3J0ZXIgPSBuZXcgRmFtaXhKU09ORXhwb3J0ZXIoXCJBY2Nlc3NcIiwgdGhpcyk7XG4gICAgICAgIHRoaXMuYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoanNvbik7XG4gICAgICAgIHJldHVybiBqc29uLmdldEpTT04oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoZXhwb3J0ZXI6IEZhbWl4SlNPTkV4cG9ydGVyKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGV4cG9ydGVyKTtcbiAgICAgICAgZXhwb3J0ZXIuYWRkUHJvcGVydHkoXCJhY2Nlc3NvclwiLCB0aGlzLmFjY2Vzc29yKTtcbiAgICAgICAgZXhwb3J0ZXIuYWRkUHJvcGVydHkoXCJ2YXJpYWJsZVwiLCB0aGlzLnZhcmlhYmxlKTtcbiAgICAgICAgZXhwb3J0ZXIuYWRkUHJvcGVydHkoXCJpc1dyaXRlXCIsIHRoaXMuaXNXcml0ZSk7XG4gICAgfVxuXG4gICAgZ2V0IGFjY2Vzc29yKCk6IENvbnRhaW5lckVudGl0eSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hY2Nlc3NvcjtcbiAgICB9XG5cbiAgICBzZXQgYWNjZXNzb3IoYWNjZXNzb3I6IENvbnRhaW5lckVudGl0eSkge1xuICAgICAgICB0aGlzLl9hY2Nlc3NvciA9IGFjY2Vzc29yO1xuICAgICAgICBhY2Nlc3Nvci5hZGRBY2Nlc3ModGhpcyk7XG4gICAgfVxuXG4gICAgZ2V0IHZhcmlhYmxlKCk6IFN0cnVjdHVyYWxFbnRpdHkge1xuICAgICAgICByZXR1cm4gdGhpcy5fdmFyaWFibGU7XG4gICAgfVxuXG4gICAgc2V0IHZhcmlhYmxlKHZhcmlhYmxlOiBTdHJ1Y3R1cmFsRW50aXR5KSB7XG4gICAgICAgIHRoaXMuX3ZhcmlhYmxlID0gdmFyaWFibGU7XG4gICAgICAgIHZhcmlhYmxlLmFkZEluY29taW5nQWNjZXNzKHRoaXMpO1xuICAgIH1cblxuICAgIGdldCBpc1dyaXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNXcml0ZTtcbiAgICB9XG5cbiAgICBzZXQgaXNXcml0ZShpc1dyaXRlOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lzV3JpdGUgPSBpc1dyaXRlO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Accessor = void 0;
|
|
4
|
+
const famix_JSON_exporter_1 = require("../../famix_JSON_exporter");
|
|
5
|
+
const method_1 = require("./method");
|
|
6
|
+
class Accessor extends method_1.Method {
|
|
7
|
+
getJSON() {
|
|
8
|
+
const json = new famix_JSON_exporter_1.FamixJSONExporter("Accessor", this);
|
|
9
|
+
this.addPropertiesToExporter(json);
|
|
10
|
+
return json.getJSON();
|
|
11
|
+
}
|
|
12
|
+
addPropertiesToExporter(exporter) {
|
|
13
|
+
super.addPropertiesToExporter(exporter);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
exports.Accessor = Accessor;
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ZhbWl4L21vZGVsL2ZhbWl4L2FjY2Vzc29yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1FQUE4RDtBQUM5RCxxQ0FBa0M7QUFFbEMsTUFBYSxRQUFTLFNBQVEsZUFBTTtJQUUzQixPQUFPO1FBQ1osTUFBTSxJQUFJLEdBQXNCLElBQUksdUNBQWlCLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3hFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUN4QixDQUFDO0lBRU0sdUJBQXVCLENBQUMsUUFBMkI7UUFDeEQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7Q0FDRjtBQVhELDRCQVdDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFtaXhKU09ORXhwb3J0ZXIgfSBmcm9tIFwiLi4vLi4vZmFtaXhfSlNPTl9leHBvcnRlclwiO1xuaW1wb3J0IHsgTWV0aG9kIH0gZnJvbSBcIi4vbWV0aG9kXCI7XG5cbmV4cG9ydCBjbGFzcyBBY2Nlc3NvciBleHRlbmRzIE1ldGhvZCB7XG4gIFxuICBwdWJsaWMgZ2V0SlNPTigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGpzb246IEZhbWl4SlNPTkV4cG9ydGVyID0gbmV3IEZhbWl4SlNPTkV4cG9ydGVyKFwiQWNjZXNzb3JcIiwgdGhpcyk7XG4gICAgdGhpcy5hZGRQcm9wZXJ0aWVzVG9FeHBvcnRlcihqc29uKTtcbiAgICByZXR1cm4ganNvbi5nZXRKU09OKCk7XG4gIH1cblxuICBwdWJsaWMgYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoZXhwb3J0ZXI6IEZhbWl4SlNPTkV4cG9ydGVyKTogdm9pZCB7XG4gICAgc3VwZXIuYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoZXhwb3J0ZXIpO1xuICB9XG59XG4iXX0=
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Alias = void 0;
|
|
4
|
+
const famix_JSON_exporter_1 = require("../../famix_JSON_exporter");
|
|
5
|
+
const named_entity_1 = require("./named_entity");
|
|
6
|
+
class Alias extends named_entity_1.NamedEntity {
|
|
7
|
+
getJSON() {
|
|
8
|
+
const json = new famix_JSON_exporter_1.FamixJSONExporter("Alias", this);
|
|
9
|
+
this.addPropertiesToExporter(json);
|
|
10
|
+
return json.getJSON();
|
|
11
|
+
}
|
|
12
|
+
addPropertiesToExporter(exporter) {
|
|
13
|
+
super.addPropertiesToExporter(exporter);
|
|
14
|
+
exporter.addProperty("parentType", this.parentEntity);
|
|
15
|
+
exporter.addProperty("aliasedEntity", this.aliasedEntity);
|
|
16
|
+
}
|
|
17
|
+
get parentEntity() {
|
|
18
|
+
return this._parentEntity;
|
|
19
|
+
}
|
|
20
|
+
set parentEntity(parentEntity) {
|
|
21
|
+
this._parentEntity = parentEntity;
|
|
22
|
+
parentEntity.addAlias(this);
|
|
23
|
+
}
|
|
24
|
+
get aliasedEntity() {
|
|
25
|
+
return this._aliasedEntity;
|
|
26
|
+
}
|
|
27
|
+
set aliasedEntity(aliasedEntity) {
|
|
28
|
+
this._aliasedEntity = aliasedEntity;
|
|
29
|
+
aliasedEntity.addTypeAlias(this);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.Alias = Alias;
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWxpYXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ZhbWl4L21vZGVsL2ZhbWl4L2FsaWFzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1FQUE4RDtBQUM5RCxpREFBNkM7QUFHN0MsTUFBYSxLQUFNLFNBQVEsMEJBQVc7SUFLM0IsT0FBTztRQUNWLE1BQU0sSUFBSSxHQUFzQixJQUFJLHVDQUFpQixDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQztRQUNyRSxJQUFJLENBQUMsdUJBQXVCLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDbkMsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDMUIsQ0FBQztJQUVNLHVCQUF1QixDQUFDLFFBQTJCO1FBQ3RELEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUN4QyxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDdEQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0lBQzlELENBQUM7SUFFRCxJQUFJLFlBQVk7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVELElBQUksWUFBWSxDQUFDLFlBQXlCO1FBQ3RDLElBQUksQ0FBQyxhQUFhLEdBQUcsWUFBWSxDQUFDO1FBQ2xDLFlBQVksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksYUFBYTtRQUNiLE9BQU8sSUFBSSxDQUFDLGNBQWMsQ0FBQztJQUMvQixDQUFDO0lBRUQsSUFBSSxhQUFhLENBQUMsYUFBbUI7UUFDakMsSUFBSSxDQUFDLGNBQWMsR0FBRyxhQUFhLENBQUM7UUFDcEMsYUFBYSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQyxDQUFDO0NBQ0o7QUFsQ0Qsc0JBa0NDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFtaXhKU09ORXhwb3J0ZXIgfSBmcm9tIFwiLi4vLi4vZmFtaXhfSlNPTl9leHBvcnRlclwiO1xuaW1wb3J0IHsgTmFtZWRFbnRpdHkgfSBmcm9tIFwiLi9uYW1lZF9lbnRpdHlcIjtcbmltcG9ydCB7IFR5cGUgfSBmcm9tIFwiLi90eXBlXCI7XG5cbmV4cG9ydCBjbGFzcyBBbGlhcyBleHRlbmRzIE5hbWVkRW50aXR5IHtcblxuICAgIHByaXZhdGUgX3BhcmVudEVudGl0eSE6IE5hbWVkRW50aXR5O1xuICAgIHByaXZhdGUgX2FsaWFzZWRFbnRpdHkhOiBUeXBlO1xuXG4gICAgcHVibGljIGdldEpTT04oKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QganNvbjogRmFtaXhKU09ORXhwb3J0ZXIgPSBuZXcgRmFtaXhKU09ORXhwb3J0ZXIoXCJBbGlhc1wiLCB0aGlzKTtcbiAgICAgICAgdGhpcy5hZGRQcm9wZXJ0aWVzVG9FeHBvcnRlcihqc29uKTtcbiAgICAgICAgcmV0dXJuIGpzb24uZ2V0SlNPTigpO1xuICAgIH1cblxuICAgIHB1YmxpYyBhZGRQcm9wZXJ0aWVzVG9FeHBvcnRlcihleHBvcnRlcjogRmFtaXhKU09ORXhwb3J0ZXIpOiB2b2lkIHtcbiAgICAgICAgc3VwZXIuYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoZXhwb3J0ZXIpO1xuICAgICAgICBleHBvcnRlci5hZGRQcm9wZXJ0eShcInBhcmVudFR5cGVcIiwgdGhpcy5wYXJlbnRFbnRpdHkpO1xuICAgICAgICBleHBvcnRlci5hZGRQcm9wZXJ0eShcImFsaWFzZWRFbnRpdHlcIiwgdGhpcy5hbGlhc2VkRW50aXR5KTtcbiAgICB9XG5cbiAgICBnZXQgcGFyZW50RW50aXR5KCk6IE5hbWVkRW50aXR5IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudEVudGl0eTtcbiAgICB9XG5cbiAgICBzZXQgcGFyZW50RW50aXR5KHBhcmVudEVudGl0eTogTmFtZWRFbnRpdHkpIHtcbiAgICAgICAgdGhpcy5fcGFyZW50RW50aXR5ID0gcGFyZW50RW50aXR5O1xuICAgICAgICBwYXJlbnRFbnRpdHkuYWRkQWxpYXModGhpcyk7XG4gICAgfVxuXG4gICAgZ2V0IGFsaWFzZWRFbnRpdHkoKTogVHlwZSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hbGlhc2VkRW50aXR5O1xuICAgIH1cblxuICAgIHNldCBhbGlhc2VkRW50aXR5KGFsaWFzZWRFbnRpdHk6IFR5cGUpIHtcbiAgICAgICAgdGhpcy5fYWxpYXNlZEVudGl0eSA9IGFsaWFzZWRFbnRpdHk7XG4gICAgICAgIGFsaWFzZWRFbnRpdHkuYWRkVHlwZUFsaWFzKHRoaXMpO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXJyb3dfZnVuY3Rpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ZhbWl4L21vZGVsL2ZhbWl4L2Fycm93X2Z1bmN0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1FQUE4RDtBQUM5RCwyREFBdUQ7QUFFdkQsTUFBYSxhQUFjLFNBQVEsb0NBQWdCO0lBRTFDLE9BQU87UUFDWixNQUFNLElBQUksR0FBc0IsSUFBSSx1Q0FBaUIsQ0FBQyxlQUFlLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDN0UsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxRQUEyQjtRQUN4RCxLQUFLLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztDQUNGO0FBWEQsc0NBV0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYW1peEpTT05FeHBvcnRlciB9IGZyb20gXCIuLi8uLi9mYW1peF9KU09OX2V4cG9ydGVyXCI7XG5pbXBvcnQgeyBCZWhhdmlvcmFsRW50aXR5IH0gZnJvbSBcIi4vYmVoYXZpb3JhbF9lbnRpdHlcIjtcblxuZXhwb3J0IGNsYXNzIEFycm93RnVuY3Rpb24gZXh0ZW5kcyBCZWhhdmlvcmFsRW50aXR5IHtcblxuICBwdWJsaWMgZ2V0SlNPTigpOiBzdHJpbmcge1xuICAgIGNvbnN0IGpzb246IEZhbWl4SlNPTkV4cG9ydGVyID0gbmV3IEZhbWl4SlNPTkV4cG9ydGVyKFwiQXJyb3dGdW5jdGlvblwiLCB0aGlzKTtcbiAgICB0aGlzLmFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGpzb24pO1xuICAgIHJldHVybiBqc29uLmdldEpTT04oKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRQcm9wZXJ0aWVzVG9FeHBvcnRlcihleHBvcnRlcjogRmFtaXhKU09ORXhwb3J0ZXIpOiB2b2lkIHtcbiAgICBzdXBlci5hZGRQcm9wZXJ0aWVzVG9FeHBvcnRlcihleHBvcnRlcik7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.BehavioralEntity = void 0;
|
|
4
|
+
const famix_JSON_exporter_1 = require("../../famix_JSON_exporter");
|
|
5
|
+
const container_entity_1 = require("./container_entity");
|
|
6
|
+
class BehavioralEntity extends container_entity_1.ContainerEntity {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this._parameters = new Set();
|
|
10
|
+
this._incomingInvocations = new Set();
|
|
11
|
+
this._genericParameters = new Set();
|
|
12
|
+
}
|
|
13
|
+
addParameter(parameter) {
|
|
14
|
+
if (!this._parameters.has(parameter)) {
|
|
15
|
+
this._parameters.add(parameter);
|
|
16
|
+
parameter.parentEntity = this;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
addIncomingInvocation(incomingInvocation) {
|
|
20
|
+
if (!this._incomingInvocations.has(incomingInvocation)) {
|
|
21
|
+
this._incomingInvocations.add(incomingInvocation);
|
|
22
|
+
incomingInvocation.addCandidate(this);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
addGenericParameter(genericParameter) {
|
|
26
|
+
if (!this._genericParameters.has(genericParameter)) {
|
|
27
|
+
this._genericParameters.add(genericParameter);
|
|
28
|
+
genericParameter.parentGeneric = this;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
clearGenericParameters() {
|
|
32
|
+
this._genericParameters.clear();
|
|
33
|
+
}
|
|
34
|
+
getJSON() {
|
|
35
|
+
const json = new famix_JSON_exporter_1.FamixJSONExporter("BehavioralEntity", this);
|
|
36
|
+
this.addPropertiesToExporter(json);
|
|
37
|
+
return json.getJSON();
|
|
38
|
+
}
|
|
39
|
+
addPropertiesToExporter(exporter) {
|
|
40
|
+
super.addPropertiesToExporter(exporter);
|
|
41
|
+
exporter.addProperty("signature", this.signature);
|
|
42
|
+
exporter.addProperty("parameters", this.parameters);
|
|
43
|
+
exporter.addProperty("numberOfParameters", this.numberOfParameters);
|
|
44
|
+
exporter.addProperty("incomingInvocations", this.incomingInvocations);
|
|
45
|
+
exporter.addProperty("declaredType", this.declaredType);
|
|
46
|
+
/* don't add the property here, since it doesn't apply to all subclasses */
|
|
47
|
+
// exporter.addProperty("genericParameters", this.getGenericParameters());
|
|
48
|
+
}
|
|
49
|
+
get signature() {
|
|
50
|
+
return this._signature;
|
|
51
|
+
}
|
|
52
|
+
set signature(signature) {
|
|
53
|
+
this._signature = signature;
|
|
54
|
+
}
|
|
55
|
+
get parameters() {
|
|
56
|
+
return this._parameters;
|
|
57
|
+
}
|
|
58
|
+
get numberOfParameters() {
|
|
59
|
+
return this._numberOfParameters;
|
|
60
|
+
}
|
|
61
|
+
set numberOfParameters(numberOfParameters) {
|
|
62
|
+
this._numberOfParameters = numberOfParameters;
|
|
63
|
+
}
|
|
64
|
+
get incomingInvocations() {
|
|
65
|
+
return this._incomingInvocations;
|
|
66
|
+
}
|
|
67
|
+
get declaredType() {
|
|
68
|
+
return this._declaredType;
|
|
69
|
+
}
|
|
70
|
+
set declaredType(declaredType) {
|
|
71
|
+
this._declaredType = declaredType;
|
|
72
|
+
declaredType.addBehavioralEntityWithDeclaredType(this);
|
|
73
|
+
}
|
|
74
|
+
get genericParameters() {
|
|
75
|
+
return this._genericParameters;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
exports.BehavioralEntity = BehavioralEntity;
|
|
79
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmVoYXZpb3JhbF9lbnRpdHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ZhbWl4L21vZGVsL2ZhbWl4L2JlaGF2aW9yYWxfZW50aXR5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1FQUE4RDtBQUU5RCx5REFBcUQ7QUFLckQsTUFBYSxnQkFBaUIsU0FBUSxrQ0FBZTtJQUFyRDs7UUFHWSxnQkFBVyxHQUFtQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBVXhDLHlCQUFvQixHQUFvQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBVWxELHVCQUFrQixHQUF1QixJQUFJLEdBQUcsRUFBRSxDQUFDO0lBa0UvRCxDQUFDO0lBcEZVLFlBQVksQ0FBQyxTQUFvQjtRQUNwQyxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQztZQUNuQyxJQUFJLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztZQUNoQyxTQUFTLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUNsQyxDQUFDO0lBQ0wsQ0FBQztJQUtNLHFCQUFxQixDQUFDLGtCQUE4QjtRQUN2RCxJQUFJLENBQUMsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLENBQUM7WUFDckQsSUFBSSxDQUFDLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1lBQ2xELGtCQUFrQixDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUMxQyxDQUFDO0lBQ0wsQ0FBQztJQUtNLG1CQUFtQixDQUFDLGdCQUErQjtRQUN0RCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzlDLGdCQUFnQixDQUFDLGFBQWEsR0FBRyxJQUFJLENBQUM7UUFDMUMsQ0FBQztJQUNMLENBQUM7SUFFRCxzQkFBc0I7UUFDbEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEtBQUssRUFBRSxDQUFDO0lBQ3BDLENBQUM7SUFFTSxPQUFPO1FBQ1YsTUFBTSxJQUFJLEdBQXNCLElBQUksdUNBQWlCLENBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDaEYsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQzFCLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxRQUEyQjtRQUN0RCxLQUFLLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ2xELFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRCxRQUFRLENBQUMsV0FBVyxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3BFLFFBQVEsQ0FBQyxXQUFXLENBQUMscUJBQXFCLEVBQUUsSUFBSSxDQUFDLG1CQUFtQixDQUFDLENBQUM7UUFDdEUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ3hELDJFQUEyRTtRQUMzRSw2RUFBNkU7SUFDakYsQ0FBQztJQUVELElBQUksU0FBUztRQUNULE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUMzQixDQUFDO0lBRUQsSUFBSSxTQUFTLENBQUMsU0FBaUI7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDaEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxrQkFBa0I7UUFDbEIsT0FBTyxJQUFJLENBQUMsbUJBQW1CLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksa0JBQWtCLENBQUMsa0JBQTBCO1FBQzdDLElBQUksQ0FBQyxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQztJQUNsRCxDQUFDO0lBRUQsSUFBSSxtQkFBbUI7UUFDbkIsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksWUFBWTtRQUNaLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQztJQUM5QixDQUFDO0lBRUQsSUFBSSxZQUFZLENBQUMsWUFBa0I7UUFDL0IsSUFBSSxDQUFDLGFBQWEsR0FBRyxZQUFZLENBQUM7UUFDbEMsWUFBWSxDQUFDLG1DQUFtQyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNuQyxDQUFDO0NBQ0o7QUF6RkQsNENBeUZDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFtaXhKU09ORXhwb3J0ZXIgfSBmcm9tIFwiLi4vLi4vZmFtaXhfSlNPTl9leHBvcnRlclwiO1xuaW1wb3J0IHsgVHlwZSB9IGZyb20gXCIuL3R5cGVcIjtcbmltcG9ydCB7IENvbnRhaW5lckVudGl0eSB9IGZyb20gXCIuL2NvbnRhaW5lcl9lbnRpdHlcIjtcbmltcG9ydCB7IFBhcmFtZXRlciB9IGZyb20gXCIuL3BhcmFtZXRlclwiO1xuaW1wb3J0IHsgSW52b2NhdGlvbiB9IGZyb20gXCIuL2ludm9jYXRpb25cIjtcbmltcG9ydCB7IFBhcmFtZXRlclR5cGUgfSBmcm9tIFwiLi9wYXJhbWV0ZXJfdHlwZVwiO1xuXG5leHBvcnQgY2xhc3MgQmVoYXZpb3JhbEVudGl0eSBleHRlbmRzIENvbnRhaW5lckVudGl0eSB7XG5cbiAgICBwcml2YXRlIF9zaWduYXR1cmUhOiBzdHJpbmc7XG4gICAgcHJpdmF0ZSBfcGFyYW1ldGVyczogU2V0PFBhcmFtZXRlcj4gPSBuZXcgU2V0KCk7XG5cbiAgICBwdWJsaWMgYWRkUGFyYW1ldGVyKHBhcmFtZXRlcjogUGFyYW1ldGVyKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fcGFyYW1ldGVycy5oYXMocGFyYW1ldGVyKSkge1xuICAgICAgICAgICAgdGhpcy5fcGFyYW1ldGVycy5hZGQocGFyYW1ldGVyKTtcbiAgICAgICAgICAgIHBhcmFtZXRlci5wYXJlbnRFbnRpdHkgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfbnVtYmVyT2ZQYXJhbWV0ZXJzITogbnVtYmVyO1xuICAgIHByaXZhdGUgX2luY29taW5nSW52b2NhdGlvbnM6IFNldDxJbnZvY2F0aW9uPiA9IG5ldyBTZXQoKTtcblxuICAgIHB1YmxpYyBhZGRJbmNvbWluZ0ludm9jYXRpb24oaW5jb21pbmdJbnZvY2F0aW9uOiBJbnZvY2F0aW9uKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5faW5jb21pbmdJbnZvY2F0aW9ucy5oYXMoaW5jb21pbmdJbnZvY2F0aW9uKSkge1xuICAgICAgICAgICAgdGhpcy5faW5jb21pbmdJbnZvY2F0aW9ucy5hZGQoaW5jb21pbmdJbnZvY2F0aW9uKTtcbiAgICAgICAgICAgIGluY29taW5nSW52b2NhdGlvbi5hZGRDYW5kaWRhdGUodGhpcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIF9kZWNsYXJlZFR5cGUhOiBUeXBlO1xuICAgIHByaXZhdGUgX2dlbmVyaWNQYXJhbWV0ZXJzOiBTZXQ8UGFyYW1ldGVyVHlwZT4gPSBuZXcgU2V0KCk7XG5cbiAgICBwdWJsaWMgYWRkR2VuZXJpY1BhcmFtZXRlcihnZW5lcmljUGFyYW1ldGVyOiBQYXJhbWV0ZXJUeXBlKTogdm9pZCB7XG4gICAgICAgIGlmICghdGhpcy5fZ2VuZXJpY1BhcmFtZXRlcnMuaGFzKGdlbmVyaWNQYXJhbWV0ZXIpKSB7XG4gICAgICAgICAgICB0aGlzLl9nZW5lcmljUGFyYW1ldGVycy5hZGQoZ2VuZXJpY1BhcmFtZXRlcik7XG4gICAgICAgICAgICBnZW5lcmljUGFyYW1ldGVyLnBhcmVudEdlbmVyaWMgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgY2xlYXJHZW5lcmljUGFyYW1ldGVycygpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5fZ2VuZXJpY1BhcmFtZXRlcnMuY2xlYXIoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0SlNPTigpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBqc29uOiBGYW1peEpTT05FeHBvcnRlciA9IG5ldyBGYW1peEpTT05FeHBvcnRlcihcIkJlaGF2aW9yYWxFbnRpdHlcIiwgdGhpcyk7XG4gICAgICAgIHRoaXMuYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoanNvbik7XG4gICAgICAgIHJldHVybiBqc29uLmdldEpTT04oKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoZXhwb3J0ZXI6IEZhbWl4SlNPTkV4cG9ydGVyKTogdm9pZCB7XG4gICAgICAgIHN1cGVyLmFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGV4cG9ydGVyKTtcbiAgICAgICAgZXhwb3J0ZXIuYWRkUHJvcGVydHkoXCJzaWduYXR1cmVcIiwgdGhpcy5zaWduYXR1cmUpO1xuICAgICAgICBleHBvcnRlci5hZGRQcm9wZXJ0eShcInBhcmFtZXRlcnNcIiwgdGhpcy5wYXJhbWV0ZXJzKTtcbiAgICAgICAgZXhwb3J0ZXIuYWRkUHJvcGVydHkoXCJudW1iZXJPZlBhcmFtZXRlcnNcIiwgdGhpcy5udW1iZXJPZlBhcmFtZXRlcnMpO1xuICAgICAgICBleHBvcnRlci5hZGRQcm9wZXJ0eShcImluY29taW5nSW52b2NhdGlvbnNcIiwgdGhpcy5pbmNvbWluZ0ludm9jYXRpb25zKTtcbiAgICAgICAgZXhwb3J0ZXIuYWRkUHJvcGVydHkoXCJkZWNsYXJlZFR5cGVcIiwgdGhpcy5kZWNsYXJlZFR5cGUpO1xuICAgICAgICAvKiBkb24ndCBhZGQgdGhlIHByb3BlcnR5IGhlcmUsIHNpbmNlIGl0IGRvZXNuJ3QgYXBwbHkgdG8gYWxsIHN1YmNsYXNzZXMgKi9cbiAgICAgICAgLy8gICAgZXhwb3J0ZXIuYWRkUHJvcGVydHkoXCJnZW5lcmljUGFyYW1ldGVyc1wiLCB0aGlzLmdldEdlbmVyaWNQYXJhbWV0ZXJzKCkpO1xuICAgIH1cblxuICAgIGdldCBzaWduYXR1cmUoKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3NpZ25hdHVyZTtcbiAgICB9XG5cbiAgICBzZXQgc2lnbmF0dXJlKHNpZ25hdHVyZTogc3RyaW5nKSB7XG4gICAgICAgIHRoaXMuX3NpZ25hdHVyZSA9IHNpZ25hdHVyZTtcbiAgICB9XG5cbiAgICBnZXQgcGFyYW1ldGVycygpOiBTZXQ8UGFyYW1ldGVyPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9wYXJhbWV0ZXJzO1xuICAgIH1cblxuICAgIGdldCBudW1iZXJPZlBhcmFtZXRlcnMoKTogbnVtYmVyIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX251bWJlck9mUGFyYW1ldGVycztcbiAgICB9XG5cbiAgICBzZXQgbnVtYmVyT2ZQYXJhbWV0ZXJzKG51bWJlck9mUGFyYW1ldGVyczogbnVtYmVyKSB7XG4gICAgICAgIHRoaXMuX251bWJlck9mUGFyYW1ldGVycyA9IG51bWJlck9mUGFyYW1ldGVycztcbiAgICB9XG5cbiAgICBnZXQgaW5jb21pbmdJbnZvY2F0aW9ucygpOiBTZXQ8SW52b2NhdGlvbj4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faW5jb21pbmdJbnZvY2F0aW9ucztcbiAgICB9XG5cbiAgICBnZXQgZGVjbGFyZWRUeXBlKCk6IFR5cGUge1xuICAgICAgICByZXR1cm4gdGhpcy5fZGVjbGFyZWRUeXBlO1xuICAgIH1cblxuICAgIHNldCBkZWNsYXJlZFR5cGUoZGVjbGFyZWRUeXBlOiBUeXBlKSB7XG4gICAgICAgIHRoaXMuX2RlY2xhcmVkVHlwZSA9IGRlY2xhcmVkVHlwZTtcbiAgICAgICAgZGVjbGFyZWRUeXBlLmFkZEJlaGF2aW9yYWxFbnRpdHlXaXRoRGVjbGFyZWRUeXBlKHRoaXMpO1xuICAgIH1cblxuICAgIGdldCBnZW5lcmljUGFyYW1ldGVycygpOiBTZXQ8UGFyYW1ldGVyVHlwZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZ2VuZXJpY1BhcmFtZXRlcnM7XG4gICAgfVxufVxuIl19
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Class = void 0;
|
|
4
|
+
const famix_JSON_exporter_1 = require("../../famix_JSON_exporter");
|
|
5
|
+
const type_1 = require("./type");
|
|
6
|
+
class Class extends type_1.Type {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this._properties = new Set();
|
|
10
|
+
this._methods = new Set();
|
|
11
|
+
this._superInheritances = new Set();
|
|
12
|
+
this._subInheritances = new Set();
|
|
13
|
+
}
|
|
14
|
+
addProperty(property) {
|
|
15
|
+
if (!this._properties.has(property)) {
|
|
16
|
+
this._properties.add(property);
|
|
17
|
+
property.parentEntity = this;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
addMethod(method) {
|
|
21
|
+
if (!this._methods.has(method)) {
|
|
22
|
+
this._methods.add(method);
|
|
23
|
+
method.parentEntity = this;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
addSuperInheritance(superInheritance) {
|
|
27
|
+
if (!this._superInheritances.has(superInheritance)) {
|
|
28
|
+
this._superInheritances.add(superInheritance);
|
|
29
|
+
superInheritance.subclass = this;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
addSubInheritance(subInheritance) {
|
|
33
|
+
if (!this._subInheritances.has(subInheritance)) {
|
|
34
|
+
this._subInheritances.add(subInheritance);
|
|
35
|
+
subInheritance.superclass = this;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
getJSON() {
|
|
39
|
+
const json = new famix_JSON_exporter_1.FamixJSONExporter("Class", this);
|
|
40
|
+
this.addPropertiesToExporter(json);
|
|
41
|
+
return json.getJSON();
|
|
42
|
+
}
|
|
43
|
+
addPropertiesToExporter(exporter) {
|
|
44
|
+
super.addPropertiesToExporter(exporter);
|
|
45
|
+
exporter.addProperty("isAbstract", this.isAbstract);
|
|
46
|
+
exporter.addProperty("attributes", this.properties); // Moose (10) codes them as attributes
|
|
47
|
+
exporter.addProperty("methods", this.methods);
|
|
48
|
+
exporter.addProperty("superInheritances", this.superInheritances);
|
|
49
|
+
exporter.addProperty("subInheritances", this.subInheritances);
|
|
50
|
+
}
|
|
51
|
+
get isAbstract() {
|
|
52
|
+
return this._isAbstract;
|
|
53
|
+
}
|
|
54
|
+
set isAbstract(isAbstract) {
|
|
55
|
+
this._isAbstract = isAbstract;
|
|
56
|
+
}
|
|
57
|
+
get properties() {
|
|
58
|
+
return this._properties;
|
|
59
|
+
}
|
|
60
|
+
get methods() {
|
|
61
|
+
return this._methods;
|
|
62
|
+
}
|
|
63
|
+
get superInheritances() {
|
|
64
|
+
return this._superInheritances;
|
|
65
|
+
}
|
|
66
|
+
get subInheritances() {
|
|
67
|
+
return this._subInheritances;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
exports.Class = Class;
|
|
71
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xhc3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvbGliL2ZhbWl4L21vZGVsL2ZhbWl4L2NsYXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1FQUE4RDtBQUM5RCxpQ0FBOEI7QUFLOUIsTUFBYSxLQUFNLFNBQVEsV0FBSTtJQUEvQjs7UUFHWSxnQkFBVyxHQUFrQixJQUFJLEdBQUcsRUFBRSxDQUFDO1FBU3ZDLGFBQVEsR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQVNsQyx1QkFBa0IsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQVNqRCxxQkFBZ0IsR0FBcUIsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQWdEM0QsQ0FBQztJQXpFVSxXQUFXLENBQUMsUUFBa0I7UUFDakMsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0IsUUFBUSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDakMsQ0FBQztJQUNMLENBQUM7SUFJTSxTQUFTLENBQUMsTUFBYztRQUMzQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQztZQUMxQixNQUFNLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQztRQUMvQixDQUFDO0lBQ0wsQ0FBQztJQUlNLG1CQUFtQixDQUFDLGdCQUE2QjtRQUNwRCxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFLENBQUM7WUFDakQsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO1lBQzlDLGdCQUFnQixDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUM7UUFDckMsQ0FBQztJQUNMLENBQUM7SUFJTSxpQkFBaUIsQ0FBQyxjQUEyQjtRQUNoRCxJQUFJLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUMsRUFBRSxDQUFDO1lBQzdDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLENBQUMsY0FBYyxDQUFDLENBQUM7WUFDMUMsY0FBYyxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7UUFDckMsQ0FBQztJQUNMLENBQUM7SUFHTSxPQUFPO1FBQ1YsTUFBTSxJQUFJLEdBQXNCLElBQUksdUNBQWlCLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3JFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sdUJBQXVCLENBQUMsUUFBMkI7UUFDdEQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLFFBQVEsQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNwRCxRQUFRLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxzQ0FBc0M7UUFDM0YsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLFFBQVEsQ0FBQyxXQUFXLENBQUMsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDbEUsUUFBUSxDQUFDLFdBQVcsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxVQUFVLENBQUMsVUFBbUI7UUFDOUIsSUFBSSxDQUFDLFdBQVcsR0FBRyxVQUFVLENBQUM7SUFDbEMsQ0FBQztJQUVELElBQUksVUFBVTtRQUNWLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLGlCQUFpQjtRQUNqQixPQUFPLElBQUksQ0FBQyxrQkFBa0IsQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBSSxlQUFlO1FBQ2YsT0FBTyxJQUFJLENBQUMsZ0JBQWdCLENBQUM7SUFDakMsQ0FBQztDQUNKO0FBOUVELHNCQThFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhbWl4SlNPTkV4cG9ydGVyIH0gZnJvbSBcIi4uLy4uL2ZhbWl4X0pTT05fZXhwb3J0ZXJcIjtcbmltcG9ydCB7IFR5cGUgfSBmcm9tIFwiLi90eXBlXCI7XG5pbXBvcnQgeyBNZXRob2QgfSBmcm9tIFwiLi9tZXRob2RcIjtcbmltcG9ydCB7IFByb3BlcnR5IH0gZnJvbSBcIi4vcHJvcGVydHlcIjtcbmltcG9ydCB7IEluaGVyaXRhbmNlIH0gZnJvbSBcIi4vaW5oZXJpdGFuY2VcIjtcblxuZXhwb3J0IGNsYXNzIENsYXNzIGV4dGVuZHMgVHlwZSB7XG5cbiAgICBwcml2YXRlIF9pc0Fic3RyYWN0ITogYm9vbGVhbjtcbiAgICBwcml2YXRlIF9wcm9wZXJ0aWVzOiBTZXQ8UHJvcGVydHk+ID0gbmV3IFNldCgpO1xuXG4gICAgcHVibGljIGFkZFByb3BlcnR5KHByb3BlcnR5OiBQcm9wZXJ0eSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3Byb3BlcnRpZXMuaGFzKHByb3BlcnR5KSkge1xuICAgICAgICAgICAgdGhpcy5fcHJvcGVydGllcy5hZGQocHJvcGVydHkpO1xuICAgICAgICAgICAgcHJvcGVydHkucGFyZW50RW50aXR5ID0gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX21ldGhvZHM6IFNldDxNZXRob2Q+ID0gbmV3IFNldCgpO1xuXG4gICAgcHVibGljIGFkZE1ldGhvZChtZXRob2Q6IE1ldGhvZCk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX21ldGhvZHMuaGFzKG1ldGhvZCkpIHtcbiAgICAgICAgICAgIHRoaXMuX21ldGhvZHMuYWRkKG1ldGhvZCk7XG4gICAgICAgICAgICBtZXRob2QucGFyZW50RW50aXR5ID0gdGhpcztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgX3N1cGVySW5oZXJpdGFuY2VzOiBTZXQ8SW5oZXJpdGFuY2U+ID0gbmV3IFNldCgpO1xuXG4gICAgcHVibGljIGFkZFN1cGVySW5oZXJpdGFuY2Uoc3VwZXJJbmhlcml0YW5jZTogSW5oZXJpdGFuY2UpOiB2b2lkIHtcbiAgICAgICAgaWYgKCF0aGlzLl9zdXBlckluaGVyaXRhbmNlcy5oYXMoc3VwZXJJbmhlcml0YW5jZSkpIHtcbiAgICAgICAgICAgIHRoaXMuX3N1cGVySW5oZXJpdGFuY2VzLmFkZChzdXBlckluaGVyaXRhbmNlKTtcbiAgICAgICAgICAgIHN1cGVySW5oZXJpdGFuY2Uuc3ViY2xhc3MgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBfc3ViSW5oZXJpdGFuY2VzOiBTZXQ8SW5oZXJpdGFuY2U+ID0gbmV3IFNldCgpO1xuXG4gICAgcHVibGljIGFkZFN1YkluaGVyaXRhbmNlKHN1YkluaGVyaXRhbmNlOiBJbmhlcml0YW5jZSk6IHZvaWQge1xuICAgICAgICBpZiAoIXRoaXMuX3N1YkluaGVyaXRhbmNlcy5oYXMoc3ViSW5oZXJpdGFuY2UpKSB7XG4gICAgICAgICAgICB0aGlzLl9zdWJJbmhlcml0YW5jZXMuYWRkKHN1YkluaGVyaXRhbmNlKTtcbiAgICAgICAgICAgIHN1YkluaGVyaXRhbmNlLnN1cGVyY2xhc3MgPSB0aGlzO1xuICAgICAgICB9XG4gICAgfVxuXG5cbiAgICBwdWJsaWMgZ2V0SlNPTigpOiBzdHJpbmcge1xuICAgICAgICBjb25zdCBqc29uOiBGYW1peEpTT05FeHBvcnRlciA9IG5ldyBGYW1peEpTT05FeHBvcnRlcihcIkNsYXNzXCIsIHRoaXMpO1xuICAgICAgICB0aGlzLmFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGpzb24pO1xuICAgICAgICByZXR1cm4ganNvbi5nZXRKU09OKCk7XG4gICAgfVxuXG4gICAgcHVibGljIGFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGV4cG9ydGVyOiBGYW1peEpTT05FeHBvcnRlcik6IHZvaWQge1xuICAgICAgICBzdXBlci5hZGRQcm9wZXJ0aWVzVG9FeHBvcnRlcihleHBvcnRlcik7XG4gICAgICAgIGV4cG9ydGVyLmFkZFByb3BlcnR5KFwiaXNBYnN0cmFjdFwiLCB0aGlzLmlzQWJzdHJhY3QpO1xuICAgICAgICBleHBvcnRlci5hZGRQcm9wZXJ0eShcImF0dHJpYnV0ZXNcIiwgdGhpcy5wcm9wZXJ0aWVzKTsgLy8gTW9vc2UgKDEwKSBjb2RlcyB0aGVtIGFzIGF0dHJpYnV0ZXNcbiAgICAgICAgZXhwb3J0ZXIuYWRkUHJvcGVydHkoXCJtZXRob2RzXCIsIHRoaXMubWV0aG9kcyk7XG4gICAgICAgIGV4cG9ydGVyLmFkZFByb3BlcnR5KFwic3VwZXJJbmhlcml0YW5jZXNcIiwgdGhpcy5zdXBlckluaGVyaXRhbmNlcyk7XG4gICAgICAgIGV4cG9ydGVyLmFkZFByb3BlcnR5KFwic3ViSW5oZXJpdGFuY2VzXCIsIHRoaXMuc3ViSW5oZXJpdGFuY2VzKTtcbiAgICB9XG5cbiAgICBnZXQgaXNBYnN0cmFjdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQWJzdHJhY3Q7XG4gICAgfVxuXG4gICAgc2V0IGlzQWJzdHJhY3QoaXNBYnN0cmFjdDogYm9vbGVhbikge1xuICAgICAgICB0aGlzLl9pc0Fic3RyYWN0ID0gaXNBYnN0cmFjdDtcbiAgICB9XG5cbiAgICBnZXQgcHJvcGVydGllcygpOiBTZXQ8UHJvcGVydHk+IHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX3Byb3BlcnRpZXM7XG4gICAgfVxuXG4gICAgZ2V0IG1ldGhvZHMoKTogU2V0PE1ldGhvZD4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fbWV0aG9kcztcbiAgICB9XG5cbiAgICBnZXQgc3VwZXJJbmhlcml0YW5jZXMoKTogU2V0PEluaGVyaXRhbmNlPiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zdXBlckluaGVyaXRhbmNlcztcbiAgICB9XG5cbiAgICBnZXQgc3ViSW5oZXJpdGFuY2VzKCk6IFNldDxJbmhlcml0YW5jZT4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc3ViSW5oZXJpdGFuY2VzO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Comment = void 0;
|
|
4
|
+
const famix_JSON_exporter_1 = require("../../famix_JSON_exporter");
|
|
5
|
+
const sourced_entity_1 = require("./sourced_entity");
|
|
6
|
+
class Comment extends sourced_entity_1.SourcedEntity {
|
|
7
|
+
getJSON() {
|
|
8
|
+
const json = new famix_JSON_exporter_1.FamixJSONExporter("Comment", this);
|
|
9
|
+
this.addPropertiesToExporter(json);
|
|
10
|
+
return json.getJSON();
|
|
11
|
+
}
|
|
12
|
+
addPropertiesToExporter(exporter) {
|
|
13
|
+
super.addPropertiesToExporter(exporter);
|
|
14
|
+
exporter.addProperty("isJSDoc", this.isJSDoc);
|
|
15
|
+
exporter.addProperty("commentedEntity", this.container);
|
|
16
|
+
exporter.addProperty("content", this.content);
|
|
17
|
+
}
|
|
18
|
+
get isJSDoc() {
|
|
19
|
+
return this._isJSDoc;
|
|
20
|
+
}
|
|
21
|
+
set isJSDoc(isJSDoc) {
|
|
22
|
+
this._isJSDoc = isJSDoc;
|
|
23
|
+
}
|
|
24
|
+
get container() {
|
|
25
|
+
return this._container;
|
|
26
|
+
}
|
|
27
|
+
set container(container) {
|
|
28
|
+
this._container = container;
|
|
29
|
+
container.addComment(this);
|
|
30
|
+
}
|
|
31
|
+
get content() {
|
|
32
|
+
return this._content;
|
|
33
|
+
}
|
|
34
|
+
set content(content) {
|
|
35
|
+
this._content = content;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
exports.Comment = Comment;
|
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tbWVudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9saWIvZmFtaXgvbW9kZWwvZmFtaXgvY29tbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxtRUFBOEQ7QUFDOUQscURBQWlEO0FBRWpELE1BQWEsT0FBUSxTQUFRLDhCQUFhO0lBTWpDLE9BQU87UUFDWixNQUFNLElBQUksR0FBc0IsSUFBSSx1Q0FBaUIsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdkUsSUFBSSxDQUFDLHVCQUF1QixDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25DLE9BQU8sSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO0lBQ3hCLENBQUM7SUFFTSx1QkFBdUIsQ0FBQyxRQUEyQjtRQUN4RCxLQUFLLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDeEMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlDLFFBQVEsQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBQ3hELFFBQVEsQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUMsSUFBSSxPQUFPO1FBQ1AsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFJLE9BQU8sQ0FBQyxPQUFnQjtRQUN4QixJQUFJLENBQUMsUUFBUSxHQUFHLE9BQU8sQ0FBQztJQUM1QixDQUFDO0lBRUQsSUFBSSxTQUFTO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFNBQVMsQ0FBQyxTQUF3QjtRQUNsQyxJQUFJLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQztRQUM1QixTQUFTLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQy9CLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLE9BQWU7UUFDdkIsSUFBSSxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUM7SUFDNUIsQ0FBQztDQUNKO0FBM0NELDBCQTJDQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZhbWl4SlNPTkV4cG9ydGVyIH0gZnJvbSBcIi4uLy4uL2ZhbWl4X0pTT05fZXhwb3J0ZXJcIjtcbmltcG9ydCB7IFNvdXJjZWRFbnRpdHkgfSBmcm9tIFwiLi9zb3VyY2VkX2VudGl0eVwiO1xuXG5leHBvcnQgY2xhc3MgQ29tbWVudCBleHRlbmRzIFNvdXJjZWRFbnRpdHkge1xuXG4gIHByaXZhdGUgX2lzSlNEb2MhOiBib29sZWFuO1xuICBwcml2YXRlIF9jb250YWluZXIhOiBTb3VyY2VkRW50aXR5O1xuICBwcml2YXRlIF9jb250ZW50ITogc3RyaW5nO1xuXG4gIHB1YmxpYyBnZXRKU09OKCk6IHN0cmluZyB7XG4gICAgY29uc3QganNvbjogRmFtaXhKU09ORXhwb3J0ZXIgPSBuZXcgRmFtaXhKU09ORXhwb3J0ZXIoXCJDb21tZW50XCIsIHRoaXMpO1xuICAgIHRoaXMuYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoanNvbik7XG4gICAgcmV0dXJuIGpzb24uZ2V0SlNPTigpO1xuICB9XG5cbiAgcHVibGljIGFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGV4cG9ydGVyOiBGYW1peEpTT05FeHBvcnRlcik6IHZvaWQge1xuICAgIHN1cGVyLmFkZFByb3BlcnRpZXNUb0V4cG9ydGVyKGV4cG9ydGVyKTtcbiAgICBleHBvcnRlci5hZGRQcm9wZXJ0eShcImlzSlNEb2NcIiwgdGhpcy5pc0pTRG9jKTtcbiAgICBleHBvcnRlci5hZGRQcm9wZXJ0eShcImNvbW1lbnRlZEVudGl0eVwiLCB0aGlzLmNvbnRhaW5lcik7XG4gICAgZXhwb3J0ZXIuYWRkUHJvcGVydHkoXCJjb250ZW50XCIsIHRoaXMuY29udGVudCk7XG4gIH1cblxuICAgIGdldCBpc0pTRG9jKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNKU0RvYztcbiAgICB9XG5cbiAgICBzZXQgaXNKU0RvYyhpc0pTRG9jOiBib29sZWFuKSB7XG4gICAgICAgIHRoaXMuX2lzSlNEb2MgPSBpc0pTRG9jO1xuICAgIH1cblxuICAgIGdldCBjb250YWluZXIoKTogU291cmNlZEVudGl0eSB7XG4gICAgICAgIHJldHVybiB0aGlzLl9jb250YWluZXI7XG4gICAgfVxuXG4gICAgc2V0IGNvbnRhaW5lcihjb250YWluZXI6IFNvdXJjZWRFbnRpdHkpIHtcbiAgICAgICAgdGhpcy5fY29udGFpbmVyID0gY29udGFpbmVyO1xuICAgICAgICBjb250YWluZXIuYWRkQ29tbWVudCh0aGlzKTtcbiAgICB9XG5cbiAgICBnZXQgY29udGVudCgpOiBzdHJpbmcge1xuICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudDtcbiAgICB9XG5cbiAgICBzZXQgY29udGVudChjb250ZW50OiBzdHJpbmcpIHtcbiAgICAgICAgdGhpcy5fY29udGVudCA9IGNvbnRlbnQ7XG4gICAgfVxufVxuIl19
|