namirasoft-node 1.4.79 → 1.4.81

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.
@@ -10,8 +10,14 @@ export type BaseCronInfoType = {
10
10
  export declare abstract class BaseCron<D extends {
11
11
  [name: string]: BaseDatabase;
12
12
  }> {
13
+ protected log: {
14
+ enabled: boolean;
15
+ onStarted: boolean;
16
+ onFinished: boolean;
17
+ };
13
18
  protected app: BaseApplication<D>;
14
19
  private info;
20
+ private timer;
15
21
  constructor(app: BaseApplication<D>);
16
22
  abstract getInfo(): BaseCronInfoType;
17
23
  run(): void;
package/dist/BaseCron.js CHANGED
@@ -14,8 +14,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
14
14
  Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.BaseCron = void 0;
16
16
  const node_cron_1 = __importDefault(require("node-cron"));
17
+ const Timer_1 = require("./Timer");
17
18
  class BaseCron {
18
19
  constructor(app) {
20
+ this.log = {
21
+ enabled: true,
22
+ onStarted: true,
23
+ onFinished: true
24
+ };
25
+ this.timer = new Timer_1.Timer();
19
26
  this.app = app;
20
27
  this.run = this.run.bind(this);
21
28
  this.loop = this.loop.bind(this);
@@ -52,12 +59,18 @@ class BaseCron {
52
59
  }
53
60
  handler() {
54
61
  return __awaiter(this, void 0, void 0, function* () {
55
- this.app.logger.info(`Cron ${this.info.name} was started.`);
62
+ if (this.log.enabled)
63
+ if (this.log.onStarted)
64
+ this.app.logger.info(`Cron ${this.info.name} was started.`);
56
65
  try {
66
+ this.timer.onStart();
57
67
  yield this.preHandle();
58
68
  yield this.handleOne();
59
69
  yield this.postHandle();
60
- this.app.logger.info(`Cron ${this.info.name} was finished.`);
70
+ this.timer.onFinish();
71
+ if (this.log.enabled)
72
+ if (this.log.onFinished)
73
+ this.app.logger.info(`Cron ${this.info.name} was finished in ${this.timer.duration}ms.`);
61
74
  }
62
75
  catch (error) {
63
76
  this.app.logger.onCatchCritical(error);
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCron.js","sourceRoot":"","sources":["../src/BaseCron.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AACA,0DAA6B;AAY7B,MAAsB,QAAQ;IAI1B,YAAY,GAAuB;QAE/B,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IAID,GAAG;QAEC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAE3B,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ;YAC1C,MAAM,IAAI,KAAK,CAAC,yEAAyE,CAAC,CAAC;aAC1F,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;YACzB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,qBAAqB,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;aACxF,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ;YACvB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,2BAA2B,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC;;YAE/F,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;QAE5F,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;YACpB,IAAI,CAAC,OAAO,EAAE,CAAC;QACnB,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU;YACpB,mBAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;aACjD,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ;YACvB,IAAI,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAEa,IAAI;;YAEd,OAAO,IAAI,EACX,CAAC;gBACG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAA;gBACpB,MAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;oBAEzB,UAAU,CAAC,GAAG,EAAE;wBAEZ,QAAQ,CAAC,EAAE,CAAC,CAAC;oBACjB,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3B,CAAC,CAAC,CAAA;YACN,CAAC;QACL,CAAC;KAAA;IAEa,OAAO;;YAEjB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,CAAC;YAC5D,IACA,CAAC;gBAEG,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBAEvB,MAAM,IAAI,CAAC,SAAS,EAAE,CAAC;gBAEvB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;gBAExB,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,KAAU,EACjB,CAAC;gBACG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;YAC3C,CAAC;QACL,CAAC;KAAA;IAAA,CAAC;IAEI,SAAS;8DAAoB,CAAC;KAAA;IAE9B,UAAU;8DAAoB,CAAC;KAAA;CACxC;AAzED,4BAyEC"}
1
+ {"version":3,"file":"BaseCron.js","sourceRoot":"","sources":["../src/BaseCron.ts"],"names":[],"mappings":"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"}
package/dist/Meta.d.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import * as express from 'express';
2
2
  import { IncomingHttpHeaders } from "http";
3
3
  import { HTTPMethod } from 'namirasoft-core';
4
+ import { Timer } from './Timer';
4
5
  export declare class Meta {
5
6
  info: {
6
7
  name: string;
@@ -14,9 +15,7 @@ export declare class Meta {
14
15
  url: string;
15
16
  headers?: IncomingHttpHeaders;
16
17
  body?: any;
17
- start_time: Date | null;
18
- end_time: Date | null;
19
- duration: number | null;
18
+ timer: Timer;
20
19
  code: number;
21
20
  message: string;
22
21
  error: Error | null;
package/dist/Meta.js CHANGED
@@ -2,11 +2,10 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Meta = void 0;
4
4
  const IPOperation_1 = require("./IPOperation");
5
+ const Timer_1 = require("./Timer");
5
6
  class Meta {
6
7
  constructor(info, req) {
7
- this.start_time = null;
8
- this.end_time = null;
9
- this.duration = null;
8
+ this.timer = new Timer_1.Timer();
10
9
  this.code = 200;
11
10
  this.message = "Success";
12
11
  this.error = null;
@@ -19,12 +18,10 @@ class Meta {
19
18
  this.body = req.body;
20
19
  }
21
20
  onStart() {
22
- this.start_time = new Date();
21
+ this.timer.onStart();
23
22
  }
24
23
  onFinish() {
25
- var _a, _b, _c, _d;
26
- this.end_time = new Date();
27
- this.duration = ((_b = (_a = this.end_time) === null || _a === void 0 ? void 0 : _a.getTime()) !== null && _b !== void 0 ? _b : 0) - ((_d = (_c = this.start_time) === null || _c === void 0 ? void 0 : _c.getTime()) !== null && _d !== void 0 ? _d : 0);
24
+ this.timer.onFinish();
28
25
  }
29
26
  }
30
27
  exports.Meta = Meta;
package/dist/Meta.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"Meta.js","sourceRoot":"","sources":["../src/Meta.ts"],"names":[],"mappings":";;;AAEA,+CAA4C;AAG5C,MAAa,IAAI;IAeb,YAAY,IAAsF,EAAE,GAAoB;QAPxH,eAAU,GAAgB,IAAI,CAAC;QAC/B,aAAQ,GAAgB,IAAI,CAAC;QAC7B,aAAQ,GAAkB,IAAI,CAAC;QAC/B,SAAI,GAAW,GAAG,CAAC;QACnB,YAAO,GAAW,SAAS,CAAC;QAC5B,UAAK,GAAiB,IAAI,CAAC;QAC3B,sBAAiB,GAAkB,IAAI,CAAC;QAGpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,yBAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACzB,CAAC;IACD,OAAO;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;IACjC,CAAC;IACD,QAAQ;;QAEJ,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,EAAE,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO,EAAE,mCAAI,CAAC,CAAC,CAAC;IACxF,CAAC;CACJ;AAjCD,oBAiCC"}
1
+ {"version":3,"file":"Meta.js","sourceRoot":"","sources":["../src/Meta.ts"],"names":[],"mappings":";;;AAEA,+CAA4C;AAE5C,mCAAgC;AAEhC,MAAa,IAAI;IAab,YAAY,IAAsF,EAAE,GAAoB;QALxH,UAAK,GAAU,IAAI,aAAK,EAAE,CAAC;QAC3B,SAAI,GAAW,GAAG,CAAC;QACnB,YAAO,GAAW,SAAS,CAAC;QAC5B,UAAK,GAAiB,IAAI,CAAC;QAC3B,sBAAiB,GAAkB,IAAI,CAAC;QAGpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,yBAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC,WAAW,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC;QAC3B,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IACzB,CAAC;IACD,OAAO;QAEH,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IACzB,CAAC;IACD,QAAQ;QAEJ,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;CACJ;AA9BD,oBA8BC"}
@@ -0,0 +1,8 @@
1
+ export declare class Timer {
2
+ start_time: Date | null;
3
+ end_time: Date | null;
4
+ duration: number | null;
5
+ constructor();
6
+ onStart(): void;
7
+ onFinish(): void;
8
+ }
package/dist/Timer.js ADDED
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Timer = void 0;
4
+ class Timer {
5
+ constructor() {
6
+ this.start_time = null;
7
+ this.end_time = null;
8
+ this.duration = null;
9
+ }
10
+ onStart() {
11
+ this.start_time = new Date();
12
+ }
13
+ onFinish() {
14
+ var _a, _b, _c, _d;
15
+ this.end_time = new Date();
16
+ this.duration = ((_b = (_a = this.end_time) === null || _a === void 0 ? void 0 : _a.getTime()) !== null && _b !== void 0 ? _b : 0) - ((_d = (_c = this.start_time) === null || _c === void 0 ? void 0 : _c.getTime()) !== null && _d !== void 0 ? _d : 0);
17
+ }
18
+ }
19
+ exports.Timer = Timer;
20
+ //# sourceMappingURL=Timer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Timer.js","sourceRoot":"","sources":["../src/Timer.ts"],"names":[],"mappings":";;;AAAA,MAAa,KAAK;IAKd;QAHO,eAAU,GAAgB,IAAI,CAAC;QAC/B,aAAQ,GAAgB,IAAI,CAAC;QAC7B,aAAQ,GAAkB,IAAI,CAAC;IAGtC,CAAC;IACD,OAAO;QAEH,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,EAAE,CAAC;IACjC,CAAC;IACD,QAAQ;;QAEJ,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,CAAC,MAAA,MAAA,IAAI,CAAC,QAAQ,0CAAE,OAAO,EAAE,mCAAI,CAAC,CAAC,GAAG,CAAC,MAAA,MAAA,IAAI,CAAC,UAAU,0CAAE,OAAO,EAAE,mCAAI,CAAC,CAAC,CAAC;IACxF,CAAC;CACJ;AAjBD,sBAiBC"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.4.79",
11
+ "version": "1.4.81",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/index.js",
@@ -35,7 +35,7 @@
35
35
  "namirasoft-schema": "^1.4.25",
36
36
  "node-cron": "^3.0.3",
37
37
  "nodemailer": "^6.10.0",
38
- "nodemailer-smtp-transport": "^2.7.4",
38
+ "nodemailer-smtp-transport": "^2.4.2",
39
39
  "request-ip": "^3.3.0",
40
40
  "serve-index": "^1.9.1",
41
41
  "swagger-jsdoc": "^6.2.8",
package/src/BaseCron.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { BaseDatabase } from './BaseDatabase';
2
2
  import cron from 'node-cron';
3
3
  import { BaseApplication } from './BaseApplication';
4
+ import { Timer } from './Timer';
4
5
 
5
6
  export type BaseCronInfoType =
6
7
  {
@@ -13,8 +14,19 @@ export type BaseCronInfoType =
13
14
 
14
15
  export abstract class BaseCron<D extends { [name: string]: BaseDatabase }>
15
16
  {
17
+ protected log: {
18
+ enabled: boolean;
19
+ onStarted: boolean;
20
+ onFinished: boolean;
21
+ } = {
22
+ enabled: true,
23
+ onStarted: true,
24
+ onFinished: true
25
+ };
16
26
  protected app: BaseApplication<D>;
17
27
  private info!: BaseCronInfoType;
28
+ private timer: Timer = new Timer();
29
+
18
30
  constructor(app: BaseApplication<D>)
19
31
  {
20
32
  this.app = app;
@@ -63,17 +75,23 @@ export abstract class BaseCron<D extends { [name: string]: BaseDatabase }>
63
75
 
64
76
  private async handler()
65
77
  {
66
- this.app.logger.info(`Cron ${this.info.name} was started.`);
78
+ if (this.log.enabled)
79
+ if (this.log.onStarted)
80
+ this.app.logger.info(`Cron ${this.info.name} was started.`);
67
81
  try
68
82
  {
69
83
  // preHandle
84
+ this.timer.onStart();
70
85
  await this.preHandle();
71
86
  // Handler
72
87
  await this.handleOne();
73
88
  // postHandle
74
89
  await this.postHandle();
75
- // Log
76
- this.app.logger.info(`Cron ${this.info.name} was finished.`);
90
+ this.timer.onFinish();
91
+
92
+ if (this.log.enabled)
93
+ if (this.log.onFinished)
94
+ this.app.logger.info(`Cron ${this.info.name} was finished in ${this.timer.duration}ms.`);
77
95
  }
78
96
  catch (error: any)
79
97
  {
package/src/Meta.ts CHANGED
@@ -2,6 +2,7 @@ import * as express from 'express';
2
2
  import { IncomingHttpHeaders } from "http";
3
3
  import { IPOperation } from './IPOperation';
4
4
  import { HTTPMethod } from 'namirasoft-core';
5
+ import { Timer } from './Timer';
5
6
 
6
7
  export class Meta
7
8
  {
@@ -11,9 +12,7 @@ export class Meta
11
12
  url: string;
12
13
  headers?: IncomingHttpHeaders;
13
14
  body?: any;
14
- start_time: Date | null = null;
15
- end_time: Date | null = null;
16
- duration: number | null = null;
15
+ timer: Timer = new Timer();
17
16
  code: number = 200;
18
17
  message: string = "Success";
19
18
  error: Error | null = null;
@@ -29,11 +28,10 @@ export class Meta
29
28
  }
30
29
  onStart()
31
30
  {
32
- this.start_time = new Date();
31
+ this.timer.onStart();
33
32
  }
34
33
  onFinish()
35
34
  {
36
- this.end_time = new Date();
37
- this.duration = (this.end_time?.getTime() ?? 0) - (this.start_time?.getTime() ?? 0);
35
+ this.timer.onFinish();
38
36
  }
39
37
  }
package/src/Timer.ts ADDED
@@ -0,0 +1,18 @@
1
+ export class Timer
2
+ {
3
+ public start_time: Date | null = null;
4
+ public end_time: Date | null = null;
5
+ public duration: number | null = null;
6
+ constructor()
7
+ {
8
+ }
9
+ onStart()
10
+ {
11
+ this.start_time = new Date();
12
+ }
13
+ onFinish()
14
+ {
15
+ this.end_time = new Date();
16
+ this.duration = (this.end_time?.getTime() ?? 0) - (this.start_time?.getTime() ?? 0);
17
+ }
18
+ }