@siriux/config 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,29 @@
1
+ import { SiriuxConfig, ValidationResult, ConfigLoaderOptions } from './types';
2
+ export declare class ConfigManager {
3
+ private options;
4
+ private config;
5
+ private validationErrors;
6
+ private validationWarnings;
7
+ constructor(options?: ConfigLoaderOptions);
8
+ load(): SiriuxConfig;
9
+ get<T = any>(path: string): T;
10
+ validate(): ValidationResult;
11
+ reload(): SiriuxConfig;
12
+ private loadEnvironment;
13
+ private buildConfig;
14
+ private buildAppConfig;
15
+ private buildServerConfig;
16
+ private buildDatabaseConfig;
17
+ private buildRedisConfig;
18
+ private buildEmailConfig;
19
+ private buildStorageConfig;
20
+ private buildAuthConfig;
21
+ private buildLoggingConfig;
22
+ private buildFeatureFlags;
23
+ private getConfigSchema;
24
+ private getNestedValue;
25
+ }
26
+ export declare const config: ConfigManager;
27
+ export declare function createConfig(options?: ConfigLoaderOptions): ConfigManager;
28
+ export declare function loadConfig(options?: ConfigLoaderOptions): SiriuxConfig;
29
+ //# sourceMappingURL=ConfigManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigManager.d.ts","sourceRoot":"","sources":["../src/ConfigManager.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,YAAY,EAEZ,gBAAgB,EAChB,mBAAmB,EAOpB,MAAM,SAAS,CAAC;AAEjB,qBAAa,aAAa;IAKZ,OAAO,CAAC,OAAO;IAJ3B,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,gBAAgB,CAAgB;IACxC,OAAO,CAAC,kBAAkB,CAAgB;gBAEtB,OAAO,GAAE,mBAAwB;IAKrD,IAAI,IAAI,YAAY;IAkBpB,GAAG,CAAC,CAAC,GAAG,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC;IAM7B,QAAQ,IAAI,gBAAgB;IAsB5B,MAAM,IAAI,YAAY;IAQtB,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,WAAW;IAiBnB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,mBAAmB;IAiB3B,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,gBAAgB;IAuDxB,OAAO,CAAC,kBAAkB;IA4B1B,OAAO,CAAC,eAAe;IAqBvB,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,iBAAiB;IAmBzB,OAAO,CAAC,eAAe;IA+FvB,OAAO,CAAC,cAAc;CAGvB;AAGD,eAAO,MAAM,MAAM,eAAsB,CAAC;AAG1C,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,aAAa,CAEzE;AAED,wBAAgB,UAAU,CAAC,OAAO,CAAC,EAAE,mBAAmB,GAAG,YAAY,CAEtE"}
@@ -0,0 +1,366 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.config = exports.ConfigManager = void 0;
7
+ exports.createConfig = createConfig;
8
+ exports.loadConfig = loadConfig;
9
+ const joi_1 = __importDefault(require("joi"));
10
+ const dotenv_1 = __importDefault(require("dotenv"));
11
+ const path_1 = __importDefault(require("path"));
12
+ class ConfigManager {
13
+ constructor(options = {}) {
14
+ this.options = options;
15
+ this.config = null;
16
+ this.validationErrors = [];
17
+ this.validationWarnings = [];
18
+ this.loadEnvironment();
19
+ }
20
+ // Load configuration
21
+ load() {
22
+ if (this.config) {
23
+ return this.config;
24
+ }
25
+ this.config = this.buildConfig();
26
+ if (this.options.validate !== false) {
27
+ const validation = this.validate();
28
+ if (!validation.valid) {
29
+ throw new Error(`Configuration validation failed:\n${validation.errors.join('\n')}`);
30
+ }
31
+ }
32
+ return this.config;
33
+ }
34
+ // Get configuration value by path
35
+ get(path) {
36
+ const config = this.load();
37
+ return this.getNestedValue(config, path);
38
+ }
39
+ // Validate configuration
40
+ validate() {
41
+ if (!this.config) {
42
+ return { valid: false, errors: ['Configuration not loaded'], warnings: [] };
43
+ }
44
+ const schema = this.getConfigSchema();
45
+ const { error, warning } = schema.validate(this.config, {
46
+ allowUnknown: true,
47
+ stripUnknown: true
48
+ });
49
+ this.validationErrors = error ? error.details.map(d => d.message) : [];
50
+ this.validationWarnings = warning ? warning.details.map(d => d.message) : [];
51
+ return {
52
+ valid: this.validationErrors.length === 0,
53
+ errors: this.validationErrors,
54
+ warnings: this.validationWarnings
55
+ };
56
+ }
57
+ // Reload configuration
58
+ reload() {
59
+ this.config = null;
60
+ this.validationErrors = [];
61
+ this.validationWarnings = [];
62
+ return this.load();
63
+ }
64
+ // Private methods
65
+ loadEnvironment() {
66
+ const envFile = this.options.envFile || '.env';
67
+ const envPath = path_1.default.resolve(process.cwd(), envFile);
68
+ dotenv_1.default.config({ path: envPath });
69
+ }
70
+ buildConfig() {
71
+ const env = process.env;
72
+ return {
73
+ app: this.buildAppConfig(env),
74
+ server: this.buildServerConfig(env),
75
+ database: this.buildDatabaseConfig(env),
76
+ redis: this.buildRedisConfig(env),
77
+ email: this.buildEmailConfig(env),
78
+ storage: this.buildStorageConfig(env),
79
+ auth: this.buildAuthConfig(env),
80
+ logging: this.buildLoggingConfig(env),
81
+ features: this.buildFeatureFlags(env),
82
+ ...this.options.override
83
+ };
84
+ }
85
+ buildAppConfig(env) {
86
+ return {
87
+ name: env.APP_NAME || 'Siriux App',
88
+ version: env.APP_VERSION || '1.0.0',
89
+ environment: env.NODE_ENV || 'development',
90
+ url: env.APP_URL || 'http://localhost:3000',
91
+ supportEmail: env.SUPPORT_EMAIL || 'support@example.com',
92
+ timezone: env.TIMEZONE || 'UTC',
93
+ currency: env.CURRENCY || 'USD',
94
+ locale: env.LOCALE || 'en-US'
95
+ };
96
+ }
97
+ buildServerConfig(env) {
98
+ return {
99
+ port: parseInt(env.PORT || '3000'),
100
+ host: env.HOST || 'localhost',
101
+ cors: {
102
+ origin: env.CORS_ORIGIN ? env.CORS_ORIGIN.split(',') : ['http://localhost:3000'],
103
+ credentials: env.CORS_CREDENTIALS === 'true'
104
+ },
105
+ rateLimit: env.RATE_LIMIT_WINDOW_MS && env.RATE_LIMIT_MAX ? {
106
+ windowMs: parseInt(env.RATE_LIMIT_WINDOW_MS),
107
+ max: parseInt(env.RATE_LIMIT_MAX)
108
+ } : undefined,
109
+ compression: env.COMPRESSION !== 'false',
110
+ helmet: env.HELMET !== 'false'
111
+ };
112
+ }
113
+ buildDatabaseConfig(env) {
114
+ return {
115
+ type: env.DB_TYPE || 'postgresql',
116
+ host: env.DB_HOST || 'localhost',
117
+ port: parseInt(env.DB_PORT || '5432'),
118
+ database: env.DB_NAME || 'siriux',
119
+ username: env.DB_USERNAME,
120
+ password: env.DB_PASSWORD,
121
+ ssl: env.DB_SSL === 'true',
122
+ pool: {
123
+ min: parseInt(env.DB_POOL_MIN || '2'),
124
+ max: parseInt(env.DB_POOL_MAX || '10'),
125
+ idle: parseInt(env.DB_POOL_IDLE || '10000')
126
+ }
127
+ };
128
+ }
129
+ buildRedisConfig(env) {
130
+ if (!env.REDIS_HOST)
131
+ return undefined;
132
+ return {
133
+ host: env.REDIS_HOST,
134
+ port: parseInt(env.REDIS_PORT || '6379'),
135
+ password: env.REDIS_PASSWORD,
136
+ db: parseInt(env.REDIS_DB || '0'),
137
+ keyPrefix: env.REDIS_KEY_PREFIX || 'siriux:'
138
+ };
139
+ }
140
+ buildEmailConfig(env) {
141
+ if (!env.EMAIL_PROVIDER)
142
+ return undefined;
143
+ const baseConfig = {
144
+ from: {
145
+ email: env.EMAIL_FROM_EMAIL || 'noreply@example.com',
146
+ name: env.EMAIL_FROM_NAME || 'Siriux App'
147
+ },
148
+ replyTo: env.EMAIL_REPLY_TO_EMAIL ? {
149
+ email: env.EMAIL_REPLY_TO_EMAIL,
150
+ name: env.EMAIL_REPLY_TO_NAME || env.EMAIL_FROM_NAME
151
+ } : undefined
152
+ };
153
+ switch (env.EMAIL_PROVIDER) {
154
+ case 'smtp':
155
+ return {
156
+ ...baseConfig,
157
+ provider: 'smtp',
158
+ smtp: {
159
+ host: env.SMTP_HOST,
160
+ port: parseInt(env.SMTP_PORT || '587'),
161
+ secure: env.SMTP_SECURE === 'true',
162
+ auth: {
163
+ user: env.SMTP_USER,
164
+ pass: env.SMTP_PASS
165
+ }
166
+ }
167
+ };
168
+ case 'sendgrid':
169
+ return {
170
+ ...baseConfig,
171
+ provider: 'sendgrid',
172
+ sendgrid: {
173
+ apiKey: env.SENDGRID_API_KEY
174
+ }
175
+ };
176
+ case 'ses':
177
+ return {
178
+ ...baseConfig,
179
+ provider: 'ses',
180
+ ses: {
181
+ region: env.SES_REGION,
182
+ accessKeyId: env.SES_ACCESS_KEY_ID,
183
+ secretAccessKey: env.SES_SECRET_ACCESS_KEY
184
+ }
185
+ };
186
+ default:
187
+ return undefined;
188
+ }
189
+ }
190
+ buildStorageConfig(env) {
191
+ if (!env.STORAGE_PROVIDER)
192
+ return undefined;
193
+ switch (env.STORAGE_PROVIDER) {
194
+ case 'local':
195
+ return {
196
+ provider: 'local',
197
+ local: {
198
+ path: env.STORAGE_LOCAL_PATH || './uploads'
199
+ }
200
+ };
201
+ case 's3':
202
+ return {
203
+ provider: 's3',
204
+ s3: {
205
+ bucket: env.AWS_S3_BUCKET,
206
+ region: env.AWS_REGION,
207
+ accessKeyId: env.AWS_ACCESS_KEY_ID,
208
+ secretAccessKey: env.AWS_SECRET_ACCESS_KEY
209
+ }
210
+ };
211
+ default:
212
+ return undefined;
213
+ }
214
+ }
215
+ buildAuthConfig(env) {
216
+ return {
217
+ jwtSecret: env.JWT_SECRET || 'your-super-secret-jwt-key',
218
+ jwtRefreshSecret: env.JWT_REFRESH_SECRET || 'your-super-secret-refresh-key',
219
+ jwtExpiry: env.JWT_EXPIRY || '24h',
220
+ jwtRefreshExpiry: env.JWT_REFRESH_EXPIRY || '7d',
221
+ issuer: env.JWT_ISSUER,
222
+ audience: env.JWT_AUDIENCE,
223
+ bcryptRounds: parseInt(env.BCRYPT_ROUNDS || '12'),
224
+ maxLoginAttempts: parseInt(env.MAX_LOGIN_ATTEMPTS || '5'),
225
+ lockoutDuration: parseInt(env.LOCKOUT_DURATION || '900000'), // 15 minutes
226
+ passwordPolicy: {
227
+ minLength: parseInt(env.PASSWORD_MIN_LENGTH || '8'),
228
+ requireUppercase: env.PASSWORD_REQUIRE_UPPERCASE !== 'false',
229
+ requireLowercase: env.PASSWORD_REQUIRE_LOWERCASE !== 'false',
230
+ requireNumbers: env.PASSWORD_REQUIRE_NUMBERS !== 'false',
231
+ requireSymbols: env.PASSWORD_REQUIRE_SYMBOLS !== 'false'
232
+ }
233
+ };
234
+ }
235
+ buildLoggingConfig(env) {
236
+ return {
237
+ level: env.LOG_LEVEL || 'info',
238
+ format: env.LOG_FORMAT || 'json',
239
+ transports: [
240
+ {
241
+ type: 'console'
242
+ },
243
+ ...(env.LOG_FILE ? [{
244
+ type: 'file',
245
+ options: { filename: env.LOG_FILE }
246
+ }] : [])
247
+ ]
248
+ };
249
+ }
250
+ buildFeatureFlags(env) {
251
+ return {
252
+ authentication: env.ENABLE_AUTH !== 'false',
253
+ userManagement: env.ENABLE_USER_MANAGEMENT !== 'false',
254
+ analytics: env.ENABLE_ANALYTICS === 'true',
255
+ blog: env.ENABLE_BLOG === 'true',
256
+ marketplace: env.ENABLE_MARKETPLACE === 'true',
257
+ forums: env.ENABLE_FORUMS === 'true',
258
+ events: env.ENABLE_EVENTS === 'true',
259
+ newsletter: env.ENABLE_NEWSLETTER === 'true',
260
+ payments: env.ENABLE_PAYMENTS === 'true',
261
+ notifications: env.ENABLE_NOTIFICATIONS === 'true',
262
+ apiRateLimiting: env.ENABLE_RATE_LIMITING !== 'false',
263
+ auditLogging: env.ENABLE_AUDIT_LOGGING === 'true',
264
+ multiTenant: env.ENABLE_MULTI_TENANT === 'true',
265
+ whiteLabel: env.ENABLE_WHITE_LABEL === 'true'
266
+ };
267
+ }
268
+ getConfigSchema() {
269
+ return joi_1.default.object({
270
+ app: joi_1.default.object({
271
+ name: joi_1.default.string().required(),
272
+ version: joi_1.default.string().required(),
273
+ environment: joi_1.default.string().valid('development', 'staging', 'production').required(),
274
+ url: joi_1.default.string().uri().required(),
275
+ supportEmail: joi_1.default.string().email().required(),
276
+ timezone: joi_1.default.string().required(),
277
+ currency: joi_1.default.string().required(),
278
+ locale: joi_1.default.string().required()
279
+ }).required(),
280
+ server: joi_1.default.object({
281
+ port: joi_1.default.number().port().required(),
282
+ host: joi_1.default.string().required(),
283
+ cors: joi_1.default.object({
284
+ origin: joi_1.default.alternatives().try(joi_1.default.string().uri(), joi_1.default.array().items(joi_1.default.string().uri())).required(),
285
+ credentials: joi_1.default.boolean().required()
286
+ }).required(),
287
+ rateLimit: joi_1.default.object({
288
+ windowMs: joi_1.default.number().required(),
289
+ max: joi_1.default.number().required()
290
+ }).optional(),
291
+ compression: joi_1.default.boolean().required(),
292
+ helmet: joi_1.default.boolean().required()
293
+ }).required(),
294
+ database: joi_1.default.object({
295
+ type: joi_1.default.string().valid('postgresql', 'mysql', 'sqlite', 'mongodb').required(),
296
+ host: joi_1.default.string().required(),
297
+ port: joi_1.default.number().required(),
298
+ database: joi_1.default.string().required(),
299
+ username: joi_1.default.string().optional(),
300
+ password: joi_1.default.string().optional(),
301
+ ssl: joi_1.default.boolean().optional(),
302
+ pool: joi_1.default.object({
303
+ min: joi_1.default.number().required(),
304
+ max: joi_1.default.number().required(),
305
+ idle: joi_1.default.number().required()
306
+ }).required()
307
+ }).required(),
308
+ auth: joi_1.default.object({
309
+ jwtSecret: joi_1.default.string().min(32).required(),
310
+ jwtRefreshSecret: joi_1.default.string().min(32).required(),
311
+ jwtExpiry: joi_1.default.string().required(),
312
+ jwtRefreshExpiry: joi_1.default.string().required(),
313
+ issuer: joi_1.default.string().optional(),
314
+ audience: joi_1.default.string().optional(),
315
+ bcryptRounds: joi_1.default.number().min(10).max(15).required(),
316
+ maxLoginAttempts: joi_1.default.number().min(1).required(),
317
+ lockoutDuration: joi_1.default.number().min(0).required(),
318
+ passwordPolicy: joi_1.default.object({
319
+ minLength: joi_1.default.number().min(6).required(),
320
+ requireUppercase: joi_1.default.boolean().required(),
321
+ requireLowercase: joi_1.default.boolean().required(),
322
+ requireNumbers: joi_1.default.boolean().required(),
323
+ requireSymbols: joi_1.default.boolean().required()
324
+ }).required()
325
+ }).required(),
326
+ logging: joi_1.default.object({
327
+ level: joi_1.default.string().valid('error', 'warn', 'info', 'debug').required(),
328
+ format: joi_1.default.string().valid('json', 'simple').required(),
329
+ transports: joi_1.default.array().items(joi_1.default.object({
330
+ type: joi_1.default.string().valid('console', 'file', 'http').required(),
331
+ options: joi_1.default.object().optional()
332
+ })).required()
333
+ }).required(),
334
+ features: joi_1.default.object({
335
+ authentication: joi_1.default.boolean().required(),
336
+ userManagement: joi_1.default.boolean().required(),
337
+ analytics: joi_1.default.boolean().required(),
338
+ blog: joi_1.default.boolean().required(),
339
+ marketplace: joi_1.default.boolean().required(),
340
+ forums: joi_1.default.boolean().required(),
341
+ events: joi_1.default.boolean().required(),
342
+ newsletter: joi_1.default.boolean().required(),
343
+ payments: joi_1.default.boolean().required(),
344
+ notifications: joi_1.default.boolean().required(),
345
+ apiRateLimiting: joi_1.default.boolean().required(),
346
+ auditLogging: joi_1.default.boolean().required(),
347
+ multiTenant: joi_1.default.boolean().required(),
348
+ whiteLabel: joi_1.default.boolean().required()
349
+ }).required()
350
+ });
351
+ }
352
+ getNestedValue(obj, path) {
353
+ return path.split('.').reduce((current, key) => current?.[key], obj);
354
+ }
355
+ }
356
+ exports.ConfigManager = ConfigManager;
357
+ // Default config manager instance
358
+ exports.config = new ConfigManager();
359
+ // Utility functions
360
+ function createConfig(options) {
361
+ return new ConfigManager(options);
362
+ }
363
+ function loadConfig(options) {
364
+ return new ConfigManager(options).load();
365
+ }
366
+ //# sourceMappingURL=ConfigManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConfigManager.js","sourceRoot":"","sources":["../src/ConfigManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export { ConfigManager, config, createConfig, loadConfig } from './ConfigManager';
3
+ export declare const SIRIUX_CONFIG_VERSION = "1.0.0";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAGlF,eAAO,MAAM,qBAAqB,UAAU,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.SIRIUX_CONFIG_VERSION = exports.loadConfig = exports.createConfig = exports.config = exports.ConfigManager = void 0;
18
+ // Core exports
19
+ __exportStar(require("./types"), exports);
20
+ // Main config manager
21
+ var ConfigManager_1 = require("./ConfigManager");
22
+ Object.defineProperty(exports, "ConfigManager", { enumerable: true, get: function () { return ConfigManager_1.ConfigManager; } });
23
+ Object.defineProperty(exports, "config", { enumerable: true, get: function () { return ConfigManager_1.config; } });
24
+ Object.defineProperty(exports, "createConfig", { enumerable: true, get: function () { return ConfigManager_1.createConfig; } });
25
+ Object.defineProperty(exports, "loadConfig", { enumerable: true, get: function () { return ConfigManager_1.loadConfig; } });
26
+ // Version information
27
+ exports.SIRIUX_CONFIG_VERSION = '1.0.0';
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,eAAe;AACf,0CAAwB;AAExB,sBAAsB;AACtB,iDAAkF;AAAzE,8GAAA,aAAa,OAAA;AAAE,uGAAA,MAAM,OAAA;AAAE,6GAAA,YAAY,OAAA;AAAE,2GAAA,UAAU,OAAA;AAExD,sBAAsB;AACT,QAAA,qBAAqB,GAAG,OAAO,CAAC"}
@@ -0,0 +1,66 @@
1
+ export declare enum ConfigStorage {
2
+ MEMORY = "memory",
3
+ FILE = "file",
4
+ DATABASE = "database",
5
+ CLOUD = "cloud"
6
+ }
7
+ export interface ConfigEntry {
8
+ key: string;
9
+ value: any;
10
+ type: 'string' | 'number' | 'boolean' | 'object' | 'array';
11
+ description?: string;
12
+ category?: string;
13
+ isSecret: boolean;
14
+ isRequired: boolean;
15
+ defaultValue?: any;
16
+ validation?: {
17
+ min?: number;
18
+ max?: number;
19
+ pattern?: string;
20
+ options?: any[];
21
+ };
22
+ createdAt: string;
23
+ updatedAt: string;
24
+ }
25
+ export interface MockConfigManagerConfig {
26
+ storage: ConfigStorage;
27
+ environment: string;
28
+ enableValidation: boolean;
29
+ enableCaching: boolean;
30
+ cacheTimeout: number;
31
+ }
32
+ export declare class MockConfigManager {
33
+ private config;
34
+ private configs;
35
+ private cache;
36
+ private watchers;
37
+ constructor(config?: Partial<MockConfigManagerConfig>);
38
+ private initializeDefaultConfigs;
39
+ private validateConfig;
40
+ private writeToStorage;
41
+ private readFromStorage;
42
+ get(key: string): Promise<any>;
43
+ set(key: string, value: any): Promise<void>;
44
+ getAll(): Promise<Record<string, any>>;
45
+ getByCategory(category: string): Promise<Record<string, any>>;
46
+ getSecrets(): Promise<Record<string, string>>;
47
+ addConfig(entry: Omit<ConfigEntry, 'createdAt' | 'updatedAt'>): Promise<void>;
48
+ removeConfig(key: string): Promise<void>;
49
+ watch(key: string, callback: (value: any) => void): () => void;
50
+ validateAll(): Promise<{
51
+ valid: boolean;
52
+ errors: string[];
53
+ }>;
54
+ export(): Promise<ConfigEntry[]>;
55
+ import(configs: ConfigEntry[]): Promise<void>;
56
+ clearCache(): void;
57
+ getStats(): {
58
+ totalConfigs: number;
59
+ configsByCategory: Record<string, number>;
60
+ secretsCount: number;
61
+ cacheSize: number;
62
+ };
63
+ }
64
+ export declare const createMockConfigManager: (config?: Partial<MockConfigManagerConfig>) => MockConfigManager;
65
+ export declare const createEnvironmentConfigManager: () => MockConfigManager;
66
+ //# sourceMappingURL=mockConfigManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockConfigManager.d.ts","sourceRoot":"","sources":["../../src/mock/mockConfigManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,361 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createEnvironmentConfigManager = exports.createMockConfigManager = exports.MockConfigManager = exports.ConfigStorage = void 0;
4
+ // Mock configuration manager with multiple storage backends
5
+ var ConfigStorage;
6
+ (function (ConfigStorage) {
7
+ ConfigStorage["MEMORY"] = "memory";
8
+ ConfigStorage["FILE"] = "file";
9
+ ConfigStorage["DATABASE"] = "database";
10
+ ConfigStorage["CLOUD"] = "cloud";
11
+ })(ConfigStorage || (exports.ConfigStorage = ConfigStorage = {}));
12
+ class MockConfigManager {
13
+ constructor(config = {}) {
14
+ this.configs = new Map();
15
+ this.cache = new Map();
16
+ this.watchers = new Map();
17
+ this.config = {
18
+ storage: ConfigStorage.MEMORY,
19
+ environment: process.env.NODE_ENV || 'development',
20
+ enableValidation: true,
21
+ enableCaching: true,
22
+ cacheTimeout: 300000, // 5 minutes
23
+ ...config
24
+ };
25
+ this.initializeDefaultConfigs();
26
+ }
27
+ initializeDefaultConfigs() {
28
+ const defaultConfigs = [
29
+ {
30
+ key: 'app.name',
31
+ value: 'Siriux Application',
32
+ type: 'string',
33
+ description: 'Application name',
34
+ category: 'app',
35
+ isSecret: false,
36
+ isRequired: true,
37
+ createdAt: new Date().toISOString(),
38
+ updatedAt: new Date().toISOString()
39
+ },
40
+ {
41
+ key: 'app.version',
42
+ value: '1.0.0',
43
+ type: 'string',
44
+ description: 'Application version',
45
+ category: 'app',
46
+ isSecret: false,
47
+ isRequired: true,
48
+ createdAt: new Date().toISOString(),
49
+ updatedAt: new Date().toISOString()
50
+ },
51
+ {
52
+ key: 'database.url',
53
+ value: 'sqlite:memory:',
54
+ type: 'string',
55
+ description: 'Database connection URL',
56
+ category: 'database',
57
+ isSecret: true,
58
+ isRequired: true,
59
+ validation: {
60
+ pattern: '^(sqlite|mysql|postgresql|snowflake):.+'
61
+ },
62
+ createdAt: new Date().toISOString(),
63
+ updatedAt: new Date().toISOString()
64
+ },
65
+ {
66
+ key: 'auth.jwt.expiry',
67
+ value: '24h',
68
+ type: 'string',
69
+ description: 'JWT token expiry time',
70
+ category: 'auth',
71
+ isSecret: false,
72
+ isRequired: true,
73
+ validation: {
74
+ options: ['1h', '24h', '7d', '30d']
75
+ },
76
+ createdAt: new Date().toISOString(),
77
+ updatedAt: new Date().toISOString()
78
+ },
79
+ {
80
+ key: 'logging.level',
81
+ value: 'info',
82
+ type: 'string',
83
+ description: 'Logging level',
84
+ category: 'logging',
85
+ isSecret: false,
86
+ isRequired: true,
87
+ validation: {
88
+ options: ['debug', 'info', 'warn', 'error']
89
+ },
90
+ createdAt: new Date().toISOString(),
91
+ updatedAt: new Date().toISOString()
92
+ },
93
+ {
94
+ key: 'api.rateLimit',
95
+ value: 100,
96
+ type: 'number',
97
+ description: 'API rate limit per minute',
98
+ category: 'api',
99
+ isSecret: false,
100
+ isRequired: true,
101
+ validation: {
102
+ min: 1,
103
+ max: 10000
104
+ },
105
+ createdAt: new Date().toISOString(),
106
+ updatedAt: new Date().toISOString()
107
+ },
108
+ {
109
+ key: 'features.enableAnalytics',
110
+ value: true,
111
+ type: 'boolean',
112
+ description: 'Enable analytics tracking',
113
+ category: 'features',
114
+ isSecret: false,
115
+ isRequired: false,
116
+ createdAt: new Date().toISOString(),
117
+ updatedAt: new Date().toISOString()
118
+ }
119
+ ];
120
+ defaultConfigs.forEach(config => {
121
+ this.configs.set(config.key, config);
122
+ });
123
+ }
124
+ validateConfig(entry, value) {
125
+ if (!this.config.enableValidation || !entry.validation) {
126
+ return true;
127
+ }
128
+ const { validation } = entry;
129
+ // Type validation
130
+ if (entry.type === 'number' && typeof value !== 'number') {
131
+ return false;
132
+ }
133
+ if (entry.type === 'boolean' && typeof value !== 'boolean') {
134
+ return false;
135
+ }
136
+ if (entry.type === 'string' && typeof value !== 'string') {
137
+ return false;
138
+ }
139
+ // Range validation
140
+ if (validation.min !== undefined && value < validation.min) {
141
+ return false;
142
+ }
143
+ if (validation.max !== undefined && value > validation.max) {
144
+ return false;
145
+ }
146
+ // Pattern validation
147
+ if (validation.pattern && typeof value === 'string') {
148
+ const regex = new RegExp(validation.pattern);
149
+ if (!regex.test(value)) {
150
+ return false;
151
+ }
152
+ }
153
+ // Options validation
154
+ if (validation.options && !validation.options.includes(value)) {
155
+ return false;
156
+ }
157
+ return true;
158
+ }
159
+ async writeToStorage(entry) {
160
+ switch (this.config.storage) {
161
+ case ConfigStorage.MEMORY:
162
+ // Already stored in memory
163
+ break;
164
+ case ConfigStorage.FILE:
165
+ console.log(`📁 Writing config to file: ${entry.key}`);
166
+ break;
167
+ case ConfigStorage.DATABASE:
168
+ console.log(`🗄️ Writing config to database: ${entry.key}`);
169
+ break;
170
+ case ConfigStorage.CLOUD:
171
+ console.log(`☁️ Writing config to cloud: ${entry.key}`);
172
+ break;
173
+ }
174
+ }
175
+ async readFromStorage(key) {
176
+ switch (this.config.storage) {
177
+ case ConfigStorage.MEMORY:
178
+ return this.configs.get(key) || null;
179
+ case ConfigStorage.FILE:
180
+ console.log(`📁 Reading config from file: ${key}`);
181
+ return this.configs.get(key) || null;
182
+ case ConfigStorage.DATABASE:
183
+ console.log(`🗄️ Reading config from database: ${key}`);
184
+ return this.configs.get(key) || null;
185
+ case ConfigStorage.CLOUD:
186
+ console.log(`☁️ Reading config from cloud: ${key}`);
187
+ return this.configs.get(key) || null;
188
+ default:
189
+ return null;
190
+ }
191
+ }
192
+ // Public API methods
193
+ async get(key) {
194
+ // Check cache first
195
+ if (this.config.enableCaching) {
196
+ const cached = this.cache.get(key);
197
+ if (cached && Date.now() - cached.timestamp < this.config.cacheTimeout) {
198
+ return cached.value;
199
+ }
200
+ }
201
+ const entry = await this.readFromStorage(key);
202
+ if (!entry) {
203
+ throw new Error(`Configuration key not found: ${key}`);
204
+ }
205
+ // Update cache
206
+ if (this.config.enableCaching) {
207
+ this.cache.set(key, {
208
+ value: entry.value,
209
+ timestamp: Date.now()
210
+ });
211
+ }
212
+ return entry.value;
213
+ }
214
+ async set(key, value) {
215
+ const entry = await this.readFromStorage(key);
216
+ if (!entry) {
217
+ throw new Error(`Configuration key not found: ${key}`);
218
+ }
219
+ // Validate value
220
+ if (!this.validateConfig(entry, value)) {
221
+ throw new Error(`Invalid value for configuration key: ${key}`);
222
+ }
223
+ // Update entry
224
+ const updatedEntry = {
225
+ ...entry,
226
+ value,
227
+ updatedAt: new Date().toISOString()
228
+ };
229
+ this.configs.set(key, updatedEntry);
230
+ await this.writeToStorage(updatedEntry);
231
+ // Update cache
232
+ if (this.config.enableCaching) {
233
+ this.cache.set(key, {
234
+ value,
235
+ timestamp: Date.now()
236
+ });
237
+ }
238
+ // Notify watchers
239
+ const watchers = this.watchers.get(key) || [];
240
+ watchers.forEach(callback => callback(value));
241
+ }
242
+ async getAll() {
243
+ const result = {};
244
+ for (const [key, entry] of this.configs) {
245
+ result[key] = entry.value;
246
+ }
247
+ return result;
248
+ }
249
+ async getByCategory(category) {
250
+ const result = {};
251
+ for (const [key, entry] of this.configs) {
252
+ if (entry.category === category) {
253
+ result[key] = entry.value;
254
+ }
255
+ }
256
+ return result;
257
+ }
258
+ async getSecrets() {
259
+ const result = {};
260
+ for (const [key, entry] of this.configs) {
261
+ if (entry.isSecret) {
262
+ result[key] = entry.value;
263
+ }
264
+ }
265
+ return result;
266
+ }
267
+ // Configuration management
268
+ async addConfig(entry) {
269
+ const newEntry = {
270
+ ...entry,
271
+ createdAt: new Date().toISOString(),
272
+ updatedAt: new Date().toISOString()
273
+ };
274
+ this.configs.set(entry.key, newEntry);
275
+ await this.writeToStorage(newEntry);
276
+ }
277
+ async removeConfig(key) {
278
+ const entry = this.configs.get(key);
279
+ if (!entry) {
280
+ throw new Error(`Configuration key not found: ${key}`);
281
+ }
282
+ if (entry.isRequired) {
283
+ throw new Error(`Cannot remove required configuration: ${key}`);
284
+ }
285
+ this.configs.delete(key);
286
+ this.cache.delete(key);
287
+ }
288
+ // Watchers
289
+ watch(key, callback) {
290
+ const watchers = this.watchers.get(key) || [];
291
+ watchers.push(callback);
292
+ this.watchers.set(key, watchers);
293
+ // Return unwatch function
294
+ return () => {
295
+ const currentWatchers = this.watchers.get(key) || [];
296
+ const index = currentWatchers.indexOf(callback);
297
+ if (index > -1) {
298
+ currentWatchers.splice(index, 1);
299
+ this.watchers.set(key, currentWatchers);
300
+ }
301
+ };
302
+ }
303
+ // Utility methods
304
+ async validateAll() {
305
+ const errors = [];
306
+ for (const [key, entry] of this.configs) {
307
+ if (!this.validateConfig(entry, entry.value)) {
308
+ errors.push(`Invalid value for ${key}`);
309
+ }
310
+ }
311
+ return {
312
+ valid: errors.length === 0,
313
+ errors
314
+ };
315
+ }
316
+ async export() {
317
+ return Array.from(this.configs.values());
318
+ }
319
+ async import(configs) {
320
+ for (const config of configs) {
321
+ this.configs.set(config.key, config);
322
+ await this.writeToStorage(config);
323
+ }
324
+ }
325
+ clearCache() {
326
+ this.cache.clear();
327
+ }
328
+ getStats() {
329
+ const configsByCategory = {};
330
+ let secretsCount = 0;
331
+ for (const entry of this.configs.values()) {
332
+ configsByCategory[entry.category || 'other'] = (configsByCategory[entry.category || 'other'] || 0) + 1;
333
+ if (entry.isSecret)
334
+ secretsCount++;
335
+ }
336
+ return {
337
+ totalConfigs: this.configs.size,
338
+ configsByCategory,
339
+ secretsCount,
340
+ cacheSize: this.cache.size
341
+ };
342
+ }
343
+ }
344
+ exports.MockConfigManager = MockConfigManager;
345
+ // Factory function
346
+ const createMockConfigManager = (config) => {
347
+ return new MockConfigManager(config);
348
+ };
349
+ exports.createMockConfigManager = createMockConfigManager;
350
+ // Environment-based config manager
351
+ const createEnvironmentConfigManager = () => {
352
+ const config = {
353
+ storage: process.env.CONFIG_STORAGE || ConfigStorage.MEMORY,
354
+ environment: process.env.NODE_ENV || 'development',
355
+ enableValidation: process.env.CONFIG_VALIDATION !== 'false',
356
+ enableCaching: process.env.CONFIG_CACHING !== 'false'
357
+ };
358
+ return new MockConfigManager(config);
359
+ };
360
+ exports.createEnvironmentConfigManager = createEnvironmentConfigManager;
361
+ //# sourceMappingURL=mockConfigManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mockConfigManager.js","sourceRoot":"","sources":["../../src/mock/mockConfigManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,202 @@
1
+ export interface DatabaseConfig {
2
+ type: 'postgresql' | 'mysql' | 'sqlite' | 'mongodb';
3
+ host: string;
4
+ port: number;
5
+ database: string;
6
+ username?: string;
7
+ password?: string;
8
+ ssl?: boolean;
9
+ pool?: {
10
+ min: number;
11
+ max: number;
12
+ idle: number;
13
+ };
14
+ }
15
+ export interface RedisConfig {
16
+ host: string;
17
+ port: number;
18
+ password?: string;
19
+ db?: number;
20
+ keyPrefix?: string;
21
+ }
22
+ export interface EmailConfig {
23
+ provider: 'smtp' | 'sendgrid' | 'ses' | 'mailgun';
24
+ from: {
25
+ email: string;
26
+ name: string;
27
+ };
28
+ replyTo?: {
29
+ email: string;
30
+ name: string;
31
+ };
32
+ smtp?: {
33
+ host: string;
34
+ port: number;
35
+ secure: boolean;
36
+ auth: {
37
+ user: string;
38
+ pass: string;
39
+ };
40
+ };
41
+ sendgrid?: {
42
+ apiKey: string;
43
+ };
44
+ ses?: {
45
+ region: string;
46
+ accessKeyId: string;
47
+ secretAccessKey: string;
48
+ };
49
+ mailgun?: {
50
+ domain: string;
51
+ apiKey: string;
52
+ };
53
+ }
54
+ export interface StorageConfig {
55
+ provider: 'local' | 's3' | 'gcs' | 'azure';
56
+ local?: {
57
+ path: string;
58
+ };
59
+ s3?: {
60
+ bucket: string;
61
+ region: string;
62
+ accessKeyId: string;
63
+ secretAccessKey: string;
64
+ };
65
+ gcs?: {
66
+ bucket: string;
67
+ projectId: string;
68
+ keyFilename: string;
69
+ };
70
+ azure?: {
71
+ accountName: string;
72
+ accountKey: string;
73
+ container: string;
74
+ };
75
+ }
76
+ export interface AuthConfig {
77
+ jwtSecret: string;
78
+ jwtRefreshSecret: string;
79
+ jwtExpiry: string;
80
+ jwtRefreshExpiry: string;
81
+ issuer?: string;
82
+ audience?: string;
83
+ bcryptRounds: number;
84
+ maxLoginAttempts: number;
85
+ lockoutDuration: number;
86
+ passwordPolicy: {
87
+ minLength: number;
88
+ requireUppercase: boolean;
89
+ requireLowercase: boolean;
90
+ requireNumbers: boolean;
91
+ requireSymbols: boolean;
92
+ };
93
+ }
94
+ export interface LoggingConfig {
95
+ level: 'error' | 'warn' | 'info' | 'debug';
96
+ format: 'json' | 'simple';
97
+ transports: Array<{
98
+ type: 'console' | 'file' | 'http';
99
+ options?: Record<string, any>;
100
+ }>;
101
+ }
102
+ export interface FeatureFlags {
103
+ authentication: boolean;
104
+ userManagement: boolean;
105
+ analytics: boolean;
106
+ blog: boolean;
107
+ marketplace: boolean;
108
+ forums: boolean;
109
+ events: boolean;
110
+ newsletter: boolean;
111
+ payments: boolean;
112
+ notifications: boolean;
113
+ apiRateLimiting: boolean;
114
+ auditLogging: boolean;
115
+ multiTenant: boolean;
116
+ whiteLabel: boolean;
117
+ }
118
+ export interface ServerConfig {
119
+ port: number;
120
+ host: string;
121
+ cors: {
122
+ origin: string | string[];
123
+ credentials: boolean;
124
+ };
125
+ rateLimit?: {
126
+ windowMs: number;
127
+ max: number;
128
+ };
129
+ compression: boolean;
130
+ helmet: boolean;
131
+ }
132
+ export interface AppConfig {
133
+ name: string;
134
+ version: string;
135
+ environment: 'development' | 'staging' | 'production';
136
+ url: string;
137
+ supportEmail: string;
138
+ timezone: string;
139
+ currency: string;
140
+ locale: string;
141
+ }
142
+ export interface SiriuxConfig {
143
+ app: AppConfig;
144
+ server: ServerConfig;
145
+ database: DatabaseConfig;
146
+ redis?: RedisConfig;
147
+ email?: EmailConfig;
148
+ storage?: StorageConfig;
149
+ auth: AuthConfig;
150
+ logging: LoggingConfig;
151
+ features: FeatureFlags;
152
+ }
153
+ export interface EnvironmentVariables {
154
+ NODE_ENV: 'development' | 'staging' | 'production';
155
+ PORT: string;
156
+ HOST: string;
157
+ DB_TYPE: string;
158
+ DB_HOST: string;
159
+ DB_PORT: string;
160
+ DB_NAME: string;
161
+ DB_USERNAME?: string;
162
+ DB_PASSWORD?: string;
163
+ DB_SSL?: string;
164
+ REDIS_HOST?: string;
165
+ REDIS_PORT?: string;
166
+ REDIS_PASSWORD?: string;
167
+ REDIS_DB?: string;
168
+ JWT_SECRET: string;
169
+ JWT_REFRESH_SECRET: string;
170
+ JWT_EXPIRY?: string;
171
+ JWT_REFRESH_EXPIRY?: string;
172
+ EMAIL_PROVIDER?: string;
173
+ SMTP_HOST?: string;
174
+ SMTP_PORT?: string;
175
+ SMTP_USER?: string;
176
+ SMTP_PASS?: string;
177
+ SENDGRID_API_KEY?: string;
178
+ SES_REGION?: string;
179
+ SES_ACCESS_KEY_ID?: string;
180
+ SES_SECRET_ACCESS_KEY?: string;
181
+ STORAGE_PROVIDER?: string;
182
+ AWS_ACCESS_KEY_ID?: string;
183
+ AWS_SECRET_ACCESS_KEY?: string;
184
+ AWS_REGION?: string;
185
+ AWS_S3_BUCKET?: string;
186
+ ENABLE_AUTH?: string;
187
+ ENABLE_ANALYTICS?: string;
188
+ ENABLE_BLOG?: string;
189
+ SUPPORT_EMAIL?: string;
190
+ APP_URL?: string;
191
+ }
192
+ export interface ValidationResult {
193
+ valid: boolean;
194
+ errors: string[];
195
+ warnings: string[];
196
+ }
197
+ export interface ConfigLoaderOptions {
198
+ envFile?: string;
199
+ override?: Partial<SiriuxConfig>;
200
+ validate?: boolean;
201
+ }
202
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,IAAI,CAAC,EAAE;QACL,GAAG,EAAE,MAAM,CAAC;QACZ,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,KAAK,GAAG,SAAS,CAAC;IAClD,IAAI,EAAE;QACJ,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,OAAO,CAAC,EAAE;QACR,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,OAAO,CAAC;QAChB,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM,CAAC;YACb,IAAI,EAAE,MAAM,CAAC;SACd,CAAC;KACH,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,OAAO,CAAC,EAAE;QACR,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,OAAO,GAAG,IAAI,GAAG,KAAK,GAAG,OAAO,CAAC;IAC3C,KAAK,CAAC,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,EAAE,CAAC,EAAE;QACH,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,EAAE,MAAM,CAAC;QACpB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,MAAM,EAAE,MAAM,CAAC;QACf,SAAS,EAAE,MAAM,CAAC;QAClB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IACF,KAAK,CAAC,EAAE;QACN,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,gBAAgB,EAAE,OAAO,CAAC;QAC1B,gBAAgB,EAAE,OAAO,CAAC;QAC1B,cAAc,EAAE,OAAO,CAAC;QACxB,cAAc,EAAE,OAAO,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IAC3C,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC1B,UAAU,EAAE,KAAK,CAAC;QAChB,IAAI,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAC;QAClC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;KAC/B,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;IAChB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE;QACJ,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC;QAC1B,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,SAAS,CAAC,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,GAAG,EAAE,MAAM,CAAC;KACb,CAAC;IACF,WAAW,EAAE,OAAO,CAAC;IACrB,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;IACtD,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,YAAY,CAAC;IACrB,QAAQ,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,aAAa,CAAC;IACvB,QAAQ,EAAE,YAAY,CAAC;CACxB;AAGD,MAAM,WAAW,oBAAoB;IAEnC,QAAQ,EAAE,aAAa,GAAG,SAAS,GAAG,YAAY,CAAC;IACnD,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IAGb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;IAGhB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAG5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAG/B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IAGvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAGD,MAAM,WAAW,mBAAmB;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IACjC,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,43 @@
1
+ {
2
+ "name": "@siriux/config",
3
+ "version": "1.0.1",
4
+ "description": "Siriux Configuration - Environment variables management and validation",
5
+ "main": "dist/index.js",
6
+ "types": "dist/index.d.ts",
7
+ "scripts": {
8
+ "build": "tsc",
9
+ "dev": "tsc --watch",
10
+ "test": "jest",
11
+ "clean": "rm -rf dist",
12
+ "prepublishOnly": "npm run clean && npm run build"
13
+ },
14
+ "keywords": [
15
+ "siriux",
16
+ "config",
17
+ "environment",
18
+ "validation",
19
+ "dotenv",
20
+ "settings"
21
+ ],
22
+ "author": "jawwad@alsirius.co.uk",
23
+ "license": "MIT",
24
+ "dependencies": {
25
+ "@siriux/core": "^2.0.0",
26
+ "dotenv": "^16.3.1",
27
+ "joi": "^17.11.0"
28
+ },
29
+ "devDependencies": {
30
+ "@types/jest": "^29.5.8",
31
+ "@types/joi": "^17.2.3",
32
+ "@types/node": "^20.10.5",
33
+ "jest": "^29.7.0",
34
+ "typescript": "^5.3.3"
35
+ },
36
+ "files": [
37
+ "dist/**/*"
38
+ ],
39
+ "publishConfig": {
40
+ "access": "public"
41
+ },
42
+ "gitHead": "7a9592f8e9ed3f1301046046e1e05811cecc24be"
43
+ }