namirasoft-core 1.4.92 → 1.4.94

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,23 @@ 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: {}, withCredentials: true };
55
- if (sign_header)
56
- if (sign_key)
57
- if (data)
58
- if (config === null || config === void 0 ? void 0 : config.headers)
59
- config.headers[sign_header] = HashOperation_1.HashOperation.SHA256Secret(sign_key, data);
54
+ config = {};
55
+ if (!config.headers)
56
+ config.headers = {};
57
+ if (config.withCredentials == null)
58
+ config.withCredentials = true;
59
+ if (config.sign)
60
+ if ((_a = config.sign) === null || _a === void 0 ? void 0 : _a.header)
61
+ if ((_b = config.sign) === null || _b === void 0 ? void 0 : _b.key)
62
+ if (data)
63
+ config.headers[config.sign.header] = HashOperation_1.HashOperation.SHA256Secret(config.sign.key, data);
60
64
  try {
65
+ (_c = config.onBeforeRequest) === null || _c === void 0 ? void 0 : _c.call(config, url, config);
61
66
  this.onBeforeRequests.forEach(onBeforeRequest => {
62
67
  onBeforeRequest(url, config);
63
68
  });
@@ -65,30 +70,32 @@ class BaseServer {
65
70
  this.onAfterRequests.forEach(onAfterRequest => {
66
71
  onAfterRequest(url, response);
67
72
  });
73
+ (_d = config.onAfterRequest) === null || _d === void 0 ? void 0 : _d.call(config, url, response);
68
74
  return { response, data: response.data };
69
75
  }
70
76
  catch (error) {
77
+ let onError = (_e = config.onError) !== null && _e !== void 0 ? _e : this.onError;
78
+ let error_verbose = (_f = config.error_verbose) !== null && _f !== void 0 ? _f : this.error_verbose;
79
+ let error_suppress = (_g = config.error_suppress) !== null && _g !== void 0 ? _g : this.error_suppress;
71
80
  if (error instanceof Error) {
72
- if (this.onError) {
73
- if (this.verboseOnErrors)
74
- error.message = `Error calling url '${url}' ` + error.message;
75
- if (!this.suppressOnErrors)
76
- this.onError(error);
77
- }
81
+ if (error_verbose)
82
+ error.message = `Error calling url '${url}' ` + error.message;
83
+ if (onError)
84
+ onError(error);
78
85
  else {
79
86
  ConsoleOperation_1.ConsoleOperation.warning("onError function has not been properly set.");
80
87
  ConsoleOperation_1.ConsoleOperation.error(error === null || error === void 0 ? void 0 : error.message);
81
88
  }
82
89
  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)
90
+ if ((_h = error === null || error === void 0 ? void 0 : error.response) === null || _h === void 0 ? void 0 : _h.data)
91
+ if (!error_suppress) {
92
+ if (error_suppress)
86
93
  ErrorOperation_1.ErrorOperation.throwHTTP(error.response.status, `Error calling url '${url}' ` + JSON.stringify(error.response.data));
87
94
  else
88
95
  ErrorOperation_1.ErrorOperation.throwHTTP(error.response.status, JSON.stringify(error.response.data));
89
96
  }
90
97
  }
91
- if (!this.suppressErrors)
98
+ if (!error_suppress)
92
99
  throw error;
93
100
  }
94
101
  return {};
@@ -101,32 +108,32 @@ class BaseServer {
101
108
  }), sub, query, undefined, config);
102
109
  });
103
110
  }
104
- _post(sub, query, data, config, sign_header, sign_key) {
111
+ _post(sub, query, data, config) {
105
112
  return __awaiter(this, void 0, void 0, function* () {
106
113
  return yield this._request((url, data, config) => __awaiter(this, void 0, void 0, function* () {
107
114
  return yield axios_1.default.post(url, data, config);
108
- }), sub, query, data, config, sign_header, sign_key);
115
+ }), sub, query, data, config);
109
116
  });
110
117
  }
111
- _put(sub, query, data, config, sign_header, sign_key) {
118
+ _put(sub, query, data, config) {
112
119
  return __awaiter(this, void 0, void 0, function* () {
113
120
  return yield this._request((url, data, config) => __awaiter(this, void 0, void 0, function* () {
114
121
  return yield axios_1.default.put(url, data, config);
115
- }), sub, query, data, config, sign_header, sign_key);
122
+ }), sub, query, data, config);
116
123
  });
117
124
  }
118
- _patch(sub, query, data, config, sign_header, sign_key) {
125
+ _patch(sub, query, data, config) {
119
126
  return __awaiter(this, void 0, void 0, function* () {
120
127
  return yield this._request((url, data, config) => __awaiter(this, void 0, void 0, function* () {
121
128
  return yield axios_1.default.patch(url, data, config);
122
- }), sub, query, data, config, sign_header, sign_key);
129
+ }), sub, query, data, config);
123
130
  });
124
131
  }
125
- _delete(sub, query, config, sign_header, sign_key) {
132
+ _delete(sub, query, config) {
126
133
  return __awaiter(this, void 0, void 0, function* () {
127
134
  return yield this._request((url, _, config) => __awaiter(this, void 0, void 0, function* () {
128
135
  return yield axios_1.default.delete(url, config);
129
- }), sub, query, undefined, config, sign_header, sign_key);
136
+ }), sub, query, undefined, config);
130
137
  });
131
138
  }
132
139
  }
@@ -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.92",
11
+ "version": "1.4.94",
12
12
  "author": "Amir Abolhasani",
13
13
  "license": "MIT",
14
14
  "main": "./dist/index.js",
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,24 @@ 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: {}, withCredentials: true };
50
- if (sign_header)
51
- if (sign_key)
52
- if (data)
53
- if (config?.headers)
54
- config.headers[sign_header] = HashOperation.SHA256Secret(sign_key, data);
60
+ config = {};
61
+ if (!config.headers)
62
+ config.headers = {};
63
+ if (config.withCredentials == null)
64
+ config.withCredentials = true;
65
+
66
+ if (config.sign)
67
+ if (config.sign?.header)
68
+ if (config.sign?.key)
69
+ if (data)
70
+ config.headers[config.sign.header] = HashOperation.SHA256Secret(config.sign.key, data);
55
71
  try
56
72
  {
73
+ config.onBeforeRequest?.(url, config);
57
74
  this.onBeforeRequests.forEach(onBeforeRequest =>
58
75
  {
59
76
  onBeforeRequest(url, config);
@@ -63,18 +80,19 @@ export abstract class BaseServer
63
80
  {
64
81
  onAfterRequest(url, response);
65
82
  });
83
+ config.onAfterRequest?.(url, response);
66
84
  return { response, data: response.data };
67
85
  } catch (error)
68
86
  {
87
+ let onError = config.onError ?? this.onError;
88
+ let error_verbose = config.error_verbose ?? this.error_verbose;
89
+ let error_suppress = config.error_suppress ?? this.error_suppress;
69
90
  if (error instanceof Error)
70
91
  {
71
- if (this.onError)
72
- {
73
- if (this.verboseOnErrors)
74
- error.message = `Error calling url '${url}' ` + error.message;
75
- if (!this.suppressOnErrors)
76
- this.onError(error);
77
- }
92
+ if (error_verbose)
93
+ error.message = `Error calling url '${url}' ` + error.message;
94
+ if (onError)
95
+ onError(error);
78
96
  else
79
97
  {
80
98
  ConsoleOperation.warning("onError function has not been properly set.");
@@ -82,52 +100,52 @@ export abstract class BaseServer
82
100
  }
83
101
  if (axios.isAxiosError(error))
84
102
  if (error?.response?.data)
85
- if (!this.suppressErrors)
103
+ if (!error_suppress)
86
104
  {
87
- if (this.verboseOnErrors)
105
+ if (error_suppress)
88
106
  ErrorOperation.throwHTTP(error.response.status, `Error calling url '${url}' ` + JSON.stringify(error.response.data));
89
107
  else
90
108
  ErrorOperation.throwHTTP(error.response.status, JSON.stringify(error.response.data));
91
109
  }
92
110
  }
93
- if (!this.suppressErrors)
111
+ if (!error_suppress)
94
112
  throw error;
95
113
  }
96
114
  return {} as any;
97
115
  }
98
- public async _get<ResData = any, ReqData = any>(sub: string, query?: { [name: string]: ParsedNameValue }, config?: AxiosRequestConfig<ReqData>): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
116
+ public async _get<ResData = any, ReqData = any>(sub: string, query?: { [name: string]: ParsedNameValue }, config?: BaseServerConfig<ReqData>): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
99
117
  {
100
- return await this._request(async (url: string, _?: any, config?: AxiosRequestConfig<ReqData>) =>
118
+ return await this._request(async (url: string, _?: any, config?: BaseServerConfig<ReqData>) =>
101
119
  {
102
120
  return await axios.get(url, config);
103
121
  }, sub, query, undefined, config);
104
122
  }
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 }>
123
+ 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
124
  {
107
- return await this._request(async (url: string, data: ReqData, config?: AxiosRequestConfig<ReqData>) =>
125
+ return await this._request(async (url: string, data: ReqData, config?: BaseServerConfig<ReqData>) =>
108
126
  {
109
127
  return await axios.post(url, data, config);
110
- }, sub, query, data, config, sign_header, sign_key);
128
+ }, sub, query, data, config);
111
129
  }
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 }>
130
+ 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
131
  {
114
- return await this._request(async (url: string, data: ReqData, config?: AxiosRequestConfig<ReqData>) =>
132
+ return await this._request(async (url: string, data: ReqData, config?: BaseServerConfig<ReqData>) =>
115
133
  {
116
134
  return await axios.put(url, data, config);
117
- }, sub, query, data, config, sign_header, sign_key);
135
+ }, sub, query, data, config);
118
136
  }
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 }>
137
+ 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
138
  {
121
- return await this._request(async (url: string, data: ReqData, config?: AxiosRequestConfig<ReqData>) =>
139
+ return await this._request(async (url: string, data: ReqData, config?: BaseServerConfig<ReqData>) =>
122
140
  {
123
141
  return await axios.patch(url, data, config);
124
- }, sub, query, data, config, sign_header, sign_key);
142
+ }, sub, query, data, config);
125
143
  }
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 }>
144
+ public async _delete<ResData = any, ReqData = any>(sub: string, query?: { [name: string]: ParsedNameValue }, config?: BaseServerConfig<ReqData>): Promise<{ response: AxiosResponse<ResData>, data: ResData }>
127
145
  {
128
- return await this._request(async (url: string, _?: any, config?: AxiosRequestConfig<ReqData>) =>
146
+ return await this._request(async (url: string, _?: any, config?: BaseServerConfig<ReqData>) =>
129
147
  {
130
148
  return await axios.delete(url, config);
131
- }, sub, query, undefined, config, sign_header, sign_key);
149
+ }, sub, query, undefined, config);
132
150
  }
133
151
  }