@volontariapp/config 3.2.0 → 3.2.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.2.1
4
+
5
+ ### Patch Changes
6
+
7
+ - README bump
8
+
9
+ - Updated dependencies []:
10
+ - @volontariapp/logger@0.2.6
11
+
3
12
  ## 3.2.0
4
13
 
5
14
  ### Minor Changes
package/README.md ADDED
@@ -0,0 +1,62 @@
1
+ # @volontariapp/config
2
+
3
+ ## Overview
4
+ Le package `config` est responsable du chargement, du typage fort et de la validation centralisée de la configuration logicielle.
5
+ Totalement agnostique (pur Node.js), il garantit que n'importe quelle brique de Volontariapp (Microservice NestJS, Worker isolé, Consumer Outbox) puisse valider ses variables d'environnement de manière sécurisée (Fail Fast) avant le démarrage de l'application.
6
+
7
+ ## Cinématique de Validation
8
+
9
+ ```mermaid
10
+ graph TD
11
+ ENV[.env ou OS Variables] --> L(Loader Service)
12
+ L --> V[Class Validator (DTOs)]
13
+
14
+ V -->|Erreur de Validation| F[Crash / Fail Fast]
15
+ V -->|Succès| O[Objet de Configuration Typé]
16
+
17
+ O --> MS(Microservice NestJS)
18
+ O --> WK(Worker Isolé)
19
+ ```
20
+
21
+ ## Key Features
22
+ - **Typage Fort** : Les variables d'environnement sont castées et validées (ex: Port en `number`, URL en format valide) via `class-validator`.
23
+ - **Fail Fast** : Si une variable d'environnement critique manque, le système crashe au démarrage plutôt qu'au moment de son utilisation, évitant des bugs de production silencieux.
24
+ - **Portabilité** : Utilisable nativement, sans dépendance d'injection de framework.
25
+
26
+ ## Exemple d'Utilisation
27
+
28
+ ### Définition de la Configuration
29
+
30
+ ```typescript
31
+ // definition.ts
32
+ import { IsString, IsNumber, IsUrl } from 'class-validator';
33
+
34
+ export class DatabaseConfig {
35
+ @IsUrl()
36
+ public readonly url!: string;
37
+
38
+ @IsNumber()
39
+ public readonly maxPoolSize: number = 10; // Default value
40
+ }
41
+
42
+ export class AppConfig {
43
+ @IsString()
44
+ public readonly environment!: string;
45
+
46
+ // Imbrication validée
47
+ public readonly database!: DatabaseConfig;
48
+ }
49
+ ```
50
+
51
+ ### Chargement au Démarrage (Bootstrap)
52
+
53
+ ```typescript
54
+ // main.ts
55
+ import { loadConfig } from '@volontariapp/config';
56
+ import { AppConfig } from './definition';
57
+
58
+ // Va lire process.env, hydrater la classe et la valider
59
+ const config = loadConfig(AppConfig);
60
+
61
+ console.log(config.database.url); // Typé correctement, garanti d'être une URL valide
62
+ ```
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@volontariapp/config",
3
- "version": "3.2.0",
3
+ "version": "3.2.1",
4
4
  "publishConfig": {
5
5
  "access": "public",
6
6
  "provenance": true
@@ -41,7 +41,7 @@
41
41
  "typescript": "5.7.3"
42
42
  },
43
43
  "dependencies": {
44
- "@volontariapp/logger": "0.2.5",
44
+ "@volontariapp/logger": "0.2.6",
45
45
  "class-transformer": "^0.5.1",
46
46
  "class-validator": "^0.15.1",
47
47
  "ioredis": "^5.10.1",