@ihk-gfi/lux-components-update 11.3.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 (158) hide show
  1. package/LICENSE +198 -0
  2. package/README.md +55 -0
  3. package/package.json +54 -0
  4. package/src/add-lux-components/files/app/app-routing.module.ts +19 -0
  5. package/src/add-lux-components/files/app/app.component.html +27 -0
  6. package/src/add-lux-components/files/app/app.component.spec.ts +19 -0
  7. package/src/add-lux-components/files/app/app.component.ts +13 -0
  8. package/src/add-lux-components/files/app/app.module.ts +56 -0
  9. package/src/add-lux-components/files/app/error/error.component.html +10 -0
  10. package/src/add-lux-components/files/app/error/error.component.scss +3 -0
  11. package/src/add-lux-components/files/app/error/error.component.spec.ts +49 -0
  12. package/src/add-lux-components/files/app/error/error.component.ts +17 -0
  13. package/src/add-lux-components/files/app/home/home.component.html +7 -0
  14. package/src/add-lux-components/files/app/home/home.component.scss +0 -0
  15. package/src/add-lux-components/files/app/home/home.component.ts +13 -0
  16. package/src/add-lux-components/files/app/profil/profil.component.html +1 -0
  17. package/src/add-lux-components/files/app/profil/profil.component.scss +0 -0
  18. package/src/add-lux-components/files/app/profil/profil.component.spec.ts +24 -0
  19. package/src/add-lux-components/files/app/profil/profil.component.ts +11 -0
  20. package/src/add-lux-components/files/environments/environment.prod.ts +4 -0
  21. package/src/add-lux-components/files/environments/environment.ts +17 -0
  22. package/src/add-lux-components/files/locale/messages.en.xlf +948 -0
  23. package/src/add-lux-components/files/locale/messages.xlf +822 -0
  24. package/src/add-lux-components/files/scripts/.browserslistrc +17 -0
  25. package/src/add-lux-components/files/src/polyfills.ts +68 -0
  26. package/src/add-lux-components/index.d.ts +10 -0
  27. package/src/add-lux-components/index.js +143 -0
  28. package/src/add-lux-components/index.js.map +1 -0
  29. package/src/add-lux-components/index.ts +183 -0
  30. package/src/add-lux-components/index_spec.d.ts +1 -0
  31. package/src/add-lux-components/index_spec.js +51 -0
  32. package/src/add-lux-components/index_spec.js.map +1 -0
  33. package/src/add-lux-components/index_spec.ts +55 -0
  34. package/src/add-lux-components/schema.json +23 -0
  35. package/src/collection.json +55 -0
  36. package/src/migrate-to-eslint/files/.eslintrc.json +68 -0
  37. package/src/migrate-to-eslint/files/.prettierrc +25 -0
  38. package/src/migrate-to-eslint/index.d.ts +6 -0
  39. package/src/migrate-to-eslint/index.js +149 -0
  40. package/src/migrate-to-eslint/index.js.map +1 -0
  41. package/src/migrate-to-eslint/index.ts +181 -0
  42. package/src/migrate-to-eslint/index_spec.d.ts +1 -0
  43. package/src/migrate-to-eslint/index_spec.js +129 -0
  44. package/src/migrate-to-eslint/index_spec.js.map +1 -0
  45. package/src/migrate-to-eslint/index_spec.ts +152 -0
  46. package/src/migrate-to-eslint/schema.json +23 -0
  47. package/src/migrate-to-webcomponent/index.d.ts +10 -0
  48. package/src/migrate-to-webcomponent/index.js +278 -0
  49. package/src/migrate-to-webcomponent/index.js.map +1 -0
  50. package/src/migrate-to-webcomponent/index.ts +331 -0
  51. package/src/migrate-to-webcomponent/index_spec.d.ts +1 -0
  52. package/src/migrate-to-webcomponent/index_spec.js +580 -0
  53. package/src/migrate-to-webcomponent/index_spec.js.map +1 -0
  54. package/src/migrate-to-webcomponent/index_spec.ts +703 -0
  55. package/src/migrate-to-webcomponent/schema.json +23 -0
  56. package/src/update/files/locale/messages.en.xlf +940 -0
  57. package/src/update/files/locale/messages.xlf +815 -0
  58. package/src/update/files/scripts/move-de-files.js +15 -0
  59. package/src/update/index.d.ts +23 -0
  60. package/src/update/index.js +635 -0
  61. package/src/update/index.js.map +1 -0
  62. package/src/update/index.ts +712 -0
  63. package/src/update/index_spec.d.ts +1 -0
  64. package/src/update/index_spec.js +990 -0
  65. package/src/update/index_spec.js.map +1 -0
  66. package/src/update/index_spec.ts +1145 -0
  67. package/src/update/schema.json +23 -0
  68. package/src/update-dependencies/index.d.ts +5 -0
  69. package/src/update-dependencies/index.js +113 -0
  70. package/src/update-dependencies/index.js.map +1 -0
  71. package/src/update-dependencies/index.ts +114 -0
  72. package/src/update-dependencies/schema.json +23 -0
  73. package/src/update110001/index.d.ts +2 -0
  74. package/src/update110001/index.js +42 -0
  75. package/src/update110001/index.js.map +1 -0
  76. package/src/update110001/index.ts +40 -0
  77. package/src/update110001/index_spec.d.ts +1 -0
  78. package/src/update110001/index_spec.js +67 -0
  79. package/src/update110001/index_spec.js.map +1 -0
  80. package/src/update110001/index_spec.ts +72 -0
  81. package/src/update110001/schema.json +23 -0
  82. package/src/update110100/index.d.ts +2 -0
  83. package/src/update110100/index.js +27 -0
  84. package/src/update110100/index.js.map +1 -0
  85. package/src/update110100/index.ts +24 -0
  86. package/src/update110100/index_spec.d.ts +1 -0
  87. package/src/update110100/index_spec.js +69 -0
  88. package/src/update110100/index_spec.js.map +1 -0
  89. package/src/update110100/index_spec.ts +73 -0
  90. package/src/update110100/schema.json +23 -0
  91. package/src/update110101/index.d.ts +2 -0
  92. package/src/update110101/index.js +24 -0
  93. package/src/update110101/index.js.map +1 -0
  94. package/src/update110101/index.ts +21 -0
  95. package/src/update110101/index_spec.d.ts +1 -0
  96. package/src/update110101/index_spec.js +65 -0
  97. package/src/update110101/index_spec.js.map +1 -0
  98. package/src/update110101/index_spec.ts +69 -0
  99. package/src/update110101/schema.json +23 -0
  100. package/src/update110200/index.d.ts +2 -0
  101. package/src/update110200/index.js +24 -0
  102. package/src/update110200/index.js.map +1 -0
  103. package/src/update110200/index.ts +21 -0
  104. package/src/update110200/index_spec.d.ts +1 -0
  105. package/src/update110200/index_spec.js +65 -0
  106. package/src/update110200/index_spec.js.map +1 -0
  107. package/src/update110200/index_spec.ts +69 -0
  108. package/src/update110200/schema.json +23 -0
  109. package/src/update110300/index.d.ts +2 -0
  110. package/src/update110300/index.js +133 -0
  111. package/src/update110300/index.js.map +1 -0
  112. package/src/update110300/index.ts +148 -0
  113. package/src/update110300/index_spec.d.ts +1 -0
  114. package/src/update110300/index_spec.js +121 -0
  115. package/src/update110300/index_spec.js.map +1 -0
  116. package/src/update110300/index_spec.ts +139 -0
  117. package/src/update110300/schema.json +23 -0
  118. package/src/utility/dependencies.d.ts +39 -0
  119. package/src/utility/dependencies.js +96 -0
  120. package/src/utility/dependencies.js.map +1 -0
  121. package/src/utility/dependencies.ts +116 -0
  122. package/src/utility/files.d.ts +60 -0
  123. package/src/utility/files.js +299 -0
  124. package/src/utility/files.js.map +1 -0
  125. package/src/utility/files.ts +355 -0
  126. package/src/utility/html.d.ts +49 -0
  127. package/src/utility/html.js +183 -0
  128. package/src/utility/html.js.map +1 -0
  129. package/src/utility/html.ts +212 -0
  130. package/src/utility/json.d.ts +34 -0
  131. package/src/utility/json.js +70 -0
  132. package/src/utility/json.js.map +1 -0
  133. package/src/utility/json.ts +70 -0
  134. package/src/utility/logging.d.ts +32 -0
  135. package/src/utility/logging.js +82 -0
  136. package/src/utility/logging.js.map +1 -0
  137. package/src/utility/logging.ts +80 -0
  138. package/src/utility/test.d.ts +10 -0
  139. package/src/utility/test.js +24 -0
  140. package/src/utility/test.js.map +1 -0
  141. package/src/utility/test.ts +24 -0
  142. package/src/utility/typescript.d.ts +22 -0
  143. package/src/utility/typescript.js +521 -0
  144. package/src/utility/typescript.js.map +1 -0
  145. package/src/utility/typescript.ts +598 -0
  146. package/src/utility/typescript_spec.d.ts +1 -0
  147. package/src/utility/typescript_spec.js +1006 -0
  148. package/src/utility/typescript_spec.js.map +1 -0
  149. package/src/utility/typescript_spec.ts +1267 -0
  150. package/src/utility/util.d.ts +33 -0
  151. package/src/utility/util.js +139 -0
  152. package/src/utility/util.js.map +1 -0
  153. package/src/utility/util.ts +140 -0
  154. package/src/utility/validation.d.ts +11 -0
  155. package/src/utility/validation.js +44 -0
  156. package/src/utility/validation.js.map +1 -0
  157. package/src/utility/validation.ts +49 -0
  158. package/tsconfig.json +37 -0
@@ -0,0 +1,521 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.addConstructorContent = exports.addClassProperty = exports.addConstructorParameter = exports.addMethod = exports.addParameter = exports.getMethod = exports.getConstructor = exports.getSyntaxListOfClass = exports.findChild = exports.showTree = exports.getNextSiblings = exports.getNextSibling = exports.getPrevSibling = exports.getSiblings = exports.removeProvider = exports.removeImport = exports.addImport = exports.removeInterface = exports.addInterface = exports.getSourceNodes = void 0;
4
+ const schematics_1 = require("@angular-devkit/schematics");
5
+ const ts = require("typescript");
6
+ const logging_1 = require("./logging");
7
+ function getSourceNodes(sourceFile) {
8
+ const nodes = [sourceFile];
9
+ const result = [];
10
+ while (nodes.length > 0) {
11
+ const node = nodes.shift();
12
+ if (node) {
13
+ result.push(node);
14
+ if (node.getChildCount(sourceFile) >= 0) {
15
+ nodes.unshift(...node.getChildren());
16
+ }
17
+ }
18
+ }
19
+ return result;
20
+ }
21
+ exports.getSourceNodes = getSourceNodes;
22
+ function addInterface(tree, filePath, interfaceName, logMessage = true) {
23
+ const content = tree.read(filePath).toString();
24
+ const fileName = filePath.substring(filePath.lastIndexOf('/') + 1, filePath.length);
25
+ const sourceFile = ts.createSourceFile(`${fileName}`, content, ts.ScriptTarget.Latest, true);
26
+ const nodes = getSourceNodes(sourceFile);
27
+ const classNode = nodes.find((n) => n.kind === ts.SyntaxKind.ClassDeclaration);
28
+ if (classNode) {
29
+ const implementsNode = findChild(classNode, ts.SyntaxKind.FirstFutureReservedWord, 'implements');
30
+ const extendsNode = findChild(classNode, ts.SyntaxKind.ExtendsKeyword, 'extends');
31
+ if (implementsNode) {
32
+ const syntaxListNode = findChild(implementsNode.parent, ts.SyntaxKind.SyntaxList);
33
+ if (syntaxListNode) {
34
+ const lastChild = syntaxListNode.getChildren()[syntaxListNode.getChildren().length - 1];
35
+ const updateRecorder = tree.beginUpdate(filePath);
36
+ updateRecorder.insertLeft(lastChild.end, `, ${interfaceName}`);
37
+ tree.commitUpdate(updateRecorder);
38
+ if (logMessage) {
39
+ logging_1.logInfo(`Interface ${interfaceName} hinzugefügt.`);
40
+ }
41
+ }
42
+ }
43
+ else {
44
+ if (extendsNode) {
45
+ const updateRecorder = tree.beginUpdate(filePath);
46
+ updateRecorder.insertLeft(extendsNode.parent.end, ` implements ${interfaceName}`);
47
+ tree.commitUpdate(updateRecorder);
48
+ if (logMessage) {
49
+ logging_1.logInfo(`Interface ${interfaceName} hinzugefügt.`);
50
+ }
51
+ }
52
+ else {
53
+ const classKeywordNode = findChild(classNode, ts.SyntaxKind.ClassKeyword);
54
+ if (!classKeywordNode) {
55
+ throw new schematics_1.SchematicsException(`Die Klasse ${filePath} hat kein ClassKeyword.`);
56
+ }
57
+ const classIdentifierNode = getNextSibling(classKeywordNode);
58
+ if (!classIdentifierNode) {
59
+ throw new schematics_1.SchematicsException(`Die Klasse ${filePath} hat keinen Namen.`);
60
+ }
61
+ const updateRecorder = tree.beginUpdate(filePath);
62
+ updateRecorder.insertLeft(classIdentifierNode.end, ` implements ${interfaceName}`);
63
+ tree.commitUpdate(updateRecorder);
64
+ if (logMessage) {
65
+ logging_1.logInfo(`Interface ${interfaceName} hinzugefügt.`);
66
+ }
67
+ }
68
+ }
69
+ }
70
+ }
71
+ exports.addInterface = addInterface;
72
+ function removeInterface(tree, filePath, interfaceName, logMessage = true) {
73
+ const content = tree.read(filePath).toString();
74
+ const fileName = filePath.substring(filePath.lastIndexOf('/') + 1, filePath.length);
75
+ const sourceFile = ts.createSourceFile(`${fileName}`, content, ts.ScriptTarget.Latest, true);
76
+ const nodes = getSourceNodes(sourceFile);
77
+ const classNode = nodes.find((n) => n.kind === ts.SyntaxKind.ClassDeclaration);
78
+ if (classNode) {
79
+ const syntaxListClassNodes = classNode.getChildren().filter((n) => n.kind === ts.SyntaxKind.SyntaxList);
80
+ if (syntaxListClassNodes) {
81
+ syntaxListClassNodes.forEach((syntaxListNode) => {
82
+ const heritageClauseNodes = syntaxListNode.getChildren().filter((n) => n.kind === ts.SyntaxKind.HeritageClause);
83
+ if (heritageClauseNodes) {
84
+ heritageClauseNodes.forEach((heritageClauseNode) => {
85
+ const wordNode = heritageClauseNode
86
+ .getChildren()
87
+ .find((n) => n.kind === ts.SyntaxKind.FirstFutureReservedWord);
88
+ if (wordNode && wordNode.getText() === 'implements') {
89
+ const interfaceSyntaxNode = heritageClauseNode
90
+ .getChildren()
91
+ .find((n) => n.kind === ts.SyntaxKind.SyntaxList);
92
+ if (interfaceSyntaxNode) {
93
+ const interfaceChildren = interfaceSyntaxNode.getChildren();
94
+ if (interfaceChildren) {
95
+ if (interfaceChildren.length === 1) {
96
+ if (interfaceChildren[0].getText() === interfaceName) {
97
+ const updateRecorder = tree.beginUpdate(filePath);
98
+ updateRecorder.remove(heritageClauseNode.pos, heritageClauseNode.getChildren()[heritageClauseNode.getChildren().length - 1].end -
99
+ heritageClauseNode.pos);
100
+ tree.commitUpdate(updateRecorder);
101
+ if (logMessage) {
102
+ logging_1.logInfo(`Interface ${interfaceName} entfernt.`);
103
+ }
104
+ }
105
+ }
106
+ else {
107
+ for (let i = 0; i < interfaceChildren.length; i++) {
108
+ if (interfaceChildren[i].getText() === interfaceName) {
109
+ const prevSibling = getPrevSibling(interfaceChildren[i], ts.SyntaxKind.SyntaxList);
110
+ const nextSibling = getNextSibling(interfaceChildren[i], ts.SyntaxKind.SyntaxList);
111
+ const updateRecorder = tree.beginUpdate(filePath);
112
+ if (nextSibling) {
113
+ updateRecorder.remove(interfaceChildren[i].pos, nextSibling.end - interfaceChildren[i].pos);
114
+ }
115
+ else {
116
+ if (prevSibling) {
117
+ updateRecorder.remove(prevSibling.pos, interfaceChildren[i].end - prevSibling.pos);
118
+ }
119
+ else {
120
+ updateRecorder.remove(interfaceChildren[i].pos, interfaceChildren[i].end - interfaceChildren[i].pos);
121
+ }
122
+ }
123
+ tree.commitUpdate(updateRecorder);
124
+ if (logMessage) {
125
+ logging_1.logInfo(`Interface ${interfaceName} entfernt.`);
126
+ }
127
+ }
128
+ }
129
+ }
130
+ }
131
+ }
132
+ }
133
+ });
134
+ }
135
+ });
136
+ }
137
+ }
138
+ }
139
+ exports.removeInterface = removeInterface;
140
+ function addImport(tree, filePath, packageName, importName, logMessage = true) {
141
+ const content = tree.read(filePath).toString();
142
+ const fileName = filePath.substring(filePath.lastIndexOf('/') + 1, filePath.length);
143
+ const sourceFile = ts.createSourceFile(`${fileName}`, content, ts.ScriptTarget.Latest, true);
144
+ const nodes = getSourceNodes(sourceFile);
145
+ const importNodes = nodes.filter((n) => n.kind === ts.SyntaxKind.ImportDeclaration);
146
+ let importNode = undefined;
147
+ if (importNodes) {
148
+ importNodes.forEach((node) => {
149
+ const importDeclarationChildren = node.getChildren();
150
+ if (importDeclarationChildren) {
151
+ const importNameNode = importDeclarationChildren.find((n) => n.kind === ts.SyntaxKind.StringLiteral &&
152
+ (n.getText() === `'${packageName}'` || n.getText() === `"${packageName}"`));
153
+ if (importNameNode) {
154
+ importNode = node;
155
+ }
156
+ }
157
+ });
158
+ }
159
+ if (importNode) {
160
+ const importClauseNode = importNode.getChildren().find((n) => n.kind === ts.SyntaxKind.ImportClause);
161
+ if (importClauseNode) {
162
+ const namedImportsNode = importClauseNode.getChildren().find((n) => n.kind === ts.SyntaxKind.NamedImports);
163
+ if (!namedImportsNode) {
164
+ throw new schematics_1.SchematicsException(`In der Datei ${filePath} gibt es keine NamedImports.`);
165
+ }
166
+ const syntaxListNode = namedImportsNode.getChildren().find((n) => n.kind === ts.SyntaxKind.SyntaxList);
167
+ if (!syntaxListNode) {
168
+ throw new schematics_1.SchematicsException(`In der Datei ${filePath} gibt es keine SyntaxList für den Import.`);
169
+ }
170
+ const importChildren = syntaxListNode.getChildren();
171
+ const foundNode = importName ? findChild(syntaxListNode, ts.SyntaxKind.Identifier, importName) : undefined;
172
+ if (!foundNode) {
173
+ const lastChildNode = importChildren[syntaxListNode.getChildren().length - 1];
174
+ const updateRecorder = tree.beginUpdate(filePath);
175
+ updateRecorder.insertLeft(lastChildNode.end, ', ' + importName);
176
+ tree.commitUpdate(updateRecorder);
177
+ if (logMessage) {
178
+ logging_1.logInfo(`Import ${importName} hinzugefügt.`);
179
+ }
180
+ }
181
+ }
182
+ }
183
+ else {
184
+ const updateRecorder = tree.beginUpdate(filePath);
185
+ if (importName) {
186
+ updateRecorder.insertLeft(0, `import { ${importName} } from '${packageName}';\n`);
187
+ }
188
+ else {
189
+ updateRecorder.insertLeft(0, `import '${packageName}';\n`);
190
+ }
191
+ tree.commitUpdate(updateRecorder);
192
+ if (logMessage) {
193
+ logging_1.logInfo(`Import ${importName} hinzugefügt.`);
194
+ }
195
+ }
196
+ }
197
+ exports.addImport = addImport;
198
+ function removeImport(tree, filePath, packageName, importName, logMessage = true) {
199
+ const content = tree.read(filePath).toString();
200
+ const fileName = filePath.substring(filePath.lastIndexOf('/') + 1, filePath.length);
201
+ const sourceFile = ts.createSourceFile(`${fileName}`, content, ts.ScriptTarget.Latest, true);
202
+ const nodes = getSourceNodes(sourceFile);
203
+ const importNodes = nodes.filter((n) => n.kind === ts.SyntaxKind.ImportDeclaration);
204
+ if (importNodes) {
205
+ importNodes.forEach((importNode) => {
206
+ const importDeclarationChildren = importNode.getChildren();
207
+ if (!importDeclarationChildren) {
208
+ throw new schematics_1.SchematicsException(`In der Datei ${filePath} gibt es keine ImportDeclaration.`);
209
+ }
210
+ const importNameNode = importDeclarationChildren.find((n) => n.kind === ts.SyntaxKind.StringLiteral && (n.getText() === `'${packageName}'` || n.getText() === `"${packageName}"`));
211
+ if (importNameNode) {
212
+ if (importName) {
213
+ const importClauseNode = importNode.getChildren().find((n) => n.kind === ts.SyntaxKind.ImportClause);
214
+ if (!importClauseNode) {
215
+ throw new schematics_1.SchematicsException(`In der Datei ${filePath} gibt es keine ImportClause.`);
216
+ }
217
+ const namedImportsNode = importClauseNode.getChildren().find((n) => n.kind === ts.SyntaxKind.NamedImports);
218
+ if (!namedImportsNode) {
219
+ throw new schematics_1.SchematicsException(`In der Datei ${filePath} gibt es keine NamedImports.`);
220
+ }
221
+ const syntaxListNode = namedImportsNode.getChildren().find((n) => n.kind === ts.SyntaxKind.SyntaxList);
222
+ if (!syntaxListNode) {
223
+ throw new schematics_1.SchematicsException(`In der Datei ${filePath} gibt es keine SyntaxList.`);
224
+ }
225
+ const importChildren = syntaxListNode.getChildren();
226
+ if (importChildren) {
227
+ if (importChildren.length === 1) {
228
+ if (importChildren[0].getText() === importName) {
229
+ const updateRecorder = tree.beginUpdate(filePath);
230
+ updateRecorder.remove(importNode.pos, importNode.getChildren()[importNode.getChildren().length - 1].end - importNode.pos);
231
+ tree.commitUpdate(updateRecorder);
232
+ if (logMessage) {
233
+ logging_1.logInfo(`Import ${importName} entfernt.`);
234
+ }
235
+ }
236
+ }
237
+ else {
238
+ for (let i = 0; i < importChildren.length; i++) {
239
+ if (importChildren[i].getText() === importName) {
240
+ const prevSibling = getPrevSibling(importChildren[i], ts.SyntaxKind.SyntaxList);
241
+ const nextSibling = getNextSibling(importChildren[i], ts.SyntaxKind.SyntaxList);
242
+ const updateRecorder = tree.beginUpdate(filePath);
243
+ if (nextSibling) {
244
+ updateRecorder.remove(importChildren[i].pos, nextSibling.end - importChildren[i].pos);
245
+ }
246
+ else {
247
+ if (prevSibling) {
248
+ updateRecorder.remove(prevSibling.pos, importChildren[i].end - prevSibling.pos);
249
+ }
250
+ else {
251
+ updateRecorder.remove(importChildren[i].pos, importChildren[i].end - importChildren[i].pos);
252
+ }
253
+ }
254
+ tree.commitUpdate(updateRecorder);
255
+ if (logMessage) {
256
+ logging_1.logInfo(`Import ${importName} entfernt.`);
257
+ }
258
+ }
259
+ }
260
+ }
261
+ }
262
+ }
263
+ else {
264
+ const updateRecorder = tree.beginUpdate(filePath);
265
+ updateRecorder.remove(importNode.pos, importNode.end - importNode.pos);
266
+ tree.commitUpdate(updateRecorder);
267
+ if (logMessage) {
268
+ logging_1.logInfo(`Import ${importName} entfernt.`);
269
+ }
270
+ }
271
+ }
272
+ });
273
+ }
274
+ }
275
+ exports.removeImport = removeImport;
276
+ function removeProvider(tree, filePath, providerName, logMessage = true) {
277
+ const content = tree.read(filePath).toString();
278
+ const fileName = filePath.substring(filePath.lastIndexOf('/') + 1, filePath.length);
279
+ const sourceFile = ts.createSourceFile(`${fileName}`, content, ts.ScriptTarget.Latest, true);
280
+ const nodes = getSourceNodes(sourceFile);
281
+ const providerIdentifierNode = nodes.find((n) => n.kind === ts.SyntaxKind.Identifier && n.getText() === 'providers');
282
+ if (providerIdentifierNode) {
283
+ const siblings = providerIdentifierNode.parent.getChildren();
284
+ if (siblings) {
285
+ const providerArrayNode = siblings.find((n) => n.kind === ts.SyntaxKind.ArrayLiteralExpression);
286
+ if (providerArrayNode) {
287
+ const providerNode = providerArrayNode.getChildren().find((n) => n.kind === ts.SyntaxKind.SyntaxList);
288
+ if (providerNode) {
289
+ const providerChildren = providerNode.getChildren();
290
+ if (providerChildren) {
291
+ for (let i = 0; i < providerChildren.length; i++) {
292
+ if (providerChildren[i].getText().indexOf(providerName) >= 0) {
293
+ const prevSibling = getPrevSibling(providerChildren[i], ts.SyntaxKind.SyntaxList);
294
+ const nextSibling = getNextSibling(providerChildren[i], ts.SyntaxKind.SyntaxList);
295
+ const updateRecorder = tree.beginUpdate(filePath);
296
+ if (nextSibling) {
297
+ updateRecorder.remove(providerChildren[i].pos, nextSibling.end - providerChildren[i].pos);
298
+ }
299
+ else {
300
+ if (prevSibling) {
301
+ updateRecorder.remove(prevSibling.pos, providerChildren[i].end - prevSibling.pos);
302
+ }
303
+ else {
304
+ updateRecorder.remove(providerChildren[i].pos, providerChildren[i].end - providerChildren[i].pos);
305
+ }
306
+ }
307
+ tree.commitUpdate(updateRecorder);
308
+ if (logMessage) {
309
+ logging_1.logInfo(`Provider ${providerName} entfernt.`);
310
+ }
311
+ }
312
+ }
313
+ }
314
+ }
315
+ }
316
+ }
317
+ }
318
+ }
319
+ exports.removeProvider = removeProvider;
320
+ function getSiblings(node, childKind) {
321
+ let result = [];
322
+ if (node && node.parent.getChildren()) {
323
+ if (childKind) {
324
+ const childNode = node.parent.getChildren().find((child) => child.kind === childKind);
325
+ if (!childNode) {
326
+ throw new schematics_1.SchematicsException(`Es konnte kein Knoten vom Typ ${childKind} gefunden werden.`);
327
+ }
328
+ result = childNode.getChildren();
329
+ }
330
+ else {
331
+ result = node.parent.getChildren();
332
+ }
333
+ }
334
+ return result;
335
+ }
336
+ exports.getSiblings = getSiblings;
337
+ function getPrevSibling(node, childKind) {
338
+ let result = null;
339
+ if (node) {
340
+ let siblings = getSiblings(node, childKind);
341
+ if (siblings) {
342
+ const index = siblings.indexOf(node);
343
+ if (index > 0) {
344
+ result = siblings[index - 1];
345
+ }
346
+ }
347
+ }
348
+ return result;
349
+ }
350
+ exports.getPrevSibling = getPrevSibling;
351
+ function getNextSibling(node, childKind) {
352
+ let result = null;
353
+ if (node) {
354
+ let siblings = getSiblings(node, childKind);
355
+ if (siblings) {
356
+ const index = siblings.indexOf(node);
357
+ if (index >= 0 && index < siblings.length - 1) {
358
+ result = siblings[index + 1];
359
+ }
360
+ }
361
+ }
362
+ return result;
363
+ }
364
+ exports.getNextSibling = getNextSibling;
365
+ function getNextSiblings(node) {
366
+ let result = [];
367
+ if (node) {
368
+ let siblings = getSiblings(node);
369
+ if (siblings) {
370
+ const index = siblings.indexOf(node);
371
+ if (index >= 0 && index < siblings.length - 1) {
372
+ result = siblings.slice(index + 1, siblings.length - 1);
373
+ }
374
+ }
375
+ }
376
+ return result;
377
+ }
378
+ exports.getNextSiblings = getNextSiblings;
379
+ function showTree(node, indent = ' ') {
380
+ console.log(indent + ts.SyntaxKind[node.kind]);
381
+ if (node.getChildCount() === 0) {
382
+ console.log(indent + ' Text: ' + node.getText());
383
+ }
384
+ for (let child of node.getChildren()) {
385
+ showTree(child, indent + ' ');
386
+ }
387
+ }
388
+ exports.showTree = showTree;
389
+ function findChild(node, kind, text, depth = 100) {
390
+ if (node.kind === kind && (!text || node.getText() === text)) {
391
+ return node;
392
+ }
393
+ else {
394
+ for (let child of node.getChildren()) {
395
+ const found = findChild(child, kind, text);
396
+ if (found) {
397
+ return found;
398
+ }
399
+ }
400
+ }
401
+ return undefined;
402
+ }
403
+ exports.findChild = findChild;
404
+ function getSyntaxListOfClass(tree, filePath) {
405
+ const content = tree.read(filePath).toString();
406
+ const fileName = filePath.substring(filePath.lastIndexOf('/') + 1, filePath.length);
407
+ const sourceFile = ts.createSourceFile(`${fileName}`, content, ts.ScriptTarget.Latest, true);
408
+ const nodes = getSourceNodes(sourceFile);
409
+ const classNode = nodes.find((n) => n.kind === ts.SyntaxKind.ClassKeyword);
410
+ if (!classNode) {
411
+ throw new schematics_1.SchematicsException(`Die Klasse in der Datei ${fileName} hat kein ClassKeyword.`);
412
+ }
413
+ const firstPunctuationNode = getNextSiblings(classNode).find(n => n.kind === ts.SyntaxKind.FirstPunctuation);
414
+ if (!firstPunctuationNode) {
415
+ throw new schematics_1.SchematicsException(`Die Klasse in der Datei ${fileName} hat keine FirstPunctuation.`);
416
+ }
417
+ const syntaxListNode = getNextSibling(firstPunctuationNode);
418
+ if (!syntaxListNode) {
419
+ throw new schematics_1.SchematicsException(`Die Klasse in der Datei ${fileName} hat keine SyntaxList.`);
420
+ }
421
+ return syntaxListNode;
422
+ }
423
+ exports.getSyntaxListOfClass = getSyntaxListOfClass;
424
+ function getConstructor(tree, filePath) {
425
+ return findChild(getSyntaxListOfClass(tree, filePath), ts.SyntaxKind.Constructor);
426
+ }
427
+ exports.getConstructor = getConstructor;
428
+ function getMethod(tree, filePath, methodeName) {
429
+ return findChild(getSyntaxListOfClass(tree, filePath), ts.SyntaxKind.MethodDeclaration, methodeName);
430
+ }
431
+ exports.getMethod = getMethod;
432
+ function addParameter(tree, filePath, syntaxListNode, service) {
433
+ const parameterNodes = syntaxListNode.getChildren();
434
+ const updateRecorder = tree.beginUpdate(filePath);
435
+ if (parameterNodes.length == 0) {
436
+ // Constructor ohne Parameter
437
+ updateRecorder.insertLeft(syntaxListNode.pos, service);
438
+ }
439
+ else if (parameterNodes.length > 0) {
440
+ // Constructor mit Parameter
441
+ updateRecorder.insertLeft(parameterNodes[parameterNodes.length - 1].end, ', ' + service);
442
+ }
443
+ tree.commitUpdate(updateRecorder);
444
+ }
445
+ exports.addParameter = addParameter;
446
+ function addMethod(tree, filePath, syntaxListNode, method) {
447
+ const syntaxList = getSyntaxListOfClass(tree, filePath);
448
+ const methodNodes = syntaxList.getChildren().filter(n => n.kind === ts.SyntaxKind.MethodDeclaration);
449
+ let startNode = syntaxList;
450
+ if (methodNodes && methodNodes.length > 0) {
451
+ startNode = methodNodes[methodNodes.length - 1];
452
+ }
453
+ const updateRecorder = tree.beginUpdate(filePath);
454
+ updateRecorder.insertLeft(startNode.end, '\n' + method);
455
+ tree.commitUpdate(updateRecorder);
456
+ }
457
+ exports.addMethod = addMethod;
458
+ function addConstructorParameter(tree, filePath, service) {
459
+ const constructorNode = getConstructor(tree, filePath);
460
+ if (constructorNode) {
461
+ addParameter(tree, filePath, findChild(constructorNode, ts.SyntaxKind.SyntaxList), service);
462
+ logging_1.logInfo(`Im Konstruktor den Parameter "${service}" hinzugefügt.`);
463
+ }
464
+ else {
465
+ const syntaxListNode = getSyntaxListOfClass(tree, filePath);
466
+ const updateRecorder = tree.beginUpdate(filePath);
467
+ updateRecorder.insertLeft(syntaxListNode.pos, `\n constructor(${service}) {}`);
468
+ tree.commitUpdate(updateRecorder);
469
+ logging_1.logInfo(`constructor(${service}) {} hinzugefügt.`);
470
+ }
471
+ }
472
+ exports.addConstructorParameter = addConstructorParameter;
473
+ function addClassProperty(tree, filePath, property) {
474
+ const syntaxListNode = getSyntaxListOfClass(tree, filePath);
475
+ if (!syntaxListNode) {
476
+ throw new schematics_1.SchematicsException(`Die Klasse in der Datei ${filePath} hat keine Syntaxlist.`);
477
+ }
478
+ const startNode = syntaxListNode.getChildren() && syntaxListNode.getChildren().length > 0
479
+ ? syntaxListNode.getChildren()[0]
480
+ : syntaxListNode;
481
+ const updateRecorder = tree.beginUpdate(filePath);
482
+ updateRecorder.insertLeft(startNode.pos, '\n\n ' + property + '\n');
483
+ tree.commitUpdate(updateRecorder);
484
+ logging_1.logInfo(`Die Property "${property}" wurde hinzugefügt.`);
485
+ }
486
+ exports.addClassProperty = addClassProperty;
487
+ function addConstructorContent(tree, filePath, content, append) {
488
+ const constructorNode = getConstructor(tree, filePath);
489
+ if (constructorNode) {
490
+ const blockNode = constructorNode.getChildren().find(n => n.kind === ts.SyntaxKind.Block);
491
+ if (!blockNode) {
492
+ throw new schematics_1.SchematicsException(`Der Konstruktor in der Klasse ${filePath} hat keinen Block.`);
493
+ }
494
+ const firstPunctuationNode = blockNode.getChildren().find(n => n.kind === ts.SyntaxKind.FirstPunctuation);
495
+ if (!firstPunctuationNode) {
496
+ throw new schematics_1.SchematicsException(`Der Konstruktor in der Klasse ${filePath} hat keine FirstPunctuation.`);
497
+ }
498
+ const syntaxListNode = getNextSibling(firstPunctuationNode);
499
+ if (syntaxListNode && syntaxListNode.getChildren().length > 0) {
500
+ const start = append ? syntaxListNode.getChildren()[syntaxListNode.getChildren().length - 1].end : syntaxListNode.getChildren()[0].pos;
501
+ const updateRecorder = tree.beginUpdate(filePath);
502
+ updateRecorder.insertLeft(start, '\n ' + content);
503
+ tree.commitUpdate(updateRecorder);
504
+ }
505
+ else {
506
+ const updateRecorder = tree.beginUpdate(filePath);
507
+ updateRecorder.insertLeft(firstPunctuationNode.end, '\n ' + content + '\n ');
508
+ tree.commitUpdate(updateRecorder);
509
+ }
510
+ logging_1.logInfo(`Inhalt ${append ? 'am Ende' : 'am Anfang'} des Konstruktors hinzugefügt.`);
511
+ }
512
+ else {
513
+ const syntaxListNode = getSyntaxListOfClass(tree, filePath);
514
+ const updateRecorder = tree.beginUpdate(filePath);
515
+ updateRecorder.insertLeft(syntaxListNode.pos, '\n\n' + ' constructor() {\n' + ' router.initialNavigation();\n' + ' }');
516
+ tree.commitUpdate(updateRecorder);
517
+ logging_1.logInfo(`Konstruktor mit Inhalt hinzugefügt.`);
518
+ }
519
+ }
520
+ exports.addConstructorContent = addConstructorContent;
521
+ //# sourceMappingURL=typescript.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"typescript.js","sourceRoot":"","sources":["typescript.ts"],"names":[],"mappings":"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"}