namirasoft-node 1.0.13 → 1.0.15

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.
@@ -17,7 +17,7 @@ export declare abstract class BaseApplication<D extends BaseDatabase> {
17
17
  protected abstract getLogger(): ILogger;
18
18
  protected abstract getRouter(): Router;
19
19
  protected abstract getPort(): number;
20
- constructor(title: string, description: string, logo: string, version: string, serverPath: string, swaggerPath?: string | null);
20
+ constructor(serverPath: string, swaggerPath?: string | null);
21
21
  addLink(link: BaseApplicationLink): void;
22
22
  addSwaggerLink(): void;
23
23
  start(): void;
@@ -19,13 +19,16 @@ const fs_1 = __importDefault(require("fs"));
19
19
  const swagger_ui_express_1 = __importDefault(require("swagger-ui-express"));
20
20
  const swagger_jsdoc_1 = __importDefault(require("swagger-jsdoc"));
21
21
  const path_1 = __importDefault(require("path"));
22
+ const namirasoft_core_1 = require("namirasoft-core");
22
23
  class BaseApplication {
23
- constructor(title, description, logo, version, serverPath, swaggerPath = null) {
24
+ constructor(serverPath, swaggerPath = null) {
25
+ var _a, _b, _c, _d;
24
26
  this.links = [];
25
- this.title = title;
26
- this.description = description;
27
- this.logo = logo;
28
- this.version = version;
27
+ let json = namirasoft_core_1.PackageService.getMain();
28
+ this.title = (_a = json === null || json === void 0 ? void 0 : json.getTitle()) !== null && _a !== void 0 ? _a : "";
29
+ this.description = (_b = json === null || json === void 0 ? void 0 : json.getDescription()) !== null && _b !== void 0 ? _b : "";
30
+ this.logo = (_c = json === null || json === void 0 ? void 0 : json.getLogo()) !== null && _c !== void 0 ? _c : "";
31
+ this.version = (_d = json === null || json === void 0 ? void 0 : json.getVersion()) !== null && _d !== void 0 ? _d : "";
29
32
  this.serverPath = serverPath;
30
33
  this.swaggerPath = swaggerPath !== null && swaggerPath !== void 0 ? swaggerPath : (serverPath + "/swagger");
31
34
  this.logger = this.getLogger();
@@ -1 +1 @@
1
- {"version":3,"file":"BaseApplication.js","sourceRoot":"","sources":["../src/BaseApplication.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseApplication.js","sourceRoot":"","sources":["../src/BaseApplication.ts"],"names":[],"mappings":"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"}
@@ -3,20 +3,28 @@ import { BaseDatabase } from './BaseDatabase';
3
3
  import { SchemaLike } from 'joi';
4
4
  import { AnomalyDetector } from './AnomalyDetector';
5
5
  import { ILogger } from 'namirasoft-log';
6
+ import { Meta } from './Meta';
6
7
  export declare abstract class BaseController<D extends BaseDatabase, State, Props> {
7
- showLogAtTheBeginning: boolean;
8
- showLogAtTheEnd: boolean;
8
+ protected showLogAtTheBeginning: boolean;
9
+ protected showLogAtTheEnd: boolean;
10
+ protected req: express.Request;
11
+ protected res: express.Response;
9
12
  protected logger: ILogger;
10
- constructor();
13
+ protected meta: Meta;
14
+ protected result: {};
15
+ protected database: D;
16
+ protected state: State;
17
+ protected props: Props;
18
+ constructor(req: express.Request, res: express.Response);
11
19
  abstract getLogger(): ILogger;
12
20
  abstract getDatabase(): Promise<D>;
13
21
  abstract getAnomaly(): AnomalyDetector | null;
14
22
  abstract getBodySchema(): SchemaLike | null;
15
23
  abstract getQuerySchema(): SchemaLike | null;
16
- abstract getState(): State;
17
- abstract getProps(req: express.Request, res: express.Response, database: D, state: State): Promise<Props>;
18
- abstract preHandle(req: express.Request, res: express.Response, database: D, props: Props): Promise<void>;
19
- abstract handle(req: express.Request, res: express.Response, database: D, props: Props): Promise<any>;
20
- abstract postHandle(req: express.Request, res: express.Response, database: D, props: Props): Promise<void>;
21
- getHandler(): (req: express.Request, res: express.Response) => Promise<express.Response<any, Record<string, any>>>;
24
+ abstract getState(): Promise<State>;
25
+ abstract getProps(): Promise<Props>;
26
+ abstract preHandle(): Promise<void>;
27
+ abstract handle(): Promise<any>;
28
+ abstract postHandle(): Promise<void>;
29
+ run(): Promise<express.Response<any, Record<string, any>>>;
22
30
  }
@@ -17,39 +17,40 @@ const Meta_1 = require("./Meta");
17
17
  const joi_1 = __importDefault(require("joi"));
18
18
  const namirasoft_core_1 = require("namirasoft-core");
19
19
  class BaseController {
20
- constructor() {
20
+ constructor(req, res) {
21
21
  this.showLogAtTheBeginning = false;
22
22
  this.showLogAtTheEnd = true;
23
+ this.req = req;
24
+ this.res = res;
23
25
  this.logger = this.getLogger();
24
26
  }
25
- getHandler() {
26
- return (req, res) => __awaiter(this, void 0, void 0, function* () {
27
- // meta
28
- let meta = new Meta_1.Meta(req);
27
+ run() {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ this.meta = new Meta_1.Meta(this.req);
29
30
  // result
30
- let result = {};
31
+ this.result = {};
31
32
  try {
32
33
  // meta
33
- meta.onStart();
34
+ this.meta.onStart();
34
35
  if (this.showLogAtTheBeginning)
35
- this.logger.info(JSON.stringify(meta));
36
+ this.logger.info(JSON.stringify(this.meta));
36
37
  // init controller
37
- let database = yield this.getDatabase();
38
- let state = this.getState();
39
- let props = yield this.getProps(req, res, database, state);
38
+ this.database = yield this.getDatabase();
39
+ this.state = yield this.getState();
40
+ this.props = yield this.getProps();
40
41
  // preHandle
41
- yield this.preHandle(req, res, database, props);
42
+ yield this.preHandle();
42
43
  // check for anomaly
43
44
  let anomaly = this.getAnomaly();
44
45
  if (anomaly != null)
45
- if (anomaly.isAnomaly(meta.ip, meta.url))
46
+ if (anomaly.isAnomaly(this.meta.ip, this.meta.url))
46
47
  namirasoft_core_1.ErrorOperation.throwHTTP(403, 'Suspicious activity detected.');
47
48
  // check body validation
48
49
  let bodySchema = this.getBodySchema();
49
50
  if (bodySchema != null) {
50
51
  const validation = yield joi_1.default.compile(bodySchema)
51
52
  .prefs({ errors: { label: 'key' } })
52
- .validate(req.body);
53
+ .validate(this.req.body);
53
54
  if (validation.error) {
54
55
  let message = validation.error.details.map((details) => details.message).join(', ');
55
56
  namirasoft_core_1.ErrorOperation.throwHTTP(400, message);
@@ -60,46 +61,46 @@ class BaseController {
60
61
  if (querySchema != null) {
61
62
  const validation = yield joi_1.default.compile(querySchema)
62
63
  .prefs({ errors: { label: 'key' } })
63
- .validate(req.query);
64
+ .validate(this.req.query);
64
65
  if (validation.error) {
65
66
  let message = validation.error.details.map((details) => details.message).join(', ');
66
67
  namirasoft_core_1.ErrorOperation.throwHTTP(400, message);
67
68
  }
68
69
  }
69
70
  // call controller
70
- result = yield this.handle(req, res, database, props);
71
- if (result == null)
72
- result = "Success";
71
+ this.result = yield this.handle();
72
+ if (this.result == null)
73
+ this.result = "Success";
73
74
  // postHandle
74
- yield this.postHandle(req, res, database, props);
75
+ yield this.postHandle();
75
76
  }
76
77
  catch (error) {
77
78
  let message;
78
79
  if (error instanceof Error) {
79
- meta.error = error;
80
+ this.meta.error = error;
80
81
  message = error.message;
81
82
  }
82
83
  else
83
84
  message = error + "";
84
85
  if (error instanceof namirasoft_core_1.HTTPError) {
85
- meta.code = error.code;
86
- this.logger.error(error.message + "\n" + JSON.stringify(meta), undefined, error.stack);
86
+ this.meta.code = error.code;
87
+ this.logger.error(error.message + "\n" + JSON.stringify(this.meta), undefined, error.stack);
87
88
  }
88
89
  else {
89
- meta.code = 500;
90
+ this.meta.code = 500;
90
91
  if (error instanceof Error)
91
- this.logger.critical(error.message + "\n" + JSON.stringify(meta), undefined, error.stack);
92
+ this.logger.critical(error.message + "\n" + JSON.stringify(this.meta), undefined, error.stack);
92
93
  }
93
- meta.message = message;
94
+ this.meta.message = message;
94
95
  if (error instanceof namirasoft_core_1.HTTPError)
95
- result = meta.message;
96
+ this.result = this.meta.message;
96
97
  else
97
- result = "Sorry, internl server error.";
98
+ this.result = "Sorry, internl server error.";
98
99
  }
99
- meta.onFinish();
100
+ this.meta.onFinish();
100
101
  if (this.showLogAtTheEnd)
101
- this.logger.info(JSON.stringify(meta));
102
- return res.status(meta.code).send(result);
102
+ this.logger.info(JSON.stringify(this.meta));
103
+ return this.res.status(this.meta.code).send(this.result);
103
104
  });
104
105
  }
105
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BaseController.js","sourceRoot":"","sources":["../src/BaseController.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseController.js","sourceRoot":"","sources":["../src/BaseController.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "namirasoft-node",
3
3
  "description": "Namira Software Corporation Node NPM Package",
4
- "version": "1.0.13",
4
+ "version": "1.0.15",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "scripts": {},
@@ -9,25 +9,25 @@
9
9
  "license": "MIT",
10
10
  "dependencies": {
11
11
  "@supercharge/request-ip": "^1.2.0",
12
- "@types/cors": "^2.8.15",
13
- "@types/express": "^4.17.20",
12
+ "@types/cors": "^2.8.16",
13
+ "@types/express": "^4.17.21",
14
14
  "@types/nodemailer": "^6.4.13",
15
- "@types/nodemailer-smtp-transport": "^2.7.7",
15
+ "@types/nodemailer-smtp-transport": "^2.7.8",
16
16
  "@types/swagger-jsdoc": "^6.0.2",
17
17
  "@types/swagger-ui-express": "^4.1.5",
18
18
  "cors": "^2.8.5",
19
19
  "express": "^4.18.2",
20
20
  "joi": "^17.11.0",
21
- "namirasoft-core": "^1.0.1",
22
- "namirasoft-log": "^1.0.0",
21
+ "namirasoft-core": "^1.0.11",
22
+ "namirasoft-log": "^1.0.1",
23
23
  "nodemailer": "^6.9.7",
24
- "nodemailer-smtp-transport": "^2.4.2",
24
+ "nodemailer-smtp-transport": "^2.7.4",
25
25
  "request-ip": "^3.3.0",
26
- "sequelize": "^6.33.0",
26
+ "sequelize": "^6.34.0",
27
27
  "swagger-jsdoc": "^6.2.8",
28
28
  "swagger-ui-express": "^5.0.0"
29
29
  },
30
30
  "devDependencies": {
31
- "@types/node": "^20.5.9"
31
+ "@types/node": "^20.8.10"
32
32
  }
33
33
  }
@@ -7,6 +7,7 @@ import { BaseDatabase } from './BaseDatabase';
7
7
  import { ILogger } from "namirasoft-log";
8
8
  import { BaseApplicationLink } from './BaseApplicationLink';
9
9
  import path from 'path';
10
+ import { PackageService } from 'namirasoft-core';
10
11
 
11
12
  export abstract class BaseApplication<D extends BaseDatabase>
12
13
  {
@@ -24,12 +25,13 @@ export abstract class BaseApplication<D extends BaseDatabase>
24
25
  protected abstract getLogger(): ILogger;
25
26
  protected abstract getRouter(): Router;
26
27
  protected abstract getPort(): number;
27
- constructor(title: string, description: string, logo: string, version: string, serverPath: string, swaggerPath: string | null = null)
28
+ constructor(serverPath: string, swaggerPath: string | null = null)
28
29
  {
29
- this.title = title;
30
- this.description = description;
31
- this.logo = logo;
32
- this.version = version;
30
+ let json = PackageService.getMain();
31
+ this.title = json?.getTitle() ?? "";
32
+ this.description = json?.getDescription() ?? "";
33
+ this.logo = json?.getLogo() ?? "";
34
+ this.version = json?.getVersion() ?? "";
33
35
  this.serverPath = serverPath;
34
36
  this.swaggerPath = swaggerPath ?? (serverPath + "/swagger");
35
37
  this.logger = this.getLogger();
@@ -9,11 +9,20 @@ import { ErrorOperation, HTTPError } from 'namirasoft-core';
9
9
 
10
10
  export abstract class BaseController<D extends BaseDatabase, State, Props>
11
11
  {
12
- showLogAtTheBeginning: boolean = false;
13
- showLogAtTheEnd: boolean = true;
12
+ protected showLogAtTheBeginning: boolean = false;
13
+ protected showLogAtTheEnd: boolean = true;
14
+ protected req: express.Request;
15
+ protected res: express.Response;
14
16
  protected logger: ILogger;
15
- constructor()
17
+ protected meta!: Meta;
18
+ protected result!: {};
19
+ protected database!: D;
20
+ protected state!: State;
21
+ protected props!: Props;
22
+ constructor(req: express.Request, res: express.Response)
16
23
  {
24
+ this.req = req;
25
+ this.res = res;
17
26
  this.logger = this.getLogger();
18
27
  }
19
28
  abstract getLogger(): ILogger;
@@ -21,106 +30,102 @@ export abstract class BaseController<D extends BaseDatabase, State, Props>
21
30
  abstract getAnomaly(): AnomalyDetector | null;
22
31
  abstract getBodySchema(): SchemaLike | null;
23
32
  abstract getQuerySchema(): SchemaLike | null;
24
- abstract getState(): State;
25
- abstract getProps(req: express.Request, res: express.Response, database: D, state: State): Promise<Props>;
26
- abstract preHandle(req: express.Request, res: express.Response, database: D, props: Props): Promise<void>;
27
- abstract handle(req: express.Request, res: express.Response, database: D, props: Props): Promise<any>;
28
- abstract postHandle(req: express.Request, res: express.Response, database: D, props: Props): Promise<void>;
33
+ abstract getState(): Promise<State>;
34
+ abstract getProps(): Promise<Props>;
35
+ abstract preHandle(): Promise<void>;
36
+ abstract handle(): Promise<any>;
37
+ abstract postHandle(): Promise<void>;
29
38
 
30
- getHandler()
39
+ async run()
31
40
  {
32
- return async (req: express.Request, res: express.Response) =>
41
+ this.meta = new Meta(this.req);
42
+ // result
43
+ this.result = {};
44
+ try
33
45
  {
34
46
  // meta
35
- let meta = new Meta(req);
36
- // result
37
- let result = {};
38
- try
39
- {
40
- // meta
41
- meta.onStart();
42
- if (this.showLogAtTheBeginning)
43
- this.logger.info(JSON.stringify(meta));
44
- // init controller
45
- let database = await this.getDatabase();
46
- let state = this.getState();
47
- let props = await this.getProps(req, res, database, state);
47
+ this.meta.onStart();
48
+ if (this.showLogAtTheBeginning)
49
+ this.logger.info(JSON.stringify(this.meta));
50
+ // init controller
51
+ this.database = await this.getDatabase();
52
+ this.state = await this.getState();
53
+ this.props = await this.getProps();
48
54
 
49
- // preHandle
50
- await this.preHandle(req, res, database, props);
55
+ // preHandle
56
+ await this.preHandle();
51
57
 
52
- // check for anomaly
53
- let anomaly: AnomalyDetector | null = this.getAnomaly();
54
- if (anomaly != null)
55
- if (anomaly.isAnomaly(meta.ip, meta.url))
56
- ErrorOperation.throwHTTP(403, 'Suspicious activity detected.');
58
+ // check for anomaly
59
+ let anomaly: AnomalyDetector | null = this.getAnomaly();
60
+ if (anomaly != null)
61
+ if (anomaly.isAnomaly(this.meta.ip, this.meta.url))
62
+ ErrorOperation.throwHTTP(403, 'Suspicious activity detected.');
57
63
 
58
- // check body validation
59
- let bodySchema = this.getBodySchema();
60
- if (bodySchema != null)
64
+ // check body validation
65
+ let bodySchema = this.getBodySchema();
66
+ if (bodySchema != null)
67
+ {
68
+ const validation = await Joi.compile(bodySchema)
69
+ .prefs({ errors: { label: 'key' } })
70
+ .validate(this.req.body);
71
+ if (validation.error)
61
72
  {
62
- const validation = await Joi.compile(bodySchema)
63
- .prefs({ errors: { label: 'key' } })
64
- .validate(req.body);
65
- if (validation.error)
66
- {
67
- let message = validation.error.details.map((details) => details.message).join(', ');
68
- ErrorOperation.throwHTTP(400, message);
69
- }
73
+ let message = validation.error.details.map((details) => details.message).join(', ');
74
+ ErrorOperation.throwHTTP(400, message);
70
75
  }
71
- // check query validation
72
- let querySchema = this.getQuerySchema();
73
- if (querySchema != null)
76
+ }
77
+ // check query validation
78
+ let querySchema = this.getQuerySchema();
79
+ if (querySchema != null)
80
+ {
81
+ const validation = await Joi.compile(querySchema)
82
+ .prefs({ errors: { label: 'key' } })
83
+ .validate(this.req.query);
84
+ if (validation.error)
74
85
  {
75
- const validation = await Joi.compile(querySchema)
76
- .prefs({ errors: { label: 'key' } })
77
- .validate(req.query);
78
- if (validation.error)
79
- {
80
- let message = validation.error.details.map((details) => details.message).join(', ');
81
- ErrorOperation.throwHTTP(400, message);
82
- }
86
+ let message = validation.error.details.map((details) => details.message).join(', ');
87
+ ErrorOperation.throwHTTP(400, message);
83
88
  }
89
+ }
84
90
 
85
- // call controller
86
- result = await this.handle(req, res, database, props);
87
- if (result == null)
88
- result = "Success";
91
+ // call controller
92
+ this.result = await this.handle();
93
+ if (this.result == null)
94
+ this.result = "Success";
89
95
 
90
- // postHandle
91
- await this.postHandle(req, res, database, props);
92
- } catch (error)
96
+ // postHandle
97
+ await this.postHandle();
98
+ } catch (error)
99
+ {
100
+ let message: string;
101
+ if (error instanceof Error)
93
102
  {
94
- let message: string;
95
- if (error instanceof Error)
96
- {
97
- meta.error = error;
98
- message = error.message;
99
- }
100
- else
101
- message = error + "";
103
+ this.meta.error = error;
104
+ message = error.message;
105
+ }
106
+ else
107
+ message = error + "";
102
108
 
103
- if (error instanceof HTTPError)
104
- {
105
- meta.code = error.code;
106
- this.logger.error(error.message + "\n" + JSON.stringify(meta), undefined, error.stack);
107
- }
108
- else
109
- {
110
- meta.code = 500;
111
- if (error instanceof Error)
112
- this.logger.critical(error.message + "\n" + JSON.stringify(meta), undefined, error.stack);
113
- }
114
- meta.message = message;
115
- if (error instanceof HTTPError)
116
- result = meta.message;
117
- else
118
- result = "Sorry, internl server error.";
109
+ if (error instanceof HTTPError)
110
+ {
111
+ this.meta.code = error.code;
112
+ this.logger.error(error.message + "\n" + JSON.stringify(this.meta), undefined, error.stack);
113
+ }
114
+ else
115
+ {
116
+ this.meta.code = 500;
117
+ if (error instanceof Error)
118
+ this.logger.critical(error.message + "\n" + JSON.stringify(this.meta), undefined, error.stack);
119
119
  }
120
- meta.onFinish();
121
- if (this.showLogAtTheEnd)
122
- this.logger.info(JSON.stringify(meta));
123
- return res.status(meta.code).send(result);
124
- };
120
+ this.meta.message = message;
121
+ if (error instanceof HTTPError)
122
+ this.result = this.meta.message;
123
+ else
124
+ this.result = "Sorry, internl server error.";
125
+ }
126
+ this.meta.onFinish();
127
+ if (this.showLogAtTheEnd)
128
+ this.logger.info(JSON.stringify(this.meta));
129
+ return this.res.status(this.meta.code).send(this.result);
125
130
  }
126
131
  }