@viplance/nestjs-logger 0.3.8 → 0.4.1

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.
Files changed (45) hide show
  1. package/README.md +37 -4
  2. package/dist/defaults.js +1 -1
  3. package/dist/entities/log.entity.d.ts +2 -2
  4. package/dist/entities/log.entity.js +1 -1
  5. package/dist/guards/access.guard.d.ts +1 -1
  6. package/dist/guards/access.guard.js +2 -2
  7. package/dist/index.d.ts +4 -4
  8. package/dist/interceptors/log.interceptor.d.ts +4 -4
  9. package/dist/log.module.d.ts +1 -1
  10. package/dist/log.module.js +33 -7
  11. package/dist/log.module.js.map +1 -1
  12. package/dist/services/log.service.d.ts +15 -9
  13. package/dist/services/log.service.js +87 -30
  14. package/dist/services/log.service.js.map +1 -1
  15. package/dist/services/memory-db.service.d.ts +1 -1
  16. package/dist/services/memory-db.service.js +5 -5
  17. package/dist/services/ws.service.d.ts +18 -0
  18. package/dist/services/ws.service.js +106 -0
  19. package/dist/services/ws.service.js.map +1 -0
  20. package/dist/types/index.d.ts +3 -3
  21. package/dist/types/options.type.d.ts +7 -0
  22. package/dist/utils/entity2table.d.ts +1 -1
  23. package/dist/utils/entity2table.js +6 -6
  24. package/package.json +9 -4
  25. package/public/index.html +7 -2
  26. package/public/scripts/common.js +74 -43
  27. package/public/scripts/details-popup.js +18 -9
  28. package/public/scripts/json-viewer.js +4 -4
  29. package/public/scripts/ws.js +83 -0
  30. package/public/styles/index.css +5 -0
  31. package/src/defaults.ts +1 -1
  32. package/src/entities/log.entity.ts +3 -3
  33. package/src/guards/access.guard.ts +5 -5
  34. package/src/index.ts +4 -4
  35. package/src/interceptors/log.interceptor.ts +5 -5
  36. package/src/log.module.ts +50 -17
  37. package/src/services/log.service.ts +118 -40
  38. package/src/services/memory-db.service.ts +9 -9
  39. package/src/services/ws.d.ts +1 -0
  40. package/src/services/ws.service.ts +110 -0
  41. package/src/types/index.ts +3 -3
  42. package/src/types/log.type.ts +5 -5
  43. package/src/types/options.type.ts +7 -0
  44. package/src/utils/entity2table.ts +8 -8
  45. package/public/json.html +0 -0
package/README.md CHANGED
@@ -24,12 +24,13 @@
24
24
  import { LogModule } from '@viplance/nestjs-logger';
25
25
 
26
26
  await LogModule.init(app, {
27
+ ..., // some other properties
27
28
  path: '/logs', // define the public URL for the log list
28
29
  key: 'kjhjmi321lqq7a', // use the key to protect data from unauthorized access
29
30
  });
30
31
  ```
31
32
 
32
- Connect the database to store logs.<br />
33
+ Connect a SQL or NoSQL database to store logs.<br />
33
34
  ```typescript
34
35
  await LogModule.init(app, {
35
36
  ...,
@@ -42,6 +43,18 @@ Connect the database to store logs.<br />
42
43
  });
43
44
  ```
44
45
 
46
+ Enable a WebSocket connection to receive the logs in real time.<br />
47
+ ```typescript
48
+ await LogModule.init(app, {
49
+ ...,
50
+ websocket: {
51
+ secure: true, // enable WSS
52
+ port: 81,
53
+ host: 'your-domain.name',
54
+ }
55
+ });
56
+ ```
57
+
45
58
  4. Use the `LogService` in case of custom logs to debug the application.<br />
46
59
  ```typescript
47
60
  import { LogService } from '@viplance/nestjs-logger';
@@ -54,16 +67,36 @@ Connect the database to store logs.<br />
54
67
 
55
68
  ### Additional information
56
69
 
57
- - `path`, `key` and `database` properties are optional.
58
- - The logs could be available at `your_application_url`/`path`?key=`key`
70
+ - `path`, `key`, `database` and `websocket` properties are optional.
71
+ - The log UI could be available at `your_application_url`/`path`?key=`key` or WebSocket port
59
72
  - The log API could be available at `your_application_url`/`path`/api?key=`key`
60
73
  - By default the logs will be stored in memory and deleted when the application stops.<br />
61
74
  <br />
62
75
 
76
+ ### The LogModule options:
77
+ - path?: string;
78
+ - key?: string; // access key
79
+ - join?: boolean; // merge the message duplicates
80
+ - maxRecords?: number; // max log records
81
+ - maxAge?: number; // in days
82
+ - maxSize?: number; // in megabytes
83
+ - database?: DataSourceOptions & {
84
+ host?: string;
85
+ port?: string;
86
+ table?: string;
87
+ collection?: string;
88
+ };
89
+ - websocket?: {
90
+ port?: number;
91
+ namespace?: string;
92
+ host?: string;
93
+ secure?: boolean;
94
+ };
95
+
63
96
  ### The LogService methods:
64
97
  - log(message: string)
65
98
  - error(message: string)
66
99
  - warn(message: string)
67
100
  - debug(message: string)
68
101
  - verbose(message: string)
69
- - addBreadcrumb(breadcrumb: any)
102
+ - addBreadcrumb(breadcrumb: any) - adds extra details to the logs for the current request
package/dist/defaults.js CHANGED
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.defaultTable = void 0;
4
- exports.defaultTable = "logs";
4
+ exports.defaultTable = 'logs';
5
5
  //# sourceMappingURL=defaults.js.map
@@ -1,5 +1,5 @@
1
- import { DataSourceOptions, EntitySchema } from "typeorm";
2
- export declare function createLogEntity(name: string, dbType: DataSourceOptions["type"] | "memory"): EntitySchema<{
1
+ import { DataSourceOptions, EntitySchema } from 'typeorm';
2
+ export declare function createLogEntity(name: string, dbType: DataSourceOptions['type'] | 'memory'): EntitySchema<{
3
3
  _id: unknown;
4
4
  type: unknown;
5
5
  message: unknown;
@@ -7,7 +7,7 @@ function createLogEntity(name, dbType) {
7
7
  name,
8
8
  columns: {
9
9
  _id: {
10
- type: dbType === "mongodb" ? String : Number,
10
+ type: dbType === 'mongodb' ? String : Number,
11
11
  objectId: true,
12
12
  primary: true,
13
13
  generated: true,
@@ -1,4 +1,4 @@
1
- import { CanActivate, ExecutionContext } from "@nestjs/common";
1
+ import { CanActivate, ExecutionContext } from '@nestjs/common';
2
2
  export declare class LogAccessGuard implements CanActivate {
3
3
  canActivate(context: ExecutionContext): boolean;
4
4
  }
@@ -18,9 +18,9 @@ let LogAccessGuard = class LogAccessGuard {
18
18
  const req = !!context.switchToHttp
19
19
  ? context.switchToHttp().getRequest()
20
20
  : context; // hook for using as method
21
- const params = node_querystring_1.default.parse(req.url.split("?")[1]);
21
+ const params = node_querystring_1.default.parse(req.url.split('?')[1]);
22
22
  if (log_service_1.LogService.options.key && params.key !== log_service_1.LogService.options.key) {
23
- throw new common_1.HttpException("Unauthorized", 401);
23
+ throw new common_1.HttpException('Unauthorized', 401);
24
24
  }
25
25
  return true;
26
26
  }
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export * from "./interceptors/log.interceptor";
2
- export * from "./log.module";
3
- export * from "./types/index";
4
- export * from "./services/log.service";
1
+ export * from './interceptors/log.interceptor';
2
+ export * from './log.module';
3
+ export * from './types/index';
4
+ export * from './services/log.service';
@@ -1,7 +1,7 @@
1
- import type { CallHandler, NestInterceptor } from "@nestjs/common";
2
- import { Observable } from "rxjs";
3
- import { LogService } from "../services/log.service";
4
- import { ExecutionContextHost } from "@nestjs/core/helpers/execution-context-host";
1
+ import type { CallHandler, NestInterceptor } from '@nestjs/common';
2
+ import { Observable } from 'rxjs';
3
+ import { LogService } from '../services/log.service';
4
+ import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host';
5
5
  export declare class LogInterceptor implements NestInterceptor {
6
6
  private readonly logService;
7
7
  constructor(logService: LogService);
@@ -1,4 +1,4 @@
1
- import { LogModuleOptions } from "./types";
1
+ import { LogModuleOptions } from './types';
2
2
  export declare class LogModule {
3
3
  static init(app: any, options?: LogModuleOptions): Promise<void>;
4
4
  }
@@ -19,34 +19,54 @@ const node_querystring_1 = __importDefault(require("node:querystring"));
19
19
  const core_1 = require("@nestjs/core");
20
20
  const node_path_1 = require("node:path");
21
21
  const access_guard_1 = require("./guards/access.guard");
22
+ const ws_service_1 = require("./services/ws.service");
22
23
  let LogModule = class LogModule {
23
24
  static async init(app, options) {
24
25
  app.resolve(log_service_1.LogService);
25
26
  const logService = await app.resolve(log_service_1.LogService);
27
+ const wsService = await app.resolve(ws_service_1.WsService);
26
28
  const logAccessGuard = await app.get(access_guard_1.LogAccessGuard);
27
29
  if (options) {
28
30
  logService.setOptions(options);
29
31
  }
30
32
  app.useGlobalInterceptors(new log_interceptor_1.LogInterceptor(logService)); // intercept all errors
31
33
  if (options === null || options === void 0 ? void 0 : options.path) {
32
- app.useStaticAssets((0, node_path_1.join)(__dirname, "..", "public"), {
34
+ app.useStaticAssets((0, node_path_1.join)(__dirname, '..', 'public'), {
33
35
  prefix: options.path,
34
36
  });
35
37
  const httpAdapter = app.getHttpAdapter();
38
+ // frontend settings endpoint
39
+ httpAdapter.get((0, node_path_1.join)(options.path, 'settings'), async (req, res) => {
40
+ var _a, _b, _c, _d;
41
+ logAccessGuard.canActivate(req);
42
+ const result = {};
43
+ if (options === null || options === void 0 ? void 0 : options.websocket) {
44
+ result.websocket = {
45
+ namespace: (_a = options.websocket) === null || _a === void 0 ? void 0 : _a.namespace,
46
+ port: (_b = options.websocket) === null || _b === void 0 ? void 0 : _b.port,
47
+ host: ((_c = options.websocket) === null || _c === void 0 ? void 0 : _c.host) || ((_d = req.headers) === null || _d === void 0 ? void 0 : _d.host.split(':')[0]),
48
+ };
49
+ }
50
+ res.json(result);
51
+ });
36
52
  // get all logs endpoint
37
- httpAdapter.get((0, node_path_1.join)(options.path, "api"), async (req, res) => {
53
+ httpAdapter.get((0, node_path_1.join)(options.path, 'api'), async (req, res) => {
38
54
  logAccessGuard.canActivate(req);
39
55
  res.json(await logService.getAll());
40
56
  });
41
57
  // delete log endpoint
42
- httpAdapter.delete((0, node_path_1.join)(options.path, "api"), async (req, res) => {
58
+ httpAdapter.delete((0, node_path_1.join)(options.path, 'api'), async (req, res) => {
43
59
  logAccessGuard.canActivate(req);
44
- const params = node_querystring_1.default.parse(req.url.split("?")[1]);
60
+ const params = node_querystring_1.default.parse(req.url.split('?')[1]);
45
61
  if (!params.id) {
46
- throw new common_1.HttpException("id is required", 400);
62
+ throw new common_1.HttpException('id is required', 400);
47
63
  }
48
64
  res.json(await logService.delete(params.id.toString()));
49
65
  });
66
+ // set up WebSocket connection
67
+ if (options === null || options === void 0 ? void 0 : options.websocket) {
68
+ wsService.setupConnection(options.websocket, options.key);
69
+ }
50
70
  }
51
71
  if (options === null || options === void 0 ? void 0 : options.database) {
52
72
  await logService.connectDb(options);
@@ -58,8 +78,14 @@ exports.LogModule = LogModule = __decorate([
58
78
  (0, common_1.Global)(),
59
79
  (0, common_1.Module)({
60
80
  imports: [typeorm_1.TypeOrmModule],
61
- providers: [core_1.ApplicationConfig, access_guard_1.LogAccessGuard, log_service_1.LogService, memory_db_service_1.MemoryDbService],
62
- exports: [typeorm_1.TypeOrmModule, log_service_1.LogService, memory_db_service_1.MemoryDbService],
81
+ providers: [
82
+ core_1.ApplicationConfig,
83
+ access_guard_1.LogAccessGuard,
84
+ log_service_1.LogService,
85
+ memory_db_service_1.MemoryDbService,
86
+ ws_service_1.WsService,
87
+ ],
88
+ exports: [typeorm_1.TypeOrmModule, log_service_1.LogService, memory_db_service_1.MemoryDbService, ws_service_1.WsService],
63
89
  })
64
90
  ], LogModule);
65
91
  //# sourceMappingURL=log.module.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"log.module.js","sourceRoot":"","sources":["../src/log.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,wDAAoD;AACpD,oEAA+D;AAC/D,oEAAgE;AAEhE,6CAAgD;AAChD,wEAA2C;AAC3C,uCAAiD;AACjD,yCAAiC;AACjC,wDAAuD;AAQhD,IAAM,SAAS,GAAf,MAAM,SAAS;IACb,MAAM,CAAC,KAAK,CAAC,IAAI,CACtB,GAAQ,EACR,OAA0B;QAE1B,GAAG,CAAC,OAAO,CAAC,wBAAU,CAAC,CAAC;QAExB,MAAM,UAAU,GAAe,MAAM,GAAG,CAAC,OAAO,CAAC,wBAAU,CAAC,CAAC;QAC7D,MAAM,cAAc,GAAmB,MAAM,GAAG,CAAC,GAAG,CAAC,6BAAc,CAAC,CAAC;QAErE,IAAI,OAAO,EAAE,CAAC;YACZ,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,GAAG,CAAC,qBAAqB,CAAC,IAAI,gCAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAuB;QAElF,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC;YAClB,GAAG,CAAC,eAAe,CAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;gBACnD,MAAM,EAAE,OAAO,CAAC,IAAI;aACrB,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;YAEzC,wBAAwB;YACxB,WAAW,CAAC,GAAG,CAAC,IAAA,gBAAI,EAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,EAAE;gBACtE,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAEhC,GAAG,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,sBAAsB;YACtB,WAAW,CAAC,MAAM,CAChB,IAAA,gBAAI,EAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EACzB,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,EAAE;gBAC3B,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAEhC,MAAM,MAAM,GAAG,0BAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAExD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,IAAI,sBAAa,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;gBACjD,CAAC;gBAED,GAAG,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC,CACF,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE,CAAC;YACtB,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF,CAAA;AAnDY,8BAAS;oBAAT,SAAS;IANrB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,uBAAa,CAAC;QACxB,SAAS,EAAE,CAAC,wBAAiB,EAAE,6BAAc,EAAE,wBAAU,EAAE,mCAAe,CAAC;QAC3E,OAAO,EAAE,CAAC,uBAAa,EAAE,wBAAU,EAAE,mCAAe,CAAC;KACtD,CAAC;GACW,SAAS,CAmDrB"}
1
+ {"version":3,"file":"log.module.js","sourceRoot":"","sources":["../src/log.module.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,2CAA+D;AAC/D,wDAAoD;AACpD,oEAA+D;AAC/D,oEAAgE;AAEhE,6CAAgD;AAChD,wEAA2C;AAC3C,uCAAiD;AACjD,yCAAiC;AACjC,wDAAuD;AACvD,sDAAkD;AAc3C,IAAM,SAAS,GAAf,MAAM,SAAS;IACb,MAAM,CAAC,KAAK,CAAC,IAAI,CACtB,GAAQ,EACR,OAA0B;QAE1B,GAAG,CAAC,OAAO,CAAC,wBAAU,CAAC,CAAC;QAExB,MAAM,UAAU,GAAe,MAAM,GAAG,CAAC,OAAO,CAAC,wBAAU,CAAC,CAAC;QAC7D,MAAM,SAAS,GAAc,MAAM,GAAG,CAAC,OAAO,CAAC,sBAAS,CAAC,CAAC;QAC1D,MAAM,cAAc,GAAmB,MAAM,GAAG,CAAC,GAAG,CAAC,6BAAc,CAAC,CAAC;QAErE,IAAI,OAAO,EAAE,CAAC;YACZ,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;QAED,GAAG,CAAC,qBAAqB,CAAC,IAAI,gCAAc,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,uBAAuB;QAElF,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,IAAI,EAAE,CAAC;YAClB,GAAG,CAAC,eAAe,CAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,EAAE;gBACnD,MAAM,EAAE,OAAO,CAAC,IAAI;aACrB,CAAC,CAAC;YAEH,MAAM,WAAW,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC;YAEzC,6BAA6B;YAC7B,WAAW,CAAC,GAAG,CACb,IAAA,gBAAI,EAAC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,EAC9B,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,EAAE;;gBAC3B,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAEhC,MAAM,MAAM,GAA2B,EAAE,CAAC;gBAE1C,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE,CAAC;oBACvB,MAAM,CAAC,SAAS,GAAG;wBACjB,SAAS,EAAE,MAAA,OAAO,CAAC,SAAS,0CAAE,SAAS;wBACvC,IAAI,EAAE,MAAA,OAAO,CAAC,SAAS,0CAAE,IAAI;wBAC7B,IAAI,EAAE,CAAA,MAAA,OAAO,CAAC,SAAS,0CAAE,IAAI,MAAI,MAAA,GAAG,CAAC,OAAO,0CAAE,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;qBACjE,CAAC;gBACJ,CAAC;gBAED,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACnB,CAAC,CACF,CAAC;YAEF,wBAAwB;YACxB,WAAW,CAAC,GAAG,CAAC,IAAA,gBAAI,EAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,EAAE;gBACtE,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAEhC,GAAG,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;YAEH,sBAAsB;YACtB,WAAW,CAAC,MAAM,CAChB,IAAA,gBAAI,EAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,EACzB,KAAK,EAAE,GAAQ,EAAE,GAAQ,EAAE,EAAE;gBAC3B,cAAc,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAEhC,MAAM,MAAM,GAAG,0BAAW,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAExD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;oBACf,MAAM,IAAI,sBAAa,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;gBACjD,CAAC;gBAED,GAAG,CAAC,IAAI,CAAC,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1D,CAAC,CACF,CAAC;YAEF,8BAA8B;YAC9B,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,SAAS,EAAE,CAAC;gBACvB,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC;YAC5D,CAAC;QACH,CAAC;QAED,IAAI,OAAO,aAAP,OAAO,uBAAP,OAAO,CAAE,QAAQ,EAAE,CAAC;YACtB,MAAM,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACtC,CAAC;IACH,CAAC;CACF,CAAA;AA7EY,8BAAS;oBAAT,SAAS;IAZrB,IAAA,eAAM,GAAE;IACR,IAAA,eAAM,EAAC;QACN,OAAO,EAAE,CAAC,uBAAa,CAAC;QACxB,SAAS,EAAE;YACT,wBAAiB;YACjB,6BAAc;YACd,wBAAU;YACV,mCAAe;YACf,sBAAS;SACV;QACD,OAAO,EAAE,CAAC,uBAAa,EAAE,wBAAU,EAAE,mCAAe,EAAE,sBAAS,CAAC;KACjE,CAAC;GACW,SAAS,CA6ErB"}
@@ -1,17 +1,22 @@
1
- import { LoggerService } from "@nestjs/common";
2
- import { MemoryDbService } from "./memory-db.service";
3
- import { LogModuleOptions } from "../types";
4
- import { DataSource, EntitySchema } from "typeorm";
5
- import { ExecutionContextHost } from "@nestjs/core/helpers/execution-context-host";
6
- import { setInterval } from "timers";
7
- export declare class LogService implements LoggerService {
1
+ import { LoggerService, OnApplicationShutdown } from '@nestjs/common';
2
+ import { MemoryDbService } from './memory-db.service';
3
+ import { LogModuleOptions } from '../types';
4
+ import { DataSource, EntitySchema } from 'typeorm';
5
+ import { ExecutionContextHost } from '@nestjs/core/helpers/execution-context-host';
6
+ import { setInterval } from 'timers';
7
+ import { WsService } from './ws.service';
8
+ import { Subscription } from 'rxjs';
9
+ export declare class LogService implements LoggerService, OnApplicationShutdown {
8
10
  private readonly memoryDbService;
11
+ private readonly wsService;
9
12
  static connection: DataSource;
10
13
  static options: LogModuleOptions;
11
14
  static Log: EntitySchema;
12
15
  static timer: ReturnType<typeof setInterval>;
16
+ static subscription: Subscription;
13
17
  breadcrumbs: any[];
14
- constructor(memoryDbService: MemoryDbService);
18
+ constructor(memoryDbService: MemoryDbService, wsService: WsService);
19
+ onApplicationShutdown(): void;
15
20
  connectDb(options: LogModuleOptions): Promise<DataSource>;
16
21
  setOptions(options: LogModuleOptions): void;
17
22
  addBreadcrumb(breadcrumb: any): void;
@@ -22,8 +27,9 @@ export declare class LogService implements LoggerService {
22
27
  debug(message: string, context?: ExecutionContextHost): void;
23
28
  verbose(message: string, context?: ExecutionContextHost): void;
24
29
  getAll(): Promise<any[]>;
25
- delete(id: string): Promise<import("typeorm").DeleteResult>;
30
+ delete(_id: string): Promise<import("typeorm").DeleteResult>;
26
31
  private smartInsert;
32
+ private getNewObjectId;
27
33
  private getConnection;
28
34
  private parseContext;
29
35
  private checkRecords;
@@ -19,15 +19,24 @@ const typeorm_1 = require("typeorm");
19
19
  const log_entity_1 = require("../entities/log.entity");
20
20
  const timers_1 = require("timers");
21
21
  const entity2table_1 = require("../utils/entity2table");
22
+ const ws_service_1 = require("./ws.service");
22
23
  let LogService = LogService_1 = class LogService {
23
- constructor(memoryDbService) {
24
+ constructor(memoryDbService, wsService) {
24
25
  this.memoryDbService = memoryDbService;
26
+ this.wsService = wsService;
25
27
  this.breadcrumbs = [];
26
28
  }
29
+ onApplicationShutdown() {
30
+ if (LogService_1.timer) {
31
+ clearInterval(LogService_1.timer);
32
+ }
33
+ }
27
34
  async connectDb(options) {
28
35
  var _a, _b, _c, _d, _e, _f, _g;
29
- LogService_1.Log = (0, log_entity_1.createLogEntity)(((_a = options.database) === null || _a === void 0 ? void 0 : _a.collection) || ((_b = options.database) === null || _b === void 0 ? void 0 : _b.table) || defaults_1.defaultTable, ((_c = options.database) === null || _c === void 0 ? void 0 : _c.type) || "mongodb");
30
- this.setOptions(options);
36
+ LogService_1.Log = (0, log_entity_1.createLogEntity)(((_a = options.database) === null || _a === void 0 ? void 0 : _a.collection) || ((_b = options.database) === null || _b === void 0 ? void 0 : _b.table) || defaults_1.defaultTable, ((_c = options.database) === null || _c === void 0 ? void 0 : _c.type) || 'mongodb');
37
+ if (!LogService_1.options) {
38
+ this.setOptions(options);
39
+ }
31
40
  const dataSourceOptions = {
32
41
  type: (_d = options.database) === null || _d === void 0 ? void 0 : _d.type,
33
42
  database: (_e = options.database) === null || _e === void 0 ? void 0 : _e.database,
@@ -37,8 +46,7 @@ let LogService = LogService_1 = class LogService {
37
46
  };
38
47
  LogService_1.connection = new typeorm_1.DataSource(dataSourceOptions);
39
48
  await LogService_1.connection.initialize();
40
- if (dataSourceOptions.type !== "mongodb") {
41
- // LogService.idName = "id";
49
+ if (dataSourceOptions.type !== 'mongodb') {
42
50
  const queryRunner = LogService_1.connection.createQueryRunner();
43
51
  try {
44
52
  await queryRunner.connect();
@@ -57,6 +65,21 @@ let LogService = LogService_1 = class LogService {
57
65
  }
58
66
  setOptions(options) {
59
67
  LogService_1.options = options;
68
+ if (options.websocket && !LogService_1.subscription) {
69
+ LogService_1.subscription = this.wsService.onMessage.subscribe(async (message) => {
70
+ switch (message.action) {
71
+ case 'getLogs':
72
+ this.wsService.sendMessage({
73
+ action: 'list',
74
+ data: await this.getAll(),
75
+ });
76
+ break;
77
+ case 'delete':
78
+ this.delete(message.data._id);
79
+ break;
80
+ }
81
+ });
82
+ }
60
83
  }
61
84
  addBreadcrumb(breadcrumb) {
62
85
  this.breadcrumbs.push(breadcrumb);
@@ -103,43 +126,62 @@ let LogService = LogService_1 = class LogService {
103
126
  async getAll() {
104
127
  return this.getConnection().find(LogService_1.Log, {
105
128
  select: [
106
- "_id",
107
- "type",
108
- "message",
109
- "count",
110
- "createdAt",
111
- "updatedAt",
112
- "context",
113
- "trace",
114
- "breadcrumbs",
129
+ '_id',
130
+ 'type',
131
+ 'message',
132
+ 'count',
133
+ 'createdAt',
134
+ 'updatedAt',
135
+ 'context',
136
+ 'trace',
137
+ 'breadcrumbs',
115
138
  ],
116
- order: { updatedAt: "DESC" },
139
+ order: { updatedAt: 'DESC' },
117
140
  });
118
141
  }
119
- async delete(id) {
120
- return this.getConnection().delete(LogService_1.Log, id);
142
+ async delete(_id) {
143
+ this.wsService.sendMessage({
144
+ action: 'delete',
145
+ data: { _id },
146
+ });
147
+ return this.getConnection().delete(LogService_1.Log, _id);
121
148
  }
122
149
  async smartInsert(data) {
123
150
  const currentDate = new Date();
124
151
  const connection = this.getConnection();
125
152
  // find the same log in DB
126
- const log = await connection.findOne(LogService_1.Log, {
127
- where: {
128
- type: data.type,
129
- message: data.message,
130
- },
131
- });
153
+ let log;
154
+ if (LogService_1.options.join) {
155
+ log = await connection.findOne(LogService_1.Log, {
156
+ where: {
157
+ type: data.type,
158
+ message: data.message,
159
+ },
160
+ });
161
+ }
132
162
  const context = data.context ? this.parseContext(data.context) : undefined;
133
163
  if (log) {
134
- return await connection.update(LogService_1.Log, log["_id"], {
164
+ const updatedLog = {
165
+ context,
166
+ trace: data.trace,
167
+ breadcrumbs: this.breadcrumbs,
168
+ count: log.count + 1,
169
+ updatedAt: currentDate,
170
+ };
171
+ this.wsService.sendMessage({
172
+ action: 'update',
173
+ data: { ...log, ...updatedLog },
174
+ });
175
+ await connection.update(LogService_1.Log, log['_id'], {
135
176
  context,
136
177
  trace: data.trace,
137
178
  breadcrumbs: this.breadcrumbs,
138
179
  count: log.count + 1,
139
180
  updatedAt: currentDate,
140
181
  });
182
+ return { ...log, ...updatedLog };
141
183
  }
142
- return await connection.insert(LogService_1.Log, {
184
+ const insertedLog = {
143
185
  type: data.type,
144
186
  message: data.message,
145
187
  context,
@@ -148,7 +190,21 @@ let LogService = LogService_1 = class LogService {
148
190
  count: 1,
149
191
  createdAt: currentDate,
150
192
  updatedAt: currentDate,
193
+ };
194
+ const res = await connection.insert(LogService_1.Log, insertedLog);
195
+ const _id = this.getNewObjectId(res);
196
+ this.wsService.sendMessage({
197
+ action: 'insert',
198
+ data: { _id, ...insertedLog },
151
199
  });
200
+ return { _id, ...insertedLog };
201
+ }
202
+ getNewObjectId(result) {
203
+ if (result.identifiers) {
204
+ return result.identifiers[0]._id;
205
+ }
206
+ console.log(result);
207
+ return result._id;
152
208
  }
153
209
  getConnection() {
154
210
  var _a;
@@ -184,9 +240,9 @@ let LogService = LogService_1 = class LogService {
184
240
  var _a, _b;
185
241
  if ((_a = LogService_1.options) === null || _a === void 0 ? void 0 : _a.maxSize) {
186
242
  const latest = await this.getConnection().find(LogService_1.Log, {
187
- order: { updatedAt: "DESC" },
243
+ order: { updatedAt: 'DESC' },
188
244
  take: (_b = LogService_1.options) === null || _b === void 0 ? void 0 : _b.maxSize,
189
- select: ["_id"],
245
+ select: ['_id'],
190
246
  });
191
247
  const latestIds = latest.map((item) => item.id);
192
248
  await LogService_1.connection
@@ -194,15 +250,16 @@ let LogService = LogService_1 = class LogService {
194
250
  .createQueryBuilder()
195
251
  .delete()
196
252
  .from(LogService_1.Log)
197
- .where("_id NOT IN (:...ids)", { ids: latestIds })
253
+ .where('_id NOT IN (:...ids)', { ids: latestIds })
198
254
  .execute();
199
255
  }
200
256
  }
201
257
  };
202
258
  exports.LogService = LogService;
203
- LogService.Log = (0, log_entity_1.createLogEntity)(defaults_1.defaultTable, "memory");
259
+ LogService.Log = (0, log_entity_1.createLogEntity)(defaults_1.defaultTable, 'memory');
204
260
  exports.LogService = LogService = LogService_1 = __decorate([
205
261
  (0, common_1.Injectable)({ scope: common_1.Scope.TRANSIENT }),
206
- __metadata("design:paramtypes", [memory_db_service_1.MemoryDbService])
262
+ __metadata("design:paramtypes", [memory_db_service_1.MemoryDbService,
263
+ ws_service_1.WsService])
207
264
  ], LogService);
208
265
  //# sourceMappingURL=log.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"log.service.js","sourceRoot":"","sources":["../../src/services/log.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"log.service.js","sourceRoot":"","sources":["../../src/services/log.service.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { EntitySchema } from "typeorm";
1
+ import { EntitySchema } from 'typeorm';
2
2
  export declare class MemoryDbService {
3
3
  private db;
4
4
  constructor();
@@ -26,8 +26,8 @@ let MemoryDbService = class MemoryDbService {
26
26
  insert(entity, data) {
27
27
  const table = this.getTableName(entity);
28
28
  // generate new random _id
29
- const randomData = (0, crypto_1.randomBytes)(24).toString("hex");
30
- const _id = (0, crypto_1.createHash)("sha256").update(randomData).digest("hex");
29
+ const randomData = (0, crypto_1.randomBytes)(24).toString('hex');
30
+ const _id = (0, crypto_1.createHash)('sha256').update(randomData).digest('hex');
31
31
  this.db[table].push({
32
32
  ...data,
33
33
  _id, // unique index
@@ -37,7 +37,7 @@ let MemoryDbService = class MemoryDbService {
37
37
  async update(entity, condition, data) {
38
38
  const table = this.getTableName(entity);
39
39
  let index = null;
40
- if (typeof condition === "string") {
40
+ if (typeof condition === 'string') {
41
41
  index = this.findIndex(entity, { where: { _id: condition } });
42
42
  }
43
43
  if (condition === null || condition === void 0 ? void 0 : condition.where) {
@@ -94,8 +94,8 @@ let MemoryDbService = class MemoryDbService {
94
94
  // handle null or non-object values
95
95
  if (obj1 == null ||
96
96
  obj2 == null ||
97
- typeof obj1 !== "object" ||
98
- typeof obj2 !== "object") {
97
+ typeof obj1 !== 'object' ||
98
+ typeof obj2 !== 'object') {
99
99
  return false;
100
100
  }
101
101
  // compare keys length
@@ -0,0 +1,18 @@
1
+ import { LogModuleOptions } from '../types';
2
+ import { Subject } from 'rxjs';
3
+ export declare class WsService {
4
+ onMessage: Subject<any>;
5
+ private ws;
6
+ private connected;
7
+ private connectionTimeout;
8
+ private options;
9
+ private key;
10
+ setupConnection(options: LogModuleOptions['websocket'], key?: string): void;
11
+ sendMessage(message: any): void;
12
+ private handleError;
13
+ private closeConnection;
14
+ private ping;
15
+ private handleMessage;
16
+ private getServerUrl;
17
+ private handleOpenConnection;
18
+ }