@diagramers/cli 1.0.23 → 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.
Files changed (64) hide show
  1. package/dist/services/template-updater.d.ts +2 -0
  2. package/dist/services/template-updater.d.ts.map +1 -1
  3. package/dist/services/template-updater.js +66 -14
  4. package/dist/services/template-updater.js.map +1 -1
  5. package/package.json +5 -1
  6. package/templates/api/certs/auth-app-cert.json +13 -0
  7. package/templates/api/main.ts +10 -0
  8. package/templates/api/package.json +70 -0
  9. package/templates/api/src/assets/css/email-template.css +8 -0
  10. package/templates/api/src/assets/images/logo_large.png +0 -0
  11. package/templates/api/src/assets/keys/certificate.pem +22 -0
  12. package/templates/api/src/assets/keys/private-key.pem +28 -0
  13. package/templates/api/src/config/config-interface.ts +191 -0
  14. package/templates/api/src/config/development.ts +145 -0
  15. package/templates/api/src/config/index.ts +59 -0
  16. package/templates/api/src/config/production.ts +145 -0
  17. package/templates/api/src/config/staging.ts +144 -0
  18. package/templates/api/src/config/uat.ts +144 -0
  19. package/templates/api/src/controllers/account-controller.ts +162 -0
  20. package/templates/api/src/entities/audit.ts +12 -0
  21. package/templates/api/src/entities/base-entity.ts +10 -0
  22. package/templates/api/src/entities/user.ts +71 -0
  23. package/templates/api/src/helpers/FrameworkHelper.ts +157 -0
  24. package/templates/api/src/helpers/auth.ts +971 -0
  25. package/templates/api/src/helpers/cronHelper.ts +170 -0
  26. package/templates/api/src/helpers/dbcontext.ts +83 -0
  27. package/templates/api/src/helpers/encryptionHelper.ts +76 -0
  28. package/templates/api/src/helpers/enums.ts +258 -0
  29. package/templates/api/src/helpers/handle-response.ts +49 -0
  30. package/templates/api/src/helpers/httpHelper.ts +75 -0
  31. package/templates/api/src/helpers/mailer.ts +152 -0
  32. package/templates/api/src/helpers/result.ts +47 -0
  33. package/templates/api/src/helpers/string-helper.ts +27 -0
  34. package/templates/api/src/routes/account-routes.ts +37 -0
  35. package/templates/api/src/routes/auth-routes.ts +286 -0
  36. package/templates/api/src/routes/index.ts +92 -0
  37. package/templates/api/src/schemas/audit.ts +36 -0
  38. package/templates/api/src/schemas/otp.ts +52 -0
  39. package/templates/api/src/schemas/session.ts +57 -0
  40. package/templates/api/src/schemas/user.ts +125 -0
  41. package/templates/api/src/server/index.ts +86 -0
  42. package/templates/api/src/server/socket-server-provider.ts +209 -0
  43. package/templates/api/src/services/account-service.ts +243 -0
  44. package/templates/api/src/services/audit-service.ts +56 -0
  45. package/templates/api/tsconfig.json +16 -0
  46. package/templates/api/webpack.config.js +66 -0
  47. package/scripts/publish.sh +0 -58
  48. package/scripts/setup.sh +0 -38
  49. package/scripts/version.sh +0 -80
  50. package/src/commands/api.ts +0 -76
  51. package/src/commands/extend.ts +0 -35
  52. package/src/commands/init.ts +0 -32
  53. package/src/commands/update.ts +0 -25
  54. package/src/config/template-config.ts +0 -111
  55. package/src/index.ts +0 -41
  56. package/src/services/api-generator.ts +0 -378
  57. package/src/services/project-extender.ts +0 -330
  58. package/src/services/project-initializer.ts +0 -335
  59. package/src/services/project-updater.ts +0 -117
  60. package/src/services/relation-generator.ts +0 -203
  61. package/src/services/table-generator.ts +0 -114
  62. package/src/services/template-processor.ts +0 -166
  63. package/src/services/template-updater.ts +0 -184
  64. package/tsconfig.json +0 -19
@@ -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":"AAKA,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;YAyBhB,kBAAkB;YAmBlB,cAAc;YAqBd,aAAa;YAeb,OAAO;CAKtB"}
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
- // For now, we'll simulate downloading by copying from the CLI package
116
- // In a real implementation, you'd use npm to download the latest version
117
- const cliTemplatePath = path.resolve(__dirname, '../../../diagramers-api');
118
- if (await fs.pathExists(cliTemplatePath)) {
119
- await fs.copy(cliTemplatePath, this.tempTemplatePath, {
120
- filter: (src) => {
121
- const relativePath = path.relative(cliTemplatePath, src);
122
- return !relativePath.startsWith('node_modules') &&
123
- !relativePath.startsWith('.git') &&
124
- !relativePath.startsWith('dist') &&
125
- !relativePath.startsWith('lib');
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
- else {
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":"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"}
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.23",
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
+ }
@@ -0,0 +1,8 @@
1
+ .activation_button {
2
+ background-color: #272727;
3
+ color: #fff;
4
+ width: 150px;
5
+ height: 40px;
6
+ padding: 10px 10px 10px 10px;
7
+ border-radius: 5px;
8
+ }
@@ -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
+ }
@@ -0,0 +1,145 @@
1
+ import { WhatsappProviders, AuthProvider, OAuthProvider } from "../helpers/enums";
2
+ import { IConfigProps, WhatsappProvidersConfig, FirebaseConfig, AuthConfig } from "./config-interface";
3
+
4
+ class Development implements IConfigProps {
5
+ isDev = true;
6
+ isProd = false;
7
+ host_name: string = process.env.HOST || 'localhost';
8
+ port: string = process.env.PORT || '4000';
9
+ database_connectionstring: string = process.env.MONGODB_URI || "mongodb://127.0.0.1:27017/tactic-development";
10
+ base_site_url: string = process.env.BASE_SITE_URL || "http://localhost:3000";
11
+ development_environment_url: string = "http://localhost:4000";
12
+ register_complete_page_url: string = "register_complete";
13
+ whatsapp_default_provider: WhatsappProviders = WhatsappProviders.twilio;
14
+ whatsapp_providers_configurations = [{
15
+ key: WhatsappProviders.twilio,
16
+ value: {
17
+ provider_type: WhatsappProviders.twilio,
18
+ account_id: process.env.TWILIO_ACCOUNT_SID || 'AC55b03a222fa486300e5791d8f34cfacd',
19
+ token: process.env.TWILIO_AUTH_TOKEN || 'c3cc0022815391e027b7bf4bac47b46c'
20
+ }
21
+ }];
22
+ firebase_application_config: FirebaseConfig = {
23
+ apiKey: process.env.FIREBASE_API_KEY || "AIzaSyCyRHzm2f_CooMRbYpRVV0MpptBu-HdEs4",
24
+ authDomain: process.env.FIREBASE_AUTH_DOMAIN || "app.sendifier.com",
25
+ projectId: process.env.FIREBASE_PROJECT_ID || "sendifier-web-app",
26
+ storageBucket: process.env.FIREBASE_STORAGE_BUCKET || "sendifier-web-app.appspot.com",
27
+ messagingSenderId: process.env.FIREBASE_MESSAGING_SENDER_ID || "717324879598",
28
+ appId: process.env.FIREBASE_APP_ID || "1:717324879598:web:8d4f09d06c30cc435855ff"
29
+ };
30
+ firebase_auth_certification_path = `functions/certs/auth-app-cert.json`;
31
+ internal_http_request_header_key = 'x-internal-request';
32
+ internal_http_request_header_value = process.env.INTERNAL_REQUEST_HEADER_VALUE || 'BHQGYqbN(Iu8MjgspaJzHRVSyahvbXuLPT%rI^)FDJ(At@k3vKm3E!Qp%EcJqGDt';
33
+
34
+ // Authentication Configuration
35
+ auth: AuthConfig = {
36
+ enabled_providers: [AuthProvider.INTERNAL, AuthProvider.FIREBASE, AuthProvider.SMS_OTP, AuthProvider.EMAIL_OTP],
37
+ default_provider: AuthProvider.INTERNAL,
38
+
39
+ jwt: {
40
+ secret: process.env.JWT_SECRET || 'your-super-secret-jwt-key-change-in-production',
41
+ expires_in: '24h',
42
+ refresh_token_expires_in: '7d',
43
+ issuer: 'diagramers-api',
44
+ audience: 'diagramers-users'
45
+ },
46
+
47
+ internal: {
48
+ password_min_length: 8,
49
+ password_require_uppercase: true,
50
+ password_require_lowercase: true,
51
+ password_require_numbers: true,
52
+ password_require_special_chars: true,
53
+ max_login_attempts: 5,
54
+ lockout_duration_minutes: 15,
55
+ require_email_verification: true,
56
+ require_phone_verification: false
57
+ },
58
+
59
+ firebase: {
60
+ enabled: true,
61
+ project_id: process.env.FIREBASE_PROJECT_ID || "sendifier-web-app",
62
+ private_key_path: process.env.FIREBASE_PRIVATE_KEY_PATH || "functions/certs/auth-app-cert.json",
63
+ client_email: process.env.FIREBASE_CLIENT_EMAIL || "",
64
+ api_key: process.env.FIREBASE_API_KEY || "AIzaSyCyRHzm2f_CooMRbYpRVV0MpptBu-HdEs4",
65
+ auth_domain: process.env.FIREBASE_AUTH_DOMAIN || "app.sendifier.com",
66
+ storage_bucket: process.env.FIREBASE_STORAGE_BUCKET || "sendifier-web-app.appspot.com",
67
+ messaging_sender_id: process.env.FIREBASE_MESSAGING_SENDER_ID || "717324879598",
68
+ app_id: process.env.FIREBASE_APP_ID || "1:717324879598:web:8d4f09d06c30cc435855ff"
69
+ },
70
+
71
+ oauth: {
72
+ enabled_providers: [OAuthProvider.GOOGLE, OAuthProvider.FACEBOOK, OAuthProvider.GITHUB],
73
+ providers: {
74
+ [OAuthProvider.GOOGLE]: {
75
+ client_id: process.env.GOOGLE_CLIENT_ID || "",
76
+ client_secret: process.env.GOOGLE_CLIENT_SECRET || "",
77
+ redirect_uri: process.env.GOOGLE_REDIRECT_URI || "http://localhost:4000/auth/google/callback",
78
+ scope: ['email', 'profile'],
79
+ enabled: true
80
+ },
81
+ [OAuthProvider.FACEBOOK]: {
82
+ client_id: process.env.FACEBOOK_CLIENT_ID || "",
83
+ client_secret: process.env.FACEBOOK_CLIENT_SECRET || "",
84
+ redirect_uri: process.env.FACEBOOK_REDIRECT_URI || "http://localhost:4000/auth/facebook/callback",
85
+ scope: ['email', 'public_profile'],
86
+ enabled: true
87
+ },
88
+ [OAuthProvider.GITHUB]: {
89
+ client_id: process.env.GITHUB_CLIENT_ID || "",
90
+ client_secret: process.env.GITHUB_CLIENT_SECRET || "",
91
+ redirect_uri: process.env.GITHUB_REDIRECT_URI || "http://localhost:4000/auth/github/callback",
92
+ scope: ['user:email'],
93
+ enabled: true
94
+ }
95
+ },
96
+ callback_url: "http://localhost:4000/auth/callback",
97
+ state_secret: process.env.OAUTH_STATE_SECRET || "your-oauth-state-secret"
98
+ },
99
+
100
+ sms_otp: {
101
+ enabled: true,
102
+ provider: 'twilio',
103
+ twilio: {
104
+ account_sid: process.env.TWILIO_ACCOUNT_SID || 'AC55b03a222fa486300e5791d8f34cfacd',
105
+ auth_token: process.env.TWILIO_AUTH_TOKEN || 'c3cc0022815391e027b7bf4bac47b46c',
106
+ from_number: process.env.TWILIO_FROM_NUMBER || '+1234567890'
107
+ },
108
+ otp_length: 6,
109
+ otp_expiry_minutes: 10,
110
+ max_attempts: 3
111
+ },
112
+
113
+ email_otp: {
114
+ enabled: true,
115
+ smtp: {
116
+ host: process.env.SMTP_HOST || 'smtp.gmail.com',
117
+ port: parseInt(process.env.SMTP_PORT || '587'),
118
+ secure: false,
119
+ user: process.env.SMTP_USER || 'your-email@gmail.com',
120
+ pass: process.env.SMTP_PASS || 'your-app-password'
121
+ },
122
+ otp_length: 6,
123
+ otp_expiry_minutes: 15,
124
+ max_attempts: 3,
125
+ from_email: process.env.FROM_EMAIL || 'noreply@diagramers.com',
126
+ from_name: process.env.FROM_NAME || 'Diagramers'
127
+ },
128
+
129
+ session: {
130
+ max_sessions_per_user: 5,
131
+ session_timeout_minutes: 1440, // 24 hours
132
+ remember_me_days: 30,
133
+ concurrent_login_allowed: true
134
+ }
135
+ };
136
+ http_request_header_requestidentifier_key = 'p-request-identifier';
137
+ redirect_all_requests_to_local = false;
138
+ local_api_tunnel_url = process.env.LOCAL_API_TUNNEL_URL || "https://humble-macaw-separately.ngrok-free.app";
139
+ load_scheduled_tasks: boolean = false;
140
+ local_ui_tunnel_url = process.env.LOCAL_UI_TUNNEL_URL || "";
141
+ backup_databases_folder_path = process.env.BACKUP_DATABASES_FOLDER_PATH || 'D:/sendifier database backup';
142
+ external_http_request_timeout = parseInt(process.env.EXTERNAL_HTTP_REQUEST_TIMEOUT || '5000');
143
+ }
144
+
145
+ export default new Development();