vona-module-a-logger 5.1.16 → 5.1.18

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 +1 @@
1
- {"version":3,"file":"aopMethod.log.d.ts","sourceRoot":"","sources":["../../src/bean/aopMethod.log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACjG,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,iBAAiB,EAAsB,MAAM,MAAM,CAAC;AAG7D,MAAM,WAAW,oBAAqB,SAAQ,0BAA0B;IACtE,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,kBAAkB,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,mBAAmB,CAAC;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,qBAGa,YACX,SAAQ,iBACR,YAAW,aAAa,EAAE,aAAa,EAAE,iBAAiB;IAE1D,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG;IAiBpF,GAAG,CACD,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,GAAG,EACV,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,GAAG,EACb,IAAI,EAAE,MAAM,GACX,OAAO;IAiBV,OAAO,CACL,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,EAAE,EACT,IAAI,EAAE,IAAI,GAAG,QAAQ,EACrB,QAAQ,EAAE,GAAG,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG;IAkCrB,WAAW,CAAC,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,GAAG;IAMxD,SAAS,CACP,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,GAAG,EACV,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,MAAM;IAajB,UAAU,CACR,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,OAAO,EAAE,GAAG,EACZ,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,MAAM;IAajB,SAAS,CACP,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,OAAO,EAAE,GAAG,EACZ,GAAG,EAAE,KAAK,EACV,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,MAAM;CAYlB"}
1
+ {"version":3,"file":"aopMethod.log.d.ts","sourceRoot":"","sources":["../../src/bean/aopMethod.log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,WAAW,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AACjG,OAAO,KAAK,EACV,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,0BAA0B,EAC3B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAGnC,OAAO,EAAE,iBAAiB,EAA0C,MAAM,MAAM,CAAC;AAGjF,MAAM,WAAW,oBAAqB,SAAQ,0BAA0B;IACtE,KAAK,EAAE,WAAW,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,kBAAkB,CAAC;IACrC,UAAU,CAAC,EAAE,MAAM,mBAAmB,CAAC;IACvC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC/B;AAED,qBAGa,YACX,SAAQ,iBACR,YAAW,aAAa,EAAE,aAAa,EAAE,iBAAiB;IAE1D,GAAG,CAAC,OAAO,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,GAAG,GAAG;IAkBpF,GAAG,CACD,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,GAAG,EACV,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,GAAG,EACb,IAAI,EAAE,MAAM,GACX,OAAO;IAkBV,OAAO,CACL,OAAO,EAAE,oBAAoB,EAC7B,KAAK,EAAE,EAAE,EACT,IAAI,EAAE,IAAI,GAAG,QAAQ,EACrB,QAAQ,EAAE,GAAG,EACb,IAAI,EAAE,MAAM,GACX,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG;IAmCrB,WAAW,CAAC,OAAO,EAAE,oBAAoB,EAAE,QAAQ,EAAE,GAAG;IAMxD,SAAS,CACP,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,OAAO,EAAE,GAAG,EACZ,KAAK,EAAE,GAAG,EACV,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,MAAM;IAajB,UAAU,CACR,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,OAAO,EAAE,GAAG,EACZ,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,oBAAoB,EAC7B,OAAO,EAAE,MAAM;IAajB,SAAS,CACP,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAC1B,OAAO,EAAE,GAAG,EACZ,GAAG,EAAE,KAAK,EACV,QAAQ,EAAE,oBAAoB,EAC9B,OAAO,EAAE,MAAM;CAYlB"}
@@ -1 +1 @@
1
- {"version":3,"file":"bean.logger.d.ts","sourceRoot":"","sources":["../../src/bean/bean.logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,WAAW,EACZ,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EACL,QAAQ,EAMT,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,qBACa,UAAW,SAAQ,QAAQ;IAC/B,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,mBAAmB,GAAG,WAAW,GAAG,KAAK;IAI3E,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,mBAAmB;IAKnF,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,mBAAmB,GAAG,MAAM,EAAE,GAAG,SAAS;IAI5E,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,mBAAmB;IAKtF,IAAW,OAAO,IAAI,OAAO,CAAC,MAAM,CAEnC;IAEM,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM;IAI3D,QAAQ,CACb,SAAS,EAAE,MAAM,kBAAkB,EACnC,UAAU,CAAC,EAAE,MAAM,mBAAmB,GACrC,OAAO,CAAC,MAAM;IAIV,cAAc,CAAC,IAAI,EAAE,iBAAiB;IAStC,iBAAiB,CACtB,UAAU,EAAE,wBAAwB,EACpC,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAC9B,SAAS;IAcL,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,GAAG,SAAS;CAY7E"}
1
+ {"version":3,"file":"bean.logger.d.ts","sourceRoot":"","sources":["../../src/bean/bean.logger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,WAAW,EACZ,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,MAAM,CAAC;AAC9C,OAAO,KAAK,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAEpD,OAAO,EACL,QAAQ,EAST,MAAM,MAAM,CAAC;AAEd,OAAO,KAAK,OAAO,MAAM,SAAS,CAAC;AAEnC,qBACa,UAAW,SAAQ,QAAQ;IAC/B,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,mBAAmB,GAAG,WAAW,GAAG,KAAK;IAI3E,cAAc,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,mBAAmB;IAKnF,cAAc,CAAC,UAAU,CAAC,EAAE,MAAM,mBAAmB,GAAG,MAAM,EAAE,GAAG,SAAS;IAI5E,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,EAAE,UAAU,CAAC,EAAE,MAAM,mBAAmB;IAKtF,IAAW,OAAO,IAAI,OAAO,CAAC,MAAM,CAGnC;IAEM,GAAG,CAAC,UAAU,CAAC,EAAE,MAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM;IAK3D,QAAQ,CACb,SAAS,EAAE,MAAM,kBAAkB,EACnC,UAAU,CAAC,EAAE,MAAM,mBAAmB,GACrC,OAAO,CAAC,MAAM;IAKV,cAAc,CAAC,IAAI,EAAE,iBAAiB;IAUtC,iBAAiB,CACtB,UAAU,EAAE,wBAAwB,EACpC,QAAQ,EAAE,MAAM,EAChB,WAAW,CAAC,EAAE,WAAW,EACzB,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE,GAC9B,SAAS;IAeL,oBAAoB,CAAC,UAAU,EAAE,wBAAwB,GAAG,SAAS;CAa7E"}
@@ -4,6 +4,6 @@ import { BeanBase } from 'vona';
4
4
  export interface IMiddlewareSystemOptionsHttpLog extends IDecoratorMiddlewareSystemOptions {
5
5
  }
6
6
  export declare class MiddlewareSystemHttpLog extends BeanBase implements IMiddlewareSystemExecute {
7
- execute(_options: IMiddlewareSystemOptionsHttpLog, next: Next): Promise<void>;
7
+ execute(_options: IMiddlewareSystemOptionsHttpLog, next: Next): Promise<any>;
8
8
  }
9
9
  //# sourceMappingURL=middlewareSystem.httpLog.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"middlewareSystem.httpLog.d.ts","sourceRoot":"","sources":["../../src/bean/middlewareSystem.httpLog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EACV,iCAAiC,EACjC,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAKhC,MAAM,WAAW,+BAAgC,SAAQ,iCAAiC;CAAG;AAE7F,qBACa,uBAAwB,SAAQ,QAAS,YAAW,wBAAwB;IACjF,OAAO,CAAC,QAAQ,EAAE,+BAA+B,EAAE,IAAI,EAAE,IAAI;CA4BpE"}
1
+ {"version":3,"file":"middlewareSystem.httpLog.d.ts","sourceRoot":"","sources":["../../src/bean/middlewareSystem.httpLog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,KAAK,EACV,iCAAiC,EACjC,wBAAwB,EACzB,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,QAAQ,EAAsB,MAAM,MAAM,CAAC;AAMpD,MAAM,WAAW,+BAAgC,SAAQ,iCAAiC;CAAG;AAE7F,qBACa,uBAAwB,SAAQ,QAAS,YAAW,wBAAwB;IACjF,OAAO,CAAC,QAAQ,EAAE,+BAA+B,EAAE,IAAI,EAAE,IAAI;CAwCpE"}
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { BeanInfo, BeanBase, BeanAopMethodBase, SymbolBeanFullName, formatLoggerErrors, formatLoggerCtx, formatLoggerFilter, formatLoggerDummy, formatLoggerConsole, BeanSimple, combineConfigDefault, deepExtend, BeanScopeBase } from 'vona';
1
+ import { BeanInfo, BeanBase, getRequestBoundary, BeanAopMethodBase, SymbolBeanFullName, getSuppressedDiagnosticLogger, formatLoggerBoundary, formatLoggerErrors, formatLoggerCtx, formatLoggerFilter, formatLoggerDummy, formatLoggerConsole, BeanSimple, combineConfigDefault, deepExtend, BeanScopeBase } from 'vona';
2
2
  import { __decorate } from 'tslib';
3
3
  import StdSerializers from 'pino-std-serializers';
4
4
  import { MiddlewareSystem, AopMethod } from 'vona-module-a-aspect';
@@ -7,6 +7,30 @@ import { Bean, Scope } from 'vona-module-a-bean';
7
7
  import * as Winston from 'winston';
8
8
  import { Broadcast, BeanBroadcastBase } from 'vona-module-a-broadcast';
9
9
 
10
+ const safeHeaders = new Set(['accept', 'content-type', 'content-length']);
11
+ function redactHttpLogHeaders(headers) {
12
+ // Allowlist diagnostic metadata so custom credential headers are covered too.
13
+ return Object.fromEntries(Object.entries(headers).map(([key, value]) => [key, safeHeaders.has(key.toLowerCase()) ? value : '[REDACTED]']));
14
+ }
15
+ function redactHttpLogUrl(value) {
16
+ if (typeof value !== 'string') return undefined;
17
+ const boundary = value.search(/[?#]/);
18
+ let path = boundary < 0 ? value : value.slice(0, boundary);
19
+ if (/^[a-z][a-z\d+.-]*:\/\//i.test(path) || path.startsWith('//')) {
20
+ try {
21
+ const url = new URL(path, 'http://redacted.invalid');
22
+ if (url.protocol !== 'http:' && url.protocol !== 'https:') return '[REDACTED]';
23
+ path = `${path.startsWith('//') ? '//' : `${url.protocol}//`}${url.host}${url.pathname}`;
24
+ } catch {
25
+ return '[REDACTED]';
26
+ }
27
+ } else if (!path.startsWith('/') && path !== '*') {
28
+ return '[REDACTED]';
29
+ }
30
+ // Query names can be configured by authentication clients; omit the whole query/fragment.
31
+ return `${path}${boundary < 0 ? '' : '?[REDACTED]'}`;
32
+ }
33
+
10
34
  function redactIsolatedReadyHeader(headers, path, runId, header) {
11
35
  if (!['/health/ready', '/health/test-stop'].includes(path) || !runId) return headers;
12
36
  const redacted = {
@@ -21,18 +45,26 @@ function redactIsolatedReadyHeader(headers, path, runId, header) {
21
45
 
22
46
  let MiddlewareSystemHttpLog = class MiddlewareSystemHttpLog extends BeanBase {
23
47
  async execute(_options, next) {
48
+ if (getRequestBoundary()) return next();
24
49
  const ctx = this.ctx;
25
50
  // start
26
- const req = StdSerializers.req(ctx.req);
27
- req.headers = redactIsolatedReadyHeader(req.headers, ctx.path, this.app.meta.env.VONA_TEST_RUN_ID, ['x-vona-test-challenge', 'x-vona-test-stop-nonce', 'x-vona-test-stop-authorization']);
51
+ const serialized = StdSerializers.req(ctx.req);
52
+ // Do not retain serializer query/params/raw extensions or request bodies in logs.
53
+ const req = {
54
+ method: serialized.method,
55
+ url: redactHttpLogUrl(serialized.url),
56
+ headers: redactHttpLogHeaders(redactIsolatedReadyHeader(serialized.headers, ctx.path, this.app.meta.env.VONA_TEST_RUN_ID, ['x-vona-test-challenge', 'x-vona-test-stop-nonce', 'x-vona-test-stop-authorization'])),
57
+ remoteAddress: serialized.remoteAddress,
58
+ remotePort: serialized.remotePort
59
+ };
28
60
  this.$loggerChild('req').http(() => JSON.stringify(req));
29
61
  const profiler = this.$loggerChild('res').startTimer();
30
62
  // next
31
63
  await next();
32
64
  // end
33
- const headers = redactIsolatedReadyHeader(ctx.res.getHeaders(), ctx.path, this.app.meta.env.VONA_TEST_RUN_ID, ['x-vona-test-proof', 'x-vona-test-stop-proof']);
65
+ const headers = redactHttpLogHeaders(redactIsolatedReadyHeader(ctx.res.getHeaders(), ctx.path, this.app.meta.env.VONA_TEST_RUN_ID, ['x-vona-test-proof', 'x-vona-test-stop-proof']));
34
66
  const res = {
35
- url: ctx.req.url,
67
+ url: redactHttpLogUrl(ctx.req.url),
36
68
  statusCode: ctx.res.statusCode,
37
69
  headers
38
70
  };
@@ -48,6 +80,7 @@ MiddlewareSystemHttpLog = __decorate([MiddlewareSystem(), BeanInfo({
48
80
 
49
81
  let AopMethodLog = class AopMethodLog extends BeanAopMethodBase {
50
82
  get(options, next, receiver, prop) {
83
+ if (getRequestBoundary()) return next();
51
84
  const context = this._getContext(options, receiver);
52
85
  const message = `${receiver[SymbolBeanFullName]}#${prop}(get)`;
53
86
  const logger = this.app.meta.logger.child(options.childName, options.clientName);
@@ -64,6 +97,7 @@ let AopMethodLog = class AopMethodLog extends BeanAopMethodBase {
64
97
  }
65
98
  }
66
99
  set(options, value, next, receiver, prop) {
100
+ if (getRequestBoundary()) return next();
67
101
  const context = this._getContext(options, receiver);
68
102
  const message = `${receiver[SymbolBeanFullName]}#${prop}(set)`;
69
103
  const logger = this.app.meta.logger.child(options.childName, options.clientName);
@@ -80,6 +114,7 @@ let AopMethodLog = class AopMethodLog extends BeanAopMethodBase {
80
114
  }
81
115
  }
82
116
  execute(options, _args, next, receiver, prop) {
117
+ if (getRequestBoundary()) return next();
83
118
  const context = this._getContext(options, receiver);
84
119
  const message = `${receiver[SymbolBeanFullName]}#${prop}`;
85
120
  const logger = this.app.meta.logger.child(options.childName, options.clientName);
@@ -176,23 +211,26 @@ let BeanLogger = class BeanLogger extends BeanBase {
176
211
  });
177
212
  }
178
213
  get default() {
214
+ if (getRequestBoundary()) return getSuppressedDiagnosticLogger();
179
215
  return this.app.meta.logger.get();
180
216
  }
181
217
  get(clientName) {
218
+ if (getRequestBoundary()) return getSuppressedDiagnosticLogger();
182
219
  return this.app.meta.logger.get(clientName);
183
220
  }
184
221
  getChild(childName, clientName) {
222
+ if (getRequestBoundary()) return getSuppressedDiagnosticLogger();
185
223
  return this.app.meta.logger.get(clientName).child({
186
224
  name: childName
187
225
  });
188
226
  }
189
227
  makeFormatBase(opts) {
190
- return Winston.format.combine(formatLoggerErrors(opts), formatLoggerCtx(), Winston.format.splat(), Winston.format.timestamp());
228
+ return Winston.format.combine(formatLoggerBoundary(), formatLoggerErrors(opts), formatLoggerCtx(), Winston.format.splat(), Winston.format.timestamp());
191
229
  }
192
230
  makeTransportFile(clientInfo, fileName, levelStrict, childStrict) {
193
231
  return this.app.meta.logger.createTransportFile(fileName, clientInfo, {
194
232
  level: levelStrict ?? 'silly',
195
- format: Winston.format.combine(formatLoggerFilter({
233
+ format: Winston.format.combine(formatLoggerBoundary(), formatLoggerFilter({
196
234
  child: childStrict ?? clientInfo.child,
197
235
  level: levelStrict ?? clientInfo.level,
198
236
  strict: !!levelStrict
@@ -202,7 +240,7 @@ let BeanLogger = class BeanLogger extends BeanBase {
202
240
  makeTransportConsole(clientInfo) {
203
241
  return new Winston.transports.Console({
204
242
  level: 'silly',
205
- format: Winston.format.combine(formatLoggerDummy(), formatLoggerFilter({
243
+ format: Winston.format.combine(formatLoggerBoundary(), formatLoggerDummy(), formatLoggerFilter({
206
244
  child: clientInfo.child,
207
245
  level: clientInfo.level,
208
246
  silly: true
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../src/lib/redactIsolatedReadyHeader.ts","../src/bean/middlewareSystem.httpLog.ts","../src/bean/aopMethod.log.ts","../src/bean/bean.logger.ts","../src/bean/broadcast.setFilterChild.ts","../src/bean/broadcast.setFilterLevel.ts","../src/main.ts","../src/.metadata/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null],"names":["redactIsolatedReadyHeader","headers","path","runId","header","includes","redacted","names","Array","isArray","map","name","toLowerCase","Object","keys","MiddlewareSystemHttpLog","BeanBase","execute","_options","next","ctx","req","StdSerializers","app","meta","env","VONA_TEST_RUN_ID","$loggerChild","http","JSON","stringify","profiler","startTimer","res","getHeaders","url","statusCode","done","level","message","__decorate","MiddlewareSystem","__z_BeanInfo","module","AopMethodLog","BeanAopMethodBase","get","options","receiver","prop","context","_getContext","SymbolBeanFullName","logger","child","childName","clientName","_logResult","err","_logError","set","value","_logValue","_args","args","log","undefined","then","result","catch","evaluateExpressions","self","info","textValue","textResult","textError","AopMethod","BeanLogger","getFilterLevel","setFilterLevel","scope","broadcast","emit","getFilterChild","setFilterChild","default","getChild","makeFormatBase","opts","Winston","format","combine","formatLoggerErrors","formatLoggerCtx","splat","timestamp","makeTransportFile","clientInfo","fileName","levelStrict","childStrict","createTransportFile","formatLoggerFilter","strict","json","makeTransportConsole","transports","Console","formatLoggerDummy","silly","colorize","formatLoggerConsole","forceConsole","Bean","BroadcastSetFilterChild","BeanBroadcastBase","data","isEmitter","Broadcast","BroadcastSetFilterLevel","instance","Main","BeanSimple","moduleLoading","_configDefault","combineConfigDefault","configDefault","config","deepExtend","moduleLoaded","configLoaded","_config","_app","ScopeModuleALogger","BeanScopeBase","Scope"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../src/lib/redactHttpLog.ts","../src/lib/redactIsolatedReadyHeader.ts","../src/bean/middlewareSystem.httpLog.ts","../src/bean/aopMethod.log.ts","../src/bean/bean.logger.ts","../src/bean/broadcast.setFilterChild.ts","../src/bean/broadcast.setFilterLevel.ts","../src/main.ts","../src/.metadata/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null],"names":["safeHeaders","Set","redactHttpLogHeaders","headers","Object","fromEntries","entries","map","key","value","has","toLowerCase","redactHttpLogUrl","undefined","boundary","search","path","slice","test","startsWith","url","URL","protocol","host","pathname","redactIsolatedReadyHeader","runId","header","includes","redacted","names","Array","isArray","name","keys","MiddlewareSystemHttpLog","BeanBase","execute","_options","next","getRequestBoundary","ctx","serialized","StdSerializers","req","method","app","meta","env","VONA_TEST_RUN_ID","remoteAddress","remotePort","$loggerChild","http","JSON","stringify","profiler","startTimer","res","getHeaders","statusCode","done","level","message","__decorate","MiddlewareSystem","__z_BeanInfo","module","AopMethodLog","BeanAopMethodBase","get","options","receiver","prop","context","_getContext","SymbolBeanFullName","logger","child","childName","clientName","_logResult","err","_logError","set","_logValue","_args","args","log","then","result","catch","evaluateExpressions","self","info","textValue","textResult","textError","AopMethod","BeanLogger","getFilterLevel","setFilterLevel","scope","broadcast","emit","getFilterChild","setFilterChild","default","getSuppressedDiagnosticLogger","getChild","makeFormatBase","opts","Winston","format","combine","formatLoggerBoundary","formatLoggerErrors","formatLoggerCtx","splat","timestamp","makeTransportFile","clientInfo","fileName","levelStrict","childStrict","createTransportFile","formatLoggerFilter","strict","json","makeTransportConsole","transports","Console","formatLoggerDummy","silly","colorize","formatLoggerConsole","forceConsole","Bean","BroadcastSetFilterChild","BeanBroadcastBase","data","isEmitter","Broadcast","BroadcastSetFilterLevel","instance","Main","BeanSimple","moduleLoading","_configDefault","combineConfigDefault","configDefault","config","deepExtend","moduleLoaded","configLoaded","_config","_app","ScopeModuleALogger","BeanScopeBase","Scope"],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare function redactHttpLogHeaders(headers: Record<string, unknown>): Record<string, unknown>;
2
+ export declare function redactHttpLogUrl(value: unknown): string | undefined;
3
+ //# sourceMappingURL=redactHttpLog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactHttpLog.d.ts","sourceRoot":"","sources":["../../src/lib/redactHttpLog.ts"],"names":[],"mappings":"AAEA,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAQ9F;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAiBnE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=redactHttpLog.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redactHttpLog.test.d.ts","sourceRoot":"","sources":["../../src/lib/redactHttpLog.test.ts"],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vona-module-a-logger",
3
- "version": "5.1.16",
4
- "gitHead": "07074482abf76e38f9e3ccc3505f6d546e5c6f8d",
3
+ "version": "5.1.18",
4
+ "gitHead": "c703cb481fdf9d50a4f3eb3971e7b7c20a79619d",
5
5
  "description": "",
6
6
  "keywords": [
7
7
  "Vona Module"
@@ -8,7 +8,7 @@ import type {
8
8
  import type winston from 'winston';
9
9
 
10
10
  import { evaluateExpressions } from '@cabloy/utils';
11
- import { BeanAopMethodBase, SymbolBeanFullName } from 'vona';
11
+ import { BeanAopMethodBase, getRequestBoundary, SymbolBeanFullName } from 'vona';
12
12
  import { AopMethod } from 'vona-module-a-aspect';
13
13
 
14
14
  export interface IAopMethodOptionsLog extends IDecoratorAopMethodOptions {
@@ -28,6 +28,7 @@ export class AopMethodLog
28
28
  implements IAopMethodGet, IAopMethodSet, IAopMethodExecute
29
29
  {
30
30
  get(options: IAopMethodOptionsLog, next: NextSync, receiver: any, prop: string): any {
31
+ if (getRequestBoundary()) return next();
31
32
  const context = this._getContext(options, receiver);
32
33
  const message = `${receiver[SymbolBeanFullName]}#${prop}(get)`;
33
34
  const logger = this.app.meta.logger.child(options.childName, options.clientName);
@@ -51,6 +52,7 @@ export class AopMethodLog
51
52
  receiver: any,
52
53
  prop: string,
53
54
  ): boolean {
55
+ if (getRequestBoundary()) return next();
54
56
  const context = this._getContext(options, receiver);
55
57
  const message = `${receiver[SymbolBeanFullName]}#${prop}(set)`;
56
58
  const logger = this.app.meta.logger.child(options.childName, options.clientName);
@@ -74,6 +76,7 @@ export class AopMethodLog
74
76
  receiver: any,
75
77
  prop: string,
76
78
  ): Promise<any> | any {
79
+ if (getRequestBoundary()) return next();
77
80
  const context = this._getContext(options, receiver);
78
81
  const message = `${receiver[SymbolBeanFullName]}#${prop}`;
79
82
  const logger = this.app.meta.logger.child(options.childName, options.clientName);
@@ -9,11 +9,14 @@ import type * as Transport from 'winston-transport';
9
9
 
10
10
  import {
11
11
  BeanBase,
12
+ formatLoggerBoundary,
12
13
  formatLoggerConsole,
13
14
  formatLoggerCtx,
14
15
  formatLoggerDummy,
15
16
  formatLoggerErrors,
16
17
  formatLoggerFilter,
18
+ getRequestBoundary,
19
+ getSuppressedDiagnosticLogger,
17
20
  } from 'vona';
18
21
  import { Bean } from 'vona-module-a-bean';
19
22
  import * as Winston from 'winston';
@@ -39,10 +42,12 @@ export class BeanLogger extends BeanBase {
39
42
  }
40
43
 
41
44
  public get default(): Winston.Logger {
45
+ if (getRequestBoundary()) return getSuppressedDiagnosticLogger();
42
46
  return this.app.meta.logger.get();
43
47
  }
44
48
 
45
49
  public get(clientName?: keyof ILoggerClientRecord): Winston.Logger {
50
+ if (getRequestBoundary()) return getSuppressedDiagnosticLogger();
46
51
  return this.app.meta.logger.get(clientName);
47
52
  }
48
53
 
@@ -50,11 +55,13 @@ export class BeanLogger extends BeanBase {
50
55
  childName: keyof ILoggerChildRecord,
51
56
  clientName?: keyof ILoggerClientRecord,
52
57
  ): Winston.Logger {
58
+ if (getRequestBoundary()) return getSuppressedDiagnosticLogger();
53
59
  return this.app.meta.logger.get(clientName).child({ name: childName });
54
60
  }
55
61
 
56
62
  public makeFormatBase(opts: ILoggerFormatOpts) {
57
63
  return Winston.format.combine(
64
+ formatLoggerBoundary(),
58
65
  formatLoggerErrors(opts),
59
66
  formatLoggerCtx(),
60
67
  Winston.format.splat(),
@@ -71,6 +78,7 @@ export class BeanLogger extends BeanBase {
71
78
  return this.app.meta.logger.createTransportFile(fileName, clientInfo, {
72
79
  level: levelStrict ?? 'silly',
73
80
  format: Winston.format.combine(
81
+ formatLoggerBoundary(),
74
82
  formatLoggerFilter({
75
83
  child: childStrict ?? clientInfo.child,
76
84
  level: levelStrict ?? clientInfo.level,
@@ -85,6 +93,7 @@ export class BeanLogger extends BeanBase {
85
93
  return new Winston.transports.Console({
86
94
  level: 'silly',
87
95
  format: Winston.format.combine(
96
+ formatLoggerBoundary(),
88
97
  formatLoggerDummy(),
89
98
  formatLoggerFilter({ child: clientInfo.child, level: clientInfo.level, silly: true }),
90
99
  Winston.format.colorize(),
@@ -5,9 +5,10 @@ import type {
5
5
  } from 'vona-module-a-aspect';
6
6
 
7
7
  import StdSerializers from 'pino-std-serializers';
8
- import { BeanBase } from 'vona';
8
+ import { BeanBase, getRequestBoundary } from 'vona';
9
9
  import { MiddlewareSystem } from 'vona-module-a-aspect';
10
10
 
11
+ import { redactHttpLogHeaders, redactHttpLogUrl } from '../lib/redactHttpLog.ts';
11
12
  import { redactIsolatedReadyHeader } from '../lib/redactIsolatedReadyHeader.ts';
12
13
 
13
14
  export interface IMiddlewareSystemOptionsHttpLog extends IDecoratorMiddlewareSystemOptions {}
@@ -15,28 +16,40 @@ export interface IMiddlewareSystemOptionsHttpLog extends IDecoratorMiddlewareSys
15
16
  @MiddlewareSystem<IMiddlewareSystemOptionsHttpLog>()
16
17
  export class MiddlewareSystemHttpLog extends BeanBase implements IMiddlewareSystemExecute {
17
18
  async execute(_options: IMiddlewareSystemOptionsHttpLog, next: Next) {
19
+ if (getRequestBoundary()) return next();
18
20
  const ctx = this.ctx;
19
21
  // start
20
- const req = StdSerializers.req(ctx.req);
21
- req.headers = redactIsolatedReadyHeader(
22
- req.headers,
23
- ctx.path,
24
- this.app.meta.env.VONA_TEST_RUN_ID,
25
- ['x-vona-test-challenge', 'x-vona-test-stop-nonce', 'x-vona-test-stop-authorization'],
26
- );
22
+ const serialized = StdSerializers.req(ctx.req);
23
+ // Do not retain serializer query/params/raw extensions or request bodies in logs.
24
+ const req = {
25
+ method: serialized.method,
26
+ url: redactHttpLogUrl(serialized.url),
27
+ headers: redactHttpLogHeaders(
28
+ redactIsolatedReadyHeader(
29
+ serialized.headers,
30
+ ctx.path,
31
+ this.app.meta.env.VONA_TEST_RUN_ID,
32
+ ['x-vona-test-challenge', 'x-vona-test-stop-nonce', 'x-vona-test-stop-authorization'],
33
+ ),
34
+ ),
35
+ remoteAddress: serialized.remoteAddress,
36
+ remotePort: serialized.remotePort,
37
+ };
27
38
  this.$loggerChild('req').http(() => JSON.stringify(req));
28
39
  const profiler = this.$loggerChild('res').startTimer();
29
40
  // next
30
41
  await next();
31
42
  // end
32
- const headers = redactIsolatedReadyHeader(
33
- ctx.res.getHeaders(),
34
- ctx.path,
35
- this.app.meta.env.VONA_TEST_RUN_ID,
36
- ['x-vona-test-proof', 'x-vona-test-stop-proof'],
43
+ const headers = redactHttpLogHeaders(
44
+ redactIsolatedReadyHeader(
45
+ ctx.res.getHeaders(),
46
+ ctx.path,
47
+ this.app.meta.env.VONA_TEST_RUN_ID,
48
+ ['x-vona-test-proof', 'x-vona-test-stop-proof'],
49
+ ),
37
50
  );
38
51
  const res = {
39
- url: ctx.req.url,
52
+ url: redactHttpLogUrl(ctx.req.url),
40
53
  statusCode: ctx.res.statusCode,
41
54
  headers,
42
55
  };
@@ -0,0 +1,207 @@
1
+ import assert from 'node:assert/strict';
2
+ import { readFileSync } from 'node:fs';
3
+ import { registerHooks } from 'node:module';
4
+ import { test } from 'node:test';
5
+ import ts from 'typescript';
6
+
7
+ import { redactHttpLogHeaders, redactHttpLogUrl } from './redactHttpLog.ts';
8
+
9
+ const previousApp = Object.getOwnPropertyDescriptor(globalThis, '__app__');
10
+ const vonaUrl = new URL('../../../../../../../', import.meta.url);
11
+ const middlewareUrl = new URL(
12
+ '../bean/middlewareSystem.httpLog.ts?fixture=httpLogging',
13
+ import.meta.url,
14
+ ).href;
15
+ const formatterUrl = new URL('packages-vona/vona-core/src/lib/core/logger/utils.ts', vonaUrl).href;
16
+ const checkUrl = new URL('packages-utils/utils/src/check.ts', vonaUrl).href;
17
+ const fixture = (source: string) => `data:text/javascript,${encodeURIComponent(source)}`;
18
+ const hooks = registerHooks({
19
+ resolve(specifier, context, nextResolve) {
20
+ if (context.parentURL === middlewareUrl) {
21
+ if (specifier === 'vona') {
22
+ return {
23
+ url: fixture('export class BeanBase {} export function getRequestBoundary() {}'),
24
+ shortCircuit: true,
25
+ };
26
+ }
27
+ if (specifier === 'vona-module-a-aspect') {
28
+ return {
29
+ url: fixture('export function MiddlewareSystem() { return () => {}; }'),
30
+ shortCircuit: true,
31
+ };
32
+ }
33
+ }
34
+ if (context.parentURL === formatterUrl) {
35
+ if (specifier === '@cabloy/utils') return { url: checkUrl, shortCircuit: true };
36
+ if (specifier === '../../framework/useApp.ts') {
37
+ return {
38
+ url: fixture(
39
+ 'export function useApp() { throw new Error("unexpected application access"); }',
40
+ ),
41
+ shortCircuit: true,
42
+ };
43
+ }
44
+ }
45
+ return nextResolve(specifier, context);
46
+ },
47
+ load(url, context, nextLoad) {
48
+ if (url === middlewareUrl) {
49
+ return {
50
+ format: 'module',
51
+ source: ts.transpileModule(readFileSync(new URL(url), 'utf8'), {
52
+ compilerOptions: {
53
+ experimentalDecorators: true,
54
+ target: ts.ScriptTarget.ESNext,
55
+ module: ts.ModuleKind.ESNext,
56
+ },
57
+ }).outputText,
58
+ shortCircuit: true,
59
+ };
60
+ }
61
+ return nextLoad(url, context);
62
+ },
63
+ });
64
+ const { MiddlewareSystemHttpLog, formatLoggerFilter } = await (async () => {
65
+ try {
66
+ return { ...(await import(middlewareUrl)), ...(await import(formatterUrl)) };
67
+ } finally {
68
+ hooks.deregister();
69
+ }
70
+ })();
71
+
72
+ const secret = 'synthetic-http-secret-sentinel';
73
+
74
+ test('header copies hide standard, mixed-case and custom credentials', () => {
75
+ const headers = Object.freeze({
76
+ 'Authorization': secret,
77
+ 'Proxy-Authorization': secret,
78
+ 'Cookie': secret,
79
+ 'Set-Cookie': Object.freeze([secret, secret]),
80
+ 'X-Custom-Credential': secret,
81
+ 'Location': `/callback?code=${secret}`,
82
+ 'Referer': `/callback?state=${secret}`,
83
+ 'Content-Type': 'application/json',
84
+ 'content-length': '42',
85
+ 'accept': 'application/json',
86
+ });
87
+ const logged = redactHttpLogHeaders(headers);
88
+ assert.equal(JSON.stringify(logged).includes(secret), false);
89
+ assert.equal(logged['Content-Type'], 'application/json');
90
+ assert.equal(logged['content-length'], '42');
91
+ assert.equal(logged.accept, 'application/json');
92
+ assert.equal(headers.Authorization, secret);
93
+ assert.deepEqual(headers['Set-Cookie'], [secret, secret]);
94
+ assert.notEqual(logged, headers);
95
+ });
96
+
97
+ test('URL projections omit all query/fragment data and absolute-URL userinfo', () => {
98
+ for (const key of [
99
+ 'access_token',
100
+ 'refresh_token',
101
+ 'code',
102
+ 'state',
103
+ 'x-vona-passport-code',
104
+ 'custom',
105
+ ]) {
106
+ const url = `/callback?${key}=${secret}&${key}=${secret}#${secret}`;
107
+ assert.equal(redactHttpLogUrl(url), '/callback?[REDACTED]');
108
+ }
109
+ assert.equal(redactHttpLogUrl(`/callback#${secret}`), '/callback?[REDACTED]');
110
+ assert.equal(
111
+ redactHttpLogUrl(`https://${secret}:${secret}@example.invalid/callback?x=${secret}`),
112
+ 'https://example.invalid/callback?[REDACTED]',
113
+ );
114
+ assert.equal(
115
+ redactHttpLogUrl(`//${secret}@example.invalid/callback`),
116
+ '//example.invalid/callback',
117
+ );
118
+ assert.equal(redactHttpLogUrl('https://['), '[REDACTED]');
119
+ assert.equal(redactHttpLogUrl(`data:${secret}`), '[REDACTED]');
120
+ assert.equal(redactHttpLogUrl({ path: secret }), undefined);
121
+ assert.equal(redactHttpLogUrl('/ordinary/path'), '/ordinary/path');
122
+ assert.equal(redactHttpLogUrl('*'), '*');
123
+ });
124
+
125
+ for (const failure of [false, true]) {
126
+ test(`actual middleware strict-http projection, downstream ${failure ? 'error' : 'success'}`, async () => {
127
+ const output: string[] = [];
128
+ const filter = formatLoggerFilter({ level: 'http', child: undefined, strict: true });
129
+ const capture = (message: any, extra = {}) => {
130
+ const info = filter.transform({ level: 'http', message, ...extra }, filter.options);
131
+ assert.ok(info);
132
+ output.push(JSON.stringify(info));
133
+ };
134
+ const headers = Object.freeze({
135
+ authorization: secret,
136
+ cookie: secret,
137
+ accept: 'application/json',
138
+ });
139
+ const responseHeaders = Object.freeze({
140
+ 'set-cookie': [secret],
141
+ 'content-type': 'application/json',
142
+ });
143
+ const req = Object.freeze({
144
+ method: 'POST',
145
+ url: `/callback?custom=${secret}`,
146
+ originalUrl: `/callback?x-vona-passport-code=${secret}`,
147
+ query: { custom: secret },
148
+ params: { token: secret },
149
+ body: { token: secret },
150
+ headers,
151
+ socket: { remoteAddress: '127.0.0.1', remotePort: 12345 },
152
+ });
153
+ const ctx = {
154
+ req,
155
+ path: '/callback',
156
+ res: { statusCode: 204, getHeaders: () => responseHeaders },
157
+ };
158
+ const fake = {
159
+ ctx,
160
+ app: { meta: { env: {} } },
161
+ $loggerChild: (name: string) => {
162
+ assert.ok(name === 'req' || name === 'res');
163
+ return {
164
+ http: (message: any) => capture(message),
165
+ startTimer: () => ({
166
+ done: (info: any) => {
167
+ assert.equal(info.level, 'http');
168
+ capture(info.message, { durationMs: 7 });
169
+ },
170
+ }),
171
+ };
172
+ },
173
+ };
174
+ let calls = 0;
175
+ const error = new Error(secret);
176
+ const execution = MiddlewareSystemHttpLog.prototype.execute.call(fake as any, {}, async () => {
177
+ calls++;
178
+ assert.equal(ctx.req, req);
179
+ assert.equal(ctx.req.headers.authorization, secret);
180
+ assert.equal(ctx.req.body.token, secret);
181
+ if (failure) throw error;
182
+ });
183
+ if (failure) {
184
+ await assert.rejects(execution, value => value === error);
185
+ } else {
186
+ await execution;
187
+ }
188
+ assert.equal(calls, 1);
189
+ assert.equal(output.length, failure ? 1 : 2);
190
+ assert.equal(output.join('\n').includes(secret), false);
191
+ const request = JSON.parse(JSON.parse(output[0]!).message);
192
+ assert.equal(request.method, 'POST');
193
+ assert.equal(request.url, '/callback?[REDACTED]');
194
+ assert.equal(request.query, undefined);
195
+ assert.equal(request.params, undefined);
196
+ assert.equal(request.body, undefined);
197
+ assert.equal(request.raw, undefined);
198
+ if (!failure) {
199
+ const response = JSON.parse(output[1]!);
200
+ assert.equal(response.durationMs, 7);
201
+ assert.equal(JSON.parse(response.message).statusCode, 204);
202
+ }
203
+ assert.equal(req.url, `/callback?custom=${secret}`);
204
+ assert.deepEqual(responseHeaders['set-cookie'], [secret]);
205
+ assert.deepEqual(Object.getOwnPropertyDescriptor(globalThis, '__app__'), previousApp);
206
+ });
207
+ }
@@ -0,0 +1,30 @@
1
+ const safeHeaders = new Set(['accept', 'content-type', 'content-length']);
2
+
3
+ export function redactHttpLogHeaders(headers: Record<string, unknown>): Record<string, unknown> {
4
+ // Allowlist diagnostic metadata so custom credential headers are covered too.
5
+ return Object.fromEntries(
6
+ Object.entries(headers).map(([key, value]) => [
7
+ key,
8
+ safeHeaders.has(key.toLowerCase()) ? value : '[REDACTED]',
9
+ ]),
10
+ );
11
+ }
12
+
13
+ export function redactHttpLogUrl(value: unknown): string | undefined {
14
+ if (typeof value !== 'string') return undefined;
15
+ const boundary = value.search(/[?#]/);
16
+ let path = boundary < 0 ? value : value.slice(0, boundary);
17
+ if (/^[a-z][a-z\d+.-]*:\/\//i.test(path) || path.startsWith('//')) {
18
+ try {
19
+ const url = new URL(path, 'http://redacted.invalid');
20
+ if (url.protocol !== 'http:' && url.protocol !== 'https:') return '[REDACTED]';
21
+ path = `${path.startsWith('//') ? '//' : `${url.protocol}//`}${url.host}${url.pathname}`;
22
+ } catch {
23
+ return '[REDACTED]';
24
+ }
25
+ } else if (!path.startsWith('/') && path !== '*') {
26
+ return '[REDACTED]';
27
+ }
28
+ // Query names can be configured by authentication clients; omit the whole query/fragment.
29
+ return `${path}${boundary < 0 ? '' : '?[REDACTED]'}`;
30
+ }