namirasoft-node 1.4.58 → 1.4.60

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.
@@ -54,4 +54,5 @@ export declare abstract class BaseController<D extends BaseDatabase, State, Prop
54
54
  abstract postHandle(): Promise<void>;
55
55
  run(): Promise<void | express.Response<any, Record<string, any>>>;
56
56
  getSchema(): Promise<ControllerSchema>;
57
+ protected _setCookie(name: string, value: any): void;
57
58
  }
@@ -151,6 +151,11 @@ class BaseController {
151
151
  return schema;
152
152
  });
153
153
  }
154
+ _setCookie(name, value) {
155
+ let DOMAIN = new namirasoft_core_1.EnvService("DOMAIN").getString();
156
+ let domain = "." + DOMAIN;
157
+ this.res.cookie(name, value, { domain, path: "/", sameSite: "none", secure: true });
158
+ }
154
159
  }
155
160
  exports.BaseController = BaseController;
156
161
  //# sourceMappingURL=BaseController.js.map
@@ -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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"}
@@ -0,0 +1,46 @@
1
+ import { BaseFilterItemBuilder } from "./BaseFilterItemBuilder";
2
+ export declare class BaseFilterItemBuilderObject extends BaseFilterItemBuilder<{
3
+ getName: () => string;
4
+ }, boolean> {
5
+ object: any;
6
+ constructor(object: any);
7
+ checkColumn(): void;
8
+ getRealColumnName(_: string, column_name: string): string;
9
+ getIn(column_name: string, not: boolean, values: string[]): {
10
+ condition: boolean;
11
+ };
12
+ getLike(column_name: string, not: boolean, value: string): {
13
+ condition: boolean;
14
+ };
15
+ getRegex(column_name: string, not: boolean, value: string): {
16
+ condition: boolean;
17
+ };
18
+ getEmpty(column_name: string, not: boolean): {
19
+ condition: boolean;
20
+ };
21
+ getExists(column_name: string, not: boolean): {
22
+ condition: boolean;
23
+ };
24
+ getIncludes(column_name: string, not: boolean, values: string[]): {
25
+ condition: boolean;
26
+ };
27
+ getStartsWith(column_name: string, not: boolean, value: string): {
28
+ condition: boolean;
29
+ };
30
+ getEndsWith(column_name: string, not: boolean, value: string): {
31
+ condition: boolean;
32
+ };
33
+ getLT(column_name: string, value: any): {
34
+ condition: boolean;
35
+ };
36
+ getLTE(column_name: string, value: any): {
37
+ condition: boolean;
38
+ };
39
+ getGT(column_name: string, value: any): {
40
+ condition: boolean;
41
+ };
42
+ getGTE(column_name: string, value: any): {
43
+ condition: boolean;
44
+ };
45
+ getInSelect(): Promise<boolean>;
46
+ }
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BaseFilterItemBuilderObject = void 0;
13
+ const BaseFilterItemBuilder_1 = require("./BaseFilterItemBuilder");
14
+ class BaseFilterItemBuilderObject extends BaseFilterItemBuilder_1.BaseFilterItemBuilder {
15
+ constructor(object) {
16
+ super();
17
+ this.object = object;
18
+ }
19
+ checkColumn() {
20
+ }
21
+ getRealColumnName(_, column_name) {
22
+ return column_name;
23
+ }
24
+ getIn(column_name, not, values) {
25
+ var _a;
26
+ let condition = values.includes((_a = this.object[column_name]) !== null && _a !== void 0 ? _a : null) !== not;
27
+ return { condition };
28
+ }
29
+ getLike(column_name, not, value) {
30
+ var _a;
31
+ let condition = new RegExp(`.*${value}.*`).test((_a = this.object[column_name]) !== null && _a !== void 0 ? _a : "") !== not;
32
+ return { condition };
33
+ }
34
+ getRegex(column_name, not, value) {
35
+ var _a;
36
+ let condition = new RegExp(value).test((_a = this.object[column_name]) !== null && _a !== void 0 ? _a : "") !== not;
37
+ return { condition };
38
+ }
39
+ getEmpty(column_name, not) {
40
+ var _a;
41
+ let condition = (((_a = this.object[column_name]) !== null && _a !== void 0 ? _a : "") == "") !== not;
42
+ return { condition };
43
+ }
44
+ getExists(column_name, not) {
45
+ let condition = ((this.object[column_name]) != null) !== not;
46
+ return { condition };
47
+ }
48
+ getIncludes(column_name, not, values) {
49
+ return this.getExists(column_name, not) && this.getIn(column_name, not, values);
50
+ }
51
+ getStartsWith(column_name, not, value) {
52
+ var _a;
53
+ let condition = new RegExp(`${value}.*`).test((_a = this.object[column_name]) !== null && _a !== void 0 ? _a : "") !== not;
54
+ return { condition };
55
+ }
56
+ getEndsWith(column_name, not, value) {
57
+ var _a;
58
+ let condition = new RegExp(`.*${value}`).test((_a = this.object[column_name]) !== null && _a !== void 0 ? _a : "") !== not;
59
+ return { condition };
60
+ }
61
+ getLT(column_name, value) {
62
+ var _a;
63
+ let condition = (parseFloat((_a = this.object[column_name]) !== null && _a !== void 0 ? _a : "") < parseFloat(value));
64
+ return { condition };
65
+ }
66
+ getLTE(column_name, value) {
67
+ var _a;
68
+ let condition = (parseFloat((_a = this.object[column_name]) !== null && _a !== void 0 ? _a : "") <= parseFloat(value));
69
+ return { condition };
70
+ }
71
+ getGT(column_name, value) {
72
+ var _a;
73
+ let condition = (parseFloat((_a = this.object[column_name]) !== null && _a !== void 0 ? _a : "") > parseFloat(value));
74
+ return { condition };
75
+ }
76
+ getGTE(column_name, value) {
77
+ var _a;
78
+ let condition = (parseFloat((_a = this.object[column_name]) !== null && _a !== void 0 ? _a : "") >= parseFloat(value));
79
+ return { condition };
80
+ }
81
+ getInSelect() {
82
+ return __awaiter(this, void 0, void 0, function* () {
83
+ throw new Error('Not implemented');
84
+ });
85
+ }
86
+ }
87
+ exports.BaseFilterItemBuilderObject = BaseFilterItemBuilderObject;
88
+ //# sourceMappingURL=BaseFilterItemBuilderObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseFilterItemBuilderObject.js","sourceRoot":"","sources":["../src/BaseFilterItemBuilderObject.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -7,6 +7,7 @@ export * from "./BaseDatabase";
7
7
  export * from "./BaseEmailService";
8
8
  export * from "./BaseFilterItemBuilder";
9
9
  export * from "./BaseFilterItemBuilderDatabase";
10
+ export * from "./BaseFilterItemBuilderObject";
10
11
  export * from "./BaseTable";
11
12
  export * from "./CommandOperation";
12
13
  export * from "./EmptyDatabase";
package/dist/index.js CHANGED
@@ -23,6 +23,7 @@ __exportStar(require("./BaseDatabase"), exports);
23
23
  __exportStar(require("./BaseEmailService"), exports);
24
24
  __exportStar(require("./BaseFilterItemBuilder"), exports);
25
25
  __exportStar(require("./BaseFilterItemBuilderDatabase"), exports);
26
+ __exportStar(require("./BaseFilterItemBuilderObject"), exports);
26
27
  __exportStar(require("./BaseTable"), exports);
27
28
  __exportStar(require("./CommandOperation"), exports);
28
29
  __exportStar(require("./EmptyDatabase"), exports);
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,oDAAkC;AAClC,wDAAsC;AACtC,mDAAiC;AACjC,6CAA2B;AAC3B,iDAA+B;AAC/B,qDAAmC;AACnC,0DAAwC;AACxC,kEAAgD;AAChD,8CAA4B;AAC5B,qDAAmC;AACnC,kDAAgC;AAChC,iDAA+B;AAC/B,gDAA8B;AAC9B,yCAAuB;AACvB,iDAA+B;AAC/B,yDAAuC;AACvC,4DAA0C;AAC1C,gDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,oDAAkC;AAClC,oDAAkC;AAClC,wDAAsC;AACtC,mDAAiC;AACjC,6CAA2B;AAC3B,iDAA+B;AAC/B,qDAAmC;AACnC,0DAAwC;AACxC,kEAAgD;AAChD,gEAA8C;AAC9C,8CAA4B;AAC5B,qDAAmC;AACnC,kDAAgC;AAChC,iDAA+B;AAC/B,gDAA8B;AAC9B,yCAAuB;AACvB,iDAA+B;AAC/B,yDAAuC;AACvC,4DAA0C;AAC1C,gDAA8B"}
package/package.json CHANGED
@@ -1,44 +1,44 @@
1
- {
2
- "name": "namirasoft-node",
3
- "title": "Namirasoft Node NPM Package",
4
- "description": "Namira Software Corporation Node NPM Package",
5
- "icon": "logo.png",
6
- "logo": "https://static.namirasoft.com/image/namirasoft/site/logo/base.png",
7
- "language": "ts",
8
- "framework": "npm",
9
- "application": "package",
10
- "private": false,
11
- "version": "1.4.58",
12
- "author": "Amir Abolhasani",
13
- "license": "MIT",
14
- "main": "./dist/index.js",
15
- "types": "./dist/index.d.ts",
16
- "scripts": {
17
- "build": ""
18
- },
19
- "dependencies": {
20
- "@supercharge/request-ip": "^1.2.0",
21
- "@types/cors": "^2.8.17",
22
- "@types/express": "^5.0.0",
23
- "@types/node": "^22.10.7",
24
- "@types/node-cron": "^3.0.11",
25
- "@types/nodemailer": "^6.4.17",
26
- "@types/nodemailer-smtp-transport": "^2.7.8",
27
- "@types/serve-index": "^1.9.4",
28
- "@types/swagger-jsdoc": "^6.0.4",
29
- "@types/swagger-ui-express": "^4.1.7",
30
- "cors": "^2.8.5",
31
- "express": "^4.21.2",
32
- "joi": "^17.13.3",
33
- "namirasoft-core": "^1.4.42",
34
- "namirasoft-log": "^1.4.16",
35
- "namirasoft-schema": "^1.4.22",
36
- "node-cron": "^3.0.3",
37
- "nodemailer": "^6.9.16",
38
- "nodemailer-smtp-transport": "^2.7.4",
39
- "request-ip": "^3.3.0",
40
- "serve-index": "^1.9.1",
41
- "swagger-jsdoc": "^6.2.8",
42
- "swagger-ui-express": "^5.0.1"
43
- }
1
+ {
2
+ "name": "namirasoft-node",
3
+ "title": "Namirasoft Node NPM Package",
4
+ "description": "Namira Software Corporation Node NPM Package",
5
+ "icon": "logo.png",
6
+ "logo": "https://static.namirasoft.com/image/namirasoft/site/logo/base.png",
7
+ "language": "ts",
8
+ "framework": "npm",
9
+ "application": "package",
10
+ "private": false,
11
+ "version": "1.4.60",
12
+ "author": "Amir Abolhasani",
13
+ "license": "MIT",
14
+ "main": "./dist/index.js",
15
+ "types": "./dist/index.d.ts",
16
+ "scripts": {
17
+ "build": ""
18
+ },
19
+ "dependencies": {
20
+ "@supercharge/request-ip": "^1.2.0",
21
+ "@types/cors": "^2.8.17",
22
+ "@types/express": "^5.0.0",
23
+ "@types/node": "^22.10.10",
24
+ "@types/node-cron": "^3.0.11",
25
+ "@types/nodemailer": "^6.4.17",
26
+ "@types/nodemailer-smtp-transport": "^2.7.8",
27
+ "@types/serve-index": "^1.9.4",
28
+ "@types/swagger-jsdoc": "^6.0.4",
29
+ "@types/swagger-ui-express": "^4.1.7",
30
+ "cors": "^2.8.5",
31
+ "express": "^4.21.2",
32
+ "joi": "^17.13.3",
33
+ "namirasoft-core": "^1.4.45",
34
+ "namirasoft-log": "^1.4.19",
35
+ "namirasoft-schema": "^1.4.22",
36
+ "node-cron": "^3.0.3",
37
+ "nodemailer": "^6.10.0",
38
+ "nodemailer-smtp-transport": "^2.7.4",
39
+ "request-ip": "^3.3.0",
40
+ "serve-index": "^1.9.1",
41
+ "swagger-jsdoc": "^6.2.8",
42
+ "swagger-ui-express": "^5.0.1"
43
+ }
44
44
  }
@@ -1,85 +1,85 @@
1
- export class AnomalyDetector
2
- {
3
- static Main: AnomalyDetector = new AnomalyDetector();
4
- // configuration
5
- MAX_STORAGE_SIZE = 10000;
6
- MAX_STORAGE_PER_IP = 25;
7
- MIN_AVG_TIME = 200;
8
- MIN_DATA_REQUIRE_FOR_AVG = 4;
9
- MIN_AVG_TIME_PER_URL = 400;
10
- MIN_DATA_REQUIRE_FOR_AVG_PER_URL = 3;
11
- TIME_FADE_RATE = 0.9;
12
-
13
- Storage: { [ip: string]: { url: string, time: number }[] } = {};
14
- Storageـurl: { [ip: string]: { [url: string]: { time: number }[] } } = {};
15
- Orders: string[] = [];
16
-
17
- private weightedAverage(array: { time: number }[], fade_rate: number)
18
- {
19
- let sum = 0;
20
- let sum_coef = 0;
21
- for (let i = 1; i < array.length; i++)
22
- {
23
- let diff = array[i].time - array[i - 1].time;
24
- let coef = Math.pow(fade_rate, (array.length - (i + 1)));
25
- sum += diff * coef;
26
- sum_coef += coef;
27
- }
28
- return sum / sum_coef;
29
- }
30
-
31
- isAnomaly(ip: string, url: string): boolean
32
- {
33
- if (!this.Storage[ip])
34
- {
35
- this.Storage[ip] = [];
36
- this.Storageـurl[ip] = {};
37
- this.Orders.push(ip);
38
- }
39
-
40
- if (this.Orders.length > this.MAX_STORAGE_SIZE)
41
- {
42
- let index = this.Orders.shift();
43
- if (index)
44
- {
45
- delete this.Storage[index];
46
- delete this.Storageـurl[index];
47
- }
48
- }
49
-
50
- if (this.Storage[ip].length >= this.MAX_STORAGE_PER_IP)
51
- {
52
- let record = this.Storage[ip].shift(); // remove first element
53
- if (record)
54
- this.Storageـurl[ip][record.url].shift(); // remove first element of url array
55
- }
56
-
57
- this.Storage[ip].push({
58
- url: url,
59
- time: +new Date()
60
- });
61
-
62
- if (!this.Storageـurl[ip][url])
63
- this.Storageـurl[ip][url] = [];
64
- this.Storageـurl[ip][url].push({
65
- time: +new Date()
66
- });
67
-
68
- // check conditions
69
- // simple
70
- if (this.Storage[ip].length >= this.MIN_DATA_REQUIRE_FOR_AVG)
71
- {
72
- let avg = this.weightedAverage(this.Storage[ip], this.TIME_FADE_RATE);
73
- if (avg < this.MIN_AVG_TIME)
74
- return true;
75
- }
76
- // by requst url
77
- if (this.Storageـurl[ip][url].length >= this.MIN_DATA_REQUIRE_FOR_AVG_PER_URL)
78
- {
79
- let avg = this.weightedAverage(this.Storageـurl[ip][url], this.TIME_FADE_RATE);
80
- if (avg < this.MIN_AVG_TIME_PER_URL)
81
- return true;
82
- }
83
- return false;
84
- }
1
+ export class AnomalyDetector
2
+ {
3
+ static Main: AnomalyDetector = new AnomalyDetector();
4
+ // configuration
5
+ MAX_STORAGE_SIZE = 10000;
6
+ MAX_STORAGE_PER_IP = 25;
7
+ MIN_AVG_TIME = 200;
8
+ MIN_DATA_REQUIRE_FOR_AVG = 4;
9
+ MIN_AVG_TIME_PER_URL = 400;
10
+ MIN_DATA_REQUIRE_FOR_AVG_PER_URL = 3;
11
+ TIME_FADE_RATE = 0.9;
12
+
13
+ Storage: { [ip: string]: { url: string, time: number }[] } = {};
14
+ Storageـurl: { [ip: string]: { [url: string]: { time: number }[] } } = {};
15
+ Orders: string[] = [];
16
+
17
+ private weightedAverage(array: { time: number }[], fade_rate: number)
18
+ {
19
+ let sum = 0;
20
+ let sum_coef = 0;
21
+ for (let i = 1; i < array.length; i++)
22
+ {
23
+ let diff = array[i].time - array[i - 1].time;
24
+ let coef = Math.pow(fade_rate, (array.length - (i + 1)));
25
+ sum += diff * coef;
26
+ sum_coef += coef;
27
+ }
28
+ return sum / sum_coef;
29
+ }
30
+
31
+ isAnomaly(ip: string, url: string): boolean
32
+ {
33
+ if (!this.Storage[ip])
34
+ {
35
+ this.Storage[ip] = [];
36
+ this.Storageـurl[ip] = {};
37
+ this.Orders.push(ip);
38
+ }
39
+
40
+ if (this.Orders.length > this.MAX_STORAGE_SIZE)
41
+ {
42
+ let index = this.Orders.shift();
43
+ if (index)
44
+ {
45
+ delete this.Storage[index];
46
+ delete this.Storageـurl[index];
47
+ }
48
+ }
49
+
50
+ if (this.Storage[ip].length >= this.MAX_STORAGE_PER_IP)
51
+ {
52
+ let record = this.Storage[ip].shift(); // remove first element
53
+ if (record)
54
+ this.Storageـurl[ip][record.url].shift(); // remove first element of url array
55
+ }
56
+
57
+ this.Storage[ip].push({
58
+ url: url,
59
+ time: +new Date()
60
+ });
61
+
62
+ if (!this.Storageـurl[ip][url])
63
+ this.Storageـurl[ip][url] = [];
64
+ this.Storageـurl[ip][url].push({
65
+ time: +new Date()
66
+ });
67
+
68
+ // check conditions
69
+ // simple
70
+ if (this.Storage[ip].length >= this.MIN_DATA_REQUIRE_FOR_AVG)
71
+ {
72
+ let avg = this.weightedAverage(this.Storage[ip], this.TIME_FADE_RATE);
73
+ if (avg < this.MIN_AVG_TIME)
74
+ return true;
75
+ }
76
+ // by requst url
77
+ if (this.Storageـurl[ip][url].length >= this.MIN_DATA_REQUIRE_FOR_AVG_PER_URL)
78
+ {
79
+ let avg = this.weightedAverage(this.Storageـurl[ip][url], this.TIME_FADE_RATE);
80
+ if (avg < this.MIN_AVG_TIME_PER_URL)
81
+ return true;
82
+ }
83
+ return false;
84
+ }
85
85
  }