cmp-aws-database 1.1.107 → 1.2.0-dev.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/README.md CHANGED
@@ -1,14 +1,309 @@
1
- # Welcome to your CDK TypeScript project
1
+ # Craft My Plate Database Package
2
2
 
3
- This is a blank project for CDK development with TypeScript.
3
+ A comprehensive, environment-aware database package for the Craft My Plate application ecosystem. This package provides DynamoDB-based data access with automatic environment configuration.
4
4
 
5
- The `cdk.json` file tells the CDK Toolkit how to execute your app.
5
+ ## 🚀 Features
6
6
 
7
- ## Useful commands
7
+ - **Environment-Aware Configuration**: Automatically adapts to development, staging, production, and test environments
8
+ - **Dynamic Table Naming**: Environment-specific table prefixes (dev-, staging-, test-)
9
+ - **Feature Flags**: Environment-specific feature toggles (parallel processing, caching, etc.)
10
+ - **TypeScript Support**: Full TypeScript definitions and type safety
11
+ - **AWS CDK Integration**: Infrastructure as Code for database tables
12
+ - **Comprehensive DAO Layer**: Generic data access objects with environment-specific optimizations
8
13
 
9
- * `npm run build` compile typescript to js
10
- * `npm run watch` watch for changes and compile
11
- * `npm run test` perform the jest unit tests
12
- * `npx cdk deploy` deploy this stack to your default AWS account/region
13
- * `npx cdk diff` compare deployed stack with current state
14
- * `npx cdk synth` emits the synthesized CloudFormation template
14
+ ## 📦 Installation
15
+
16
+ ```bash
17
+ npm install cmp-aws-database
18
+ ```
19
+
20
+ ## 🎯 Quick Start
21
+
22
+ ### Basic Usage
23
+
24
+ ```typescript
25
+ import {
26
+ envManager,
27
+ TABLE_NAMES,
28
+ UserModel,
29
+ userDAO
30
+ } from 'cmp-aws-database';
31
+
32
+ // Check current environment
33
+ console.log('Environment:', envManager.getEnvironment());
34
+
35
+ // Use environment-aware table names
36
+ const userTableName = TABLE_NAMES.USER;
37
+
38
+ // Create and save a user
39
+ const user = new UserModel();
40
+ user.userId = 'user123';
41
+ user.email = 'test@example.com';
42
+
43
+ const savedUser = await userDAO.save(user, { userSub: 'auth-user-123' });
44
+ ```
45
+
46
+ ### Environment Configuration
47
+
48
+ The package automatically detects the environment based on `NODE_ENV` or `ENVIRONMENT` variables:
49
+
50
+ ```bash
51
+ # Development
52
+ export NODE_ENV=development
53
+
54
+ # Staging
55
+ export NODE_ENV=staging
56
+
57
+ # Production
58
+ export NODE_ENV=production
59
+
60
+ # Test
61
+ export NODE_ENV=test
62
+ ```
63
+
64
+ ## 🌍 Environment-Specific Behavior
65
+
66
+ ### DEV Environment
67
+ - **Database**: Local DynamoDB (http://localhost:8000)
68
+ - **Table Prefix**: `dev-`
69
+ - **Features**: Sequential processing, no caching
70
+ - **Logging**: Debug level
71
+ - **Branch**: `environment/DEV`
72
+ - **NPM Tag**: `@dev`
73
+
74
+ ### PRODDEBUG Environment
75
+ - **Database**: AWS DynamoDB
76
+ - **Table Prefix**: `proddebug-`
77
+ - **Features**: Parallel processing, caching enabled
78
+ - **Logging**: Info level
79
+ - **Branch**: `environment/PRODDEBUG`
80
+ - **NPM Tag**: `@proddebug`
81
+
82
+ ### PROD Environment
83
+ - **Database**: AWS DynamoDB
84
+ - **Table Prefix**: None (empty)
85
+ - **Features**: Parallel processing, caching enabled
86
+ - **Logging**: Warn level
87
+ - **Branch**: `environment/PROD`
88
+ - **NPM Tag**: `@latest`
89
+
90
+ ### Test Environment
91
+ - **Database**: Local DynamoDB (http://localhost:8000)
92
+ - **Table Prefix**: `test-`
93
+ - **Features**: Sequential processing, no caching
94
+ - **Logging**: Error level
95
+
96
+ ## 📚 Available Models and DAOs
97
+
98
+ ### Customer User Models
99
+ - `UserModel` / `userDAO`
100
+ - `OrderModel` / `orderDao`
101
+ - `CartModel` / `cartDAO`
102
+ - `WalletModel` / `walletDao`
103
+ - `PaymentModel` / `paymentDao`
104
+ - And many more...
105
+
106
+ ### Internal User Models
107
+ - `InternalUserModel` / `internalUserDao`
108
+ - `ActivityLogsModel` / `activityLogsDao`
109
+ - `QuotationsModel` / `quotationsDao`
110
+
111
+ ## 🔧 Advanced Usage
112
+
113
+ ### Environment-Specific Features
114
+
115
+ ```typescript
116
+ import { envManager } from 'cmp-aws-database';
117
+
118
+ const config = envManager.getConfig();
119
+
120
+ // Check if parallel processing is enabled
121
+ if (config.features.enableParallelProcessing) {
122
+ await userDAO.parallelBatchGet(users);
123
+ } else {
124
+ await userDAO.batchGet(users);
125
+ }
126
+
127
+ // Check if caching is enabled
128
+ if (config.features.enableCaching) {
129
+ // Implement caching logic
130
+ }
131
+ ```
132
+
133
+ ### Custom Table Names
134
+
135
+ ```typescript
136
+ import { TableNameManager } from 'cmp-aws-database';
137
+
138
+ const customTableName = TableNameManager.getTableName('MyCustomTable');
139
+ // Returns: dev-MyCustomTable, staging-MyCustomTable, or MyCustomTable
140
+ ```
141
+
142
+ ### Environment Override (Testing)
143
+
144
+ ```typescript
145
+ import { envManager } from 'cmp-aws-database';
146
+
147
+ // Override environment for testing
148
+ envManager.setEnvironment('test');
149
+ ```
150
+
151
+ ## 🏗️ Infrastructure
152
+
153
+ ### CDK Stack Deployment
154
+
155
+ ```typescript
156
+ import { CustomerAppDbStack, InternalUserDbStack } from 'cmp-aws-database';
157
+
158
+ // Deploy customer app database
159
+ const customerStack = new CustomerAppDbStack(app, 'CustomerAppDbStack');
160
+
161
+ // Deploy internal user database
162
+ const internalStack = new InternalUserDbStack(app, 'InternalUserDbStack');
163
+ ```
164
+
165
+ ### Available Tables
166
+
167
+ The package includes pre-configured tables for:
168
+ - User management
169
+ - Order processing
170
+ - Payment handling
171
+ - Inventory management
172
+ - Analytics and reporting
173
+ - And much more...
174
+
175
+ ## 🔍 Debugging
176
+
177
+ ### Environment Information
178
+
179
+ ```typescript
180
+ import { envManager } from 'cmp-aws-database';
181
+
182
+ console.log('Current environment:', envManager.getEnvironment());
183
+ console.log('Database config:', envManager.getDatabaseConfig());
184
+ console.log('Features enabled:', envManager.getConfig().features);
185
+ ```
186
+
187
+ ### Table Name Resolution
188
+
189
+ ```typescript
190
+ import { TABLE_NAMES, BASE_TABLE_NAMES } from 'cmp-aws-database';
191
+
192
+ console.log('Environment-aware table names:', TABLE_NAMES);
193
+ console.log('Base table names:', BASE_TABLE_NAMES);
194
+ ```
195
+
196
+ ## 📋 Migration Guide
197
+
198
+ ### From Hardcoded Configuration
199
+
200
+ **Before:**
201
+ ```typescript
202
+ const tableName = 'UserTable';
203
+ const client = new DynamoDB({ maxAttempts: 10 });
204
+ ```
205
+
206
+ **After:**
207
+ ```typescript
208
+ import { TABLE_NAMES, DatabaseFactory } from 'cmp-aws-database';
209
+
210
+ const tableName = TABLE_NAMES.USER;
211
+ const client = DatabaseFactory.getDynamoDBClient();
212
+ ```
213
+
214
+ ## 🤝 Contributing
215
+
216
+ 1. Fork the repository
217
+ 2. Create a feature branch
218
+ 3. Make your changes
219
+ 4. Add tests for new functionality
220
+ 5. Submit a pull request
221
+
222
+ ## 📄 License
223
+
224
+ Apache-2.0
225
+
226
+ ## 🆘 Support
227
+
228
+ - **Issues**: [GitHub Issues](https://github.com/Surajpatel24-craftmyplate/craft-my-plate-database/issues)
229
+ - **Documentation**: [Package Documentation](https://github.com/Surajpatel24-craftmyplate/craft-my-plate-database#readme)
230
+
231
+ ## 🌿 Branch-Based Publishing Strategy
232
+
233
+ ### **Branch Structure**
234
+ ```
235
+ master (main development)
236
+ ├── environment/DEV (DEV environment)
237
+ ├── environment/PRODDEBUG (PRODDEBUG environment)
238
+ └── environment/PROD (PROD environment)
239
+ ```
240
+
241
+ ### **Publishing Workflow**
242
+
243
+ #### **1. Create Environment Branches**
244
+ ```bash
245
+ # Create all environment branches
246
+ npm run create-branches
247
+ ```
248
+
249
+ #### **2. DEV Environment Publishing**
250
+ ```bash
251
+ # Switch to DEV branch
252
+ git checkout environment/DEV
253
+
254
+ # Make changes and commit
255
+ git add .
256
+ git commit -m "Add new feature for DEV"
257
+ git push origin environment/DEV
258
+
259
+ # Publish to npm with @dev tag
260
+ npm run deploy:dev
261
+ ```
262
+ **Result**: `cmp-aws-database@dev` (version: 1.1.107-dev.1)
263
+
264
+ #### **3. PRODDEBUG Environment Publishing**
265
+ ```bash
266
+ # Switch to PRODDEBUG branch
267
+ git checkout environment/PRODDEBUG
268
+
269
+ # Promote changes from DEV
270
+ ./scripts/git-workflow.sh promote DEV PRODDEBUG
271
+
272
+ # Publish to npm with @proddebug tag
273
+ npm run deploy:proddebug
274
+ ```
275
+ **Result**: `cmp-aws-database@proddebug` (version: 1.1.107-proddebug.1)
276
+
277
+ #### **4. PROD Environment Publishing**
278
+ ```bash
279
+ # Switch to PROD branch
280
+ git checkout environment/PROD
281
+
282
+ # Promote changes from PRODDEBUG
283
+ ./scripts/git-workflow.sh promote PRODDEBUG PROD
284
+
285
+ # Publish to npm with @latest tag
286
+ npm run deploy:prod
287
+ ```
288
+ **Result**: `cmp-aws-database@latest` (version: 1.1.107)
289
+
290
+ ### **Installation Commands**
291
+ ```bash
292
+ # Install DEV version
293
+ npm install cmp-aws-database@dev
294
+
295
+ # Install PRODDEBUG version
296
+ npm install cmp-aws-database@proddebug
297
+
298
+ # Install PROD version (latest)
299
+ npm install cmp-aws-database@latest
300
+ ```
301
+
302
+ ## 🔄 Version History
303
+
304
+ - **1.1.107**: Current version with environment-aware configuration
305
+ - **Previous versions**: Legacy hardcoded configuration
306
+
307
+ ---
308
+
309
+ **Note**: This package uses branch-based publishing where each environment has its own branch and publishes with different NPM tags. The same package name is maintained across all environments while providing environment-specific configurations.
@@ -0,0 +1,12 @@
1
+ import { DynamoDB } from '@aws-sdk/client-dynamodb';
2
+ import { DataMapper } from '@nova-odm/mapper';
3
+ export declare class DatabaseFactory {
4
+ private static dynamoDBInstance;
5
+ private static mapperInstance;
6
+ static getDynamoDBClient(): DynamoDB;
7
+ static getDataMapper(): DataMapper;
8
+ static getTableName(baseTableName: string): string;
9
+ static resetInstances(): void;
10
+ }
11
+ export declare const dynamoDB: DynamoDB;
12
+ export declare const mapper: DataMapper;
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.mapper = exports.dynamoDB = exports.DatabaseFactory = void 0;
4
+ const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
5
+ const mapper_1 = require("@nova-odm/mapper");
6
+ const environment_config_1 = require("./environment-config");
7
+ class DatabaseFactory {
8
+ static getDynamoDBClient() {
9
+ if (!DatabaseFactory.dynamoDBInstance) {
10
+ const config = environment_config_1.envManager.getDatabaseConfig();
11
+ const dynamoConfig = {
12
+ region: config.region,
13
+ maxAttempts: config.maxAttempts
14
+ };
15
+ // Add endpoint for local development
16
+ if (config.endpoint) {
17
+ dynamoConfig.endpoint = config.endpoint;
18
+ }
19
+ DatabaseFactory.dynamoDBInstance = new client_dynamodb_1.DynamoDB(dynamoConfig);
20
+ }
21
+ return DatabaseFactory.dynamoDBInstance;
22
+ }
23
+ static getDataMapper() {
24
+ if (!DatabaseFactory.mapperInstance) {
25
+ const client = DatabaseFactory.getDynamoDBClient();
26
+ DatabaseFactory.mapperInstance = new mapper_1.DataMapper({ client });
27
+ }
28
+ return DatabaseFactory.mapperInstance;
29
+ }
30
+ static getTableName(baseTableName) {
31
+ const config = environment_config_1.envManager.getDatabaseConfig();
32
+ return `${config.tablePrefix}${baseTableName}`;
33
+ }
34
+ static resetInstances() {
35
+ DatabaseFactory.dynamoDBInstance = undefined;
36
+ DatabaseFactory.mapperInstance = undefined;
37
+ }
38
+ }
39
+ exports.DatabaseFactory = DatabaseFactory;
40
+ // Export singleton instances for backward compatibility
41
+ exports.dynamoDB = DatabaseFactory.getDynamoDBClient();
42
+ exports.mapper = DatabaseFactory.getDataMapper();
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGF0YWJhc2UtZmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvZGF0YWJhc2UtZmFjdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSw4REFBb0Q7QUFDcEQsNkNBQThDO0FBQzlDLDZEQUFrRTtBQUVsRSxNQUFhLGVBQWU7SUFJakIsTUFBTSxDQUFDLGlCQUFpQjtRQUMzQixJQUFJLENBQUMsZUFBZSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDcEMsTUFBTSxNQUFNLEdBQUcsK0JBQVUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBRTlDLE1BQU0sWUFBWSxHQUFRO2dCQUN0QixNQUFNLEVBQUUsTUFBTSxDQUFDLE1BQU07Z0JBQ3JCLFdBQVcsRUFBRSxNQUFNLENBQUMsV0FBVzthQUNsQyxDQUFDO1lBRUYscUNBQXFDO1lBQ3JDLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixZQUFZLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDNUMsQ0FBQztZQUVELGVBQWUsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLDBCQUFRLENBQUMsWUFBWSxDQUFDLENBQUM7UUFDbEUsQ0FBQztRQUVELE9BQU8sZUFBZSxDQUFDLGdCQUFnQixDQUFDO0lBQzVDLENBQUM7SUFFTSxNQUFNLENBQUMsYUFBYTtRQUN2QixJQUFJLENBQUMsZUFBZSxDQUFDLGNBQWMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sTUFBTSxHQUFHLGVBQWUsQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO1lBQ25ELGVBQWUsQ0FBQyxjQUFjLEdBQUcsSUFBSSxtQkFBVSxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztRQUNoRSxDQUFDO1FBRUQsT0FBTyxlQUFlLENBQUMsY0FBYyxDQUFDO0lBQzFDLENBQUM7SUFFTSxNQUFNLENBQUMsWUFBWSxDQUFDLGFBQXFCO1FBQzVDLE1BQU0sTUFBTSxHQUFHLCtCQUFVLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM5QyxPQUFPLEdBQUcsTUFBTSxDQUFDLFdBQVcsR0FBRyxhQUFhLEVBQUUsQ0FBQztJQUNuRCxDQUFDO0lBRU0sTUFBTSxDQUFDLGNBQWM7UUFDeEIsZUFBZSxDQUFDLGdCQUFnQixHQUFHLFNBQWdCLENBQUM7UUFDcEQsZUFBZSxDQUFDLGNBQWMsR0FBRyxTQUFnQixDQUFDO0lBQ3RELENBQUM7Q0FDSjtBQTFDRCwwQ0EwQ0M7QUFFRCx3REFBd0Q7QUFDM0MsUUFBQSxRQUFRLEdBQUcsZUFBZSxDQUFDLGlCQUFpQixFQUFFLENBQUM7QUFDL0MsUUFBQSxNQUFNLEdBQUcsZUFBZSxDQUFDLGFBQWEsRUFBRSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRHluYW1vREIgfSBmcm9tICdAYXdzLXNkay9jbGllbnQtZHluYW1vZGInO1xuaW1wb3J0IHsgRGF0YU1hcHBlciB9IGZyb20gJ0Bub3ZhLW9kbS9tYXBwZXInO1xuaW1wb3J0IHsgZW52TWFuYWdlciwgRGF0YWJhc2VDb25maWcgfSBmcm9tICcuL2Vudmlyb25tZW50LWNvbmZpZyc7XG5cbmV4cG9ydCBjbGFzcyBEYXRhYmFzZUZhY3Rvcnkge1xuICAgIHByaXZhdGUgc3RhdGljIGR5bmFtb0RCSW5zdGFuY2U6IER5bmFtb0RCO1xuICAgIHByaXZhdGUgc3RhdGljIG1hcHBlckluc3RhbmNlOiBEYXRhTWFwcGVyO1xuXG4gICAgcHVibGljIHN0YXRpYyBnZXREeW5hbW9EQkNsaWVudCgpOiBEeW5hbW9EQiB7XG4gICAgICAgIGlmICghRGF0YWJhc2VGYWN0b3J5LmR5bmFtb0RCSW5zdGFuY2UpIHtcbiAgICAgICAgICAgIGNvbnN0IGNvbmZpZyA9IGVudk1hbmFnZXIuZ2V0RGF0YWJhc2VDb25maWcoKTtcblxuICAgICAgICAgICAgY29uc3QgZHluYW1vQ29uZmlnOiBhbnkgPSB7XG4gICAgICAgICAgICAgICAgcmVnaW9uOiBjb25maWcucmVnaW9uLFxuICAgICAgICAgICAgICAgIG1heEF0dGVtcHRzOiBjb25maWcubWF4QXR0ZW1wdHNcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIC8vIEFkZCBlbmRwb2ludCBmb3IgbG9jYWwgZGV2ZWxvcG1lbnRcbiAgICAgICAgICAgIGlmIChjb25maWcuZW5kcG9pbnQpIHtcbiAgICAgICAgICAgICAgICBkeW5hbW9Db25maWcuZW5kcG9pbnQgPSBjb25maWcuZW5kcG9pbnQ7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIERhdGFiYXNlRmFjdG9yeS5keW5hbW9EQkluc3RhbmNlID0gbmV3IER5bmFtb0RCKGR5bmFtb0NvbmZpZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gRGF0YWJhc2VGYWN0b3J5LmR5bmFtb0RCSW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXREYXRhTWFwcGVyKCk6IERhdGFNYXBwZXIge1xuICAgICAgICBpZiAoIURhdGFiYXNlRmFjdG9yeS5tYXBwZXJJbnN0YW5jZSkge1xuICAgICAgICAgICAgY29uc3QgY2xpZW50ID0gRGF0YWJhc2VGYWN0b3J5LmdldER5bmFtb0RCQ2xpZW50KCk7XG4gICAgICAgICAgICBEYXRhYmFzZUZhY3RvcnkubWFwcGVySW5zdGFuY2UgPSBuZXcgRGF0YU1hcHBlcih7IGNsaWVudCB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBEYXRhYmFzZUZhY3RvcnkubWFwcGVySW5zdGFuY2U7XG4gICAgfVxuXG4gICAgcHVibGljIHN0YXRpYyBnZXRUYWJsZU5hbWUoYmFzZVRhYmxlTmFtZTogc3RyaW5nKTogc3RyaW5nIHtcbiAgICAgICAgY29uc3QgY29uZmlnID0gZW52TWFuYWdlci5nZXREYXRhYmFzZUNvbmZpZygpO1xuICAgICAgICByZXR1cm4gYCR7Y29uZmlnLnRhYmxlUHJlZml4fSR7YmFzZVRhYmxlTmFtZX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgcmVzZXRJbnN0YW5jZXMoKTogdm9pZCB7XG4gICAgICAgIERhdGFiYXNlRmFjdG9yeS5keW5hbW9EQkluc3RhbmNlID0gdW5kZWZpbmVkIGFzIGFueTtcbiAgICAgICAgRGF0YWJhc2VGYWN0b3J5Lm1hcHBlckluc3RhbmNlID0gdW5kZWZpbmVkIGFzIGFueTtcbiAgICB9XG59XG5cbi8vIEV4cG9ydCBzaW5nbGV0b24gaW5zdGFuY2VzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5XG5leHBvcnQgY29uc3QgZHluYW1vREIgPSBEYXRhYmFzZUZhY3RvcnkuZ2V0RHluYW1vREJDbGllbnQoKTtcbmV4cG9ydCBjb25zdCBtYXBwZXIgPSBEYXRhYmFzZUZhY3RvcnkuZ2V0RGF0YU1hcHBlcigpO1xuIl19
@@ -0,0 +1,38 @@
1
+ export type Environment = 'DEV' | 'PRODDEBUG' | 'PROD' | 'test';
2
+ export interface DatabaseConfig {
3
+ region: string;
4
+ endpoint?: string;
5
+ maxAttempts: number;
6
+ tablePrefix: string;
7
+ enableLogging: boolean;
8
+ readConsistency: 'eventual' | 'strong';
9
+ }
10
+ export interface EnvironmentConfig {
11
+ environment: Environment;
12
+ database: DatabaseConfig;
13
+ features: {
14
+ enableParallelProcessing: boolean;
15
+ enableBatchOperations: boolean;
16
+ enableCaching: boolean;
17
+ };
18
+ monitoring: {
19
+ enableMetrics: boolean;
20
+ logLevel: 'debug' | 'info' | 'warn' | 'error';
21
+ };
22
+ }
23
+ export declare class EnvironmentManager {
24
+ private static instance;
25
+ private currentConfig;
26
+ private constructor();
27
+ static getInstance(): EnvironmentManager;
28
+ private loadEnvironmentConfig;
29
+ getConfig(): EnvironmentConfig;
30
+ getDatabaseConfig(): DatabaseConfig;
31
+ getEnvironment(): Environment;
32
+ isDEV(): boolean;
33
+ isPROD(): boolean;
34
+ isPRODDEBUG(): boolean;
35
+ isTest(): boolean;
36
+ setEnvironment(environment: Environment): void;
37
+ }
38
+ export declare const envManager: EnvironmentManager;
@@ -0,0 +1,133 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.envManager = exports.EnvironmentManager = void 0;
4
+ // Environment-specific configurations
5
+ const environmentConfigs = {
6
+ DEV: {
7
+ environment: 'DEV',
8
+ database: {
9
+ region: 'us-east-1',
10
+ endpoint: 'http://localhost:8000', // Local DynamoDB
11
+ maxAttempts: 3,
12
+ tablePrefix: 'dev-',
13
+ enableLogging: true,
14
+ readConsistency: 'eventual'
15
+ },
16
+ features: {
17
+ enableParallelProcessing: false,
18
+ enableBatchOperations: true,
19
+ enableCaching: false
20
+ },
21
+ monitoring: {
22
+ enableMetrics: false,
23
+ logLevel: 'debug'
24
+ }
25
+ },
26
+ PRODDEBUG: {
27
+ environment: 'PRODDEBUG',
28
+ database: {
29
+ region: 'us-east-1',
30
+ maxAttempts: 5,
31
+ tablePrefix: 'proddebug-',
32
+ enableLogging: true,
33
+ readConsistency: 'eventual'
34
+ },
35
+ features: {
36
+ enableParallelProcessing: true,
37
+ enableBatchOperations: true,
38
+ enableCaching: true
39
+ },
40
+ monitoring: {
41
+ enableMetrics: true,
42
+ logLevel: 'info'
43
+ }
44
+ },
45
+ PROD: {
46
+ environment: 'PROD',
47
+ database: {
48
+ region: 'us-east-1',
49
+ maxAttempts: 10,
50
+ tablePrefix: '',
51
+ enableLogging: false,
52
+ readConsistency: 'strong'
53
+ },
54
+ features: {
55
+ enableParallelProcessing: true,
56
+ enableBatchOperations: true,
57
+ enableCaching: true
58
+ },
59
+ monitoring: {
60
+ enableMetrics: true,
61
+ logLevel: 'warn'
62
+ }
63
+ },
64
+ test: {
65
+ environment: 'test',
66
+ database: {
67
+ region: 'us-east-1',
68
+ endpoint: 'http://localhost:8000',
69
+ maxAttempts: 1,
70
+ tablePrefix: 'test-',
71
+ enableLogging: false,
72
+ readConsistency: 'eventual'
73
+ },
74
+ features: {
75
+ enableParallelProcessing: false,
76
+ enableBatchOperations: false,
77
+ enableCaching: false
78
+ },
79
+ monitoring: {
80
+ enableMetrics: false,
81
+ logLevel: 'error'
82
+ }
83
+ }
84
+ };
85
+ class EnvironmentManager {
86
+ constructor() {
87
+ this.currentConfig = this.loadEnvironmentConfig();
88
+ }
89
+ static getInstance() {
90
+ if (!EnvironmentManager.instance) {
91
+ EnvironmentManager.instance = new EnvironmentManager();
92
+ }
93
+ return EnvironmentManager.instance;
94
+ }
95
+ loadEnvironmentConfig() {
96
+ // Priority order: NODE_ENV -> ENVIRONMENT -> default to DEV
97
+ const env = (process.env.NODE_ENV || process.env.ENVIRONMENT || 'DEV');
98
+ if (!environmentConfigs[env]) {
99
+ console.warn(`Unknown environment: ${env}. Falling back to DEV.`);
100
+ return environmentConfigs.DEV;
101
+ }
102
+ return environmentConfigs[env];
103
+ }
104
+ getConfig() {
105
+ return this.currentConfig;
106
+ }
107
+ getDatabaseConfig() {
108
+ return this.currentConfig.database;
109
+ }
110
+ getEnvironment() {
111
+ return this.currentConfig.environment;
112
+ }
113
+ isDEV() {
114
+ return this.currentConfig.environment === 'DEV';
115
+ }
116
+ isPROD() {
117
+ return this.currentConfig.environment === 'PROD';
118
+ }
119
+ isPRODDEBUG() {
120
+ return this.currentConfig.environment === 'PRODDEBUG';
121
+ }
122
+ isTest() {
123
+ return this.currentConfig.environment === 'test';
124
+ }
125
+ // Method to override environment at runtime (useful for testing)
126
+ setEnvironment(environment) {
127
+ this.currentConfig = environmentConfigs[environment];
128
+ }
129
+ }
130
+ exports.EnvironmentManager = EnvironmentManager;
131
+ // Export singleton instance
132
+ exports.envManager = EnvironmentManager.getInstance();
133
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZW52aXJvbm1lbnQtY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvbmZpZy9lbnZpcm9ubWVudC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBeUJBLHNDQUFzQztBQUN0QyxNQUFNLGtCQUFrQixHQUEyQztJQUMvRCxHQUFHLEVBQUU7UUFDRCxXQUFXLEVBQUUsS0FBSztRQUNsQixRQUFRLEVBQUU7WUFDTixNQUFNLEVBQUUsV0FBVztZQUNuQixRQUFRLEVBQUUsdUJBQXVCLEVBQUUsaUJBQWlCO1lBQ3BELFdBQVcsRUFBRSxDQUFDO1lBQ2QsV0FBVyxFQUFFLE1BQU07WUFDbkIsYUFBYSxFQUFFLElBQUk7WUFDbkIsZUFBZSxFQUFFLFVBQVU7U0FDOUI7UUFDRCxRQUFRLEVBQUU7WUFDTix3QkFBd0IsRUFBRSxLQUFLO1lBQy9CLHFCQUFxQixFQUFFLElBQUk7WUFDM0IsYUFBYSxFQUFFLEtBQUs7U0FDdkI7UUFDRCxVQUFVLEVBQUU7WUFDUixhQUFhLEVBQUUsS0FBSztZQUNwQixRQUFRLEVBQUUsT0FBTztTQUNwQjtLQUNKO0lBQ0QsU0FBUyxFQUFFO1FBQ1AsV0FBVyxFQUFFLFdBQVc7UUFDeEIsUUFBUSxFQUFFO1lBQ04sTUFBTSxFQUFFLFdBQVc7WUFDbkIsV0FBVyxFQUFFLENBQUM7WUFDZCxXQUFXLEVBQUUsWUFBWTtZQUN6QixhQUFhLEVBQUUsSUFBSTtZQUNuQixlQUFlLEVBQUUsVUFBVTtTQUM5QjtRQUNELFFBQVEsRUFBRTtZQUNOLHdCQUF3QixFQUFFLElBQUk7WUFDOUIscUJBQXFCLEVBQUUsSUFBSTtZQUMzQixhQUFhLEVBQUUsSUFBSTtTQUN0QjtRQUNELFVBQVUsRUFBRTtZQUNSLGFBQWEsRUFBRSxJQUFJO1lBQ25CLFFBQVEsRUFBRSxNQUFNO1NBQ25CO0tBQ0o7SUFDRCxJQUFJLEVBQUU7UUFDRixXQUFXLEVBQUUsTUFBTTtRQUNuQixRQUFRLEVBQUU7WUFDTixNQUFNLEVBQUUsV0FBVztZQUNuQixXQUFXLEVBQUUsRUFBRTtZQUNmLFdBQVcsRUFBRSxFQUFFO1lBQ2YsYUFBYSxFQUFFLEtBQUs7WUFDcEIsZUFBZSxFQUFFLFFBQVE7U0FDNUI7UUFDRCxRQUFRLEVBQUU7WUFDTix3QkFBd0IsRUFBRSxJQUFJO1lBQzlCLHFCQUFxQixFQUFFLElBQUk7WUFDM0IsYUFBYSxFQUFFLElBQUk7U0FDdEI7UUFDRCxVQUFVLEVBQUU7WUFDUixhQUFhLEVBQUUsSUFBSTtZQUNuQixRQUFRLEVBQUUsTUFBTTtTQUNuQjtLQUNKO0lBQ0QsSUFBSSxFQUFFO1FBQ0YsV0FBVyxFQUFFLE1BQU07UUFDbkIsUUFBUSxFQUFFO1lBQ04sTUFBTSxFQUFFLFdBQVc7WUFDbkIsUUFBUSxFQUFFLHVCQUF1QjtZQUNqQyxXQUFXLEVBQUUsQ0FBQztZQUNkLFdBQVcsRUFBRSxPQUFPO1lBQ3BCLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLGVBQWUsRUFBRSxVQUFVO1NBQzlCO1FBQ0QsUUFBUSxFQUFFO1lBQ04sd0JBQXdCLEVBQUUsS0FBSztZQUMvQixxQkFBcUIsRUFBRSxLQUFLO1lBQzVCLGFBQWEsRUFBRSxLQUFLO1NBQ3ZCO1FBQ0QsVUFBVSxFQUFFO1lBQ1IsYUFBYSxFQUFFLEtBQUs7WUFDcEIsUUFBUSxFQUFFLE9BQU87U0FDcEI7S0FDSjtDQUNKLENBQUM7QUFFRixNQUFhLGtCQUFrQjtJQUkzQjtRQUNJLElBQUksQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDdEQsQ0FBQztJQUVNLE1BQU0sQ0FBQyxXQUFXO1FBQ3JCLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUMvQixrQkFBa0IsQ0FBQyxRQUFRLEdBQUcsSUFBSSxrQkFBa0IsRUFBRSxDQUFDO1FBQzNELENBQUM7UUFDRCxPQUFPLGtCQUFrQixDQUFDLFFBQVEsQ0FBQztJQUN2QyxDQUFDO0lBRU8scUJBQXFCO1FBQ3pCLDREQUE0RDtRQUM1RCxNQUFNLEdBQUcsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxJQUFJLEtBQUssQ0FBZ0IsQ0FBQztRQUV0RixJQUFJLENBQUMsa0JBQWtCLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUMzQixPQUFPLENBQUMsSUFBSSxDQUFDLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDLENBQUM7WUFDbEUsT0FBTyxrQkFBa0IsQ0FBQyxHQUFHLENBQUM7UUFDbEMsQ0FBQztRQUVELE9BQU8sa0JBQWtCLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUVNLFNBQVM7UUFDWixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUM7SUFDOUIsQ0FBQztJQUVNLGlCQUFpQjtRQUNwQixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDO0lBQ3ZDLENBQUM7SUFFTSxjQUFjO1FBQ2pCLE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUM7SUFDMUMsQ0FBQztJQUVNLEtBQUs7UUFDUixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxLQUFLLEtBQUssQ0FBQztJQUNwRCxDQUFDO0lBRU0sTUFBTTtRQUNULE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxXQUFXLEtBQUssTUFBTSxDQUFDO0lBQ3JELENBQUM7SUFFTSxXQUFXO1FBQ2QsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsS0FBSyxXQUFXLENBQUM7SUFDMUQsQ0FBQztJQUVNLE1BQU07UUFDVCxPQUFPLElBQUksQ0FBQyxhQUFhLENBQUMsV0FBVyxLQUFLLE1BQU0sQ0FBQztJQUNyRCxDQUFDO0lBRUQsaUVBQWlFO0lBQzFELGNBQWMsQ0FBQyxXQUF3QjtRQUMxQyxJQUFJLENBQUMsYUFBYSxHQUFHLGtCQUFrQixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELENBQUM7Q0FDSjtBQTNERCxnREEyREM7QUFFRCw0QkFBNEI7QUFDZixRQUFBLFVBQVUsR0FBRyxrQkFBa0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB0eXBlIEVudmlyb25tZW50ID0gJ0RFVicgfCAnUFJPRERFQlVHJyB8ICdQUk9EJyB8ICd0ZXN0JztcblxuZXhwb3J0IGludGVyZmFjZSBEYXRhYmFzZUNvbmZpZyB7XG4gICAgcmVnaW9uOiBzdHJpbmc7XG4gICAgZW5kcG9pbnQ/OiBzdHJpbmc7XG4gICAgbWF4QXR0ZW1wdHM6IG51bWJlcjtcbiAgICB0YWJsZVByZWZpeDogc3RyaW5nO1xuICAgIGVuYWJsZUxvZ2dpbmc6IGJvb2xlYW47XG4gICAgcmVhZENvbnNpc3RlbmN5OiAnZXZlbnR1YWwnIHwgJ3N0cm9uZyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRW52aXJvbm1lbnRDb25maWcge1xuICAgIGVudmlyb25tZW50OiBFbnZpcm9ubWVudDtcbiAgICBkYXRhYmFzZTogRGF0YWJhc2VDb25maWc7XG4gICAgZmVhdHVyZXM6IHtcbiAgICAgICAgZW5hYmxlUGFyYWxsZWxQcm9jZXNzaW5nOiBib29sZWFuO1xuICAgICAgICBlbmFibGVCYXRjaE9wZXJhdGlvbnM6IGJvb2xlYW47XG4gICAgICAgIGVuYWJsZUNhY2hpbmc6IGJvb2xlYW47XG4gICAgfTtcbiAgICBtb25pdG9yaW5nOiB7XG4gICAgICAgIGVuYWJsZU1ldHJpY3M6IGJvb2xlYW47XG4gICAgICAgIGxvZ0xldmVsOiAnZGVidWcnIHwgJ2luZm8nIHwgJ3dhcm4nIHwgJ2Vycm9yJztcbiAgICB9O1xufVxuXG4vLyBFbnZpcm9ubWVudC1zcGVjaWZpYyBjb25maWd1cmF0aW9uc1xuY29uc3QgZW52aXJvbm1lbnRDb25maWdzOiBSZWNvcmQ8RW52aXJvbm1lbnQsIEVudmlyb25tZW50Q29uZmlnPiA9IHtcbiAgICBERVY6IHtcbiAgICAgICAgZW52aXJvbm1lbnQ6ICdERVYnLFxuICAgICAgICBkYXRhYmFzZToge1xuICAgICAgICAgICAgcmVnaW9uOiAndXMtZWFzdC0xJyxcbiAgICAgICAgICAgIGVuZHBvaW50OiAnaHR0cDovL2xvY2FsaG9zdDo4MDAwJywgLy8gTG9jYWwgRHluYW1vREJcbiAgICAgICAgICAgIG1heEF0dGVtcHRzOiAzLFxuICAgICAgICAgICAgdGFibGVQcmVmaXg6ICdkZXYtJyxcbiAgICAgICAgICAgIGVuYWJsZUxvZ2dpbmc6IHRydWUsXG4gICAgICAgICAgICByZWFkQ29uc2lzdGVuY3k6ICdldmVudHVhbCdcbiAgICAgICAgfSxcbiAgICAgICAgZmVhdHVyZXM6IHtcbiAgICAgICAgICAgIGVuYWJsZVBhcmFsbGVsUHJvY2Vzc2luZzogZmFsc2UsXG4gICAgICAgICAgICBlbmFibGVCYXRjaE9wZXJhdGlvbnM6IHRydWUsXG4gICAgICAgICAgICBlbmFibGVDYWNoaW5nOiBmYWxzZVxuICAgICAgICB9LFxuICAgICAgICBtb25pdG9yaW5nOiB7XG4gICAgICAgICAgICBlbmFibGVNZXRyaWNzOiBmYWxzZSxcbiAgICAgICAgICAgIGxvZ0xldmVsOiAnZGVidWcnXG4gICAgICAgIH1cbiAgICB9LFxuICAgIFBST0RERUJVRzoge1xuICAgICAgICBlbnZpcm9ubWVudDogJ1BST0RERUJVRycsXG4gICAgICAgIGRhdGFiYXNlOiB7XG4gICAgICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICAgICAgbWF4QXR0ZW1wdHM6IDUsXG4gICAgICAgICAgICB0YWJsZVByZWZpeDogJ3Byb2RkZWJ1Zy0nLFxuICAgICAgICAgICAgZW5hYmxlTG9nZ2luZzogdHJ1ZSxcbiAgICAgICAgICAgIHJlYWRDb25zaXN0ZW5jeTogJ2V2ZW50dWFsJ1xuICAgICAgICB9LFxuICAgICAgICBmZWF0dXJlczoge1xuICAgICAgICAgICAgZW5hYmxlUGFyYWxsZWxQcm9jZXNzaW5nOiB0cnVlLFxuICAgICAgICAgICAgZW5hYmxlQmF0Y2hPcGVyYXRpb25zOiB0cnVlLFxuICAgICAgICAgICAgZW5hYmxlQ2FjaGluZzogdHJ1ZVxuICAgICAgICB9LFxuICAgICAgICBtb25pdG9yaW5nOiB7XG4gICAgICAgICAgICBlbmFibGVNZXRyaWNzOiB0cnVlLFxuICAgICAgICAgICAgbG9nTGV2ZWw6ICdpbmZvJ1xuICAgICAgICB9XG4gICAgfSxcbiAgICBQUk9EOiB7XG4gICAgICAgIGVudmlyb25tZW50OiAnUFJPRCcsXG4gICAgICAgIGRhdGFiYXNlOiB7XG4gICAgICAgICAgICByZWdpb246ICd1cy1lYXN0LTEnLFxuICAgICAgICAgICAgbWF4QXR0ZW1wdHM6IDEwLFxuICAgICAgICAgICAgdGFibGVQcmVmaXg6ICcnLFxuICAgICAgICAgICAgZW5hYmxlTG9nZ2luZzogZmFsc2UsXG4gICAgICAgICAgICByZWFkQ29uc2lzdGVuY3k6ICdzdHJvbmcnXG4gICAgICAgIH0sXG4gICAgICAgIGZlYXR1cmVzOiB7XG4gICAgICAgICAgICBlbmFibGVQYXJhbGxlbFByb2Nlc3Npbmc6IHRydWUsXG4gICAgICAgICAgICBlbmFibGVCYXRjaE9wZXJhdGlvbnM6IHRydWUsXG4gICAgICAgICAgICBlbmFibGVDYWNoaW5nOiB0cnVlXG4gICAgICAgIH0sXG4gICAgICAgIG1vbml0b3Jpbmc6IHtcbiAgICAgICAgICAgIGVuYWJsZU1ldHJpY3M6IHRydWUsXG4gICAgICAgICAgICBsb2dMZXZlbDogJ3dhcm4nXG4gICAgICAgIH1cbiAgICB9LFxuICAgIHRlc3Q6IHtcbiAgICAgICAgZW52aXJvbm1lbnQ6ICd0ZXN0JyxcbiAgICAgICAgZGF0YWJhc2U6IHtcbiAgICAgICAgICAgIHJlZ2lvbjogJ3VzLWVhc3QtMScsXG4gICAgICAgICAgICBlbmRwb2ludDogJ2h0dHA6Ly9sb2NhbGhvc3Q6ODAwMCcsXG4gICAgICAgICAgICBtYXhBdHRlbXB0czogMSxcbiAgICAgICAgICAgIHRhYmxlUHJlZml4OiAndGVzdC0nLFxuICAgICAgICAgICAgZW5hYmxlTG9nZ2luZzogZmFsc2UsXG4gICAgICAgICAgICByZWFkQ29uc2lzdGVuY3k6ICdldmVudHVhbCdcbiAgICAgICAgfSxcbiAgICAgICAgZmVhdHVyZXM6IHtcbiAgICAgICAgICAgIGVuYWJsZVBhcmFsbGVsUHJvY2Vzc2luZzogZmFsc2UsXG4gICAgICAgICAgICBlbmFibGVCYXRjaE9wZXJhdGlvbnM6IGZhbHNlLFxuICAgICAgICAgICAgZW5hYmxlQ2FjaGluZzogZmFsc2VcbiAgICAgICAgfSxcbiAgICAgICAgbW9uaXRvcmluZzoge1xuICAgICAgICAgICAgZW5hYmxlTWV0cmljczogZmFsc2UsXG4gICAgICAgICAgICBsb2dMZXZlbDogJ2Vycm9yJ1xuICAgICAgICB9XG4gICAgfVxufTtcblxuZXhwb3J0IGNsYXNzIEVudmlyb25tZW50TWFuYWdlciB7XG4gICAgcHJpdmF0ZSBzdGF0aWMgaW5zdGFuY2U6IEVudmlyb25tZW50TWFuYWdlcjtcbiAgICBwcml2YXRlIGN1cnJlbnRDb25maWc6IEVudmlyb25tZW50Q29uZmlnO1xuXG4gICAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHtcbiAgICAgICAgdGhpcy5jdXJyZW50Q29uZmlnID0gdGhpcy5sb2FkRW52aXJvbm1lbnRDb25maWcoKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgc3RhdGljIGdldEluc3RhbmNlKCk6IEVudmlyb25tZW50TWFuYWdlciB7XG4gICAgICAgIGlmICghRW52aXJvbm1lbnRNYW5hZ2VyLmluc3RhbmNlKSB7XG4gICAgICAgICAgICBFbnZpcm9ubWVudE1hbmFnZXIuaW5zdGFuY2UgPSBuZXcgRW52aXJvbm1lbnRNYW5hZ2VyKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIEVudmlyb25tZW50TWFuYWdlci5pbnN0YW5jZTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGxvYWRFbnZpcm9ubWVudENvbmZpZygpOiBFbnZpcm9ubWVudENvbmZpZyB7XG4gICAgICAgIC8vIFByaW9yaXR5IG9yZGVyOiBOT0RFX0VOViAtPiBFTlZJUk9OTUVOVCAtPiBkZWZhdWx0IHRvIERFVlxuICAgICAgICBjb25zdCBlbnYgPSAocHJvY2Vzcy5lbnYuTk9ERV9FTlYgfHwgcHJvY2Vzcy5lbnYuRU5WSVJPTk1FTlQgfHwgJ0RFVicpIGFzIEVudmlyb25tZW50O1xuXG4gICAgICAgIGlmICghZW52aXJvbm1lbnRDb25maWdzW2Vudl0pIHtcbiAgICAgICAgICAgIGNvbnNvbGUud2FybihgVW5rbm93biBlbnZpcm9ubWVudDogJHtlbnZ9LiBGYWxsaW5nIGJhY2sgdG8gREVWLmApO1xuICAgICAgICAgICAgcmV0dXJuIGVudmlyb25tZW50Q29uZmlncy5ERVY7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gZW52aXJvbm1lbnRDb25maWdzW2Vudl07XG4gICAgfVxuXG4gICAgcHVibGljIGdldENvbmZpZygpOiBFbnZpcm9ubWVudENvbmZpZyB7XG4gICAgICAgIHJldHVybiB0aGlzLmN1cnJlbnRDb25maWc7XG4gICAgfVxuXG4gICAgcHVibGljIGdldERhdGFiYXNlQ29uZmlnKCk6IERhdGFiYXNlQ29uZmlnIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENvbmZpZy5kYXRhYmFzZTtcbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0RW52aXJvbm1lbnQoKTogRW52aXJvbm1lbnQge1xuICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50Q29uZmlnLmVudmlyb25tZW50O1xuICAgIH1cblxuICAgIHB1YmxpYyBpc0RFVigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENvbmZpZy5lbnZpcm9ubWVudCA9PT0gJ0RFVic7XG4gICAgfVxuXG4gICAgcHVibGljIGlzUFJPRCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENvbmZpZy5lbnZpcm9ubWVudCA9PT0gJ1BST0QnO1xuICAgIH1cblxuICAgIHB1YmxpYyBpc1BST0RERUJVRygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENvbmZpZy5lbnZpcm9ubWVudCA9PT0gJ1BST0RERUJVRyc7XG4gICAgfVxuXG4gICAgcHVibGljIGlzVGVzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudENvbmZpZy5lbnZpcm9ubWVudCA9PT0gJ3Rlc3QnO1xuICAgIH1cblxuICAgIC8vIE1ldGhvZCB0byBvdmVycmlkZSBlbnZpcm9ubWVudCBhdCBydW50aW1lICh1c2VmdWwgZm9yIHRlc3RpbmcpXG4gICAgcHVibGljIHNldEVudmlyb25tZW50KGVudmlyb25tZW50OiBFbnZpcm9ubWVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLmN1cnJlbnRDb25maWcgPSBlbnZpcm9ubWVudENvbmZpZ3NbZW52aXJvbm1lbnRdO1xuICAgIH1cbn1cblxuLy8gRXhwb3J0IHNpbmdsZXRvbiBpbnN0YW5jZVxuZXhwb3J0IGNvbnN0IGVudk1hbmFnZXIgPSBFbnZpcm9ubWVudE1hbmFnZXIuZ2V0SW5zdGFuY2UoKTtcbiJdfQ==
@@ -0,0 +1,3 @@
1
+ export * from './environment-config';
2
+ export * from './database-factory';
3
+ export * from './table-names';
@@ -0,0 +1,21 @@
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
+ // Export all configuration modules
18
+ __exportStar(require("./environment-config"), exports);
19
+ __exportStar(require("./database-factory"), exports);
20
+ __exportStar(require("./table-names"), exports);
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtQ0FBbUM7QUFDbkMsdURBQXFDO0FBQ3JDLHFEQUFtQztBQUNuQyxnREFBOEIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBFeHBvcnQgYWxsIGNvbmZpZ3VyYXRpb24gbW9kdWxlc1xuZXhwb3J0ICogZnJvbSAnLi9lbnZpcm9ubWVudC1jb25maWcnO1xuZXhwb3J0ICogZnJvbSAnLi9kYXRhYmFzZS1mYWN0b3J5JztcbmV4cG9ydCAqIGZyb20gJy4vdGFibGUtbmFtZXMnO1xuIl19
@@ -0,0 +1,100 @@
1
+ export declare const BASE_TABLE_NAMES: {
2
+ readonly APP_FEEDBACK: "AppFeedbackTable";
3
+ readonly LSQ_CRM: "LsqCrmTable";
4
+ readonly CUTLERY: "CutleryTable";
5
+ readonly ITEM_ACCOMPANIMENTS: "ItemAccompanimentsTable";
6
+ readonly CUISINE: "CuisineTable";
7
+ readonly TIER_DETAILS: "TierDetailsTable";
8
+ readonly USER_ORDER_SUMMARY: "UserOrderSummaryTable";
9
+ readonly TIER_REFERRAL: "TierReferralTable";
10
+ readonly USER_ADDRESS_REQUEST: "UserAddressRequestTable";
11
+ readonly COMMON_FEEDBACK: "CommonFeedbackTable";
12
+ readonly GUEST_FEEDBACK: "GuestFeedbackTable";
13
+ readonly COUNTER: "CounterTable";
14
+ readonly REQUEST_INVOICE: "RequestInvoiceTable";
15
+ readonly PLATTER_SEARCH_EVENTS: "PlatterSearchEventsTable";
16
+ readonly ORDER_REVIEW_FEEDBACK: "OrderReviewFeedbackTable";
17
+ readonly CATERING_REQUEST: "CateringRequestTable";
18
+ readonly ORDER: "OrderTable";
19
+ readonly ORDER_ADDRESS: "OrderAddressTable";
20
+ readonly ORDER_REVIEW: "OrderReviewTable";
21
+ readonly PAYMENT: "PaymentTable";
22
+ readonly PLATE_ORDER: "PlateOrderTable";
23
+ readonly TRACKING: "TrackingTable";
24
+ readonly USER_ADDRESS: "UserAddressTable";
25
+ readonly ADD_ONS: "AddOnsTable";
26
+ readonly BANK_DETAILS: "BankDetailsTable";
27
+ readonly CART: "CartTable";
28
+ readonly CART_CATEGORIES: "CartCategoriesTable";
29
+ readonly CATEGORY: "CategoryTable";
30
+ readonly CATERING: "CateringTable";
31
+ readonly CONTENT: "ContentTable";
32
+ readonly COUPONS: "CouponsTable";
33
+ readonly DEFAULT_PLATTER: "DefaultPlatterTable";
34
+ readonly DEFAULT_PLATTER_CATEGORIES: "DefaultPlatterCategoriesTable";
35
+ readonly DEFAULT_PLATTER_ITEMS: "DefaultPlatterItemsTable";
36
+ readonly EVENT_EXECUTIVES: "EventExecutivesTable";
37
+ readonly ITEMS: "ItemsTable";
38
+ readonly LEAD: "LeadTable";
39
+ readonly OCCASION: "OccasionTable";
40
+ readonly REFERRAL_CONTENT: "ReferralContentTable";
41
+ readonly USER: "UserTable";
42
+ readonly WALLET: "WalletTable";
43
+ readonly WALLET_TRANSACTION: "WalletTransactionTable";
44
+ readonly WITHDRAWN: "WithdrawnTable";
45
+ readonly INTERNAL_USER: "InternalUserTable";
46
+ readonly ACTIVITY_LOGS: "ActivityLogsTable";
47
+ readonly QUOTATIONS: "QuotationsTable";
48
+ };
49
+ export declare class TableNameManager {
50
+ static getTableName(baseTableName: string): string;
51
+ static getAllTableNames(): Record<string, string>;
52
+ }
53
+ export declare const TABLE_NAMES: {
54
+ readonly APP_FEEDBACK: string;
55
+ readonly LSQ_CRM: string;
56
+ readonly CUTLERY: string;
57
+ readonly ITEM_ACCOMPANIMENTS: string;
58
+ readonly CUISINE: string;
59
+ readonly TIER_DETAILS: string;
60
+ readonly USER_ORDER_SUMMARY: string;
61
+ readonly TIER_REFERRAL: string;
62
+ readonly USER_ADDRESS_REQUEST: string;
63
+ readonly COMMON_FEEDBACK: string;
64
+ readonly GUEST_FEEDBACK: string;
65
+ readonly COUNTER: string;
66
+ readonly REQUEST_INVOICE: string;
67
+ readonly PLATTER_SEARCH_EVENTS: string;
68
+ readonly ORDER_REVIEW_FEEDBACK: string;
69
+ readonly CATERING_REQUEST: string;
70
+ readonly ORDER: string;
71
+ readonly ORDER_ADDRESS: string;
72
+ readonly ORDER_REVIEW: string;
73
+ readonly PAYMENT: string;
74
+ readonly PLATE_ORDER: string;
75
+ readonly TRACKING: string;
76
+ readonly USER_ADDRESS: string;
77
+ readonly ADD_ONS: string;
78
+ readonly BANK_DETAILS: string;
79
+ readonly CART: string;
80
+ readonly CART_CATEGORIES: string;
81
+ readonly CATEGORY: string;
82
+ readonly CATERING: string;
83
+ readonly CONTENT: string;
84
+ readonly COUPONS: string;
85
+ readonly DEFAULT_PLATTER: string;
86
+ readonly DEFAULT_PLATTER_CATEGORIES: string;
87
+ readonly DEFAULT_PLATTER_ITEMS: string;
88
+ readonly EVENT_EXECUTIVES: string;
89
+ readonly ITEMS: string;
90
+ readonly LEAD: string;
91
+ readonly OCCASION: string;
92
+ readonly REFERRAL_CONTENT: string;
93
+ readonly USER: string;
94
+ readonly WALLET: string;
95
+ readonly WALLET_TRANSACTION: string;
96
+ readonly WITHDRAWN: string;
97
+ readonly INTERNAL_USER: string;
98
+ readonly ACTIVITY_LOGS: string;
99
+ readonly QUOTATIONS: string;
100
+ };
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TABLE_NAMES = exports.TableNameManager = exports.BASE_TABLE_NAMES = void 0;
4
+ const database_factory_1 = require("./database-factory");
5
+ // Base table names (without environment prefix)
6
+ exports.BASE_TABLE_NAMES = {
7
+ // Customer App Tables
8
+ APP_FEEDBACK: 'AppFeedbackTable',
9
+ LSQ_CRM: 'LsqCrmTable',
10
+ CUTLERY: 'CutleryTable',
11
+ ITEM_ACCOMPANIMENTS: 'ItemAccompanimentsTable',
12
+ CUISINE: 'CuisineTable',
13
+ TIER_DETAILS: 'TierDetailsTable',
14
+ USER_ORDER_SUMMARY: 'UserOrderSummaryTable',
15
+ TIER_REFERRAL: 'TierReferralTable',
16
+ USER_ADDRESS_REQUEST: 'UserAddressRequestTable',
17
+ COMMON_FEEDBACK: 'CommonFeedbackTable',
18
+ GUEST_FEEDBACK: 'GuestFeedbackTable',
19
+ COUNTER: 'CounterTable',
20
+ REQUEST_INVOICE: 'RequestInvoiceTable',
21
+ PLATTER_SEARCH_EVENTS: 'PlatterSearchEventsTable',
22
+ ORDER_REVIEW_FEEDBACK: 'OrderReviewFeedbackTable',
23
+ CATERING_REQUEST: 'CateringRequestTable',
24
+ // Order Module Tables
25
+ ORDER: 'OrderTable',
26
+ ORDER_ADDRESS: 'OrderAddressTable',
27
+ ORDER_REVIEW: 'OrderReviewTable',
28
+ PAYMENT: 'PaymentTable',
29
+ PLATE_ORDER: 'PlateOrderTable',
30
+ TRACKING: 'TrackingTable',
31
+ USER_ADDRESS: 'UserAddressTable',
32
+ // Other Customer Tables
33
+ ADD_ONS: 'AddOnsTable',
34
+ BANK_DETAILS: 'BankDetailsTable',
35
+ CART: 'CartTable',
36
+ CART_CATEGORIES: 'CartCategoriesTable',
37
+ CATEGORY: 'CategoryTable',
38
+ CATERING: 'CateringTable',
39
+ CONTENT: 'ContentTable',
40
+ COUPONS: 'CouponsTable',
41
+ DEFAULT_PLATTER: 'DefaultPlatterTable',
42
+ DEFAULT_PLATTER_CATEGORIES: 'DefaultPlatterCategoriesTable',
43
+ DEFAULT_PLATTER_ITEMS: 'DefaultPlatterItemsTable',
44
+ EVENT_EXECUTIVES: 'EventExecutivesTable',
45
+ ITEMS: 'ItemsTable',
46
+ LEAD: 'LeadTable',
47
+ OCCASION: 'OccasionTable',
48
+ REFERRAL_CONTENT: 'ReferralContentTable',
49
+ USER: 'UserTable',
50
+ WALLET: 'WalletTable',
51
+ WALLET_TRANSACTION: 'WalletTransactionTable',
52
+ WITHDRAWN: 'WithdrawnTable',
53
+ // Internal User Tables
54
+ INTERNAL_USER: 'InternalUserTable',
55
+ ACTIVITY_LOGS: 'ActivityLogsTable',
56
+ QUOTATIONS: 'QuotationsTable'
57
+ };
58
+ // Environment-aware table name getter
59
+ class TableNameManager {
60
+ static getTableName(baseTableName) {
61
+ return database_factory_1.DatabaseFactory.getTableName(baseTableName);
62
+ }
63
+ static getAllTableNames() {
64
+ const tableNames = {};
65
+ Object.entries(exports.BASE_TABLE_NAMES).forEach(([key, value]) => {
66
+ tableNames[key] = this.getTableName(value);
67
+ });
68
+ return tableNames;
69
+ }
70
+ }
71
+ exports.TableNameManager = TableNameManager;
72
+ // Export environment-aware table names
73
+ exports.TABLE_NAMES = {
74
+ // Customer App Tables
75
+ APP_FEEDBACK: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.APP_FEEDBACK),
76
+ LSQ_CRM: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.LSQ_CRM),
77
+ CUTLERY: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.CUTLERY),
78
+ ITEM_ACCOMPANIMENTS: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.ITEM_ACCOMPANIMENTS),
79
+ CUISINE: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.CUISINE),
80
+ TIER_DETAILS: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.TIER_DETAILS),
81
+ USER_ORDER_SUMMARY: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.USER_ORDER_SUMMARY),
82
+ TIER_REFERRAL: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.TIER_REFERRAL),
83
+ USER_ADDRESS_REQUEST: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.USER_ADDRESS_REQUEST),
84
+ COMMON_FEEDBACK: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.COMMON_FEEDBACK),
85
+ GUEST_FEEDBACK: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.GUEST_FEEDBACK),
86
+ COUNTER: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.COUNTER),
87
+ REQUEST_INVOICE: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.REQUEST_INVOICE),
88
+ PLATTER_SEARCH_EVENTS: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.PLATTER_SEARCH_EVENTS),
89
+ ORDER_REVIEW_FEEDBACK: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.ORDER_REVIEW_FEEDBACK),
90
+ CATERING_REQUEST: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.CATERING_REQUEST),
91
+ // Order Module Tables
92
+ ORDER: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.ORDER),
93
+ ORDER_ADDRESS: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.ORDER_ADDRESS),
94
+ ORDER_REVIEW: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.ORDER_REVIEW),
95
+ PAYMENT: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.PAYMENT),
96
+ PLATE_ORDER: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.PLATE_ORDER),
97
+ TRACKING: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.TRACKING),
98
+ USER_ADDRESS: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.USER_ADDRESS),
99
+ // Other Customer Tables
100
+ ADD_ONS: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.ADD_ONS),
101
+ BANK_DETAILS: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.BANK_DETAILS),
102
+ CART: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.CART),
103
+ CART_CATEGORIES: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.CART_CATEGORIES),
104
+ CATEGORY: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.CATEGORY),
105
+ CATERING: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.CATERING),
106
+ CONTENT: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.CONTENT),
107
+ COUPONS: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.COUPONS),
108
+ DEFAULT_PLATTER: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.DEFAULT_PLATTER),
109
+ DEFAULT_PLATTER_CATEGORIES: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.DEFAULT_PLATTER_CATEGORIES),
110
+ DEFAULT_PLATTER_ITEMS: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.DEFAULT_PLATTER_ITEMS),
111
+ EVENT_EXECUTIVES: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.EVENT_EXECUTIVES),
112
+ ITEMS: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.ITEMS),
113
+ LEAD: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.LEAD),
114
+ OCCASION: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.OCCASION),
115
+ REFERRAL_CONTENT: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.REFERRAL_CONTENT),
116
+ USER: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.USER),
117
+ WALLET: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.WALLET),
118
+ WALLET_TRANSACTION: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.WALLET_TRANSACTION),
119
+ WITHDRAWN: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.WITHDRAWN),
120
+ // Internal User Tables
121
+ INTERNAL_USER: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.INTERNAL_USER),
122
+ ACTIVITY_LOGS: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.ACTIVITY_LOGS),
123
+ QUOTATIONS: TableNameManager.getTableName(exports.BASE_TABLE_NAMES.QUOTATIONS)
124
+ };
125
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUtbmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29uZmlnL3RhYmxlLW5hbWVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHlEQUFxRDtBQUVyRCxnREFBZ0Q7QUFDbkMsUUFBQSxnQkFBZ0IsR0FBRztJQUM1QixzQkFBc0I7SUFDdEIsWUFBWSxFQUFFLGtCQUFrQjtJQUNoQyxPQUFPLEVBQUUsYUFBYTtJQUN0QixPQUFPLEVBQUUsY0FBYztJQUN2QixtQkFBbUIsRUFBRSx5QkFBeUI7SUFDOUMsT0FBTyxFQUFFLGNBQWM7SUFDdkIsWUFBWSxFQUFFLGtCQUFrQjtJQUNoQyxrQkFBa0IsRUFBRSx1QkFBdUI7SUFDM0MsYUFBYSxFQUFFLG1CQUFtQjtJQUNsQyxvQkFBb0IsRUFBRSx5QkFBeUI7SUFDL0MsZUFBZSxFQUFFLHFCQUFxQjtJQUN0QyxjQUFjLEVBQUUsb0JBQW9CO0lBQ3BDLE9BQU8sRUFBRSxjQUFjO0lBQ3ZCLGVBQWUsRUFBRSxxQkFBcUI7SUFDdEMscUJBQXFCLEVBQUUsMEJBQTBCO0lBQ2pELHFCQUFxQixFQUFFLDBCQUEwQjtJQUNqRCxnQkFBZ0IsRUFBRSxzQkFBc0I7SUFFeEMsc0JBQXNCO0lBQ3RCLEtBQUssRUFBRSxZQUFZO0lBQ25CLGFBQWEsRUFBRSxtQkFBbUI7SUFDbEMsWUFBWSxFQUFFLGtCQUFrQjtJQUNoQyxPQUFPLEVBQUUsY0FBYztJQUN2QixXQUFXLEVBQUUsaUJBQWlCO0lBQzlCLFFBQVEsRUFBRSxlQUFlO0lBQ3pCLFlBQVksRUFBRSxrQkFBa0I7SUFFaEMsd0JBQXdCO0lBQ3hCLE9BQU8sRUFBRSxhQUFhO0lBQ3RCLFlBQVksRUFBRSxrQkFBa0I7SUFDaEMsSUFBSSxFQUFFLFdBQVc7SUFDakIsZUFBZSxFQUFFLHFCQUFxQjtJQUN0QyxRQUFRLEVBQUUsZUFBZTtJQUN6QixRQUFRLEVBQUUsZUFBZTtJQUN6QixPQUFPLEVBQUUsY0FBYztJQUN2QixPQUFP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YUFBYSxDQUFDO0lBQzVFLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxZQUFZLENBQUMsd0JBQWdCLENBQUMsVUFBVSxDQUFDO0NBQ2hFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBEYXRhYmFzZUZhY3RvcnkgfSBmcm9tICcuL2RhdGFiYXNlLWZhY3RvcnknO1xuXG4vLyBCYXNlIHRhYmxlIG5hbWVzICh3aXRob3V0IGVudmlyb25tZW50IHByZWZpeClcbmV4cG9ydCBjb25zdCBCQVNFX1RBQkxFX05BTUVTID0ge1xuICAgIC8vIEN1c3RvbWVyIEFwcCBUYWJsZXNcbiAgICBBUFBfRkVFREJBQ0s6ICdBcHBGZWVkYmFja1RhYmxlJyxcbiAgICBMU1FfQ1JNOiAnTHNxQ3JtVGFibGUnLFxuICAgIENVVExFUlk6ICdDdXRsZXJ5VGFibGUnLFxuICAgIElURU1fQUNDT01QQU5JTUVOVFM6ICdJdGVtQWNjb21wYW5pbWVudHNUYWJsZScsXG4gICAgQ1VJU0lORTogJ0N1aXNpbmVUYWJsZScsXG4gICAgVElFUl9ERVRBSUxTOiAnVGllckRldGFpbHNUYWJsZScsXG4gICAgVVNFUl9PUkRFUl9TVU1NQVJZOiAnVXNlck9yZGVyU3VtbWFyeVRhYmxlJyxcbiAgICBUSUVSX1JFRkVSUkFMOiAnVGllclJlZmVycmFsVGFibGUnLFxuICAgIFVTRVJfQUREUkVTU19SRVFVRVNUOiAnVXNlckFkZHJlc3NSZXF1ZXN0VGFibGUnLFxuICAgIENPTU1PTl9GRUVEQkFDSzogJ0NvbW1vbkZlZWRiYWNrVGFibGUnLFxuICAgIEdVRVNUX0ZFRURCQUNLOiAnR3Vlc3RGZWVkYmFja1RhYmxlJyxcbiAgICBDT1VOVEVSOiAnQ291bnRlclRhYmxlJyxcbiAgICBSRVFVRVNUX0lOVk9JQ0U6ICdSZXF1ZXN0SW52b2ljZVRhYmxlJyxcbiAgICBQTEFUVEVSX1NFQVJDSF9FVkVOVFM6ICdQbGF0dGVyU2VhcmNoRXZlbnRzVGFibGUnLFxuICAgIE9SREVSX1JFVklFV19GRUVEQkFDSzogJ09yZGVyUmV2aWV3RmVlZGJhY2tUYWJsZScsXG4gICAgQ0FURVJJTkdfUkVRVUVTVDogJ0NhdGVyaW5nUmVxdWVzdFRhYmxlJyxcblxuICAgIC8vIE9yZGVyIE1vZHVsZSBUYWJsZXNcbiAgICBPUkRFUjogJ09yZGVyVGFibGUnLFxuICAgIE9SREVSX0FERFJFU1M6ICdPcmRlckFkZHJlc3NUYWJsZScsXG4gICAgT1JERVJfUkVWSUVXOiAnT3JkZXJSZXZpZXdUYWJsZScsXG4gICAgUEFZTUVOVDogJ1BheW1lbnRUYWJsZScsXG4gICAgUExBVEVfT1JERVI6ICdQbGF0ZU9yZGVyVGFibGUnLFxuICAgIFRSQUNLSU5HOiAnVHJhY2tpbmdUYWJsZScsXG4gICAgVVNFUl9BRERSRVNTOiAnVXNlckFkZHJlc3NUYWJsZScsXG5cbiAgICAvLyBPdGhlciBDdXN0b21lciBUYWJsZXNcbiAgICBBRERfT05TOiAnQWRkT25zVGFibGUnLFxuICAgIEJBTktfREVUQUlMUzogJ0JhbmtEZXRhaWxzVGFibGUnLFxuICAgIENBUlQ6ICdDYXJ0VGFibGUnLFxuICAgIENBUlRfQ0FURUdPUklFUzogJ0NhcnRDYXRlZ29yaWVzVGFibGUnLFxuICAgIENBVEVHT1JZOiAnQ2F0ZWdvcnlUYWJsZScsXG4gICAgQ0FURVJJTkc6ICdDYXRlcmluZ1RhYmxlJyxcbiAgICBDT05URU5UOiAnQ29udGVudFRhYmxlJyxcbiAgICBDT1VQT05TOiAnQ291cG9uc1RhYmxlJyxcbiAgICBERUZBVUxUX1BMQVRURVI6ICdEZWZhdWx0UGxhdHRlclRhYmxlJyxcbiAgICBERUZBVUxUX1BMQVRURVJfQ0FURUdPUklFUzogJ0RlZmF1bHRQbGF0dGVyQ2F0ZWdvcmllc1RhYmxlJyxcbiAgICBERUZBVUxUX1BMQVRURVJfSVRFTVM6ICdEZWZhdWx0UGxhdHRlckl0ZW1zVGFibGUnLFxuICAgIEVWRU5UX0VYRUNVVElWRVM6ICdFdmVudEV4ZWN1dGl2ZXNUYWJsZScsXG4gICAgSVRFTVM6ICdJdGVtc1RhYmxlJyxcbiAgICBMRUFEOiAnTGVhZFRhYmxlJyxcbiAgICBPQ0NBU0lPTjogJ09jY2FzaW9uVGFibGUnLFxuICAgIFJFRkVSUkFMX0NPTlRFTlQ6ICdSZWZlcnJhbENvbnRlbnRUYWJsZScsXG4gICAgVVNFUjogJ1VzZXJUYWJsZScsXG4gICAgV0FMTEVUOiAnV2FsbGV0VGFibGUnLFxuICAgIFdBTExFVF9UUkFOU0FDVElPTjogJ1dhbGxldFRyYW5zYWN0aW9uVGFibGUnLFxuICAgIFdJVEhEUkFXTjogJ1dpdGhkcmF3blRhYmxlJyxcblxuICAgIC8vIEludGVybmFsIFVzZXIgVGFibGVzXG4gICAgSU5URVJOQUxfVVNFUjogJ0ludGVybmFsVXNlclRhYmxlJyxcbiAgICBBQ1RJVklUWV9MT0dTOiAnQWN0aXZpdHlMb2dzVGFibGUnLFxuICAgIFFVT1RBVElPTlM6ICdRdW90YXRpb25zVGFibGUnXG59IGFzIGNvbnN0O1xuXG4vLyBFbnZpcm9ubWVudC1hd2FyZSB0YWJsZSBuYW1lIGdldHRlclxuZXhwb3J0IGNsYXNzIFRhYmxlTmFtZU1hbmFnZXIge1xuICAgIHB1YmxpYyBzdGF0aWMgZ2V0VGFibGVOYW1lKGJhc2VUYWJsZU5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBEYXRhYmFzZUZhY3RvcnkuZ2V0VGFibGVOYW1lKGJhc2VUYWJsZU5hbWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBzdGF0aWMgZ2V0QWxsVGFibGVOYW1lcygpOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+IHtcbiAgICAgICAgY29uc3QgdGFibGVOYW1lczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHt9O1xuXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKEJBU0VfVEFCTEVfTkFNRVMpLmZvckVhY2goKFtrZXksIHZhbHVlXSkgPT4ge1xuICAgICAgICAgICAgdGFibGVOYW1lc1trZXldID0gdGhpcy5nZXRUYWJsZU5hbWUodmFsdWUpO1xuICAgICAgICB9KTtcblxuICAgICAgICByZXR1cm4gdGFibGVOYW1lcztcbiAgICB9XG59XG5cbi8vIEV4cG9ydCBlbnZpcm9ubWVudC1hd2FyZSB0YWJsZSBuYW1lc1xuZXhwb3J0IGNvbnN0IFRBQkxFX05BTUVTID0ge1xuICAgIC8vIEN1c3RvbWVyIEFwcCBUYWJsZXNcbiAgICBBUFBfRkVFREJBQ0s6IFRhYmxlTmFtZU1hbmFnZXIuZ2V0VGFibGVOYW1lKEJBU0VfVEFCTEVfTkFNRVMuQVBQX0ZFRURCQUNLKSxcbiAgICBMU1FfQ1JNOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLkxTUV9DUk0pLFxuICAgIENVVExFUlk6IFRhYmxlTmFtZU1hbmFnZXIuZ2V0VGFibGVOYW1lKEJBU0VfVEFCTEVfTkFNRVMuQ1VUTEVSWSksXG4gICAgSVRFTV9BQ0NPTVBBTklNRU5UUzogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5JVEVNX0FDQ09NUEFOSU1FTlRTKSxcbiAgICBDVUlTSU5FOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLkNVSVNJTkUpLFxuICAgIFRJRVJfREVUQUlMUzogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5USUVSX0RFVEFJTFMpLFxuICAgIFVTRVJfT1JERVJfU1VNTUFSWTogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5VU0VSX09SREVSX1NVTU1BUlkpLFxuICAgIFRJRVJfUkVGRVJSQUw6IFRhYmxlTmFtZU1hbmFnZXIuZ2V0VGFibGVOYW1lKEJBU0VfVEFCTEVfTkFNRVMuVElFUl9SRUZFUlJBTCksXG4gICAgVVNFUl9BRERSRVNTX1JFUVVFU1Q6IFRhYmxlTmFtZU1hbmFnZXIuZ2V0VGFibGVOYW1lKEJBU0VfVEFCTEVfTkFNRVMuVVNFUl9BRERSRVNTX1JFUVVFU1QpLFxuICAgIENPTU1PTl9GRUVEQkFDSzogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5DT01NT05fRkVFREJBQ0spLFxuICAgIEdVRVNUX0ZFRURCQUNLOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLkdVRVNUX0ZFRURCQUNLKSxcbiAgICBDT1VOVEVSOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLkNPVU5URVIpLFxuICAgIFJFUVVFU1RfSU5WT0lDRTogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5SRVFVRVNUX0lOVk9JQ0UpLFxuICAgIFBMQVRURVJfU0VBUkNIX0VWRU5UUzogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5QTEFUVEVSX1NFQVJDSF9FVkVOVFMpLFxuICAgIE9SREVSX1JFVklFV19GRUVEQkFDSzogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5PUkRFUl9SRVZJRVdfRkVFREJBQ0spLFxuICAgIENBVEVSSU5HX1JFUVVFU1Q6IFRhYmxlTmFtZU1hbmFnZXIuZ2V0VGFibGVOYW1lKEJBU0VfVEFCTEVfTkFNRVMuQ0FURVJJTkdfUkVRVUVTVCksXG5cbiAgICAvLyBPcmRlciBNb2R1bGUgVGFibGVzXG4gICAgT1JERVI6IFRhYmxlTmFtZU1hbmFnZXIuZ2V0VGFibGVOYW1lKEJBU0VfVEFCTEVfTkFNRVMuT1JERVIpLFxuICAgIE9SREVSX0FERFJFU1M6IFRhYmxlTmFtZU1hbmFnZXIuZ2V0VGFibGVOYW1lKEJBU0VfVEFCTEVfTkFNRVMuT1JERVJfQUREUkVTUyksXG4gICAgT1JERVJfUkVWSUVXOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLk9SREVSX1JFVklFVyksXG4gICAgUEFZTUVOVDogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5QQVlNRU5UKSxcbiAgICBQTEFURV9PUkRFUjogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5QTEFURV9PUkRFUiksXG4gICAgVFJBQ0tJTkc6IFRhYmxlTmFtZU1hbmFnZXIuZ2V0VGFibGVOYW1lKEJBU0VfVEFCTEVfTkFNRVMuVFJBQ0tJTkcpLFxuICAgIFVTRVJfQUREUkVTUzogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5VU0VSX0FERFJFU1MpLFxuXG4gICAgLy8gT3RoZXIgQ3VzdG9tZXIgVGFibGVzXG4gICAgQUREX09OUzogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5BRERfT05TKSxcbiAgICBCQU5LX0RFVEFJTFM6IFRhYmxlTmFtZU1hbmFnZXIuZ2V0VGFibGVOYW1lKEJBU0VfVEFCTEVfTkFNRVMuQkFOS19ERVRBSUxTKSxcbiAgICBDQVJUOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLkNBUlQpLFxuICAgIENBUlRfQ0FURUdPUklFUzogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5DQVJUX0NBVEVHT1JJRVMpLFxuICAgIENBVEVHT1JZOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLkNBVEVHT1JZKSxcbiAgICBDQVRFUklORzogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5DQVRFUklORyksXG4gICAgQ09OVEVOVDogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5DT05URU5UKSxcbiAgICBDT1VQT05TOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLkNPVVBPTlMpLFxuICAgIERFRkFVTFRfUExBVFRFUjogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5ERUZBVUxUX1BMQVRURVIpLFxuICAgIERFRkFVTFRfUExBVFRFUl9DQVRFR09SSUVTOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLkRFRkFVTFRfUExBVFRFUl9DQVRFR09SSUVTKSxcbiAgICBERUZBVUxUX1BMQVRURVJfSVRFTVM6IFRhYmxlTmFtZU1hbmFnZXIuZ2V0VGFibGVOYW1lKEJBU0VfVEFCTEVfTkFNRVMuREVGQVVMVF9QTEFUVEVSX0lURU1TKSxcbiAgICBFVkVOVF9FWEVDVVRJVkVTOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLkVWRU5UX0VYRUNVVElWRVMpLFxuICAgIElURU1TOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLklURU1TKSxcbiAgICBMRUFEOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLkxFQUQpLFxuICAgIE9DQ0FTSU9OOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLk9DQ0FTSU9OKSxcbiAgICBSRUZFUlJBTF9DT05URU5UOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLlJFRkVSUkFMX0NPTlRFTlQpLFxuICAgIFVTRVI6IFRhYmxlTmFtZU1hbmFnZXIuZ2V0VGFibGVOYW1lKEJBU0VfVEFCTEVfTkFNRVMuVVNFUiksXG4gICAgV0FMTEVUOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLldBTExFVCksXG4gICAgV0FMTEVUX1RSQU5TQUNUSU9OOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLldBTExFVF9UUkFOU0FDVElPTiksXG4gICAgV0lUSERSQVdOOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLldJVEhEUkFXTiksXG5cbiAgICAvLyBJbnRlcm5hbCBVc2VyIFRhYmxlc1xuICAgIElOVEVSTkFMX1VTRVI6IFRhYmxlTmFtZU1hbmFnZXIuZ2V0VGFibGVOYW1lKEJBU0VfVEFCTEVfTkFNRVMuSU5URVJOQUxfVVNFUiksXG4gICAgQUNUSVZJVFlfTE9HUzogVGFibGVOYW1lTWFuYWdlci5nZXRUYWJsZU5hbWUoQkFTRV9UQUJMRV9OQU1FUy5BQ1RJVklUWV9MT0dTKSxcbiAgICBRVU9UQVRJT05TOiBUYWJsZU5hbWVNYW5hZ2VyLmdldFRhYmxlTmFtZShCQVNFX1RBQkxFX05BTUVTLlFVT1RBVElPTlMpXG59IGFzIGNvbnN0O1xuIl19
package/index.js CHANGED
@@ -1,3 +1,9 @@
1
+ // Environment Configuration
2
+ export { envManager, EnvironmentManager } from './dist/config/environment-config';
3
+ export { DatabaseFactory } from './dist/config/database-factory';
4
+ export { TableNameManager, TABLE_NAMES, BASE_TABLE_NAMES } from './dist/config/table-names';
5
+
6
+ // Core Database Components
1
7
  export { InternalUserModel } from './dist/internal-user/internal-user-model';
2
8
  export { internalUserDao } from './dist/internal-user/internal-user-dao';
3
9
  export { GenericDAO } from './dist/base-dao';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "cmp-aws-database",
3
- "version": "1.1.107",
3
+ "version": "1.2.0-dev.1",
4
4
  "bin": {
5
5
  "craft-my-plate-database": "bin/craft-my-plate-database.js"
6
6
  },
@@ -8,7 +8,17 @@
8
8
  "build": "tsc",
9
9
  "watch": "tsc -w",
10
10
  "test": "jest",
11
- "cdk": "cdk"
11
+ "cdk": "cdk",
12
+ "version:info": "node scripts/version-strategy.js info",
13
+ "version:increment": "node scripts/version-strategy.js increment",
14
+ "version:sync": "node scripts/version-strategy.js sync",
15
+ "deploy:dev": "./scripts/deploy-environment.sh -e DEV",
16
+ "deploy:proddebug": "./scripts/deploy-environment.sh -e PRODDEBUG",
17
+ "deploy:prod": "./scripts/deploy-environment.sh -e PROD",
18
+ "deploy:dev:skip-tests": "./scripts/deploy-environment.sh -e DEV --skip-tests",
19
+ "deploy:proddebug:skip-tests": "./scripts/deploy-environment.sh -e PRODDEBUG --skip-tests",
20
+ "deploy:prod:skip-tests": "./scripts/deploy-environment.sh -e PROD --skip-tests",
21
+ "create-branches": "./scripts/create-environment-branches.sh"
12
22
  },
13
23
  "devDependencies": {
14
24
  "@types/jest": "^29.5.14",
@@ -1,6 +0,0 @@
1
- import { GenericDAO } from "../../../base-dao";
2
- import { PaymentModel } from "./payment-model";
3
- declare class PaymentDAO extends GenericDAO<PaymentModel> {
4
- }
5
- export declare const paymentDao: PaymentDAO;
6
- export {};
@@ -1,8 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.paymentDao = void 0;
4
- const base_dao_1 = require("../../../base-dao");
5
- class PaymentDAO extends base_dao_1.GenericDAO {
6
- }
7
- exports.paymentDao = new PaymentDAO();
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF5bWV0LWRhby5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9jdXN0b21lci11c2VyL29yZGVyLW1vZHVsZS9wYXltZW50L3BheW1ldC1kYW8udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsZ0RBQStDO0FBRy9DLE1BQU0sVUFBVyxTQUFRLHFCQUF3QjtDQUVoRDtBQUVZLFFBQUEsVUFBVSxHQUFHLElBQUksVUFBVSxFQUFFLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHZW5lcmljREFPIH0gZnJvbSBcIi4uLy4uLy4uL2Jhc2UtZGFvXCI7XG5pbXBvcnQgeyBQYXltZW50TW9kZWwgfSBmcm9tIFwiLi9wYXltZW50LW1vZGVsXCI7XG5cbmNsYXNzIFBheW1lbnREQU8gZXh0ZW5kcyBHZW5lcmljREFPPFBheW1lbnRNb2RlbD4ge1xuXG59XG5cbmV4cG9ydCBjb25zdCBwYXltZW50RGFvID0gbmV3IFBheW1lbnREQU8oKTsiXX0=