@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,33 @@
1
+ import { Rule, Tree } from '@angular-devkit/schematics';
2
+ import { Observable } from 'rxjs';
3
+ /**
4
+ * Konfig-Objekt für einige Util-Methoden.
5
+ * Ermöglicht z.B. die Standard-Dauer des waitForTreeCallback-Aufrufs zu ändern
6
+ */
7
+ export declare const UtilConfig: {
8
+ defaultWaitMS: number;
9
+ };
10
+ export declare function escapeRegExp(str: any): any;
11
+ export declare function replaceAll(str: any, find: any, replace: any): any;
12
+ /**
13
+ * Wartet die übergebene Zeitspanne und ruft dann den Callback auf.
14
+ * Gibt anschließend den Tree über ein Observable zurück.
15
+ * @param tree
16
+ * @param callback
17
+ * @param waitMS
18
+ */
19
+ export declare const waitForTreeCallback: (tree: any, callback: any, waitMS?: number) => Observable<import("@angular-devkit/schematics/src/tree/interface").Tree>;
20
+ /**
21
+ * Führt npm install aus und wartet auf den Abschluss des Prozess für diese Schematic.
22
+ * Wenn dieses eintritt, werden die Hinweise und ToDos ausgegeben.
23
+ * @param context
24
+ * @param messages
25
+ */
26
+ export declare const runInstallAndLogToDos: (context: any, messages: any) => void;
27
+ export declare function updateI18nFile(tree: Tree, language: string, insertTransUnitId: string, translations: string): void;
28
+ export declare function applyRuleIf(minVersion: string, rule: Rule): Rule;
29
+ export declare function messageDebugRule(message: any, options: any): Rule;
30
+ export declare function messageInfoRule(message: any): Rule;
31
+ export declare function messageInfoInternRule(message: any): Rule;
32
+ export declare function messageSuccessRule(message: any): Rule;
33
+ export declare function finish(...messages: string[]): Rule;
@@ -0,0 +1,139 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.finish = exports.messageSuccessRule = exports.messageInfoInternRule = exports.messageInfoRule = exports.messageDebugRule = exports.applyRuleIf = exports.updateI18nFile = exports.runInstallAndLogToDos = exports.waitForTreeCallback = exports.replaceAll = exports.escapeRegExp = exports.UtilConfig = void 0;
4
+ const tasks_1 = require("@angular-devkit/schematics/tasks");
5
+ const rxjs_1 = require("rxjs");
6
+ const operators_1 = require("rxjs/operators");
7
+ const semver = require("semver");
8
+ const dependencies_1 = require("./dependencies");
9
+ const logging_1 = require("./logging");
10
+ /**
11
+ * Konfig-Objekt für einige Util-Methoden.
12
+ * Ermöglicht z.B. die Standard-Dauer des waitForTreeCallback-Aufrufs zu ändern
13
+ */
14
+ exports.UtilConfig = {
15
+ defaultWaitMS: 4000
16
+ };
17
+ function escapeRegExp(str) {
18
+ return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1');
19
+ }
20
+ exports.escapeRegExp = escapeRegExp;
21
+ function replaceAll(str, find, replace) {
22
+ return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
23
+ }
24
+ exports.replaceAll = replaceAll;
25
+ /**
26
+ * Wartet die übergebene Zeitspanne und ruft dann den Callback auf.
27
+ * Gibt anschließend den Tree über ein Observable zurück.
28
+ * @param tree
29
+ * @param callback
30
+ * @param waitMS
31
+ */
32
+ const waitForTreeCallback = (tree, callback, waitMS = exports.UtilConfig.defaultWaitMS) => {
33
+ return new rxjs_1.Observable((subscriber) => {
34
+ rxjs_1.of(callback())
35
+ .pipe(operators_1.delay(waitMS))
36
+ .subscribe((callbackResult) => {
37
+ if (callbackResult instanceof rxjs_1.Observable) {
38
+ callbackResult.subscribe((result) => {
39
+ subscriber.next(result);
40
+ subscriber.complete();
41
+ });
42
+ }
43
+ else {
44
+ subscriber.next(callbackResult);
45
+ subscriber.complete();
46
+ }
47
+ }, (error) => {
48
+ subscriber.error(error.message);
49
+ });
50
+ });
51
+ };
52
+ exports.waitForTreeCallback = waitForTreeCallback;
53
+ /**
54
+ * Führt npm install aus und wartet auf den Abschluss des Prozess für diese Schematic.
55
+ * Wenn dieses eintritt, werden die Hinweise und ToDos ausgegeben.
56
+ * @param context
57
+ * @param messages
58
+ */
59
+ const runInstallAndLogToDos = (context, messages) => {
60
+ // diese log-Ausgaben werden erst ganz zum Schluss ausgeführt (nach Update und npm-install logs)
61
+ process.addListener('exit', () => {
62
+ if (messages) {
63
+ messages.forEach((message) => {
64
+ logging_1.logInfo(message);
65
+ });
66
+ }
67
+ });
68
+ // npm install starten
69
+ context.addTask(new tasks_1.NodePackageInstallTask());
70
+ };
71
+ exports.runInstallAndLogToDos = runInstallAndLogToDos;
72
+ function updateI18nFile(tree, language, insertTransUnitId, translations) {
73
+ let filePath;
74
+ if (language === 'en') {
75
+ filePath = '/src/locale/messages.en.xlf';
76
+ }
77
+ else if (language === 'fr') {
78
+ filePath = '/src/locale/messages.fr.xlf';
79
+ }
80
+ else {
81
+ filePath = '/src/locale/messages.xlf';
82
+ }
83
+ if (tree.exists(filePath)) {
84
+ let insertTranslation = `<trans-unit id="${insertTransUnitId}" datatype="html">`;
85
+ let content = tree.read(filePath).toString();
86
+ let modifiedContent = replaceAll(content, insertTranslation, translations + '\n ' + insertTranslation);
87
+ if (content !== modifiedContent) {
88
+ tree.overwrite(filePath, modifiedContent);
89
+ logging_1.logInfo(`Sprachdatei ${filePath} angepasst.`);
90
+ }
91
+ }
92
+ }
93
+ exports.updateI18nFile = updateI18nFile;
94
+ function applyRuleIf(minVersion, rule) {
95
+ return (tree, _context) => {
96
+ let version = dependencies_1.getPackageJsonDependency(tree, '@ihk-gfi/lux-components').version;
97
+ if (semver.satisfies(minVersion, version)) {
98
+ return rule;
99
+ }
100
+ else {
101
+ return tree;
102
+ }
103
+ };
104
+ }
105
+ exports.applyRuleIf = applyRuleIf;
106
+ function messageDebugRule(message, options) {
107
+ return (tree, _context) => {
108
+ if (options && options.verbose) {
109
+ logging_1.logInfo(message);
110
+ }
111
+ };
112
+ }
113
+ exports.messageDebugRule = messageDebugRule;
114
+ function messageInfoRule(message) {
115
+ return (tree, _context) => {
116
+ logging_1.logInfoWithDescriptor(message);
117
+ };
118
+ }
119
+ exports.messageInfoRule = messageInfoRule;
120
+ function messageInfoInternRule(message) {
121
+ return (tree, _context) => {
122
+ logging_1.logInfo(message);
123
+ };
124
+ }
125
+ exports.messageInfoInternRule = messageInfoInternRule;
126
+ function messageSuccessRule(message) {
127
+ return (tree, _context) => {
128
+ logging_1.logSuccess(message);
129
+ };
130
+ }
131
+ exports.messageSuccessRule = messageSuccessRule;
132
+ function finish(...messages) {
133
+ return (tree, context) => {
134
+ exports.runInstallAndLogToDos(context, messages);
135
+ return tree;
136
+ };
137
+ }
138
+ exports.finish = finish;
139
+ //# sourceMappingURL=util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"util.js","sourceRoot":"","sources":["util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,140 @@
1
+ import { Rule, SchematicContext, Tree } from '@angular-devkit/schematics';
2
+ import { NodePackageInstallTask } from '@angular-devkit/schematics/tasks';
3
+ import { Observable, of } from 'rxjs';
4
+ import { delay } from 'rxjs/operators';
5
+ import * as semver from 'semver';
6
+ import { getPackageJsonDependency } from './dependencies';
7
+ import { logInfo, logInfoWithDescriptor, logSuccess } from './logging';
8
+
9
+ /**
10
+ * Konfig-Objekt für einige Util-Methoden.
11
+ * Ermöglicht z.B. die Standard-Dauer des waitForTreeCallback-Aufrufs zu ändern
12
+ */
13
+ export const UtilConfig = {
14
+ defaultWaitMS: 4000
15
+ };
16
+
17
+ export function escapeRegExp(str) {
18
+ return str.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1');
19
+ }
20
+
21
+ export function replaceAll(str, find, replace) {
22
+ return str.replace(new RegExp(escapeRegExp(find), 'g'), replace);
23
+ }
24
+
25
+ /**
26
+ * Wartet die übergebene Zeitspanne und ruft dann den Callback auf.
27
+ * Gibt anschließend den Tree über ein Observable zurück.
28
+ * @param tree
29
+ * @param callback
30
+ * @param waitMS
31
+ */
32
+ export const waitForTreeCallback = (tree, callback, waitMS: number = UtilConfig.defaultWaitMS) => {
33
+ return new Observable<Tree>((subscriber) => {
34
+ of(callback())
35
+ .pipe(delay(waitMS))
36
+ .subscribe(
37
+ (callbackResult) => {
38
+ if (callbackResult instanceof Observable) {
39
+ callbackResult.subscribe((result: Tree) => {
40
+ subscriber.next(result);
41
+ subscriber.complete();
42
+ });
43
+ } else {
44
+ subscriber.next(<Tree>callbackResult);
45
+ subscriber.complete();
46
+ }
47
+ },
48
+ (error) => {
49
+ subscriber.error(error.message);
50
+ }
51
+ );
52
+ });
53
+ };
54
+
55
+ /**
56
+ * Führt npm install aus und wartet auf den Abschluss des Prozess für diese Schematic.
57
+ * Wenn dieses eintritt, werden die Hinweise und ToDos ausgegeben.
58
+ * @param context
59
+ * @param messages
60
+ */
61
+ export const runInstallAndLogToDos: (context, messages) => void = (context: SchematicContext, messages) => {
62
+ // diese log-Ausgaben werden erst ganz zum Schluss ausgeführt (nach Update und npm-install logs)
63
+ process.addListener('exit', () => {
64
+ if (messages) {
65
+ messages.forEach((message: string) => {
66
+ logInfo(message);
67
+ });
68
+ }
69
+ });
70
+
71
+ // npm install starten
72
+ context.addTask(new NodePackageInstallTask());
73
+ };
74
+
75
+ export function updateI18nFile(tree: Tree, language: string, insertTransUnitId: string, translations: string) {
76
+ let filePath: string;
77
+ if (language === 'en') {
78
+ filePath = '/src/locale/messages.en.xlf';
79
+ } else if (language === 'fr') {
80
+ filePath = '/src/locale/messages.fr.xlf';
81
+ } else {
82
+ filePath = '/src/locale/messages.xlf';
83
+ }
84
+
85
+ if (tree.exists(filePath)) {
86
+ let insertTranslation = `<trans-unit id="${ insertTransUnitId }" datatype="html">`;
87
+ let content = (tree.read(filePath) as Buffer).toString();
88
+ let modifiedContent = replaceAll(content, insertTranslation, translations + '\n ' + insertTranslation);
89
+
90
+ if (content !== modifiedContent) {
91
+ tree.overwrite(filePath, modifiedContent);
92
+ logInfo(`Sprachdatei ${ filePath } angepasst.`);
93
+ }
94
+ }
95
+ }
96
+
97
+ export function applyRuleIf(minVersion: string, rule: Rule): Rule {
98
+ return (tree: Tree, _context: SchematicContext) => {
99
+ let version = getPackageJsonDependency(tree, '@ihk-gfi/lux-components').version;
100
+
101
+ if (semver.satisfies(minVersion, version)) {
102
+ return rule;
103
+ } else {
104
+ return tree;
105
+ }
106
+ };
107
+ }
108
+
109
+ export function messageDebugRule(message: any, options: any): Rule {
110
+ return (tree: Tree, _context: SchematicContext) => {
111
+ if (options && options.verbose) {
112
+ logInfo(message);
113
+ }
114
+ };
115
+ }
116
+
117
+ export function messageInfoRule(message: any): Rule {
118
+ return (tree: Tree, _context: SchematicContext) => {
119
+ logInfoWithDescriptor(message);
120
+ };
121
+ }
122
+
123
+ export function messageInfoInternRule(message: any): Rule {
124
+ return (tree: Tree, _context: SchematicContext) => {
125
+ logInfo(message);
126
+ };
127
+ }
128
+
129
+ export function messageSuccessRule(message: any): Rule {
130
+ return (tree: Tree, _context: SchematicContext) => {
131
+ logSuccess(message);
132
+ };
133
+ }
134
+
135
+ export function finish(...messages: string[]): Rule {
136
+ return (tree: Tree, context: SchematicContext) => {
137
+ runInstallAndLogToDos(context, messages);
138
+ return tree;
139
+ };
140
+ }
@@ -0,0 +1,11 @@
1
+ import { SchematicContext, Tree } from '@angular-devkit/schematics';
2
+ export declare function validateNodeVersion(context: SchematicContext, minimumVersion: string): void;
3
+ /**
4
+ * Prüft die Angular Version der aufrufenden Applikation und wirft eine SchematicsException, wenn
5
+ * die Version nicht der erforderlichen entspricht.
6
+ * @param tree
7
+ * @param context
8
+ * @param angularVersion
9
+ */
10
+ export declare function validateAngularVersion(tree: Tree, context: SchematicContext, angularVersion: string): void;
11
+ export declare function validateLuxComponentsVersion(tree: Tree, versionRange: string): void;
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateLuxComponentsVersion = exports.validateAngularVersion = exports.validateNodeVersion = void 0;
4
+ const chalk = require("chalk");
5
+ const semver = require("semver");
6
+ const dependencies_1 = require("./dependencies");
7
+ const logging_1 = require("./logging");
8
+ function validateNodeVersion(context, minimumVersion) {
9
+ if (semver.lt(process.versions.node, minimumVersion)) {
10
+ logging_1.logInfo(`Nodeversion ${process.versions.node} -> ${chalk.redBright('fail')}`);
11
+ throw logging_1.formattedSchematicsException(`Ihre Node.js Version ist ${process.versions.node}.\n` +
12
+ `LUX benötigt allerdings die Version ${minimumVersion}.\n` +
13
+ `Bitte aktualisieren Sie Node.js.`);
14
+ }
15
+ logging_1.logInfo(`Nodeversion ${process.versions.node} -> ok`);
16
+ }
17
+ exports.validateNodeVersion = validateNodeVersion;
18
+ /**
19
+ * Prüft die Angular Version der aufrufenden Applikation und wirft eine SchematicsException, wenn
20
+ * die Version nicht der erforderlichen entspricht.
21
+ * @param tree
22
+ * @param context
23
+ * @param angularVersion
24
+ */
25
+ function validateAngularVersion(tree, context, angularVersion) {
26
+ const currentVersion = dependencies_1.getPackageJsonDependency(tree, '@angular/common').version.replace(/([\^~])/g, '');
27
+ if (!semver.satisfies(currentVersion, angularVersion)) {
28
+ logging_1.logInfo(`Angularversion ${currentVersion} -> ${chalk.redBright('fail')}`);
29
+ throw logging_1.formattedSchematicsException(`Sie nutzen die Angular Version ${currentVersion}.`, `Dieser Generator benötigt allerdings eine ${angularVersion}.`, `Bitte nutzen Sie eine neuere Schematic für Ihr Update.`);
30
+ }
31
+ logging_1.logInfo(`Angularversion ${currentVersion} -> ok`);
32
+ }
33
+ exports.validateAngularVersion = validateAngularVersion;
34
+ function validateLuxComponentsVersion(tree, versionRange) {
35
+ const version = dependencies_1.getPackageJsonDependency(tree, '@ihk-gfi/lux-components').version.replace(/([\^~])/g, '');
36
+ if (!semver.satisfies(version, versionRange)) {
37
+ logging_1.logInfo(`LUX-Componentsversion ${version} -> ${chalk.redBright('fail')}`);
38
+ throw logging_1.formattedSchematicsException(`Die LUX-Componentsversion ${version} wird nicht unterstützt. ` +
39
+ `Dieser Updater unterstützt die Versionen ${versionRange}.`);
40
+ }
41
+ logging_1.logInfo(`LUX-Componentsversion ${version} -> ok`);
42
+ }
43
+ exports.validateLuxComponentsVersion = validateLuxComponentsVersion;
44
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["validation.ts"],"names":[],"mappings":";;;AACA,+BAA+B;AAC/B,iCAAiC;AACjC,iDAA0D;AAC1D,uCAAkE;AAElE,SAAgB,mBAAmB,CAAC,OAAyB,EAAE,cAAsB;IACnF,IAAI,MAAM,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE;QACpD,iBAAO,CAAC,eAAe,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC9E,MAAM,sCAA4B,CAChC,4BAA4B,OAAO,CAAC,QAAQ,CAAC,IAAI,KAAK;YACpD,uCAAuC,cAAc,KAAK;YAC1D,kCAAkC,CACrC,CAAC;KACH;IACD,iBAAO,CAAC,eAAe,OAAO,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC;AACxD,CAAC;AAVD,kDAUC;AAED;;;;;;GAMG;AACH,SAAgB,sBAAsB,CAAC,IAAU,EAAE,OAAyB,EAAE,cAAsB;IAClG,MAAM,cAAc,GAAG,uCAAwB,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IACzG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE;QACrD,iBAAO,CAAC,kBAAkB,cAAc,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1E,MAAM,sCAA4B,CAChC,kCAAkC,cAAc,GAAG,EACnD,6CAA6C,cAAc,GAAG,EAC9D,wDAAwD,CACzD,CAAC;KACH;IACD,iBAAO,CAAC,kBAAkB,cAAc,QAAQ,CAAC,CAAC;AACpD,CAAC;AAXD,wDAWC;AAED,SAAgB,4BAA4B,CAAC,IAAU,EAAE,YAAoB;IAC3E,MAAM,OAAO,GAAG,uCAAwB,CAAC,IAAI,EAAE,yBAAyB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC1G,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE;QAC5C,iBAAO,CAAC,yBAAyB,OAAO,OAAO,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAC1E,MAAM,sCAA4B,CAChC,6BAA6B,OAAO,2BAA2B;YAC7D,4CAA4C,YAAY,GAAG,CAC9D,CAAC;KACH;IACD,iBAAO,CAAC,yBAAyB,OAAO,QAAQ,CAAC,CAAC;AACpD,CAAC;AAVD,oEAUC"}
@@ -0,0 +1,49 @@
1
+ import { SchematicContext, Tree } from '@angular-devkit/schematics';
2
+ import * as chalk from 'chalk';
3
+ import * as semver from 'semver';
4
+ import { getPackageJsonDependency } from './dependencies';
5
+ import { formattedSchematicsException, logInfo } from './logging';
6
+
7
+ export function validateNodeVersion(context: SchematicContext, minimumVersion: string) {
8
+ if (semver.lt(process.versions.node, minimumVersion)) {
9
+ logInfo(`Nodeversion ${process.versions.node} -> ${chalk.redBright('fail')}`);
10
+ throw formattedSchematicsException(
11
+ `Ihre Node.js Version ist ${process.versions.node}.\n` +
12
+ `LUX benötigt allerdings die Version ${minimumVersion}.\n` +
13
+ `Bitte aktualisieren Sie Node.js.`
14
+ );
15
+ }
16
+ logInfo(`Nodeversion ${process.versions.node} -> ok`);
17
+ }
18
+
19
+ /**
20
+ * Prüft die Angular Version der aufrufenden Applikation und wirft eine SchematicsException, wenn
21
+ * die Version nicht der erforderlichen entspricht.
22
+ * @param tree
23
+ * @param context
24
+ * @param angularVersion
25
+ */
26
+ export function validateAngularVersion(tree: Tree, context: SchematicContext, angularVersion: string) {
27
+ const currentVersion = getPackageJsonDependency(tree, '@angular/common').version.replace(/([\^~])/g, '');
28
+ if (!semver.satisfies(currentVersion, angularVersion)) {
29
+ logInfo(`Angularversion ${currentVersion} -> ${chalk.redBright('fail')}`);
30
+ throw formattedSchematicsException(
31
+ `Sie nutzen die Angular Version ${currentVersion}.`,
32
+ `Dieser Generator benötigt allerdings eine ${angularVersion}.`,
33
+ `Bitte nutzen Sie eine neuere Schematic für Ihr Update.`
34
+ );
35
+ }
36
+ logInfo(`Angularversion ${currentVersion} -> ok`);
37
+ }
38
+
39
+ export function validateLuxComponentsVersion(tree: Tree, versionRange: string) {
40
+ const version = getPackageJsonDependency(tree, '@ihk-gfi/lux-components').version.replace(/([\^~])/g, '');
41
+ if (!semver.satisfies(version, versionRange)) {
42
+ logInfo(`LUX-Componentsversion ${version} -> ${chalk.redBright('fail')}`);
43
+ throw formattedSchematicsException(
44
+ `Die LUX-Componentsversion ${version} wird nicht unterstützt. ` +
45
+ `Dieser Updater unterstützt die Versionen ${versionRange}.`
46
+ );
47
+ }
48
+ logInfo(`LUX-Componentsversion ${version} -> ok`);
49
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,37 @@
1
+ {
2
+ "compilerOptions": {
3
+ "baseUrl": "tslint.json",
4
+ "lib": [
5
+ "es2018",
6
+ "dom"
7
+ ],
8
+ "declaration": true,
9
+ "module": "commonjs",
10
+ "moduleResolution": "node",
11
+ "noEmitOnError": true,
12
+ "noFallthroughCasesInSwitch": true,
13
+ "noImplicitAny": false,
14
+ "noImplicitThis": true,
15
+ "noUnusedParameters": false,
16
+ "noUnusedLocals": false,
17
+ "rootDir": "src/",
18
+ "skipDefaultLibCheck": true,
19
+ "skipLibCheck": true,
20
+ "sourceMap": true,
21
+ "strictNullChecks": true,
22
+ "target": "es6",
23
+ "types": [
24
+ "jasmine",
25
+ "node"
26
+ ],
27
+ "allowUnusedLabels": true
28
+ },
29
+ "include": [
30
+ "src/**/*"
31
+ ],
32
+ "exclude": [
33
+ "src/**/files/**/*",
34
+ "node_modules",
35
+ "**/*.spec.ts"
36
+ ]
37
+ }