@bemoje/config
v1.1.3
Published
Configuration file management with JSON persistence and TypeBox schema validation.
Maintainers
Readme
@bemoje/config
Configuration file management with JSON persistence and TypeBox schema validation.
Installation
npm install @bemoje/configFeatures
- Schema-validated configuration with TypeBox
- Automatic default value merging
- JSON file persistence strategy
- Singleton pattern per filepath
- Strategy-based architecture for extensibility
Usage
Basic Configuration
import { ConfigFile } from '@bemoje/config'
import { Type } from '@sinclair/typebox'
const schema = Type.Object({
port: Type.Number({ default: 3000 }),
host: Type.String({ default: 'localhost' }),
debug: Type.Boolean({ default: false }),
})
const config = new ConfigFile(schema, './config.json')
// Load config (creates file with defaults if it doesn't exist)
const data = config.load()
// => { port: 3000, host: 'localhost', debug: false }
// Update config
config.update((current) => ({ ...current, port: 8080, debug: true }))Custom Strategies
The architecture uses the Strategy pattern for data I/O and validation:
import { JsonFileStrategy } from '@bemoje/config'
// JSON file strategy handles read/write
const dataStrategy = new JsonFileStrategy<MyConfig>('./config.json')
dataStrategy.load() // => parsed JSON or undefined
dataStrategy.save({ port: 3000 })import { SchemaConfigStrategy } from '@bemoje/config'
import { Type } from '@sinclair/typebox'
const schema = Type.Object({ name: Type.String(), version: Type.String({ default: '1.0.0' }) })
const validation = new SchemaConfigStrategy(schema)
// Validate data
validation.isValid({ name: 'app', version: '2.0.0' }) // => true
// Apply defaults to partial data
validation.applyDefaults({ name: 'app' })
// => { name: 'app', version: '1.0.0' }API Reference
| Export | Description |
| -------------------------- | -------------------------------------------------------------------------------------- |
| ConfigFile | Main config class with singleton per filepath, schema validation, and JSON persistence |
| JsonFileStrategy | Strategy for reading/writing JSON config files |
| SchemaConfigStrategy | Strategy for TypeBox schema validation with default merging |
| ConfigDataStrategy | Interface for data serialization strategies |
| ConfigValidationStrategy | Interface for validation strategies |
