Validation et génération de schéma
Deux fonctions couvrent la moitié hors-ligne de l'API : vérifier une configuration sans rien démarrer, et émettre le JSON Schema qui décrit toutes les configurations.
validateConfig(config)
Décode une valeur inconnue face à AppSchema. La fonction ne lève jamais : une configuration invalide revient sous forme de données, ce qui permet de signaler plusieurs problèmes d'un coup au lieu de mourir sur le premier.
import { validateConfig } from 'sovrium'
const result = validateConfig({ name: 'My App' })
if (result.valid) {
console.log(result.config.name)
} else {
result.errors.forEach((error) => console.error(error))
}
ValidateConfigResult
Le résultat est une union discriminée, pas un enregistrement à champs optionnels. Affinez sur valid avant de lire quoi que ce soit d'autre — TypeScript ne vous laissera pas faire autrement.
| Quand | Forme |
|---|---|
valid: true |
{ valid: true, config: AppConfig } |
valid: false |
{ valid: false, errors: readonly string[] } |
errors contient des chaînes de caractères, une par ligne de l'arbre de décodage formaté, chacune nommant le chemin en échec et sa raison. Sur la branche de succès, la propriété errors n'existe pas du tout ; sur la branche d'échec, config non plus.
import { validateConfig } from 'sovrium'
const untrusted: unknown = JSON.parse(await Bun.file('app.json').text())
const result = validateConfig(untrusted)
if (!result.valid) {
console.error(`Invalid config:\n${result.errors.join('\n')}`)
process.exit(1)
}
// `result.config` est un AppConfig ici, et seulement ici.
console.log(`Validated ${result.config.name}`)
Plus permissif que sovrium validate. validateConfig exécute le même AppSchema que celui décodé au démarrage : propriétés obligatoires, membres d'énumération et erreurs de forme sont donc tous détectés. Deux choses qu'il ne fait pas : il tolère les propriétés supplémentaires non reconnues (le CLI, lui, les rejette), et il saute le balayage des types de champ inconnus. Voyez-le comme le garde-fou en mémoire, et sovrium validate comme la barrière avant déploiement.
generateAppJsonSchema()
Produit le JSON Schema (Draft-07) de la configuration d'application sous forme d'objet simple — le même document qu'affiche sovrium schema.
import { generateAppJsonSchema } from 'sovrium'
const schema = generateAppJsonSchema()
await Bun.write('app.schema.json', JSON.stringify(schema, null, 2))
Elle ne prend aucun argument et ne lit rien de l'environnement : le schéma est dérivé d'AppSchema lui-même, sa sortie ne dépend donc que de la version de Sovrium. On peut ainsi le régénérer en CI et comparer les différences — un changement dans le fichier est un changement du schéma, jamais de la machine.
Un usage courant consiste à figer le schéma à côté de la configuration, pour que les éditeurs valident face à la version exacte que vous déployez :
// scripts/sync-schema.ts — à exécuter après chaque montée de version
import { generateAppJsonSchema } from 'sovrium'
await Bun.write('app.schema.json', JSON.stringify(generateAppJsonSchema(), null, 2))
# app.yaml
# yaml-language-server: $schema=./app.schema.json
name: my-app
Pages associées
- Aperçu de l'API TypeScript —
AppConfiget les autres fonctions. - Valider une configuration — le vérificateur du CLI et ses balayages supplémentaires.
- Schéma JSON — les URLs du schéma hébergé.
- Configuration de l'éditeur — y brancher VS Code ou JetBrains.
Dernière mise à jour 27 juillet 2026
Cette documentation a été rédigée avec de l'IA : des erreurs ou du contenu obsolète sont donc possibles. Sovrium est en bêta — les contributions et corrections sont les bienvenues.