@mantajs/adapter-logger-pino 0.2.0-beta.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.
@@ -0,0 +1,31 @@
1
+ import type { ILoggerPort } from '@mantajs/core/ports';
2
+ export interface PinoLoggerOptions {
3
+ level?: string;
4
+ pretty?: boolean;
5
+ }
6
+ export declare class PinoLoggerAdapter implements ILoggerPort {
7
+ private logger;
8
+ private _level;
9
+ private readonly _defaultLevel;
10
+ private _activities;
11
+ constructor(options?: PinoLoggerOptions);
12
+ error(msg: string, ...args: unknown[]): void;
13
+ warn(msg: string, ...args: unknown[]): void;
14
+ info(msg: string, ...args: unknown[]): void;
15
+ http(msg: string, ...args: unknown[]): void;
16
+ verbose(msg: string, ...args: unknown[]): void;
17
+ debug(msg: string, ...args: unknown[]): void;
18
+ silly(msg: string, ...args: unknown[]): void;
19
+ panic(data: unknown): void;
20
+ activity(msg: string): string;
21
+ progress(id: string, msg: string): void;
22
+ success(id: string, msg: string): void;
23
+ failure(id: string, msg: string): void;
24
+ shouldLog(level: string): boolean;
25
+ setLogLevel(level: string): void;
26
+ unsetLogLevel(): void;
27
+ dispose(): void;
28
+ private mantaToPinoLevel;
29
+ private logWithData;
30
+ }
31
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAmCtD,MAAM,WAAW,iBAAiB;IAChC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,qBAAa,iBAAkB,YAAW,WAAW;IACnD,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAQ;IACtC,OAAO,CAAC,WAAW,CAA4B;gBAEnC,OAAO,GAAE,iBAAsB;IAyB3C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK5C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK3C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK3C,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK3C,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK9C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK5C,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI;IAK5C,KAAK,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI;IAQ1B,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAS7B,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAMvC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAOtC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI;IAOtC,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAOjC,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAKhC,aAAa,IAAI,IAAI;IAKrB,OAAO,IAAI,IAAI;IAIf,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,WAAW;CAWpB"}
@@ -0,0 +1,166 @@
1
+ // SPEC-067/082 — PinoLoggerAdapter implements ILoggerPort
2
+ import pino from 'pino';
3
+ /**
4
+ * Maps Manta log levels to Pino log levels.
5
+ * Manta has 8 levels; Pino has 6. We map as follows:
6
+ * error→error, warn→warn, info→info, http→info,
7
+ * verbose→debug, debug→debug, silly→trace, panic→fatal
8
+ */
9
+ const MANTA_TO_PINO = {
10
+ error: 'error',
11
+ warn: 'warn',
12
+ info: 'info',
13
+ http: 'info',
14
+ verbose: 'debug',
15
+ debug: 'debug',
16
+ silly: 'trace',
17
+ panic: 'fatal',
18
+ };
19
+ /**
20
+ * Manta level hierarchy (lower number = higher priority).
21
+ * panic always logs regardless of threshold.
22
+ */
23
+ const MANTA_LEVELS = {
24
+ panic: -1,
25
+ error: 0,
26
+ warn: 1,
27
+ info: 2,
28
+ http: 3,
29
+ verbose: 4,
30
+ debug: 5,
31
+ silly: 6,
32
+ };
33
+ export class PinoLoggerAdapter {
34
+ logger;
35
+ _level;
36
+ _defaultLevel;
37
+ _activities = new Map();
38
+ constructor(options = {}) {
39
+ this._defaultLevel = options.level ?? 'silly';
40
+ this._level = this._defaultLevel;
41
+ const pinoLevel = this.mantaToPinoLevel(this._level);
42
+ if (options.pretty) {
43
+ try {
44
+ this.logger = pino({
45
+ level: pinoLevel,
46
+ transport: {
47
+ target: 'pino-pretty',
48
+ options: { colorize: true },
49
+ },
50
+ });
51
+ }
52
+ catch {
53
+ // pino-pretty uses worker threads which require __dirname (unavailable in ESM bundles
54
+ // on Vercel/Lambda). Fall back to plain JSON logging.
55
+ this.logger = pino({ level: pinoLevel });
56
+ }
57
+ }
58
+ else {
59
+ this.logger = pino({ level: pinoLevel });
60
+ }
61
+ }
62
+ error(msg, ...args) {
63
+ if (!this.shouldLog('error'))
64
+ return;
65
+ this.logWithData('error', msg, args);
66
+ }
67
+ warn(msg, ...args) {
68
+ if (!this.shouldLog('warn'))
69
+ return;
70
+ this.logWithData('warn', msg, args);
71
+ }
72
+ info(msg, ...args) {
73
+ if (!this.shouldLog('info'))
74
+ return;
75
+ this.logWithData('info', msg, args);
76
+ }
77
+ http(msg, ...args) {
78
+ if (!this.shouldLog('http'))
79
+ return;
80
+ this.logWithData('info', msg, args);
81
+ }
82
+ verbose(msg, ...args) {
83
+ if (!this.shouldLog('verbose'))
84
+ return;
85
+ this.logWithData('debug', msg, args);
86
+ }
87
+ debug(msg, ...args) {
88
+ if (!this.shouldLog('debug'))
89
+ return;
90
+ this.logWithData('debug', msg, args);
91
+ }
92
+ silly(msg, ...args) {
93
+ if (!this.shouldLog('silly'))
94
+ return;
95
+ this.logWithData('trace', msg, args);
96
+ }
97
+ panic(data) {
98
+ if (typeof data === 'string') {
99
+ this.logger.fatal(data);
100
+ }
101
+ else {
102
+ this.logger.fatal({ data }, 'PANIC');
103
+ }
104
+ }
105
+ activity(msg) {
106
+ const id = crypto.randomUUID();
107
+ this._activities.set(id, msg);
108
+ if (this.shouldLog('info')) {
109
+ this.logger.info(`[activity:${id}] ${msg}`);
110
+ }
111
+ return id;
112
+ }
113
+ progress(id, msg) {
114
+ if (this.shouldLog('info')) {
115
+ this.logger.info(`[progress:${id}] ${msg}`);
116
+ }
117
+ }
118
+ success(id, msg) {
119
+ if (this.shouldLog('info')) {
120
+ this.logger.info(`[success:${id}] ${msg}`);
121
+ }
122
+ this._activities.delete(id);
123
+ }
124
+ failure(id, msg) {
125
+ if (this.shouldLog('error')) {
126
+ this.logger.error(`[failure:${id}] ${msg}`);
127
+ }
128
+ this._activities.delete(id);
129
+ }
130
+ shouldLog(level) {
131
+ if (level === 'panic')
132
+ return true;
133
+ const threshold = MANTA_LEVELS[this._level] ?? 2;
134
+ const requested = MANTA_LEVELS[level] ?? 2;
135
+ return requested <= threshold;
136
+ }
137
+ setLogLevel(level) {
138
+ this._level = level;
139
+ this.logger.level = this.mantaToPinoLevel(level);
140
+ }
141
+ unsetLogLevel() {
142
+ this._level = this._defaultLevel;
143
+ this.logger.level = this.mantaToPinoLevel(this._defaultLevel);
144
+ }
145
+ dispose() {
146
+ this.logger.flush();
147
+ }
148
+ mantaToPinoLevel(mantaLevel) {
149
+ return MANTA_TO_PINO[mantaLevel] ?? 'info';
150
+ }
151
+ logWithData(pinoLevel, msg, args) {
152
+ const logFn = this.logger[pinoLevel];
153
+ if (!logFn)
154
+ return;
155
+ if (args.length === 0) {
156
+ logFn.call(this.logger, msg);
157
+ }
158
+ else if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null) {
159
+ logFn.call(this.logger, args[0], msg);
160
+ }
161
+ else {
162
+ logFn.call(this.logger, { data: args.length === 1 ? args[0] : args }, msg);
163
+ }
164
+ }
165
+ }
166
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../src/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type { PinoLoggerOptions } from './adapter';
2
+ export { PinoLoggerAdapter } from './adapter';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,YAAY,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA"}
package/dist/index.js ADDED
@@ -0,0 +1,3 @@
1
+ // SPEC-067/082 — @mantajs/adapter-logger-pino barrel export
2
+ export { PinoLoggerAdapter } from './adapter';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4DAA4D;AAG5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA"}
package/package.json ADDED
@@ -0,0 +1,24 @@
1
+ {
2
+ "name": "@mantajs/adapter-logger-pino",
3
+ "version": "0.2.0-beta.0",
4
+ "type": "module",
5
+ "main": "./dist/index.js",
6
+ "types": "./dist/index.d.ts",
7
+ "exports": {
8
+ ".": {
9
+ "types": "./dist/index.d.ts",
10
+ "import": "./dist/index.js",
11
+ "default": "./dist/index.js"
12
+ }
13
+ },
14
+ "dependencies": {
15
+ "pino": "^9.0.0",
16
+ "pino-pretty": "^11.0.0"
17
+ },
18
+ "peerDependencies": {
19
+ "@mantajs/core": "0.2.0-beta.0"
20
+ },
21
+ "files": [
22
+ "dist"
23
+ ]
24
+ }