@riocrypto/common-server 1.0.1896 → 1.0.1897

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,13 +1,11 @@
1
1
  import { Logger } from "winston";
2
2
  declare class LoggerService {
3
- private static instance;
4
3
  private logger;
5
- private constructor();
4
+ constructor();
6
5
  private maskValue;
7
6
  private maskSensitiveData;
8
7
  private requestMethodFilter;
9
8
  getLogger(): Logger;
10
- static getInstance(): LoggerService;
11
9
  initLogger(): Promise<void>;
12
10
  }
13
11
  declare const loggerService: LoggerService;
@@ -1,27 +1,4 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
2
  var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
3
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
4
  return new (P || (P = Promise))(function (resolve, reject) {
@@ -31,25 +8,13 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
31
8
  step((generator = generator.apply(thisArg, _arguments || [])).next());
32
9
  });
33
10
  };
34
- var __rest = (this && this.__rest) || function (s, e) {
35
- var t = {};
36
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
37
- t[p] = s[p];
38
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
39
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
40
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
41
- t[p[i]] = s[p[i]];
42
- }
43
- return t;
44
- };
45
11
  Object.defineProperty(exports, "__esModule", { value: true });
46
12
  const winston_1 = require("winston");
47
13
  class LoggerService {
48
14
  constructor() {
49
15
  this.maskSensitiveData = (0, winston_1.format)((info) => {
50
- var _a, _b, _c, _d, _e, _f;
51
16
  // Mask sensitive headers
52
- if ((_b = (_a = info.meta) === null || _a === void 0 ? void 0 : _a.req) === null || _b === void 0 ? void 0 : _b.headers) {
17
+ if (info.meta && info.meta.req && info.meta.req.headers) {
53
18
  const headers = info.meta.req.headers;
54
19
  const headerKeysToMask = [
55
20
  "x-api-key",
@@ -58,7 +23,7 @@ class LoggerService {
58
23
  ];
59
24
  headerKeysToMask.forEach((key) => {
60
25
  if (headers[key]) {
61
- headers[key] = this.maskValue(headers[key]);
26
+ headers[key] = this.maskValue(headers[key]); // Use maskValue function
62
27
  }
63
28
  });
64
29
  // Mask cookies specifically
@@ -67,23 +32,20 @@ class LoggerService {
67
32
  .split("; ")
68
33
  .map((cookie) => {
69
34
  const [key, value] = cookie.split("=");
70
- const sensitiveCookies = [
71
- "accessToken",
72
- "adminAccessToken",
73
- "refreshToken",
74
- "adminRefreshToken",
75
- "phoneVerifiedJWT",
76
- ];
77
- if (sensitiveCookies.includes(key)) {
78
- return `${key}=${this.maskValue(value)}`;
35
+ if (key === "accessToken" ||
36
+ key === "adminAccessToken" ||
37
+ key === "refreshToken" ||
38
+ key === "adminRefreshToken" ||
39
+ key === "phoneVerifiedJWT") {
40
+ return `${key}=${this.maskValue(value)}`; // Mask the sensitive cookie
79
41
  }
80
- return cookie;
42
+ return cookie; // Return unmodified if not sensitive
81
43
  })
82
44
  .join("; ");
83
45
  }
84
46
  }
85
47
  // Mask sensitive request body fields
86
- if ((_d = (_c = info.meta) === null || _c === void 0 ? void 0 : _c.req) === null || _d === void 0 ? void 0 : _d.body) {
48
+ if (info.meta && info.meta.req && info.meta.req.body) {
87
49
  const requestBodyFieldsToMask = [
88
50
  "password",
89
51
  "newPassword",
@@ -93,29 +55,26 @@ class LoggerService {
93
55
  ];
94
56
  requestBodyFieldsToMask.forEach((field) => {
95
57
  if (info.meta.req.body.hasOwnProperty(field)) {
96
- info.meta.req.body[field] = this.maskValue(info.meta.req.body[field]);
58
+ info.meta.req.body[field] = this.maskValue(info.meta.req.body[field]); // Use maskValue function
97
59
  }
98
60
  });
99
61
  }
100
62
  // Mask sensitive response body fields
101
- if ((_f = (_e = info.meta) === null || _e === void 0 ? void 0 : _e.res) === null || _f === void 0 ? void 0 : _f.body) {
102
- const responseBodyFieldsToMask = ["secret", "sensitiveValue"];
63
+ if (info.meta && info.meta.res && info.meta.res.body) {
64
+ const responseBodyFieldsToMask = ["secret", "value"];
103
65
  responseBodyFieldsToMask.forEach((field) => {
104
66
  if (info.meta.res.body.hasOwnProperty(field)) {
105
- info.meta.res.body[field] = this.maskValue(info.meta.res.body[field]);
67
+ info.meta.res.body[field] = this.maskValue(info.meta.res.body[field]); // Use maskValue function
106
68
  }
107
69
  });
108
70
  }
109
71
  return info;
110
72
  });
111
73
  this.requestMethodFilter = (0, winston_1.format)((info) => {
112
- var _a, _b;
113
- const allowedMethods = ((_a = process.env.LOG_METHODS) === null || _a === void 0 ? void 0 : _a.split(",")) || [
114
- "POST",
115
- "PATCH",
116
- "DELETE",
117
- ];
118
- if (((_b = info.meta) === null || _b === void 0 ? void 0 : _b.req) && allowedMethods.includes(info.meta.req.method)) {
74
+ const allowedMethods = ["POST", "PATCH", "DELETE"];
75
+ if (info.meta &&
76
+ info.meta.req &&
77
+ allowedMethods.includes(info.meta.req.method)) {
119
78
  return info;
120
79
  }
121
80
  return false; // Filter out logs for other methods
@@ -129,43 +88,27 @@ class LoggerService {
129
88
  }
130
89
  getLogger() {
131
90
  if (!this.logger) {
132
- throw new Error("Logger has not been initialized. Please call initLogger() first.");
91
+ return null;
133
92
  }
134
93
  return this.logger;
135
94
  }
136
- static getInstance() {
137
- if (!LoggerService.instance) {
138
- LoggerService.instance = new LoggerService();
139
- }
140
- return LoggerService.instance;
141
- }
142
95
  initLogger() {
143
96
  return __awaiter(this, void 0, void 0, function* () {
144
- try {
145
- const logLevel = "info";
146
- const HyperDX = yield Promise.resolve().then(() => __importStar(require("@hyperdx/node-opentelemetry")));
147
- this.logger = (0, winston_1.createLogger)({
148
- level: logLevel,
149
- format: winston_1.format.combine(winston_1.format.colorize(), winston_1.format.timestamp(), this.maskSensitiveData(), this.requestMethodFilter(), winston_1.format.printf((_a) => {
150
- var { timestamp, level, message } = _a, meta = __rest(_a, ["timestamp", "level", "message"]);
151
- return `${timestamp} [${level}]: ${message} ${JSON.stringify(meta)}`;
152
- })),
153
- transports: [
154
- new winston_1.transports.Console(),
155
- // @ts-ignore
156
- HyperDX.getWinstonTransport("info", {
157
- // Send logs info and above
158
- detectResources: true,
159
- }),
160
- ],
161
- });
162
- }
163
- catch (error) {
164
- console.error("Failed to initialize logger:", error);
165
- // Handle the error as needed
166
- }
97
+ const logLevel = "info";
98
+ const transportsArray = [new winston_1.transports.Console()];
99
+ const { getWinsonTransport } = yield require("@hyperdx/node-opentelemetry");
100
+ transportsArray.push(getWinsonTransport("info", {
101
+ apiKey: process.env.HYPERDX_API_KEY,
102
+ service: process.env.OTEL_SERVICE_NAME,
103
+ }));
104
+ this.logger = (0, winston_1.createLogger)({
105
+ level: logLevel,
106
+ format: winston_1.format.combine(winston_1.format.timestamp(), this.maskSensitiveData(), this.requestMethodFilter(), // Add the request method filter
107
+ winston_1.format.json(), winston_1.format.prettyPrint()),
108
+ transports: transportsArray,
109
+ });
167
110
  });
168
111
  }
169
112
  }
170
- const loggerService = LoggerService.getInstance();
113
+ const loggerService = new LoggerService();
171
114
  exports.default = loggerService;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riocrypto/common-server",
3
- "version": "1.0.1896",
3
+ "version": "1.0.1897",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",