@volontariapp/config 3.2.0 → 3.2.2
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 +16 -0
- package/README.md +62 -0
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,21 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.2.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies []:
|
|
8
|
+
- @volontariapp/logger@0.2.7
|
|
9
|
+
|
|
10
|
+
## 3.2.1
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- README bump
|
|
15
|
+
|
|
16
|
+
- Updated dependencies []:
|
|
17
|
+
- @volontariapp/logger@0.2.6
|
|
18
|
+
|
|
3
19
|
## 3.2.0
|
|
4
20
|
|
|
5
21
|
### 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.
|
|
3
|
+
"version": "3.2.2",
|
|
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.
|
|
44
|
+
"@volontariapp/logger": "0.2.7",
|
|
45
45
|
"class-transformer": "^0.5.1",
|
|
46
46
|
"class-validator": "^0.15.1",
|
|
47
47
|
"ioredis": "^5.10.1",
|