@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.
- package/dist/ConfigManager.d.ts +29 -0
- package/dist/ConfigManager.d.ts.map +1 -0
- package/dist/ConfigManager.js +366 -0
- package/dist/ConfigManager.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +28 -0
- package/dist/index.js.map +1 -0
- package/dist/mock/mockConfigManager.d.ts +66 -0
- package/dist/mock/mockConfigManager.d.ts.map +1 -0
- package/dist/mock/mockConfigManager.js +361 -0
- package/dist/mock/mockConfigManager.js.map +1 -0
- package/dist/types/index.d.ts +202 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +3 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +43 -0
|
@@ -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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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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":"AACA,oBAAY,aAAa;IACvB,MAAM,WAAW;IACjB,IAAI,SAAS;IACb,QAAQ,aAAa;IACrB,KAAK,UAAU;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,GAAG,CAAC;IACX,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,GAAG,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,GAAG,EAAE,CAAC;KACjB,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,aAAa,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,aAAa,EAAE,OAAO,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAA0B;IACxC,OAAO,CAAC,OAAO,CAAuC;IACtD,OAAO,CAAC,KAAK,CAA6D;IAC1E,OAAO,CAAC,QAAQ,CAAoD;gBAExD,MAAM,GAAE,OAAO,CAAC,uBAAuB,CAAM;IAazD,OAAO,CAAC,wBAAwB;IAmGhC,OAAO,CAAC,cAAc;YA0CR,cAAc;YAiBd,eAAe;IAmBvB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAyB9B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAmC3C,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAUtC,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAY7D,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa7C,SAAS,CAAC,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,WAAW,GAAG,WAAW,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7E,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAe9C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,IAAI,GAAG,MAAM,IAAI;IAiBxD,WAAW,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IAe5D,MAAM,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAIhC,MAAM,CAAC,OAAO,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAOnD,UAAU,IAAI,IAAI;IAIlB,QAAQ,IAAI;QACV,YAAY,EAAE,MAAM,CAAC;QACrB,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,YAAY,EAAE,MAAM,CAAC;QACrB,SAAS,EAAE,MAAM,CAAC;KACnB;CAgBF;AAGD,eAAO,MAAM,uBAAuB,GAAI,SAAS,OAAO,CAAC,uBAAuB,CAAC,KAAG,iBAEnF,CAAC;AAGF,eAAO,MAAM,8BAA8B,QAAO,iBASjD,CAAC"}
|
|
@@ -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":"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"}
|
|
@@ -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
|
+
}
|