@xbg.solutions/backend-core 1.0.0
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/lib/core/src/app.d.ts +28 -0
- package/lib/core/src/app.d.ts.map +1 -0
- package/lib/core/src/app.js +188 -0
- package/lib/core/src/app.js.map +1 -0
- package/lib/core/src/base/BaseController.d.ts +108 -0
- package/lib/core/src/base/BaseController.d.ts.map +1 -0
- package/lib/core/src/base/BaseController.js +307 -0
- package/lib/core/src/base/BaseController.js.map +1 -0
- package/lib/core/src/base/BaseEntity.d.ts +92 -0
- package/lib/core/src/base/BaseEntity.d.ts.map +1 -0
- package/lib/core/src/base/BaseEntity.js +143 -0
- package/lib/core/src/base/BaseEntity.js.map +1 -0
- package/lib/core/src/base/BaseRepository.d.ts +124 -0
- package/lib/core/src/base/BaseRepository.d.ts.map +1 -0
- package/lib/core/src/base/BaseRepository.js +414 -0
- package/lib/core/src/base/BaseRepository.js.map +1 -0
- package/lib/core/src/base/BaseService.d.ts +89 -0
- package/lib/core/src/base/BaseService.d.ts.map +1 -0
- package/lib/core/src/base/BaseService.js +342 -0
- package/lib/core/src/base/BaseService.js.map +1 -0
- package/lib/core/src/base/index.d.ts +8 -0
- package/lib/core/src/base/index.d.ts.map +1 -0
- package/lib/core/src/base/index.js +24 -0
- package/lib/core/src/base/index.js.map +1 -0
- package/lib/core/src/config/app.config.d.ts +70 -0
- package/lib/core/src/config/app.config.d.ts.map +1 -0
- package/lib/core/src/config/app.config.js +106 -0
- package/lib/core/src/config/app.config.js.map +1 -0
- package/lib/core/src/config/auth.config.d.ts +54 -0
- package/lib/core/src/config/auth.config.d.ts.map +1 -0
- package/lib/core/src/config/auth.config.js +88 -0
- package/lib/core/src/config/auth.config.js.map +1 -0
- package/lib/core/src/config/cache.config.d.ts +47 -0
- package/lib/core/src/config/cache.config.d.ts.map +1 -0
- package/lib/core/src/config/cache.config.js +225 -0
- package/lib/core/src/config/cache.config.js.map +1 -0
- package/lib/core/src/config/communications.config.d.ts +175 -0
- package/lib/core/src/config/communications.config.d.ts.map +1 -0
- package/lib/core/src/config/communications.config.js +219 -0
- package/lib/core/src/config/communications.config.js.map +1 -0
- package/lib/core/src/config/database.config.d.ts +68 -0
- package/lib/core/src/config/database.config.d.ts.map +1 -0
- package/lib/core/src/config/database.config.js +95 -0
- package/lib/core/src/config/database.config.js.map +1 -0
- package/lib/core/src/config/firebase-event-mapping.config.d.ts +41 -0
- package/lib/core/src/config/firebase-event-mapping.config.d.ts.map +1 -0
- package/lib/core/src/config/firebase-event-mapping.config.js +180 -0
- package/lib/core/src/config/firebase-event-mapping.config.js.map +1 -0
- package/lib/core/src/config/firestore.config.d.ts +61 -0
- package/lib/core/src/config/firestore.config.d.ts.map +1 -0
- package/lib/core/src/config/firestore.config.js +74 -0
- package/lib/core/src/config/firestore.config.js.map +1 -0
- package/lib/core/src/config/index.d.ts +15 -0
- package/lib/core/src/config/index.d.ts.map +1 -0
- package/lib/core/src/config/index.js +41 -0
- package/lib/core/src/config/index.js.map +1 -0
- package/lib/core/src/config/maps.config.d.ts +31 -0
- package/lib/core/src/config/maps.config.d.ts.map +1 -0
- package/lib/core/src/config/maps.config.js +50 -0
- package/lib/core/src/config/maps.config.js.map +1 -0
- package/lib/core/src/config/middleware.config.d.ts +57 -0
- package/lib/core/src/config/middleware.config.d.ts.map +1 -0
- package/lib/core/src/config/middleware.config.js +68 -0
- package/lib/core/src/config/middleware.config.js.map +1 -0
- package/lib/core/src/config/tokens.config.d.ts +53 -0
- package/lib/core/src/config/tokens.config.d.ts.map +1 -0
- package/lib/core/src/config/tokens.config.js +129 -0
- package/lib/core/src/config/tokens.config.js.map +1 -0
- package/lib/core/src/generator/generator.d.ts +38 -0
- package/lib/core/src/generator/generator.d.ts.map +1 -0
- package/lib/core/src/generator/generator.js +159 -0
- package/lib/core/src/generator/generator.js.map +1 -0
- package/lib/core/src/generator/index.d.ts +7 -0
- package/lib/core/src/generator/index.d.ts.map +1 -0
- package/lib/core/src/generator/index.js +23 -0
- package/lib/core/src/generator/index.js.map +1 -0
- package/lib/core/src/generator/parser.d.ts +10 -0
- package/lib/core/src/generator/parser.d.ts.map +1 -0
- package/lib/core/src/generator/parser.js +197 -0
- package/lib/core/src/generator/parser.js.map +1 -0
- package/lib/core/src/generator/types.d.ts +112 -0
- package/lib/core/src/generator/types.d.ts.map +1 -0
- package/lib/core/src/generator/types.js +7 -0
- package/lib/core/src/generator/types.js.map +1 -0
- package/lib/core/src/index.d.ts +19 -0
- package/lib/core/src/index.d.ts.map +1 -0
- package/lib/core/src/index.js +46 -0
- package/lib/core/src/index.js.map +1 -0
- package/lib/core/src/middleware/auth.middleware.d.ts +57 -0
- package/lib/core/src/middleware/auth.middleware.d.ts.map +1 -0
- package/lib/core/src/middleware/auth.middleware.js +256 -0
- package/lib/core/src/middleware/auth.middleware.js.map +1 -0
- package/lib/core/src/middleware/cors.middleware.d.ts +13 -0
- package/lib/core/src/middleware/cors.middleware.d.ts.map +1 -0
- package/lib/core/src/middleware/cors.middleware.js +50 -0
- package/lib/core/src/middleware/cors.middleware.js.map +1 -0
- package/lib/core/src/middleware/error.middleware.d.ts +46 -0
- package/lib/core/src/middleware/error.middleware.d.ts.map +1 -0
- package/lib/core/src/middleware/error.middleware.js +174 -0
- package/lib/core/src/middleware/error.middleware.js.map +1 -0
- package/lib/core/src/middleware/index.d.ts +11 -0
- package/lib/core/src/middleware/index.d.ts.map +1 -0
- package/lib/core/src/middleware/index.js +27 -0
- package/lib/core/src/middleware/index.js.map +1 -0
- package/lib/core/src/middleware/logging.middleware.d.ts +10 -0
- package/lib/core/src/middleware/logging.middleware.d.ts.map +1 -0
- package/lib/core/src/middleware/logging.middleware.js +87 -0
- package/lib/core/src/middleware/logging.middleware.js.map +1 -0
- package/lib/core/src/middleware/rateLimit.middleware.d.ts +26 -0
- package/lib/core/src/middleware/rateLimit.middleware.d.ts.map +1 -0
- package/lib/core/src/middleware/rateLimit.middleware.js +105 -0
- package/lib/core/src/middleware/rateLimit.middleware.js.map +1 -0
- package/lib/core/src/middleware/requestId.middleware.d.ts +11 -0
- package/lib/core/src/middleware/requestId.middleware.d.ts.map +1 -0
- package/lib/core/src/middleware/requestId.middleware.js +26 -0
- package/lib/core/src/middleware/requestId.middleware.js.map +1 -0
- package/lib/core/src/middleware/validation.middleware.d.ts +25 -0
- package/lib/core/src/middleware/validation.middleware.d.ts.map +1 -0
- package/lib/core/src/middleware/validation.middleware.js +133 -0
- package/lib/core/src/middleware/validation.middleware.js.map +1 -0
- package/lib/core/src/types/errors.d.ts +119 -0
- package/lib/core/src/types/errors.d.ts.map +1 -0
- package/lib/core/src/types/errors.js +210 -0
- package/lib/core/src/types/errors.js.map +1 -0
- package/lib/utils-cache-connector/src/cache-connector.d.ts +139 -0
- package/lib/utils-cache-connector/src/cache-connector.d.ts.map +1 -0
- package/lib/utils-cache-connector/src/cache-connector.js +277 -0
- package/lib/utils-cache-connector/src/cache-connector.js.map +1 -0
- package/lib/utils-cache-connector/src/index.d.ts +52 -0
- package/lib/utils-cache-connector/src/index.d.ts.map +1 -0
- package/lib/utils-cache-connector/src/index.js +103 -0
- package/lib/utils-cache-connector/src/index.js.map +1 -0
- package/lib/utils-cache-connector/src/providers/base-cache-provider.d.ts +95 -0
- package/lib/utils-cache-connector/src/providers/base-cache-provider.d.ts.map +1 -0
- package/lib/utils-cache-connector/src/providers/base-cache-provider.js +120 -0
- package/lib/utils-cache-connector/src/providers/base-cache-provider.js.map +1 -0
- package/lib/utils-cache-connector/src/providers/firestore-cache-provider.d.ts +58 -0
- package/lib/utils-cache-connector/src/providers/firestore-cache-provider.d.ts.map +1 -0
- package/lib/utils-cache-connector/src/providers/firestore-cache-provider.js +418 -0
- package/lib/utils-cache-connector/src/providers/firestore-cache-provider.js.map +1 -0
- package/lib/utils-cache-connector/src/providers/memory-cache-provider.d.ts +57 -0
- package/lib/utils-cache-connector/src/providers/memory-cache-provider.d.ts.map +1 -0
- package/lib/utils-cache-connector/src/providers/memory-cache-provider.js +217 -0
- package/lib/utils-cache-connector/src/providers/memory-cache-provider.js.map +1 -0
- package/lib/utils-cache-connector/src/providers/noop-cache-provider.d.ts +21 -0
- package/lib/utils-cache-connector/src/providers/noop-cache-provider.d.ts.map +1 -0
- package/lib/utils-cache-connector/src/providers/noop-cache-provider.js +42 -0
- package/lib/utils-cache-connector/src/providers/noop-cache-provider.js.map +1 -0
- package/lib/utils-cache-connector/src/providers/redis-cache-provider.d.ts +64 -0
- package/lib/utils-cache-connector/src/providers/redis-cache-provider.d.ts.map +1 -0
- package/lib/utils-cache-connector/src/providers/redis-cache-provider.js +414 -0
- package/lib/utils-cache-connector/src/providers/redis-cache-provider.js.map +1 -0
- package/lib/utils-cache-connector/src/types.d.ts +342 -0
- package/lib/utils-cache-connector/src/types.d.ts.map +1 -0
- package/lib/utils-cache-connector/src/types.js +8 -0
- package/lib/utils-cache-connector/src/types.js.map +1 -0
- package/lib/utils-events/src/event-bus.d.ts +42 -0
- package/lib/utils-events/src/event-bus.d.ts.map +1 -0
- package/lib/utils-events/src/event-bus.js +93 -0
- package/lib/utils-events/src/event-bus.js.map +1 -0
- package/lib/utils-events/src/event-types.d.ts +146 -0
- package/lib/utils-events/src/event-types.d.ts.map +1 -0
- package/lib/utils-events/src/event-types.js +49 -0
- package/lib/utils-events/src/event-types.js.map +1 -0
- package/lib/utils-events/src/index.d.ts +7 -0
- package/lib/utils-events/src/index.d.ts.map +1 -0
- package/lib/utils-events/src/index.js +11 -0
- package/lib/utils-events/src/index.js.map +1 -0
- package/lib/utils-logger/src/index.d.ts +12 -0
- package/lib/utils-logger/src/index.d.ts.map +1 -0
- package/lib/utils-logger/src/index.js +29 -0
- package/lib/utils-logger/src/index.js.map +1 -0
- package/lib/utils-logger/src/logger-types.d.ts +32 -0
- package/lib/utils-logger/src/logger-types.d.ts.map +1 -0
- package/lib/utils-logger/src/logger-types.js +17 -0
- package/lib/utils-logger/src/logger-types.js.map +1 -0
- package/lib/utils-logger/src/logger.d.ts +42 -0
- package/lib/utils-logger/src/logger.d.ts.map +1 -0
- package/lib/utils-logger/src/logger.js +123 -0
- package/lib/utils-logger/src/logger.js.map +1 -0
- package/package.json +49 -0
- package/src/templates/controller.hbs +48 -0
- package/src/templates/entity.hbs +80 -0
- package/src/templates/repository.hbs +56 -0
- package/src/templates/service.hbs +108 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Authentication Configuration
|
|
4
|
+
* JWT and auth provider settings
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.AUTH_CONFIG = void 0;
|
|
8
|
+
exports.getEnabledAuthProvider = getEnabledAuthProvider;
|
|
9
|
+
exports.validateAuthConfig = validateAuthConfig;
|
|
10
|
+
exports.AUTH_CONFIG = {
|
|
11
|
+
jwt: {
|
|
12
|
+
issuer: process.env.JWT_ISSUER || 'backend-boilerplate',
|
|
13
|
+
audience: process.env.JWT_AUDIENCE || 'backend-boilerplate-api',
|
|
14
|
+
expiresIn: process.env.JWT_EXPIRES_IN || '1h',
|
|
15
|
+
refreshTokenExpiresIn: process.env.JWT_REFRESH_EXPIRES_IN || '7d',
|
|
16
|
+
},
|
|
17
|
+
providers: {
|
|
18
|
+
firebase: {
|
|
19
|
+
enabled: true,
|
|
20
|
+
projectId: process.env.FIREBASE_PROJECT_ID,
|
|
21
|
+
},
|
|
22
|
+
auth0: {
|
|
23
|
+
enabled: !!process.env.AUTH0_DOMAIN,
|
|
24
|
+
domain: process.env.AUTH0_DOMAIN,
|
|
25
|
+
clientId: process.env.AUTH0_CLIENT_ID,
|
|
26
|
+
clientSecret: process.env.AUTH0_CLIENT_SECRET,
|
|
27
|
+
},
|
|
28
|
+
clerk: {
|
|
29
|
+
enabled: !!process.env.CLERK_API_KEY,
|
|
30
|
+
apiKey: process.env.CLERK_API_KEY,
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
blacklist: {
|
|
34
|
+
enabled: process.env.TOKEN_BLACKLIST_ENABLED !== 'false',
|
|
35
|
+
cleanupIntervalMs: parseInt(process.env.TOKEN_BLACKLIST_CLEANUP_INTERVAL || '3600000', 10), // 1 hour
|
|
36
|
+
retentionDays: parseInt(process.env.TOKEN_BLACKLIST_RETENTION_DAYS || '30', 10),
|
|
37
|
+
},
|
|
38
|
+
session: {
|
|
39
|
+
maxConcurrentSessions: parseInt(process.env.MAX_CONCURRENT_SESSIONS || '5', 10),
|
|
40
|
+
slidingExpiration: process.env.SLIDING_EXPIRATION !== 'false',
|
|
41
|
+
},
|
|
42
|
+
security: {
|
|
43
|
+
requireEmailVerification: process.env.REQUIRE_EMAIL_VERIFICATION === 'true',
|
|
44
|
+
requireMFA: process.env.REQUIRE_MFA === 'true',
|
|
45
|
+
passwordMinLength: parseInt(process.env.PASSWORD_MIN_LENGTH || '8', 10),
|
|
46
|
+
maxLoginAttempts: parseInt(process.env.MAX_LOGIN_ATTEMPTS || '5', 10),
|
|
47
|
+
lockoutDurationMinutes: parseInt(process.env.LOCKOUT_DURATION_MINUTES || '15', 10),
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Get enabled auth provider
|
|
52
|
+
*/
|
|
53
|
+
function getEnabledAuthProvider() {
|
|
54
|
+
var _a, _b;
|
|
55
|
+
if (exports.AUTH_CONFIG.providers.firebase.enabled)
|
|
56
|
+
return 'firebase';
|
|
57
|
+
if ((_a = exports.AUTH_CONFIG.providers.auth0) === null || _a === void 0 ? void 0 : _a.enabled)
|
|
58
|
+
return 'auth0';
|
|
59
|
+
if ((_b = exports.AUTH_CONFIG.providers.clerk) === null || _b === void 0 ? void 0 : _b.enabled)
|
|
60
|
+
return 'clerk';
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Validate auth configuration
|
|
65
|
+
*/
|
|
66
|
+
function validateAuthConfig() {
|
|
67
|
+
var _a;
|
|
68
|
+
const errors = [];
|
|
69
|
+
const enabledProvider = getEnabledAuthProvider();
|
|
70
|
+
if (!enabledProvider) {
|
|
71
|
+
errors.push('At least one auth provider must be enabled');
|
|
72
|
+
}
|
|
73
|
+
if (exports.AUTH_CONFIG.providers.firebase.enabled && !exports.AUTH_CONFIG.providers.firebase.projectId) {
|
|
74
|
+
errors.push('FIREBASE_PROJECT_ID is required when Firebase auth is enabled');
|
|
75
|
+
}
|
|
76
|
+
if ((_a = exports.AUTH_CONFIG.providers.auth0) === null || _a === void 0 ? void 0 : _a.enabled) {
|
|
77
|
+
if (!exports.AUTH_CONFIG.providers.auth0.domain) {
|
|
78
|
+
errors.push('AUTH0_DOMAIN is required when Auth0 is enabled');
|
|
79
|
+
}
|
|
80
|
+
if (!exports.AUTH_CONFIG.providers.auth0.clientId) {
|
|
81
|
+
errors.push('AUTH0_CLIENT_ID is required when Auth0 is enabled');
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
if (errors.length > 0) {
|
|
85
|
+
throw new Error(`Auth configuration validation failed:\n${errors.join('\n')}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=auth.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.config.js","sourceRoot":"","sources":["../../../../src/config/auth.config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Cache Configuration
|
|
3
|
+
*
|
|
4
|
+
* Multi-level caching configuration for the application.
|
|
5
|
+
*
|
|
6
|
+
* Configuration Hierarchy:
|
|
7
|
+
* 1. Global Project Config (Master Switch)
|
|
8
|
+
* 2. Repository-Level Config (Per-Entity)
|
|
9
|
+
* 3. Method-Level Options (Runtime)
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* - Set CACHE_ENABLED=true to enable caching globally
|
|
13
|
+
* - Configure default provider and TTL
|
|
14
|
+
* - Individual repositories can opt-in and choose their provider
|
|
15
|
+
*/
|
|
16
|
+
import { CacheConfig, CacheProviderType } from '@xbg/utils-cache-connector';
|
|
17
|
+
/**
|
|
18
|
+
* Global cache configuration
|
|
19
|
+
*
|
|
20
|
+
* Master Configuration:
|
|
21
|
+
* - enabled: Master switch - if false, all caching is disabled
|
|
22
|
+
* - defaultProvider: Default cache provider for repositories
|
|
23
|
+
* - defaultTTL: Default time-to-live in seconds
|
|
24
|
+
* - namespace: Cache key namespace for versioning
|
|
25
|
+
*/
|
|
26
|
+
export declare const CACHE_CONFIG: CacheConfig;
|
|
27
|
+
/**
|
|
28
|
+
* Validate cache configuration
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateCacheConfig(): void;
|
|
31
|
+
/**
|
|
32
|
+
* Check if caching is enabled
|
|
33
|
+
*/
|
|
34
|
+
export declare function isCacheEnabled(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Get cache namespace
|
|
37
|
+
*/
|
|
38
|
+
export declare function getCacheNamespace(): string;
|
|
39
|
+
/**
|
|
40
|
+
* Get default cache TTL
|
|
41
|
+
*/
|
|
42
|
+
export declare function getDefaultCacheTTL(): number;
|
|
43
|
+
/**
|
|
44
|
+
* Get default cache provider
|
|
45
|
+
*/
|
|
46
|
+
export declare function getDefaultCacheProvider(): CacheProviderType;
|
|
47
|
+
//# sourceMappingURL=cache.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.config.d.ts","sourceRoot":"","sources":["../../../../src/config/cache.config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EACL,WAAW,EACX,iBAAiB,EAIlB,MAAM,4BAA4B,CAAC;AAEpC;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY,EAAE,WA+H1B,CAAC;AAEF;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CA2D1C;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAExC;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,MAAM,CAE1C;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,iBAAiB,CAE3D"}
|
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cache Configuration
|
|
4
|
+
*
|
|
5
|
+
* Multi-level caching configuration for the application.
|
|
6
|
+
*
|
|
7
|
+
* Configuration Hierarchy:
|
|
8
|
+
* 1. Global Project Config (Master Switch)
|
|
9
|
+
* 2. Repository-Level Config (Per-Entity)
|
|
10
|
+
* 3. Method-Level Options (Runtime)
|
|
11
|
+
*
|
|
12
|
+
* Usage:
|
|
13
|
+
* - Set CACHE_ENABLED=true to enable caching globally
|
|
14
|
+
* - Configure default provider and TTL
|
|
15
|
+
* - Individual repositories can opt-in and choose their provider
|
|
16
|
+
*/
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.CACHE_CONFIG = void 0;
|
|
19
|
+
exports.validateCacheConfig = validateCacheConfig;
|
|
20
|
+
exports.isCacheEnabled = isCacheEnabled;
|
|
21
|
+
exports.getCacheNamespace = getCacheNamespace;
|
|
22
|
+
exports.getDefaultCacheTTL = getDefaultCacheTTL;
|
|
23
|
+
exports.getDefaultCacheProvider = getDefaultCacheProvider;
|
|
24
|
+
/**
|
|
25
|
+
* Global cache configuration
|
|
26
|
+
*
|
|
27
|
+
* Master Configuration:
|
|
28
|
+
* - enabled: Master switch - if false, all caching is disabled
|
|
29
|
+
* - defaultProvider: Default cache provider for repositories
|
|
30
|
+
* - defaultTTL: Default time-to-live in seconds
|
|
31
|
+
* - namespace: Cache key namespace for versioning
|
|
32
|
+
*/
|
|
33
|
+
exports.CACHE_CONFIG = {
|
|
34
|
+
/**
|
|
35
|
+
* Master switch - set to 'true' to enable caching globally
|
|
36
|
+
* Default: false (caching disabled for new projects)
|
|
37
|
+
*/
|
|
38
|
+
enabled: process.env.CACHE_ENABLED === 'true',
|
|
39
|
+
/**
|
|
40
|
+
* Default provider for repositories that don't specify
|
|
41
|
+
* Options: 'memory', 'firestore', 'redis'
|
|
42
|
+
* Default: 'memory'
|
|
43
|
+
*/
|
|
44
|
+
defaultProvider: process.env.CACHE_DEFAULT_PROVIDER || 'memory',
|
|
45
|
+
/**
|
|
46
|
+
* Default TTL in seconds (300 = 5 minutes)
|
|
47
|
+
*/
|
|
48
|
+
defaultTTL: parseInt(process.env.CACHE_DEFAULT_TTL || '300', 10),
|
|
49
|
+
/**
|
|
50
|
+
* Cache namespace for versioning
|
|
51
|
+
* Change this to invalidate all cached data
|
|
52
|
+
* Default: 'v1'
|
|
53
|
+
*/
|
|
54
|
+
namespace: process.env.CACHE_NAMESPACE || 'v1',
|
|
55
|
+
/**
|
|
56
|
+
* Provider-specific configurations
|
|
57
|
+
*/
|
|
58
|
+
providers: {
|
|
59
|
+
/**
|
|
60
|
+
* Memory Cache Provider Configuration
|
|
61
|
+
*
|
|
62
|
+
* Best for:
|
|
63
|
+
* - Request-scoped caching
|
|
64
|
+
* - Hot data within a single function instance
|
|
65
|
+
* - Auth/permissions data
|
|
66
|
+
* - Configuration values
|
|
67
|
+
*
|
|
68
|
+
* Limitations:
|
|
69
|
+
* - Not shared across function instances
|
|
70
|
+
* - Lost on cold starts
|
|
71
|
+
* - Limited by instance memory
|
|
72
|
+
*/
|
|
73
|
+
memory: {
|
|
74
|
+
/**
|
|
75
|
+
* Maximum cache size in bytes
|
|
76
|
+
* Default: 100MB
|
|
77
|
+
*/
|
|
78
|
+
maxSize: parseInt(process.env.CACHE_MEMORY_MAX_SIZE_MB || '100', 10) * 1024 * 1024,
|
|
79
|
+
/**
|
|
80
|
+
* Cleanup check period in seconds
|
|
81
|
+
* Default: 60 seconds
|
|
82
|
+
*/
|
|
83
|
+
checkPeriod: parseInt(process.env.CACHE_MEMORY_CHECK_PERIOD || '60', 10),
|
|
84
|
+
/**
|
|
85
|
+
* Whether to clone values (prevents mutations)
|
|
86
|
+
* Default: false (better performance)
|
|
87
|
+
*/
|
|
88
|
+
useClones: process.env.CACHE_MEMORY_USE_CLONES === 'true',
|
|
89
|
+
},
|
|
90
|
+
/**
|
|
91
|
+
* Firestore Cache Provider Configuration
|
|
92
|
+
*
|
|
93
|
+
* Best for:
|
|
94
|
+
* - Medium-traffic repositories
|
|
95
|
+
* - Data shared across function instances
|
|
96
|
+
* - Cache data that should survive cold starts
|
|
97
|
+
*
|
|
98
|
+
* Trade-offs:
|
|
99
|
+
* - Latency: ~50-100ms (vs memory ~1-5ms)
|
|
100
|
+
* - Cost: Firestore read/write operations
|
|
101
|
+
* - Size limit: 1MB per document
|
|
102
|
+
*/
|
|
103
|
+
firestore: {
|
|
104
|
+
/**
|
|
105
|
+
* Database to use for cache storage
|
|
106
|
+
* Default: 'main'
|
|
107
|
+
*/
|
|
108
|
+
database: process.env.CACHE_FIRESTORE_DATABASE || 'main',
|
|
109
|
+
/**
|
|
110
|
+
* Collection name for cache entries
|
|
111
|
+
* Default: '_cache'
|
|
112
|
+
*/
|
|
113
|
+
collection: process.env.CACHE_FIRESTORE_COLLECTION || '_cache',
|
|
114
|
+
/**
|
|
115
|
+
* Enable automatic cleanup of expired entries
|
|
116
|
+
* Default: true
|
|
117
|
+
*/
|
|
118
|
+
enableCleanup: process.env.CACHE_FIRESTORE_ENABLE_CLEANUP !== 'false',
|
|
119
|
+
/**
|
|
120
|
+
* Cleanup interval in seconds
|
|
121
|
+
* Default: 3600 (1 hour)
|
|
122
|
+
*/
|
|
123
|
+
cleanupInterval: parseInt(process.env.CACHE_FIRESTORE_CLEANUP_INTERVAL || '3600', 10),
|
|
124
|
+
},
|
|
125
|
+
/**
|
|
126
|
+
* Redis Cache Provider Configuration (Optional)
|
|
127
|
+
*
|
|
128
|
+
* Best for:
|
|
129
|
+
* - High-traffic applications (>1M requests/month)
|
|
130
|
+
* - Sub-10ms response time requirements
|
|
131
|
+
* - Cache sizes exceeding Firestore limits
|
|
132
|
+
* - Advanced features (pub/sub, sorted sets)
|
|
133
|
+
*
|
|
134
|
+
* Cost: ~$50/month minimum (Google Cloud Memorystore)
|
|
135
|
+
*
|
|
136
|
+
* Note: Only configured if CACHE_REDIS_HOST is set
|
|
137
|
+
*/
|
|
138
|
+
redis: process.env.CACHE_REDIS_HOST
|
|
139
|
+
? {
|
|
140
|
+
host: process.env.CACHE_REDIS_HOST,
|
|
141
|
+
port: parseInt(process.env.CACHE_REDIS_PORT || '6379', 10),
|
|
142
|
+
password: process.env.CACHE_REDIS_PASSWORD,
|
|
143
|
+
db: parseInt(process.env.CACHE_REDIS_DB || '0', 10),
|
|
144
|
+
connectTimeout: parseInt(process.env.CACHE_REDIS_CONNECT_TIMEOUT || '5000', 10),
|
|
145
|
+
tls: process.env.CACHE_REDIS_TLS === 'true',
|
|
146
|
+
}
|
|
147
|
+
: undefined,
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Validate cache configuration
|
|
152
|
+
*/
|
|
153
|
+
function validateCacheConfig() {
|
|
154
|
+
const errors = [];
|
|
155
|
+
// Validate default provider
|
|
156
|
+
const validProviders = ['memory', 'firestore', 'redis', 'noop'];
|
|
157
|
+
if (!validProviders.includes(exports.CACHE_CONFIG.defaultProvider)) {
|
|
158
|
+
errors.push(`Invalid default provider: ${exports.CACHE_CONFIG.defaultProvider}`);
|
|
159
|
+
}
|
|
160
|
+
// Validate default TTL
|
|
161
|
+
if (exports.CACHE_CONFIG.defaultTTL <= 0) {
|
|
162
|
+
errors.push('Default TTL must be greater than 0');
|
|
163
|
+
}
|
|
164
|
+
// Validate namespace
|
|
165
|
+
if (!exports.CACHE_CONFIG.namespace || exports.CACHE_CONFIG.namespace.trim() === '') {
|
|
166
|
+
errors.push('Cache namespace is required');
|
|
167
|
+
}
|
|
168
|
+
// Validate memory provider config
|
|
169
|
+
if (exports.CACHE_CONFIG.providers.memory.maxSize <= 0) {
|
|
170
|
+
errors.push('Memory cache max size must be greater than 0');
|
|
171
|
+
}
|
|
172
|
+
if (exports.CACHE_CONFIG.providers.memory.checkPeriod <= 0) {
|
|
173
|
+
errors.push('Memory cache check period must be greater than 0');
|
|
174
|
+
}
|
|
175
|
+
// Validate firestore provider config
|
|
176
|
+
if (!exports.CACHE_CONFIG.providers.firestore.database) {
|
|
177
|
+
errors.push('Firestore cache database is required');
|
|
178
|
+
}
|
|
179
|
+
if (!exports.CACHE_CONFIG.providers.firestore.collection) {
|
|
180
|
+
errors.push('Firestore cache collection is required');
|
|
181
|
+
}
|
|
182
|
+
if (exports.CACHE_CONFIG.providers.firestore.cleanupInterval <= 0) {
|
|
183
|
+
errors.push('Firestore cache cleanup interval must be greater than 0');
|
|
184
|
+
}
|
|
185
|
+
// Validate redis provider config if configured
|
|
186
|
+
if (exports.CACHE_CONFIG.providers.redis) {
|
|
187
|
+
if (!exports.CACHE_CONFIG.providers.redis.host) {
|
|
188
|
+
errors.push('Redis host is required when Redis is configured');
|
|
189
|
+
}
|
|
190
|
+
if (exports.CACHE_CONFIG.providers.redis.port <= 0 || exports.CACHE_CONFIG.providers.redis.port > 65535) {
|
|
191
|
+
errors.push('Redis port must be between 1 and 65535');
|
|
192
|
+
}
|
|
193
|
+
if (exports.CACHE_CONFIG.providers.redis.db < 0) {
|
|
194
|
+
errors.push('Redis database number must be >= 0');
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
if (errors.length > 0) {
|
|
198
|
+
throw new Error(`Cache configuration validation failed:\n${errors.join('\n')}`);
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Check if caching is enabled
|
|
203
|
+
*/
|
|
204
|
+
function isCacheEnabled() {
|
|
205
|
+
return exports.CACHE_CONFIG.enabled;
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Get cache namespace
|
|
209
|
+
*/
|
|
210
|
+
function getCacheNamespace() {
|
|
211
|
+
return exports.CACHE_CONFIG.namespace;
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get default cache TTL
|
|
215
|
+
*/
|
|
216
|
+
function getDefaultCacheTTL() {
|
|
217
|
+
return exports.CACHE_CONFIG.defaultTTL;
|
|
218
|
+
}
|
|
219
|
+
/**
|
|
220
|
+
* Get default cache provider
|
|
221
|
+
*/
|
|
222
|
+
function getDefaultCacheProvider() {
|
|
223
|
+
return exports.CACHE_CONFIG.defaultProvider;
|
|
224
|
+
}
|
|
225
|
+
//# sourceMappingURL=cache.config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cache.config.js","sourceRoot":"","sources":["../../../../src/config/cache.config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Communications Configuration
|
|
3
|
+
* Settings for Email, SMS, CRM, Realtime, Push Notifications, Journeys, ERP, Work Management, Survey, and Document integrations
|
|
4
|
+
*/
|
|
5
|
+
export interface CommunicationsConfig {
|
|
6
|
+
email: EmailConfig;
|
|
7
|
+
sms: SMSConfig;
|
|
8
|
+
crm: CRMConfig;
|
|
9
|
+
realtime: RealtimeConfig;
|
|
10
|
+
pushNotifications: PushNotificationsConfig;
|
|
11
|
+
journey: JourneyConfig;
|
|
12
|
+
erp: ERPConfig;
|
|
13
|
+
workManagement: WorkManagementConfig;
|
|
14
|
+
survey: SurveyConfig;
|
|
15
|
+
document: DocumentConfig;
|
|
16
|
+
}
|
|
17
|
+
export interface EmailConfig {
|
|
18
|
+
enabled: boolean;
|
|
19
|
+
provider: 'mailjet' | 'ortto';
|
|
20
|
+
fromAddress: string;
|
|
21
|
+
fromName: string;
|
|
22
|
+
providers: {
|
|
23
|
+
mailjet?: {
|
|
24
|
+
apiKey: string;
|
|
25
|
+
secretKey: string;
|
|
26
|
+
};
|
|
27
|
+
ortto?: {
|
|
28
|
+
apiKey: string;
|
|
29
|
+
region?: string;
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
defaults: {
|
|
33
|
+
replyTo?: string;
|
|
34
|
+
trackOpens: boolean;
|
|
35
|
+
trackClicks: boolean;
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
export interface SMSConfig {
|
|
39
|
+
enabled: boolean;
|
|
40
|
+
provider: 'twilio' | 'messagebird';
|
|
41
|
+
providers: {
|
|
42
|
+
twilio?: {
|
|
43
|
+
accountSid: string;
|
|
44
|
+
authToken: string;
|
|
45
|
+
fromNumber: string;
|
|
46
|
+
};
|
|
47
|
+
messagebird?: {
|
|
48
|
+
apiKey: string;
|
|
49
|
+
originator: string;
|
|
50
|
+
fromNumber: string;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
53
|
+
defaults: {
|
|
54
|
+
validityPeriod: number;
|
|
55
|
+
enableDeliveryReports: boolean;
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export interface CRMConfig {
|
|
59
|
+
enabled: boolean;
|
|
60
|
+
provider: 'hubspot' | 'salesforce' | 'attio';
|
|
61
|
+
syncOnEvents: string[];
|
|
62
|
+
providers: {
|
|
63
|
+
hubspot?: {
|
|
64
|
+
apiKey: string;
|
|
65
|
+
};
|
|
66
|
+
salesforce?: {
|
|
67
|
+
clientId: string;
|
|
68
|
+
clientSecret: string;
|
|
69
|
+
loginUrl: string;
|
|
70
|
+
apiVersion: string;
|
|
71
|
+
};
|
|
72
|
+
attio?: {
|
|
73
|
+
apiKey: string;
|
|
74
|
+
};
|
|
75
|
+
};
|
|
76
|
+
sync: {
|
|
77
|
+
batchSize: number;
|
|
78
|
+
retryAttempts: number;
|
|
79
|
+
retryDelay: number;
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
export interface RealtimeConfig {
|
|
83
|
+
enabled: boolean;
|
|
84
|
+
provider: 'sse' | 'websocket';
|
|
85
|
+
providers: {
|
|
86
|
+
sse?: {
|
|
87
|
+
heartbeatInterval: number;
|
|
88
|
+
reconnectDelay: number;
|
|
89
|
+
};
|
|
90
|
+
websocket?: {
|
|
91
|
+
port: number;
|
|
92
|
+
path: string;
|
|
93
|
+
pingInterval: number;
|
|
94
|
+
pongTimeout: number;
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
export interface PushNotificationsConfig {
|
|
99
|
+
enabled: boolean;
|
|
100
|
+
provider: 'fcm';
|
|
101
|
+
providers: {
|
|
102
|
+
fcm?: {
|
|
103
|
+
projectId: string;
|
|
104
|
+
serviceAccountPath?: string;
|
|
105
|
+
};
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
export interface JourneyConfig {
|
|
109
|
+
enabled: boolean;
|
|
110
|
+
provider: 'ortto';
|
|
111
|
+
providers: {
|
|
112
|
+
ortto?: {
|
|
113
|
+
apiKey: string;
|
|
114
|
+
region?: string;
|
|
115
|
+
};
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
export interface ERPConfig {
|
|
119
|
+
enabled: boolean;
|
|
120
|
+
provider: 'workday';
|
|
121
|
+
providers: {
|
|
122
|
+
workday?: {
|
|
123
|
+
tenant: string;
|
|
124
|
+
clientId: string;
|
|
125
|
+
clientSecret: string;
|
|
126
|
+
apiVersion: string;
|
|
127
|
+
};
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
export interface WorkManagementConfig {
|
|
131
|
+
enabled: boolean;
|
|
132
|
+
provider: 'clickup' | 'monday' | 'notion';
|
|
133
|
+
providers: {
|
|
134
|
+
clickup?: {
|
|
135
|
+
apiKey: string;
|
|
136
|
+
teamId?: string;
|
|
137
|
+
};
|
|
138
|
+
monday?: {
|
|
139
|
+
apiKey: string;
|
|
140
|
+
};
|
|
141
|
+
notion?: {
|
|
142
|
+
apiKey: string;
|
|
143
|
+
databaseId?: string;
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
export interface SurveyConfig {
|
|
148
|
+
enabled: boolean;
|
|
149
|
+
provider: 'surveymonkey' | 'typeform';
|
|
150
|
+
providers: {
|
|
151
|
+
surveymonkey?: {
|
|
152
|
+
apiKey: string;
|
|
153
|
+
accessToken: string;
|
|
154
|
+
};
|
|
155
|
+
typeform?: {
|
|
156
|
+
apiKey: string;
|
|
157
|
+
accessToken: string;
|
|
158
|
+
};
|
|
159
|
+
};
|
|
160
|
+
}
|
|
161
|
+
export interface DocumentConfig {
|
|
162
|
+
enabled: boolean;
|
|
163
|
+
provider: 'pandadoc';
|
|
164
|
+
providers: {
|
|
165
|
+
pandadoc?: {
|
|
166
|
+
apiKey: string;
|
|
167
|
+
};
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
export declare const COMMUNICATIONS_CONFIG: CommunicationsConfig;
|
|
171
|
+
/**
|
|
172
|
+
* Validate communications configuration
|
|
173
|
+
*/
|
|
174
|
+
export declare function validateCommunicationsConfig(): void;
|
|
175
|
+
//# sourceMappingURL=communications.config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"communications.config.d.ts","sourceRoot":"","sources":["../../../../src/config/communications.config.ts"],"names":[],"mappings":"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"}
|