vona-module-a-logger 5.0.8 → 5.0.10

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.
@@ -0,0 +1,85 @@
1
+ import type { BeanScopeUtil } from 'vona';
2
+ import type { IDecoratorBroadcastOptions } from 'vona-module-a-broadcast';
3
+ import type { IAopMethodOptionsLog } from '../bean/aopMethod.log.ts';
4
+ /** bean: end */
5
+ /** bean: begin */
6
+ import type { BeanLogger } from '../bean/bean.logger.ts';
7
+ /** broadcast: end */
8
+ /** broadcast: begin */
9
+ import type { BroadcastSetLevel } from '../bean/broadcast.setLevel.ts';
10
+ /** middlewareSystem: end */
11
+ /** aopMethod: begin */
12
+ import type { IMiddlewareSystemOptionsHttpLog } from '../bean/middlewareSystem.httpLog.ts';
13
+ /** broadcast: end */
14
+ /** scope: begin */
15
+ import { BeanScopeBase } from 'vona';
16
+ import 'vona';
17
+ import 'vona';
18
+ import 'vona';
19
+ import 'vona';
20
+ import 'vona';
21
+ export * from '../bean/aopMethod.log.ts';
22
+ declare module 'vona-module-a-aspect' {
23
+ interface IMiddlewareSystemRecord {
24
+ 'a-logger:httpLog': IMiddlewareSystemOptionsHttpLog;
25
+ }
26
+ }
27
+ declare module 'vona-module-a-logger' {
28
+ interface MiddlewareSystemHttpLog {
29
+ }
30
+ }
31
+ /** aopMethod: end */
32
+ /** bean: begin */
33
+ export * from '../bean/bean.logger.ts';
34
+ declare module 'vona-module-a-aspect' {
35
+ interface IAopMethodRecord {
36
+ 'a-logger:log': IAopMethodOptionsLog;
37
+ }
38
+ }
39
+ declare module 'vona-module-a-logger' {
40
+ interface AopMethodLog {
41
+ }
42
+ }
43
+ /** bean: end */
44
+ /** broadcast: begin */
45
+ export * from '../bean/broadcast.setLevel.ts';
46
+ declare module 'vona' {
47
+ }
48
+ declare module 'vona-module-a-logger' {
49
+ interface BeanLogger {
50
+ }
51
+ }
52
+ declare module 'vona' {
53
+ interface IBeanRecordGlobal {
54
+ logger: BeanLogger;
55
+ }
56
+ }
57
+ /** middlewareSystem: begin */
58
+ export * from '../bean/middlewareSystem.httpLog.ts';
59
+ declare module 'vona-module-a-broadcast' {
60
+ interface IBroadcastRecord {
61
+ 'a-logger:setLevel': IDecoratorBroadcastOptions;
62
+ }
63
+ }
64
+ declare module 'vona-module-a-logger' {
65
+ interface BroadcastSetLevel {
66
+ }
67
+ }
68
+ export interface IModuleBroadcast {
69
+ setLevel: BroadcastSetLevel;
70
+ }
71
+ export declare class ScopeModuleALogger extends BeanScopeBase {
72
+ }
73
+ export interface ScopeModuleALogger {
74
+ util: BeanScopeUtil;
75
+ broadcast: IModuleBroadcast;
76
+ }
77
+ declare module 'vona' {
78
+ interface IBeanScopeRecord {
79
+ 'a-logger': ScopeModuleALogger;
80
+ }
81
+ interface IBeanScopeContainer {
82
+ logger: ScopeModuleALogger;
83
+ }
84
+ }
85
+ /** scope: end */
@@ -0,0 +1,31 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ /** broadcast: end */
8
+ /** scope: begin */
9
+ import { BeanScopeBase } from 'vona';
10
+ import { Scope } from 'vona-module-a-bean';
11
+ import 'vona';
12
+ import 'vona';
13
+ import 'vona';
14
+ import 'vona';
15
+ import 'vona';
16
+ export * from "../bean/aopMethod.log.js";
17
+ /** aopMethod: end */
18
+ /** bean: begin */
19
+ export * from "../bean/bean.logger.js";
20
+ /** bean: end */
21
+ /** broadcast: begin */
22
+ export * from "../bean/broadcast.setLevel.js";
23
+ /** middlewareSystem: begin */
24
+ export * from "../bean/middlewareSystem.httpLog.js";
25
+ let ScopeModuleALogger = class ScopeModuleALogger extends BeanScopeBase {
26
+ };
27
+ ScopeModuleALogger = __decorate([
28
+ Scope()
29
+ ], ScopeModuleALogger);
30
+ export { ScopeModuleALogger };
31
+ /** scope: end */
@@ -0,0 +1,2 @@
1
+ export declare const __ThisModule__ = "a-logger";
2
+ export { ScopeModuleALogger as ScopeModule } from './index.ts';
@@ -0,0 +1,2 @@
1
+ export const __ThisModule__ = 'a-logger';
2
+ export { ScopeModuleALogger as ScopeModule } from "./index.js";
@@ -0,0 +1,21 @@
1
+ import type { ILoggerClientChildRecord, ILoggerClientRecord, LoggerLevel, Next, NextSync } from 'vona';
2
+ import type { IAopMethodExecute, IAopMethodGet, IAopMethodSet, IDecoratorAopMethodOptions } from 'vona-module-a-aspect';
3
+ import type winston from 'winston';
4
+ import { BeanAopMethodBase } from 'vona';
5
+ export interface IAopMethodOptionsLog extends IDecoratorAopMethodOptions {
6
+ level: LoggerLevel;
7
+ childName?: keyof ILoggerClientChildRecord;
8
+ clientName?: keyof ILoggerClientRecord;
9
+ auto?: boolean;
10
+ args?: boolean;
11
+ result?: boolean;
12
+ context?: Record<string, any>;
13
+ }
14
+ export declare class AopMethodLog extends BeanAopMethodBase implements IAopMethodGet, IAopMethodSet, IAopMethodExecute {
15
+ get(options: IAopMethodOptionsLog, next: NextSync, receiver: any, prop: string): any;
16
+ set(options: IAopMethodOptionsLog, value: any, next: NextSync, receiver: any, prop: string): boolean;
17
+ execute(options: IAopMethodOptionsLog, _args: [], next: Next | NextSync, receiver: any, prop: string): Promise<any> | any;
18
+ _getContext(options: IAopMethodOptionsLog, receiver: any): unknown;
19
+ _logResult(profiler: winston.Profiler, context: any, res: any, options: IAopMethodOptionsLog, message: string): void;
20
+ _logError(profiler: winston.Profiler, context: any, err: Error, _options: IAopMethodOptionsLog, message: string): void;
21
+ }
@@ -0,0 +1,97 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { evaluateExpressions } from '@cabloy/utils';
8
+ import { BeanAopMethodBase, SymbolBeanFullName } from 'vona';
9
+ import { AopMethod } from 'vona-module-a-aspect';
10
+ let AopMethodLog = class AopMethodLog extends BeanAopMethodBase {
11
+ get(options, next, receiver, prop) {
12
+ const context = this._getContext(options, receiver);
13
+ const message = `${receiver[SymbolBeanFullName]}#${prop}(get)`;
14
+ const logger = this.app.meta.logger.child(options.childName, options.clientName);
15
+ // begin
16
+ (!options.auto) && logger.log(options.level, message, context ? { context } : undefined);
17
+ const profiler = logger.startTimer();
18
+ // next
19
+ try {
20
+ const res = next();
21
+ this._logResult(profiler, context, res, options, message);
22
+ return res;
23
+ }
24
+ catch (err) {
25
+ this._logError(profiler, context, err, options, message);
26
+ throw err;
27
+ }
28
+ }
29
+ set(options, value, next, receiver, prop) {
30
+ const context = this._getContext(options, receiver);
31
+ const message = `${receiver[SymbolBeanFullName]}#${prop}(set)`;
32
+ const logger = this.app.meta.logger.child(options.childName, options.clientName);
33
+ // begin
34
+ logger.log(options.level, `${message} value: ${JSON.stringify(value)}`, context ? { context } : undefined);
35
+ const profiler = logger.startTimer();
36
+ // next
37
+ try {
38
+ const res = next();
39
+ (!options.auto) && this._logResult(profiler, context, undefined, options, message);
40
+ return res;
41
+ }
42
+ catch (err) {
43
+ this._logError(profiler, context, err, options, message);
44
+ throw err;
45
+ }
46
+ }
47
+ execute(options, _args, next, receiver, prop) {
48
+ const context = this._getContext(options, receiver);
49
+ const message = `${receiver[SymbolBeanFullName]}#${prop}`;
50
+ const logger = this.app.meta.logger.child(options.childName, options.clientName);
51
+ // begin
52
+ options.args !== false && logger.log(options.level, `${message} args: ${JSON.stringify(_args)}`, context ? { context } : undefined);
53
+ const profiler = logger.startTimer();
54
+ // next
55
+ try {
56
+ const res = next();
57
+ if (res?.then) {
58
+ return res.then((res) => {
59
+ options.result !== false && this._logResult(profiler, context, res, options, message);
60
+ return res;
61
+ }).catch((err) => {
62
+ this._logError(profiler, context, err, options, message);
63
+ throw err;
64
+ });
65
+ }
66
+ options.result !== false && this._logResult(profiler, context, res, options, message);
67
+ return res;
68
+ }
69
+ catch (err) {
70
+ this._logError(profiler, context, err, options, message);
71
+ throw err;
72
+ }
73
+ }
74
+ _getContext(options, receiver) {
75
+ return evaluateExpressions(options.context, receiver);
76
+ }
77
+ _logResult(profiler, context, res, options, message) {
78
+ const textResult = res !== undefined ? ` result: ${JSON.stringify(res)}` : '';
79
+ const info = { level: options.level, message: `${message}${textResult}` };
80
+ if (context)
81
+ info.context = context;
82
+ profiler.done(info);
83
+ }
84
+ _logError(profiler, context, err, _options, message) {
85
+ const textError = ` error: ${err.message}`;
86
+ const info = { level: 'error', message: `${message}${textError}` };
87
+ if (context)
88
+ info.context = context;
89
+ profiler.done(info);
90
+ }
91
+ };
92
+ AopMethodLog = __decorate([
93
+ AopMethod({
94
+ level: 'info',
95
+ })
96
+ ], AopMethodLog);
97
+ export { AopMethodLog };
@@ -0,0 +1,6 @@
1
+ import type { ILoggerClientRecord, LoggerLevel } from 'vona';
2
+ import { BeanBase } from 'vona';
3
+ export declare class BeanLogger extends BeanBase {
4
+ getLevel(clientName?: keyof ILoggerClientRecord): LoggerLevel | undefined;
5
+ setLevel(level: LoggerLevel | boolean, clientName?: keyof ILoggerClientRecord): void;
6
+ }
@@ -0,0 +1,21 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { BeanBase } from 'vona';
8
+ import { Bean } from 'vona-module-a-bean';
9
+ let BeanLogger = class BeanLogger extends BeanBase {
10
+ getLevel(clientName) {
11
+ return this.app.meta.logger.getLevel(clientName);
12
+ }
13
+ setLevel(level, clientName) {
14
+ this.app.meta.logger.setLevel(level, clientName);
15
+ this.scope.broadcast.setLevel.emit({ level, clientName });
16
+ }
17
+ };
18
+ BeanLogger = __decorate([
19
+ Bean()
20
+ ], BeanLogger);
21
+ export { BeanLogger };
@@ -0,0 +1,10 @@
1
+ import type { ILoggerClientRecord, LoggerLevel } from 'vona';
2
+ import type { IBroadcastExecute } from 'vona-module-a-broadcast';
3
+ import { BeanBroadcastBase } from 'vona-module-a-broadcast';
4
+ export interface TypeBroadcastSetLevelJobData {
5
+ level: LoggerLevel | boolean;
6
+ clientName?: keyof ILoggerClientRecord;
7
+ }
8
+ export declare class BroadcastSetLevel extends BeanBroadcastBase<TypeBroadcastSetLevelJobData> implements IBroadcastExecute<TypeBroadcastSetLevelJobData> {
9
+ execute(data: TypeBroadcastSetLevelJobData, isEmitter?: boolean): Promise<void>;
10
+ }
@@ -0,0 +1,18 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { BeanBroadcastBase, Broadcast } from 'vona-module-a-broadcast';
8
+ let BroadcastSetLevel = class BroadcastSetLevel extends BeanBroadcastBase {
9
+ async execute(data, isEmitter) {
10
+ if (!isEmitter) {
11
+ this.app.meta.logger.setLevel(data.level, data.clientName);
12
+ }
13
+ }
14
+ };
15
+ BroadcastSetLevel = __decorate([
16
+ Broadcast()
17
+ ], BroadcastSetLevel);
18
+ export { BroadcastSetLevel };
@@ -0,0 +1,8 @@
1
+ import type { Next } from 'vona';
2
+ import type { IDecoratorMiddlewareSystemOptions, IMiddlewareSystemExecute } from 'vona-module-a-aspect';
3
+ import { BeanBase } from 'vona';
4
+ export interface IMiddlewareSystemOptionsHttpLog extends IDecoratorMiddlewareSystemOptions {
5
+ }
6
+ export declare class MiddlewareSystemHttpLog extends BeanBase implements IMiddlewareSystemExecute {
7
+ execute(_options: IMiddlewareSystemOptionsHttpLog, next: Next): Promise<void>;
8
+ }
@@ -0,0 +1,31 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import StdSerializers from 'pino-std-serializers';
8
+ import { BeanBase } from 'vona';
9
+ import { MiddlewareSystem } from 'vona-module-a-aspect';
10
+ let MiddlewareSystemHttpLog = class MiddlewareSystemHttpLog extends BeanBase {
11
+ async execute(_options, next) {
12
+ const ctx = this.ctx;
13
+ // start
14
+ const req = StdSerializers.req(ctx.req);
15
+ this.$loggerChild('req').http(JSON.stringify(req));
16
+ const profiler = this.$loggerChild('res').startTimer();
17
+ // next
18
+ await next();
19
+ // end
20
+ const res = {
21
+ url: ctx.req.url,
22
+ statusCode: ctx.res.statusCode,
23
+ headers: ctx.res.getHeaders(),
24
+ };
25
+ profiler.done({ level: 'http', message: JSON.stringify(res) });
26
+ }
27
+ };
28
+ MiddlewareSystemHttpLog = __decorate([
29
+ MiddlewareSystem()
30
+ ], MiddlewareSystemHttpLog);
31
+ export { MiddlewareSystemHttpLog };
@@ -0,0 +1,3 @@
1
+ export * from './.metadata/index.ts';
2
+ export * from './lib/index.ts';
3
+ export * from './types/index.ts';
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ export * from "./.metadata/index.js";
2
+ export * from "./lib/index.js";
3
+ export * from "./types/index.js";
@@ -0,0 +1 @@
1
+ export * from './log.ts';
@@ -0,0 +1 @@
1
+ export * from "./log.js";
@@ -0,0 +1,2 @@
1
+ import type { IAopMethodOptionsLog } from '../bean/aopMethod.log.js';
2
+ export declare function Log(options?: Partial<IAopMethodOptionsLog>): MethodDecorator;
@@ -0,0 +1,4 @@
1
+ import { Aspect } from 'vona-module-a-aspect';
2
+ export function Log(options) {
3
+ return Aspect.aopMethod('a-logger:log', options);
4
+ }
@@ -0,0 +1 @@
1
+ export * from './logger.ts';
@@ -0,0 +1 @@
1
+ export * from "./logger.js";
@@ -0,0 +1,7 @@
1
+ declare module 'vona' {
2
+ interface ILoggerClientChildRecord {
3
+ req: never;
4
+ res: never;
5
+ }
6
+ }
7
+ export {};
@@ -0,0 +1 @@
1
+ export {};
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vona-module-a-logger",
3
3
  "type": "module",
4
- "version": "5.0.8",
4
+ "version": "5.0.10",
5
5
  "title": "a-logger",
6
6
  "vonaModule": {
7
7
  "dependencies": {}
@@ -28,8 +28,12 @@
28
28
  "dependencies": {
29
29
  "pino-std-serializers": "^7.0.0"
30
30
  },
31
+ "devDependencies": {
32
+ "clean-package": "^2.2.0",
33
+ "rimraf": "^6.0.1"
34
+ },
31
35
  "scripts": {
32
- "clean": "rimraf dist tsconfig.tsbuildinfo",
33
- "tsc:publish": "npm run clean && tsc"
36
+ "clean": "rimraf dist tsconfig.build.tsbuildinfo",
37
+ "tsc:publish": "npm run clean && tsc -p tsconfig.build.json"
34
38
  }
35
39
  }