API TypeScript
Utilisez Sovrium comme bibliothèque dans votre projet TypeScript. Importez start, build et le type AppConfig pour un contrôle programmatique complet avec configuration typée.
import { start, build } from 'sovrium'
import type { AppConfig, SimpleServer } from 'sovrium'
// All config types are available:
// PageConfig, TableConfig, ThemeConfig, AuthConfig,
// ComponentConfig, LanguageConfig, AnalyticsConfig, ...
Pourquoi TypeScript ?
Utiliser Sovrium de manière programmatique offre des avantages au-delà de la CLI.
Sécurité des types
Le type AppConfig fournit l'autocomplétion pour chaque propriété et type de champ. Détectez les erreurs à la compilation.
Contrôle programmatique
Générez la configuration dynamiquement, composez des schémas et intégrez Sovrium dans des applications existantes.
Intégration IDE
IntelliSense complet dans VS Code et JetBrains — documentation au survol, aller à la définition et erreurs de type.
start(app, options?)
Démarre un serveur de développement à partir d'un objet de configuration typé. Retourne une instance serveur avec une méthode stop().
import { start } from 'sovrium'
const server = await start({
name: 'my-app',
})
console.log(`Server running at ${server.url}`)
StartOptions
Deuxième argument optionnel pour configurer le serveur.
import { start } from 'sovrium'
const server = await start(
{
name: 'my-app',
tables: [
{
id: 1,
name: 'tasks',
fields: [
{ id: 1, name: 'title', type: 'single-line-text', required: true },
{ id: 2, name: 'done', type: 'checkbox' },
],
},
],
},
{
port: 8080,
hostname: '0.0.0.0',
publicDir: './public',
}
)
build(app, options?)
Génère un site statique à partir d'un objet de configuration typé.
GenerateStaticOptions
Deuxième argument optionnel pour contrôler la sortie statique.
import { build } from 'sovrium'
await build(
{
name: 'my-site',
pages: [
{
name: 'home',
path: '/',
sections: [
{ type: 'heading', content: 'Welcome' },
{ type: 'paragraph', content: 'Built with Sovrium.' },
],
},
],
},
{
outputDir: './dist',
baseUrl: 'https://example.com',
deployment: 'github-pages',
generateSitemap: true,
generateRobotsTxt: true,
}
)
AppConfig
Le type principal pour typer vos objets de configuration JSON ou YAML. Importez-le depuis sovrium pour obtenir autocomplétion et vérification de types.
import type { AppConfig } from 'sovrium'
const config: AppConfig = {
name: 'my-app',
version: '1.0.0',
description: 'My application',
tables: [/* ... */],
theme: {/* ... */},
pages: [/* ... */],
auth: {/* ... */},
languages: {/* ... */},
components: [/* ... */],
analytics: true,
}
Complexité progressive
Seul name est requis. Ajoutez tables, theme, pages, auth, languages, components et analytics selon vos besoins.
Référence des types
Types TypeScript supplémentaires exportés par le package sovrium. Importez-les avec import type { ... } from "sovrium".
SimpleServer
Retourné par start(). Interface légère vers le serveur en cours d'exécution.
import { start } from 'sovrium'
import type { SimpleServer } from 'sovrium'
const server: SimpleServer = await start({ name: 'my-app' })
console.log(server.url) // "http://localhost:3000"
await server.stop() // graceful shutdown
PageConfig
Configuration d'une page. Élément de AppConfig['pages'].
const page: PageConfig = {
name: 'home',
path: '/',
sections: [{ type: 'heading', content: 'Welcome' }],
}
TableConfig
Configuration d'une table de données. Élément de AppConfig['tables'].
const table: TableConfig = {
id: 1,
name: 'tasks',
fields: [{ id: 1, name: 'title', type: 'single-line-text' }],
}
ComponentConfig
Modèle de composant réutilisable avec variables. Élément de AppConfig['components'].
const hero: ComponentConfig = {
name: 'hero',
type: 'section',
children: [{ type: 'heading', content: '$title' }],
}
ThemeConfig
Jetons de design pour les couleurs, la typographie, l'espacement et les ombres.
const theme: ThemeConfig = {
colors: { primary: '#3b82f6' },
fonts: { sans: 'Inter, sans-serif' },
}
AuthConfig
Stratégies d'authentification, rôles et plugins.
const auth: AuthConfig = {
strategies: [{ type: 'email-password' }],
roles: ['admin', 'member'],
}
LanguageConfig
Support multilingue avec traductions et détection de langue.
const languages: LanguageConfig = {
supported: ['en', 'fr'],
default: 'en',
}
AnalyticsConfig
Analytics intégrés et respectueux de la vie privée. Utilisez true pour les valeurs par défaut ou un objet pour personnaliser.
// Simple: just enable defaults
const analytics: AnalyticsConfig = true
// Custom settings
const custom: AnalyticsConfig = { retentionDays: 90, excludedPaths: ['/admin'] }
GenerateStaticResult
Retourné par build(). Contient le chemin du répertoire de sortie et la liste des fichiers générés.
import { build } from 'sovrium'
import type { GenerateStaticResult } from 'sovrium'
const result: GenerateStaticResult = await build({ name: 'my-site', pages: [/* ... */] })
console.log(result.outputDir) // "./static"
console.log(result.files.length) // number of generated files
Mode surveillance
En développement, utilisez le mode surveillance intégré de Bun pour redémarrer automatiquement votre script.
bun --watch index.ts
Rechargement vs surveillance
bun --watch redémarre tout le processus quand un fichier importé change. Pour les changements de configuration uniquement, le --watch de la CLI est plus efficace.
Exemples
Cas d'utilisation courants avec Sovrium en TypeScript.
Serveur minimal
import { start } from 'sovrium'
const server = await start({
name: 'my-app',
})
console.log(`Server running at ${server.url}`)
Avec des tables de données
import { start } from 'sovrium'
const server = await start(
{
name: 'my-app',
tables: [
{
id: 1,
name: 'tasks',
fields: [
{ id: 1, name: 'title', type: 'single-line-text', required: true },
{ id: 2, name: 'done', type: 'checkbox' },
],
},
],
},
{
port: 8080,
hostname: '0.0.0.0',
publicDir: './public',
}
)
Génération de site statique
import { build } from 'sovrium'
await build(
{
name: 'my-site',
pages: [
{
name: 'home',
path: '/',
sections: [
{ type: 'heading', content: 'Welcome' },
{ type: 'paragraph', content: 'Built with Sovrium.' },
],
},
],
},
{
outputDir: './dist',
baseUrl: 'https://example.com',
deployment: 'github-pages',
generateSitemap: true,
generateRobotsTxt: true,
}
)
Configuration dynamique
import { start } from 'sovrium'
import type { AppConfig, PageConfig, TableConfig, ThemeConfig } from 'sovrium'
// Compose config from typed sub-configs
const theme: ThemeConfig = {
colors: { primary: process.env.BRAND_COLOR ?? '#3b82f6' },
}
const tables: TableConfig[] = ['users', 'posts'].map((name, i) => ({
id: i + 1,
name,
fields: [
{ id: 1, name: 'title', type: 'single-line-text' as const, required: true },
{ id: 2, name: 'created_at', type: 'datetime' as const },
],
}))
const pages: PageConfig[] = [{ name: 'home', path: '/', sections: [] }]
const app: AppConfig = {
name: 'dynamic-app',
tables,
pages,
theme,
}
await start(app)