@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.
- package/build/services/logger.d.ts +1 -3
- package/build/services/logger.js +33 -90
- package/package.json +1 -1
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
import { Logger } from "winston";
|
|
2
2
|
declare class LoggerService {
|
|
3
|
-
private static instance;
|
|
4
3
|
private logger;
|
|
5
|
-
|
|
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;
|
package/build/services/logger.js
CHANGED
|
@@ -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 (
|
|
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
|
-
|
|
71
|
-
"
|
|
72
|
-
"
|
|
73
|
-
"
|
|
74
|
-
"
|
|
75
|
-
|
|
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 (
|
|
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 (
|
|
102
|
-
const responseBodyFieldsToMask = ["secret", "
|
|
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
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
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
|
-
|
|
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
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
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
|
|
113
|
+
const loggerService = new LoggerService();
|
|
171
114
|
exports.default = loggerService;
|