@diagramers/cli 1.0.22 → 1.0.24
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 +17 -3
- package/dist/services/template-updater.d.ts +2 -0
- package/dist/services/template-updater.d.ts.map +1 -1
- package/dist/services/template-updater.js +66 -14
- package/dist/services/template-updater.js.map +1 -1
- package/package.json +5 -1
- package/templates/api/certs/auth-app-cert.json +13 -0
- package/templates/api/main.ts +10 -0
- package/templates/api/package.json +70 -0
- package/templates/api/src/assets/css/email-template.css +8 -0
- package/templates/api/src/assets/images/logo_large.png +0 -0
- package/templates/api/src/assets/keys/certificate.pem +22 -0
- package/templates/api/src/assets/keys/private-key.pem +28 -0
- package/templates/api/src/config/config-interface.ts +191 -0
- package/templates/api/src/config/development.ts +145 -0
- package/templates/api/src/config/index.ts +59 -0
- package/templates/api/src/config/production.ts +145 -0
- package/templates/api/src/config/staging.ts +144 -0
- package/templates/api/src/config/uat.ts +144 -0
- package/templates/api/src/controllers/account-controller.ts +162 -0
- package/templates/api/src/entities/audit.ts +12 -0
- package/templates/api/src/entities/base-entity.ts +10 -0
- package/templates/api/src/entities/user.ts +71 -0
- package/templates/api/src/helpers/FrameworkHelper.ts +157 -0
- package/templates/api/src/helpers/auth.ts +971 -0
- package/templates/api/src/helpers/cronHelper.ts +170 -0
- package/templates/api/src/helpers/dbcontext.ts +83 -0
- package/templates/api/src/helpers/encryptionHelper.ts +76 -0
- package/templates/api/src/helpers/enums.ts +258 -0
- package/templates/api/src/helpers/handle-response.ts +49 -0
- package/templates/api/src/helpers/httpHelper.ts +75 -0
- package/templates/api/src/helpers/mailer.ts +152 -0
- package/templates/api/src/helpers/result.ts +47 -0
- package/templates/api/src/helpers/string-helper.ts +27 -0
- package/templates/api/src/routes/account-routes.ts +37 -0
- package/templates/api/src/routes/auth-routes.ts +286 -0
- package/templates/api/src/routes/index.ts +92 -0
- package/templates/api/src/schemas/audit.ts +36 -0
- package/templates/api/src/schemas/otp.ts +52 -0
- package/templates/api/src/schemas/session.ts +57 -0
- package/templates/api/src/schemas/user.ts +125 -0
- package/templates/api/src/server/index.ts +86 -0
- package/templates/api/src/server/socket-server-provider.ts +209 -0
- package/templates/api/src/services/account-service.ts +243 -0
- package/templates/api/src/services/audit-service.ts +56 -0
- package/templates/api/tsconfig.json +16 -0
- package/templates/api/webpack.config.js +66 -0
- package/scripts/publish.sh +0 -58
- package/scripts/setup.sh +0 -38
- package/scripts/version.sh +0 -80
- package/src/commands/api.ts +0 -76
- package/src/commands/extend.ts +0 -35
- package/src/commands/init.ts +0 -32
- package/src/commands/update.ts +0 -25
- package/src/config/template-config.ts +0 -111
- package/src/index.ts +0 -41
- package/src/services/api-generator.ts +0 -378
- package/src/services/project-extender.ts +0 -330
- package/src/services/project-initializer.ts +0 -335
- package/src/services/project-updater.ts +0 -117
- package/src/services/relation-generator.ts +0 -203
- package/src/services/table-generator.ts +0 -114
- package/src/services/template-processor.ts +0 -166
- package/src/services/template-updater.ts +0 -184
- package/tsconfig.json +0 -19
package/README.md
CHANGED
@@ -55,10 +55,10 @@ diagramers init admin <project-name>
|
|
55
55
|
- MongoDB with Mongoose
|
56
56
|
- Firebase Functions integration
|
57
57
|
- Socket.io for real-time features
|
58
|
-
- Authentication
|
58
|
+
- **Multi-Provider Authentication System** - Internal, Firebase, OAuth, SMS OTP, Email OTP
|
59
59
|
- Email and SMS services
|
60
60
|
- Audit logging
|
61
|
-
- Environment configurations
|
61
|
+
- Environment configurations with comprehensive auth settings
|
62
62
|
|
63
63
|
### Project Updates
|
64
64
|
|
@@ -79,7 +79,7 @@ diagramers update --force
|
|
79
79
|
# List available features
|
80
80
|
diagramers extend --list
|
81
81
|
|
82
|
-
# Add authentication system
|
82
|
+
# Add authentication system (includes multi-provider auth)
|
83
83
|
diagramers extend --feature auth
|
84
84
|
|
85
85
|
# Add email service
|
@@ -95,6 +95,20 @@ diagramers extend --feature cron
|
|
95
95
|
diagramers extend --feature audit
|
96
96
|
```
|
97
97
|
|
98
|
+
### Authentication System Features
|
99
|
+
|
100
|
+
The CLI now supports the enhanced multi-provider authentication system:
|
101
|
+
|
102
|
+
- **Internal Authentication** - Email/password with configurable policies
|
103
|
+
- **Firebase Authentication** - Google Firebase integration
|
104
|
+
- **OAuth Providers** - Google, Facebook, GitHub, LinkedIn, Twitter
|
105
|
+
- **SMS OTP** - One-time passwords via SMS (Twilio/AWS SNS)
|
106
|
+
- **Email OTP** - One-time passwords via email
|
107
|
+
- **Session Management** - JWT tokens with refresh capabilities
|
108
|
+
- **Unified User Model** - Single user with multiple auth providers
|
109
|
+
|
110
|
+
All new projects include comprehensive authentication configuration with dummy values that developers can replace with their own credentials.
|
111
|
+
|
98
112
|
## 🔧 API Development Commands
|
99
113
|
|
100
114
|
### Generate Complete Module
|
@@ -11,6 +11,8 @@ export declare class TemplateUpdater {
|
|
11
11
|
private isValidProject;
|
12
12
|
private createBackup;
|
13
13
|
private downloadTemplate;
|
14
|
+
private downloadFromNpm;
|
15
|
+
private copyLocalTemplate;
|
14
16
|
private getUpdateableFiles;
|
15
17
|
private checkConflicts;
|
16
18
|
private performUpdate;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"template-updater.d.ts","sourceRoot":"","sources":["../../src/services/template-updater.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"template-updater.d.ts","sourceRoot":"","sources":["../../src/services/template-updater.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,qBAAa,eAAe;IAC1B,OAAO,CAAC,kBAAkB,CAAS;IACnC,OAAO,CAAC,gBAAgB,CAAS;;IAO3B,MAAM,CAAC,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;YAyC7C,cAAc;YAOd,YAAY;YA8BZ,gBAAgB;YAiBhB,eAAe;YAiCf,iBAAiB;YAoCjB,kBAAkB;YAmBlB,cAAc;YAqBd,aAAa;YAeb,OAAO;CAKtB"}
|
@@ -41,6 +41,7 @@ const fs = __importStar(require("fs-extra"));
|
|
41
41
|
const path = __importStar(require("path"));
|
42
42
|
const glob = __importStar(require("glob"));
|
43
43
|
const chalk_1 = __importDefault(require("chalk"));
|
44
|
+
const child_process_1 = require("child_process");
|
44
45
|
class TemplateUpdater {
|
45
46
|
constructor() {
|
46
47
|
this.currentProjectPath = process.cwd();
|
@@ -112,22 +113,73 @@ class TemplateUpdater {
|
|
112
113
|
console.log(chalk_1.default.blue(`📦 Downloading latest template: ${templatePackage}`));
|
113
114
|
// Create temporary directory
|
114
115
|
await fs.ensureDir(this.tempTemplatePath);
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
116
|
+
try {
|
117
|
+
// Try to download from npm registry first
|
118
|
+
await this.downloadFromNpm(templatePackage);
|
119
|
+
}
|
120
|
+
catch (error) {
|
121
|
+
console.log(chalk_1.default.yellow('⚠️ Could not download from npm, trying local template...'));
|
122
|
+
// Fallback to local template if available
|
123
|
+
await this.copyLocalTemplate();
|
124
|
+
}
|
125
|
+
}
|
126
|
+
async downloadFromNpm(templatePackage) {
|
127
|
+
const npmCachePath = path.join(this.tempTemplatePath, 'node_modules', templatePackage);
|
128
|
+
try {
|
129
|
+
// Use npm pack to download the package
|
130
|
+
(0, child_process_1.execSync)(`npm pack ${templatePackage} --silent`, {
|
131
|
+
cwd: this.tempTemplatePath,
|
132
|
+
stdio: 'pipe'
|
133
|
+
});
|
134
|
+
// Find the downloaded tarball
|
135
|
+
const files = await fs.readdir(this.tempTemplatePath);
|
136
|
+
const tarball = files.find(file => file.endsWith('.tgz'));
|
137
|
+
if (!tarball) {
|
138
|
+
throw new Error('No tarball found after npm pack');
|
139
|
+
}
|
140
|
+
// Extract the tarball
|
141
|
+
(0, child_process_1.execSync)(`tar -xzf ${tarball} --strip-components=1`, {
|
142
|
+
cwd: this.tempTemplatePath,
|
143
|
+
stdio: 'pipe'
|
127
144
|
});
|
145
|
+
// Clean up tarball
|
146
|
+
await fs.remove(path.join(this.tempTemplatePath, tarball));
|
147
|
+
console.log(chalk_1.default.green(`✅ Template downloaded from npm: ${templatePackage}`));
|
148
|
+
}
|
149
|
+
catch (error) {
|
150
|
+
throw new Error(`Failed to download template from npm: ${error.message}`);
|
151
|
+
}
|
152
|
+
}
|
153
|
+
async copyLocalTemplate() {
|
154
|
+
// Try to find local template in CLI package
|
155
|
+
const cliRoot = path.resolve(__dirname, '../../../');
|
156
|
+
const possiblePaths = [
|
157
|
+
path.join(cliRoot, 'diagramers-api'),
|
158
|
+
path.join(cliRoot, 'templates', 'api'),
|
159
|
+
path.join(cliRoot, 'template'),
|
160
|
+
path.join(__dirname, '../../templates/api'),
|
161
|
+
path.join(__dirname, '../templates/api')
|
162
|
+
];
|
163
|
+
let templateFound = false;
|
164
|
+
for (const templatePath of possiblePaths) {
|
165
|
+
if (await fs.pathExists(templatePath)) {
|
166
|
+
await fs.copy(templatePath, this.tempTemplatePath, {
|
167
|
+
filter: (src) => {
|
168
|
+
const relativePath = path.relative(templatePath, src);
|
169
|
+
return !relativePath.startsWith('node_modules') &&
|
170
|
+
!relativePath.startsWith('.git') &&
|
171
|
+
!relativePath.startsWith('dist') &&
|
172
|
+
!relativePath.startsWith('lib') &&
|
173
|
+
!relativePath.startsWith('.temp');
|
174
|
+
}
|
175
|
+
});
|
176
|
+
templateFound = true;
|
177
|
+
console.log(chalk_1.default.green(`✅ Local template copied from: ${templatePath}`));
|
178
|
+
break;
|
179
|
+
}
|
128
180
|
}
|
129
|
-
|
130
|
-
throw new Error('Template source not found. Please ensure the CLI is properly installed.');
|
181
|
+
if (!templateFound) {
|
182
|
+
throw new Error('Template source not found. Please ensure the CLI is properly installed or the template package is available.');
|
131
183
|
}
|
132
184
|
}
|
133
185
|
async getUpdateableFiles() {
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"template-updater.js","sourceRoot":"","sources":["../../src/services/template-updater.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,2CAA6B;AAC7B,2CAA6B;AAC7B,kDAA0B;
|
1
|
+
{"version":3,"file":"template-updater.js","sourceRoot":"","sources":["../../src/services/template-updater.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
@@ -1,11 +1,15 @@
|
|
1
1
|
{
|
2
2
|
"name": "@diagramers/cli",
|
3
|
-
"version": "1.0.
|
3
|
+
"version": "1.0.24",
|
4
4
|
"description": "Diagramers CLI - Command-line tools for managing Diagramers projects",
|
5
5
|
"main": "dist/index.js",
|
6
6
|
"bin": {
|
7
7
|
"diagramers": "./dist/index.js"
|
8
8
|
},
|
9
|
+
"files": [
|
10
|
+
"dist/**/*",
|
11
|
+
"templates/**/*"
|
12
|
+
],
|
9
13
|
"scripts": {
|
10
14
|
"build": "tsc",
|
11
15
|
"dev": "ts-node src/index.ts",
|
@@ -0,0 +1,13 @@
|
|
1
|
+
{
|
2
|
+
"type": "service_account",
|
3
|
+
"project_id": "sendifier-web-app",
|
4
|
+
"private_key_id": "a8b7d1851d52845652d8dea6dc61c1e65480ad75",
|
5
|
+
"private_key": "-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCW+GaKvk2Tt01z\n98kg1T2UQXijAGKihF9gELDy/s2dF6taSUZQ5ldf2i3TSz3cdg5cmwZDFZBXXCOi\nV4nGiz0TtkE7bcTvYRDTdCMglQXOUQFFSWTNGBvvzFLk6gqpnoRnZOfS0Izi36ZN\nl/iKmo7cpkFWKWqqI2h5By856JoQVHx3Fc/c+8Zi+IcK/o/94Oh4aAE7evKBtQ6o\nbJw/0MwdxfoawkFA410qR7EZRobYECvZ1gmXmvw81AKLVDxtGaTlzNWAfMQsYt7S\nAT3OO8dkC09hwSdsaz9Sz2CiTYc7PY4SUFjYb01MtI8qrHpGy7PWrCm5MqXlMVaj\nLtdsr5+lAgMBAAECggEADy0RQck3iy3V/15dPYuyEQEz207im2urGsESyJqMmMoU\nU5MiGmfNSLlp+d+KbGsBrpV2369/PwjoHB2on+jHTv/3Nr4mGdosEtWN4myYlNDX\ny9tA4s0VodlsS86rG7nvnWUrWKnWP8gzs4EfXu+ChPPBhaPMMSY2DlSGjs+vDQ0J\nnFGeJgmbb2WezJQIWYxunpYwKN9gxmMY796baLjQriIz3ZG3n543nMLX8+2bJskz\n4NwsOYg2Od59FI5G9ukm1ZCUksjU+gVkVNaiHzjMgoWROSnotCKUrkkzP01a1WNu\nwrXQ354NNbCrvfF9J0gLyFyh1WlXID/6I8t7MYFOgQKBgQDJtEnmpj4mOPSh3LzR\nH7lUcVSccZxBXiQZ8nPA2R0ijjWd9nd5tWUeRkPFrSzZbDjDwhC0eeJTfL+RFG+M\nuhT33VRE1NMWnDl4JjyN0JgMAtkh46t0Wssouy2lsJHhmnvg+x4IXeY+VTs59vTm\np8+i4DDZSVYRTeMoNXPSFk7EqQKBgQC/m/fNj1kAplJN25x7qKemQGZJ71j0X5Ga\nmWPS4N1DowldjK6tYUyJYiHkAlgynPHh34Bu2hcsKq4NjrMfGXHg16/41gqtm5Ji\nE6N3B6EZmWHn6EetPQTu7EUv93Xt9CL42/QoKl+GgW0nP1Oq5/33xEKmn5ytFnxA\nn4/Zd3dknQKBgGlCzeIxVXOq+3dQ87SKwrPfpNEztOCkGWD1FxVH+J1k63QxAC6i\nzE9dSdbqReJ9SK5YI1Gb3dHF4076BDDDl1e2yFhXXIWLJ66c/bLgbciu39OAtaQ2\nEZmC/RJfr/G1JfrF8elZ32MeJZddWnbYklIkfzmVvPWw2N/N7VBw1dBpAoGBAJer\nOce5BFaDUPrYL1Gi+rGaoF093EfzrimV6XJvFDYJw8wNI+eR8Sd+Sh1VzcKigMSu\nSdd1Qopvbj7FCfxAA+haUqzBoMozLvf7W5VIsLi2tM0BDFuQxWrqEwoY83xbl6Mt\nWGLCx8KMiH5cnjnWUS3iaG/EQByyg8ATjaYx7ovxAoGAIEL3/VVDvmHoVNeymEId\nEzPcpo9rXlM6TqF+GPvv70RkCStYchMXpIStw0Ol50J1M8Wekjk3zapktnIEeNkV\nRu7LIBfLCKZUi5S2Eje2ySNqPwthsLGnf2ucAbmxf9iGKdVYsygCWiKjzWzMY6R0\nLIP9WS2447iE8WzT3boErEs=\n-----END PRIVATE KEY-----\n",
|
6
|
+
"client_email": "sendifier-web-app@appspot.gserviceaccount.com",
|
7
|
+
"client_id": "106469361322605622638",
|
8
|
+
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
|
9
|
+
"token_uri": "https://oauth2.googleapis.com/token",
|
10
|
+
"auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs",
|
11
|
+
"client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/sendifier-web-app%40appspot.gserviceaccount.com",
|
12
|
+
"universe_domain": "googleapis.com"
|
13
|
+
}
|
@@ -0,0 +1,10 @@
|
|
1
|
+
// import { Server } from "./server";
|
2
|
+
import {https} from "firebase-functions";
|
3
|
+
import { Server } from './src/server';
|
4
|
+
import { Config } from './src/config';
|
5
|
+
const server = new Server();
|
6
|
+
const config = Config;
|
7
|
+
server.Create(config);
|
8
|
+
server.Start(config);
|
9
|
+
const app = https.onRequest(server.app);
|
10
|
+
export default app;
|
@@ -0,0 +1,70 @@
|
|
1
|
+
{
|
2
|
+
"name": "diagramers-api-project",
|
3
|
+
"version": "1.0.0",
|
4
|
+
"description": "Diagramers API Project - Generated from @diagramers/cli",
|
5
|
+
"main": "main.ts",
|
6
|
+
"scripts": {
|
7
|
+
"build": "webpack --mode production",
|
8
|
+
"dev": "webpack --mode development --watch",
|
9
|
+
"start": "node dist/main.js",
|
10
|
+
"dev:server": "ts-node main.ts",
|
11
|
+
"clean": "rm -rf dist",
|
12
|
+
"test": "echo \"No tests specified\" && exit 0"
|
13
|
+
},
|
14
|
+
"dependencies": {
|
15
|
+
"express": "^4.18.2",
|
16
|
+
"cors": "^2.8.5",
|
17
|
+
"helmet": "^7.1.0",
|
18
|
+
"compression": "^1.7.4",
|
19
|
+
"morgan": "^1.10.0",
|
20
|
+
"dotenv": "^16.3.1",
|
21
|
+
"joi": "^17.11.0",
|
22
|
+
"bcryptjs": "^2.4.3",
|
23
|
+
"jsonwebtoken": "^9.0.2",
|
24
|
+
"nodemailer": "^6.9.7",
|
25
|
+
"handlebars": "^4.7.8",
|
26
|
+
"socket.io": "^4.7.4",
|
27
|
+
"node-cron": "^3.0.3",
|
28
|
+
"aws-sdk": "^2.1531.0",
|
29
|
+
"firebase-admin": "^12.0.0",
|
30
|
+
"google-auth-library": "^9.4.1",
|
31
|
+
"twilio": "^4.19.0",
|
32
|
+
"multer": "^1.4.5-lts.1",
|
33
|
+
"sharp": "^0.33.1",
|
34
|
+
"uuid": "^9.0.1",
|
35
|
+
"moment": "^2.29.4",
|
36
|
+
"lodash": "^4.17.21"
|
37
|
+
},
|
38
|
+
"devDependencies": {
|
39
|
+
"@types/express": "^4.17.21",
|
40
|
+
"@types/cors": "^2.8.17",
|
41
|
+
"@types/compression": "^1.7.5",
|
42
|
+
"@types/morgan": "^1.9.9",
|
43
|
+
"@types/bcryptjs": "^2.4.6",
|
44
|
+
"@types/jsonwebtoken": "^9.0.5",
|
45
|
+
"@types/nodemailer": "^6.4.14",
|
46
|
+
"@types/node-cron": "^3.0.11",
|
47
|
+
"@types/multer": "^1.4.11",
|
48
|
+
"@types/sharp": "^0.32.0",
|
49
|
+
"@types/uuid": "^9.0.7",
|
50
|
+
"@types/lodash": "^4.14.202",
|
51
|
+
"@types/node": "^20.10.0",
|
52
|
+
"typescript": "^5.4.5",
|
53
|
+
"ts-node": "^10.9.2",
|
54
|
+
"webpack": "^5.89.0",
|
55
|
+
"webpack-cli": "^5.1.4",
|
56
|
+
"webpack-node-externals": "^3.0.0",
|
57
|
+
"ts-loader": "^9.5.1"
|
58
|
+
},
|
59
|
+
"keywords": [
|
60
|
+
"diagramers",
|
61
|
+
"api",
|
62
|
+
"nodejs",
|
63
|
+
"typescript",
|
64
|
+
"express",
|
65
|
+
"authentication",
|
66
|
+
"websocket"
|
67
|
+
],
|
68
|
+
"author": "Diagramers Team",
|
69
|
+
"license": "MIT"
|
70
|
+
}
|
Binary file
|
@@ -0,0 +1,22 @@
|
|
1
|
+
-----BEGIN CERTIFICATE-----
|
2
|
+
MIIDtzCCAp8CFGGm7kkYGsjlcwvRxs71EZqhheGYMA0GCSqGSIb3DQEBCwUAMIGX
|
3
|
+
MQswCQYDVQQGEwJFRzEOMAwGA1UECAwFQ2Fpcm8xDjAMBgNVBAcMBUNhaXJvMRMw
|
4
|
+
EQYDVQQKDApTZW5kaWZpZXIhMRMwEQYDVQQLDApTZW5kaWZpZXIhMRowGAYDVQQD
|
5
|
+
DBFzZW5kaWZpZXItYmFja2VuZDEiMCAGCSqGSIb3DQEJARYTYXlkYWhhYkBvdXRs
|
6
|
+
b29rLmNvbTAeFw0yMzEyMTQwMDM2MTFaFw0yNDEyMTMwMDM2MTFaMIGXMQswCQYD
|
7
|
+
VQQGEwJFRzEOMAwGA1UECAwFQ2Fpcm8xDjAMBgNVBAcMBUNhaXJvMRMwEQYDVQQK
|
8
|
+
DApTZW5kaWZpZXIhMRMwEQYDVQQLDApTZW5kaWZpZXIhMRowGAYDVQQDDBFzZW5k
|
9
|
+
aWZpZXItYmFja2VuZDEiMCAGCSqGSIb3DQEJARYTYXlkYWhhYkBvdXRsb29rLmNv
|
10
|
+
bTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALnLPve1wO/7Xq9tgEsl
|
11
|
+
/zE5qUS9p8vYgjA2953MubcDeaCrqpxRP/LSqM2bMd/uIQUqL3VLYK9sfcJV7RXT
|
12
|
+
HazhbP2OTH+ny+qHWx4VLrbFVpc0w8EUPAEUXcBZEX52ueTtKrtxgv+R5nCSXRs2
|
13
|
+
CanMTcaNVlVnOq+cQkq04UuvpBjjBrdINX6+x/WSCGqRuq/qmz9/kcf53sYOBkFT
|
14
|
+
VlZmhMdQAXBFuaUxBHLSxYtBmndk1jlHEQFX4t5cdAOHfLiaqbd2Cp/aWQbV4O/V
|
15
|
+
8jJ/SJVenA1P1wnGJrilvffMpIKaWMXOob+78nbnt221rWgempIJQRg5hxr7zG25
|
16
|
+
TT0CAwEAATANBgkqhkiG9w0BAQsFAAOCAQEArP87tWT8CzJO5Gn9fwlH21JHurJM
|
17
|
+
NYWtRtFWevD7eyzoai+8DTRwEbSWAJPA28+fxzUeN8mEDZg47HkM9mQmE+mZwg8Q
|
18
|
+
XY5R+3kloBtTSUMxfLlfUaC+1zkjuYgtfUL2QMcUd8OrcHbbQAktkS+A2IBNDNlH
|
19
|
+
E11lxhcEO1oTn1/Bp3S7Wkdju832s+Vth7pPHZg32jzmZ8vpi/U7xv8pGHIJF+eh
|
20
|
+
WMgAM7OLX343/FOGOzF5xh114NKl+8gD6fbZ+KB6XM/wKt1GyZsNEdacLXTjhPPe
|
21
|
+
TgajLRhjcmwSHa/UL6Hu+68kCFoOr7yyUoZxoiy2jnHGnJesoWs43kHHLQ==
|
22
|
+
-----END CERTIFICATE-----
|
@@ -0,0 +1,28 @@
|
|
1
|
+
-----BEGIN PRIVATE KEY-----
|
2
|
+
MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQC5yz73tcDv+16v
|
3
|
+
bYBLJf8xOalEvafL2IIwNvedzLm3A3mgq6qcUT/y0qjNmzHf7iEFKi91S2CvbH3C
|
4
|
+
Ve0V0x2s4Wz9jkx/p8vqh1seFS62xVaXNMPBFDwBFF3AWRF+drnk7Sq7cYL/keZw
|
5
|
+
kl0bNgmpzE3GjVZVZzqvnEJKtOFLr6QY4wa3SDV+vsf1kghqkbqv6ps/f5HH+d7G
|
6
|
+
DgZBU1ZWZoTHUAFwRbmlMQRy0sWLQZp3ZNY5RxEBV+LeXHQDh3y4mqm3dgqf2lkG
|
7
|
+
1eDv1fIyf0iVXpwNT9cJxia4pb33zKSCmljFzqG/u/J257dtta1oHpqSCUEYOYca
|
8
|
+
+8xtuU09AgMBAAECggEAXZK2qO16OaOBYZslxTNi3njq/nsCepEVqJDWjzwfwMPY
|
9
|
+
SwqKh+YH7hUY/UyPhveY29AOTOXk0RU0FV9PY/GK/ZofWWiEsLpi4kC/rFwAxf6H
|
10
|
+
iOoDOUgmnGiUex6gx++l2l10aylVT8A8ri+ZAu5pWYJTHY/rjmHKVc2+OX/2BDab
|
11
|
+
ISfYdv2HKSyS7R1t2qLP66LV5u1Kvob4YX3PBweReA622piTtwxtXrIuF5/AjgQe
|
12
|
+
LF1P9rxpGO3woQjdc9EKBC5I9Erc/HuHuxMfSFdtTWSYKmaqGLPZ6/GQthsg6UPC
|
13
|
+
NZ3aC7LKcLg0Qow6VmnfMBwjXt2shp16qXEkL4mZYQKBgQDbH5EQyl6cjIC16rDs
|
14
|
+
Qi4pvOvPYgkkCR56NkNcJfiB2A6g2j9R/dsC+AxdP0N7lPeJPSgm4VNBG4cTNcCl
|
15
|
+
a6ARQ5h77P0BLzz0LlrluIC0qP2E11Luz68B/xHobpV6w+t2/2Jbsa5U47uFikEQ
|
16
|
+
B4CzMtGVryRaFb7slWkOp69WlQKBgQDZD8IdRcWxrqbOSAY66NbkgBfUDKfr/X8B
|
17
|
+
QEy2PwMPYSQM5fEfwXbVNeI7pMgxWrM8eoOyGLcjhP+DVyjmLIL1Xw6QZTR84GGr
|
18
|
+
7ooWS9eG+ryM3IcZyjZwcvCkNGz8CfgXxw01oW7ICvluBxZRIf/qFXHZKIjIO15e
|
19
|
+
r3TuLku6CQKBgFmPI1l7fQP7ITg5PiqyOe/xOWg/p4DFAWHt/8YP9uwLBJ+V1D+M
|
20
|
+
xBEIlPUfwFMoZawABQMvIToBKEoftCdoP7oOqKouCJKNXhpnP9uYd3Jfh47d+xWE
|
21
|
+
aQEl4YngeNP+c6TlaKwViS1FDwXbphAJIP8dDDBjrzXqoWhNAO1ud+mpAoGAdf3b
|
22
|
+
7h+kZH7lC9MZF+LEFbgPu+QZT+4foOV8DcFY/341o5FHLpTy7Nl6niNn83QzZFfQ
|
23
|
+
yPooa3V7k8DIab6efZVrjFCHZK5wSY7En3Qgt64K2qNyCTHjv+KrLweUirk8lGhO
|
24
|
+
pO2ZE8LrbcUKe5X40B1SItKm7/ldxiiobmTaI0kCgYA8xTX1p09wK5v9tLomL3I1
|
25
|
+
dzDMgEiIDwMEmhHjPP/4aWCQqntyShAN1hkvOE6OifJuJUZbEnHo3ihAGuw45xn8
|
26
|
+
l8NJd9y2eEX0Se0BeJxyJDYii592MbffIpGcoV1WkR0YRiUPTfkN+L0OBjFN02q+
|
27
|
+
wgJPNX0LwIfI7oyFrlW/8g==
|
28
|
+
-----END PRIVATE KEY-----
|
@@ -0,0 +1,191 @@
|
|
1
|
+
import { WhatsappProviders, AuthProvider, OAuthProvider } from "../helpers/enums";
|
2
|
+
|
3
|
+
export interface IConfig {
|
4
|
+
variables: any,
|
5
|
+
props: IConfigProps
|
6
|
+
}
|
7
|
+
|
8
|
+
export interface IConfigProps {
|
9
|
+
isProd: boolean;
|
10
|
+
isDev: boolean;
|
11
|
+
host_name: string;
|
12
|
+
port: string;
|
13
|
+
database_connectionstring: string;
|
14
|
+
base_site_url: string,
|
15
|
+
register_complete_page_url: string;
|
16
|
+
whatsapp_default_provider: WhatsappProviders;
|
17
|
+
whatsapp_providers_configurations: {
|
18
|
+
key: WhatsappProviders,
|
19
|
+
value: WhatsappProvidersConfig
|
20
|
+
}[];
|
21
|
+
development_environment_url: string;
|
22
|
+
|
23
|
+
// Authentication Configuration
|
24
|
+
auth: AuthConfig;
|
25
|
+
|
26
|
+
// Legacy Firebase config (kept for backward compatibility)
|
27
|
+
firebase_application_config: FirebaseConfig;
|
28
|
+
firebase_auth_certification_path: string;
|
29
|
+
|
30
|
+
internal_http_request_header_value: string;
|
31
|
+
internal_http_request_header_key: string;
|
32
|
+
http_request_header_requestidentifier_key: string;
|
33
|
+
redirect_all_requests_to_local: boolean;
|
34
|
+
local_api_tunnel_url: string;
|
35
|
+
local_ui_tunnel_url: string;
|
36
|
+
load_scheduled_tasks: boolean;
|
37
|
+
backup_databases_folder_path: string;
|
38
|
+
external_http_request_timeout: number;
|
39
|
+
}
|
40
|
+
|
41
|
+
export interface FirebaseConfig {
|
42
|
+
apiKey: string;
|
43
|
+
authDomain: string;
|
44
|
+
projectId: string;
|
45
|
+
storageBucket: string;
|
46
|
+
messagingSenderId: string;
|
47
|
+
appId: string;
|
48
|
+
}
|
49
|
+
|
50
|
+
export interface AuthConfig {
|
51
|
+
// Enabled authentication providers
|
52
|
+
enabled_providers: AuthProvider[];
|
53
|
+
|
54
|
+
// Default authentication provider
|
55
|
+
default_provider: AuthProvider;
|
56
|
+
|
57
|
+
// JWT Configuration
|
58
|
+
jwt: JWTConfig;
|
59
|
+
|
60
|
+
// Internal Authentication
|
61
|
+
internal: InternalAuthConfig;
|
62
|
+
|
63
|
+
// Firebase Authentication
|
64
|
+
firebase: FirebaseAuthConfig;
|
65
|
+
|
66
|
+
// OAuth Providers
|
67
|
+
oauth: OAuthConfig;
|
68
|
+
|
69
|
+
// SMS/OTP Configuration
|
70
|
+
sms_otp: SMSOTPConfig;
|
71
|
+
|
72
|
+
// Email OTP Configuration
|
73
|
+
email_otp: EmailOTPConfig;
|
74
|
+
|
75
|
+
// Session Configuration
|
76
|
+
session: SessionConfig;
|
77
|
+
}
|
78
|
+
|
79
|
+
export interface JWTConfig {
|
80
|
+
secret: string;
|
81
|
+
expires_in: string; // e.g., "24h", "7d"
|
82
|
+
refresh_token_expires_in: string;
|
83
|
+
issuer: string;
|
84
|
+
audience: string;
|
85
|
+
}
|
86
|
+
|
87
|
+
export interface InternalAuthConfig {
|
88
|
+
password_min_length: number;
|
89
|
+
password_require_uppercase: boolean;
|
90
|
+
password_require_lowercase: boolean;
|
91
|
+
password_require_numbers: boolean;
|
92
|
+
password_require_special_chars: boolean;
|
93
|
+
max_login_attempts: number;
|
94
|
+
lockout_duration_minutes: number;
|
95
|
+
require_email_verification: boolean;
|
96
|
+
require_phone_verification: boolean;
|
97
|
+
}
|
98
|
+
|
99
|
+
export interface FirebaseAuthConfig {
|
100
|
+
enabled: boolean;
|
101
|
+
project_id: string;
|
102
|
+
private_key_path: string;
|
103
|
+
client_email: string;
|
104
|
+
api_key: string;
|
105
|
+
auth_domain: string;
|
106
|
+
storage_bucket: string;
|
107
|
+
messaging_sender_id: string;
|
108
|
+
app_id: string;
|
109
|
+
}
|
110
|
+
|
111
|
+
export interface OAuthConfig {
|
112
|
+
enabled_providers: OAuthProvider[];
|
113
|
+
providers: {
|
114
|
+
[key in OAuthProvider]?: OAuthProviderConfig;
|
115
|
+
};
|
116
|
+
callback_url: string;
|
117
|
+
state_secret: string;
|
118
|
+
}
|
119
|
+
|
120
|
+
export interface OAuthProviderConfig {
|
121
|
+
client_id: string;
|
122
|
+
client_secret: string;
|
123
|
+
redirect_uri: string;
|
124
|
+
scope: string[];
|
125
|
+
enabled: boolean;
|
126
|
+
}
|
127
|
+
|
128
|
+
export interface SMSOTPConfig {
|
129
|
+
enabled: boolean;
|
130
|
+
provider: 'twilio' | 'aws_sns' | 'custom';
|
131
|
+
twilio?: {
|
132
|
+
account_sid: string;
|
133
|
+
auth_token: string;
|
134
|
+
from_number: string;
|
135
|
+
};
|
136
|
+
aws_sns?: {
|
137
|
+
access_key_id: string;
|
138
|
+
secret_access_key: string;
|
139
|
+
region: string;
|
140
|
+
};
|
141
|
+
otp_length: number;
|
142
|
+
otp_expiry_minutes: number;
|
143
|
+
max_attempts: number;
|
144
|
+
}
|
145
|
+
|
146
|
+
export interface EmailOTPConfig {
|
147
|
+
enabled: boolean;
|
148
|
+
smtp: {
|
149
|
+
host: string;
|
150
|
+
port: number;
|
151
|
+
secure: boolean;
|
152
|
+
user: string;
|
153
|
+
pass: string;
|
154
|
+
};
|
155
|
+
otp_length: number;
|
156
|
+
otp_expiry_minutes: number;
|
157
|
+
max_attempts: number;
|
158
|
+
from_email: string;
|
159
|
+
from_name: string;
|
160
|
+
}
|
161
|
+
|
162
|
+
export interface SessionConfig {
|
163
|
+
max_sessions_per_user: number;
|
164
|
+
session_timeout_minutes: number;
|
165
|
+
remember_me_days: number;
|
166
|
+
concurrent_login_allowed: boolean;
|
167
|
+
}
|
168
|
+
|
169
|
+
export class WhatsappProvidersConfig {
|
170
|
+
provider_type: WhatsappProviders;
|
171
|
+
account_id: string;
|
172
|
+
token: string;
|
173
|
+
}
|
174
|
+
|
175
|
+
// Environment variable validation
|
176
|
+
export interface EnvironmentVariables {
|
177
|
+
NODE_ENV?: string;
|
178
|
+
PORT?: string;
|
179
|
+
HOST?: string;
|
180
|
+
MONGODB_URI?: string;
|
181
|
+
FIREBASE_PROJECT_ID?: string;
|
182
|
+
FIREBASE_PRIVATE_KEY?: string;
|
183
|
+
FIREBASE_CLIENT_EMAIL?: string;
|
184
|
+
JWT_SECRET?: string;
|
185
|
+
TWILIO_ACCOUNT_SID?: string;
|
186
|
+
TWILIO_AUTH_TOKEN?: string;
|
187
|
+
SMTP_HOST?: string;
|
188
|
+
SMTP_PORT?: string;
|
189
|
+
SMTP_USER?: string;
|
190
|
+
SMTP_PASS?: string;
|
191
|
+
}
|