badmfck-api-server 1.8.8 → 1.9.0

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,7 +1,7 @@
1
1
  import { Response } from 'express';
2
2
  import { BaseService, IBaseService } from './BaseService';
3
3
  import { IBaseEndpoint } from './BaseEndpoint';
4
- import { TransferPacketVO } from './structures/Interfaces';
4
+ import { HTTPRequestVO, TransferPacketVO } from './structures/Interfaces';
5
5
  import { Req } from "badmfck-signal";
6
6
  export interface APIServiceNetworkLogItem {
7
7
  id: number;
@@ -25,6 +25,7 @@ export interface APIServiceOptions {
25
25
  onError?: ((...rest: any[]) => void) | null;
26
26
  isProductionEnvironment: boolean;
27
27
  interceptor?: IBaseEndpoint;
28
+ postproducer?: (req: HTTPRequestVO | undefined | null, res: Response, data: TransferPacketVO<any>, requestTime: number, endpoint?: string, log?: APIServiceNetworkLogItem | null) => Promise<TransferPacketVO>;
28
29
  monitor?: {
29
30
  login: string;
30
31
  password: string;
@@ -49,5 +50,5 @@ export declare class APIService extends BaseService {
49
50
  netLog: APIServiceNetworkLogItem[];
50
51
  constructor(options?: APIServiceOptions | null);
51
52
  init(): Promise<void>;
52
- sendResponse(res: Response, data: TransferPacketVO<any>, requestTime: number, endpoint?: string, log?: APIServiceNetworkLogItem | null): void;
53
+ sendResponse(res: Response, data: TransferPacketVO<any>, requestTime: number, endpoint?: string, log?: APIServiceNetworkLogItem | null, req?: HTTPRequestVO): Promise<void>;
53
54
  }
@@ -57,7 +57,7 @@ async function Initializer(services) {
57
57
  exports.Initializer = Initializer;
58
58
  class APIService extends BaseService_1.BaseService {
59
59
  static nextLogID = 0;
60
- version = "1.8.8";
60
+ version = "1.8.9";
61
61
  options;
62
62
  monitor;
63
63
  monitorIndexFile;
@@ -193,7 +193,7 @@ class APIService extends BaseService_1.BaseService {
193
193
  if (this.options.interceptor) {
194
194
  interceptorResult = await this.options.interceptor.execute(httpRequest);
195
195
  if (interceptorResult.error && !j.allowInterceptorError) {
196
- this.sendResponse(res, interceptorResult, tme, ep, log);
196
+ this.sendResponse(res, interceptorResult, tme, ep, log, httpRequest);
197
197
  return;
198
198
  }
199
199
  httpRequest.interceptorResult = interceptorResult;
@@ -203,7 +203,7 @@ class APIService extends BaseService_1.BaseService {
203
203
  httpRequest.precheck = { data: this.options.monitor };
204
204
  const precheck = await i.precheck(httpRequest);
205
205
  if (precheck && precheck.error) {
206
- this.sendResponse(res, precheck, tme, ep, log);
206
+ this.sendResponse(res, precheck, tme, ep, log, httpRequest);
207
207
  return;
208
208
  }
209
209
  httpRequest.precheck = precheck;
@@ -222,10 +222,10 @@ class APIService extends BaseService_1.BaseService {
222
222
  message: "Internal server error",
223
223
  details: `${e}`
224
224
  }
225
- }, tme, ep, log);
225
+ }, tme, ep, log, httpRequest);
226
226
  return;
227
227
  }
228
- this.sendResponse(res, result, tme, ep, log);
228
+ this.sendResponse(res, result, tme, ep, log, httpRequest);
229
229
  };
230
230
  execute();
231
231
  });
@@ -277,16 +277,24 @@ class APIService extends BaseService_1.BaseService {
277
277
  (0, LogService_1.logCrit)('${APIService.js}', 'API Service started at: ' + this.options.port + ", with base endpoint:" + this.options.baseEndPoint + ", ver.: " + this.version);
278
278
  });
279
279
  }
280
- sendResponse(res, data, requestTime, endpoint, log) {
280
+ async sendResponse(res, data, requestTime, endpoint, log, req) {
281
+ if (this.options.postproducer) {
282
+ try {
283
+ data = await this.options.postproducer(req, res, data, requestTime, endpoint, log);
284
+ }
285
+ catch (e) {
286
+ (0, LogService_1.logError)("Postproducer error", e);
287
+ }
288
+ }
281
289
  data.responseTime = (+new Date()) - requestTime;
282
290
  data.core = this.version;
283
291
  data.endpoint = endpoint ?? "no_endpoint";
284
292
  if (this.options.appVersion)
285
293
  data.version = this.options.appVersion;
286
- if (this.monitor)
287
- this.monitor.registrateResponse(data.endpoint, data.responseTime);
288
294
  if (log)
289
295
  log.time = data.responseTime;
296
+ if (this.monitor)
297
+ this.monitor.registrateResponse(data.endpoint, data.responseTime);
290
298
  if (res.destroyed || res.closed) {
291
299
  if (log)
292
300
  log.error = "Connection already closed, can't send response for: " + data.endpoint;
@@ -1,5 +1,5 @@
1
1
  import { FileArray } from "express-fileupload";
2
- export interface TransferPacketVO<T> {
2
+ export interface TransferPacketVO<T = any> {
3
3
  data?: T | null;
4
4
  error?: IError | null;
5
5
  responseTime?: number;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "badmfck-api-server",
3
- "version": "1.8.8",
3
+ "version": "1.9.0",
4
4
  "description": "Simple API http server based on express",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",