ts2famix 2.1.0-beta.1 → 3.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.
Files changed (193) hide show
  1. package/.eslintrc.json +24 -24
  2. package/LICENSE +24 -24
  3. package/README.md +78 -78
  4. package/dist/analyze.js +20 -10
  5. package/dist/analyze_functions/process_functions.js +109 -69
  6. package/dist/famix_functions/EntityDictionary.js +691 -606
  7. package/dist/famix_functions/helpers_creation.js +35 -19
  8. package/dist/fqn.js +351 -18
  9. package/dist/lib/famix/famix_JSON_exporter.js +1 -1
  10. package/dist/lib/famix/famix_base_element.js +1 -1
  11. package/dist/lib/famix/famix_repository.js +31 -12
  12. package/dist/lib/famix/index.js +18 -8
  13. package/dist/lib/famix/model/famix/access.js +1 -1
  14. package/dist/lib/famix/model/famix/accessor.js +1 -1
  15. package/dist/lib/famix/model/famix/alias.js +1 -1
  16. package/dist/lib/famix/model/famix/arrow_function.js +1 -1
  17. package/dist/lib/famix/model/famix/behavioral_entity.js +1 -1
  18. package/dist/lib/famix/model/famix/class.js +1 -1
  19. package/dist/lib/famix/model/famix/comment.js +1 -1
  20. package/dist/lib/famix/model/famix/concretisation.js +1 -1
  21. package/dist/lib/famix/model/famix/container_entity.js +1 -1
  22. package/dist/lib/famix/model/famix/decorator.js +1 -1
  23. package/dist/lib/famix/model/famix/entity.js +1 -1
  24. package/dist/lib/famix/model/famix/enum.js +1 -1
  25. package/dist/lib/famix/model/famix/enum_value.js +1 -1
  26. package/dist/lib/famix/model/famix/function.js +1 -1
  27. package/dist/lib/famix/model/famix/import_clause.js +1 -1
  28. package/dist/lib/famix/model/famix/index.js +1 -1
  29. package/dist/lib/famix/model/famix/indexed_file_anchor.js +1 -1
  30. package/dist/lib/famix/model/famix/inheritance.js +1 -1
  31. package/dist/lib/famix/model/famix/interface.js +1 -1
  32. package/dist/lib/famix/model/famix/invocation.js +1 -1
  33. package/dist/lib/famix/model/famix/method.js +1 -1
  34. package/dist/lib/famix/model/famix/module.js +2 -2
  35. package/dist/lib/famix/model/famix/named_entity.js +1 -1
  36. package/dist/lib/famix/model/famix/parameter.js +1 -1
  37. package/dist/lib/famix/model/famix/parameter_concretisation.js +1 -1
  38. package/dist/lib/famix/model/famix/parameter_type.js +1 -1
  39. package/dist/lib/famix/model/famix/parametric_arrow_function.js +1 -1
  40. package/dist/lib/famix/model/famix/parametric_class.js +1 -1
  41. package/dist/lib/famix/model/famix/parametric_function.js +1 -1
  42. package/dist/lib/famix/model/famix/parametric_interface.js +1 -1
  43. package/dist/lib/famix/model/famix/parametric_method.js +1 -1
  44. package/dist/lib/famix/model/famix/primitive_type.js +1 -1
  45. package/dist/lib/famix/model/famix/property.js +1 -1
  46. package/dist/lib/famix/model/famix/reference.js +1 -1
  47. package/dist/lib/famix/model/famix/scoping_entity.js +1 -1
  48. package/dist/lib/famix/model/famix/script_entity.js +1 -1
  49. package/dist/lib/famix/model/famix/source_anchor.js +1 -1
  50. package/dist/lib/famix/model/famix/source_language.js +1 -1
  51. package/dist/lib/famix/model/famix/sourced_entity.js +1 -1
  52. package/dist/lib/famix/model/famix/structural_entity.js +1 -1
  53. package/dist/lib/famix/model/famix/type.js +1 -1
  54. package/dist/lib/famix/model/famix/variable.js +1 -1
  55. package/dist/lib/ts-complex/cyclomatic-service.js +1 -1
  56. package/dist/refactorer/refactor-getter-setter.js +18 -8
  57. package/dist/ts2famix-cli-wrapper.js +18 -8
  58. package/dist/ts2famix-cli.js +18 -8
  59. package/dist/ts2famix-tsconfig.js +18 -8
  60. package/doc-uml/famix-typescript-model.puml +619 -607
  61. package/doc-uml/famix-typescript-model.svg +1 -1
  62. package/eslint.config.mjs +28 -28
  63. package/jest.config.json +1 -1
  64. package/package.json +70 -70
  65. package/src/analyze.ts +120 -120
  66. package/src/analyze_functions/process_functions.ts +1069 -1040
  67. package/src/famix_functions/EntityDictionary.ts +2061 -2016
  68. package/src/famix_functions/helpers_creation.ts +143 -135
  69. package/src/fqn.ts +416 -50
  70. package/src/generate_uml.sh +20 -20
  71. package/src/lib/famix/License.md +22 -22
  72. package/src/lib/famix/famix_JSON_exporter.ts +56 -56
  73. package/src/lib/famix/famix_base_element.ts +22 -22
  74. package/src/lib/famix/famix_repository.ts +288 -278
  75. package/src/lib/famix/index.ts +8 -8
  76. package/src/lib/famix/model/famix/access.ts +50 -50
  77. package/src/lib/famix/model/famix/accessor.ts +15 -15
  78. package/src/lib/famix/model/famix/alias.ts +39 -39
  79. package/src/lib/famix/model/famix/arrow_function.ts +15 -15
  80. package/src/lib/famix/model/famix/behavioral_entity.ts +97 -97
  81. package/src/lib/famix/model/famix/class.ts +85 -85
  82. package/src/lib/famix/model/famix/comment.ts +47 -47
  83. package/src/lib/famix/model/famix/concretisation.ts +40 -40
  84. package/src/lib/famix/model/famix/container_entity.ts +160 -160
  85. package/src/lib/famix/model/famix/decorator.ts +37 -37
  86. package/src/lib/famix/model/famix/entity.ts +15 -15
  87. package/src/lib/famix/model/famix/enum.ts +30 -30
  88. package/src/lib/famix/model/famix/enum_value.ts +28 -28
  89. package/src/lib/famix/model/famix/function.ts +15 -15
  90. package/src/lib/famix/model/famix/import_clause.ts +51 -51
  91. package/src/lib/famix/model/famix/index.ts +41 -41
  92. package/src/lib/famix/model/famix/indexed_file_anchor.ts +46 -46
  93. package/src/lib/famix/model/famix/inheritance.ts +40 -40
  94. package/src/lib/famix/model/famix/interface.ts +75 -75
  95. package/src/lib/famix/model/famix/invocation.ts +65 -65
  96. package/src/lib/famix/model/famix/method.ts +89 -89
  97. package/src/lib/famix/model/famix/module.ts +71 -71
  98. package/src/lib/famix/model/famix/named_entity.ts +95 -95
  99. package/src/lib/famix/model/famix/parameter.ts +28 -28
  100. package/src/lib/famix/model/famix/parameter_concretisation.ts +51 -51
  101. package/src/lib/famix/model/famix/parameter_type.ts +58 -58
  102. package/src/lib/famix/model/famix/parametric_arrow_function.ts +32 -32
  103. package/src/lib/famix/model/famix/parametric_class.ts +49 -49
  104. package/src/lib/famix/model/famix/parametric_function.ts +32 -32
  105. package/src/lib/famix/model/famix/parametric_interface.ts +49 -49
  106. package/src/lib/famix/model/famix/parametric_method.ts +32 -32
  107. package/src/lib/famix/model/famix/primitive_type.ts +15 -15
  108. package/src/lib/famix/model/famix/property.ts +94 -94
  109. package/src/lib/famix/model/famix/reference.ts +40 -40
  110. package/src/lib/famix/model/famix/scoping_entity.ts +35 -35
  111. package/src/lib/famix/model/famix/script_entity.ts +34 -34
  112. package/src/lib/famix/model/famix/source_anchor.ts +30 -30
  113. package/src/lib/famix/model/famix/source_language.ts +35 -35
  114. package/src/lib/famix/model/famix/sourced_entity.ts +70 -70
  115. package/src/lib/famix/model/famix/structural_entity.ts +43 -43
  116. package/src/lib/famix/model/famix/type.ts +87 -87
  117. package/src/lib/famix/model/famix/variable.ts +27 -27
  118. package/src/lib/famix/package.json +28 -28
  119. package/src/lib/ts-complex/cyclomatic-service.ts +83 -83
  120. package/src/refactorer/refactor-getter-setter.ts +140 -140
  121. package/src/ts2famix-cli-wrapper.ts +21 -21
  122. package/src/ts2famix-cli.ts +60 -60
  123. package/tsconfig.check-tests.json +14 -14
  124. package/tsconfig.json +73 -72
  125. package/.vscode/settings.json +0 -4
  126. package/TODO +0 -1
  127. package/arwea-fix.json +0 -1
  128. package/bogus.ts +0 -3
  129. package/class-diagram.puml +0 -792
  130. package/debug.txt +0 -13332
  131. package/debuglog.txt +0 -12073
  132. package/dist/famix2puml.js +0 -126
  133. package/dist/getClasses-arrow-body.js +0 -43
  134. package/dist/lib/famix/src/famix_JSON_exporter.js +0 -55
  135. package/dist/lib/famix/src/famix_base_element.js +0 -18
  136. package/dist/lib/famix/src/famix_repository.js +0 -224
  137. package/dist/lib/famix/src/index.js +0 -31
  138. package/dist/lib/famix/src/model/famix/access.js +0 -40
  139. package/dist/lib/famix/src/model/famix/accessor.js +0 -17
  140. package/dist/lib/famix/src/model/famix/alias.js +0 -33
  141. package/dist/lib/famix/src/model/famix/arrowFunction.js +0 -17
  142. package/dist/lib/famix/src/model/famix/arrow_function.js +0 -17
  143. package/dist/lib/famix/src/model/famix/behavioral_entity.js +0 -79
  144. package/dist/lib/famix/src/model/famix/class.js +0 -71
  145. package/dist/lib/famix/src/model/famix/comment.js +0 -39
  146. package/dist/lib/famix/src/model/famix/concretisation.js +0 -31
  147. package/dist/lib/famix/src/model/famix/container_entity.js +0 -126
  148. package/dist/lib/famix/src/model/famix/decorator.js +0 -32
  149. package/dist/lib/famix/src/model/famix/entity.js +0 -17
  150. package/dist/lib/famix/src/model/famix/enum.js +0 -31
  151. package/dist/lib/famix/src/model/famix/enum_value.js +0 -25
  152. package/dist/lib/famix/src/model/famix/function.js +0 -17
  153. package/dist/lib/famix/src/model/famix/implicit_variable.js +0 -17
  154. package/dist/lib/famix/src/model/famix/import_clause.js +0 -41
  155. package/dist/lib/famix/src/model/famix/index.js +0 -86
  156. package/dist/lib/famix/src/model/famix/indexed_file_anchor.js +0 -38
  157. package/dist/lib/famix/src/model/famix/inheritance.js +0 -33
  158. package/dist/lib/famix/src/model/famix/interface.js +0 -64
  159. package/dist/lib/famix/src/model/famix/invocation.js +0 -54
  160. package/dist/lib/famix/src/model/famix/method.js +0 -67
  161. package/dist/lib/famix/src/model/famix/module.js +0 -60
  162. package/dist/lib/famix/src/model/famix/named_entity.js +0 -78
  163. package/dist/lib/famix/src/model/famix/parameter.js +0 -25
  164. package/dist/lib/famix/src/model/famix/parameterConcretisation.js +0 -44
  165. package/dist/lib/famix/src/model/famix/parameter_concretisation.js +0 -44
  166. package/dist/lib/famix/src/model/famix/parameter_type.js +0 -45
  167. package/dist/lib/famix/src/model/famix/parametricArrowFunction.js +0 -29
  168. package/dist/lib/famix/src/model/famix/parametric_arrow_function.js +0 -31
  169. package/dist/lib/famix/src/model/famix/parametric_class.js +0 -44
  170. package/dist/lib/famix/src/model/famix/parametric_function.js +0 -31
  171. package/dist/lib/famix/src/model/famix/parametric_interface.js +0 -44
  172. package/dist/lib/famix/src/model/famix/parametric_method.js +0 -31
  173. package/dist/lib/famix/src/model/famix/primitive_type.js +0 -17
  174. package/dist/lib/famix/src/model/famix/property.js +0 -73
  175. package/dist/lib/famix/src/model/famix/reference.js +0 -33
  176. package/dist/lib/famix/src/model/famix/scoping_entity.js +0 -36
  177. package/dist/lib/famix/src/model/famix/script_entity.js +0 -29
  178. package/dist/lib/famix/src/model/famix/source_anchor.js +0 -27
  179. package/dist/lib/famix/src/model/famix/source_language.js +0 -35
  180. package/dist/lib/famix/src/model/famix/sourced_entity.js +0 -60
  181. package/dist/lib/famix/src/model/famix/structural_entity.js +0 -39
  182. package/dist/lib/famix/src/model/famix/text_anchor.js +0 -38
  183. package/dist/lib/famix/src/model/famix/type.js +0 -73
  184. package/dist/lib/famix/src/model/famix/variable.js +0 -24
  185. package/fqn-model.json +0 -1
  186. package/iterateGenericTypes.ts +0 -69
  187. package/out/class-diagram/class-diagram.svg +0 -1
  188. package/sample.json +0 -1
  189. package/sample.ts +0 -1
  190. package/stats.txt +0 -3091
  191. package/tabby-debug-output.txt +0 -19433
  192. package/ts2famix.log +0 -22656
  193. package/validate-references.js +0 -103
@@ -1,126 +0,0 @@
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
- var __importDefault = (this && this.__importDefault) || function (mod) {
26
- return (mod && mod.__esModule) ? mod : { "default": mod };
27
- };
28
- Object.defineProperty(exports, "__esModule", { value: true });
29
- const fs = __importStar(require("fs"));
30
- const yargs_1 = __importDefault(require("yargs"));
31
- const argv = yargs_1.default
32
- .example('ts-node src/famix2puml.ts -i JSONModels/projectName.json -o PUMLModels/projectName.puml', 'creates a PlantUML class diagram from a JSON-format model of a typescript project')
33
- .alias('i', 'input')
34
- .nargs('i', 1)
35
- .alias('o', 'output')
36
- .nargs('o', 1)
37
- .demandOption('input').demandOption('output').parseSync();
38
- const INHERITANCE_LINK_COLOR = 'blue';
39
- const jsonFileName = argv.input;
40
- const pumlFileName = argv.output.substring(argv.output.indexOf("/") + 1, argv.output.lastIndexOf('.'));
41
- const parsedModel = JSON.parse(fs.readFileSync(jsonFileName, 'utf-8'));
42
- const classNameMap = new Map();
43
- const associations = new Array();
44
- // maps all class names to their id
45
- parsedModel.forEach(element => {
46
- // map has id as key and unique (plantuml) class name
47
- classNameMap.set(element.id, uniqueElementName(element));
48
- const nameWithoutPrefix = element.FM3.split('.')[1];
49
- // special case association
50
- if (nameWithoutPrefix.endsWith('Inheritance')) {
51
- const subclass = element['subclass'].ref;
52
- const superclass = element['superclass'].ref;
53
- associations.push({ from: subclass, to: superclass, name: nameWithoutPrefix });
54
- }
55
- });
56
- // generates plantuml
57
- let plantUMLOutString = `@startuml ${pumlFileName}
58
- skinparam style strictuml
59
- title Object diagram for ${jsonFileName}
60
- `;
61
- parsedModel.forEach(element => {
62
- plantUMLOutString += `${toPlantUML(element)}\n`;
63
- });
64
- // creates associations
65
- associations.forEach(association => {
66
- // inheritance is a special case, show it in UML even though it doesn't make 100% sense in object diagrams
67
- const isInheritance = association.name.startsWith('Inheritance');
68
- if (isInheritance) {
69
- plantUMLOutString += `${classNameMap.get(association.from)} --|> ${classNameMap.get(association.to)} #line:${INHERITANCE_LINK_COLOR}\n`;
70
- }
71
- else {
72
- plantUMLOutString += `${classNameMap.get(association.from)} ..> "${association.name}" ${classNameMap.get(association.to)}\n`;
73
- }
74
- });
75
- plantUMLOutString += '@enduml';
76
- // writes to output file
77
- fs.writeFile(argv.output, plantUMLOutString, (err) => {
78
- if (err) {
79
- throw err;
80
- }
81
- });
82
- function uniqueElementName(element) {
83
- return `${element.FM3}${element.id}`;
84
- }
85
- function toPlantUML(element) {
86
- let plantUMLString = '';
87
- const optionalName = element.name || '';
88
- const nameWithoutPrefix = element.FM3.split('.')[1];
89
- plantUMLString += `object "${optionalName}:${nameWithoutPrefix}" as ${uniqueElementName(element)} {\n`;
90
- plantUMLString += `id = ${element.id}\n`;
91
- plantUMLString += propertiesToPlantUML(element);
92
- plantUMLString += '}\n';
93
- return plantUMLString;
94
- }
95
- function propertiesToPlantUML(element) {
96
- let plantUMLString = '';
97
- for (const property in element) {
98
- const attribute = element[property];
99
- const isOneToManyReference = typeof attribute !== 'string' && attribute.length; // array but not a string
100
- switch (property) {
101
- // ignores these properties
102
- case 'subclass':
103
- case 'superclass':
104
- case 'FM3':
105
- case 'id':
106
- case 'name':
107
- break;
108
- default:
109
- if (isOneToManyReference) {
110
- attribute.forEach((composite, index) => {
111
- associations.push({ from: element.id, to: composite.ref, name: `${property}[${index}]` });
112
- });
113
- }
114
- else if (typeof attribute === 'object') {
115
- associations.push({ from: element.id, to: attribute.ref, name: property });
116
- }
117
- else { // typeof string, boolean, number, etc
118
- // treats it as a simple attribute
119
- plantUMLString += `${property} = ${element[property]}\n`;
120
- }
121
- break;
122
- }
123
- }
124
- return plantUMLString;
125
- }
126
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFtaXgycHVtbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9mYW1peDJwdW1sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSx1Q0FBeUI7QUFDekIsa0RBQTBCO0FBRTFCLE1BQU0sSUFBSSxHQUFHLGVBQUs7S0FDYixPQUFPLENBQUMseUZBQXlGLEVBQUUsbUZBQW1GLENBQUM7S0FDdkwsS0FBSyxDQUFDLEdBQUcsRUFBRSxPQUFPLENBQUM7S0FDbkIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7S0FDYixLQUFLLENBQUMsR0FBRyxFQUFFLFFBQVEsQ0FBQztLQUNwQixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQztLQUNiLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLENBQUMsU0FBUyxFQUFFLENBQUM7QUFFOUQsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUM7QUFldEMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQWUsQ0FBQztBQUMxQyxNQUFNLFlBQVksR0FBSSxJQUFJLENBQUMsTUFBaUIsQ0FBQyxTQUFTLENBQUUsSUFBSSxDQUFDLE1BQWlCLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxHQUFDLENBQUMsRUFBRyxJQUFJLENBQUMsTUFBaUIsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN6SSxNQUFNLFdBQVcsR0FBa0MsSUFBSSxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsWUFBWSxDQUFDLFlBQVksRUFBRSxPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ3RHLE1BQU0sWUFBWSxHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO0FBQy9DLE1BQU0sWUFBWSxHQUFHLElBQUksS0FBSyxFQUFlLENBQUM7QUFFOUMsbUNBQW1DO0FBQ25DLFdBQVcsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVB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LGtDQUFrQztvQkFDbEMsY0FBYyxJQUFJLEdBQUcsUUFBUSxNQUFNLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUM3RCxDQUFDO2dCQUVELE1BQU07UUFDZCxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sY0FBYyxDQUFDO0FBQzFCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XHJcbmltcG9ydCB5YXJncyBmcm9tICd5YXJncyc7XHJcblxyXG5jb25zdCBhcmd2ID0geWFyZ3NcclxuICAgIC5leGFtcGxlKCd0cy1ub2RlIHNyYy9mYW1peDJwdW1sLnRzIC1pIEpTT05Nb2RlbHMvcHJvamVjdE5hbWUuanNvbiAtbyBQVU1MTW9kZWxzL3Byb2plY3ROYW1lLnB1bWwnLCAnY3JlYXRlcyBhIFBsYW50VU1MIGNsYXNzIGRpYWdyYW0gZnJvbSBhIEpTT04tZm9ybWF0IG1vZGVsIG9mIGEgdHlwZXNjcmlwdCBwcm9qZWN0JylcclxuICAgIC5hbGlhcygnaScsICdpbnB1dCcpXHJcbiAgICAubmFyZ3MoJ2knLCAxKVxyXG4gICAgLmFsaWFzKCdvJywgJ291dHB1dCcpXHJcbiAgICAubmFyZ3MoJ28nLCAxKVxyXG4gICAgLmRlbWFuZE9wdGlvbignaW5wdXQnKS5kZW1hbmRPcHRpb24oJ291dHB1dCcpLnBhcnNlU3luYygpO1xyXG5cclxuY29uc3QgSU5IRVJJVEFOQ0VfTElOS19DT0xPUiA9ICdibHVlJztcclxuXHJcbi8vIGFwcHJveGltYXRpb24gZm9yIGNvZGUgY29tcGxldGlvblxyXG5pbnRlcmZhY2UgRmFtaXhUeXBlU2NyaXB0RWxlbWVudCB7XHJcbiAgICBGTTM6IHN0cmluZ1xyXG4gICAgbmFtZTogc3RyaW5nXHJcbiAgICBpZD86IHN0cmluZ1xyXG59XHJcblxyXG5pbnRlcmZhY2UgQXNzb2NpYXRpb24ge1xyXG4gICAgZnJvbTogc3RyaW5nO1xyXG4gICAgdG86IHN0cmluZztcclxuICAgIG5hbWU6IHN0cmluZztcclxufVxyXG5cclxuY29uc3QganNvbkZpbGVOYW1lID0gYXJndi5pbnB1dCBhcyBzdHJpbmc7XHJcbmNvbnN0IHB1bWxGaWxlTmFtZSA9IChhcmd2Lm91dHB1dCBhcyBzdHJpbmcpLnN1YnN0cmluZygoYXJndi5vdXRwdXQgYXMgc3RyaW5nKS5pbmRleE9mKFwiL1wiKSsxLCAoYXJndi5vdXRwdXQgYXMgc3RyaW5nKS5sYXN0SW5kZXhPZignLicpKTtcclxuY29uc3QgcGFyc2VkTW9kZWw6IEFycmF5PEZhbWl4VHlwZVNjcmlwdEVsZW1lbnQ+ID0gSlNPTi5wYXJzZShmcy5yZWFkRmlsZVN5bmMoanNvbkZpbGVOYW1lLCAndXRmLTgnKSk7XHJcbmNvbnN0IGNsYXNzTmFtZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBzdHJpbmc+KCk7XHJcbmNvbnN0IGFzc29jaWF0aW9ucyA9IG5ldyBBcnJheTxBc3NvY2lhdGlvbj4oKTtcclxuXHJcbi8vIG1hcHMgYWxsIGNsYXNzIG5hbWVzIHRvIHRoZWlyIGlkXHJcbnBhcnNlZE1vZGVsLmZvckVhY2goZWxlbWVudCA9PiB7XHJcbiAgICAvLyBtYXAgaGFzIGlkIGFzIGtleSBhbmQgdW5pcXVlIChwbGFudHVtbCkgY2xhc3MgbmFtZVxyXG4gICAgY2xhc3NOYW1lTWFwLnNldChlbGVtZW50LmlkLCB1bmlxdWVFbGVtZW50TmFtZShlbGVtZW50KSk7XHJcbiAgICBjb25zdCBuYW1lV2l0aG91dFByZWZpeCA9IGVsZW1lbnQuRk0zLnNwbGl0KCcuJylbMV07XHJcbiAgICAvLyBzcGVjaWFsIGNhc2UgYXNzb2NpYXRpb25cclxuICAgIGlmIChuYW1lV2l0aG91dFByZWZpeC5lbmRzV2l0aCgnSW5oZXJpdGFuY2UnKSkge1xyXG4gICAgICAgIGNvbnN0IHN1YmNsYXNzID0gZWxlbWVudFsnc3ViY2xhc3MnXS5yZWY7XHJcbiAgICAgICAgY29uc3Qgc3VwZXJjbGFzcyA9IGVsZW1lbnRbJ3N1cGVyY2xhc3MnXS5yZWY7XHJcbiAgICAgICAgYXNzb2NpYXRpb25zLnB1c2goeyBmcm9tOiBzdWJjbGFzcywgdG86IHN1cGVyY2xhc3MsIG5hbWU6IG5hbWVXaXRob3V0UHJlZml4IH0pO1xyXG4gICAgfVxyXG59KTtcclxuXHJcbi8vIGdlbmVyYXRlcyBwbGFudHVtbFxyXG5sZXQgcGxhbnRVTUxPdXRTdHJpbmcgPSBgQHN0YXJ0dW1sICR7cHVtbEZpbGVOYW1lfVxyXG5za2lucGFyYW0gc3R5bGUgc3RyaWN0dW1sXHJcbnRpdGxlIE9iamVjdCBkaWFncmFtIGZvciAke2pzb25GaWxlTmFtZX1cclxuYDtcclxucGFyc2VkTW9kZWwuZm9yRWFjaChlbGVtZW50ID0+IHtcclxuICAgIHBsYW50VU1MT3V0U3RyaW5nICs9IGAke3RvUGxhbnRVTUwoZWxlbWVudCl9XFxuYDtcclxufSk7XHJcblxyXG4vLyBjcmVhdGVzIGFzc29jaWF0aW9uc1xyXG5hc3NvY2lhdGlvbnMuZm9yRWFjaChhc3NvY2lhdGlvbiA9PiB7XHJcbiAgICAvLyBpbmhlcml0YW5jZSBpcyBhIHNwZWNpYWwgY2FzZSwgc2hvdyBpdCBpbiBVTUwgZXZlbiB0aG91Z2ggaXQgZG9lc24ndCBtYWtlIDEwMCUgc2Vuc2UgaW4gb2JqZWN0IGRpYWdyYW1zXHJcbiAgICBjb25zdCBpc0luaGVyaXRhbmNlID0gYXNzb2NpYXRpb24ubmFtZS5zdGFydHNXaXRoKCdJbmhlcml0YW5jZScpO1xyXG4gICAgaWYgKGlzSW5oZXJpdGFuY2UpIHtcclxuICAgICAgICBwbGFudFVNTE91dFN0cmluZyArPSBgJHtjbGFzc05hbWVNYXAuZ2V0KGFzc29jaWF0aW9uLmZyb20pfSAtLXw+ICR7Y2xhc3NOYW1lTWFwLmdldChhc3NvY2lhdGlvbi50byl9ICNsaW5lOiR7SU5IRVJJVEFOQ0VfTElOS19DT0xPUn1cXG5gO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBwbGFudFVNTE91dFN0cmluZyArPSBgJHtjbGFzc05hbWVNYXAuZ2V0KGFzc29jaWF0aW9uLmZyb20pfSAuLj4gXCIke2Fzc29jaWF0aW9uLm5hbWV9XCIgJHtjbGFzc05hbWVNYXAuZ2V0KGFzc29jaWF0aW9uLnRvKX1cXG5gO1xyXG4gICAgfVxyXG59KTtcclxuXHJcbnBsYW50VU1MT3V0U3RyaW5nICs9ICdAZW5kdW1sJztcclxuXHJcbi8vIHdyaXRlcyB0byBvdXRwdXQgZmlsZVxyXG5mcy53cml0ZUZpbGUoYXJndi5vdXRwdXQgYXMgc3RyaW5nLCBwbGFudFVNTE91dFN0cmluZywgKGVycikgPT4ge1xyXG4gICAgaWYgKGVycikgeyB0aHJvdyBlcnI7IH1cclxufSk7XHJcblxyXG5mdW5jdGlvbiB1bmlxdWVFbGVtZW50TmFtZShlbGVtZW50OiBGYW1peFR5cGVTY3JpcHRFbGVtZW50KTogc3RyaW5nIHtcclxuICAgIHJldHVybiBgJHtlbGVtZW50LkZNM30ke2VsZW1lbnQuaWR9YDtcclxufVxyXG5cclxuZnVuY3Rpb24gdG9QbGFudFVNTChlbGVtZW50OiBGYW1peFR5cGVTY3JpcHRFbGVtZW50KSB7XHJcbiAgICBsZXQgcGxhbnRVTUxTdHJpbmcgPSAnJztcclxuICAgIGNvbnN0IG9wdGlvbmFsTmFtZSA9IGVsZW1lbnQubmFtZSB8fCAnJztcclxuICAgIGNvbnN0IG5hbWVXaXRob3V0UHJlZml4ID0gZWxlbWVudC5GTTMuc3BsaXQoJy4nKVsxXTtcclxuICAgIHBsYW50VU1MU3RyaW5nICs9IGBvYmplY3QgXCIke29wdGlvbmFsTmFtZX06JHtuYW1lV2l0aG91dFByZWZpeH1cIiBhcyAke3VuaXF1ZUVsZW1lbnROYW1lKGVsZW1lbnQpfSB7XFxuYDtcclxuICAgIHBsYW50VU1MU3RyaW5nICs9IGBpZCA9ICR7ZWxlbWVudC5pZH1cXG5gO1xyXG4gICAgcGxhbnRVTUxTdHJpbmcgKz0gcHJvcGVydGllc1RvUGxhbnRVTUwoZWxlbWVudCk7XHJcbiAgICBwbGFudFVNTFN0cmluZyArPSAnfVxcbic7XHJcbiAgICByZXR1cm4gcGxhbnRVTUxTdHJpbmc7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHByb3BlcnRpZXNUb1BsYW50VU1MKGVsZW1lbnQ6IEZhbWl4VHlwZVNjcmlwdEVsZW1lbnQpIHtcclxuICAgIGxldCBwbGFudFVNTFN0cmluZyA9ICcnO1xyXG4gICAgZm9yIChjb25zdCBwcm9wZXJ0eSBpbiBlbGVtZW50KSB7XHJcbiAgICAgICAgY29uc3QgYXR0cmlidXRlID0gZWxlbWVudFtwcm9wZXJ0eV07XHJcbiAgICAgICAgY29uc3QgaXNPbmVUb01hbnlSZWZlcmVuY2UgPSB0eXBlb2YgYXR0cmlidXRlICE9PSAnc3RyaW5nJyAmJiBhdHRyaWJ1dGUubGVuZ3RoOyAvLyBhcnJheSBidXQgbm90IGEgc3RyaW5nXHJcblxyXG4gICAgICAgIHN3aXRjaCAocHJvcGVydHkpIHtcclxuICAgICAgICAgICAgLy8gaWdub3JlcyB0aGVzZSBwcm9wZXJ0aWVzXHJcbiAgICAgICAgICAgIGNhc2UgJ3N1YmNsYXNzJzpcclxuICAgICAgICAgICAgY2FzZSAnc3VwZXJjbGFzcyc6XHJcbiAgICAgICAgICAgIGNhc2UgJ0ZNMyc6XHJcbiAgICAgICAgICAgIGNhc2UgJ2lkJzpcclxuICAgICAgICAgICAgY2FzZSAnbmFtZSc6XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuXHJcbiAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBpZiAoaXNPbmVUb01hbnlSZWZlcmVuY2UpIHtcclxuICAgICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUuZm9yRWFjaCgoY29tcG9zaXRlLCBpbmRleCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGlvbnMucHVzaCh7IGZyb206IGVsZW1lbnQuaWQsIHRvOiBjb21wb3NpdGUucmVmLCBuYW1lOiBgJHtwcm9wZXJ0eX1bJHtpbmRleH1dYCB9KTtcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGF0dHJpYnV0ZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgICAgICAgICAgICBhc3NvY2lhdGlvbnMucHVzaCh7IGZyb206IGVsZW1lbnQuaWQsIHRvOiBhdHRyaWJ1dGUucmVmLCBuYW1lOiBwcm9wZXJ0eSB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAvLyB0eXBlb2Ygc3RyaW5nLCBib29sZWFuLCBudW1iZXIsIGV0Y1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIHRyZWF0cyBpdCBhcyBhIHNpbXBsZSBhdHRyaWJ1dGVcclxuICAgICAgICAgICAgICAgICAgICBwbGFudFVNTFN0cmluZyArPSBgJHtwcm9wZXJ0eX0gPSAke2VsZW1lbnRbcHJvcGVydHldfVxcbmA7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHBsYW50VU1MU3RyaW5nO1xyXG59XHJcbiJdfQ==
@@ -1,43 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const ts_morph_1 = require("ts-morph");
4
- // Initialize the project
5
- const project = new ts_morph_1.Project({
6
- useInMemoryFileSystem: true,
7
- compilerOptions: {
8
- target: 2, // ES6
9
- }
10
- });
11
- // Create a source file with a class inside an arrow function
12
- const sourceFile = project.createSourceFile("test.ts", `
13
- class A {}
14
- const myFunction = () => {
15
- class User {
16
- constructor(public name: string) {}
17
- }
18
- };
19
- `);
20
- // write getArrowFunctionClasses(f) that returns the classes declared in the body of an arrow function by traversing the AST
21
- // Function to get classes declared inside arrow functions
22
- function getArrowFunctionClasses(f) {
23
- const classes = [];
24
- function findClasses(node) {
25
- if (node.getKind() === ts_morph_1.SyntaxKind.ClassDeclaration) {
26
- classes.push(node);
27
- }
28
- node.getChildren().forEach(findClasses);
29
- }
30
- findClasses(f);
31
- return classes;
32
- }
33
- // Get the classes using getClasses()
34
- const classes = sourceFile.getClasses();
35
- const arrowFunctions = sourceFile.getDescendantsOfKind(ts_morph_1.SyntaxKind.ArrowFunction);
36
- console.log("Arrow functions found:", arrowFunctions.map(f => f.getText()));
37
- // find the classes declared in bodies of ArrowFunctions
38
- // can't use getClasses() because it only returns classes declared in the source file
39
- const classesInArrowFunctions = arrowFunctions.map(f => getArrowFunctionClasses(f)).flat();
40
- // Log the results
41
- console.log("Classes found:", classes.map(cls => cls.getName()));
42
- console.log("Classes found in arrow functions:", classesInArrowFunctions.map(cls => cls.getName()));
43
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0Q2xhc3Nlcy1hcnJvdy1ib2R5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2dldENsYXNzZXMtYXJyb3ctYm9keS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUFBLHVDQUFnRjtBQUVoRix5QkFBeUI7QUFDekIsTUFBTSxPQUFPLEdBQUcsSUFBSSxrQkFBTyxDQUFDO0lBQ3hCLHFCQUFxQixFQUFFLElBQUk7SUFDM0IsZUFBZSxFQUFFO1FBQ2IsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNO0tBQ3BCO0NBQ0osQ0FBQyxDQUFDO0FBRUgsNkRBQTZEO0FBQzdELE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLEVBQUU7Ozs7Ozs7Q0FPdEQsQ0FBQyxDQUFDO0FBRUgsNEhBQTRIO0FBQzVILDBEQUEwRDtBQUMxRCxTQUFTLHVCQUF1QixDQUFDLENBQWdCO0lBQzdDLE1BQU0sT0FBTyxHQUF1QixFQUFFLENBQUM7SUFFdkMsU0FBUyxXQUFXLENBQUMsSUFBUztRQUMxQixJQUFJLElBQUksQ0FBQyxPQUFPLEVBQUUsS0FBSyxxQkFBVSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDakQsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUF3QixDQUFDLENBQUM7UUFDM0MsQ0FBQztRQUNELElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDNUMsQ0FBQztJQUVELFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUNmLE9BQU8sT0FBTyxDQUFDO0FBQ25CLENBQUM7QUFHRCxxQ0FBcUM7QUFDckMsTUFBTSxPQUFPLEdBQUcsVUFBVSxDQUFDLFVBQVUsRUFBRSxDQUFDO0FBRXhDLE1BQU0sY0FBYyxHQUFHLFVBQVUsQ0FBQyxvQkFBb0IsQ0FBQyxxQkFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDO0FBRWpGLE9BQU8sQ0FBQyxHQUFHLENBQUMsd0JBQXdCLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFFNUUsd0RBQXdEO0FBQ3hELHFGQUFxRjtBQUNyRixNQUFNLHVCQUF1QixHQUFHLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyx1QkFBdUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO0FBRTNGLGtCQUFrQjtBQUNsQixPQUFPLENBQUMsR0FBRyxDQUFDLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxDQUFDO0FBQ2pFLE9BQU8sQ0FBQyxHQUFHLENBQUMsbUNBQW1DLEVBQUUsdUJBQXVCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEFycm93RnVuY3Rpb24sIENsYXNzRGVjbGFyYXRpb24sIFByb2plY3QsIFN5bnRheEtpbmQgfSBmcm9tIFwidHMtbW9ycGhcIjtcclxuXHJcbi8vIEluaXRpYWxpemUgdGhlIHByb2plY3RcclxuY29uc3QgcHJvamVjdCA9IG5ldyBQcm9qZWN0KHtcclxuICAgIHVzZUluTWVtb3J5RmlsZVN5c3RlbTogdHJ1ZSxcclxuICAgIGNvbXBpbGVyT3B0aW9uczoge1xyXG4gICAgICAgIHRhcmdldDogMiwgLy8gRVM2XHJcbiAgICB9XHJcbn0pO1xyXG5cclxuLy8gQ3JlYXRlIGEgc291cmNlIGZpbGUgd2l0aCBhIGNsYXNzIGluc2lkZSBhbiBhcnJvdyBmdW5jdGlvblxyXG5jb25zdCBzb3VyY2VGaWxlID0gcHJvamVjdC5jcmVhdGVTb3VyY2VGaWxlKFwidGVzdC50c1wiLCBgXHJcbmNsYXNzIEEge31cclxuY29uc3QgbXlGdW5jdGlvbiA9ICgpID0+IHtcclxuICAgIGNsYXNzIFVzZXIge1xyXG4gICAgICAgIGNvbnN0cnVjdG9yKHB1YmxpYyBuYW1lOiBzdHJpbmcpIHt9XHJcbiAgICB9XHJcbn07XHJcbmApO1xyXG5cclxuLy8gd3JpdGUgZ2V0QXJyb3dGdW5jdGlvbkNsYXNzZXMoZikgdGhhdCByZXR1cm5zIHRoZSBjbGFzc2VzIGRlY2xhcmVkIGluIHRoZSBib2R5IG9mIGFuIGFycm93IGZ1bmN0aW9uIGJ5IHRyYXZlcnNpbmcgdGhlIEFTVFxyXG4vLyBGdW5jdGlvbiB0byBnZXQgY2xhc3NlcyBkZWNsYXJlZCBpbnNpZGUgYXJyb3cgZnVuY3Rpb25zXHJcbmZ1bmN0aW9uIGdldEFycm93RnVuY3Rpb25DbGFzc2VzKGY6IEFycm93RnVuY3Rpb24pOiBDbGFzc0RlY2xhcmF0aW9uW10ge1xyXG4gICAgY29uc3QgY2xhc3NlczogQ2xhc3NEZWNsYXJhdGlvbltdID0gW107XHJcblxyXG4gICAgZnVuY3Rpb24gZmluZENsYXNzZXMobm9kZTogYW55KSB7XHJcbiAgICAgICAgaWYgKG5vZGUuZ2V0S2luZCgpID09PSBTeW50YXhLaW5kLkNsYXNzRGVjbGFyYXRpb24pIHtcclxuICAgICAgICAgICAgY2xhc3Nlcy5wdXNoKG5vZGUgYXMgQ2xhc3NEZWNsYXJhdGlvbik7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIG5vZGUuZ2V0Q2hpbGRyZW4oKS5mb3JFYWNoKGZpbmRDbGFzc2VzKTtcclxuICAgIH1cclxuXHJcbiAgICBmaW5kQ2xhc3NlcyhmKTtcclxuICAgIHJldHVybiBjbGFzc2VzO1xyXG59XHJcblxyXG5cclxuLy8gR2V0IHRoZSBjbGFzc2VzIHVzaW5nIGdldENsYXNzZXMoKVxyXG5jb25zdCBjbGFzc2VzID0gc291cmNlRmlsZS5nZXRDbGFzc2VzKCk7XHJcblxyXG5jb25zdCBhcnJvd0Z1bmN0aW9ucyA9IHNvdXJjZUZpbGUuZ2V0RGVzY2VuZGFudHNPZktpbmQoU3ludGF4S2luZC5BcnJvd0Z1bmN0aW9uKTtcclxuXHJcbmNvbnNvbGUubG9nKFwiQXJyb3cgZnVuY3Rpb25zIGZvdW5kOlwiLCBhcnJvd0Z1bmN0aW9ucy5tYXAoZiA9PiBmLmdldFRleHQoKSkpO1xyXG5cclxuLy8gZmluZCB0aGUgY2xhc3NlcyBkZWNsYXJlZCBpbiBib2RpZXMgb2YgQXJyb3dGdW5jdGlvbnNcclxuLy8gY2FuJ3QgdXNlIGdldENsYXNzZXMoKSBiZWNhdXNlIGl0IG9ubHkgcmV0dXJucyBjbGFzc2VzIGRlY2xhcmVkIGluIHRoZSBzb3VyY2UgZmlsZVxyXG5jb25zdCBjbGFzc2VzSW5BcnJvd0Z1bmN0aW9ucyA9IGFycm93RnVuY3Rpb25zLm1hcChmID0+IGdldEFycm93RnVuY3Rpb25DbGFzc2VzKGYpKS5mbGF0KCk7XHJcblxyXG4vLyBMb2cgdGhlIHJlc3VsdHNcclxuY29uc29sZS5sb2coXCJDbGFzc2VzIGZvdW5kOlwiLCBjbGFzc2VzLm1hcChjbHMgPT4gY2xzLmdldE5hbWUoKSkpO1xyXG5jb25zb2xlLmxvZyhcIkNsYXNzZXMgZm91bmQgaW4gYXJyb3cgZnVuY3Rpb25zOlwiLCBjbGFzc2VzSW5BcnJvd0Z1bmN0aW9ucy5tYXAoY2xzID0+IGNscy5nZXROYW1lKCkpKTtcclxuIl19
@@ -1,55 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FamixJSONExporter = void 0;
4
- const famix_base_element_1 = require("./famix_base_element");
5
- /**
6
- * This class is used to export Famix elements to JSON
7
- */
8
- class FamixJSONExporter {
9
- /**
10
- * Constructor of the FamixJSONExporter class
11
- * @param packageClass Name of a Famix class
12
- * @param element A Famix element to export, this element is an instance of the class named "packageClass"
13
- */
14
- constructor(packageClass, element) {
15
- this.bufferArray = {}; // A buffer to store the properties of the Famix element
16
- this.FamixPrefix = "FamixTypeScript"; // Prefix of the Famix element
17
- this.element = element;
18
- this.bufferArray["FM3"] = this.FamixPrefix + "." + packageClass;
19
- this.bufferArray["id"] = this.element.id;
20
- }
21
- /**
22
- * Adds a property to the Famix element
23
- * @param name Name of the property
24
- * @param prop A property
25
- */
26
- addProperty(name, prop) {
27
- if (prop instanceof Set) {
28
- const valueArray = [];
29
- for (const value of Array.from(prop.values())) {
30
- if (value instanceof famix_base_element_1.FamixBaseElement) {
31
- valueArray.push({ "ref": value.id });
32
- }
33
- else {
34
- valueArray.push(value);
35
- }
36
- }
37
- this.bufferArray[name] = valueArray;
38
- }
39
- else if (prop instanceof famix_base_element_1.FamixBaseElement) {
40
- this.bufferArray[name] = { "ref": prop.id };
41
- }
42
- else if (prop !== undefined && !(prop instanceof Set)) {
43
- this.bufferArray[name] = prop;
44
- }
45
- }
46
- /**
47
- * Gets a JSON representation of the Famix element
48
- * @returns A JSON representation of the Famix element
49
- */
50
- getJSON() {
51
- return JSON.stringify(this.bufferArray);
52
- }
53
- }
54
- exports.FamixJSONExporter = FamixJSONExporter;
55
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFtaXhfSlNPTl9leHBvcnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZmFtaXgvc3JjL2ZhbWl4X0pTT05fZXhwb3J0ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsNkRBQXdEO0FBRXhEOztHQUVHO0FBQ0gsTUFBYSxpQkFBaUI7SUFNMUI7Ozs7T0FJRztJQUNILFlBQVksWUFBb0IsRUFBRSxPQUF5QjtRQVJuRCxnQkFBVyxHQUFRLEVBQUUsQ0FBQyxDQUFDLHdEQUF3RDtRQUMvRSxnQkFBVyxHQUFHLGlCQUFpQixDQUFDLENBQUMsOEJBQThCO1FBUW5FLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxXQUFXLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLFdBQVcsR0FBRyxHQUFHLEdBQUcsWUFBWSxDQUFDO1FBQ2hFLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7SUFDN0MsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxXQUFXLENBQUMsSUFBWSxFQUFFLElBQWE7UUFDMUMsSUFBSSxJQUFJLFlBQVksR0FBRyxFQUFFLENBQUM7WUFDdEIsTUFBTSxVQUFVLEdBQW1CLEVBQUUsQ0FBQztZQUN0QyxLQUFLLE1BQU0sS0FBSyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxLQUFLLFlBQVkscUNBQWdCLEVBQUUsQ0FBQztvQkFDcEMsVUFBVSxDQUFDLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxLQUFLLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztnQkFDekMsQ0FBQztxQkFDSSxDQUFDO29CQUNGLFVBQVUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7Z0JBQzNCLENBQUM7WUFDTCxDQUFDO1lBQ0QsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxVQUFVLENBQUM7UUFDeEMsQ0FBQzthQUNJLElBQUksSUFBSSxZQUFZLHFDQUFnQixFQUFFLENBQUM7WUFDeEMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDaEQsQ0FBQzthQUNJLElBQUksSUFBSSxLQUFLLFNBQVMsSUFBSSxDQUFDLENBQUMsSUFBSSxZQUFZLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDcEQsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDbEMsQ0FBQztJQUNMLENBQUM7SUFFRDs7O09BR0c7SUFDSSxPQUFPO1FBQ1YsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUM1QyxDQUFDO0NBQ0o7QUFsREQsOENBa0RDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFtaXhCYXNlRWxlbWVudCB9IGZyb20gXCIuL2ZhbWl4X2Jhc2VfZWxlbWVudFwiO1xyXG5cclxuLyoqXHJcbiAqIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBleHBvcnQgRmFtaXggZWxlbWVudHMgdG8gSlNPTlxyXG4gKi9cclxuZXhwb3J0IGNsYXNzIEZhbWl4SlNPTkV4cG9ydGVyIHtcclxuXHJcbiAgICBwcml2YXRlIGVsZW1lbnQ6IEZhbWl4QmFzZUVsZW1lbnQ7IC8vIEEgRmFtaXggZWxlbWVudCB0byBleHBvcnRcclxuICAgIHByaXZhdGUgYnVmZmVyQXJyYXk6IGFueSA9IHt9OyAvLyBBIGJ1ZmZlciB0byBzdG9yZSB0aGUgcHJvcGVydGllcyBvZiB0aGUgRmFtaXggZWxlbWVudFxyXG4gICAgcHJpdmF0ZSBGYW1peFByZWZpeCA9IFwiRmFtaXhUeXBlU2NyaXB0XCI7IC8vIFByZWZpeCBvZiB0aGUgRmFtaXggZWxlbWVudFxyXG5cclxuICAgIC8qKlxyXG4gICAgICogQ29uc3RydWN0b3Igb2YgdGhlIEZhbWl4SlNPTkV4cG9ydGVyIGNsYXNzXHJcbiAgICAgKiBAcGFyYW0gcGFja2FnZUNsYXNzIE5hbWUgb2YgYSBGYW1peCBjbGFzc1xyXG4gICAgICogQHBhcmFtIGVsZW1lbnQgQSBGYW1peCBlbGVtZW50IHRvIGV4cG9ydCwgdGhpcyBlbGVtZW50IGlzIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzcyBuYW1lZCBcInBhY2thZ2VDbGFzc1wiXHJcbiAgICAgKi9cclxuICAgIGNvbnN0cnVjdG9yKHBhY2thZ2VDbGFzczogc3RyaW5nLCBlbGVtZW50OiBGYW1peEJhc2VFbGVtZW50KSB7XHJcbiAgICAgICAgdGhpcy5lbGVtZW50ID0gZWxlbWVudDtcclxuICAgICAgICB0aGlzLmJ1ZmZlckFycmF5W1wiRk0zXCJdID0gdGhpcy5GYW1peFByZWZpeCArIFwiLlwiICsgcGFja2FnZUNsYXNzO1xyXG4gICAgICAgIHRoaXMuYnVmZmVyQXJyYXlbXCJpZFwiXSA9IHRoaXMuZWxlbWVudC5pZDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBwcm9wZXJ0eSB0byB0aGUgRmFtaXggZWxlbWVudFxyXG4gICAgICogQHBhcmFtIG5hbWUgTmFtZSBvZiB0aGUgcHJvcGVydHlcclxuICAgICAqIEBwYXJhbSBwcm9wIEEgcHJvcGVydHlcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZFByb3BlcnR5KG5hbWU6IHN0cmluZywgcHJvcDogdW5rbm93bik6IHZvaWQge1xyXG4gICAgICAgIGlmIChwcm9wIGluc3RhbmNlb2YgU2V0KSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHZhbHVlQXJyYXk6IEFycmF5PHVua25vd24+ID0gW107XHJcbiAgICAgICAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgQXJyYXkuZnJvbShwcm9wLnZhbHVlcygpKSkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlIGluc3RhbmNlb2YgRmFtaXhCYXNlRWxlbWVudCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlQXJyYXkucHVzaCh7IFwicmVmXCI6IHZhbHVlLmlkIH0pO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVBcnJheS5wdXNoKHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmJ1ZmZlckFycmF5W25hbWVdID0gdmFsdWVBcnJheTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAocHJvcCBpbnN0YW5jZW9mIEZhbWl4QmFzZUVsZW1lbnQpIHtcclxuICAgICAgICAgICAgdGhpcy5idWZmZXJBcnJheVtuYW1lXSA9IHsgXCJyZWZcIjogcHJvcC5pZCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChwcm9wICE9PSB1bmRlZmluZWQgJiYgIShwcm9wIGluc3RhbmNlb2YgU2V0KSkge1xyXG4gICAgICAgICAgICB0aGlzLmJ1ZmZlckFycmF5W25hbWVdID0gcHJvcDtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgRmFtaXggZWxlbWVudFxyXG4gICAgICogQHJldHVybnMgQSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBGYW1peCBlbGVtZW50XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRKU09OKCk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIEpTT04uc3RyaW5naWZ5KHRoaXMuYnVmZmVyQXJyYXkpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -1,18 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.FamixBaseElement = void 0;
4
- const analyze_1 = require("../../../analyze");
5
- // import { FamixRepository } from "./famix_repository";
6
- class FamixBaseElement {
7
- // constructor(repo: FamixRepository) {
8
- // repo.addElement(this);
9
- // }
10
- constructor() {
11
- }
12
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
13
- addPropertiesToExporter(exporter) {
14
- analyze_1.logger.debug("addPropertiesToExporter not implemented for " + this.constructor.name + `(${exporter})`);
15
- }
16
- }
17
- exports.FamixBaseElement = FamixBaseElement;
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFtaXhfYmFzZV9lbGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2xpYi9mYW1peC9zcmMvZmFtaXhfYmFzZV9lbGVtZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDhDQUEwQztBQUUxQyx3REFBd0Q7QUFFeEQsTUFBc0IsZ0JBQWdCO0lBSWxDLHVDQUF1QztJQUN2QywyQkFBMkI7SUFDM0IsSUFBSTtJQUVKO0lBQ0EsQ0FBQztJQUlELDZEQUE2RDtJQUN0RCx1QkFBdUIsQ0FBQyxRQUEyQjtRQUN0RCxnQkFBTSxDQUFDLEtBQUssQ0FBQyw4Q0FBOEMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksR0FBRyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFDM0csQ0FBQztDQUNKO0FBakJELDRDQWlCQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGxvZ2dlciB9IGZyb20gXCIuLi8uLi8uLi9hbmFseXplXCI7XHJcbmltcG9ydCB7IEZhbWl4SlNPTkV4cG9ydGVyIH0gZnJvbSBcIi4vZmFtaXhfSlNPTl9leHBvcnRlclwiO1xyXG4vLyBpbXBvcnQgeyBGYW1peFJlcG9zaXRvcnkgfSBmcm9tIFwiLi9mYW1peF9yZXBvc2l0b3J5XCI7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgRmFtaXhCYXNlRWxlbWVudCB7XHJcblxyXG4gICAgcHVibGljIGlkITogbnVtYmVyO1xyXG5cclxuICAgIC8vIGNvbnN0cnVjdG9yKHJlcG86IEZhbWl4UmVwb3NpdG9yeSkge1xyXG4gICAgLy8gICByZXBvLmFkZEVsZW1lbnQodGhpcyk7XHJcbiAgICAvLyB9XHJcblxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGFic3RyYWN0IGdldEpTT04oKTogc3RyaW5nO1xyXG5cclxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnNcclxuICAgIHB1YmxpYyBhZGRQcm9wZXJ0aWVzVG9FeHBvcnRlcihleHBvcnRlcjogRmFtaXhKU09ORXhwb3J0ZXIpOiB2b2lkIHtcclxuICAgICAgICBsb2dnZXIuZGVidWcoXCJhZGRQcm9wZXJ0aWVzVG9FeHBvcnRlciBub3QgaW1wbGVtZW50ZWQgZm9yIFwiICsgdGhpcy5jb25zdHJ1Y3Rvci5uYW1lICsgYCgke2V4cG9ydGVyfSlgKTtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,224 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFtaXhfcmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9saWIvZmFtaXgvc3JjL2ZhbWl4X3JlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0EseUNBQTRLO0FBRzVLOztHQUVHO0FBQ0gsTUFBYSxlQUFlO0lBY3hCO1FBYlEsYUFBUSxHQUFHLElBQUksR0FBRyxFQUFvQixDQUFDLENBQUMscUJBQXFCO1FBQzdELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVMsQ0FBQyxDQUFDLG9CQUFvQjtRQUNyRCxvQkFBZSxHQUFHLElBQUksR0FBRyxFQUFhLENBQUMsQ0FBQyx1QkFBdUI7UUFDL0QsaUJBQVksR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDLENBQUMsdUJBQXVCO1FBQ3pELGlCQUFZLEdBQUcsSUFBSSxHQUFHLEVBQVUsQ0FBQyxDQUFDLG9CQUFvQjtRQUN0RCxtQkFBYyxHQUFHLElBQUksR0FBRyxFQUFZLENBQUMsQ0FBQyxzQkFBc0I7UUFDNUQsbUJBQWMsR0FBRyxJQUFJLEdBQUcsRUFBdUIsQ0FBQyxDQUFDLHNCQUFzQjtRQUN2RSxlQUFVLEdBQUcsSUFBSSxHQUFHLEVBQXlCLENBQUMsQ0FBQyxrQkFBa0I7UUFDakUsY0FBUyxHQUFHLENBQUMsQ0FBQyxDQUFDLGFBQWE7UUFDNUIsaUJBQVksR0FBVyxFQUFFLENBQUM7UUFDMUIsd0JBQW1CLEdBQUcsSUFBSSxHQUFHLEVBQW1DLENBQUM7UUFDakUscUJBQWdCLEdBQUcsSUFBSSxHQUFHLEVBQW1DLENBQUMsQ0FBQyxnRkFBZ0Y7UUFHbkosSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLHNCQUFjLEVBQUUsQ0FBQyxDQUFDLENBQUUsOENBQThDO0lBQzFGLENBQUM7SUFFTSxzQkFBc0IsQ0FBQyxtQkFBeUQ7UUFDbkYsSUFBSSxDQUFDLG1CQUFtQixHQUFHLG1CQUFtQixDQUFDO0lBQ25ELENBQUM7SUFFTSxzQkFBc0I7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LElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN2RCxHQUFHLEdBQUcsR0FBRyxHQUFHLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLENBQUM7UUFDeEMsQ0FBQztRQUNELEdBQUcsR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBQ3ZDLE9BQU8sR0FBRyxHQUFHLEdBQUcsQ0FBQztJQUNyQixDQUFDO0NBQ0o7QUEzT0QsMENBMk9DIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRmFtaXhCYXNlRWxlbWVudCB9IGZyb20gXCIuL2ZhbWl4X2Jhc2VfZWxlbWVudFwiO1xyXG5pbXBvcnQgeyBDbGFzcywgSW50ZXJmYWNlLCBWYXJpYWJsZSwgTWV0aG9kLCBBcnJvd0Z1bmN0aW9uLCBGdW5jdGlvbiBhcyBGYW1peEZ1bmN0aW9uRW50aXR5LCBUeXBlLCBOYW1lZEVudGl0eSwgU2NyaXB0RW50aXR5LCBNb2R1bGUsIFNvdXJjZUxhbmd1YWdlIH0gZnJvbSBcIi4vbW9kZWwvZmFtaXhcIjtcclxuaW1wb3J0ICogYXMgRmFtaXggZnJvbSBcIi4vbW9kZWwvZmFtaXhcIjtcclxuaW1wb3J0IHsgVFNNb3JwaE9iamVjdFR5cGUgfSBmcm9tIFwiLi4vLi4vLi4vZmFtaXhfZnVuY3Rpb25zL0VudGl0eURpY3Rpb25hcnlcIjtcclxuLyoqXHJcbiAqIFRoaXMgY2xhc3MgaXMgdXNlZCB0byBzdG9yZSBhbGwgRmFtaXggZWxlbWVudHNcclxuICovXHJcbmV4cG9ydCBjbGFzcyBGYW1peFJlcG9zaXRvcnkge1xyXG4gICAgcHJpdmF0ZSBlbGVtZW50cyA9IG5ldyBTZXQ8RmFtaXhCYXNlRWxlbWVudD4oKTsgLy8gQWxsIEZhbWl4IGVsZW1lbnRzXHJcbiAgICBwcml2YXRlIGZhbWl4Q2xhc3NlcyA9IG5ldyBTZXQ8Q2xhc3M+KCk7IC8vIEFsbCBGYW1peCBjbGFzc2VzXHJcbiAgICBwcml2YXRlIGZhbWl4SW50ZXJmYWNlcyA9IG5ldyBTZXQ8SW50ZXJmYWNlPigpOyAvLyBBbGwgRmFtaXggaW50ZXJmYWNlc1xyXG4gICAgcHJpdmF0ZSBmYW1peE1vZHVsZXMgPSBuZXcgU2V0PE1vZHVsZT4oKTsgLy8gQWxsIEZhbWl4IG5hbWVzcGFjZXNcclxuICAgIHByaXZhdGUgZmFtaXhNZXRob2RzID0gbmV3IFNldDxNZXRob2Q+KCk7IC8vIEFsbCBGYW1peCBtZXRob2RzXHJcbiAgICBwcml2YXRlIGZhbWl4VmFyaWFibGVzID0gbmV3IFNldDxWYXJpYWJsZT4oKTsgLy8gQWxsIEZhbWl4IHZhcmlhYmxlc1xyXG4gICAgcHJpdmF0ZSBmYW1peEZ1bmN0aW9ucyA9IG5ldyBTZXQ8RmFtaXhGdW5jdGlvbkVudGl0eT4oKTsgLy8gQWxsIEZhbWl4IGZ1bmN0aW9uc1xyXG4gICAgcHJpdmF0ZSBmYW1peEZpbGVzID0gbmV3IFNldDxTY3JpcHRFbnRpdHkgfCBNb2R1bGU+KCk7IC8vIEFsbCBGYW1peCBmaWxlc1xyXG4gICAgcHJpdmF0ZSBpZENvdW50ZXIgPSAxOyAvLyBJZCBjb3VudGVyXHJcbiAgICBwcml2YXRlIGFic29sdXRlUGF0aDogc3RyaW5nID0gXCJcIjtcclxuICAgIHByaXZhdGUgZm14RWxlbWVudE9iamVjdE1hcCA9IG5ldyBNYXA8RmFtaXguRW50aXR5LCBUU01vcnBoT2JqZWN0VHlwZT4oKTtcclxuICAgIHByaXZhdGUgdHNNb3JwaE9iamVjdE1hcCA9IG5ldyBNYXA8VFNNb3JwaE9iamVjdFR5cGUsIEZhbWl4LkVudGl0eT4oKTsgLy8gVE9ETzogYWRkIHRoaXMgbWFwIHRvIGhhdmUgdHdvLXdheSBtYXBwaW5nIGJldHdlZW4gRmFtaXggYW5kIFRTIE1vcnBoIG9iamVjdHNcclxuICAgIFxyXG4gICAgY29uc3RydWN0b3IoKSB7XHJcbiAgICAgICAgdGhpcy5hZGRFbGVtZW50KG5ldyBTb3VyY2VMYW5ndWFnZSgpKTsgIC8vIGFkZCB0aGUgc291cmNlIGxhbmd1YWdlIGVudGl0eSAoVHlwZVNjcmlwdClcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0Rm14RWxlbWVudE9iamVjdE1hcChmbXhFbGVtZW50T2JqZWN0TWFwOiBNYXA8RmFtaXguRW50aXR5LCBUU01vcnBoT2JqZWN0VHlwZT4pIHtcclxuICAgICAgICB0aGlzLmZteEVsZW1lbnRPYmplY3RNYXAgPSBmbXhFbGVtZW50T2JqZWN0TWFwO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBnZXRGbXhFbGVtZW50T2JqZWN0TWFwKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmZteEVsZW1lbnRPYmplY3RNYXA7XHJcbiAgICB9XHJcblxyXG4gICAgcHVibGljIGdldEFic29sdXRlUGF0aCgpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiB0aGlzLmFic29sdXRlUGF0aDtcclxuICAgIH1cclxuXHJcbiAgICBwdWJsaWMgc2V0QWJzb2x1dGVQYXRoKHBhdGg6IHN0cmluZykge1xyXG4gICAgICAgIHRoaXMuYWJzb2x1dGVQYXRoID0gcGF0aDtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYSBGYW1peCBlbnRpdHkgYnkgaWRcclxuICAgICAqIEBwYXJhbSBpZCBBbiBpZCBvZiBhIEZhbWl4IGVudGl0eVxyXG4gICAgICogQHJldHVybnMgVGhlIEZhbWl4IGVudGl0eSBjb3JyZXNwb25kaW5nIHRvIHRoZSBpZCBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0RmFtaXhFbnRpdHlCeUlkKGlkOiBudW1iZXIpOiBGYW1peEJhc2VFbGVtZW50IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBjb25zdCBlbnRpdHkgPSBBcnJheS5mcm9tKHRoaXMuZWxlbWVudHMudmFsdWVzKCkpLmZpbmQoZSA9PiBlLmlkID09PSBpZCk7XHJcbiAgICAgICAgcmV0dXJuIGVudGl0eTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYSBGYW1peCBlbnRpdHkgYnkgZnVsbHkgcXVhbGlmaWVkIG5hbWVcclxuICAgICAqIEBwYXJhbSBmdWxseVF1YWxpZmllZE5hbWUgQSBmdWxseSBxdWFsaWZpZWQgbmFtZVxyXG4gICAgICogQHJldHVybnMgVGhlIEZhbWl4IGVudGl0eSBjb3JyZXNwb25kaW5nIHRvIHRoZSBmdWxseSBxdWFsaWZpZWQgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgZ2V0RmFtaXhFbnRpdHlCeUZ1bGx5UXVhbGlmaWVkTmFtZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IEZhbWl4QmFzZUVsZW1lbnQgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIGNvbnN0IGFsbEVudGl0aWVzID0gQXJyYXkuZnJvbSh0aGlzLmVsZW1lbnRzLnZhbHVlcygpKS5maWx0ZXIoZSA9PiBlIGluc3RhbmNlb2YgTmFtZWRFbnRpdHkpIGFzIEFycmF5PE5hbWVkRW50aXR5PjtcclxuICAgICAgICBjb25zdCBlbnRpdHkgPSBhbGxFbnRpdGllcy5maW5kKGUgPT4gZS5mdWxseVF1YWxpZmllZE5hbWUgPT09IGZ1bGx5UXVhbGlmaWVkTmFtZSk7XHJcbiAgICAgICAgcmV0dXJuIGVudGl0eTtcclxuICAgIH1cclxuXHJcbiAgICBleHBvcnQoYXJnMDogeyBmb3JtYXQ6IHN0cmluZzsgfSkge1xyXG4gICAgICAgIGlmIChhcmcwLmZvcm1hdCA9PT0gXCJqc29uXCIpIHtcclxuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0SlNPTigpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIlVuc3VwcG9ydGVkIGZvcm1hdFwiKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG5cclxuICAgIC8vIE9ubHkgZm9yIHRlc3RzXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGFsbCBGYW1peCBlbnRpdGllc1xyXG4gICAgICogQHJldHVybnMgQWxsIEZhbWl4IGVudGl0aWVzXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBfZ2V0QWxsRW50aXRpZXMoKTogU2V0PEZhbWl4QmFzZUVsZW1lbnQ+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFNldChBcnJheS5mcm9tKHRoaXMuZWxlbWVudHMudmFsdWVzKCkpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYWxsIEZhbWl4IGVudGl0aWVzIG9mIGEgZ2l2ZW4gdHlwZVxyXG4gICAgICogQHBhcmFtIHRoZVR5cGUgQSB0eXBlIG9mIEZhbWl4IGVudGl0eVxyXG4gICAgICogQHJldHVybnMgQWxsIEZhbWl4IGVudGl0aWVzIG9mIHRoZSBnaXZlbiB0eXBlXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBfZ2V0QWxsRW50aXRpZXNXaXRoVHlwZSh0aGVUeXBlOiBzdHJpbmcpOiBTZXQ8RmFtaXhCYXNlRWxlbWVudD4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20odGhpcy5lbGVtZW50cy52YWx1ZXMoKSkuZmlsdGVyKGUgPT4gKGUgYXMgRmFtaXhCYXNlRWxlbWVudCkuY29uc3RydWN0b3IubmFtZSA9PT0gdGhlVHlwZSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBhIEZhbWl4IGNsYXNzIGJ5IG5hbWVcclxuICAgICAqIEBwYXJhbSBuYW1lIEEgY2xhc3MgbmFtZVxyXG4gICAgICogQHJldHVybnMgVGhlIEZhbWl4IGNsYXNzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5hbWUgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcclxuICAgICAqL1xyXG4gICAgcHVibGljIF9nZXRGYW1peENsYXNzKGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogQ2xhc3MgfCB1bmRlZmluZWQge1xyXG4gICAgICAgIHJldHVybiBBcnJheS5mcm9tKHRoaXMuZmFtaXhDbGFzc2VzLnZhbHVlcygpKS5maW5kKG5zID0+IG5zLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYSBGYW1peCBpbnRlcmZhY2UgYnkgbmFtZVxyXG4gICAgICogQHBhcmFtIG5hbWUgQW4gaW50ZXJmYWNlIG5hbWVcclxuICAgICAqIEByZXR1cm5zIFRoZSBGYW1peCBpbnRlcmZhY2UgY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgX2dldEZhbWl4SW50ZXJmYWNlKGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogSW50ZXJmYWNlIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZhbWl4SW50ZXJmYWNlcy52YWx1ZXMoKSkuZmluZChucyA9PiBucy5mdWxseVF1YWxpZmllZE5hbWUgPT09IGZ1bGx5UXVhbGlmaWVkTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGEgRmFtaXggbWV0aG9kIGJ5IG5hbWVcclxuICAgICAqIEBwYXJhbSBuYW1lIEEgbWV0aG9kIG5hbWVcclxuICAgICAqIEByZXR1cm5zIFRoZSBGYW1peCBtZXRob2QgY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgX2dldEZhbWl4TWV0aG9kKGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogTWV0aG9kIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZhbWl4TWV0aG9kcy52YWx1ZXMoKSkuZmluZChucyA9PiBucy5mdWxseVF1YWxpZmllZE5hbWUgPT09IGZ1bGx5UXVhbGlmaWVkTmFtZSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGEgRmFtaXggZnVuY3Rpb24gYnkgbmFtZVxyXG4gICAgICogQHBhcmFtIG5hbWUgQSBmdW5jdGlvbiBuYW1lXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggZnVuY3Rpb24gY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgX2dldEZhbWl4RnVuY3Rpb24oZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcpOiBGYW1peEZ1bmN0aW9uRW50aXR5IHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZhbWl4RnVuY3Rpb25zLnZhbHVlcygpKS5maW5kKG5zID0+IG5zLmZ1bGx5UXVhbGlmaWVkTmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGEgRmFtaXggdmFyaWFibGUgYnkgbmFtZVxyXG4gICAgICogQHBhcmFtIG5hbWUgQSB2YXJpYWJsZSBuYW1lXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggdmFyaWFibGUgY29ycmVzcG9uZGluZyB0byB0aGUgbmFtZSBvciB1bmRlZmluZWQgaWYgaXQgZG9lc24ndCBleGlzdFxyXG4gICAgICovXHJcbiAgICBwdWJsaWMgX2dldEZhbWl4VmFyaWFibGUoZnVsbHlRdWFsaWZpZWROYW1lOiBzdHJpbmcpOiBWYXJpYWJsZSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mYW1peFZhcmlhYmxlcy52YWx1ZXMoKSkuZmluZCh2ID0+IHYuZnVsbHlRdWFsaWZpZWROYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBhIEZhbWl4IG5hbWVzcGFjZSBieSBuYW1lXHJcbiAgICAgKiBAcGFyYW0gbmFtZSBBIG5hbWVzcGFjZSBuYW1lXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggbmFtZXNwYWNlIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG5hbWUgb3IgdW5kZWZpbmVkIGlmIGl0IGRvZXNuJ3QgZXhpc3RcclxuICAgICAqL1xyXG4gICAgcHVibGljIF9nZXRGYW1peE1vZHVsZShmdWxseVF1YWxpZmllZE5hbWU6IHN0cmluZyk6IE1vZHVsZSB8IHVuZGVmaW5lZCB7XHJcbiAgICAgICAgcmV0dXJuIEFycmF5LmZyb20odGhpcy5mYW1peE1vZHVsZXMudmFsdWVzKCkpLmZpbmQobnMgPT4gbnMuZnVsbHlRdWFsaWZpZWROYW1lID09PSBmdWxseVF1YWxpZmllZE5hbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBhbGwgRmFtaXggbmFtZXNwYWNlc1xyXG4gICAgICogQHJldHVybnMgQWxsIEZhbWl4IG5hbWVzcGFjZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIF9nZXRGYW1peE1vZHVsZXMoKTogU2V0PE1vZHVsZT4ge1xyXG4gICAgICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20odGhpcy5mYW1peE1vZHVsZXMudmFsdWVzKCkpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYSBGYW1peCBmaWxlIGJ5IG5hbWVcclxuICAgICAqIEBwYXJhbSBuYW1lIEEgZmlsZSBuYW1lXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgRmFtaXggZmlsZSBjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1lIG9yIHVuZGVmaW5lZCBpZiBpdCBkb2Vzbid0IGV4aXN0XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBfZ2V0RmFtaXhGaWxlKGZ1bGx5UXVhbGlmaWVkTmFtZTogc3RyaW5nKTogU2NyaXB0RW50aXR5IHwgTW9kdWxlIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICByZXR1cm4gQXJyYXkuZnJvbSh0aGlzLmZhbWl4RmlsZXMudmFsdWVzKCkpLmZpbmQobnMgPT4gbnMubmFtZSA9PT0gZnVsbHlRdWFsaWZpZWROYW1lKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgYWxsIEZhbWl4IGZpbGVzXHJcbiAgICAgKiBAcmV0dXJucyBBbGwgRmFtaXggZmlsZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIF9nZXRGYW1peEZpbGVzKCk6IFNldDxTY3JpcHRFbnRpdHkgfCBNb2R1bGU+IHtcclxuICAgICAgICByZXR1cm4gbmV3IFNldChBcnJheS5mcm9tKHRoaXMuZmFtaXhGaWxlcy52YWx1ZXMoKSkpO1xyXG4gICAgfVxyXG5cclxuICAgIC8qKlxyXG4gICAgICogR2V0cyBhbGwgbWV0aG9kIG5hbWVzIGFzIGEgc2V0IGZyb20gYSBjbGFzc1xyXG4gICAgICogQHBhcmFtIGNsYXNzTmFtZSBBIGNsYXNzIG5hbWVcclxuICAgICAqIEByZXR1cm5zIFRoZSBzZXQgb2YgY2xhc3MgXCJjbGFzc05hbWVcIiBtZXRob2QgbmFtZXNcclxuICAgICAqL1xyXG4gICAgcHVibGljIF9tZXRob2ROYW1lc0FzU2V0RnJvbUNsYXNzKGNsYXNzTmFtZTogc3RyaW5nKTogU2V0PHN0cmluZz4ge1xyXG4gICAgICAgIGNvbnN0IHRoZUNsYXNzID0gdGhpcy5fZ2V0RmFtaXhDbGFzcyhjbGFzc05hbWUpIGFzIENsYXNzO1xyXG4gICAgICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20odGhlQ2xhc3MubWV0aG9kcykubWFwKG0gPT4gbS5uYW1lKSk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGFsbCBtZXRob2QgcGFyZW50cyBhcyBhIHNldCBmcm9tIGEgY2xhc3NcclxuICAgICAqIEBwYXJhbSBjbGFzc05hbWUgQSBjbGFzcyBuYW1lXHJcbiAgICAgKiBAcmV0dXJucyBUaGUgc2V0IG9mIGNsYXNzIFwiY2xhc3NOYW1lXCIgbWV0aG9kIHBhcmVudHNcclxuICAgICAqL1xyXG4gICAgcHVibGljIF9tZXRob2RQYXJlbnRzQXNTZXRGcm9tQ2xhc3MoY2xhc3NOYW1lOiBzdHJpbmcpOiBTZXQ8VHlwZT4ge1xyXG4gICAgICAgIGNvbnN0IHRoZUNsYXNzID0gdGhpcy5fZ2V0RmFtaXhDbGFzcyhjbGFzc05hbWUpIGFzIENsYXNzO1xyXG4gICAgICAgIHJldHVybiBuZXcgU2V0KEFycmF5LmZyb20odGhlQ2xhc3MubWV0aG9kcykubWFwKG0gPT4gbS5wYXJlbnRFbnRpdHkpKTtcclxuICAgIH1cclxuXHJcbiAgICAvKipcclxuICAgICAqIEdldHMgdGhlIG1hcCBvZiBGYW1peCBlbGVtZW50IGlkcyBhbmQgdGhlaXIgRmFtaXggZWxlbWVudCBmcm9tIGEgSlNPTiBtb2RlbFxyXG4gICAgICogQHBhcmFtIG1vZGVsIEEgSlNPTiBtb2RlbFxyXG4gICAgICogQHJldHVybnMgVGhlIG1hcCBvZiBGYW1peCBlbGVtZW50IGlkcyBhbmQgdGhlaXIgRmFtaXggZWxlbWVudCBmcm9tIHRoZSBKU09OIG1vZGVsXHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBfaW5pdE1hcEZyb21Nb2RlbChtb2RlbDogc3RyaW5nKTogTWFwPG51bWJlciwgdW5rbm93bj4ge1xyXG4gICAgICAgIGNvbnN0IHBhcnNlZE1vZGVsOiBBcnJheTxGYW1peEJhc2VFbGVtZW50PiA9IEpTT04ucGFyc2UobW9kZWwpO1xyXG4gICAgICAgIGNvbnN0IGlkVG9FbGVtZW50TWFwOiBNYXA8bnVtYmVyLCB1bmtub3duPiA9IG5ldyBNYXAoKTtcclxuICAgICAgICBwYXJzZWRNb2RlbC5mb3JFYWNoKGVsZW1lbnQgPT4ge1xyXG4gICAgICAgICAgICBpZFRvRWxlbWVudE1hcC5zZXQoZWxlbWVudC5pZCwgZWxlbWVudCk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIGlkVG9FbGVtZW50TWFwO1xyXG4gICAgfVxyXG5cclxuXHJcbiAgICAvKipcclxuICAgICAqIEFkZHMgYSBGYW1peCBlbGVtZW50IHRvIHRoZSByZXBvc2l0b3J5XHJcbiAgICAgKiBAcGFyYW0gZWxlbWVudCBBIEZhbWl4IGVsZW1lbnRcclxuICAgICAqL1xyXG4gICAgcHVibGljIGFkZEVsZW1lbnQoZWxlbWVudDogRmFtaXhCYXNlRWxlbWVudCk6IHZvaWQge1xyXG4gICAgICAgIGlmIChlbGVtZW50IGluc3RhbmNlb2YgQ2xhc3MpIHtcclxuICAgICAgICAgICAgdGhpcy5mYW1peENsYXNzZXMuYWRkKGVsZW1lbnQpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEludGVyZmFjZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZhbWl4SW50ZXJmYWNlcy5hZGQoZWxlbWVudCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgTW9kdWxlKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZmFtaXhNb2R1bGVzLmFkZChlbGVtZW50KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBWYXJpYWJsZSkge1xyXG4gICAgICAgICAgICB0aGlzLmZhbWl4VmFyaWFibGVzLmFkZChlbGVtZW50KTtcclxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQgaW5zdGFuY2VvZiBNZXRob2QpIHtcclxuICAgICAgICAgICAgdGhpcy5mYW1peE1ldGhvZHMuYWRkKGVsZW1lbnQpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudCBpbnN0YW5jZW9mIEZhbWl4RnVuY3Rpb25FbnRpdHkgfHwgZWxlbWVudCBpbnN0YW5jZW9mIEFycm93RnVuY3Rpb24pIHtcclxuICAgICAgICAgICAgdGhpcy5mYW1peEZ1bmN0aW9ucy5hZGQoZWxlbWVudCk7XHJcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50IGluc3RhbmNlb2YgU2NyaXB0RW50aXR5IHx8IGVsZW1lbnQgaW5zdGFuY2VvZiBNb2R1bGUpIHtcclxuICAgICAgICAgICAgdGhpcy5mYW1peEZpbGVzLmFkZChlbGVtZW50KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5lbGVtZW50cy5hZGQoZWxlbWVudCk7XHJcbiAgICAgICAgZWxlbWVudC5pZCA9IHRoaXMuaWRDb3VudGVyO1xyXG4gICAgICAgIHRoaXMuaWRDb3VudGVyKys7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqXHJcbiAgICAgKiBHZXRzIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgcmVwb3NpdG9yeVxyXG4gICAgICogQHJldHVybnMgQSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSByZXBvc2l0b3J5XHJcbiAgICAgKi9cclxuICAgIHB1YmxpYyBnZXRKU09OKCk6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHJldCA9IFwiW1wiO1xyXG4gICAgICAgIGZvciAoY29uc3QgZWxlbWVudCBvZiBBcnJheS5mcm9tKHRoaXMuZWxlbWVudHMudmFsdWVzKCkpKSB7XHJcbiAgICAgICAgICAgIHJldCA9IHJldCArIGVsZW1lbnQuZ2V0SlNPTigpICsgXCIsXCI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldCA9IHJldC5zdWJzdHJpbmcoMCwgcmV0Lmxlbmd0aCAtIDEpO1xyXG4gICAgICAgIHJldHVybiByZXQgKyBcIl1cIjtcclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,31 +0,0 @@
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
- const Famix = __importStar(require("./model/famix"));
26
- const famix_base_element_1 = require("./famix_base_element");
27
- const famix_JSON_exporter_1 = require("./famix_JSON_exporter");
28
- const famix_repository_1 = require("./famix_repository");
29
- const model = { Famix };
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbGliL2ZhbWl4L3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxxREFBdUM7QUFDdkMsNkRBQXdEO0FBQ3hELCtEQUEwRDtBQUMxRCx5REFBcUQ7QUFFckQsTUFBTSxLQUFLLEdBQUcsRUFBRSxLQUFLLEVBQUUsQ0FBQztBQUV4QixpQkFBUyxFQUFFLGdCQUFnQixFQUFoQixxQ0FBZ0IsRUFBRSxpQkFBaUIsRUFBakIsdUNBQWlCLEVBQUUsZUFBZSxFQUFmLGtDQUFlLEVBQUUsS0FBSyxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBGYW1peCBmcm9tIFwiLi9tb2RlbC9mYW1peFwiO1xyXG5pbXBvcnQgeyBGYW1peEJhc2VFbGVtZW50IH0gZnJvbSBcIi4vZmFtaXhfYmFzZV9lbGVtZW50XCI7XHJcbmltcG9ydCB7IEZhbWl4SlNPTkV4cG9ydGVyIH0gZnJvbSBcIi4vZmFtaXhfSlNPTl9leHBvcnRlclwiO1xyXG5pbXBvcnQgeyBGYW1peFJlcG9zaXRvcnkgfSBmcm9tIFwiLi9mYW1peF9yZXBvc2l0b3J5XCI7XHJcblxyXG5jb25zdCBtb2RlbCA9IHsgRmFtaXggfTtcclxuXHJcbmV4cG9ydCA9IHsgRmFtaXhCYXNlRWxlbWVudCwgRmFtaXhKU09ORXhwb3J0ZXIsIEZhbWl4UmVwb3NpdG9yeSwgbW9kZWwgfTtcclxuIl19
@@ -1,40 +0,0 @@
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjZXNzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL2xpYi9mYW1peC9zcmMvbW9kZWwvZmFtaXgvYWNjZXNzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1FQUE4RDtBQUc5RCxxQ0FBa0M7QUFFbEMsTUFBYSxNQUFPLFNBQVEsZUFBTTtJQU12QixPQUFPO1FBQ1YsTUFBTSxJQUFJLEdBQXNCLElBQUksdUNBQWlCLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxDQUFDO1FBQ3RFLElBQUksQ0FBQyx1QkFBdUIsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNuQyxPQUFPLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUMxQixDQUFDO0lBRU0sdUJBQXVCLENBQUMsUUFBMkI7UUFDdEQsS0FBSyxDQUFDLHVCQUF1QixDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3hDLFFBQVEsQ0FBQyxXQUFXLENBQUMsVUFBVSxFQUFFLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxRQUFRLENBQUMsV0FBVyxDQUFDLFVBQVUsRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsUUFBUSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRCxJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUM7SUFDMUIsQ0FBQztJQUVELElBQUksUUFBUSxDQUFDLFFBQXlCO1FBQ2xDLElBQUksQ0FBQyxTQUFTLEdBQUcsUUFBUSxDQUFDO1FBQzFCLFFBQVEsQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQUksUUFBUTtRQUNSLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxRQUFRLENBQUMsUUFBMEI7UUFDbkMsSUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7UUFDMUIsUUFBUSxDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO0lBQ3JDLENBQUM7SUFFRCxJQUFJLE9BQU87UUFDUCxPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7SUFDekIsQ0FBQztJQUVELElBQUksT0FBTyxDQUFDLE9BQWdCO1FBQ3hCLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzVCLENBQUM7Q0FDSjtBQTVDRCx3QkE0Q0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBGYW1peEpTT05FeHBvcnRlciB9IGZyb20gXCIuLi8uLi9mYW1peF9KU09OX2V4cG9ydGVyXCI7XHJcbmltcG9ydCB7IFN0cnVjdHVyYWxFbnRpdHkgfSBmcm9tIFwiLi9zdHJ1Y3R1cmFsX2VudGl0eVwiO1xyXG5pbXBvcnQgeyBDb250YWluZXJFbnRpdHkgfSBmcm9tIFwiLi9jb250YWluZXJfZW50aXR5XCI7XHJcbmltcG9ydCB7IEVudGl0eSB9IGZyb20gXCIuL2VudGl0eVwiO1xyXG5cclxuZXhwb3J0IGNsYXNzIEFjY2VzcyBleHRlbmRzIEVudGl0eSB7XHJcblxyXG4gICAgcHJpdmF0ZSBfYWNjZXNzb3IhOiBDb250YWluZXJFbnRpdHk7XHJcbiAgICBwcml2YXRlIF92YXJpYWJsZSE6IFN0cnVjdHVyYWxFbnRpdHk7XHJcbiAgICBwcml2YXRlIF9pc1dyaXRlITogYm9vbGVhbjtcclxuXHJcbiAgICBwdWJsaWMgZ2V0SlNPTigpOiBzdHJpbmcge1xyXG4gICAgICAgIGNvbnN0IGpzb246IEZhbWl4SlNPTkV4cG9ydGVyID0gbmV3IEZhbWl4SlNPTkV4cG9ydGVyKFwiQWNjZXNzXCIsIHRoaXMpO1xyXG4gICAgICAgIHRoaXMuYWRkUHJvcGVydGllc1RvRXhwb3J0ZXIoanNvbik7XHJcbiAgICAgICAgcmV0dXJuIGpzb24uZ2V0SlNPTigpO1xyXG4gICAgfVxyXG5cclxuICAgIHB1YmxpYyBhZGRQcm9wZXJ0aWVzVG9FeHBvcnRlcihleHBvcnRlcjogRmFtaXhKU09ORXhwb3J0ZXIpOiB2b2lkIHtcclxuICAgICAgICBzdXBlci5hZGRQcm9wZXJ0aWVzVG9FeHBvcnRlcihleHBvcnRlcik7XHJcbiAgICAgICAgZXhwb3J0ZXIuYWRkUHJvcGVydHkoXCJhY2Nlc3NvclwiLCB0aGlzLmFjY2Vzc29yKTtcclxuICAgICAgICBleHBvcnRlci5hZGRQcm9wZXJ0eShcInZhcmlhYmxlXCIsIHRoaXMudmFyaWFibGUpO1xyXG4gICAgICAgIGV4cG9ydGVyLmFkZFByb3BlcnR5KFwiaXNXcml0ZVwiLCB0aGlzLmlzV3JpdGUpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBhY2Nlc3NvcigpOiBDb250YWluZXJFbnRpdHkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLl9hY2Nlc3NvcjtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgYWNjZXNzb3IoYWNjZXNzb3I6IENvbnRhaW5lckVudGl0eSkge1xyXG4gICAgICAgIHRoaXMuX2FjY2Vzc29yID0gYWNjZXNzb3I7XHJcbiAgICAgICAgYWNjZXNzb3IuYWRkQWNjZXNzKHRoaXMpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCB2YXJpYWJsZSgpOiBTdHJ1Y3R1cmFsRW50aXR5IHtcclxuICAgICAgICByZXR1cm4gdGhpcy5fdmFyaWFibGU7XHJcbiAgICB9XHJcblxyXG4gICAgc2V0IHZhcmlhYmxlKHZhcmlhYmxlOiBTdHJ1Y3R1cmFsRW50aXR5KSB7XHJcbiAgICAgICAgdGhpcy5fdmFyaWFibGUgPSB2YXJpYWJsZTtcclxuICAgICAgICB2YXJpYWJsZS5hZGRJbmNvbWluZ0FjY2Vzcyh0aGlzKTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgaXNXcml0ZSgpOiBib29sZWFuIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5faXNXcml0ZTtcclxuICAgIH1cclxuXHJcbiAgICBzZXQgaXNXcml0ZShpc1dyaXRlOiBib29sZWFuKSB7XHJcbiAgICAgICAgdGhpcy5faXNXcml0ZSA9IGlzV3JpdGU7XHJcbiAgICB9XHJcbn1cclxuIl19