namirasoft-core 1.4.91 → 1.4.93

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.
@@ -1,45 +1,55 @@
1
1
  import { AxiosRequestConfig, AxiosResponse } from "axios";
2
2
  import { ParsedNameValue } from "./ParsedNameValue";
3
+ export interface BaseServerConfig<ReqData> extends AxiosRequestConfig<ReqData> {
4
+ sign?: {
5
+ header: string;
6
+ key: string;
7
+ };
8
+ onBeforeRequest?: (url: string, config?: AxiosRequestConfig) => void;
9
+ onAfterRequest?: (url: string, res: AxiosResponse) => void;
10
+ onError?: (error: Error) => void;
11
+ error_suppress?: boolean;
12
+ error_verbose?: boolean;
13
+ }
3
14
  export declare abstract class BaseServer {
4
15
  static isErrorCode(e: any, code: number): boolean;
5
16
  protected base_url: string;
6
17
  private onBeforeRequests;
7
18
  private onAfterRequests;
8
19
  protected abstract onError(error: Error): void;
9
- suppressErrors: boolean;
10
- suppressOnErrors: boolean;
11
- verboseOnErrors: boolean;
20
+ error_suppress?: boolean;
21
+ error_verbose?: boolean;
12
22
  constructor(base_url: string);
13
23
  addOnBeforeRequest(onBeforeRequest: (url: string, config?: AxiosRequestConfig) => void): void;
14
24
  addOnAfterRequest(onAfterRequest: (url: string, res: AxiosResponse) => void): void;
15
25
  private _request;
16
26
  _get<ResData = any, ReqData = any>(sub: string, query?: {
17
27
  [name: string]: ParsedNameValue;
18
- }, config?: AxiosRequestConfig<ReqData>): Promise<{
28
+ }, config?: BaseServerConfig<ReqData>): Promise<{
19
29
  response: AxiosResponse<ResData>;
20
30
  data: ResData;
21
31
  }>;
22
32
  _post<ResData = any, ReqData = any>(sub: string, query?: {
23
33
  [name: string]: ParsedNameValue;
24
- }, data?: ReqData, config?: AxiosRequestConfig<ReqData>, sign_header?: string, sign_key?: string): Promise<{
34
+ }, data?: ReqData, config?: BaseServerConfig<ReqData>): Promise<{
25
35
  response: AxiosResponse<ResData>;
26
36
  data: ResData;
27
37
  }>;
28
38
  _put<ResData = any, ReqData = any>(sub: string, query?: {
29
39
  [name: string]: ParsedNameValue;
30
- }, data?: ReqData, config?: AxiosRequestConfig<ReqData>, sign_header?: string, sign_key?: string): Promise<{
40
+ }, data?: ReqData, config?: BaseServerConfig<ReqData>): Promise<{
31
41
  response: AxiosResponse<ResData>;
32
42
  data: ResData;
33
43
  }>;
34
44
  _patch<ResData = any, ReqData = any>(sub: string, query?: {
35
45
  [name: string]: ParsedNameValue;
36
- }, data?: ReqData, config?: AxiosRequestConfig<ReqData>, sign_header?: string, sign_key?: string): Promise<{
46
+ }, data?: ReqData, config?: BaseServerConfig<ReqData>): Promise<{
37
47
  response: AxiosResponse<ResData>;
38
48
  data: ResData;
39
49
  }>;
40
50
  _delete<ResData = any, ReqData = any>(sub: string, query?: {
41
51
  [name: string]: ParsedNameValue;
42
- }, config?: AxiosRequestConfig<ReqData>, sign_header?: string, sign_key?: string): Promise<{
52
+ }, config?: BaseServerConfig<ReqData>): Promise<{
43
53
  response: AxiosResponse<ResData>;
44
54
  data: ResData;
45
55
  }>;
@@ -35,10 +35,10 @@ class BaseServer {
35
35
  constructor(base_url) {
36
36
  this.onBeforeRequests = [];
37
37
  this.onAfterRequests = [];
38
- this.suppressErrors = false;
39
- this.suppressOnErrors = false;
38
+ this.error_suppress = false;
39
+ this.error_verbose = false;
40
40
  this.base_url = base_url;
41
- this.verboseOnErrors = new EnvService_1.EnvService("BASESERVER_ERROR_VERBOSE", false).getBoolean(false);
41
+ this.error_verbose = new EnvService_1.EnvService("BASESERVER_ERROR_VERBOSE", false).getBoolean(false);
42
42
  }
43
43
  addOnBeforeRequest(onBeforeRequest) {
44
44
  this.onBeforeRequests.push(onBeforeRequest);
@@ -46,18 +46,19 @@ class BaseServer {
46
46
  addOnAfterRequest(onAfterRequest) {
47
47
  this.onAfterRequests.push(onAfterRequest);
48
48
  }
49
- _request(onRequest, sub, query, data, config, sign_header, sign_key) {
49
+ _request(onRequest, sub, query, data, config) {
50
50
  return __awaiter(this, void 0, void 0, function* () {
51
- var _a;
51
+ var _a, _b, _c, _d, _e, _f, _g, _h;
52
52
  let url = URLOperation_1.URLOperation.getLink(this.base_url, sub, query);
53
53
  if (!config)
54
- config = { headers: {} };
55
- if (sign_header)
56
- if (sign_key)
54
+ config = { headers: {}, withCredentials: true };
55
+ if ((_a = config.sign) === null || _a === void 0 ? void 0 : _a.header)
56
+ if ((_b = config.sign) === null || _b === void 0 ? void 0 : _b.key)
57
57
  if (data)
58
58
  if (config === null || config === void 0 ? void 0 : config.headers)
59
- config.headers[sign_header] = HashOperation_1.HashOperation.SHA256Secret(sign_key, data);
59
+ config.headers[config.sign.header] = HashOperation_1.HashOperation.SHA256Secret(config.sign.key, data);
60
60
  try {
61
+ (_c = config.onBeforeRequest) === null || _c === void 0 ? void 0 : _c.call(config, url, config);
61
62
  this.onBeforeRequests.forEach(onBeforeRequest => {
62
63
  onBeforeRequest(url, config);
63
64
  });
@@ -65,30 +66,33 @@ class BaseServer {
65
66
  this.onAfterRequests.forEach(onAfterRequest => {
66
67
  onAfterRequest(url, response);
67
68
  });
69
+ (_d = config.onAfterRequest) === null || _d === void 0 ? void 0 : _d.call(config, url, response);
68
70
  return { response, data: response.data };
69
71
  }
70
72
  catch (error) {
73
+ let onError = (_e = config.onError) !== null && _e !== void 0 ? _e : this.onError;
74
+ let error_verbose = (_f = config.error_verbose) !== null && _f !== void 0 ? _f : this.error_verbose;
75
+ let error_suppress = (_g = config.error_suppress) !== null && _g !== void 0 ? _g : this.error_suppress;
71
76
  if (error instanceof Error) {
72
- if (this.onError) {
73
- if (this.verboseOnErrors)
77
+ if (onError) {
78
+ if (error_verbose)
74
79
  error.message = `Error calling url '${url}' ` + error.message;
75
- if (!this.suppressOnErrors)
76
- this.onError(error);
80
+ onError(error);
77
81
  }
78
82
  else {
79
83
  ConsoleOperation_1.ConsoleOperation.warning("onError function has not been properly set.");
80
84
  ConsoleOperation_1.ConsoleOperation.error(error === null || error === void 0 ? void 0 : error.message);
81
85
  }
82
86
  if (axios_1.default.isAxiosError(error))
83
- if ((_a = error === null || error === void 0 ? void 0 : error.response) === null || _a === void 0 ? void 0 : _a.data)
84
- if (!this.suppressErrors) {
85
- if (this.verboseOnErrors)
87
+ if ((_h = error === null || error === void 0 ? void 0 : error.response) === null || _h === void 0 ? void 0 : _h.data)
88
+ if (!error_suppress) {
89
+ if (error_suppress)
86
90
  ErrorOperation_1.ErrorOperation.throwHTTP(error.response.status, `Error calling url '${url}' ` + JSON.stringify(error.response.data));
87
91
  else
88
92
  ErrorOperation_1.ErrorOperation.throwHTTP(error.response.status, JSON.stringify(error.response.data));
89
93
  }
90
94
  }
91
- if (!this.suppressErrors)
95
+ if (!error_suppress)
92
96
  throw error;
93
97
  }
94
98
  return {};
@@ -101,32 +105,32 @@ class BaseServer {
101
105
  }), sub, query, undefined, config);
102
106
  });
103
107
  }
104
- _post(sub, query, data, config, sign_header, sign_key) {
108
+ _post(sub, query, data, config) {
105
109
  return __awaiter(this, void 0, void 0, function* () {
106
110
  return yield this._request((url, data, config) => __awaiter(this, void 0, void 0, function* () {
107
111
  return yield axios_1.default.post(url, data, config);
108
- }), sub, query, data, config, sign_header, sign_key);
112
+ }), sub, query, data, config);
109
113
  });
110
114
  }
111
- _put(sub, query, data, config, sign_header, sign_key) {
115
+ _put(sub, query, data, config) {
112
116
  return __awaiter(this, void 0, void 0, function* () {
113
117
  return yield this._request((url, data, config) => __awaiter(this, void 0, void 0, function* () {
114
118
  return yield axios_1.default.put(url, data, config);
115
- }), sub, query, data, config, sign_header, sign_key);
119
+ }), sub, query, data, config);
116
120
  });
117
121
  }
118
- _patch(sub, query, data, config, sign_header, sign_key) {
122
+ _patch(sub, query, data, config) {
119
123
  return __awaiter(this, void 0, void 0, function* () {
120
124
  return yield this._request((url, data, config) => __awaiter(this, void 0, void 0, function* () {
121
125
  return yield axios_1.default.patch(url, data, config);
122
- }), sub, query, data, config, sign_header, sign_key);
126
+ }), sub, query, data, config);
123
127
  });
124
128
  }
125
- _delete(sub, query, config, sign_header, sign_key) {
129
+ _delete(sub, query, config) {
126
130
  return __awaiter(this, void 0, void 0, function* () {
127
131
  return yield this._request((url, _, config) => __awaiter(this, void 0, void 0, function* () {
128
132
  return yield axios_1.default.delete(url, config);
129
- }), sub, query, undefined, config, sign_header, sign_key);
133
+ }), sub, query, undefined, config);
130
134
  });
131
135
  }
132
136
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BaseServer.js","sourceRoot":"","sources":["../src/BaseServer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"BaseServer.js","sourceRoot":"","sources":["../src/BaseServer.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "framework": "npm",
9
9
  "application": "package",
10
10
  "private": false,
11
- "version": "1.4.91",
11
+ "version": "1.4.93",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/index.js",
@@ -17,9 +17,9 @@
17
17
  "build": ""
18
18
  },
19
19
  "dependencies": {
20
- "@types/node": "^24.3.3",
20
+ "@types/node": "^24.6.0",
21
21
  "async-mutex": "^0.5.0",
22
- "axios": "^1.12.1",
22
+ "axios": "^1.12.2",
23
23
  "buffer": "^6.0.3",
24
24
  "moment": "^2.30.1",
25
25
  "phone": "^3.1.67",
package/src/BaseServer.ts CHANGED
@@ -7,6 +7,18 @@ import { ConsoleOperation } from "./ConsoleOperation";
7
7
  import { EnvService } from "./EnvService";
8
8
  import { HTTPError } from "./HTTPError";
9
9
 
10
+ export interface BaseServerConfig<ReqData> extends AxiosRequestConfig<ReqData>
11
+ {
12
+ sign?: {
13
+ header: string;
14
+ key: string;
15
+ }
16
+ onBeforeRequest?: (url: string, config?: AxiosRequestConfig) => void;
17
+ onAfterRequest?: (url: string, res: AxiosResponse) => void;
18
+ onError?: (error: Error) => void;
19
+ error_suppress?: boolean;
20
+ error_verbose?: boolean;
21
+ }
10
22
  export abstract class BaseServer
11
23
  {
12
24
  public static isErrorCode(e: any, code: number): boolean
@@ -25,14 +37,13 @@ export abstract class BaseServer
25
37
  private onBeforeRequests: ((url: string, config?: AxiosRequestConfig) => void)[] = [];
26
38
  private onAfterRequests: ((url: string, res: AxiosResponse) => void)[] = [];
27
39
  protected abstract onError(error: Error): void;
28
- public suppressErrors: boolean = false;
29
- public suppressOnErrors: boolean = false;
30
- public verboseOnErrors: boolean;
40
+ public error_suppress?: boolean = false;
41
+ public error_verbose?: boolean = false;
31
42
 
32
43
  constructor(base_url: string)
33
44
  {
34
45
  this.base_url = base_url;
35
- this.verboseOnErrors = new EnvService("BASESERVER_ERROR_VERBOSE", false).getBoolean(false);
46
+ this.error_verbose = new EnvService("BASESERVER_ERROR_VERBOSE", false).getBoolean(false);
36
47
  }
37
48
  public addOnBeforeRequest(onBeforeRequest: (url: string, config?: AxiosRequestConfig) => void)
38
49
  {
@@ -42,18 +53,19 @@ export abstract class BaseServer
42
53
  {
43
54
  this.onAfterRequests.push(onAfterRequest);
44
55
  }
45
- private async _request<ResData = any, ReqData = any>(onRequest: (url: string, data?: any, config?: AxiosRequestConfig<ReqData>) => Promise<AxiosResponse<ResData>>, sub: string, query?: { [name: string]: ParsedNameValue }, data?: ReqData, config?: AxiosRequestConfig<ReqData>, sign_header?: string, sign_key?: string): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
56
+ private async _request<ResData = any, ReqData = any>(onRequest: (url: string, data?: any, config?: BaseServerConfig<ReqData>) => Promise<AxiosResponse<ResData>>, sub: string, query?: { [name: string]: ParsedNameValue }, data?: ReqData, config?: BaseServerConfig<ReqData>): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
46
57
  {
47
58
  let url: string = URLOperation.getLink(this.base_url, sub, query);
48
59
  if (!config)
49
- config = { headers: {} };
50
- if (sign_header)
51
- if (sign_key)
60
+ config = { headers: {}, withCredentials: true };
61
+ if (config.sign?.header)
62
+ if (config.sign?.key)
52
63
  if (data)
53
64
  if (config?.headers)
54
- config.headers[sign_header] = HashOperation.SHA256Secret(sign_key, data);
65
+ config.headers[config.sign.header] = HashOperation.SHA256Secret(config.sign.key, data);
55
66
  try
56
67
  {
68
+ config.onBeforeRequest?.(url, config);
57
69
  this.onBeforeRequests.forEach(onBeforeRequest =>
58
70
  {
59
71
  onBeforeRequest(url, config);
@@ -63,17 +75,20 @@ export abstract class BaseServer
63
75
  {
64
76
  onAfterRequest(url, response);
65
77
  });
78
+ config.onAfterRequest?.(url, response);
66
79
  return { response, data: response.data };
67
80
  } catch (error)
68
81
  {
82
+ let onError = config.onError ?? this.onError;
83
+ let error_verbose = config.error_verbose ?? this.error_verbose;
84
+ let error_suppress = config.error_suppress ?? this.error_suppress;
69
85
  if (error instanceof Error)
70
86
  {
71
- if (this.onError)
87
+ if (onError)
72
88
  {
73
- if (this.verboseOnErrors)
89
+ if (error_verbose)
74
90
  error.message = `Error calling url '${url}' ` + error.message;
75
- if (!this.suppressOnErrors)
76
- this.onError(error);
91
+ onError(error);
77
92
  }
78
93
  else
79
94
  {
@@ -82,52 +97,52 @@ export abstract class BaseServer
82
97
  }
83
98
  if (axios.isAxiosError(error))
84
99
  if (error?.response?.data)
85
- if (!this.suppressErrors)
100
+ if (!error_suppress)
86
101
  {
87
- if (this.verboseOnErrors)
102
+ if (error_suppress)
88
103
  ErrorOperation.throwHTTP(error.response.status, `Error calling url '${url}' ` + JSON.stringify(error.response.data));
89
104
  else
90
105
  ErrorOperation.throwHTTP(error.response.status, JSON.stringify(error.response.data));
91
106
  }
92
107
  }
93
- if (!this.suppressErrors)
108
+ if (!error_suppress)
94
109
  throw error;
95
110
  }
96
111
  return {} as any;
97
112
  }
98
- public async _get<ResData = any, ReqData = any>(sub: string, query?: { [name: string]: ParsedNameValue }, config?: AxiosRequestConfig<ReqData>): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
113
+ public async _get<ResData = any, ReqData = any>(sub: string, query?: { [name: string]: ParsedNameValue }, config?: BaseServerConfig<ReqData>): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
99
114
  {
100
- return await this._request(async (url: string, _?: any, config?: AxiosRequestConfig<ReqData>) =>
115
+ return await this._request(async (url: string, _?: any, config?: BaseServerConfig<ReqData>) =>
101
116
  {
102
117
  return await axios.get(url, config);
103
118
  }, sub, query, undefined, config);
104
119
  }
105
- public async _post<ResData = any, ReqData = any>(sub: string, query?: { [name: string]: ParsedNameValue }, data?: ReqData, config?: AxiosRequestConfig<ReqData>, sign_header?: string, sign_key?: string): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
120
+ public async _post<ResData = any, ReqData = any>(sub: string, query?: { [name: string]: ParsedNameValue }, data?: ReqData, config?: BaseServerConfig<ReqData>): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
106
121
  {
107
- return await this._request(async (url: string, data: ReqData, config?: AxiosRequestConfig<ReqData>) =>
122
+ return await this._request(async (url: string, data: ReqData, config?: BaseServerConfig<ReqData>) =>
108
123
  {
109
124
  return await axios.post(url, data, config);
110
- }, sub, query, data, config, sign_header, sign_key);
125
+ }, sub, query, data, config);
111
126
  }
112
- public async _put<ResData = any, ReqData = any>(sub: string, query?: { [name: string]: ParsedNameValue }, data?: ReqData, config?: AxiosRequestConfig<ReqData>, sign_header?: string, sign_key?: string): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
127
+ public async _put<ResData = any, ReqData = any>(sub: string, query?: { [name: string]: ParsedNameValue }, data?: ReqData, config?: BaseServerConfig<ReqData>): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
113
128
  {
114
- return await this._request(async (url: string, data: ReqData, config?: AxiosRequestConfig<ReqData>) =>
129
+ return await this._request(async (url: string, data: ReqData, config?: BaseServerConfig<ReqData>) =>
115
130
  {
116
131
  return await axios.put(url, data, config);
117
- }, sub, query, data, config, sign_header, sign_key);
132
+ }, sub, query, data, config);
118
133
  }
119
- public async _patch<ResData = any, ReqData = any>(sub: string, query?: { [name: string]: ParsedNameValue }, data?: ReqData, config?: AxiosRequestConfig<ReqData>, sign_header?: string, sign_key?: string): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
134
+ public async _patch<ResData = any, ReqData = any>(sub: string, query?: { [name: string]: ParsedNameValue }, data?: ReqData, config?: BaseServerConfig<ReqData>): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
120
135
  {
121
- return await this._request(async (url: string, data: ReqData, config?: AxiosRequestConfig<ReqData>) =>
136
+ return await this._request(async (url: string, data: ReqData, config?: BaseServerConfig<ReqData>) =>
122
137
  {
123
138
  return await axios.patch(url, data, config);
124
- }, sub, query, data, config, sign_header, sign_key);
139
+ }, sub, query, data, config);
125
140
  }
126
- public async _delete<ResData = any, ReqData = any>(sub: string, query?: { [name: string]: ParsedNameValue }, config?: AxiosRequestConfig<ReqData>, sign_header?: string, sign_key?: string): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
141
+ public async _delete<ResData = any, ReqData = any>(sub: string, query?: { [name: string]: ParsedNameValue }, config?: BaseServerConfig<ReqData>): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
127
142
  {
128
- return await this._request(async (url: string, _?: any, config?: AxiosRequestConfig<ReqData>) =>
143
+ return await this._request(async (url: string, _?: any, config?: BaseServerConfig<ReqData>) =>
129
144
  {
130
145
  return await axios.delete(url, config);
131
- }, sub, query, undefined, config, sign_header, sign_key);
146
+ }, sub, query, undefined, config);
132
147
  }
133
148
  }