64 lines
2.8 KiB
Markdown
64 lines
2.8 KiB
Markdown
<!-- file: ks-config/README.md -->
|
|
<!-- version: 9 -->
|
|
|
|
# ks-config
|
|
|
|
`ks-config` fournit les contrats de configuration généralistes Khadhroony Solana, les chargeurs de documents spécialisés et la résolution des compositions utilisées par les binaires.
|
|
|
|
## Responsabilités
|
|
|
|
- charger l'environnement du workspace et résoudre les placeholders `${KS_*}` / `${KB_*}` ;
|
|
- valider les documents transport, listeners et composition contre leurs schémas sous `config/schemas/` ;
|
|
- fournir les types partagés d'endpoints, listeners et profils runtime ;
|
|
- résoudre les références d'une composition vers des profils transport/listeners ;
|
|
- reconstruire temporairement `AppConfig/ProfileConfig` pour les consommateurs existants ;
|
|
- rester indépendant de la liste des applications et workers futurs.
|
|
|
|
## Composition
|
|
|
|
Le desktop possède `config/kb-app-demo-desktop.default.config.json`. Le CLI des scénarios possède `config/ks-pipeline-demo-scenarios.default.config.json`.
|
|
|
|
Une composition choisit :
|
|
|
|
- les documents partagés à charger ;
|
|
- le profil logging ;
|
|
- le profil transport ;
|
|
- le profil listeners ;
|
|
- temporairement les sections encore non séparées.
|
|
|
|
Un futur worker pourra donc ajouter son propre `<binary>.default.config.json` sans créer une branche spécifique dans `ks-config`.
|
|
|
|
## Documents spécialisés actuels
|
|
|
|
- `config/transport.config.json` / `config/schemas/transport.config.schema.json` ;
|
|
- `config/listeners.config.json` / `config/schemas/listeners.config.schema.json` ;
|
|
- `config/logging.config.json` reste possédé par `ks-logging` ;
|
|
- `config/schemas/resolved.app.config.schema.json` décrit uniquement le contrat runtime transitoire.
|
|
|
|
Les anciens `config/app.config.json` et `config/example.app.config.json` ne sont plus des fichiers runtime.
|
|
|
|
## API publique principale
|
|
|
|
- `read_composed_app_config_with_environment` ;
|
|
- `parse_composition_json`, `composition_profile`, `active_composition_profile` ;
|
|
- `read_transport_json_file_with_environment`, `transport_profile` ;
|
|
- `read_listeners_json_file_with_environment`, `listeners_profile` ;
|
|
- `compose_app_config` ;
|
|
- `load_workspace_environment`, `resolve_environment_placeholders` ;
|
|
- `AppConfig`, `ProfileConfig` pendant la phase de compatibilité.
|
|
|
|
## Frontières
|
|
|
|
`ks-logging` dépend de `ks-config` pour les helpers d'environnement, mais `ks-config` ne possède aucun type logging runtime.
|
|
|
|
`ks-onchain-transport` peut consommer directement `TransportProfileConfig`. Un worker n'a donc pas besoin d'un profil applicatif complet pour construire ses pools réseau.
|
|
|
|
Les sections database/data, wallet, execution et demo restent transitoires dans la composition jusqu'au split suivant.
|
|
|
|
## Documents
|
|
|
|
- [Utilisation](USAGE.md)
|
|
- [Travaux restants](TODO.md)
|
|
- [Historique](CHANGELOG.md)
|
|
- [Configuration locale](../config/README.md)
|