@dflat-core/web 1.0.49 → 1.0.50
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.
- package/README.md +40 -0
- package/fesm2022/dflat-core-web-core-ux-testing.mjs +391 -0
- package/fesm2022/dflat-core-web-core-ux-testing.mjs.map +1 -0
- package/fesm2022/dflat-core-web-core-ux.mjs +1 -1
- package/fesm2022/dflat-core-web-core-ux.mjs.map +1 -1
- package/fesm2022/dflat-core-web.mjs.map +1 -1
- package/package.json +5 -1
- package/types/dflat-core-web-core-ux-testing.d.ts +232 -0
- package/types/dflat-core-web-core-ux.d.ts +8 -1
- package/types/dflat-core-web-system-ux.d.ts +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dflat-core-web.mjs","names":[],"sources":["../../src/index.ts"],"sourcesContent":["/*\r\n * Point d'entrée principal de @dflat-core/web.\r\n * Les librairies sont exposées par des points d'entrée secondaires :\r\n * @dflat-core/web/core, @dflat-core/web/core-model, @dflat-core/web/core-services, @dflat-core/web/core-data,\r\n * @dflat-core/web/core-ux, @dflat-core/web/system-model, @dflat-core/web/system-data,\r\n * @dflat-core/web/system-root, @dflat-core/web/system-ux\r\n */\r\nexport const DFLAT_WEB_ENTRY_POINTS = [\r\n 'core', 'core-model', 'core-services', 'core-data', 'core-ux',\r\n 'system-model', 'system-data', 'system-root', 'system-ux'\r\n] as const;\r\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"dflat-core-web.mjs","names":[],"sources":["../../src/index.ts"],"sourcesContent":["/*\r\n * Point d'entrée principal de @dflat-core/web.\r\n * Les librairies sont exposées par des points d'entrée secondaires :\r\n * @dflat-core/web/core, @dflat-core/web/core-model, @dflat-core/web/core-services, @dflat-core/web/core-data,\r\n * @dflat-core/web/core-ux, @dflat-core/web/system-model, @dflat-core/web/system-data,\r\n * @dflat-core/web/system-root, @dflat-core/web/system-ux\r\n * et, pour les fichiers de test seulement, @dflat-core/web/core-ux/testing.\r\n */\r\nexport const DFLAT_WEB_ENTRY_POINTS = [\r\n 'core', 'core-model', 'core-services', 'core-data', 'core-ux',\r\n 'system-model', 'system-data', 'system-root', 'system-ux'\r\n] as const;\r\n"],"mappings":"AAQA,MAAa,yBAAyB;CAClC;CAAQ;CAAc;CAAiB;CAAa;CACpD;CAAgB;CAAe;CAAe;AACxC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dflat-core/web",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.50",
|
|
4
4
|
"description": "Librairies Angular Dflat (core, core-*, system-*) et assets partagés, empaquetées en un module npm unique.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"peerDependencies": {
|
|
@@ -66,6 +66,10 @@
|
|
|
66
66
|
"types": "./types/dflat-core-web-core-ux.d.ts",
|
|
67
67
|
"default": "./fesm2022/dflat-core-web-core-ux.mjs"
|
|
68
68
|
},
|
|
69
|
+
"./core-ux/testing": {
|
|
70
|
+
"types": "./types/dflat-core-web-core-ux-testing.d.ts",
|
|
71
|
+
"default": "./fesm2022/dflat-core-web-core-ux-testing.mjs"
|
|
72
|
+
},
|
|
69
73
|
"./system-data": {
|
|
70
74
|
"types": "./types/dflat-core-web-system-data.d.ts",
|
|
71
75
|
"default": "./fesm2022/dflat-core-web-system-data.mjs"
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
import { Provider, Type } from "@angular/core";
|
|
2
|
+
import { ActivatedRoute, NavigationExtras, Router, Routes, UrlCreationOptions, UrlTree } from "@angular/router";
|
|
3
|
+
import { ActionDescriptor, ColumnDescriptor, EntityViewModel, EntityViewModelWithFields, FilterDescriptor, FilterViewModel, PagedList } from "@dflat-core/web/core-model";
|
|
4
|
+
import { ApplicationService, BaseComponent, EntityFacade, EntityFacadeRegistryService, EntitySelector } from "@dflat-core/web/core-ux";
|
|
5
|
+
import { BreadcrumbService, MenuItem, NotificationMqService } from "@dflat-core/web/core-services";
|
|
6
|
+
import { DataService } from "@dflat-core/web/core-data";
|
|
7
|
+
import { Observable } from "rxjs";
|
|
8
|
+
import { Guid } from "guid-typescript";
|
|
9
|
+
import { Title } from "@angular/platform-browser";
|
|
10
|
+
/** Valeurs attendues d'un composant dérivé de BaseComponent (voir describeBaseComponent). */
|
|
11
|
+
export interface BaseComponentExpectations {
|
|
12
|
+
/** Clé de l'entité (getEntityKey), ex. country. */
|
|
13
|
+
entityKey: string;
|
|
14
|
+
/** Lien du composant (getPath), ex. /sys/country. */
|
|
15
|
+
path: string;
|
|
16
|
+
/** Titre du composant (getTitle). */
|
|
17
|
+
title: string;
|
|
18
|
+
/** Clé de permission du composant (PermissionKey), ex. system.country. */
|
|
19
|
+
permissionKey: string;
|
|
20
|
+
/**
|
|
21
|
+
* Titres des onglets enregistrés par le composant après ngOnInit (facade.sections), dans
|
|
22
|
+
* l'ordre ; non vérifiés si absent.
|
|
23
|
+
*/
|
|
24
|
+
sections?: string[];
|
|
25
|
+
/** Fournisseurs ajoutés au module de test (ex. PP_SERVICE). */
|
|
26
|
+
providers?: Provider[];
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Fabrique du composant à tester : appelée dans un contexte d'injection, avec les services de
|
|
30
|
+
* test (voir BaseComponentTestContext). Ex. `(app, route) => new TestCountryComponent(app, route)`.
|
|
31
|
+
*/
|
|
32
|
+
export type BaseComponentFactory<TFilter extends FilterViewModel, TData extends EntityViewModel> = (app: ApplicationService, route: ActivatedRoute) => BaseComponent<TFilter, TData>;
|
|
33
|
+
/** Fil d'Ariane publié par BreadcrumbService (setCurrent). */
|
|
34
|
+
export interface BreadcrumbData {
|
|
35
|
+
/** Description de la page. */
|
|
36
|
+
description: string;
|
|
37
|
+
/** Le fil d'Ariane est affiché. */
|
|
38
|
+
display: boolean;
|
|
39
|
+
/** En-tête de la page. */
|
|
40
|
+
header: string;
|
|
41
|
+
/** Niveaux du fil d'Ariane : icône, lien et libellé. */
|
|
42
|
+
levels: {
|
|
43
|
+
icon: string;
|
|
44
|
+
link: string[];
|
|
45
|
+
title: string;
|
|
46
|
+
}[];
|
|
47
|
+
}
|
|
48
|
+
/** Compteur des appels d'une méthode (voir countCalls). */
|
|
49
|
+
export interface CallCounter {
|
|
50
|
+
/** Nombre d'appels depuis la pose du compteur. */
|
|
51
|
+
count: number;
|
|
52
|
+
}
|
|
53
|
+
/** Éléments générés d'un module (dflat -g ts) dont describeGeneratedModule vérifie la cohérence. */
|
|
54
|
+
export interface GeneratedModuleExpectations {
|
|
55
|
+
/** Composants des entités ([Module]GeneratedComponents). */
|
|
56
|
+
components: Type<unknown>[];
|
|
57
|
+
/** Routes des composants ([Module]GeneratedRoutes). */
|
|
58
|
+
routes: Routes;
|
|
59
|
+
/** Sélecteurs d'entité ([Module]GeneratedSelectors). */
|
|
60
|
+
selectors: EntitySelector[];
|
|
61
|
+
/** Classe des clés d'entité générées (Base[Module]EntityKeys) : une propriété statique par entité. */
|
|
62
|
+
entityKeys: object;
|
|
63
|
+
/** Lien d'une entité à partir de sa clé (Base[Module]MenuItemProvider.GetLink). */
|
|
64
|
+
getLink: (entityKey: string) => string;
|
|
65
|
+
/** Éléments de menu générés des entités du menu dont la route est générée. */
|
|
66
|
+
menuItems: MenuItem[];
|
|
67
|
+
/** Classe des permissions du module ([Module]Permissions) ; permissions non vérifiées si absente. */
|
|
68
|
+
permissions?: object;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Vérifications communes aux outils de test (Vitest, Jest, Jasmine) utilisées par les suites
|
|
72
|
+
* standard : seul ce sous-ensemble est appelé, pour ne dépendre d'aucun outil.
|
|
73
|
+
*/
|
|
74
|
+
export interface TestMatchers {
|
|
75
|
+
/** Égalité stricte (===). */
|
|
76
|
+
toBe(expected: unknown): void;
|
|
77
|
+
/** Égalité de structure (objets et tableaux comparés en profondeur). */
|
|
78
|
+
toEqual(expected: unknown): void;
|
|
79
|
+
/** Valeur considérée comme vraie. */
|
|
80
|
+
toBeTruthy(): void;
|
|
81
|
+
/** Valeur considérée comme fausse. */
|
|
82
|
+
toBeFalsy(): void;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Fonctions globales de l'outil de test (Vitest, Jest, Jasmine) utilisées par les suites
|
|
86
|
+
* standard, lues sur globalThis (voir getTestRunner).
|
|
87
|
+
*/
|
|
88
|
+
export interface TestRunner {
|
|
89
|
+
/** Déclare un groupe de tests. */
|
|
90
|
+
describe(name: string, body: () => void): void;
|
|
91
|
+
/** Déclare un test, synchrone ou asynchrone. */
|
|
92
|
+
it(name: string, body: () => void | Promise<void>): void;
|
|
93
|
+
/** Code exécuté avant chaque test du groupe. */
|
|
94
|
+
beforeEach(body: () => void | Promise<void>): void;
|
|
95
|
+
/** Vérifications sur une valeur. */
|
|
96
|
+
expect(actual: unknown): TestMatchers;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Doublure de DataService : aucune requête HTTP. Fournit les données d'initialisation d'une
|
|
100
|
+
* façade (colonnes, filtre vide, formulaire, actions) et enregistre les recherches et lectures
|
|
101
|
+
* de détail demandées par le composant testé.
|
|
102
|
+
*/
|
|
103
|
+
export declare class DataServiceDouble {
|
|
104
|
+
/** Recherches demandées (search), dans l'ordre. */
|
|
105
|
+
readonly searchCalls: {
|
|
106
|
+
entityKey: string;
|
|
107
|
+
filter: FilterViewModel;
|
|
108
|
+
}[];
|
|
109
|
+
/** Lectures de détail demandées (getDetails), dans l'ordre. */
|
|
110
|
+
readonly detailsCalls: {
|
|
111
|
+
entityKey: string;
|
|
112
|
+
id: number;
|
|
113
|
+
}[];
|
|
114
|
+
/** Résultat renvoyé par search. */
|
|
115
|
+
searchResult: PagedList<EntityViewModel>;
|
|
116
|
+
/** Entité renvoyée par getDetails. */
|
|
117
|
+
details: EntityViewModel;
|
|
118
|
+
/** Enregistre la recherche et renvoie searchResult. */
|
|
119
|
+
search<TData>(entityKey: string, filter: FilterViewModel): Observable<PagedList<TData>>;
|
|
120
|
+
/** Enregistre la lecture et renvoie details. */
|
|
121
|
+
getDetails<TData>(entityKey: string, id: number): Observable<TData>;
|
|
122
|
+
/** Paramètres d'URL d'un filtre : copie du filtre, sans mise en forme. */
|
|
123
|
+
getFormattedParams(params: object): object;
|
|
124
|
+
/** Colonnes de la grille : aucune. */
|
|
125
|
+
getViewColumns(): Observable<ColumnDescriptor[]>;
|
|
126
|
+
/** Critères du filtre : aucun. */
|
|
127
|
+
getViewFilterDescriptors(): Observable<FilterDescriptor[]>;
|
|
128
|
+
/** Filtre vide : première page de 25 lignes. */
|
|
129
|
+
getEmptyFilter<TFilter>(): Observable<TFilter>;
|
|
130
|
+
/** Formulaire vide, sans champ. */
|
|
131
|
+
getEntityViewModel<TData>(): Observable<EntityViewModelWithFields<TData>>;
|
|
132
|
+
/** Actions étendues : aucune. */
|
|
133
|
+
getExtendedActions(): Observable<ActionDescriptor[]>;
|
|
134
|
+
/** La doublure, vue comme le DataService qu'elle remplace. */
|
|
135
|
+
asDataService(): DataService;
|
|
136
|
+
}
|
|
137
|
+
/** Registre de façades du socle (vraies façades), qui enregistre les façades demandées. */
|
|
138
|
+
export declare class EntityFacadeRegistrySpy extends EntityFacadeRegistryService {
|
|
139
|
+
/** Façades demandées (getFacade), dans l'ordre : clé d'entité, identifiant et façade renvoyée. */
|
|
140
|
+
readonly requests: {
|
|
141
|
+
key: string;
|
|
142
|
+
id: Guid;
|
|
143
|
+
facade: EntityFacade<EntityViewModel>;
|
|
144
|
+
}[];
|
|
145
|
+
/** Enregistre la demande et renvoie la façade du registre. */
|
|
146
|
+
getFacade<TData extends EntityViewModel>(key: string, id: Guid): EntityFacade<TData>;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Doublure de Router : URL courante, construction d'URL (chemin et paramètres) et navigations
|
|
150
|
+
* enregistrées. Une navigation réussit toujours et devient l'URL courante.
|
|
151
|
+
*/
|
|
152
|
+
export declare class RouterDouble {
|
|
153
|
+
/** URL courante. */
|
|
154
|
+
url: string;
|
|
155
|
+
/** Navigations demandées (navigate), dans l'ordre. */
|
|
156
|
+
readonly navigations: {
|
|
157
|
+
commands: unknown[];
|
|
158
|
+
extras?: NavigationExtras;
|
|
159
|
+
}[];
|
|
160
|
+
constructor(url: string);
|
|
161
|
+
/** URL formée des segments `commands` et des paramètres `extras.queryParams`. */
|
|
162
|
+
createUrlTree(commands: unknown[], extras?: UrlCreationOptions): UrlTree;
|
|
163
|
+
/** Enregistre la navigation, qui devient l'URL courante. */
|
|
164
|
+
navigate(commands: unknown[], extras?: NavigationExtras): Promise<boolean>;
|
|
165
|
+
/** La doublure, vue comme le Router qu'elle remplace. */
|
|
166
|
+
asRouter(): Router;
|
|
167
|
+
/** URL d'un chemin et de ses paramètres. */
|
|
168
|
+
private static format;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Services donnés à un composant dérivé de BaseComponent pendant un test : vraies classes du
|
|
172
|
+
* socle quand elles s'instancient sans dépendance (ApplicationService, registre de façades et
|
|
173
|
+
* façades, fil d'Ariane, file de messages), doublures pour le service de données, le routeur et
|
|
174
|
+
* la route. Les services que BaseComponent n'utilise pas (authentification, fenêtres modales,
|
|
175
|
+
* alertes, mise en page...) ne sont pas fournis.
|
|
176
|
+
*/
|
|
177
|
+
export declare class BaseComponentTestContext {
|
|
178
|
+
/** Doublure du service de données. */
|
|
179
|
+
readonly dataService: DataServiceDouble;
|
|
180
|
+
/** Doublure du routeur. */
|
|
181
|
+
readonly router: RouterDouble;
|
|
182
|
+
/** Route active, sans paramètre. */
|
|
183
|
+
readonly route: ActivatedRoute;
|
|
184
|
+
/** Fil d'Ariane du socle. */
|
|
185
|
+
readonly breadcrumb: BreadcrumbService;
|
|
186
|
+
/** File de messages (notifications d'entité) du socle. */
|
|
187
|
+
readonly notifications: NotificationMqService;
|
|
188
|
+
/** Registre de façades du socle, qui enregistre les façades demandées. */
|
|
189
|
+
readonly registry: EntityFacadeRegistrySpy;
|
|
190
|
+
/** ApplicationService du socle, construit sur les services ci-dessus. */
|
|
191
|
+
readonly app: ApplicationService;
|
|
192
|
+
/**
|
|
193
|
+
* @param url URL courante du routeur.
|
|
194
|
+
* @param title Service du titre de la page (TestBed.inject(Title)), utilisé par le fil d'Ariane.
|
|
195
|
+
*/
|
|
196
|
+
constructor(url: string, title: Title);
|
|
197
|
+
/** Fil d'Ariane courant (dernière valeur publiée). */
|
|
198
|
+
get currentBreadcrumb(): BreadcrumbData;
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Compte les appels de la méthode `method` de `target`, qui reste exécutée : équivalent, sans
|
|
202
|
+
* outil de test, d'un espion transparent.
|
|
203
|
+
*/
|
|
204
|
+
export declare function countCalls<T extends object, K extends keyof T>(target: T, method: K): CallCounter;
|
|
205
|
+
/**
|
|
206
|
+
* Fonctions globales de l'outil de test (describe, it, beforeEach, expect), lues sur globalThis
|
|
207
|
+
* pour ne dépendre d'aucun outil ni de ses types.
|
|
208
|
+
*/
|
|
209
|
+
export declare function getTestRunner(): TestRunner;
|
|
210
|
+
/**
|
|
211
|
+
* Suite de test standard d'un composant dérivé de BaseComponent : vérifie, sans rendre son
|
|
212
|
+
* gabarit, le contrat de BaseComponent (création, clé d'entité, lien, titre, permission, façade,
|
|
213
|
+
* ngOnInit, Search / refresh, notifications, ngOnDestroy). À appeler au premier niveau d'un
|
|
214
|
+
* fichier de test :
|
|
215
|
+
* `describeBaseComponent('CountryComponent', (app, route) => new TestCountryComponent(app, route), { ... })`.
|
|
216
|
+
* La suite n'utilise que les fonctions globales de l'outil de test (describe, it, beforeEach,
|
|
217
|
+
* expect) et TestBed.
|
|
218
|
+
*
|
|
219
|
+
* @param name Nom du composant, repris dans le titre de la suite.
|
|
220
|
+
* @param factory Fabrique du composant, appelée dans un contexte d'injection avant chaque test.
|
|
221
|
+
* @param expectations Valeurs attendues du composant.
|
|
222
|
+
*/
|
|
223
|
+
export declare function describeBaseComponent<TFilter extends FilterViewModel, TData extends EntityViewModel>(name: string, factory: BaseComponentFactory<TFilter, TData>, expectations: BaseComponentExpectations): void;
|
|
224
|
+
/**
|
|
225
|
+
* Suite de test standard d'un module généré (dflat -g ts) : cohérence de ses composants, routes,
|
|
226
|
+
* sélecteurs, clés d'entité, éléments de menu et permissions. Chaque test compare à une liste
|
|
227
|
+
* vide la liste des éléments en défaut, que l'outil de test affiche en cas d'échec.
|
|
228
|
+
*
|
|
229
|
+
* @param name Nom du module (ex. System), repris dans le titre de la suite.
|
|
230
|
+
* @param module Éléments générés du module.
|
|
231
|
+
*/
|
|
232
|
+
export declare function describeGeneratedModule(name: string, module: GeneratedModuleExpectations): void;
|
|
@@ -448,6 +448,14 @@ export declare class LayoutService {
|
|
|
448
448
|
static ɵfac: i0.ɵɵFactoryDeclaration<LayoutService, never>;
|
|
449
449
|
static ɵprov: i0.ɵɵInjectableDeclaration<any>;
|
|
450
450
|
}
|
|
451
|
+
/**
|
|
452
|
+
* Dépendances racines d'ApplicationService et du registre de façades. Le jeton est déclaré dans son
|
|
453
|
+
* propre fichier, sans import d'exécution : ApplicationService et EntityFacadeRegistryService
|
|
454
|
+
* s'importent l'un l'autre, et un jeton déclaré avec ApplicationService serait lu avant son
|
|
455
|
+
* initialisation par le registre quand le package est chargé sans édition de liens Angular
|
|
456
|
+
* (tests unitaires d'une application : "Cannot access 'ROOT_DEPS' before initialization").
|
|
457
|
+
*/
|
|
458
|
+
export declare const ROOT_DEPS: InjectionToken<RootDeps>;
|
|
451
459
|
declare namespace dynamic_form_component_d_exports {
|
|
452
460
|
export { DynamicFormComponent };
|
|
453
461
|
}
|
|
@@ -2707,7 +2715,6 @@ export interface RootDeps {
|
|
|
2707
2715
|
selection: SelectionService<EntityViewModel>;
|
|
2708
2716
|
readonly test: TestService;
|
|
2709
2717
|
}
|
|
2710
|
-
export declare const ROOT_DEPS: InjectionToken<RootDeps>;
|
|
2711
2718
|
export declare class ApplicationService {
|
|
2712
2719
|
deps: RootDeps;
|
|
2713
2720
|
MQService: NotificationMqService;
|
|
@@ -3318,7 +3318,7 @@ export declare abstract class BasePresentationProfileComponent extends BaseCompo
|
|
|
3318
3318
|
static ɵdir: i0.ɵɵDirectiveDeclaration<BasePresentationProfileComponent, never, never, {}, {}, never, never, true, never>;
|
|
3319
3319
|
}
|
|
3320
3320
|
/** Composants des entités du module System (composants spécifiques), à déclarer dans son module Angular. */
|
|
3321
|
-
export declare const SystemGeneratedComponents: (typeof
|
|
3321
|
+
export declare const SystemGeneratedComponents: (typeof CustomFieldOptionsComponent | typeof CustomFieldGroupItemComponent | typeof CustomFieldValueComponent | typeof MetaEntityFormFieldComponent | typeof MetaEntityRelationDefinitionComponent | typeof MetaEntityTranslationComponent | typeof MetaEntityViewFieldComponent | typeof MetaEntityFieldComponent | typeof PresentationProfileItemComponent | typeof CustomFieldComponent | typeof CustomFieldGroupEntityComponent | typeof CustomFieldGroupComponent | typeof AddressComponent | typeof SubcompanyComponent | typeof RequestResultComponent | typeof RequestEntityComponent | typeof RequestComponent | typeof SupplierCompanyComponent | typeof SynchronizedCompanyComponent | typeof UserAccountCompanyComponent | typeof RolePermissionComponent | typeof UserAccountRoleComponent | typeof RoleComponent | typeof UserAccountComponent | typeof CompanyComponent | typeof RatingComponent | typeof UserAccountLoginComponent | typeof UserAccountNewsComponent | typeof UserAccountTokenComponent | typeof UserFavoriteComponent | typeof UserGroupDefinitionComponent | typeof UserHistoryComponent | typeof TvaRateComponent | typeof CountryComponent | typeof ExchangeRateComponent | typeof CurrencyComponent | typeof DayInfoComponent | typeof ErrorCategoryComponent | typeof FilesComponent | typeof MetaEntityKeywordComponent | typeof KeywordComponent | typeof MetaEntityFormSectionComponent | typeof MetaEntityFormComponent | typeof MetaEntityRelationComponent | typeof MetaEntityComponent | typeof NewsComponent | typeof ParameterValueComponent | typeof ParameterComponent | typeof ParameterSectionComponent | typeof PermissionComponent | typeof RatingSummaryComponent | typeof RequestTypeComponent | typeof ResourceTranslationComponent | typeof ResourceKeyComponent | typeof ResourceLanguageComponent | typeof SupplierComponent | typeof UserGroupComponent | typeof UserPermissionViewComponent | typeof UserSessionComponent | typeof VersionComponent)[];
|
|
3322
3322
|
/** Routes des composants des entités du module System (clé d'entité), à ajouter à RouterModule.forChild. */
|
|
3323
3323
|
export declare const SystemGeneratedRoutes: Routes;
|
|
3324
3324
|
/**
|