@fabbahiense/pulsar-pino-transport 0.1.1 → 0.2.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.
package/dist/index.cjs CHANGED
@@ -34,6 +34,45 @@ __export(index_exports, {
34
34
  default: () => index_default
35
35
  });
36
36
  module.exports = __toCommonJS(index_exports);
37
+ var GENERIC_HTTP_MSGS = /* @__PURE__ */ new Set([
38
+ "request completed",
39
+ "request errored",
40
+ "request aborted",
41
+ "response sent",
42
+ "incoming request",
43
+ "http request"
44
+ ]);
45
+ function pickFirst(obj, keys) {
46
+ for (const k of keys) {
47
+ if (obj[k] !== void 0 && obj[k] !== null) return obj[k];
48
+ }
49
+ return void 0;
50
+ }
51
+ function isObj(v) {
52
+ return typeof v === "object" && v !== null && !Array.isArray(v);
53
+ }
54
+ function extractPayloads(obj) {
55
+ const out = {};
56
+ const req = obj.req;
57
+ if (isObj(req)) {
58
+ const body = pickFirst(req, ["body", "requestBody", "reqBody", "payload", "input"]);
59
+ if (body !== void 0) out.requestBody = body;
60
+ const headers = pickFirst(req, ["headers", "requestHeaders", "reqHeaders"]);
61
+ if (isObj(headers)) out.requestHeaders = headers;
62
+ const query = pickFirst(req, ["query", "queryParams", "qs"]);
63
+ if (isObj(query)) out.query = query;
64
+ const params = pickFirst(req, ["params", "pathParams", "routeParams"]);
65
+ if (isObj(params)) out.params = params;
66
+ }
67
+ const res = obj.res;
68
+ if (isObj(res)) {
69
+ const body = pickFirst(res, ["body", "responseBody", "resBody", "response", "output", "result", "data"]);
70
+ if (body !== void 0) out.responseBody = body;
71
+ const headers = pickFirst(res, ["headers", "responseHeaders", "resHeaders"]);
72
+ if (isObj(headers)) out.responseHeaders = headers;
73
+ }
74
+ return out;
75
+ }
37
76
  var LEVEL_MAP = {
38
77
  10: "trace",
39
78
  20: "debug",
@@ -115,19 +154,31 @@ async function index_default(options) {
115
154
  }
116
155
  return build(async function(stream) {
117
156
  for await (const obj of stream) {
157
+ const method = obj.req?.method || void 0;
158
+ const url2 = obj.req?.url || void 0;
159
+ const statusCode = obj.res?.statusCode || void 0;
160
+ let msg = obj.msg ?? "";
161
+ const lower = msg.toLowerCase().trim();
162
+ if (GENERIC_HTTP_MSGS.has(lower) && method && url2) {
163
+ msg = `${method.toUpperCase()} ${url2}${statusCode ? ` ${statusCode}` : ""}`;
164
+ }
165
+ const extracted = extractPayloads(obj);
166
+ const baseMeta = isObj(obj.metadata) ? obj.metadata : {};
167
+ const merged = { ...baseMeta, ...extracted };
168
+ const metadata = Object.keys(merged).length > 0 ? merged : null;
118
169
  buffer.push({
119
170
  level: LEVEL_MAP[obj.level] || "info",
120
- msg: obj.msg,
171
+ msg,
121
172
  timestamp: parseTimestamp(obj.time),
122
173
  serviceName: resolvedSource,
123
174
  traceId: obj.traceId || obj.trace_id || obj.requestId || obj.req?.id || null,
124
- method: obj.req?.method,
125
- url: obj.req?.url,
126
- statusCode: obj.res?.statusCode,
175
+ method,
176
+ url: url2,
177
+ statusCode,
127
178
  responseTime: obj.responseTime,
128
179
  errorMessage: obj.err?.message,
129
180
  errorStack: obj.err?.stack,
130
- metadata: obj.metadata || null
181
+ metadata
131
182
  });
132
183
  if (buffer.length >= batchSize) {
133
184
  await flush();
package/dist/index.js CHANGED
@@ -1,4 +1,43 @@
1
1
  // src/index.ts
2
+ var GENERIC_HTTP_MSGS = /* @__PURE__ */ new Set([
3
+ "request completed",
4
+ "request errored",
5
+ "request aborted",
6
+ "response sent",
7
+ "incoming request",
8
+ "http request"
9
+ ]);
10
+ function pickFirst(obj, keys) {
11
+ for (const k of keys) {
12
+ if (obj[k] !== void 0 && obj[k] !== null) return obj[k];
13
+ }
14
+ return void 0;
15
+ }
16
+ function isObj(v) {
17
+ return typeof v === "object" && v !== null && !Array.isArray(v);
18
+ }
19
+ function extractPayloads(obj) {
20
+ const out = {};
21
+ const req = obj.req;
22
+ if (isObj(req)) {
23
+ const body = pickFirst(req, ["body", "requestBody", "reqBody", "payload", "input"]);
24
+ if (body !== void 0) out.requestBody = body;
25
+ const headers = pickFirst(req, ["headers", "requestHeaders", "reqHeaders"]);
26
+ if (isObj(headers)) out.requestHeaders = headers;
27
+ const query = pickFirst(req, ["query", "queryParams", "qs"]);
28
+ if (isObj(query)) out.query = query;
29
+ const params = pickFirst(req, ["params", "pathParams", "routeParams"]);
30
+ if (isObj(params)) out.params = params;
31
+ }
32
+ const res = obj.res;
33
+ if (isObj(res)) {
34
+ const body = pickFirst(res, ["body", "responseBody", "resBody", "response", "output", "result", "data"]);
35
+ if (body !== void 0) out.responseBody = body;
36
+ const headers = pickFirst(res, ["headers", "responseHeaders", "resHeaders"]);
37
+ if (isObj(headers)) out.responseHeaders = headers;
38
+ }
39
+ return out;
40
+ }
2
41
  var LEVEL_MAP = {
3
42
  10: "trace",
4
43
  20: "debug",
@@ -80,19 +119,31 @@ async function index_default(options) {
80
119
  }
81
120
  return build(async function(stream) {
82
121
  for await (const obj of stream) {
122
+ const method = obj.req?.method || void 0;
123
+ const url2 = obj.req?.url || void 0;
124
+ const statusCode = obj.res?.statusCode || void 0;
125
+ let msg = obj.msg ?? "";
126
+ const lower = msg.toLowerCase().trim();
127
+ if (GENERIC_HTTP_MSGS.has(lower) && method && url2) {
128
+ msg = `${method.toUpperCase()} ${url2}${statusCode ? ` ${statusCode}` : ""}`;
129
+ }
130
+ const extracted = extractPayloads(obj);
131
+ const baseMeta = isObj(obj.metadata) ? obj.metadata : {};
132
+ const merged = { ...baseMeta, ...extracted };
133
+ const metadata = Object.keys(merged).length > 0 ? merged : null;
83
134
  buffer.push({
84
135
  level: LEVEL_MAP[obj.level] || "info",
85
- msg: obj.msg,
136
+ msg,
86
137
  timestamp: parseTimestamp(obj.time),
87
138
  serviceName: resolvedSource,
88
139
  traceId: obj.traceId || obj.trace_id || obj.requestId || obj.req?.id || null,
89
- method: obj.req?.method,
90
- url: obj.req?.url,
91
- statusCode: obj.res?.statusCode,
140
+ method,
141
+ url: url2,
142
+ statusCode,
92
143
  responseTime: obj.responseTime,
93
144
  errorMessage: obj.err?.message,
94
145
  errorStack: obj.err?.stack,
95
- metadata: obj.metadata || null
146
+ metadata
96
147
  });
97
148
  if (buffer.length >= batchSize) {
98
149
  await flush();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fabbahiense/pulsar-pino-transport",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "Pino transport for Pulsar observability platform",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",