{"_id":"@dbs-portal/core-config","name":"@dbs-portal/core-config","dist-tags":{"latest":"1.0.0"},"versions":{"1.0.0":{"name":"@dbs-portal/core-config","version":"1.0.0","description":"Advanced configuration management for DBS Portal with convict schema validation and deepmerge support","type":"module","main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"},"./types":{"import":"./dist/types.js","types":"./dist/types.d.ts"},"./schemas":{"import":"./dist/schemas.js","types":"./dist/schemas.d.ts"},"./providers":{"import":"./dist/providers.js","types":"./dist/providers.d.ts"},"./validators":{"import":"./dist/validators.js","types":"./dist/validators.d.ts"},"./managers":{"import":"./dist/managers.js","types":"./dist/managers.d.ts"},"./defaults":{"import":"./dist/defaults.js","types":"./dist/defaults.d.ts"}},"scripts":{"build":"tsc && vite build","dev":"tsc --watch","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","lint":"biome lint src","format":"biome format src --write","type-check":"tsc --noEmit","clean":"rm -rf dist","migrate-build-config":"node ../../tools/build/scripts/migrate-package.mjs","verify-build-config":"node ../../tools/build/scripts/verify-build-config.mjs"},"dependencies":{"@auth/core":"^0.40.0","@casl/ability":"^6.7.3","@dbs-portal/core-shared":"1.0.0","convict":"^6.2.4","convict-format-with-moment":"^6.2.0","convict-format-with-validator":"^6.2.0","deepmerge":"^4.3.1","jose":"^6.0.12"},"devDependencies":{"@biomejs/biome":"1.9.4","@dbs-portal/tool-build":"1.0.0","@dbs-portal/tool-testing":"1.0.0","@dbs-portal/tool-tsconfig":"1.0.0","@types/node":"^22.10.2","typescript":"^5.7.2","vite":"^6.1.0","vitest":"^3.0.5"},"keywords":["configuration","config","environment","settings","convict","validation","schema","deepmerge","typescript","dbs-portal"],"author":{"name":"DBS Portal Team"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/your-org/dbs-portal.git","directory":"packages/core/config"},"bugs":{"url":"https://github.com/your-org/dbs-portal/issues"},"homepage":"https://github.com/your-org/dbs-portal#readme","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_id":"@dbs-portal/core-config@1.0.0","gitHead":"61a23904a481b624f3e8ed7abb6c944ecfeaca7b","_nodeVersion":"20.19.0","_npmVersion":"10.8.2","dist":{"integrity":"sha512-FgrWGfpceQNzgsNCG2XuXkydzEYyFC3DHfaVBL4X1GDJbOPpol7khQdiYYZCaAyq27T5WiCRd31clbudITxQ5w==","shasum":"f74c44d38dca1d98aff8d4ef186b6a36f93ee5e9","tarball":"https://registry.npmjs.org/@dbs-portal/core-config/-/core-config-1.0.0.tgz","fileCount":6,"unpackedSize":920871,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDcg/8D4nEw0vQvGBDPVNI0k8mBz+lp2D2zvPq5bROo7gIhAO+Ql2p4M3DFvh/60q6uBooaagyljI2bXPTRhYX3tOtf"}]},"_npmUser":{"name":"longvq","email":"vqlong1604@gmail.com"},"directories":{},"maintainers":[{"name":"longvq","email":"vqlong1604@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/core-config_1.0.0_1754218655799_0.200256750300986"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-03T10:57:35.670Z","1.0.0":"2025-08-03T10:57:36.019Z","modified":"2025-08-03T10:57:36.328Z"},"maintainers":[{"name":"longvq","email":"vqlong1604@gmail.com"}],"description":"Advanced configuration management for DBS Portal with convict schema validation and deepmerge support","homepage":"https://github.com/your-org/dbs-portal#readme","keywords":["configuration","config","environment","settings","convict","validation","schema","deepmerge","typescript","dbs-portal"],"repository":{"type":"git","url":"git+https://github.com/your-org/dbs-portal.git","directory":"packages/core/config"},"author":{"name":"DBS Portal Team"},"bugs":{"url":"https://github.com/your-org/dbs-portal/issues"},"license":"MIT","readme":"# @dbs-portal/core-config\n\nAdvanced configuration management for DBS Portal with convict schema validation and deepmerge support.\n\n## Features\n\n- 🔒 **Type-safe configuration** with TypeScript support\n- ✅ **Schema validation** using convict for robust configuration validation\n- 🔄 **Intelligent merging** with deepmerge for complex configuration scenarios\n- 🌍 **Multiple providers** for loading configuration from various sources\n- 🔧 **Environment-specific** configurations with validation\n- 📦 **Modular architecture** with clean separation of concerns\n- 🧪 **Comprehensive testing** with full test coverage\n\n## Installation\n\n```bash\nyarn add @dbs-portal/core-config\n```\n\n## Quick Start\n\n```typescript\nimport { ConfigManager, EnhancedObjectProvider, ConvictValidator } from '@dbs-portal/core-config'\n\n// Create configuration providers\nconst defaultProvider = EnhancedObjectProvider.development()\nconst envProvider = EnhancedEnvironmentProvider.withValidation()\n\n// Create configuration manager\nconst configManager = new ConfigManager({\n  providers: [defaultProvider, envProvider],\n  validators: [new ConvictValidator()],\n  validateOnLoad: true,\n  mergeStrategy: 'deep'\n})\n\n// Load and validate configuration\nconst config = await configManager.load()\nconsole.log('Configuration loaded:', config)\n```\n\n## Core Components\n\n### Convict Schema Validation\n\nThe package uses convict for robust schema validation with custom formats:\n\n```typescript\nimport { loadAndValidateConfig, getValidatedConfig } from '@dbs-portal/core-config/schemas'\n\n// Load and validate configuration\nconst config = loadAndValidateConfig({\n  env: 'production',\n  port: 8080,\n  database: {\n    host: 'prod-db.example.com',\n    port: 5432\n  }\n})\n\n// Get default validated configuration\nconst defaults = getValidatedConfig()\n```\n\n### Enhanced Providers\n\n#### EnhancedEnvironmentProvider\n\nComprehensive environment variable mapping with type coercion:\n\n```typescript\nimport { EnhancedEnvironmentProvider } from '@dbs-portal/core-config/providers'\n\n// With validation enabled\nconst envProvider = EnhancedEnvironmentProvider.withValidation({\n  prefix: 'APP',\n  typeCoercion: true\n})\n\n// For Docker environments\nconst dockerProvider = EnhancedEnvironmentProvider.forDocker()\n\n// For Kubernetes environments\nconst k8sProvider = EnhancedEnvironmentProvider.forKubernetes()\n```\n\n#### EnhancedObjectProvider\n\nObject-based provider with deep cloning and validation:\n\n```typescript\nimport { EnhancedObjectProvider } from '@dbs-portal/core-config/providers'\n\n// Environment-specific providers\nconst devProvider = EnhancedObjectProvider.development()\nconst prodProvider = EnhancedObjectProvider.production()\nconst testProvider = EnhancedObjectProvider.testing()\n\n// Custom configuration with validation\nconst customProvider = EnhancedObjectProvider.from({\n  name: 'Custom App',\n  port: 4000\n}, {\n  validateWithConvict: true,\n  mergeWithDefaults: true\n})\n```\n\n### ConvictValidator\n\nDedicated validator using convict schema:\n\n```typescript\nimport { ConvictValidator } from '@dbs-portal/core-config/validators'\n\nconst validator = new ConvictValidator()\n\n// Validate configuration\nconst result = validator.validate(config)\nif (!result.isValid) {\n  console.error('Validation errors:', result.errors)\n}\n\n// Validate specific path\nconst pathResult = validator.validatePath(config, 'database.host')\n\n// Get schema defaults\nconst defaults = validator.getDefaults()\n```\n\n### Configuration Manager with Deepmerge\n\nThe ConfigManager uses deepmerge for intelligent configuration merging:\n\n```typescript\nimport { ConfigManager } from '@dbs-portal/core-config/managers'\n\nconst manager = new ConfigManager({\n  providers: [baseProvider, overrideProvider],\n  mergeStrategy: 'deep', // or 'shallow'\n  validateOnLoad: true,\n  validateOnChange: true\n})\n\n// Arrays are replaced, not concatenated\n// Objects are deeply merged\nconst config = await manager.load()\n```\n\n## Environment-Specific Configurations\n\n```typescript\nimport { \n  createDevelopmentConfig,\n  createProductionConfig,\n  createStagingConfig,\n  createTestConfig,\n  getConfigForEnvironment\n} from '@dbs-portal/core-config/defaults'\n\n// Get configuration for specific environment\nconst devConfig = createDevelopmentConfig()\nconst prodConfig = createProductionConfig()\n\n// Get configuration based on NODE_ENV\nconst config = getConfigForEnvironment(process.env.NODE_ENV as Environment)\n```\n\n## Configuration Schema\n\nThe package includes a comprehensive convict schema covering:\n\n- **Application settings** (name, version, port, host)\n- **Logging configuration** (level, format, file rotation)\n- **Database settings** (connection, pooling, timeouts)\n- **Authentication** (JWT, sessions, bcrypt)\n- **API configuration** (timeouts, retries, CORS)\n- **Storage providers** (local, S3, Azure, GCP)\n- **Email providers** (SMTP, SendGrid, Mailgun)\n- **Monitoring** (Sentry, Prometheus, health checks)\n- **Feature flags** (LaunchDarkly, local flags)\n\n## Validation Features\n\n- **Type validation** with custom formats\n- **Environment validation** (development, staging, production, test)\n- **Port validation** with proper ranges\n- **URL validation** for API endpoints\n- **Email validation** for email addresses\n- **Positive integer validation** for counts and timeouts\n- **Required string validation** for critical fields\n\n## Testing\n\nThe package includes comprehensive tests covering:\n\n```bash\n# Run tests\nyarn test\n\n# Run tests with coverage\nyarn test:coverage\n\n# Run tests in watch mode\nyarn test:watch\n```\n\n## TypeScript Support\n\nFull TypeScript support with proper type definitions:\n\n```typescript\nimport type { AppConfig, Environment, ConfigProvider } from '@dbs-portal/core-config/types'\n\n// Type-safe configuration access\nconst config: Partial<AppConfig> = await configManager.load()\nconst dbHost: string = config.database?.host ?? 'localhost'\n```\n\n## Package Exports\n\nThe package provides multiple entry points:\n\n- `@dbs-portal/core-config` - Main entry point\n- `@dbs-portal/core-config/types` - Type definitions\n- `@dbs-portal/core-config/schemas` - Convict schemas\n- `@dbs-portal/core-config/providers` - Configuration providers\n- `@dbs-portal/core-config/validators` - Validation utilities\n- `@dbs-portal/core-config/managers` - Configuration managers\n- `@dbs-portal/core-config/defaults` - Default configurations\n\n## Migration from Previous Version\n\nThe package maintains backward compatibility while adding new features:\n\n```typescript\n// Old usage still works\nimport { ConfigManager, ObjectProvider } from '@dbs-portal/core-config'\n\n// New enhanced usage\nimport { ConfigManager, EnhancedObjectProvider, ConvictValidator } from '@dbs-portal/core-config'\n```\n\n## License\n\nMIT\n","readmeFilename":"README.md","_rev":"1-7ac463ea763b06f687f2c13d80febf7f"}