Skip to content

Commit 1e047a5

Browse files
committed
feat: Add detailed JSDoc comments to ExtensionsListV1 and ExtensionsFileV1 for improved documentation
1 parent d6315cd commit 1e047a5

File tree

1 file changed

+90
-0
lines changed

1 file changed

+90
-0
lines changed

apps/api/src/extensions/_dto/extensions.dto.ts

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,108 @@
11
import { Type } from 'class-transformer'
22
import { IsBoolean, IsEnum, IsString, ValidateNested } from 'class-validator'
33

4+
/**
5+
* DTO pour une entrée d'extension dans la liste des extensions.
6+
*
7+
* Représente une extension individuelle avec son chemin et son état d'activation.
8+
*
9+
* @class ExtensionsListV1
10+
*
11+
* @description
12+
* Chaque entrée définit :
13+
* - Le chemin vers le répertoire contenant l'extension
14+
* - L'état d'activation (activée ou désactivée)
15+
*
16+
* Les extensions désactivées sont ignorées au chargement même si leur
17+
* configuration est présente dans la liste.
18+
*/
419
export class ExtensionsListV1 {
20+
/**
21+
* Chemin vers le répertoire de l'extension.
22+
* Chemin relatif ou absolu contenant le fichier extension.yml et les modules.
23+
*
24+
* @type {string}
25+
* @required
26+
* @example "./extensions/auth-ldap", "/var/extensions/custom-dashboard"
27+
*/
528
@IsString()
629
public path: string
730

31+
/**
32+
* Indique si l'extension est activée.
33+
* Si false, l'extension ne sera pas chargée au démarrage.
34+
*
35+
* @type {boolean}
36+
* @required
37+
* @default true
38+
*/
839
@IsBoolean()
940
public enabled: boolean
1041
}
1142

43+
/**
44+
* DTO principal pour le fichier de liste des extensions (v1).
45+
*
46+
* Ce DTO représente le fichier de configuration global qui référence toutes
47+
* les extensions disponibles dans le système (typiquement list.yml).
48+
* Il permet de gérer centralement quelles extensions sont chargées.
49+
*
50+
* @class ExtensionsFileV1
51+
*
52+
* @description
53+
* Le fichier de liste des extensions permet de :
54+
* - Référencer toutes les extensions disponibles dans le système
55+
* - Activer ou désactiver des extensions sans les supprimer
56+
* - Gérer l'ordre de chargement des extensions (selon l'ordre de la liste)
57+
* - Maintenir une configuration centralisée des extensions
58+
*
59+
* Au démarrage, le système :
60+
* 1. Lit le fichier list.yml
61+
* 2. Parcourt chaque extension activée
62+
* 3. Charge le fichier extension.yml de chaque extension
63+
* 4. Initialise les modules définis dans chaque extension
64+
*
65+
* @example
66+
* ```typescript
67+
* // Fichier list.yml
68+
* {
69+
* version: "1",
70+
* list: [
71+
* {
72+
* path: "./extensions/auth-ldap",
73+
* enabled: true
74+
* },
75+
* {
76+
* path: "./extensions/custom-dashboard",
77+
* enabled: true
78+
* },
79+
* {
80+
* path: "./extensions/beta-feature",
81+
* enabled: false // Extension désactivée
82+
* }
83+
* ]
84+
* }
85+
* ```
86+
*/
1287
export class ExtensionsFileV1 {
88+
/**
89+
* Version du format de fichier de liste d'extensions.
90+
* Actuellement seule la version "1" est supportée.
91+
*
92+
* @type {string}
93+
* @required
94+
* @enum "1"
95+
*/
1396
@IsEnum(['1'])
1497
public version: string
1598

99+
/**
100+
* Liste des extensions référencées avec leur état d'activation.
101+
* Chaque entrée contient le chemin vers l'extension et son état.
102+
*
103+
* @type {ExtensionsListV1[]}
104+
* @required
105+
*/
16106
@ValidateNested({ each: true })
17107
@Type(() => ExtensionsListV1)
18108
public list: ExtensionsListV1[]

0 commit comments

Comments
 (0)