Skip to content

MIT LicenseTypeScriptnpm

Configuration management and environment handling for the ziegel platform. Provides type-safe configuration, environment variables, secrets management, and dynamic configuration updates for enterprise applications.

Configuration: Enterprise configuration management with type safety, environment handling, and secrets management.

🚀 Overview

@breadstone/ziegel-platform-configuration provides:

  • Type-Safe Configuration: Strongly typed configuration schemas
  • Environment Management: Multi-environment configuration handling
  • Secrets Management: Secure handling of sensitive configuration
  • Dynamic Updates: Runtime configuration updates and hot reloading
  • Validation: Configuration validation and schema enforcement
  • Providers: Multiple configuration sources (files, environment, remote)
  • Hierarchical Config: Configuration inheritance and overrides

📦 Installation

bash
npm install @breadstone/ziegel-platform-configuration
# or
yarn add @breadstone/ziegel-platform-configuration

🧩 Features & Usage Examples

Type-Safe Configuration

typescript
import { ConfigurationManager, ConfigSchema } from '@breadstone/ziegel-platform-configuration';

interface AppConfig {
  database: {
    host: string;
    port: number;
    name: string;
  };
  api: {
    baseUrl: string;
    timeout: number;
  };
  features: {
    enableLogging: boolean;
    maxRetries: number;
  };
}

const schema = new ConfigSchema<AppConfig>();
const config = new ConfigurationManager(schema);

// Get typed configuration
const dbHost = config.get('database.host'); // string
const apiTimeout = config.get('api.timeout'); // number

Environment-Based Configuration

typescript
import { EnvironmentProvider, ConfigurationBuilder } from '@breadstone/ziegel-platform-configuration';

const config = new ConfigurationBuilder()
  .addJsonFile('appsettings.json')
  .addJsonFile(`appsettings.${process.env.NODE_ENV}.json`, { optional: true })
  .addEnvironmentVariables()
  .build();

// Environment-specific values
const connectionString = config.get('database.connectionString');

Configuration Providers

typescript
import {
  JsonFileProvider,
  EnvironmentProvider,
  RemoteConfigProvider,
  CompositeProvider,
} from '@breadstone/ziegel-platform-configuration';

// Multiple configuration sources
const providers = new CompositeProvider([
  new JsonFileProvider('config/default.json'),
  new EnvironmentProvider({ prefix: 'APP_' }),
  new RemoteConfigProvider('https://config-service.com/api/config'),
]);

const config = new ConfigurationManager(providers);

Secrets Management

typescript
import { SecretsManager, VaultProvider } from '@breadstone/ziegel-platform-configuration';

const vaultProvider = new VaultProvider({
  endpoint: 'https://vault.company.com',
  token: process.env.VAULT_TOKEN,
});

const secrets = new SecretsManager(vaultProvider);

// Get secrets securely
const dbPassword = await secrets.get('database/password');
const apiKey = await secrets.get('external-services/api-key');

Dynamic Configuration

typescript
import { DynamicConfigManager, ConfigWatcher } from '@breadstone/ziegel-platform-configuration';

const dynamicConfig = new DynamicConfigManager();

// Watch for configuration changes
dynamicConfig.watch('feature-flags', (newValue) => {
  console.log('Feature flags updated:', newValue);
});

// Hot reload configuration
const watcher = new ConfigWatcher('config/');
watcher.onChange(() => {
  dynamicConfig.reload();
});

Configuration Validation

typescript
import { ConfigValidator, ValidationRule } from '@breadstone/ziegel-platform-configuration';

const validator = new ConfigValidator();

// Add validation rules
validator.addRule('database.port', ValidationRule.range(1, 65535));
validator.addRule('api.baseUrl', ValidationRule.url());
validator.addRule('features.maxRetries', ValidationRule.min(0));

// Validate configuration
const errors = validator.validate(config);
if (errors.length > 0) {
  throw new Error(`Configuration validation failed: ${errors.join(', ')}`);
}

Configuration Binding

typescript
import { ConfigurationBinder, bindConfiguration } from '@breadstone/ziegel-platform-configuration';

class DatabaseSettings {
  host!: string;
  port!: number;
  database!: string;
  username!: string;
  password!: string;
}

// Bind configuration to class
const dbSettings = new DatabaseSettings();
bindConfiguration('database', dbSettings, config);

// Or use decorator
class ApiSettings {
  @bindConfiguration('api.baseUrl')
  baseUrl!: string;

  @bindConfiguration('api.timeout')
  timeout!: number;
}

📚 Package import points

typescript
import {
  // Core Configuration
  ConfigurationManager,
  ConfigurationBuilder,
  ConfigSchema,

  // Providers
  JsonFileProvider,
  EnvironmentProvider,
  RemoteConfigProvider,
  CompositeProvider,

  // Secrets Management
  SecretsManager,
  VaultProvider,

  // Dynamic Configuration
  DynamicConfigManager,
  ConfigWatcher,

  // Validation
  ConfigValidator,
  ValidationRule,

  // Binding
  ConfigurationBinder,
  bindConfiguration,
} from '@breadstone/ziegel-platform-configuration';

📚 API Documentation

  • @breadstone/ziegel-platform: Core platform services
  • @breadstone/ziegel-core: Foundation utilities
  • @breadstone/ziegel-platform-logging: Logging configuration

License

MIT

Issues

Please report bugs and feature requests in the Issue Tracker


Part of the ziegel Enterprise TypeScript Framework

Released under the MIT License.