beech-api 3.9.0-beta.9-rc → 3.9.80

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 (59) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +1717 -1649
  3. package/index.js +2 -2
  4. package/package.json +92 -84
  5. package/packages/cli/beech +9 -10
  6. package/packages/cli/bin/beech-app.js +390 -390
  7. package/packages/cli/bin/beech-service.js +263 -170
  8. package/packages/cli/core/auth/Credentials.js +174 -174
  9. package/packages/cli/core/auth/Passport.js +664 -664
  10. package/packages/cli/core/auth/_Request.js +12 -12
  11. package/packages/cli/core/configure/_gitignore +16 -15
  12. package/packages/cli/core/configure/_sequelizerc +9 -9
  13. package/packages/cli/core/configure/app.config-basic.js +55 -55
  14. package/packages/cli/core/configure/app.config-sequelize.js +88 -88
  15. package/packages/cli/core/configure/beech.config.js +9 -9
  16. package/packages/cli/core/configure/global.config-basic.js +8 -8
  17. package/packages/cli/core/configure/global.config-sequelize.js +8 -8
  18. package/packages/cli/core/configure/jest.config.js +6 -6
  19. package/packages/cli/core/configure/jsconfig.json +8 -7
  20. package/packages/cli/core/configure/passport.config.js +97 -97
  21. package/packages/cli/core/databases/mysql.js +94 -95
  22. package/packages/cli/core/databases/sequelize.js +187 -188
  23. package/packages/cli/core/databases/test.js +250 -255
  24. package/packages/cli/core/file-walk/file-walk.js +35 -35
  25. package/packages/cli/core/generator/_endpoints +15 -15
  26. package/packages/cli/core/generator/_endpoints_basic +42 -42
  27. package/packages/cli/core/generator/_help +29 -19
  28. package/packages/cli/core/generator/_help_create +10 -10
  29. package/packages/cli/core/generator/_help_service +10 -10
  30. package/packages/cli/core/generator/_helpers +9 -9
  31. package/packages/cli/core/generator/_helpers_basic +166 -22
  32. package/packages/cli/core/generator/_models +6 -6
  33. package/packages/cli/core/generator/_models_basic +13 -13
  34. package/packages/cli/core/generator/_package +23 -19
  35. package/packages/cli/core/generator/_scheduler +32 -32
  36. package/packages/cli/core/generator/_spec +29 -29
  37. package/packages/cli/core/generator/index.js +1229 -992
  38. package/packages/cli/core/helpers/2fa.js +106 -106
  39. package/packages/cli/core/helpers/math.js +115 -115
  40. package/packages/cli/core/helpers/poolEntity.js +103 -103
  41. package/packages/cli/core/index.js +264 -266
  42. package/packages/cli/core/middleware/express/duplicateRequest.js +16 -16
  43. package/packages/cli/core/middleware/express/jwtCheckAllow.js +85 -85
  44. package/packages/cli/core/middleware/express/rateLimit.js +29 -29
  45. package/packages/cli/core/middleware/express/slowDown.js +2 -2
  46. package/packages/cli/core/middleware/index.js +6 -6
  47. package/packages/cli/core/middleware/origin/guard/advance.js +75 -75
  48. package/packages/cli/core/middleware/origin/whitelist/cors.js +94 -94
  49. package/packages/cli/core/services/http.express.js +481 -481
  50. package/packages/cli/core/test/check-node.js +21 -21
  51. package/packages/cli/core/test/utils.js +7 -7
  52. package/packages/cli/entry +10 -0
  53. package/packages/lib/index.js +6 -6
  54. package/packages/lib/src/endpoint.js +947 -885
  55. package/packages/lib/src/guard.js +60 -60
  56. package/packages/lib/src/salt.js +3 -3
  57. package/packages/lib/src/schema.js +96 -96
  58. package/packages/lib/src/specificExpress.js +7 -7
  59. package/packages/lib/src/user.js +271 -271
@@ -1,266 +1,264 @@
1
- global.appRoot = require("app-root-path");
2
- const moment = require("moment");
3
- const { performance } = require("perf_hooks");
4
- const moduleAlias = require("module-alias");
5
- moduleAlias.addAlias("@", appRoot + "/src");
6
- const _express_ = require("express");
7
- global._app_ = _express_();
8
- // Compression
9
- const compression = require("compression");
10
- _app_.use(compression());
11
- // Helmet
12
- const helmet = require("helmet");
13
- _app_.use(helmet());
14
- // CORS
15
- const cors = require("cors");
16
- global.endpoint = _express_.Router();
17
- const cookieParser = require("cookie-parser");
18
- const methodOverride = require("method-override");
19
- const expressSession = require("express-session");
20
- const expressValidator = require("express-validator");
21
- const globalVariable = require(appRoot + "/global.config.js");
22
- globalVariable.init();
23
- // Local environments
24
- global._config_ = require(appRoot + "/app.config");
25
- const _beech_ = require(appRoot + "/beech.config.js").defineConfig;
26
- global._publicPath_ = _beech_.base;
27
- const mySqlDbConnect = require("./databases/mysql");
28
- const SequelizeDbConnect = require("./databases/sequelize");
29
- // Set limit payload for request body & multipart/form-data (multer)
30
- const multer = require("multer");
31
- const uploadAllowMethod = _beech_?.payload?.file?.uploadAllowMethod || ["POST", "PATCH", "PUT"];
32
- const allowedTypes = _beech_?.payload?.file?.allowedTypes || []; // default: no allowed type
33
- const fileLimitSize = _beech_?.payload?.file?.limit || 5 * 1024 * 1024; // 5MB
34
- const uploadStrategy = multer({
35
- limits: { fileSize: fileLimitSize },
36
- fileFilter: (req, file, cb) => {
37
- if (allowedTypes.length === 0) {
38
- cb(new Error("INVALID_FILE_TYPE_ALLOW"), false); // Allow all file types if no allowed types specified
39
- } else if (allowedTypes.includes(file.mimetype)) {
40
- cb(null, true);
41
- } else {
42
- cb(new Error("INVALID_FILE_TYPE"), false);
43
- }
44
- }
45
- }).any();
46
- const jsonLimitSize = _beech_?.payload.json?.limit || "100KB"; // json payload
47
- const urlencodedLimitSize = _beech_?.payload?.urlencoded?.limit || "100KB"; // urlencoded payload (multipart/form-data)
48
- const urlencodedExtended = !!(_beech_?.payload?.urlencoded?.extended ?? true);
49
- _app_.use(_express_.urlencoded({ limit: urlencodedLimitSize, extended: urlencodedExtended })); // application/x-www-form-urlencoded payload
50
- _app_.use(_express_.json({ limit: jsonLimitSize }));
51
- _app_.use((req, res, next) => {
52
- const isUploadMethod = uploadAllowMethod.includes(req.method);
53
- const isMultipart = req.headers["content-type"]?.includes("multipart/form-data");
54
- // Handle file upload for allowed methods
55
- if (isUploadMethod) {
56
- return uploadStrategy(req, res, (err) => {
57
- if (err) return next(err);
58
- next();
59
- });
60
- }
61
- // Handle method not allowed for file upload
62
- if (!isUploadMethod && isMultipart) {
63
- return res.status(405).json({
64
- code: 405,
65
- status: "METHOD_NOT_ALLOWED_FOR_UPLOAD",
66
- message: _config_.main_config?.dev ? `File upload is not allowed for ${req.method} method.` : "Method Not Allowed for file upload.",
67
- });
68
- }
69
- // next to next middleware
70
- next();
71
- });
72
- _app_.use((err, req, res, next) => {
73
- // Handle payload too large error for JSON and URL-encoded
74
- if (err.type === "entity.too.large") {
75
- const isJson = req.headers["content-type"]?.includes("application/json");
76
- const limitUsed = isJson ? jsonLimitSize : urlencodedLimitSize;
77
- return res.status(413).json({
78
- code: 413,
79
- status: "PAYLOAD_TOO_LARGE",
80
- message:_config_.main_config?.dev ? `${isJson ? 'JSON' : 'Form data'} too large, Max limit is ${limitUsed}` : "Payload Too Large.",
81
- });
82
- }
83
- if (err.message === "INVALID_FILE_TYPE_ALLOW") {
84
- return res.status(400).json({
85
- code: 400,
86
- status: "INVALID_FILE_TYPE_ALLOW",
87
- message: "Invalid file type, No file types allowed.",
88
- });
89
- }
90
- // Handle invalid file type error from multer
91
- if (err.message === "INVALID_FILE_TYPE") {
92
- return res.status(400).json({
93
- code: 400,
94
- status: "INVALID_FILE_TYPE",
95
- message: _config_.main_config?.dev ? `Invalid file type, Allowed: ${allowedTypes.join(', ')}` : "Invalid file type.",
96
- });
97
- }
98
- // Handle multer file size limit error
99
- if (err.code === "LIMIT_FILE_SIZE") {
100
- return res.status(413).json({
101
- code: 413,
102
- status: "PAYLOAD_TOO_LARGE",
103
- message: _config_.main_config?.dev ? `File size too large, Max limit is ${fileLimitSize / 1024 / 1024}MB` : "Payload Too Large.",
104
- });
105
- }
106
- // next to general error handler
107
- next(err);
108
- });
109
- // Database test
110
- const {
111
- testConnectInProcess,
112
- filterDbIsTrue,
113
- disConnectTestDB,
114
- } = require("./databases/test");
115
- // create global sequelize object
116
- const { QueryTypes, DataTypes, Op } = require("sequelize");
117
- global.QueryTypes = QueryTypes;
118
- global.DataTypes = DataTypes;
119
- global.Op = Op;
120
- // Allow whitelist cors
121
- const { whitelist, sign, avg } = require("./middleware/index");
122
- _app_.use(cors({ origin: true, credentials: true }));
123
- _app_.use((req, res, next) => {
124
- whitelist(async (lists, originSensitive) => {
125
- sign(req, res, lists, originSensitive, (err) => {
126
- if (!err) {
127
- next();
128
- } else {
129
- throw err;
130
- }
131
- });
132
- });
133
- });
134
- // View engine
135
- _app_.use(methodOverride());
136
- _app_.use(cookieParser());
137
- _app_.use(expressSession({
138
- secret: "surprise you mother f*cker",
139
- resave: true,
140
- saveUninitialized: true,
141
- }));
142
- _app_.use(expressValidator());
143
- // Dev. activity
144
- global._requestTime_ = moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
145
- _app_.use((req, res, next) => {
146
- console.log(`[${_requestTime_}] : Request ${req.method} ${req.originalUrl}`);
147
- const t0 = performance.now();
148
- res.on('finish', () => {
149
- const responseTime = moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
150
- const t1 = performance.now();
151
- const duration = (t1 - t0).toFixed(0);
152
- console.log(`[${responseTime}] : Response ${res.statusCode} (${duration}ms)`);
153
- });
154
- next();
155
- });
156
- // Check Syntax error.
157
- _app_.use((error, req, res, next) => {
158
- if (error instanceof SyntaxError) {
159
- res.status(400).json({
160
- ...error,
161
- status: "BAD_REQUEST",
162
- message: "Bad Request.",
163
- body: error.body,
164
- });
165
- } else {
166
- next();
167
- }
168
- });
169
- // Advance Guard
170
- _app_.use(avg);
171
- // Engine import
172
- const httpExpress = require("./services/http.express");
173
- const fileWalk = require("./file-walk/file-walk");
174
- // Passport initialization
175
- const authPassport = require("./auth/Passport");
176
- const passport = require("passport");
177
- _app_.use(passport.initialize());
178
- _app_.use(passport.session());
179
- passport.serializeUser((user, done) => {
180
- done(null, user);
181
- });
182
- passport.deserializeUser((user, done) => {
183
- done(null, user);
184
- });
185
- // Endpoint magic
186
- const { Base } = require("../../lib/index");
187
- // Read folder in ./src/endpoints/*
188
- const walk = require("walk");
189
- let jsfiles = [];
190
- let walker = walk.walk(appRoot + "/src/endpoints", { followLinks: false });
191
- // Walk file on push
192
- walker.on("file", (root, stat, next) => {
193
- jsfiles.push(root + "/" + stat.name);
194
- next();
195
- });
196
- // Walking
197
- walker.on("end", () => {
198
- init(jsfiles);
199
- });
200
- // Initialize the application
201
- init = async (jsfiles) => {
202
- try {
203
- const testConnectToDB = new Promise((resolve) => {
204
- filterDbIsTrue(_config_.database_config, (err, dbTruthy) => {
205
- if (err) {
206
- throw ("Config file crash.", err);
207
- }
208
- // leave data to disconnect database
209
- let leaveDataForDisconnect = dbTruthy.slice(0);
210
- // check db connect truthy length ?
211
- if (dbTruthy.length > 0) {
212
- testConnectInProcess(dbTruthy, dbTruthy.length, (err, result, dbs) => {
213
- if (err) {
214
- throw (" Failed  Database connect failed.", err);
215
- }
216
- if (result) {
217
- // Disconnect database
218
- disConnectTestDB(leaveDataForDisconnect, dbs, (err, disResult) => {
219
- if (err) {
220
- throw (" Failed  Testing Database connect failed.", err);
221
- }
222
- if (disResult) {
223
- // Disconnect and Next to real
224
- resolve(true);
225
- } else {
226
- throw err;
227
- }
228
- });
229
- }
230
- });
231
- } else {
232
- // Not ON connect, Next to real
233
- resolve(true);
234
- }
235
- });
236
- });
237
- Promise.all([testConnectToDB]).then(async (x) => {
238
- if (x[0]) {
239
- await (pool_base == "basic" ? new Promise((resolve) => resolve(mySqlDbConnect.connect())) : new Promise((resolve) => resolve(SequelizeDbConnect.connect())));
240
- await authPassport.init().then(async (p) => {
241
- if (p[0]) {
242
- console.log("\n Init failed ", p[0]);
243
- return;
244
- //throw p[0];
245
- } else {
246
- await new Promise((resolve) => resolve(fileWalk.fileWalk(jsfiles)));
247
- await (pool_base == "basic" ? new Promise((resolve) => resolve()) : new Promise((resolve) => resolve(Base())));
248
- await new Promise((resolve) => {
249
- httpExpress.expressStart().then((expss) => {
250
- resolve(expss);
251
- });
252
- });
253
- }
254
- }).catch((err) => {
255
- console.log(" Catch init failed ", err);
256
- throw err;
257
- });
258
- }
259
- });
260
- } catch (error) {
261
- console.log(" Compile failed ", error);
262
- throw error;
263
- }
264
- };
265
- // Use router
266
- _app_.use(_publicPath_, endpoint);
1
+ global.appRoot = require("app-root-path");
2
+ const moment = require("moment");
3
+ const { performance } = require("perf_hooks");
4
+ const moduleAlias = require("module-alias");
5
+ moduleAlias.addAlias("@", appRoot + "/src");
6
+ const _express_ = require("express");
7
+ global._app_ = _express_();
8
+ // Compression
9
+ const compression = require("compression");
10
+ _app_.use(compression());
11
+ // Helmet
12
+ const helmet = require("helmet");
13
+ _app_.use(helmet());
14
+ // CORS
15
+ const cors = require("cors");
16
+ global.endpoint = _express_.Router();
17
+ const cookieParser = require("cookie-parser");
18
+ const methodOverride = require("method-override");
19
+ const expressSession = require("express-session");
20
+ const globalVariable = require(appRoot + "/global.config.js");
21
+ globalVariable.init();
22
+ // Local environments
23
+ global._config_ = require(appRoot + "/app.config");
24
+ const _beech_ = require(appRoot + "/beech.config.js").defineConfig;
25
+ global._publicPath_ = _beech_.base;
26
+ const mySqlDbConnect = require("./databases/mysql");
27
+ const SequelizeDbConnect = require("./databases/sequelize");
28
+ // Set limit payload for request body & multipart/form-data (multer)
29
+ const multer = require("multer");
30
+ const uploadAllowMethod = _beech_?.payload?.file?.uploadAllowMethod || ["POST", "PATCH", "PUT"];
31
+ const allowedTypes = _beech_?.payload?.file?.allowedTypes || []; // default: no allowed type
32
+ const fileLimitSize = _beech_?.payload?.file?.limit || 5 * 1024 * 1024; // 5MB
33
+ const uploadStrategy = multer({
34
+ limits: { fileSize: fileLimitSize },
35
+ fileFilter: (req, file, cb) => {
36
+ if (allowedTypes.length === 0) {
37
+ cb(new Error("INVALID_FILE_TYPE_ALLOW"), false); // Allow all file types if no allowed types specified
38
+ } else if (allowedTypes.includes(file.mimetype)) {
39
+ cb(null, true);
40
+ } else {
41
+ cb(new Error("INVALID_FILE_TYPE"), false);
42
+ }
43
+ }
44
+ }).any();
45
+ const jsonLimitSize = _beech_?.payload?.json?.limit || "100KB"; // json payload
46
+ const urlencodedLimitSize = _beech_?.payload?.urlencoded?.limit || "100KB"; // urlencoded payload (multipart/form-data)
47
+ const urlencodedExtended = !!(_beech_?.payload?.urlencoded?.extended ?? true);
48
+ _app_.use(_express_.urlencoded({ limit: urlencodedLimitSize, extended: urlencodedExtended })); // application/x-www-form-urlencoded payload
49
+ _app_.use(_express_.json({ limit: jsonLimitSize }));
50
+ _app_.use((req, res, next) => {
51
+ const isUploadMethod = uploadAllowMethod.includes(req.method);
52
+ const isMultipart = req.headers["content-type"]?.includes("multipart/form-data");
53
+ // Handle file upload for allowed methods
54
+ if (isUploadMethod) {
55
+ return uploadStrategy(req, res, (err) => {
56
+ if (err) return next(err);
57
+ next();
58
+ });
59
+ }
60
+ // Handle method not allowed for file upload
61
+ if (!isUploadMethod && isMultipart) {
62
+ return res.status(405).json({
63
+ code: 405,
64
+ status: "METHOD_NOT_ALLOWED_FOR_UPLOAD",
65
+ message: _config_.main_config?.dev ? `File upload is not allowed for ${req.method} method.` : "Method Not Allowed for file upload.",
66
+ });
67
+ }
68
+ // next to next middleware
69
+ next();
70
+ });
71
+ _app_.use((err, req, res, next) => {
72
+ // Handle payload too large error for JSON and URL-encoded
73
+ if (err.type === "entity.too.large") {
74
+ const isJson = req.headers["content-type"]?.includes("application/json");
75
+ const limitUsed = isJson ? jsonLimitSize : urlencodedLimitSize;
76
+ return res.status(413).json({
77
+ code: 413,
78
+ status: "PAYLOAD_TOO_LARGE",
79
+ message:_config_.main_config?.dev ? `${isJson ? 'JSON' : 'Form data'} too large, Max limit is ${limitUsed}` : "Payload Too Large.",
80
+ });
81
+ }
82
+ if (err.message === "INVALID_FILE_TYPE_ALLOW") {
83
+ return res.status(400).json({
84
+ code: 400,
85
+ status: "INVALID_FILE_TYPE_ALLOW",
86
+ message: "Invalid file type, No file types allowed.",
87
+ });
88
+ }
89
+ // Handle invalid file type error from multer
90
+ if (err.message === "INVALID_FILE_TYPE") {
91
+ return res.status(400).json({
92
+ code: 400,
93
+ status: "INVALID_FILE_TYPE",
94
+ message: _config_.main_config?.dev ? `Invalid file type, Allowed: ${allowedTypes.join(', ')}` : "Invalid file type.",
95
+ });
96
+ }
97
+ // Handle multer file size limit error
98
+ if (err.code === "LIMIT_FILE_SIZE") {
99
+ return res.status(413).json({
100
+ code: 413,
101
+ status: "PAYLOAD_TOO_LARGE",
102
+ message: _config_.main_config?.dev ? `File size too large, Max limit is ${fileLimitSize / 1024 / 1024}MB` : "Payload Too Large.",
103
+ });
104
+ }
105
+ // next to general error handler
106
+ next(err);
107
+ });
108
+ // Database test
109
+ const {
110
+ testConnectInProcess,
111
+ filterDbIsTrue,
112
+ disConnectTestDB,
113
+ } = require("./databases/test");
114
+ // create global sequelize object
115
+ const { QueryTypes, DataTypes, Op } = require("sequelize");
116
+ global.QueryTypes = QueryTypes;
117
+ global.DataTypes = DataTypes;
118
+ global.Op = Op;
119
+ // Allow whitelist cors
120
+ const { whitelist, sign, avg } = require("./middleware/index");
121
+ _app_.use(cors({ origin: true, credentials: true }));
122
+ _app_.use((req, res, next) => {
123
+ whitelist(async (lists, originSensitive) => {
124
+ sign(req, res, lists, originSensitive, (err) => {
125
+ if (!err) {
126
+ next();
127
+ } else {
128
+ throw err;
129
+ }
130
+ });
131
+ });
132
+ });
133
+ // View engine
134
+ _app_.use(methodOverride());
135
+ _app_.use(cookieParser());
136
+ _app_.use(expressSession({
137
+ secret: "surprise you mother f*cker",
138
+ resave: true,
139
+ saveUninitialized: true,
140
+ }));
141
+ // Dev. activity
142
+ global._requestTime_ = moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
143
+ _app_.use((req, res, next) => {
144
+ console.log(`[${_requestTime_}] : Request ${req.method} ${req.originalUrl}`);
145
+ const t0 = performance.now();
146
+ res.on('finish', () => {
147
+ const responseTime = moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
148
+ const t1 = performance.now();
149
+ const duration = (t1 - t0).toFixed(0);
150
+ console.log(`[${responseTime}] : Response ${res.statusCode} (${duration}ms)`);
151
+ });
152
+ next();
153
+ });
154
+ // Check Syntax error.
155
+ _app_.use((error, req, res, next) => {
156
+ if (error instanceof SyntaxError) {
157
+ res.status(400).json({
158
+ ...error,
159
+ status: "BAD_REQUEST",
160
+ message: "Bad Request.",
161
+ body: error.body,
162
+ });
163
+ } else {
164
+ next();
165
+ }
166
+ });
167
+ // Advance Guard
168
+ _app_.use(avg);
169
+ // Engine import
170
+ const httpExpress = require("./services/http.express");
171
+ const fileWalk = require("./file-walk/file-walk");
172
+ // Passport initialization
173
+ const authPassport = require("./auth/Passport");
174
+ const passport = require("passport");
175
+ _app_.use(passport.initialize());
176
+ _app_.use(passport.session());
177
+ passport.serializeUser((user, done) => {
178
+ done(null, user);
179
+ });
180
+ passport.deserializeUser((user, done) => {
181
+ done(null, user);
182
+ });
183
+ // Endpoint magic
184
+ const { Base } = require("../../lib/index");
185
+ // Read folder in ./src/endpoints/*
186
+ const walk = require("walk");
187
+ let jsfiles = [];
188
+ let walker = walk.walk(appRoot + "/src/endpoints", { followLinks: false });
189
+ // Walk file on push
190
+ walker.on("file", (root, stat, next) => {
191
+ jsfiles.push(root + "/" + stat.name);
192
+ next();
193
+ });
194
+ // Walking
195
+ walker.on("end", () => {
196
+ init(jsfiles);
197
+ });
198
+ // Initialize the application
199
+ init = async (jsfiles) => {
200
+ try {
201
+ const testConnectToDB = new Promise((resolve) => {
202
+ filterDbIsTrue(_config_.database_config, (err, dbTruthy) => {
203
+ if (err) {
204
+ throw ("Config file crash.", err);
205
+ }
206
+ // leave data to disconnect database
207
+ let leaveDataForDisconnect = dbTruthy.slice(0);
208
+ // check db connect truthy length ?
209
+ if (dbTruthy.length > 0) {
210
+ testConnectInProcess(dbTruthy, dbTruthy.length, (err, result, dbs) => {
211
+ if (err) {
212
+ throw (" Failed  Database connect failed.", err);
213
+ }
214
+ if (result) {
215
+ // Disconnect database
216
+ disConnectTestDB(leaveDataForDisconnect, dbs, (err, disResult) => {
217
+ if (err) {
218
+ throw (" Failed  Testing Database connect failed.", err);
219
+ }
220
+ if (disResult) {
221
+ // Disconnect and Next to real
222
+ resolve(true);
223
+ } else {
224
+ throw err;
225
+ }
226
+ });
227
+ }
228
+ });
229
+ } else {
230
+ // Not ON connect, Next to real
231
+ resolve(true);
232
+ }
233
+ });
234
+ });
235
+ Promise.all([testConnectToDB]).then(async (x) => {
236
+ if (x[0]) {
237
+ await (pool_base == "basic" ? new Promise((resolve) => resolve(mySqlDbConnect.connect())) : new Promise((resolve) => resolve(SequelizeDbConnect.connect())));
238
+ await authPassport.init().then(async (p) => {
239
+ if (p[0]) {
240
+ console.log("\n Init failed ", p[0]);
241
+ return;
242
+ //throw p[0];
243
+ } else {
244
+ await new Promise((resolve) => resolve(fileWalk.fileWalk(jsfiles)));
245
+ await (pool_base == "basic" ? new Promise((resolve) => resolve()) : new Promise((resolve) => resolve(Base())));
246
+ await new Promise((resolve) => {
247
+ httpExpress.expressStart().then((expss) => {
248
+ resolve(expss);
249
+ });
250
+ });
251
+ }
252
+ }).catch((err) => {
253
+ console.log(" Catch init failed ", err);
254
+ throw err;
255
+ });
256
+ }
257
+ });
258
+ } catch (error) {
259
+ console.log(" Compile failed ", error);
260
+ throw error;
261
+ }
262
+ };
263
+ // Use router
264
+ _app_.use(_publicPath_, endpoint);
@@ -1,16 +1,16 @@
1
- const _beech_ = require(appRoot + "/beech.config.js");
2
- const { duplicateRequest } = require("express-duplicate-request");
3
- const nextDuplicater = (req, res, next) => next();
4
- const defaultConfigure = {
5
- expiration: _beech_.defineConfig.server.duplicateRequest ? _beech_.defineConfig.server.duplicateRequest.expiration : 0,
6
- };
7
- const baseConfigure = {
8
- ..._beech_.defineConfig.server.duplicateRequest, // Override default configure with user configure.
9
- ...defaultConfigure,
10
- };
11
- const Duplicater = (more_configure = {}) => {
12
- const config = { ...baseConfigure, ...more_configure };
13
- return config.expiration ? duplicateRequest(config) : nextDuplicater;
14
- };
15
-
16
- module.exports = { Duplicater, duplicateRequest };
1
+ const _beech_ = require(appRoot + "/beech.config.js");
2
+ const { duplicateRequest } = require("express-duplicate-request");
3
+ const nextDuplicater = (req, res, next) => next();
4
+ const defaultConfigure = {
5
+ expiration: _beech_.defineConfig.server.duplicateRequest ? _beech_.defineConfig.server.duplicateRequest.expiration : 0,
6
+ };
7
+ const baseConfigure = {
8
+ ..._beech_.defineConfig.server.duplicateRequest, // Override default configure with user configure.
9
+ ...defaultConfigure,
10
+ };
11
+ const Duplicater = (more_configure = {}) => {
12
+ const config = { ...baseConfigure, ...more_configure };
13
+ return config.expiration ? duplicateRequest(config) : nextDuplicater;
14
+ };
15
+
16
+ module.exports = { Duplicater, duplicateRequest };