@opendevstack/ngx-appshell 19.0.5

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 (71) hide show
  1. package/README.md +131 -0
  2. package/fesm2022/opendevstack-ngx-appshell.mjs +727 -0
  3. package/fesm2022/opendevstack-ngx-appshell.mjs.map +1 -0
  4. package/index.d.ts +5 -0
  5. package/lib/components/appshell-breadcrumb/appshell-breadcrumb.component.d.ts +7 -0
  6. package/lib/components/appshell-chip/appshell-chip.component.d.ts +6 -0
  7. package/lib/components/appshell-filters/appshell-filters.component.d.ts +12 -0
  8. package/lib/components/appshell-header/appshell-header.component.d.ts +24 -0
  9. package/lib/components/appshell-icon/appshell-icon.component.d.ts +12 -0
  10. package/lib/components/appshell-layout/appshell-layout.component.d.ts +25 -0
  11. package/lib/components/appshell-page-header/appshell-page-header.component.d.ts +18 -0
  12. package/lib/components/appshell-platform-header/appshell-platform-header.component.d.ts +37 -0
  13. package/lib/components/appshell-platform-layout/appshell-platform-layout.component.d.ts +30 -0
  14. package/lib/components/appshell-product-card/appshell-product-card.component.d.ts +23 -0
  15. package/lib/components/appshell-product-card-v2/appshell-product-card-v2.component.d.ts +16 -0
  16. package/lib/components/appshell-select/appshell-select.component.d.ts +9 -0
  17. package/lib/components/appshell-sidebar-menu/appshell-sidebar-menu.component.d.ts +12 -0
  18. package/lib/components/appshell-toast/appshell-toast.component.d.ts +9 -0
  19. package/lib/components/appshell-toasts/appshell-toasts.component.d.ts +14 -0
  20. package/lib/components/index.d.ts +15 -0
  21. package/lib/directives/appshell-link.directive.d.ts +15 -0
  22. package/lib/directives/index.d.ts +1 -0
  23. package/lib/models/appshell-button.d.ts +5 -0
  24. package/lib/models/appshell-filter.d.ts +4 -0
  25. package/lib/models/appshell-link.d.ts +6 -0
  26. package/lib/models/appshell-links-group.d.ts +5 -0
  27. package/lib/models/appshell-notification.d.ts +10 -0
  28. package/lib/models/appshell-picker.d.ts +9 -0
  29. package/lib/models/appshell-product.d.ts +12 -0
  30. package/lib/models/appshell-tag.d.ts +4 -0
  31. package/lib/models/appshell-toast.d.ts +6 -0
  32. package/lib/models/appshell-user.d.ts +5 -0
  33. package/lib/models/index.d.ts +10 -0
  34. package/lib/screens/appshell-notifications-screen/appshell-notifications-screen.component.d.ts +23 -0
  35. package/lib/screens/appshell-product-catalog-screen/appshell-product-catalog-screen.component.d.ts +16 -0
  36. package/lib/screens/appshell-product-view-screen/appshell-product-view-screen.component.d.ts +19 -0
  37. package/lib/screens/index.d.ts +3 -0
  38. package/lib/services/appshell-toast.service.d.ts +12 -0
  39. package/lib/services/icon-registry.service.d.ts +14 -0
  40. package/lib/services/index.d.ts +2 -0
  41. package/opendevstack-ngx-appshell-19.0.5.tgz +0 -0
  42. package/package.json +44 -0
  43. package/public-api.d.ts +5 -0
  44. package/schematics/azure-login/files/app-config/config.json.template +12 -0
  45. package/schematics/azure-login/files/app-config-service/app-config.service.spec.ts.template +48 -0
  46. package/schematics/azure-login/files/app-config-service/app-config.service.ts.template +39 -0
  47. package/schematics/azure-login/files/azure-config/azure.config.ts.template +94 -0
  48. package/schematics/azure-login/files/azure-service/azure.service.spec.ts.template +311 -0
  49. package/schematics/azure-login/files/azure-service/azure.service.ts.template +161 -0
  50. package/schematics/azure-login/index.d.ts +2 -0
  51. package/schematics/azure-login/index.js +325 -0
  52. package/schematics/azure-login/index.js.map +1 -0
  53. package/schematics/azure-login/schema.json +8 -0
  54. package/schematics/collection.json +19 -0
  55. package/schematics/nats-notifications/files/nats-service/nats.service.spec.ts.template +473 -0
  56. package/schematics/nats-notifications/files/nats-service/nats.service.ts.template +255 -0
  57. package/schematics/nats-notifications/files/notifications-screen/notifications-screen.component.html.template +7 -0
  58. package/schematics/nats-notifications/files/notifications-screen/notifications-screen.component.spec.ts.template +152 -0
  59. package/schematics/nats-notifications/files/notifications-screen/notifications-screen.component.ts.template +61 -0
  60. package/schematics/nats-notifications/index.d.ts +2 -0
  61. package/schematics/nats-notifications/index.js +502 -0
  62. package/schematics/nats-notifications/index.js.map +1 -0
  63. package/schematics/nats-notifications/schema.json +8 -0
  64. package/schematics/ng-add/files/_fonts.scss +85 -0
  65. package/schematics/ng-add/files/styles.scss +47 -0
  66. package/schematics/ng-add/index.d.ts +2 -0
  67. package/schematics/ng-add/index.js +442 -0
  68. package/schematics/ng-add/index.js.map +1 -0
  69. package/styles/appshell-typography-config.scss +19 -0
  70. package/styles/appshell.theme.scss +75 -0
  71. package/styles/palette.css +92 -0
@@ -0,0 +1,325 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.azureLoginGenerator = azureLoginGenerator;
4
+ const schematics_1 = require("@angular-devkit/schematics");
5
+ const core_1 = require("@angular-devkit/core");
6
+ const ts = require("typescript");
7
+ function azureLoginGenerator() {
8
+ return (_tree, context) => {
9
+ context.logger.info('Integrating Azure login into the project');
10
+ return (0, schematics_1.chain)([
11
+ (0, schematics_1.externalSchematic)('@schematics/angular', 'service', {
12
+ name: 'azure',
13
+ path: `src/app/services`
14
+ }),
15
+ mergeTemplate('azure-service', '/src/app/services'),
16
+ (0, schematics_1.externalSchematic)('@schematics/angular', 'service', {
17
+ name: 'app-config',
18
+ path: `src/app/services`
19
+ }),
20
+ mergeTemplate('app-config-service', '/src/app/services'),
21
+ mergeTemplate('azure-config', '/src/app'),
22
+ mergeTemplate('app-config', '/public/config'),
23
+ addAzureServiceToAppComponent(),
24
+ addTestsToAppComponent(),
25
+ addAzureConfigToAppConfig()
26
+ ]);
27
+ };
28
+ }
29
+ function mergeTemplate(templateFolder, targetPath) {
30
+ return (0, schematics_1.mergeWith)((0, schematics_1.apply)((0, schematics_1.url)(`./files/${templateFolder}`), [
31
+ (0, schematics_1.applyTemplates)({}),
32
+ (0, schematics_1.move)((0, core_1.normalize)(targetPath))
33
+ ]), schematics_1.MergeStrategy.Overwrite);
34
+ }
35
+ function addAzureServiceToAppComponent() {
36
+ return (tree, context) => {
37
+ const appComponentPath = 'src/app/app.component.ts';
38
+ let sourceText = readFileContent(tree, appComponentPath, context);
39
+ if (!sourceText)
40
+ return tree;
41
+ const sourceFile = ts.createSourceFile(appComponentPath, sourceText, ts.ScriptTarget.Latest, true);
42
+ sourceText = ensureImport(sourceText, sourceFile, 'AzureService', './services/azure.service');
43
+ sourceText = ensureImport(sourceText, sourceFile, 'OnInit', '@angular/core', 'Component');
44
+ if (hasConstructor(sourceFile)) {
45
+ if (!sourceText.includes('AzureService')) {
46
+ sourceText = updateConstructor(sourceText);
47
+ context.logger.info('Updated constructor with AzureService injection');
48
+ }
49
+ }
50
+ else {
51
+ sourceText = addConstructor(sourceText);
52
+ context.logger.info('Added constructor with AzureService injection');
53
+ }
54
+ sourceText = ensureMethodWithContent(sourceText, sourceFile, 'ngOnInit', `this.azureService.initialize();\n this.azureService.loggedUser$.subscribe((user) => {\n this.loggedUser = user;\n });`, context);
55
+ if (!sourceText.includes('implements OnInit')) {
56
+ sourceText = addOnInitInterface(sourceText);
57
+ }
58
+ sourceText = ensureMethodWithContent(sourceText, sourceFile, 'login', 'this.azureService.login();', context);
59
+ sourceText = ensureMethodWithContent(sourceText, sourceFile, 'logout', 'this.azureService.logout();', context);
60
+ if (!sourceText.includes('loggedUser')) {
61
+ sourceText = addProperty(sourceText, 'loggedUser: any;');
62
+ context.logger.info('Added loggedUser property');
63
+ }
64
+ tree.overwrite(appComponentPath, sourceText);
65
+ context.logger.info(`Updated ${appComponentPath} successfully`);
66
+ return tree;
67
+ };
68
+ }
69
+ function addTestsToAppComponent() {
70
+ return (tree, context) => {
71
+ const appComponentSpecPath = 'src/app/app.component.spec.ts';
72
+ let sourceText = readFileContent(tree, appComponentSpecPath, context);
73
+ if (!sourceText)
74
+ return tree;
75
+ const sourceFile = ts.createSourceFile(appComponentSpecPath, sourceText, ts.ScriptTarget.Latest, true);
76
+ sourceText = ensureImport(sourceText, sourceFile, 'AzureService', './services/azure.service');
77
+ sourceText = ensureImport(sourceText, sourceFile, 'of', 'rxjs');
78
+ sourceText = ensureImport(sourceText, sourceFile, 'provideHttpClient', '@angular/common/http');
79
+ sourceText = ensureImport(sourceText, sourceFile, 'BrowserAnimationsModule', '@angular/platform-browser/animations');
80
+ if (sourceText.includes('import { TestBed }') && !sourceText.includes('ComponentFixture')) {
81
+ sourceText = sourceText.replace('import { TestBed', 'import { TestBed, ComponentFixture');
82
+ }
83
+ const newBeforeEach = `let component: AppComponent;
84
+ let fixture: ComponentFixture<AppComponent>;
85
+ let mockAzureService: jasmine.SpyObj<AzureService>;
86
+
87
+ beforeEach(async () => {
88
+ mockAzureService = jasmine.createSpyObj('AzureService', ['initialize', 'login', 'logout'], { loggedUser$: of(null) });
89
+
90
+ await TestBed.configureTestingModule({
91
+ imports: [AppComponent, BrowserAnimationsModule],
92
+ providers: [
93
+ { provide: AzureService, useValue: mockAzureService },
94
+ provideHttpClient()
95
+ ]
96
+ }).compileComponents();
97
+ });
98
+
99
+ beforeEach(() => {
100
+ fixture = TestBed.createComponent(AppComponent);
101
+ component = fixture.componentInstance;
102
+ fixture.detectChanges();
103
+ });`;
104
+ if (!sourceText.includes('mockAzureService')) {
105
+ const beforeEachRegex = /beforeEach\(async\s*\(\)\s*=>\s*{[\s\S]*?TestBed\.configureTestingModule\({[\s\S]*?}\)\.compileComponents\(\);[\s\S]*?}\);/;
106
+ sourceText = sourceText.replace(beforeEachRegex, newBeforeEach);
107
+ context.logger.info('Updated beforeEach block in test file');
108
+ }
109
+ if (!sourceText.includes('should call login method')) {
110
+ const newTests = `
111
+ it('should initialize the service and subscribe to loggedUser$ on ngOnInit', () => {
112
+ component.ngOnInit();
113
+ expect(mockAzureService.initialize).toHaveBeenCalled();
114
+ expect(component.loggedUser).toBeNull();
115
+ });
116
+
117
+ it('should call login method of AzureService on login', () => {
118
+ component.login();
119
+ expect(mockAzureService.login).toHaveBeenCalled();
120
+ });
121
+
122
+ it('should call logout method of AzureService on logout', () => {
123
+ component.logout();
124
+ expect(mockAzureService.logout).toHaveBeenCalled();
125
+ });`;
126
+ const createTestRegex = /it\(['"](should create the (app|component))['"],[\s\S]*?expect\((app|component)\)\.toBeTruthy\(\);[\s\S]*?\}\);/;
127
+ sourceText = sourceText.replace(createTestRegex, (match) => match + newTests);
128
+ context.logger.info('Added new test cases');
129
+ }
130
+ tree.overwrite(appComponentSpecPath, sourceText);
131
+ context.logger.info(`Updated ${appComponentSpecPath} successfully`);
132
+ return tree;
133
+ };
134
+ }
135
+ function addAzureConfigToAppConfig() {
136
+ return (tree, context) => {
137
+ const appConfigPath = 'src/app/app.config.ts';
138
+ let sourceText = readFileContent(tree, appConfigPath, context);
139
+ if (!sourceText)
140
+ return tree;
141
+ const sourceFile = ts.createSourceFile(appConfigPath, sourceText, ts.ScriptTarget.Latest, true);
142
+ sourceText = ensureImport(sourceText, sourceFile, 'AppConfigService', './services/app-config.service');
143
+ sourceText = ensureImport(sourceText, sourceFile, 'msalProviders', './azure.config');
144
+ // Update existing provideAppInitializer to include AppConfigService
145
+ const existingInitializer = /provideAppInitializer\(\(\)\s*=>\s*{\s*const iconService = inject\(IconRegistryService\);\s*return iconService\.registerIconsFromManifest\('assets\/icons\.json'\);\s*}\)/;
146
+ if (sourceText.match(existingInitializer)) {
147
+ const updatedInitializer = `provideAppInitializer(() => {
148
+ const appConfigService = inject(AppConfigService);
149
+ const iconService = inject(IconRegistryService);
150
+ return appConfigService.loadConfig().then(() =>
151
+ iconService.registerIconsFromManifest('assets/icons.json')
152
+ );
153
+ })`;
154
+ sourceText = sourceText.replace(existingInitializer, updatedInitializer);
155
+ context.logger.info('Updated provideAppInitializer to include AppConfigService');
156
+ }
157
+ // Add msalProviders if not present
158
+ if (!sourceText.includes('...msalProviders')) {
159
+ const providersMatch = sourceText.match(/providers:\s*\[([\s\S]*?)\]/);
160
+ if (providersMatch) {
161
+ const providersContent = providersMatch[1].trim();
162
+ const needsComma = providersContent.length > 0 && !providersContent.endsWith(',');
163
+ const updatedProviders = providersContent.length > 0
164
+ ? `${providersContent}${needsComma ? ',' : ''}\n ...msalProviders`
165
+ : '...msalProviders';
166
+ sourceText = sourceText.replace(providersMatch[0], `providers: [\n ${updatedProviders}\n ]`);
167
+ context.logger.info('Added msalProviders to app.config.ts');
168
+ }
169
+ }
170
+ tree.overwrite(appConfigPath, sourceText);
171
+ context.logger.info(`Updated ${appConfigPath} successfully`);
172
+ return tree;
173
+ };
174
+ }
175
+ // Helper functions
176
+ function readFileContent(tree, filePath, context) {
177
+ if (!tree.exists(filePath)) {
178
+ context.logger.error(`File ${filePath} does not exist.`);
179
+ return null;
180
+ }
181
+ const buffer = tree.read(filePath);
182
+ if (!buffer) {
183
+ context.logger.error(`Could not read file ${filePath}.`);
184
+ return null;
185
+ }
186
+ return buffer.toString('utf-8');
187
+ }
188
+ function ensureImport(sourceText, sourceFile, importName, fromModule, existingImportToExtend, additionalImport) {
189
+ const hasImport = sourceFile.statements.some((node) => ts.isImportDeclaration(node) && node.getText().includes(importName));
190
+ if (hasImport)
191
+ return sourceText;
192
+ if (existingImportToExtend) {
193
+ const importRegex = new RegExp(`import\\s*{([^}]*)}\\s*from\\s*['"]${existingImportToExtend.replace(/\//g, '\\/')}['"]`);
194
+ const match = sourceText.match(importRegex);
195
+ if (match) {
196
+ const imports = match[1].split(',').map(i => i.trim()).filter(i => i);
197
+ if (!imports.includes(importName)) {
198
+ imports.push(importName);
199
+ if (additionalImport && !imports.includes(additionalImport)) {
200
+ imports.push(additionalImport);
201
+ }
202
+ return sourceText.replace(match[0], `import { ${imports.join(', ')} } from '${existingImportToExtend}'`);
203
+ }
204
+ }
205
+ }
206
+ const importStatement = additionalImport
207
+ ? `import { ${importName}, ${additionalImport} } from '${fromModule}';\n`
208
+ : `import { ${importName} } from '${fromModule}';\n`;
209
+ return importStatement + sourceText;
210
+ }
211
+ function ensureMethodWithContent(sourceText, sourceFile, methodName, requiredContent, context) {
212
+ if (hasMethod(sourceFile, methodName)) {
213
+ if (!sourceText.includes(requiredContent)) {
214
+ sourceText = updateMethod(sourceText, methodName, requiredContent);
215
+ context.logger.info(`Updated ${methodName} method`);
216
+ }
217
+ }
218
+ else {
219
+ sourceText = addMethod(sourceText, `${methodName}(): void {\n ${requiredContent}\n }`);
220
+ context.logger.info(`Added ${methodName} method`);
221
+ }
222
+ return sourceText;
223
+ }
224
+ function hasMethod(sourceFile, methodName) {
225
+ let found = false;
226
+ function visit(node) {
227
+ if (ts.isMethodDeclaration(node) && node.name && node.name.getText() === methodName) {
228
+ found = true;
229
+ }
230
+ if (!found)
231
+ ts.forEachChild(node, visit);
232
+ }
233
+ visit(sourceFile);
234
+ return found;
235
+ }
236
+ function hasConstructor(sourceFile) {
237
+ let found = false;
238
+ function visit(node) {
239
+ if (ts.isConstructorDeclaration(node)) {
240
+ found = true;
241
+ }
242
+ if (!found)
243
+ ts.forEachChild(node, visit);
244
+ }
245
+ visit(sourceFile);
246
+ return found;
247
+ }
248
+ function updateConstructor(sourceText) {
249
+ const constructorRegex = /constructor\s*\(([^)]*)\)\s*{([^}]*)}/;
250
+ const match = sourceText.match(constructorRegex);
251
+ if (!match)
252
+ return sourceText;
253
+ const params = match[1].trim();
254
+ const body = match[2];
255
+ if (params.includes('azureService'))
256
+ return sourceText;
257
+ const newParams = params
258
+ ? `${params}, private azureService: AzureService`
259
+ : 'private azureService: AzureService';
260
+ return sourceText.replace(constructorRegex, `constructor(${newParams}) {${body}}`);
261
+ }
262
+ function addConstructor(sourceText) {
263
+ const classRegex = /export\s+class\s+\w+[^{]*{/;
264
+ return sourceText.replace(classRegex, (match) => `${match}\n constructor(private azureService: AzureService) {}\n`);
265
+ }
266
+ function updateMethod(sourceText, methodName, requiredCode) {
267
+ const methodRegex = new RegExp(`${methodName}\\s*\\([^)]*\\)\\s*(?::\\s*\\w+)?\\s*{`);
268
+ const match = sourceText.match(methodRegex);
269
+ if (!match)
270
+ return sourceText;
271
+ const startIdx = match.index + match[0].length;
272
+ let braceCount = 1;
273
+ let endIdx = startIdx;
274
+ while (braceCount > 0 && endIdx < sourceText.length) {
275
+ if (sourceText[endIdx] === '{')
276
+ braceCount++;
277
+ if (sourceText[endIdx] === '}')
278
+ braceCount--;
279
+ endIdx++;
280
+ }
281
+ const methodBody = sourceText.substring(startIdx, endIdx - 1);
282
+ const requiredLines = requiredCode.split('\n').map(l => l.trim()).filter(l => l);
283
+ const existingLines = methodBody.split('\n').map(l => l.trim()).filter(l => l);
284
+ const linesToAdd = requiredLines.filter(line => !existingLines.some(existing => existing.includes(line)));
285
+ if (linesToAdd.length === 0)
286
+ return sourceText;
287
+ const updatedBody = methodBody.trimEnd() + `\n ${linesToAdd.join('\n ')}\n `;
288
+ return sourceText.substring(0, startIdx) + updatedBody + sourceText.substring(endIdx - 1);
289
+ }
290
+ function addMethod(sourceText, methodCode) {
291
+ const sourceFile = ts.createSourceFile('temp.ts', sourceText, ts.ScriptTarget.Latest, true);
292
+ let classNode;
293
+ ts.forEachChild(sourceFile, function visit(node) {
294
+ if (ts.isClassDeclaration(node)) {
295
+ classNode = node;
296
+ }
297
+ else {
298
+ ts.forEachChild(node, visit);
299
+ }
300
+ });
301
+ if (classNode && classNode.getEnd) {
302
+ const classEndPos = classNode.getEnd() - 1;
303
+ return sourceText.slice(0, classEndPos) + `\n\n ${methodCode}\n` + sourceText.slice(classEndPos);
304
+ }
305
+ return sourceText;
306
+ }
307
+ function addProperty(sourceText, propertyCode) {
308
+ const classRegex = /export\s+class\s+\w+[^{]*{\s*\n/;
309
+ return sourceText.replace(classRegex, (match) => `${match} ${propertyCode}\n\n`);
310
+ }
311
+ function addOnInitInterface(sourceText) {
312
+ if (sourceText.match(/implements\s+[^{]*OnInit/)) {
313
+ return sourceText;
314
+ }
315
+ const withInterfaces = /export\s+class\s+(\w+)\s+implements\s+([^{]+)\s*{/;
316
+ const withoutInterfaces = /export\s+class\s+(\w+)\s*{/;
317
+ const interfaceMatch = sourceText.match(withInterfaces);
318
+ if (interfaceMatch) {
319
+ const className = interfaceMatch[1];
320
+ const interfaces = interfaceMatch[2].trim();
321
+ return sourceText.replace(withInterfaces, `export class ${className} implements ${interfaces}, OnInit {`);
322
+ }
323
+ return sourceText.replace(withoutInterfaces, (_, className) => `export class ${className} implements OnInit {`);
324
+ }
325
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../projects/ngx-appshell/schematics/azure-login/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ {
2
+ "$schema": "http://json-schema.org/schema",
3
+ "$id": "azure-login",
4
+ "title": "AppShell Azure Login Schema",
5
+ "type": "object",
6
+ "properties": {},
7
+ "required": []
8
+ }
@@ -0,0 +1,19 @@
1
+ {
2
+ "$schema": "../../../node_modules/@angular-devkit/schematics/collection-schema.json",
3
+ "schematics": {
4
+ "ng-add": {
5
+ "description": "Add the AppShell module to your project.",
6
+ "factory": "./ng-add/index#ngAdd"
7
+ },
8
+ "azure-login": {
9
+ "description": "Integrate azure enterprise login in the application.",
10
+ "factory": "./azure-login/index#azureLoginGenerator",
11
+ "schema": "./azure-login/schema.json"
12
+ },
13
+ "nats-notifications": {
14
+ "description": "Integrate notifications into your application based on Nats.io.",
15
+ "factory": "./nats-notifications/index#natsNotificationsGenerator",
16
+ "schema": "./nats-notifications/schema.json"
17
+ }
18
+ }
19
+ }