UNPKG

cmp-aws-database

Version:

The package "cmp-aws-database" is for its database, which defines global tables. These tables are designed to be imported and used across multiple applications of "craft-my-plate."

133 lines 14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.envManager = exports.EnvironmentManager = void 0; // Environment-specific configurations const environmentConfigs = { DEV: { environment: 'DEV', database: { region: 'us-east-1', endpoint: 'http://localhost:8000', // Local DynamoDB maxAttempts: 3, tablePrefix: 'dev-', enableLogging: true, readConsistency: 'eventual' }, features: { enableParallelProcessing: false, enableBatchOperations: true, enableCaching: false }, monitoring: { enableMetrics: false, logLevel: 'debug' } }, PRODDEBUG: { environment: 'PRODDEBUG', database: { region: 'us-east-1', maxAttempts: 5, tablePrefix: 'proddebug-', enableLogging: true, readConsistency: 'eventual' }, features: { enableParallelProcessing: true, enableBatchOperations: true, enableCaching: true }, monitoring: { enableMetrics: true, logLevel: 'info' } }, PROD: { environment: 'PROD', database: { region: 'us-east-1', maxAttempts: 10, tablePrefix: '', enableLogging: false, readConsistency: 'strong' }, features: { enableParallelProcessing: true, enableBatchOperations: true, enableCaching: true }, monitoring: { enableMetrics: true, logLevel: 'warn' } }, test: { environment: 'test', database: { region: 'us-east-1', endpoint: 'http://localhost:8000', maxAttempts: 1, tablePrefix: 'test-', enableLogging: false, readConsistency: 'eventual' }, features: { enableParallelProcessing: false, enableBatchOperations: false, enableCaching: false }, monitoring: { enableMetrics: false, logLevel: 'error' } } }; class EnvironmentManager { constructor() { this.currentConfig = this.loadEnvironmentConfig(); } static getInstance() { if (!EnvironmentManager.instance) { EnvironmentManager.instance = new EnvironmentManager(); } return EnvironmentManager.instance; } loadEnvironmentConfig() { // Priority order: NODE_ENV -> ENVIRONMENT -> default to DEV const env = (process.env.NODE_ENV || process.env.ENVIRONMENT || 'DEV'); if (!environmentConfigs[env]) { console.warn(`Unknown environment: ${env}. Falling back to DEV.`); return environmentConfigs.DEV; } return environmentConfigs[env]; } getConfig() { return this.currentConfig; } getDatabaseConfig() { return this.currentConfig.database; } getEnvironment() { return this.currentConfig.environment; } isDEV() { return this.currentConfig.environment === 'DEV'; } isPROD() { return this.currentConfig.environment === 'PROD'; } isPRODDEBUG() { return this.currentConfig.environment === 'PRODDEBUG'; } isTest() { return this.currentConfig.environment === 'test'; } // Method to override environment at runtime (useful for testing) setEnvironment(environment) { this.currentConfig = environmentConfigs[environment]; } } exports.EnvironmentManager = EnvironmentManager; // Export singleton instance exports.envManager = EnvironmentManager.getInstance(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9lbnZpcm9ubWVudC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeUJBLHNDQUFzQztBQUN0QyxNQUFNLGtCQUFrQixHQUEyQztJQUMvRCxHQUFHLEVBQUU7UUFDRCxXQUFXLEVBQUUsS0FBSztRQUNsQixRQUFRLEVBQUU7WUFDTixNQUFNLEVBQUUsV0FBVztZQUNuQixRQUFRLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCO1lBQ3BELFdBQVcsRUFBRSxDQUFDO1lBQ2QsV0FBVyxFQUFFLE1BQU07WUFDbkIsYUFBYSxFQUFFLElBQUk7WUFDbkIsZUFBZSxFQUFFLFVBQVU7U0FDOUI7UUFDRCxRQUFRLEVBQUU7WUFDTix3QkFBd0IsRUFBRSxLQUFLO1lBQy9CLHFCQUFxQixFQUFFLElBQUk7WUFDM0IsYUFBYSxFQUFFLEtBQUs7U0FDdkI7UUFDRCxVQUFVLEVBQUU7WUFDUixhQUFhLEVBQUUsS0FBSztZQUNwQixRQUFRLEVBQUUsT0FBTztTQUNwQjtLQUNKO0lBQ0QsU0FBUyxFQUFFO1FBQ1AsV0FBVyxFQUFFLFdBQVc7UUFDeEIsUUFBUSxFQUFFO1lBQ04sTUFBTSxFQUFFLFdBQVc7WUFDbkIsV0FBVyxFQUFFLENBQUM7WUFDZCxXQUFXLEVBQUUsWUFBWTtZQUN6QixhQUFhLEVBQUUsSUFBSTtZQUNuQixlQUFlLEVBQUUsVUFBVTtTQUM5QjtRQUNELFFBQVEsRUFBRTtZQUNOLHdCQUF3QixFQUFFLElBQUk7WUFDOUIscUJBQXFCLEVBQUUsSUFBSTtZQUMzQixhQUFhLEVBQUUsSUFBSTtTQUN0QjtRQUNELFVBQVUsRUFBRTtZQUNSLGFBQWEsRUFBRSxJQUFJO1lBQ25CLFFBQVEsRUFBRSxNQUFNO1NBQ25CO0tBQ0o7SUFDRCxJQUFJLEVBQUU7UUFDRixXQUFXLEVBQUUsTUFBTTtRQUNuQixRQUFRLEVBQUU7WUFDTixNQUFN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LEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEVudmlyb25tZW50ID0gJ0RFVicgfCAnUFJPRERFQlVHJyB8ICdQUk9EJyB8ICd0ZXN0JztcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUNvbmZpZyB7XG4gICAgcmVnaW9uOiBzdHJpbmc7XG4gICAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gICAgbWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgICB0YWJsZVByZWZpeDogc3RyaW5nO1xuICAgIGVuYWJsZUxvZ2dpbmc6IGJvb2xlYW47XG4gICAgcmVhZENvbnNpc3RlbmN5OiAnZXZlbnR1YWwnIHwgJ3N0cm9uZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXJvbm1lbnRDb25maWcge1xuICAgIGVudmlyb25tZW50OiBFbnZpcm9ubWVudDtcbiAgICBkYXRhYmFzZTogRGF0YWJhc2VDb25maWc7XG4gICAgZmVhdHVyZXM6IHtcbiAgICAgICAgZW5hYmxlUGFyYWxsZWxQcm9jZXNzaW5nOiBib29sZWFuO1xuICAgICAgICBlbmFibGVCYXRjaE9wZXJhdGlvbnM6IGJvb2xlYW47XG4gICAgICAgIGVuYWJsZUNhY2hpbmc6IGJvb2xlYW47XG4gICAgfTtcbiAgICBtb25pdG9yaW5nOiB7XG4gICAgICAgIGVuYWJsZU1ldHJpY3M6IGJvb2xlYW47XG4gICAgICAgIGxvZ0xldmVsOiAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJztcbiAgICB9O1xufVxuXG4vLyBFbnZpcm9ubWVudC1zcGVjaWZpYyBjb25maWd1cmF0aW9uc1xuY29uc3QgZW52aXJvbm1lbnRDb25maWdzOiBSZWNvcmQ8RW52aXJvbm1lbnQsIEVudmlyb25tZW50Q29uZmlnPiA9IHtcbiAgICBERVY6IHtcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdERVYnLFxuICAgICAgICBkYXRhYmFzZToge1xuICAgICAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgICAgIGVuZHBvaW50OiAnaHR0cDovL2xvY2FsaG9zdDo4MDAwJywgLy8gTG9jYWwgRHluYW1vREJcbiAgICAgICAgICAgIG1heEF0dGVtcHRzOiAzLFxuICAgICAgICAgICAgdGFibGVQcmVmaXg6ICdkZXYtJyxcbiAgICAgICAgICAgIGVuYWJsZUxvZ2dpbmc6IHRydWUsXG4gICAgICAgICAgICByZWFkQ29uc2lzdGVuY3k6ICdldmVudHVhbCdcbiAgICAgICAgfSxcbiAgICAgICAgZmVhdHVyZXM6IHtcbiAgICAgICAgICAgIGVuYWJsZVBhcmFsbGVsUHJvY2Vzc2luZzogZmFsc2UsXG4gICAgICAgICAgICBlbmFibGVCYXRjaE9wZXJhdGlvbnM6IHRydWUsXG4gICAgICAgICAgICBlbmFibGVDYWNoaW5nOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBtb25pdG9yaW5nOiB7XG4gICAgICAgICAgICBlbmFibGVNZXRyaWNzOiBmYWxzZSxcbiAgICAgICAgICAgIGxvZ0xldmVsOiAnZGVidWcnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFBST0RERUJVRzoge1xuICAgICAgICBlbnZpcm9ubWVudDogJ1BST0RERUJVRycsXG4gICAgICAgIGRhdGFiYXNlOiB7XG4gICAgICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICAgICAgbWF4QXR0ZW1wdHM6IDUsXG4gICAgICAgICAgICB0YWJsZVByZWZpeDogJ3Byb2RkZWJ1Zy0nLFxuICAgICAgICAgICAgZW5hYmxlTG9nZ2luZzogdHJ1ZSxcbiAgICAgICAgICAgIHJlYWRDb25zaXN0ZW5jeTogJ2V2ZW50dWFsJ1xuICAgICAgICB9LFxuICAgICAgICBmZWF0dXJlczoge1xuICAgICAgICAgICAgZW5hYmxlUGFyYWxsZWxQcm9jZXNzaW5nOiB0cnVlLFxuICAgICAgICAgICAgZW5hYmxlQmF0Y2hPcGVyYXRpb25zOiB0cnVlLFxuICAgICAgICAgICAgZW5hYmxlQ2FjaGluZzogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBtb25pdG9yaW5nOiB7XG4gICAgICAgICAgICBlbmFibGVNZXRyaWNzOiB0cnVlLFxuICAgICAgICAgICAgbG9nTGV2ZWw6ICdpbmZvJ1xuICAgICAgICB9XG4gICAgfSxcbiAgICBQUk9EOiB7XG4gICAgICAgIGVudmlyb25tZW50OiAnUFJPRCcsXG4gICAgICAgIGRhdGFiYXNlOiB7XG4gICAgICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICAgICAgbWF4QXR0ZW1wdHM6IDEwLFxuICAgICAgICAgICAgdGFibGVQcmVmaXg6ICcnLFxuICAgICAgICAgICAgZW5hYmxlTG9nZ2luZzogZmFsc2UsXG4gICAgICAgICAgICByZWFkQ29uc2lzdGVuY3k6ICdzdHJvbmcnXG4gICAgICAgIH0sXG4gICAgICAgIGZlYXR1cmVzOiB7XG4gICAgICAgICAgICBlbmFibGVQYXJhbGxlbFByb2Nlc3Npbmc6IHRydWUsXG4gICAgICAgICAgICBlbmFibGVCYXRjaE9wZXJhdGlvbnM6IHRydWUsXG4gICAgICAgICAgICBlbmFibGVDYWNoaW5nOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIG1vbml0b3Jpbmc6IHtcbiAgICAgICAgICAgIGVuYWJsZU1ldHJpY3M6IHRydWUsXG4gICAgICAgICAgICBsb2dMZXZlbDogJ3dhcm4nXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHRlc3Q6IHtcbiAgICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgICAgZGF0YWJhc2U6IHtcbiAgICAgICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgICAgICBlbmRwb2ludDogJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMCcsXG4gICAgICAgICAgICBtYXhBdHRlbXB0czogMSxcbiAgICAgICAgICAgIHRhYmxlUHJlZml4OiAndGVzdC0nLFxuICAgICAgICAgICAgZW5hYmxlTG9nZ2luZzogZmFsc2UsXG4gICAgICAgICAgICByZWFkQ29uc2lzdGVuY3k6ICdldmVudHVhbCdcbiAgICAgICAgfSxcbiAgICAgICAgZmVhdHVyZXM6IHtcbiAgICAgICAgICAgIGVuYWJsZVBhcmFsbGVsUHJvY2Vzc2luZzogZmFsc2UsXG4gICAgICAgICAgICBlbmFibGVCYXRjaE9wZXJhdGlvbnM6IGZhbHNlLFxuICAgICAgICAgICAgZW5hYmxlQ2FjaGluZzogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgbW9uaXRvcmluZzoge1xuICAgICAgICAgICAgZW5hYmxlTWV0cmljczogZmFsc2UsXG4gICAgICAgICAgICBsb2dMZXZlbDogJ2Vycm9yJ1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50TWFuYWdlciB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2U6IEVudmlyb25tZW50TWFuYWdlcjtcbiAgICBwcml2YXRlIGN1cnJlbnRDb25maWc6IEVudmlyb25tZW50Q29uZmlnO1xuXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q29uZmlnID0gdGhpcy5sb2FkRW52aXJvbm1lbnRDb25maWcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEluc3RhbmNlKCk6IEVudmlyb25tZW50TWFuYWdlciB7XG4gICAgICAgIGlmICghRW52aXJvbm1lbnRNYW5hZ2VyLmluc3RhbmNlKSB7XG4gICAgICAgICAgICBFbnZpcm9ubWVudE1hbmFnZXIuaW5zdGFuY2UgPSBuZXcgRW52aXJvbm1lbnRNYW5hZ2VyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEVudmlyb25tZW50TWFuYWdlci5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRFbnZpcm9ubWVudENvbmZpZygpOiBFbnZpcm9ubWVudENvbmZpZyB7XG4gICAgICAgIC8vIFByaW9yaXR5IG9yZGVyOiBOT0RFX0VOViAtPiBFTlZJUk9OTUVOVCAtPiBkZWZhdWx0IHRvIERFVlxuICAgICAgICBjb25zdCBlbnYgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgcHJvY2Vzcy5lbnYuRU5WSVJPTk1FTlQgfHwgJ0RFVicpIGFzIEVudmlyb25tZW50O1xuXG4gICAgICAgIGlmICghZW52aXJvbm1lbnRDb25maWdzW2Vudl0pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5rbm93biBlbnZpcm9ubWVudDogJHtlbnZ9LiBGYWxsaW5nIGJhY2sgdG8gREVWLmApO1xuICAgICAgICAgICAgcmV0dXJuIGVudmlyb25tZW50Q29uZmlncy5ERVY7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW52aXJvbm1lbnRDb25maWdzW2Vudl07XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbmZpZygpOiBFbnZpcm9ubWVudENvbmZpZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRDb25maWc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERhdGFiYXNlQ29uZmlnKCk6IERhdGFiYXNlQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENvbmZpZy5kYXRhYmFzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW52aXJvbm1lbnQoKTogRW52aXJvbm1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Q29uZmlnLmVudmlyb25tZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0RFVigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENvbmZpZy5lbnZpcm9ubWVudCA9PT0gJ0RFVic7XG4gICAgfVxuXG4gICAgcHVibGljIGlzUFJPRCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENvbmZpZy5lbnZpcm9ubWVudCA9PT0gJ1BST0QnO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1BST0RERUJVRygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENvbmZpZy5lbnZpcm9ubWVudCA9PT0gJ1BST0RERUJVRyc7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVGVzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENvbmZpZy5lbnZpcm9ubWVudCA9PT0gJ3Rlc3QnO1xuICAgIH1cblxuICAgIC8vIE1ldGhvZCB0byBvdmVycmlkZSBlbnZpcm9ubWVudCBhdCBydW50aW1lICh1c2VmdWwgZm9yIHRlc3RpbmcpXG4gICAgcHVibGljIHNldEVudmlyb25tZW50KGVudmlyb25tZW50OiBFbnZpcm9ubWVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRDb25maWcgPSBlbnZpcm9ubWVudENvbmZpZ3NbZW52aXJvbm1lbnRdO1xuICAgIH1cbn1cblxuLy8gRXhwb3J0IHNpbmdsZXRvbiBpbnN0YW5jZVxuZXhwb3J0IGNvbnN0IGVudk1hbmFnZXIgPSBFbnZpcm9ubWVudE1hbmFnZXIuZ2V0SW5zdGFuY2UoKTtcbiJdfQ==