@ihk-gfi/lux-components-update 11.5.0 → 11.9.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 (49) hide show
  1. package/README.md +1 -2
  2. package/package.json +1 -1
  3. package/src/add-lux-components/index.js +10 -0
  4. package/src/add-lux-components/index.js.map +1 -1
  5. package/src/add-lux-components/index.ts +10 -0
  6. package/src/collection.json +20 -0
  7. package/src/update/index_spec.js +0 -6
  8. package/src/update/index_spec.js.map +1 -1
  9. package/src/update/index_spec.ts +0 -6
  10. package/src/update110600/index.d.ts +2 -0
  11. package/src/update110600/index.js +28 -0
  12. package/src/update110600/index.js.map +1 -0
  13. package/src/update110600/index.ts +28 -0
  14. package/src/update110600/index_spec.d.ts +1 -0
  15. package/src/update110600/index_spec.js +66 -0
  16. package/src/update110600/index_spec.js.map +1 -0
  17. package/src/update110600/index_spec.ts +70 -0
  18. package/src/update110600/schema.json +23 -0
  19. package/src/update110700/index.d.ts +2 -0
  20. package/src/update110700/index.js +45 -0
  21. package/src/update110700/index.js.map +1 -0
  22. package/src/update110700/index.ts +47 -0
  23. package/src/update110700/index_spec.d.ts +1 -0
  24. package/src/update110700/index_spec.js +108 -0
  25. package/src/update110700/index_spec.js.map +1 -0
  26. package/src/update110700/index_spec.ts +122 -0
  27. package/src/update110700/schema.json +23 -0
  28. package/src/update110800/index.d.ts +2 -0
  29. package/src/update110800/index.js +32 -0
  30. package/src/update110800/index.js.map +1 -0
  31. package/src/update110800/index.ts +33 -0
  32. package/src/update110800/index_spec.d.ts +1 -0
  33. package/src/update110800/index_spec.js +70 -0
  34. package/src/update110800/index_spec.js.map +1 -0
  35. package/src/update110800/index_spec.ts +75 -0
  36. package/src/update110800/schema.json +23 -0
  37. package/src/update110900/index.d.ts +4 -0
  38. package/src/update110900/index.js +111 -0
  39. package/src/update110900/index.js.map +1 -0
  40. package/src/update110900/index.ts +123 -0
  41. package/src/update110900/index_spec.d.ts +1 -0
  42. package/src/update110900/index_spec.js +311 -0
  43. package/src/update110900/index_spec.js.map +1 -0
  44. package/src/update110900/index_spec.ts +341 -0
  45. package/src/update110900/schema.json +23 -0
  46. package/src/utility/dependencies.d.ts +6 -0
  47. package/src/utility/dependencies.js +22 -1
  48. package/src/utility/dependencies.js.map +1 -1
  49. package/src/utility/dependencies.ts +26 -0
@@ -0,0 +1,341 @@
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 { getPackageJsonDependency } from '../utility/dependencies';
6
+ import { appOptions, workspaceOptions } from '../utility/test';
7
+ import { UtilConfig } from '../utility/util';
8
+ import { addIconsToIndexHtml, update110900 } from './index';
9
+
10
+ const collectionPath = path.join(__dirname, '../collection.json');
11
+
12
+ describe('update110900', () => {
13
+ let appTree: UnitTestTree;
14
+ let runner: SchematicTestRunner;
15
+ let context: SchematicContext;
16
+
17
+ const testOptions: any = {};
18
+
19
+ beforeEach(async () => {
20
+ runner = new SchematicTestRunner('schematics', collectionPath);
21
+
22
+ appTree = await runner.runExternalSchematicAsync('@schematics/angular', 'workspace', workspaceOptions).toPromise();
23
+ appTree = await runner
24
+ .runExternalSchematicAsync('@schematics/angular', 'application', appOptions, appTree)
25
+ .toPromise();
26
+
27
+ UtilConfig.defaultWaitMS = 0;
28
+
29
+ const collection = runner.engine.createCollection(collectionPath);
30
+ const schematic = runner.engine.createSchematic('update-11.9.0', collection);
31
+ context = runner.engine.createContext(schematic);
32
+
33
+ testOptions.project = appOptions.name;
34
+ testOptions.path = workspaceOptions.newProjectRoot + '/' + appOptions.name;
35
+ testOptions.verbose = true;
36
+ });
37
+
38
+ describe('[Rule] update110900', () => {
39
+ it('Sollte die Abhängigkeiten aktualisieren', (done) => {
40
+ appTree.overwrite(
41
+ '/package.json',
42
+ `
43
+ {
44
+ "name": "Lorem ipsum",
45
+ "version": "0.0.32",
46
+ "scripts": {
47
+ "build": "tsc -p tsconfig.json",
48
+ "test": "npm run build && jasmine src/**/*_spec.js"
49
+ },
50
+ "dependencies": {
51
+ "@ihk-gfi/lux-components": "11.0.0",
52
+ },
53
+ "devDependencies": {
54
+ "@angular-devkit/build-angular": "0.1102.14"
55
+ }
56
+ }
57
+ `
58
+ );
59
+
60
+ appTree.overwrite(
61
+ '/angular.json',
62
+ `{
63
+ "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
64
+ "version": 1,
65
+ "newProjectRoot": "projects",
66
+ "projects": {
67
+ "bar": {
68
+ "root": "",
69
+ "sourceRoot": "src",
70
+ "projectType": "application",
71
+ "i18n": {
72
+ "sourceLocale": {
73
+ "code": "de",
74
+ "baseHref": "/"
75
+ },
76
+ "locales": {
77
+ "en": "src/locale/messages.en.xlf"
78
+ }
79
+ },
80
+ "architect": {
81
+ "build": {
82
+ "builder": "ngx-build-plus:browser",
83
+ "options": {
84
+ "outputPath": "dist",
85
+ "index": "src/index.html",
86
+ "main": "src/main.ts",
87
+ "tsConfig": "src/tsconfig.app.json",
88
+ "polyfills": "src/polyfills.ts",
89
+ "assets": [
90
+ "src/assets",
91
+ {
92
+ "glob": "*(*min.css|*min.css.map)",
93
+ "input": "./node_modules/@ihk-gfi/lux-components-theme/prebuilt-themes",
94
+ "output": "./assets/themes"
95
+ }
96
+ ],
97
+ "styles": [
98
+ "src/styles.scss"
99
+ ],
100
+ "scripts": [
101
+ {
102
+ "bundleName": "polyfill-webcomp",
103
+ "input": "node_modules/@webcomponents/webcomponentsjs/bundles/webcomponents-sd-ce-pf.js"
104
+ },
105
+ {
106
+ "bundleName": "polyfill-webcomp-es5",
107
+ "input": "node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js"
108
+ }
109
+ ],
110
+ "allowedCommonJsDependencies": [
111
+ "hammerjs",
112
+ "ng2-pdf-viewer"
113
+ ],
114
+ "localize": [
115
+ "de"
116
+ ],
117
+ "i18nMissingTranslation": "error",
118
+ "extraWebpackConfig": "webpack.config.js"
119
+ },
120
+ "configurations": {
121
+ "production": {
122
+ "budgets": [
123
+ {
124
+ "type": "anyComponentStyle",
125
+ "maximumWarning": "6kb"
126
+ }
127
+ ],
128
+ "optimization": true,
129
+ "outputHashing": "all",
130
+ "sourceMap": false,
131
+ "namedChunks": false,
132
+ "aot": true,
133
+ "extractLicenses": true,
134
+ "vendorChunk": false,
135
+ "buildOptimizer": true,
136
+ "fileReplacements": [
137
+ {
138
+ "replace": "src/environments/environment.ts",
139
+ "with": "src/environments/environment.prod.ts"
140
+ }
141
+ ]
142
+ },
143
+ "es5": {
144
+ "budgets": [
145
+ {
146
+ "type": "anyComponentStyle",
147
+ "maximumWarning": "6kb"
148
+ }
149
+ ],
150
+ "tsConfig": "src/tsconfig.app.ie.json"
151
+ },
152
+ "en": {
153
+ "localize": [
154
+ "en"
155
+ ],
156
+ "aot": true,
157
+ "outputPath": "dist/en",
158
+ "i18nMissingTranslation": "error"
159
+ }
160
+ }
161
+ },
162
+ "serve": {
163
+ "builder": "ngx-build-plus:dev-server",
164
+ "options": {
165
+ "browserTarget": "bar:build"
166
+ },
167
+ "configurations": {
168
+ "production": {
169
+ "browserTarget": "bar:build:production"
170
+ },
171
+ "es5": {
172
+ "browserTarget": "bar:build:es5"
173
+ },
174
+ "en": {
175
+ "browserTarget": "bar:build:en"
176
+ }
177
+ }
178
+ },
179
+ "extract-i18n": {
180
+ "builder": "@angular-devkit/build-angular:extract-i18n",
181
+ "options": {
182
+ "browserTarget": "bar:build"
183
+ }
184
+ },
185
+ "test": {
186
+ "builder": "ngx-build-plus:karma",
187
+ "options": {
188
+ "main": "src/test.ts",
189
+ "karmaConfig": "./karma.conf.js",
190
+ "polyfills": "src/polyfills.ts",
191
+ "tsConfig": "src/tsconfig.spec.json",
192
+ "scripts": [],
193
+ "styles": [
194
+ "src/styles.scss"
195
+ ],
196
+ "assets": [
197
+ "src/assets",
198
+ {
199
+ "glob": "**/*",
200
+ "input": "./node_modules/pdfjs-dist/cmaps/",
201
+ "output": "./assets/cmaps"
202
+ },
203
+ {
204
+ "glob": "*.css",
205
+ "input": "./node_modules/@ihk-gfi/lux-components-theme/prebuilt-themes",
206
+ "output": "./assets/themes"
207
+ }
208
+ ]
209
+ }
210
+ },
211
+ "lint": {
212
+ "builder": "@angular-eslint/builder:lint",
213
+ "options": {
214
+ "lintFilePatterns": [
215
+ "src/**/*.ts",
216
+ "src/**/*.html"
217
+ ]
218
+ }
219
+ }
220
+ }
221
+ },
222
+ "bar-e2e": {
223
+ "root": "e2e",
224
+ "sourceRoot": "e2e",
225
+ "projectType": "application",
226
+ "architect": {
227
+ "e2e": {
228
+ "builder": "@angular-devkit/build-angular:protractor",
229
+ "options": {
230
+ "protractorConfig": "./protractor.conf.js",
231
+ "devServerTarget": "bar:serve"
232
+ }
233
+ }
234
+ }
235
+ }
236
+ },
237
+ "defaultProject": "bar",
238
+ "cli": {
239
+ "defaultCollection": "@angular-eslint/schematics"
240
+ },
241
+ "schematics": {
242
+ "@schematics/angular:component": {
243
+ "prefix": "bp",
244
+ "style": "scss"
245
+ },
246
+ "@schematics/angular:directive": {
247
+ "prefix": "bp"
248
+ }
249
+ }
250
+ }
251
+ `
252
+ );
253
+
254
+ callRule(update110900(testOptions), observableOf(appTree), context).subscribe(
255
+ (success) => {
256
+ expect(getPackageJsonDependency(appTree, '@ihk-gfi/lux-components').version).toEqual('11.9.0');
257
+ expect(getPackageJsonDependency(appTree, '@ihk-gfi/lux-components-theme').version).toEqual('11.11.0');
258
+
259
+ const angularJson = success.read('/angular.json')?.toString();
260
+ expect(angularJson).toContain(
261
+ `{
262
+ "glob": "all.css",
263
+ "input": "./node_modules/@fortawesome/fontawesome-free/css",
264
+ "output": "./assets/icons/fontawesome/css"
265
+ },`
266
+ );
267
+
268
+ expect(angularJson).toContain(
269
+ `{
270
+ "glob": "*(*.eot|*.ttf|*.woff|*.woff2)",
271
+ "input": "./node_modules/@fortawesome/fontawesome-free/webfonts",
272
+ "output": "./assets/icons/fontawesome/webfonts"
273
+ },`
274
+ );
275
+
276
+ expect(angularJson).toContain(
277
+ `{
278
+ "glob": "material-design-icons.css",
279
+ "input": "./node_modules/material-design-icons-iconfont/dist",
280
+ "output": "./assets/icons/material-icons"
281
+ },`
282
+ );
283
+
284
+ expect(angularJson).toContain(
285
+ `{
286
+ "glob": "*(*.eot|*.ttf|*.woff|*.woff2)",
287
+ "input": "./node_modules/material-design-icons-iconfont/dist/fonts",
288
+ "output": "./assets/icons/material-icons/fonts"
289
+ },`
290
+ );
291
+
292
+ done();
293
+ },
294
+ (reason) => expect(reason).toBeUndefined()
295
+ );
296
+ });
297
+ });
298
+
299
+ describe('[Rule] addIconsToIndexHtml', () => {
300
+ it('Sollte die Datei "index.html" angepasst haben', (done) => {
301
+ appTree.create(
302
+ 'src/index.html',
303
+ `
304
+ <!doctype html>
305
+ <html lang="de">
306
+ <head>
307
+ <meta charset="utf-8">
308
+ <title>LUX Blueprint</title>
309
+ <base href="/">
310
+ <meta name="viewport" content="width=device-width, initial-scale=1">
311
+ <link rel="icon" type="image/x-icon" href="favicon.ico">
312
+ </head>
313
+ <body style="margin: 0">
314
+ <noscript>
315
+ <div id="no-js" class="lux-no-js">
316
+ <p><b>Achtung, Javascript ist deaktiviert.</b></p>
317
+ <p>Bitte aktivieren Sie Javascript in Ihrem Browser, damit die Applikation funktionsf&auml;hig ist.</p>
318
+ </div>
319
+ </noscript>
320
+ <app-root></app-root>
321
+ </body>
322
+ </html>
323
+ `
324
+ );
325
+
326
+
327
+ callRule(addIconsToIndexHtml(testOptions), observableOf(appTree), context).subscribe(
328
+ (success) => {
329
+ const content = success.read('src/index.html')?.toString();
330
+
331
+ expect(content).toContain('<link rel="icon" type="image/x-icon" href="favicon.ico">');
332
+ expect(content).toContain('<link rel="stylesheet" href="assets/icons/material-icons/material-design-icons.css">');
333
+ expect(content).toContain('<link rel="stylesheet" href="assets/icons/fontawesome/css/all.css">');
334
+
335
+ done();
336
+ },
337
+ (reason) => expect(reason).toBeUndefined()
338
+ );
339
+ });
340
+ });
341
+ });
@@ -0,0 +1,23 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "id": "luxupdate110900Schema",
4
+ "title": "Aktualisiert das LUX-Componentsprojekt",
5
+ "type": "object",
6
+ "description": "Aktualisiert das 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
+ }
@@ -10,6 +10,12 @@ export interface NodeDependency {
10
10
  name: string;
11
11
  version: string;
12
12
  }
13
+ /**
14
+ * Liefert die Dependency zurück, wenn es sie gibt, undefined sonst.
15
+ * @param tree
16
+ * @param name
17
+ */
18
+ export declare function hasPackageJsonDependency(tree: Tree, name: string): NodeDependency | undefined;
13
19
  /**
14
20
  * Versucht eine Dependency aus der package.json auslesen und gibt diese zurück.
15
21
  * @param tree
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.deletePackageJsonDependency = exports.updatePackageJsonDependency = exports.updateDependencyDev = exports.updateDependency = exports.getPackageJsonDependency = exports.NodeDependencyType = void 0;
3
+ exports.deletePackageJsonDependency = exports.updatePackageJsonDependency = exports.updateDependencyDev = exports.updateDependency = exports.getPackageJsonDependency = exports.hasPackageJsonDependency = exports.NodeDependencyType = void 0;
4
4
  const chalk = require("chalk");
5
5
  const jsonc_parser_1 = require("jsonc-parser");
6
6
  const files_1 = require("./files");
@@ -13,6 +13,27 @@ var NodeDependencyType;
13
13
  NodeDependencyType["Peer"] = "peerDependencies";
14
14
  NodeDependencyType["Optional"] = "optionalDependencies";
15
15
  })(NodeDependencyType = exports.NodeDependencyType || (exports.NodeDependencyType = {}));
16
+ /**
17
+ * Liefert die Dependency zurück, wenn es sie gibt, undefined sonst.
18
+ * @param tree
19
+ * @param name
20
+ */
21
+ function hasPackageJsonDependency(tree, name) {
22
+ const packageJsonNode = json_1.readJson(tree, '/package.json');
23
+ let dependency = undefined;
24
+ [NodeDependencyType.Default, NodeDependencyType.Dev, NodeDependencyType.Optional, NodeDependencyType.Peer].forEach((depType) => {
25
+ let node = jsonc_parser_1.findNodeAtLocation(packageJsonNode, [depType.toString(), name]);
26
+ if (node) {
27
+ dependency = {
28
+ type: depType,
29
+ name: name,
30
+ version: node.value
31
+ };
32
+ }
33
+ });
34
+ return dependency;
35
+ }
36
+ exports.hasPackageJsonDependency = hasPackageJsonDependency;
16
37
  /**
17
38
  * Versucht eine Dependency aus der package.json auslesen und gibt diese zurück.
18
39
  * @param tree
@@ -1 +1 @@
1
- {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["dependencies.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dependencies.js","sourceRoot":"","sources":["dependencies.ts"],"names":[],"mappings":"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"}
@@ -18,6 +18,32 @@ export interface NodeDependency {
18
18
  version: string;
19
19
  }
20
20
 
21
+ /**
22
+ * Liefert die Dependency zurück, wenn es sie gibt, undefined sonst.
23
+ * @param tree
24
+ * @param name
25
+ */
26
+ export function hasPackageJsonDependency(tree: Tree, name: string): NodeDependency | undefined {
27
+ const packageJsonNode = readJson(tree, '/package.json');
28
+ let dependency: NodeDependency | undefined = undefined;
29
+
30
+ [NodeDependencyType.Default, NodeDependencyType.Dev, NodeDependencyType.Optional, NodeDependencyType.Peer].forEach(
31
+ (depType) => {
32
+
33
+ let node = findNodeAtLocation(packageJsonNode, [depType.toString(), name]);
34
+ if (node) {
35
+ dependency = {
36
+ type : depType,
37
+ name : name,
38
+ version: node.value
39
+ };
40
+ }
41
+ }
42
+ );
43
+
44
+ return dependency;
45
+ }
46
+
21
47
  /**
22
48
  * Versucht eine Dependency aus der package.json auslesen und gibt diese zurück.
23
49
  * @param tree