@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,152 @@
1
+ import { callRule, SchematicContext } from '@angular-devkit/schematics';
2
+ import { SchematicTestRunner, UnitTestTree } from '@angular-devkit/schematics/testing';
3
+ import * as path from 'path';
4
+ import { of as observableOf } from 'rxjs';
5
+ import { appOptions, workspaceOptions } from '../utility/test';
6
+ import { UtilConfig } from '../utility/util';
7
+ import { deleteEmptyLifecyleHooksInTsFiles } from './index';
8
+
9
+ const collectionPath = path.join(__dirname, '../collection.json');
10
+
11
+ describe('migrate-to-eslint', () => {
12
+ let appTree: UnitTestTree;
13
+ let runner: SchematicTestRunner;
14
+ let context: SchematicContext;
15
+
16
+ const testOptions: any = {};
17
+
18
+ beforeEach(async () => {
19
+ runner = new SchematicTestRunner('schematics', collectionPath);
20
+
21
+ appTree = await runner.runExternalSchematicAsync('@schematics/angular', 'workspace', workspaceOptions).toPromise();
22
+ appTree = await runner
23
+ .runExternalSchematicAsync('@schematics/angular', 'application', appOptions, appTree)
24
+ .toPromise();
25
+
26
+ UtilConfig.defaultWaitMS = 0;
27
+
28
+ const collection = runner.engine.createCollection(collectionPath);
29
+ const schematic = runner.engine.createSchematic('migrate-to-eslint', collection);
30
+ context = runner.engine.createContext(schematic);
31
+
32
+ testOptions.project = appOptions.name;
33
+ testOptions.path = workspaceOptions.newProjectRoot + '/' + appOptions.name;
34
+ testOptions.verbose = true;
35
+ });
36
+
37
+ describe('[Rule] deleteEmptyLifecyleHooksInTsFiles', () => {
38
+ it('Sollte die leeren Lifecycle-Hooks (vollständiger Import) entfernen', (done) => {
39
+ appTree.create(
40
+ testOptions.path + '/src/app/test.component.ts',
41
+ `
42
+ import { Component, OnInit } from '@angular/core';
43
+
44
+ @Component({
45
+ selector : 'bp-anbindung-lazy',
46
+ templateUrl: './anbindung-lazy.component.html'
47
+ })
48
+ export class AnbindungLazyComponent implements OnInit {
49
+
50
+ constructor() {
51
+ }
52
+
53
+ ngOnInit() {
54
+ }
55
+
56
+ }
57
+
58
+ `
59
+ );
60
+
61
+ callRule(deleteEmptyLifecyleHooksInTsFiles(testOptions), observableOf(appTree), context).subscribe(
62
+ (success) => {
63
+ const content = success.read(testOptions.path + '/src/app/test.component.ts')?.toString();
64
+
65
+ expect(content).toContain('import { Component } from \'@angular/core\';');
66
+ expect(content).toContain('export class AnbindungLazyComponent {');
67
+ expect(content).not.toContain('ngOnInit');
68
+
69
+ done();
70
+ },
71
+ (reason) => expect(reason).toBeUndefined()
72
+ );
73
+ });
74
+
75
+ it('Sollte die leeren Lifecycle-Hooks (fehlender Import) entfernen', (done) => {
76
+ appTree.create(
77
+ testOptions.path + '/src/app/test.component.ts',
78
+ `
79
+ import { Component, OnChanges } from '@angular/core';
80
+
81
+ @Component({
82
+ selector : 'bp-anbindung-lazy',
83
+ templateUrl: './anbindung-lazy.component.html'
84
+ })
85
+ export class AnbindungLazyComponent implements OnInit, OnChanges {
86
+
87
+ constructor() {
88
+ }
89
+
90
+ ngOnInit() {
91
+ }
92
+
93
+ ngOnChanges() {}
94
+
95
+ }
96
+
97
+ `
98
+ );
99
+
100
+ callRule(deleteEmptyLifecyleHooksInTsFiles(testOptions), observableOf(appTree), context).subscribe(
101
+ (success) => {
102
+ const content = success.read(testOptions.path + '/src/app/test.component.ts')?.toString();
103
+
104
+ expect(content).toContain('import { Component } from \'@angular/core\';');
105
+ expect(content).toContain('export class AnbindungLazyComponent {');
106
+ expect(content).not.toContain('ngOnInit');
107
+ expect(content).not.toContain('ngOnChanges');
108
+
109
+ done();
110
+ },
111
+ (reason) => expect(reason).toBeUndefined()
112
+ );
113
+ });
114
+
115
+ it('Sollte die leeren Lifecycle-Hooks (einziger Import) entfernen', (done) => {
116
+ appTree.create(
117
+ testOptions.path + '/src/app/test.component.ts',
118
+ `
119
+ import { Aaa, OnInit, Bbb } from '@angular/core';
120
+
121
+ @Component({
122
+ selector : 'bp-anbindung-lazy',
123
+ templateUrl: './anbindung-lazy.component.html'
124
+ })
125
+ export class AnbindungLazyComponent implements Aaa,OnInit, Bbb {
126
+
127
+ constructor() {
128
+ }
129
+
130
+ ngOnInit() {
131
+ }
132
+
133
+ }
134
+
135
+ `
136
+ );
137
+
138
+ callRule(deleteEmptyLifecyleHooksInTsFiles(testOptions), observableOf(appTree), context).subscribe(
139
+ (success) => {
140
+ const content = success.read(testOptions.path + '/src/app/test.component.ts')?.toString();
141
+
142
+ expect(content).toContain('import { Aaa, Bbb } from \'@angular/core\';');
143
+ expect(content).toContain('export class AnbindungLazyComponent implements Aaa, Bbb {');
144
+ expect(content).not.toContain('ngOnInit');
145
+
146
+ done();
147
+ },
148
+ (reason) => expect(reason).toBeUndefined()
149
+ );
150
+ });
151
+ });
152
+ });
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "id": "migrateToTsLint",
4
+ "title": "Bereitet das LUX-Componentsprojekt für die Migration auf ES-Lint vor",
5
+ "type": "object",
6
+ "description": "Aktualisiert die Abhängigkeiten im LUX-Componentsprojekt",
7
+ "properties": {
8
+ "project": {
9
+ "type": "string",
10
+ "description": "Der Projektname",
11
+ "$default": {
12
+ "$source": "projectName"
13
+ }
14
+ },
15
+ "verbose": {
16
+ "type": "boolean",
17
+ "description": "Generiert mehr Logausgaben",
18
+ "default": false
19
+ }
20
+ },
21
+ "required": [],
22
+ "additionalProperties": false
23
+ }
@@ -0,0 +1,10 @@
1
+ import { Rule } from '@angular-devkit/schematics';
2
+ export declare function migrateToWebcomponent(options: any): Rule;
3
+ export declare function updateAppComponent(options: any): Rule;
4
+ export declare function updatePackageJson(options: any): Rule;
5
+ export declare function updateAppRoutingModule(options: any): Rule;
6
+ export declare function updateAngularJson(options: any): Rule;
7
+ export declare function updateAppModule(options: any): Rule;
8
+ export declare function updateIndexHtml(options: any): Rule;
9
+ export declare function createWebpackConfigJs(options: any): Rule;
10
+ export declare function updateAppComponentHtml(options: any): Rule;
@@ -0,0 +1,278 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.updateAppComponentHtml = exports.createWebpackConfigJs = exports.updateIndexHtml = exports.updateAppModule = exports.updateAngularJson = exports.updateAppRoutingModule = exports.updatePackageJson = exports.updateAppComponent = exports.migrateToWebcomponent = void 0;
4
+ const schematics_1 = require("@angular-devkit/schematics");
5
+ const jsonc_parser_1 = require("jsonc-parser");
6
+ const ts = require("typescript");
7
+ const files_1 = require("../utility/files");
8
+ const html_1 = require("../utility/html");
9
+ const json_1 = require("../utility/json");
10
+ const logging_1 = require("../utility/logging");
11
+ const typescript_1 = require("../utility/typescript");
12
+ const util_1 = require("../utility/util");
13
+ function migrateToWebcomponent(options) {
14
+ return schematics_1.chain([
15
+ util_1.messageInfoRule(`LUX-Componentsprojekt wird zur Web Component umgebaut...`),
16
+ updateAppComponent(options),
17
+ updatePackageJson(options),
18
+ updateAngularJson(options),
19
+ updateAppRoutingModule(options),
20
+ updateAppComponentHtml(options),
21
+ createWebpackConfigJs(options),
22
+ updateIndexHtml(options),
23
+ updateAppModule(options),
24
+ util_1.messageSuccessRule(`LUX-Componentsprojekt wurde zur Web Component umgebaut.`),
25
+ util_1.finish()
26
+ ]);
27
+ }
28
+ exports.migrateToWebcomponent = migrateToWebcomponent;
29
+ function updateAppComponent(options) {
30
+ return schematics_1.chain([
31
+ util_1.messageInfoRule(`AppComponent wird aktualisiert...`),
32
+ (tree, context) => {
33
+ // Init
34
+ const filePath = (options.path ? options.path : '') + '/src/app/app.component.ts';
35
+ typescript_1.addImport(tree, filePath, '@ihk-gfi/lux-components', 'LuxAppService');
36
+ typescript_1.addImport(tree, filePath, '@angular/core', 'ElementRef');
37
+ typescript_1.addImport(tree, filePath, '@angular/core', 'Input');
38
+ typescript_1.addConstructorParameter(tree, filePath, `private elementRef: ElementRef`);
39
+ typescript_1.addConstructorParameter(tree, filePath, `private appService: LuxAppService`);
40
+ typescript_1.addConstructorContent(tree, filePath, 'this.appService.appEl = elementRef.nativeElement;', false);
41
+ typescript_1.addConstructorContent(tree, filePath, 'router.initialNavigation();', true);
42
+ typescript_1.addClassProperty(tree, filePath, '@Input() luxAppHeader: \'normal\' | \'minimal\' | \'none\' = \'normal\';');
43
+ typescript_1.addClassProperty(tree, filePath, '@Input() luxAppFooter: \'normal\' | \'minimal\' | \'none\' = \'normal\';');
44
+ typescript_1.addClassProperty(tree, filePath, '@Input() luxMode: \'stand-alone\' | \'portal\' = \'stand-alone\';');
45
+ },
46
+ util_1.messageSuccessRule(`AppComponent wurde aktualisiert.`)
47
+ ]);
48
+ }
49
+ exports.updateAppComponent = updateAppComponent;
50
+ function updatePackageJson(options) {
51
+ return schematics_1.chain([
52
+ util_1.messageInfoRule(`Die Datei "package.json" wird angepasst...`),
53
+ (tree, _context) => {
54
+ const filePath = `/package.json`;
55
+ const newValuesArr = [
56
+ { path: ['scripts', 'build-aot'], value: "ng lint --fix", message: `Skript "build-aot" aktualisiert.` },
57
+ { path: ['scripts', 'buildzentral'], value: "ng lint --fix", message: `Skript "buildzentral" aktualisiert.` },
58
+ { path: ['dependencies', '@webcomponents/webcomponentsjs'], value: "2.5.0", message: `Unter "dependencies" "@webcomponents/webcomponentsjs" hinzugefügt.` },
59
+ { path: ['dependencies', 'ngx-build-plus'], value: "^11.0.0", message: `Unter "dependencies" "ngx-build-plus" hinzugefügt.` },
60
+ { path: ['devDependencies', '@angular/elements'], value: "11.2.14", message: `Unter "devDependencies" "@angular/elements" hinzugefügt.` },
61
+ { path: ['devDependencies', 'replace-in-file'], value: "6.2.0", message: `Unter "devDependencies" "replace-in-file" hinzugefügt.` }
62
+ ];
63
+ const packageJsonAsNode = json_1.readJson(tree, filePath);
64
+ const buildAotScriptNode = jsonc_parser_1.findNodeAtLocation(packageJsonAsNode, ['scripts', 'build-aot']);
65
+ if (buildAotScriptNode) {
66
+ newValuesArr.push({
67
+ path: ['scripts', 'build-aot'],
68
+ value: json_1.appendScript(buildAotScriptNode.value, ' --single-bundle --output-hashing none'),
69
+ message: `Das Skript "build-aot" angepasst.`
70
+ });
71
+ }
72
+ else {
73
+ newValuesArr.push({
74
+ path: ['scripts', 'build-aot'],
75
+ value: 'node --max_old_space_size=4024 ./node_modules/@angular/cli/bin/ng build --aot --single-bundle --output-hashing none && npm run move-de-files',
76
+ message: `Das neue Skript "build-aot" hinzugefügt.`
77
+ });
78
+ }
79
+ const buildZentralScriptNode = jsonc_parser_1.findNodeAtLocation(packageJsonAsNode, ['scripts', 'buildzentral']);
80
+ if (buildZentralScriptNode) {
81
+ newValuesArr.push({
82
+ path: ['scripts', 'buildzentral'],
83
+ value: json_1.appendScript(buildZentralScriptNode.value, ' --single-bundle --output-hashing none --plugin @ihk-gfi/lux-components/ie11-lazy-modules-plugin.js'),
84
+ message: `Das Skript "buildzentral" angepasst.`
85
+ });
86
+ }
87
+ else {
88
+ newValuesArr.push({
89
+ path: ['scripts', 'buildzentral'],
90
+ value: 'node --max_old_space_size=4024 ./node_modules/@angular/cli/bin/ng build --prod --single-bundle --output-hashing none --plugin @ihk-gfi/lux-components/ie11-lazy-modules-plugin.js && npm run move-de-files',
91
+ message: `Das neue Skript "buildzentral" hinzugefügt.`
92
+ });
93
+ }
94
+ newValuesArr.forEach(change => {
95
+ const tsConfigJson = json_1.readJsonAsString(tree, filePath);
96
+ const edits = jsonc_parser_1.modify(tsConfigJson, change.path, change.value, { formattingOptions: json_1.jsonFormattingOptions });
97
+ tree.overwrite(filePath, jsonc_parser_1.applyEdits(tsConfigJson, edits));
98
+ logging_1.logInfo(change.message);
99
+ });
100
+ return tree;
101
+ },
102
+ util_1.messageSuccessRule(`Die Datei "package.json" wurde angepasst.`)
103
+ ]);
104
+ }
105
+ exports.updatePackageJson = updatePackageJson;
106
+ function updateAppRoutingModule(options) {
107
+ return schematics_1.chain([
108
+ util_1.messageInfoRule(`Die Datei "app-routing.module.ts" wird angepasst...`),
109
+ (tree, context) => {
110
+ files_1.iterateFilesAndModifyContent(tree, options.path, (filePath, content) => {
111
+ let modifiedContent = content;
112
+ modifiedContent = modifiedContent.replace(/import\('app\//g, 'import(\'./');
113
+ modifiedContent = modifiedContent.replace(/import\("app\//g, 'import("./');
114
+ if (content !== modifiedContent) {
115
+ tree.overwrite(filePath, modifiedContent);
116
+ logging_1.logInfo(`Lazy-Importe angepasst.`);
117
+ }
118
+ }, 'app-routing.module.ts');
119
+ },
120
+ util_1.messageSuccessRule(`Die Datei "app-routing.module.ts" wurde angepasst.`)
121
+ ]);
122
+ }
123
+ exports.updateAppRoutingModule = updateAppRoutingModule;
124
+ function updateAngularJson(options) {
125
+ return schematics_1.chain([
126
+ util_1.messageInfoRule(`Die Datei "angular.json" wird angepasst...`),
127
+ (tree, _context) => {
128
+ const filePath = `/angular.json`;
129
+ const newValuesArr = [
130
+ {
131
+ path: ['projects', options.project, 'architect', 'build', 'options', 'extraWebpackConfig'],
132
+ value: 'webpack.config.js',
133
+ message: `Der Abschnitt "extraWebpackConfig" wurde hinzugefügt.`,
134
+ options: { formattingOptions: json_1.jsonFormattingOptions }
135
+ },
136
+ {
137
+ path: ['projects', options.project, 'architect', 'build', 'options', 'scripts', 0],
138
+ value: {
139
+ bundleName: 'polyfill-webcomp-es5',
140
+ input: 'node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js'
141
+ },
142
+ message: `Skript "polyfill-webcomp-es5" wurde hinzugefügt.`,
143
+ options: { formattingOptions: json_1.jsonFormattingOptions, isArrayInsertion: true }
144
+ },
145
+ {
146
+ path: ['projects', options.project, 'architect', 'build', 'options', 'scripts', 0],
147
+ value: {
148
+ "bundleName": "polyfill-webcomp",
149
+ "input": "node_modules/@webcomponents/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js"
150
+ },
151
+ message: `Skript "polyfill-webcomp" wurde hinzugefügt.`,
152
+ options: { formattingOptions: json_1.jsonFormattingOptions, isArrayInsertion: true }
153
+ }
154
+ ];
155
+ newValuesArr.forEach(change => {
156
+ const tsConfigJson = json_1.readJsonAsString(tree, filePath);
157
+ const edits = jsonc_parser_1.modify(tsConfigJson, change.path, change.value, change.options);
158
+ tree.overwrite(filePath, jsonc_parser_1.applyEdits(tsConfigJson, edits));
159
+ logging_1.logInfo(change.message);
160
+ });
161
+ const content = tree.read(filePath).toString();
162
+ let modifiedContent = content;
163
+ modifiedContent = modifiedContent.replace(new RegExp('@angular-devkit/build-angular:browser', 'g'), 'ngx-build-plus:browser');
164
+ modifiedContent = modifiedContent.replace(new RegExp('@angular-devkit/build-angular:dev-server', 'g'), 'ngx-build-plus:dev-server');
165
+ modifiedContent = modifiedContent.replace(new RegExp('@angular-devkit/build-angular:karma', 'g'), 'ngx-build-plus:karma');
166
+ if (content !== modifiedContent) {
167
+ tree.overwrite(filePath, modifiedContent);
168
+ logging_1.logInfo(`Einträge für den ngx-build-plus hinzugefügt.`);
169
+ }
170
+ return tree;
171
+ },
172
+ util_1.messageSuccessRule(`Die Datei "angular.json" wurde angepasst.`)
173
+ ]);
174
+ }
175
+ exports.updateAngularJson = updateAngularJson;
176
+ function updateAppModule(options) {
177
+ return schematics_1.chain([
178
+ util_1.messageInfoRule(`Die Datei "app.module.ts" wird angepasst...`),
179
+ (tree, context) => {
180
+ const filePath = (options.path ? options.path : '') + `/src/app/app.module.ts`;
181
+ typescript_1.addImport(tree, filePath, '@angular/core', 'CUSTOM_ELEMENTS_SCHEMA');
182
+ typescript_1.addImport(tree, filePath, '@angular/core', 'DoBootstrap');
183
+ typescript_1.addImport(tree, filePath, '@angular/core', 'Injector');
184
+ typescript_1.addImport(tree, filePath, '@angular/elements', 'createCustomElement');
185
+ typescript_1.addInterface(tree, filePath, 'DoBootstrap');
186
+ const service = `private injector: Injector`;
187
+ typescript_1.addConstructorParameter(tree, filePath, service);
188
+ typescript_1.addMethod(tree, filePath, typescript_1.getSyntaxListOfClass(tree, filePath), `
189
+ ngDoBootstrap() {
190
+ const ce = createCustomElement(AppComponent, { injector: this.injector });
191
+ customElements.define('${getWebComponentTagName(options.project)}', ce);
192
+ }`);
193
+ logging_1.logInfo(`ngDoBootstrap() {...} hinzugefügt.`);
194
+ const content = tree.read(filePath).toString();
195
+ const fileName = filePath.substring(filePath.lastIndexOf('/') + 1, filePath.length);
196
+ const sourceFile = ts.createSourceFile(`${fileName}`, content, ts.ScriptTarget.Latest, true);
197
+ const nodes = typescript_1.getSourceNodes(sourceFile);
198
+ const bootstrap = nodes.find((n) => n.kind === ts.SyntaxKind.Identifier && n.getText() === 'bootstrap');
199
+ if (bootstrap) {
200
+ const updateRecorder = tree.beginUpdate(filePath);
201
+ updateRecorder.remove(bootstrap.parent.pos, bootstrap.parent.end - bootstrap.parent.pos);
202
+ updateRecorder.insertLeft(bootstrap.parent.pos, `\n schemas: [CUSTOM_ELEMENTS_SCHEMA]`);
203
+ tree.commitUpdate(updateRecorder);
204
+ logging_1.logInfo(`bootstrap: [...] entfernt.`);
205
+ logging_1.logInfo(`schemas: [CUSTOM_ELEMENTS_SCHEMA] hinzugefügt.`);
206
+ }
207
+ },
208
+ util_1.messageSuccessRule(`Die Datei "app.module.ts" wurde angepasst.`)
209
+ ]);
210
+ }
211
+ exports.updateAppModule = updateAppModule;
212
+ function updateIndexHtml(options) {
213
+ return schematics_1.chain([
214
+ util_1.messageInfoRule(`Die Datei "index.html" wird angepasst...`),
215
+ (tree, context) => {
216
+ let tagName = getWebComponentTagName(options.project);
217
+ const filePath = 'src/index.html';
218
+ const content = tree.read(filePath).toString();
219
+ const modifiedContent = content.replace(/app-root/g, tagName);
220
+ tree.overwrite(filePath, modifiedContent);
221
+ logging_1.logInfo(`Das Tag "app-root" wurde umbenannt in "${tagName}".`);
222
+ },
223
+ util_1.messageSuccessRule(`Die Datei "index.html" wurde angepasst.`)
224
+ ]);
225
+ }
226
+ exports.updateIndexHtml = updateIndexHtml;
227
+ function createWebpackConfigJs(options) {
228
+ return schematics_1.chain([
229
+ util_1.messageInfoRule(`Die Datei "webpack.config.js" wird angelegt...`),
230
+ (tree, context) => {
231
+ let functionName = options.project;
232
+ functionName = functionName.replace('-', '');
233
+ functionName = functionName.replace('_', '');
234
+ functionName = functionName.substring(0, 1).toUpperCase() + functionName.substring(1);
235
+ tree.create('webpack.config.js', `
236
+ module.exports = {
237
+ output: {
238
+ jsonpFunction: 'jsonpFunction${functionName}'
239
+ }
240
+ };
241
+
242
+ `);
243
+ },
244
+ util_1.messageSuccessRule(`Die Datei "webpack.config.js" wurde angelegt.`)
245
+ ]);
246
+ }
247
+ exports.createWebpackConfigJs = createWebpackConfigJs;
248
+ function updateAppComponentHtml(options) {
249
+ return schematics_1.chain([
250
+ util_1.messageInfoRule(`Die Datei "app.component.html" wird angepasst...`),
251
+ (tree, context) => {
252
+ files_1.iterateFilesAndModifyContent(tree, options.path, (filePath, content) => {
253
+ let result = html_1.addAttribute(content, 'lux-app-header', "*ngIf", 'this.luxAppHeader !== \'none\'');
254
+ result = html_1.appendAttribute(result.content, 'lux-app-header-right-nav', "*ngIf", ' && luxMode === \'stand-alone\'');
255
+ result = html_1.addAttribute(result.content, 'lux-app-footer', "*ngIf", 'this.luxAppFooter !== \'none\'');
256
+ tree.overwrite(filePath, result.content);
257
+ logging_1.logInfo('Im "lux-app-header" das folgende Attribut *ngIf="this.luxAppHeader !== \'none\'" ergänzt.');
258
+ logging_1.logInfo('Im "lux-app-header-right-nav" den Wert " && luxMode === \'stand-alone\'" an das Attribut "*ngIf" angehangen.');
259
+ logging_1.logInfo('Im "lux-app-footer" das folgende Attribut *ngIf="this.luxAppFooter !== \'none\'" ergänzt.');
260
+ }, 'app.component.html');
261
+ },
262
+ util_1.messageSuccessRule(`Die Datei "app.component.html" wurde angepasst.`)
263
+ ]);
264
+ }
265
+ exports.updateAppComponentHtml = updateAppComponentHtml;
266
+ function getWebComponentTagName(projectName) {
267
+ let tagName = projectName;
268
+ tagName = tagName.replace(/[^a-z]/gi, '');
269
+ tagName = tagName.toLowerCase();
270
+ if (tagName.startsWith('lux')) {
271
+ tagName = tagName.replace(/lux/i, 'lux-');
272
+ }
273
+ else {
274
+ tagName = 'lux-' + tagName;
275
+ }
276
+ return tagName;
277
+ }
278
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"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"}