@viplance/nestjs-logger 0.4.0 → 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 (40) hide show
  1. package/README.md +23 -3
  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 +7 -7
  11. package/dist/services/log.service.d.ts +8 -8
  12. package/dist/services/log.service.js +32 -29
  13. package/dist/services/log.service.js.map +1 -1
  14. package/dist/services/memory-db.service.d.ts +1 -1
  15. package/dist/services/memory-db.service.js +5 -5
  16. package/dist/services/ws.service.d.ts +3 -3
  17. package/dist/services/ws.service.js +14 -14
  18. package/dist/types/index.d.ts +3 -3
  19. package/dist/types/options.type.d.ts +1 -0
  20. package/dist/utils/entity2table.d.ts +1 -1
  21. package/dist/utils/entity2table.js +6 -6
  22. package/package.json +4 -1
  23. package/public/scripts/common.js +28 -28
  24. package/public/scripts/details-popup.js +10 -10
  25. package/public/scripts/json-viewer.js +4 -4
  26. package/src/defaults.ts +1 -1
  27. package/src/entities/log.entity.ts +3 -3
  28. package/src/guards/access.guard.ts +5 -5
  29. package/src/index.ts +4 -4
  30. package/src/interceptors/log.interceptor.ts +5 -5
  31. package/src/log.module.ts +18 -18
  32. package/src/services/log.service.ts +44 -40
  33. package/src/services/memory-db.service.ts +9 -9
  34. package/src/services/ws.d.ts +1 -1
  35. package/src/services/ws.service.ts +19 -19
  36. package/src/types/index.ts +3 -3
  37. package/src/types/log.type.ts +5 -5
  38. package/src/types/options.type.ts +1 -0
  39. package/src/utils/entity2table.ts +8 -8
  40. package/public/json.html +0 -0
package/README.md CHANGED
@@ -67,16 +67,36 @@ Enable a WebSocket connection to receive the logs in real time.<br />
67
67
 
68
68
  ### Additional information
69
69
 
70
- - `path`, `key` and `database` properties are optional.
71
- - 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
72
72
  - The log API could be available at `your_application_url`/`path`/api?key=`key`
73
73
  - By default the logs will be stored in memory and deleted when the application stops.<br />
74
74
  <br />
75
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
+
76
96
  ### The LogService methods:
77
97
  - log(message: string)
78
98
  - error(message: string)
79
99
  - warn(message: string)
80
100
  - debug(message: string)
81
101
  - verbose(message: string)
82
- - 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
  }
@@ -31,12 +31,12 @@ let LogModule = class LogModule {
31
31
  }
32
32
  app.useGlobalInterceptors(new log_interceptor_1.LogInterceptor(logService)); // intercept all errors
33
33
  if (options === null || options === void 0 ? void 0 : options.path) {
34
- app.useStaticAssets((0, node_path_1.join)(__dirname, "..", "public"), {
34
+ app.useStaticAssets((0, node_path_1.join)(__dirname, '..', 'public'), {
35
35
  prefix: options.path,
36
36
  });
37
37
  const httpAdapter = app.getHttpAdapter();
38
38
  // frontend settings endpoint
39
- httpAdapter.get((0, node_path_1.join)(options.path, "settings"), async (req, res) => {
39
+ httpAdapter.get((0, node_path_1.join)(options.path, 'settings'), async (req, res) => {
40
40
  var _a, _b, _c, _d;
41
41
  logAccessGuard.canActivate(req);
42
42
  const result = {};
@@ -44,22 +44,22 @@ let LogModule = class LogModule {
44
44
  result.websocket = {
45
45
  namespace: (_a = options.websocket) === null || _a === void 0 ? void 0 : _a.namespace,
46
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]),
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
48
  };
49
49
  }
50
50
  res.json(result);
51
51
  });
52
52
  // get all logs endpoint
53
- 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) => {
54
54
  logAccessGuard.canActivate(req);
55
55
  res.json(await logService.getAll());
56
56
  });
57
57
  // delete log endpoint
58
- 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) => {
59
59
  logAccessGuard.canActivate(req);
60
- const params = node_querystring_1.default.parse(req.url.split("?")[1]);
60
+ const params = node_querystring_1.default.parse(req.url.split('?')[1]);
61
61
  if (!params.id) {
62
- throw new common_1.HttpException("id is required", 400);
62
+ throw new common_1.HttpException('id is required', 400);
63
63
  }
64
64
  res.json(await logService.delete(params.id.toString()));
65
65
  });
@@ -1,11 +1,11 @@
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";
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
9
  export declare class LogService implements LoggerService, OnApplicationShutdown {
10
10
  private readonly memoryDbService;
11
11
  private readonly wsService;
@@ -33,7 +33,7 @@ let LogService = LogService_1 = class LogService {
33
33
  }
34
34
  async connectDb(options) {
35
35
  var _a, _b, _c, _d, _e, _f, _g;
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");
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
37
  if (!LogService_1.options) {
38
38
  this.setOptions(options);
39
39
  }
@@ -46,7 +46,7 @@ let LogService = LogService_1 = class LogService {
46
46
  };
47
47
  LogService_1.connection = new typeorm_1.DataSource(dataSourceOptions);
48
48
  await LogService_1.connection.initialize();
49
- if (dataSourceOptions.type !== "mongodb") {
49
+ if (dataSourceOptions.type !== 'mongodb') {
50
50
  const queryRunner = LogService_1.connection.createQueryRunner();
51
51
  try {
52
52
  await queryRunner.connect();
@@ -68,13 +68,13 @@ let LogService = LogService_1 = class LogService {
68
68
  if (options.websocket && !LogService_1.subscription) {
69
69
  LogService_1.subscription = this.wsService.onMessage.subscribe(async (message) => {
70
70
  switch (message.action) {
71
- case "getLogs":
71
+ case 'getLogs':
72
72
  this.wsService.sendMessage({
73
- action: "list",
73
+ action: 'list',
74
74
  data: await this.getAll(),
75
75
  });
76
76
  break;
77
- case "delete":
77
+ case 'delete':
78
78
  this.delete(message.data._id);
79
79
  break;
80
80
  }
@@ -126,22 +126,22 @@ let LogService = LogService_1 = class LogService {
126
126
  async getAll() {
127
127
  return this.getConnection().find(LogService_1.Log, {
128
128
  select: [
129
- "_id",
130
- "type",
131
- "message",
132
- "count",
133
- "createdAt",
134
- "updatedAt",
135
- "context",
136
- "trace",
137
- "breadcrumbs",
129
+ '_id',
130
+ 'type',
131
+ 'message',
132
+ 'count',
133
+ 'createdAt',
134
+ 'updatedAt',
135
+ 'context',
136
+ 'trace',
137
+ 'breadcrumbs',
138
138
  ],
139
- order: { updatedAt: "DESC" },
139
+ order: { updatedAt: 'DESC' },
140
140
  });
141
141
  }
142
142
  async delete(_id) {
143
143
  this.wsService.sendMessage({
144
- action: "delete",
144
+ action: 'delete',
145
145
  data: { _id },
146
146
  });
147
147
  return this.getConnection().delete(LogService_1.Log, _id);
@@ -150,12 +150,15 @@ let LogService = LogService_1 = class LogService {
150
150
  const currentDate = new Date();
151
151
  const connection = this.getConnection();
152
152
  // find the same log in DB
153
- const log = await connection.findOne(LogService_1.Log, {
154
- where: {
155
- type: data.type,
156
- message: data.message,
157
- },
158
- });
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
+ }
159
162
  const context = data.context ? this.parseContext(data.context) : undefined;
160
163
  if (log) {
161
164
  const updatedLog = {
@@ -166,10 +169,10 @@ let LogService = LogService_1 = class LogService {
166
169
  updatedAt: currentDate,
167
170
  };
168
171
  this.wsService.sendMessage({
169
- action: "update",
172
+ action: 'update',
170
173
  data: { ...log, ...updatedLog },
171
174
  });
172
- await connection.update(LogService_1.Log, log["_id"], {
175
+ await connection.update(LogService_1.Log, log['_id'], {
173
176
  context,
174
177
  trace: data.trace,
175
178
  breadcrumbs: this.breadcrumbs,
@@ -191,7 +194,7 @@ let LogService = LogService_1 = class LogService {
191
194
  const res = await connection.insert(LogService_1.Log, insertedLog);
192
195
  const _id = this.getNewObjectId(res);
193
196
  this.wsService.sendMessage({
194
- action: "insert",
197
+ action: 'insert',
195
198
  data: { _id, ...insertedLog },
196
199
  });
197
200
  return { _id, ...insertedLog };
@@ -237,9 +240,9 @@ let LogService = LogService_1 = class LogService {
237
240
  var _a, _b;
238
241
  if ((_a = LogService_1.options) === null || _a === void 0 ? void 0 : _a.maxSize) {
239
242
  const latest = await this.getConnection().find(LogService_1.Log, {
240
- order: { updatedAt: "DESC" },
243
+ order: { updatedAt: 'DESC' },
241
244
  take: (_b = LogService_1.options) === null || _b === void 0 ? void 0 : _b.maxSize,
242
- select: ["_id"],
245
+ select: ['_id'],
243
246
  });
244
247
  const latestIds = latest.map((item) => item.id);
245
248
  await LogService_1.connection
@@ -247,13 +250,13 @@ let LogService = LogService_1 = class LogService {
247
250
  .createQueryBuilder()
248
251
  .delete()
249
252
  .from(LogService_1.Log)
250
- .where("_id NOT IN (:...ids)", { ids: latestIds })
253
+ .where('_id NOT IN (:...ids)', { ids: latestIds })
251
254
  .execute();
252
255
  }
253
256
  }
254
257
  };
255
258
  exports.LogService = LogService;
256
- LogService.Log = (0, log_entity_1.createLogEntity)(defaults_1.defaultTable, "memory");
259
+ LogService.Log = (0, log_entity_1.createLogEntity)(defaults_1.defaultTable, 'memory');
257
260
  exports.LogService = LogService = LogService_1 = __decorate([
258
261
  (0, common_1.Injectable)({ scope: common_1.Scope.TRANSIENT }),
259
262
  __metadata("design:paramtypes", [memory_db_service_1.MemoryDbService,
@@ -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
@@ -1,5 +1,5 @@
1
- import { LogModuleOptions } from "../types";
2
- import { Subject } from "rxjs";
1
+ import { LogModuleOptions } from '../types';
2
+ import { Subject } from 'rxjs';
3
3
  export declare class WsService {
4
4
  onMessage: Subject<any>;
5
5
  private ws;
@@ -7,7 +7,7 @@ export declare class WsService {
7
7
  private connectionTimeout;
8
8
  private options;
9
9
  private key;
10
- setupConnection(options: LogModuleOptions["websocket"], key?: string): void;
10
+ setupConnection(options: LogModuleOptions['websocket'], key?: string): void;
11
11
  sendMessage(message: any): void;
12
12
  private handleError;
13
13
  private closeConnection;
@@ -18,9 +18,9 @@ let WsService = class WsService {
18
18
  this.connectionTimeout = 500;
19
19
  this.options = {
20
20
  port: 8080,
21
- host: "localhost",
21
+ host: 'localhost',
22
22
  };
23
- this.key = "";
23
+ this.key = '';
24
24
  this.handleError = () => {
25
25
  const serverUrl = this.getServerUrl();
26
26
  console.error(`Server ${serverUrl} is not available.`);
@@ -29,13 +29,13 @@ let WsService = class WsService {
29
29
  this.closeConnection = (connection) => {
30
30
  clearTimeout(connection.pingTimeout);
31
31
  if (this.connected) {
32
- console.log("Connection has been closed by server.");
32
+ console.log('Connection has been closed by server.');
33
33
  this.connected = false;
34
34
  this.handleError();
35
35
  }
36
36
  };
37
37
  this.ping = (connection) => {
38
- console.log("Ping remote server.");
38
+ console.log('Ping remote server.');
39
39
  clearTimeout(connection.pingTimeout);
40
40
  connection.pingTimeout = setTimeout(() => {
41
41
  connection.terminate();
@@ -44,8 +44,8 @@ let WsService = class WsService {
44
44
  this.handleMessage = (message) => {
45
45
  try {
46
46
  const data = JSON.parse((message.data || message).toString());
47
- if (this.key !== "" && data.key !== this.key) {
48
- throw new Error("WebSocket unauthorized");
47
+ if (this.key !== '' && data.key !== this.key) {
48
+ throw new Error('WebSocket unauthorized');
49
49
  }
50
50
  if (this.options)
51
51
  if (data.action) {
@@ -58,7 +58,7 @@ let WsService = class WsService {
58
58
  };
59
59
  this.getServerUrl = () => {
60
60
  var _a, _b, _c;
61
- return `${((_a = this.options) === null || _a === void 0 ? void 0 : _a.secure) ? "wss" : "ws"}://${(_b = this.options) === null || _b === void 0 ? void 0 : _b.host}:${(_c = this.options) === null || _c === void 0 ? void 0 : _c.port}`;
61
+ return `${((_a = this.options) === null || _a === void 0 ? void 0 : _a.secure) ? 'wss' : 'ws'}://${(_b = this.options) === null || _b === void 0 ? void 0 : _b.host}:${(_c = this.options) === null || _c === void 0 ? void 0 : _c.port}`;
62
62
  };
63
63
  this.handleOpenConnection = async () => {
64
64
  this.connected = true;
@@ -66,7 +66,7 @@ let WsService = class WsService {
66
66
  console.log(`${serverUrl} has been connected.`);
67
67
  };
68
68
  }
69
- setupConnection(options, key = "") {
69
+ setupConnection(options, key = '') {
70
70
  var _a;
71
71
  this.options = {
72
72
  ...this.options,
@@ -84,12 +84,12 @@ let WsService = class WsService {
84
84
  port: (_a = this.options) === null || _a === void 0 ? void 0 : _a.port,
85
85
  });
86
86
  console.log(`Logs WebSocket server is listening on port ${this.options.port}`);
87
- wsServer.on("error", this.handleError);
88
- wsServer.on("open", () => this.handleOpenConnection());
89
- wsServer.on("ping", () => this.ping(this.ws));
90
- wsServer.on("close", () => this.closeConnection(this.ws));
91
- wsServer.on("message", this.handleMessage);
92
- wsServer.on("connection", (connection) => {
87
+ wsServer.on('error', this.handleError);
88
+ wsServer.on('open', () => this.handleOpenConnection());
89
+ wsServer.on('ping', () => this.ping(this.ws));
90
+ wsServer.on('close', () => this.closeConnection(this.ws));
91
+ wsServer.on('message', this.handleMessage);
92
+ wsServer.on('connection', (connection) => {
93
93
  this.ws = connection;
94
94
  connection.onmessage = this.handleMessage;
95
95
  });
@@ -1,3 +1,3 @@
1
- export * from "./context.type";
2
- export * from "./log.type";
3
- export * from "./options.type";
1
+ export * from './context.type';
2
+ export * from './log.type';
3
+ export * from './options.type';
@@ -2,6 +2,7 @@ import { DataSourceOptions } from "typeorm";
2
2
  export type LogModuleOptions = {
3
3
  path?: string;
4
4
  key?: string;
5
+ join?: boolean;
5
6
  maxRecords?: number;
6
7
  maxAge?: number;
7
8
  maxSize?: number;
@@ -1,2 +1,2 @@
1
- import { EntitySchema, Table } from "typeorm";
1
+ import { EntitySchema, Table } from 'typeorm';
2
2
  export declare function entity2table(entity: EntitySchema): Table;
@@ -11,7 +11,7 @@ function entity2table(entity) {
11
11
  type: resolveColumnType(col === null || col === void 0 ? void 0 : col.type),
12
12
  isPrimary: !!(col === null || col === void 0 ? void 0 : col.primary),
13
13
  isGenerated: !!(col === null || col === void 0 ? void 0 : col.generated),
14
- generationStrategy: (col === null || col === void 0 ? void 0 : col.generated) ? "increment" : undefined,
14
+ generationStrategy: (col === null || col === void 0 ? void 0 : col.generated) ? 'increment' : undefined,
15
15
  isUnique: !!(col === null || col === void 0 ? void 0 : col.unique),
16
16
  isNullable: !!(col === null || col === void 0 ? void 0 : col.nullable),
17
17
  default: col === null || col === void 0 ? void 0 : col.default,
@@ -21,15 +21,15 @@ function entity2table(entity) {
21
21
  function resolveColumnType(type) {
22
22
  switch (type) {
23
23
  case String:
24
- return "text";
24
+ return 'text';
25
25
  case Number:
26
- return "int";
26
+ return 'int';
27
27
  case Date:
28
- return "timestamp";
28
+ return 'timestamp';
29
29
  case Boolean:
30
- return "boolean";
30
+ return 'boolean';
31
31
  default:
32
- return "text";
32
+ return 'text';
33
33
  }
34
34
  }
35
35
  //# sourceMappingURL=entity2table.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@viplance/nestjs-logger",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "NestJS internal logging system",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -21,6 +21,9 @@
21
21
  "mariadb",
22
22
  "sqlite",
23
23
  "memory",
24
+ "websocket",
25
+ "realtime",
26
+ "UI",
24
27
  "free"
25
28
  ],
26
29
  "author": "Dzmitry Sharko",