@techextensor/tab-core-utility 2.2.129 → 2.2.131

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.
@@ -1,2 +1,9 @@
1
- export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9pbnRlcmZhY2VzL3NjaGVtYS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBpbnRlcmZhY2UgU2NoZW1hUmVzcG9uc2Uge1xuICBSZXF1ZXN0SWQ6IHN0cmluZ1xuICBJc1N1Y2Nlc3M6IGJvb2xlYW5cbiAgUmVzdWx0OiBzdHJpbmdcbiAgU3RhdHVzQ29kZTogc3RyaW5nXG4gIFJlY29yZEFmZmVjdHRlZDogbnVtYmVyXG4gIFRvdGFsUmVjb3JkczogbnVtYmVyXG4gIFRvdGFsRXhlY3V0aW9uVGltZTogbnVtYmVyXG4gIExvZzogYW55W11cbiAgRXJyb3JzOiBhbnlbXVxufSJdfQ==
1
+ export var MetadataEntityType;
2
+ (function (MetadataEntityType) {
3
+ MetadataEntityType["APP_OBJECTS"] = "AppObjects";
4
+ MetadataEntityType["APP_FIELDS"] = "AppFields";
5
+ MetadataEntityType["DATA_SOURCE_QUERIES"] = "DataSourceQueries";
6
+ MetadataEntityType["APP_SCREENS"] = "AppScreens";
7
+ MetadataEntityType["APP_MENUS"] = "AppMenus";
8
+ })(MetadataEntityType || (MetadataEntityType = {}));
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2NoZW1hLmludGVyZmFjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvZGF0YS1hY2Nlc3Mvc3JjL2xpYi90YWItY29yZS11dGlsaXR5L2FwcC9pbnRlcmZhY2VzL3NjaGVtYS5pbnRlcmZhY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBc0JBLE1BQU0sQ0FBTixJQUFZLGtCQU1YO0FBTkQsV0FBWSxrQkFBa0I7SUFDNUIsZ0RBQTBCLENBQUE7SUFDMUIsOENBQXdCLENBQUE7SUFDeEIsK0RBQXlDLENBQUE7SUFDekMsZ0RBQTBCLENBQUE7SUFDMUIsNENBQXNCLENBQUE7QUFDeEIsQ0FBQyxFQU5XLGtCQUFrQixLQUFsQixrQkFBa0IsUUFNN0IiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgaW50ZXJmYWNlIFNjaGVtYVJlc3BvbnNlIHtcbiAgUmVxdWVzdElkOiBzdHJpbmdcbiAgSXNTdWNjZXNzOiBib29sZWFuXG4gIFJlc3VsdDogc3RyaW5nXG4gIFN0YXR1c0NvZGU6IHN0cmluZ1xuICBSZWNvcmRBZmZlY3R0ZWQ6IG51bWJlclxuICBUb3RhbFJlY29yZHM6IG51bWJlclxuICBUb3RhbEV4ZWN1dGlvblRpbWU6IG51bWJlclxuICBMb2c6IGFueVtdXG4gIEVycm9yczogYW55W11cbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcmdJbmZvIHtcbiAgSUQ6IHN0cmluZztcbiAgT3JnYW5pemF0aW9uTmFtZTogc3RyaW5nO1xuICBQcmltYXJ5Q29udGFjdDogYW55O1xuICBBZGRyZXNzOiBhbnk7XG4gIExvY2FsZVNldHRpbmdzOiBzdHJpbmcgfCBudWxsO1xuICBTdWJkb21haW46IHN0cmluZztcbiAgVGVuYW50Q29kZTogc3RyaW5nIHwgbnVsbDtcbn1cblxuZXhwb3J0IGVudW0gTWV0YWRhdGFFbnRpdHlUeXBlIHtcbiAgQVBQX09CSkVDVFMgPSAnQXBwT2JqZWN0cycsXG4gIEFQUF9GSUVMRFMgPSAnQXBwRmllbGRzJyxcbiAgREFUQV9TT1VSQ0VfUVVFUklFUyA9ICdEYXRhU291cmNlUXVlcmllcycsXG4gIEFQUF9TQ1JFRU5TID0gJ0FwcFNjcmVlbnMnLFxuICBBUFBfTUVOVVMgPSAnQXBwTWVudXMnXG59Il19
package/index.d.ts CHANGED
@@ -20,6 +20,7 @@ export * from './lib/tab-core-utility/app/helpers/common/dsq.helpers';
20
20
  export * from './lib/tab-core-utility/app/helpers/common/req-res.helpers';
21
21
  export * from './lib/tab-core-utility/app/helpers/common/where-clause.helpers';
22
22
  export * from './lib/tab-core-utility/app/helpers/common/template.helpers';
23
+ export * from './lib/tab-core-utility/app/helpers/common/meta-data.helpers';
23
24
  export * from './lib/tab-core-utility/app/helpers/screen/forms.helpers';
24
25
  export * from './lib/tab-core-utility/app/helpers/screen/grid-column-data.helpers';
25
26
  export * from './lib/tab-core-utility/app/helpers/screen/grid.helpers';
@@ -54,4 +54,5 @@ export declare const API: {
54
54
  exportReport: string;
55
55
  RefreshGlobalSearchData: string;
56
56
  downloadReportFile: string;
57
+ sendReport: string;
57
58
  };
@@ -61,6 +61,12 @@ export declare class AppHelper {
61
61
  * @returns The result of the download operation
62
62
  */
63
63
  downloadReportFile(params?: any): import("rxjs").Observable<any> | null;
64
+ /**
65
+ * Sends a report based on the given parameters.
66
+ * @param params Optional parameters for sending the report
67
+ * @returns The result of the send operation
68
+ */
69
+ sendReport(params?: any): import("rxjs").Observable<any> | null;
64
70
  static ɵfac: i0.ɵɵFactoryDeclaration<AppHelper, never>;
65
71
  static ɵprov: i0.ɵɵInjectableDeclaration<AppHelper>;
66
72
  }
@@ -0,0 +1,355 @@
1
+ import { MetadataEntityType, OrgInfo } from "../../interfaces/schema.interface";
2
+ import { AppMenu, AppObject, AppScreen } from "../../models/app-object.class";
3
+ import { AppFields, DataSourceQueries, DataSourceQueries_Fields, Parameters } from "../../models/data-source-queries.class";
4
+ import * as i0 from "@angular/core";
5
+ /**
6
+ * MetadataUtils - Utility service for retrieving and manipulating application metadata
7
+ *
8
+ * This service provides methods to extract, filter, and format different parts of the
9
+ * application metadata, including objects, fields, screens, menus, etc.
10
+ */
11
+ export declare class MetadataHelper {
12
+ private formatResults;
13
+ /**
14
+ * Search across all metadata for a term
15
+ *
16
+ * @param searchTerm Term to search for
17
+ * @param entityTypes Optional types of entities to search (if not provided, searches all)
18
+ * @returns Search results grouped by entity type
19
+ *
20
+ * @example
21
+ * // Search across all metadata
22
+ * const results = metadataUtils.searchAcrossMetadata('Blueprint');
23
+ *
24
+ * // Search only in app objects and screens
25
+ * const results = metadataUtils.searchAcrossMetadata(
26
+ * 'Role',
27
+ * [MetadataEntityType.APP_OBJECTS, MetadataEntityType.APP_SCREENS]
28
+ * );
29
+ */
30
+ searchAcrossMetadata(searchTerm: string, entityTypes?: MetadataEntityType[]): Record<string, any[]>;
31
+ /**
32
+ * Search for a term within App Objects
33
+ * @private
34
+ */
35
+ private searchAppObjects;
36
+ /**
37
+ * Search for a term within App Fields
38
+ * @private
39
+ */
40
+ private searchAppFields;
41
+ /**
42
+ * Search for a term within Data Source Queries
43
+ * @private
44
+ */
45
+ private searchDataSourceQueries;
46
+ /**
47
+ * Search for a term within App Screens
48
+ * @private
49
+ */
50
+ private searchAppScreens;
51
+ /**
52
+ * Search for a term within App Menus
53
+ * @private
54
+ */
55
+ private searchAppMenus;
56
+ /**
57
+ * Helper method to check if a string contains a search term
58
+ * @private
59
+ */
60
+ private containsTerm;
61
+ /**
62
+ * Gets App Objects based on filter criteria
63
+ *
64
+ * @param filterFn Optional filter function to apply to app objects
65
+ * @param columns Optional columns to include in the result
66
+ * @returns Array of filtered app objects
67
+ *
68
+ * @example
69
+ * // Get all system app objects
70
+ * const systemObjects = metadataUtils.getAppObjects(obj => obj.IsSystem === true);
71
+ *
72
+ * // Get specific columns from non-deprecated objects
73
+ * const objects = metadataUtils.getAppObjects(
74
+ * obj => !obj.IsDeprecated,
75
+ * ['ID', 'DisplayName', 'ObjectName']
76
+ * );
77
+ */
78
+ getAppObjects(filterFn?: ((value: AppObject) => boolean), columns?: string[]): any[];
79
+ /**
80
+ * Gets a specific App Object by ID or Name
81
+ *
82
+ * @param appObject ID or Name of the app object to retrieve
83
+ * @param columns Optional columns to include in the result
84
+ * @returns The app object with specified columns or null if not found
85
+ *
86
+ * @example
87
+ * // Get a specific app object with all properties
88
+ * const appObj = metadataUtils.getAppObjectDetails('b4887d4d-bb1e-4d52-a7e8-2f943d69e44c' or 'TABMD_SYSTEM');
89
+ *
90
+ * // Get specific columns from an app object
91
+ * const appObj = metadataUtils.getAppObjectDetails(
92
+ * 'b4887d4d-bb1e-4d52-a7e8-2f943d69e44c',
93
+ * ['ID', 'DisplayName', 'ObjectName']
94
+ * );
95
+ */
96
+ getAppObjectDetails(appObject: string, columns?: string[]): any;
97
+ /**
98
+ * Gets all fields across all app objects with filter criteria
99
+ *
100
+ * @param filterFn Optional filter function to apply to fields
101
+ * @param columns Optional columns to include in the result
102
+ * @returns Array of filtered fields
103
+ *
104
+ * @example
105
+ * // Get all required fields across all objects
106
+ * const requiredFields = metadataUtils.getAppFields(field => field.IsRequired === true);
107
+ *
108
+ * // Get specific columns from searchable fields
109
+ * const fields = metadataUtils.getAppFields(
110
+ * field => field.IsSearchable === true,
111
+ * ['ID', 'DisplayName', 'FieldName']
112
+ * );
113
+ */
114
+ getAppFields(filterFn?: ((value: AppFields) => boolean), columns?: string[]): any[];
115
+ /**
116
+ * Gets fields for a specific app object
117
+ *
118
+ * @param appObject ID or Name of the app object
119
+ * @param filterFn Optional filter function for fields
120
+ * @returns Array of fields for the specified object
121
+ *
122
+ * @example
123
+ * // Get all fields for an object
124
+ * const fields = metadataUtils.getAppFieldsByAppObject('b4887d4d-bb1e-4d52-a7e8-2f943d69e44c' or 'TABMD_SYSTEM');
125
+ *
126
+ * // Get only required fields
127
+ * const requiredFields = metadataUtils.getAppFieldsByAppObject(
128
+ * 'b4887d4d-bb1e-4d52-a7e8-2f943d69e44c',
129
+ * field => field.IsRequired === true
130
+ * );
131
+ */
132
+ getAppFieldsByAppObject(appObject: string, filterFn?: ((value: AppFields, index: number, array: AppFields[]) => boolean), columns?: string[]): any[];
133
+ /**
134
+ * Gets lookup fields for a specific app object
135
+ *
136
+ * @param appObject ID or Name of the app object
137
+ * @param filterFn Optional filter function for lookup fields
138
+ * @param columns Optional columns to include in the result
139
+ * @returns Array of lookup fields for the specified object
140
+ *
141
+ * @example
142
+ * // Get all lookup fields for an object
143
+ * const lookupFields = metadataUtils.getLookupFieldsByAppObject('TABD_Blueprint_SLASchemes');
144
+ *
145
+ * // Get specific lookup fields
146
+ * const fields = metadataUtils.getLookupFieldsByAppObject(
147
+ * 'b4887d4d-bb1e-4d52-a7e8-2f943d69e44c',
148
+ * field => field.IsRequired === true
149
+ * );
150
+ */
151
+ getLookupFieldsByAppObject(appObject: string, filterFn?: ((value: AppFields) => boolean), columns?: string[]): any[];
152
+ /**
153
+ * Gets data source queries with filter criteria
154
+ *
155
+ * @param filterFn Optional filter function to apply to queries
156
+ * @param columns Optional columns to include in the result
157
+ * @returns Array of filtered data source queries
158
+ *
159
+ * @example
160
+ * // Get all queries with a specific naming pattern
161
+ * const queries = metadataUtils.getDataSourceQueries(query => query.QueryName.includes('List'));
162
+ *
163
+ * // Get specific columns from all queries
164
+ * const queries = metadataUtils.getDataSourceQueries(
165
+ * undefined,
166
+ * ['ID', 'QueryName', 'DisplayName']
167
+ * );
168
+ */
169
+ getDataSourceQueries(filterFn?: ((value: DataSourceQueries) => boolean), columns?: string[]): any[];
170
+ /**
171
+ * Gets data source queries for a specific app object
172
+ *
173
+ * @param appObject ID or Name of the app object
174
+ * @param filterFn Optional filter function for queries
175
+ * @param columns Optional columns to include in the result
176
+ * @returns Array of queries for the specified object
177
+ *
178
+ * @example
179
+ * // Get all queries for an object
180
+ * const queries = metadataUtils.getDataSourceQueriesByAppObject('b4887d4d-bb1e-4d52-a7e8-2f943d69e44c');
181
+ *
182
+ * // Get queries with specific pattern
183
+ * const filteredQueries = metadataUtils.getDataSourceQueriesByAppObject(
184
+ * 'TABD_Blueprint_SLASchemes',
185
+ * query => query.QueryName.includes('List')
186
+ * );
187
+ */
188
+ getDataSourceQueriesByAppObject(appObject: string, filterFn?: ((value: DataSourceQueries) => boolean), columns?: string[]): any[];
189
+ /**
190
+ * Gets a specific Data Source Query by ID or Name
191
+ *
192
+ * @param query ID or Name of the data source query to retrieve
193
+ * @param columns Optional columns to include in the result
194
+ * @returns The data source query with specified columns or null if not found
195
+ *
196
+ * @example
197
+ * // Get a specific query with all properties
198
+ * const query = metadataUtils.getDataSourceQueryDetails('73e590d0-c4eb-464d-abf9-01943e30ae09');
199
+ *
200
+ * // Get specific columns from a query by name
201
+ * const query = metadataUtils.getDataSourceQueryDetails(
202
+ * 'Get_SLASchemes_List',
203
+ * ['ID', 'QueryName', 'DisplayName']
204
+ * );
205
+ */
206
+ getDataSourceQueryDetails(query: string, columns?: string[]): any;
207
+ /**
208
+ * Gets fields from a data source query
209
+ *
210
+ * @param query ID or Name of the data source query
211
+ * @param filterFn Optional filter function for query fields
212
+ * @param columns Optional columns to include in the result
213
+ * @returns Array of fields for the specified query with app field details
214
+ *
215
+ * @example
216
+ * // Get all fields for a query
217
+ * const queryFields = metadataUtils.getDataSourceQueryFields('73e590d0-c4eb-464d-abf9-01943e30ae09');
218
+ *
219
+ * // Get fields for a query by name
220
+ * const queryFields = metadataUtils.getDataSourceQueryFields('Get_SLASchemes_List');
221
+ *
222
+ * // Get fields with filter and specific columns
223
+ * const fields = metadataUtils.getDataSourceQueryFields(
224
+ * '73e590d0-c4eb-464d-abf9-01943e30ae09',
225
+ * field => field.FieldType === 1,
226
+ * ['ID', 'AppFieldID', 'FieldType']
227
+ * );
228
+ */
229
+ getFieldsByDSQ(query: string, filterFn?: ((value: DataSourceQueries_Fields) => boolean), columns?: string[]): any[];
230
+ /**
231
+ * Enhances query fields with their corresponding app field details
232
+ * @private
233
+ */
234
+ private enhanceQueryFieldsWithAppFields;
235
+ /**
236
+ * Finds the parent app object that contains a specific data source query
237
+ * @private
238
+ */
239
+ private findParentAppObjectForQuery;
240
+ /**
241
+ * Finds an app field by ID within a specific app object
242
+ * @private
243
+ */
244
+ private findAppFieldById;
245
+ /**
246
+ * Gets query parameters from a data source query
247
+ *
248
+ * @param query ID or Name of the data source query
249
+ * @param filterFn Optional filter function for query parameters
250
+ * @param columns Optional columns to include in the result
251
+ * @returns Array of parameters for the specified query
252
+ *
253
+ * @example
254
+ * // Get all parameters for a query
255
+ * const queryParams = metadataUtils.getParametersByDSQ('73e590d0-c4eb-464d-abf9-01943e30ae09');
256
+ *
257
+ * // Get all parameters for a query by name
258
+ * const queryParams = metadataUtils.getParametersByDSQ('Get_SLASchemes_List');
259
+ *
260
+ * // Get mandatory parameters only
261
+ * const mandatoryParams = metadataUtils.getParametersByDSQ(
262
+ * '73e590d0-c4eb-464d-abf9-01943e30ae09',
263
+ * param => param.IsMandatory === true
264
+ * );
265
+ */
266
+ getParametersByDSQ(query: string, filterFn?: ((value: Parameters) => boolean), columns?: string[]): any[];
267
+ /**
268
+ * Gets App Screens with filter criteria
269
+ *
270
+ * @param filterFn Optional filter function to apply to app screens
271
+ * @param columns Optional columns to include in the result
272
+ * @returns Array of filtered app screens
273
+ *
274
+ * @example
275
+ * // Get all system screens
276
+ * const systemScreens = metadataUtils.getAppScreens(screen => screen.IsSystemRecord === true);
277
+ *
278
+ * // Get specific columns from all screens
279
+ * const screens = metadataUtils.getAppScreens(
280
+ * undefined,
281
+ * ['ID', 'Name', 'ScreenType']
282
+ * );
283
+ */
284
+ getAppScreens(filterFn?: ((value: AppScreen) => boolean), columns?: string[]): any[];
285
+ /**
286
+ * Gets a specific App Screen by ID or Name
287
+ *
288
+ * @param screen ID or Name of the app screen to retrieve
289
+ * @param columns Optional columns to include in the result
290
+ * @returns The app screen with specified columns or null if not found
291
+ *
292
+ * @example
293
+ * // Get a specific screen with all properties
294
+ * const screen = metadataUtils.getAppScreen('a5cd639e-31ba-4d33-8800-005a5248dfb2');
295
+ *
296
+ * // Get specific columns from a screen by name
297
+ * const screen = metadataUtils.getAppScreen(
298
+ * 'New Detail Role/Permission Appoject acess wise',
299
+ * ['ID', 'Name', 'ScreenType']
300
+ * );
301
+ */
302
+ getAppScreen(screen: string, columns?: string[]): any;
303
+ /**
304
+ * Gets App Menus with filter criteria
305
+ *
306
+ * @param filterFn Optional filter function to apply to app menus
307
+ * @param columns Optional columns to include in the result
308
+ * @returns Array of filtered app menus
309
+ *
310
+ * @example
311
+ * // Get all top-level menus
312
+ * const topMenus = metadataUtils.getAppMenus(menu => !menu.ParentID);
313
+ *
314
+ * // Get specific columns from all menus
315
+ * const menus = metadataUtils.getAppMenus(
316
+ * undefined,
317
+ * ['ID', 'MenuName', 'DisplayName', 'ScreenID']
318
+ * );
319
+ */
320
+ getAppMenus(filterFn?: ((value: AppMenu) => boolean), columns?: string[]): any[];
321
+ /**
322
+ * Gets organization information with filter criteria
323
+ *
324
+ * @param filterFn Optional filter function to apply to organizations
325
+ * @param columns Optional columns to include in the result
326
+ * @returns Array of filtered organizations
327
+ *
328
+ * @example
329
+ * // Get all organizations
330
+ * const orgs = metadataUtils.getOrgs();
331
+ *
332
+ * // Get organizations with specific subdomain pattern
333
+ * const specificOrgs = metadataUtils.getOrgs(
334
+ * org => org.Subdomain?.includes('test')
335
+ * );
336
+ */
337
+ getOrgs(filterFn?: ((value: OrgInfo) => boolean), columns?: string[]): any[];
338
+ /**
339
+ * Gets a specific organization by ID or Name
340
+ *
341
+ * @param organization ID or OrganizationName of the organization
342
+ * @param columns Optional columns to include in the result
343
+ * @returns The organization or null if not found
344
+ *
345
+ * @example
346
+ * // Get organization by ID
347
+ * const org = metadataUtils.getOrgInfoDetails('0ec3d0f1-b2ec-47b7-8305-b767d0e5ea63');
348
+ *
349
+ * // Get organization by name
350
+ * const org = metadataUtils.getOrgInfoDetails('SquadFocus');
351
+ */
352
+ getOrgInfoDetails(organization: string, columns?: string[]): any;
353
+ static ɵfac: i0.ɵɵFactoryDeclaration<MetadataHelper, never>;
354
+ static ɵprov: i0.ɵɵInjectableDeclaration<MetadataHelper>;
355
+ }
@@ -9,3 +9,19 @@ export interface SchemaResponse {
9
9
  Log: any[];
10
10
  Errors: any[];
11
11
  }
12
+ export interface OrgInfo {
13
+ ID: string;
14
+ OrganizationName: string;
15
+ PrimaryContact: any;
16
+ Address: any;
17
+ LocaleSettings: string | null;
18
+ Subdomain: string;
19
+ TenantCode: string | null;
20
+ }
21
+ export declare enum MetadataEntityType {
22
+ APP_OBJECTS = "AppObjects",
23
+ APP_FIELDS = "AppFields",
24
+ DATA_SOURCE_QUERIES = "DataSourceQueries",
25
+ APP_SCREENS = "AppScreens",
26
+ APP_MENUS = "AppMenus"
27
+ }
@@ -1,19 +1,19 @@
1
1
  import { Observable } from "rxjs";
2
2
  import { LoginUserRequest } from "../app/interfaces/auth.interface";
3
3
  export declare const authStore: import("@angular/core").Type<{
4
+ token: import("@angular/core").Signal<string>;
5
+ name: import("@angular/core").Signal<string>;
4
6
  id: import("@angular/core").Signal<any>;
5
7
  email: import("@angular/core").Signal<string>;
6
- name: import("@angular/core").Signal<string>;
7
8
  avatar: import("@angular/core").Signal<string>;
8
9
  status: import("@angular/core").Signal<string>;
9
- token: import("@angular/core").Signal<string>;
10
10
  checkUserlogin: () => boolean;
11
11
  login: (API_URL: string, credentials: LoginUserRequest) => Observable<any>;
12
12
  } & import("@ngrx/signals").StateSignal<{
13
+ token: string;
14
+ name: string;
13
15
  id: any;
14
16
  email: string;
15
- name: string;
16
17
  avatar: string;
17
18
  status: string;
18
- token: string;
19
19
  }>>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@techextensor/tab-core-utility",
3
- "version": "2.2.129",
3
+ "version": "2.2.131",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^17.3.0",
6
6
  "@angular/core": "^17.3.0",