65 lines
3.7 KiB
Markdown
65 lines
3.7 KiB
Markdown
<!-- file: ks-config/README.md -->
|
|
<!-- version: 10 -->
|
|
|
|
# ks-config
|
|
|
|
`ks-config` fournit les contrats de configuration généralistes Khadhroony Solana, les chargeurs des documents spécialisés et la résolution des compositions facultatives utilisées par les binaires.
|
|
|
|
## Responsabilités
|
|
|
|
- charger l'environnement du workspace et résoudre les placeholders `${KS_*}` / `${KB_*}` ;
|
|
- valider les documents transport, listeners, store, wallet, execution et composition contre leurs schémas sous `config/schemas/` ;
|
|
- fournir les types partagés d'endpoints, listeners, stockage, wallet, exécution et profils runtime ;
|
|
- résoudre les defaults de chaque document ou les overrides d'une composition ;
|
|
- refuser une référence de fichier ou de profil inexistante ;
|
|
- reconstruire temporairement `AppConfig/ProfileConfig` pour les consommateurs existants ;
|
|
- rester indépendant de la liste des applications et workers futurs.
|
|
|
|
## Defaults et composition
|
|
|
|
Chaque document partagé possède un `default_profile`. Un consommateur qui accepte les defaults n'a pas besoin de composition dédiée.
|
|
|
|
Le desktop possède `config/kb-app-demo-desktop.default.config.json` parce qu'il sélectionne des combinaisons propres à l'application. `ks-pipeline-demo-scenarios` utilise directement les defaults partagés ; `KS_DEVNET_CONFIG_PATH` permet encore un override explicite lorsque nécessaire.
|
|
|
|
Un futur worker pourra ajouter son propre `<binary>.default.config.json` uniquement s'il doit remplacer des fichiers/profils ou ajouter des paramètres propres au binaire.
|
|
|
|
## 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/store.config.json` / `config/schemas/store.config.schema.json` ;
|
|
- `config/wallet.config.json` / `config/schemas/wallet.config.schema.json` ;
|
|
- `config/execution.config.json` / `config/schemas/execution.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 valeurs globales telles que `logs_directory` et `wallets_directory` ne sont pas des propriétés de profils.
|
|
|
|
## API publique principale
|
|
|
|
- `read_composed_app_config_with_environment` ;
|
|
- `read_default_shared_app_config_with_environment` ;
|
|
- `parse_composition_json`, `composition_profile`, `active_composition_profile` ;
|
|
- `read_transport_json_file_with_environment`, `transport_profile`, `default_transport_profile` ;
|
|
- `read_listeners_json_file_with_environment`, `listeners_profile`, `default_listeners_profile` ;
|
|
- `read_store_json_file_with_environment`, `store_profile`, `default_store_profile` ;
|
|
- `read_wallet_json_file_with_environment`, `wallet_profile`, `default_wallet_profile` ;
|
|
- `read_execution_json_file_with_environment`, `execution_profile`, `default_execution_profile` ;
|
|
- `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`.
|
|
|
|
Les dérivations TS-RS des types de `ks-config` sont encore présentes pendant `pre.007`, mais elles ne sont pas considérées comme une frontière durable. L'audit montre que le frontend desktop n'importe pas directement ces bindings ; leur suppression ou réduction est prévue avec les DTO publics sûrs de la prochaine prerelease.
|
|
|
|
## Documents
|
|
|
|
- [Utilisation](USAGE.md)
|
|
- [Travaux restants](TODO.md)
|
|
- [Historique](CHANGELOG.md)
|
|
- [Configuration locale](../config/README.md)
|