@jmlq/logger 0.1.0-alpha.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/Composite/index.d.ts +9 -0
- package/dist/Composite/index.js +23 -0
- package/dist/Factory/index.d.ts +5 -0
- package/dist/Factory/index.js +23 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +19 -0
- package/dist/interfaces/index.d.ts +35 -0
- package/dist/interfaces/index.js +13 -0
- package/package.json +19 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { GetLogsFilter, ILogDatasource, Log } from "..";
|
|
2
|
+
export declare class CompositeDatasource implements ILogDatasource {
|
|
3
|
+
private readonly datasources;
|
|
4
|
+
constructor(datasources: ILogDatasource[]);
|
|
5
|
+
save(log: Log): Promise<void>;
|
|
6
|
+
find(filter?: GetLogsFilter): Promise<Log[]>;
|
|
7
|
+
flush(): Promise<void>;
|
|
8
|
+
dispose(): Promise<void>;
|
|
9
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CompositeDatasource = void 0;
|
|
4
|
+
// ---- Composite fan-out ----
|
|
5
|
+
class CompositeDatasource {
|
|
6
|
+
constructor(datasources) {
|
|
7
|
+
this.datasources = datasources;
|
|
8
|
+
}
|
|
9
|
+
async save(log) {
|
|
10
|
+
await Promise.allSettled(this.datasources.map((ds) => ds.save(log)));
|
|
11
|
+
}
|
|
12
|
+
async find(filter = {}) {
|
|
13
|
+
const primary = this.datasources[0];
|
|
14
|
+
return (await primary?.find?.(filter)) ?? [];
|
|
15
|
+
}
|
|
16
|
+
async flush() {
|
|
17
|
+
await Promise.all(this.datasources.map((ds) => ds.flush?.() ?? Promise.resolve()));
|
|
18
|
+
}
|
|
19
|
+
async dispose() {
|
|
20
|
+
await Promise.all(this.datasources.map((ds) => ds.dispose?.() ?? Promise.resolve()));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
exports.CompositeDatasource = CompositeDatasource;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createLogger = createLogger;
|
|
4
|
+
const __1 = require("..");
|
|
5
|
+
function createLogger(ds, opts) {
|
|
6
|
+
const write = async (level, message, meta) => {
|
|
7
|
+
if (level < opts.minLevel)
|
|
8
|
+
return;
|
|
9
|
+
// (Opcional) redactor PII aquí si opts.redactPII === true
|
|
10
|
+
await ds.save({ level, message, meta, timestamp: Date.now() });
|
|
11
|
+
};
|
|
12
|
+
const logger = {
|
|
13
|
+
trace: (m, meta) => write(__1.LogLevel.TRACE, m, meta),
|
|
14
|
+
debug: (m, meta) => write(__1.LogLevel.DEBUG, m, meta),
|
|
15
|
+
info: (m, meta) => write(__1.LogLevel.INFO, m, meta),
|
|
16
|
+
warn: (m, meta) => write(__1.LogLevel.WARN, m, meta),
|
|
17
|
+
error: (m, meta) => write(__1.LogLevel.ERROR, m, meta),
|
|
18
|
+
fatal: (m, meta) => write(__1.LogLevel.FATAL, m, meta),
|
|
19
|
+
flush: () => ds.flush?.() ?? Promise.resolve(),
|
|
20
|
+
dispose: () => ds.dispose?.() ?? Promise.resolve(),
|
|
21
|
+
};
|
|
22
|
+
return logger;
|
|
23
|
+
}
|
package/dist/index.d.ts
ADDED
package/dist/index.js
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
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 __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./interfaces"), exports);
|
|
18
|
+
__exportStar(require("./Factory"), exports);
|
|
19
|
+
__exportStar(require("./Composite"), exports);
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export declare enum LogLevel {
|
|
2
|
+
TRACE = 0,
|
|
3
|
+
DEBUG = 1,
|
|
4
|
+
INFO = 2,
|
|
5
|
+
WARN = 3,
|
|
6
|
+
ERROR = 4,
|
|
7
|
+
FATAL = 5
|
|
8
|
+
}
|
|
9
|
+
export interface Log {
|
|
10
|
+
level: LogLevel;
|
|
11
|
+
message: string;
|
|
12
|
+
meta?: unknown;
|
|
13
|
+
timestamp: number;
|
|
14
|
+
}
|
|
15
|
+
export interface GetLogsFilter {
|
|
16
|
+
levelMin?: LogLevel;
|
|
17
|
+
since?: number;
|
|
18
|
+
until?: number;
|
|
19
|
+
}
|
|
20
|
+
export interface ILogDatasource {
|
|
21
|
+
save(log: Log): Promise<void>;
|
|
22
|
+
find?(filter?: GetLogsFilter): Promise<Log[]>;
|
|
23
|
+
flush?(): Promise<void>;
|
|
24
|
+
dispose?(): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
export interface Logger {
|
|
27
|
+
trace: (msg: string, meta?: unknown) => Promise<void>;
|
|
28
|
+
debug: (msg: string, meta?: unknown) => Promise<void>;
|
|
29
|
+
info: (msg: string, meta?: unknown) => Promise<void>;
|
|
30
|
+
warn: (msg: string, meta?: unknown) => Promise<void>;
|
|
31
|
+
error: (msg: string, meta?: unknown) => Promise<void>;
|
|
32
|
+
fatal: (msg: string, meta?: unknown) => Promise<void>;
|
|
33
|
+
flush?: () => Promise<void>;
|
|
34
|
+
dispose?: () => Promise<void>;
|
|
35
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LogLevel = void 0;
|
|
4
|
+
// ---- Types & contratos ----
|
|
5
|
+
var LogLevel;
|
|
6
|
+
(function (LogLevel) {
|
|
7
|
+
LogLevel[LogLevel["TRACE"] = 0] = "TRACE";
|
|
8
|
+
LogLevel[LogLevel["DEBUG"] = 1] = "DEBUG";
|
|
9
|
+
LogLevel[LogLevel["INFO"] = 2] = "INFO";
|
|
10
|
+
LogLevel[LogLevel["WARN"] = 3] = "WARN";
|
|
11
|
+
LogLevel[LogLevel["ERROR"] = 4] = "ERROR";
|
|
12
|
+
LogLevel[LogLevel["FATAL"] = 5] = "FATAL";
|
|
13
|
+
})(LogLevel || (exports.LogLevel = LogLevel = {}));
|
package/package.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@jmlq/logger",
|
|
3
|
+
"version": "0.1.0-alpha.0",
|
|
4
|
+
"author": "MLahuasi",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist"
|
|
9
|
+
],
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsc -p tsconfig.json",
|
|
12
|
+
"prepublishOnly": "pnpm build"
|
|
13
|
+
},
|
|
14
|
+
"devDependencies": {
|
|
15
|
+
"@types/node": "^24.3.0",
|
|
16
|
+
"tsx": "^4.20.5",
|
|
17
|
+
"typescript": "^5.9.2"
|
|
18
|
+
}
|
|
19
|
+
}
|