zeddy-logger 1.0.3 → 1.0.5

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.
Files changed (112) hide show
  1. package/README.md +12 -104
  2. package/dist/_virtual/rolldown_runtime.cjs +29 -0
  3. package/dist/index.cjs +5 -0
  4. package/dist/index.d.cts +3 -0
  5. package/dist/index.d.mts +3 -0
  6. package/dist/index.mjs +4 -0
  7. package/dist/logger-base.cjs +20 -0
  8. package/dist/logger-base.d.cts +22 -0
  9. package/dist/logger-base.d.cts.map +1 -0
  10. package/dist/logger-base.d.mts +22 -0
  11. package/dist/logger-base.d.mts.map +1 -0
  12. package/dist/logger-base.mjs +20 -0
  13. package/dist/logger-base.mjs.map +1 -0
  14. package/dist/outputs/console-output.cjs +23 -0
  15. package/dist/outputs/console-output.d.cts +22 -0
  16. package/dist/outputs/console-output.d.cts.map +1 -0
  17. package/dist/outputs/console-output.d.mts +22 -0
  18. package/dist/outputs/console-output.d.mts.map +1 -0
  19. package/dist/outputs/console-output.mjs +23 -0
  20. package/dist/outputs/console-output.mjs.map +1 -0
  21. package/dist/outputs/file-output.cjs +34 -0
  22. package/dist/outputs/file-output.d.cts +17 -0
  23. package/dist/outputs/file-output.d.cts.map +1 -0
  24. package/dist/outputs/file-output.d.mts +17 -0
  25. package/dist/outputs/file-output.d.mts.map +1 -0
  26. package/dist/outputs/file-output.mjs +33 -0
  27. package/dist/outputs/file-output.mjs.map +1 -0
  28. package/dist/outputs/json-output.cjs +25 -0
  29. package/dist/outputs/json-output.d.cts +15 -0
  30. package/dist/outputs/json-output.d.cts.map +1 -0
  31. package/dist/outputs/json-output.d.mts +15 -0
  32. package/dist/outputs/json-output.d.mts.map +1 -0
  33. package/dist/outputs/json-output.mjs +24 -0
  34. package/dist/outputs/json-output.mjs.map +1 -0
  35. package/dist/outputs.cjs +7 -0
  36. package/dist/outputs.d.cts +4 -0
  37. package/dist/outputs.d.mts +4 -0
  38. package/dist/outputs.mjs +5 -0
  39. package/dist/standard-logger.cjs +57 -0
  40. package/dist/standard-logger.d.cts +14 -0
  41. package/dist/standard-logger.d.cts.map +1 -0
  42. package/dist/standard-logger.d.mts +14 -0
  43. package/dist/standard-logger.d.mts.map +1 -0
  44. package/dist/standard-logger.mjs +58 -0
  45. package/dist/standard-logger.mjs.map +1 -0
  46. package/package.json +31 -31
  47. package/.prettierrc +0 -14
  48. package/LICENSE +0 -24
  49. package/dist/cjs/index.d.ts +0 -4
  50. package/dist/cjs/index.d.ts.map +0 -1
  51. package/dist/cjs/index.js +0 -8
  52. package/dist/cjs/index.js.map +0 -1
  53. package/dist/cjs/logger-base.d.ts +0 -19
  54. package/dist/cjs/logger-base.d.ts.map +0 -1
  55. package/dist/cjs/logger-base.js +0 -35
  56. package/dist/cjs/logger-base.js.map +0 -1
  57. package/dist/cjs/outputs/console-output.d.ts +0 -18
  58. package/dist/cjs/outputs/console-output.d.ts.map +0 -1
  59. package/dist/cjs/outputs/console-output.js +0 -42
  60. package/dist/cjs/outputs/console-output.js.map +0 -1
  61. package/dist/cjs/outputs/file-output.d.ts +0 -13
  62. package/dist/cjs/outputs/file-output.d.ts.map +0 -1
  63. package/dist/cjs/outputs/file-output.js +0 -70
  64. package/dist/cjs/outputs/file-output.js.map +0 -1
  65. package/dist/cjs/outputs/json-output.d.ts +0 -11
  66. package/dist/cjs/outputs/json-output.d.ts.map +0 -1
  67. package/dist/cjs/outputs/json-output.js +0 -56
  68. package/dist/cjs/outputs/json-output.js.map +0 -1
  69. package/dist/cjs/outputs/outputs.d.ts +0 -5
  70. package/dist/cjs/outputs/outputs.d.ts.map +0 -1
  71. package/dist/cjs/outputs/outputs.js +0 -10
  72. package/dist/cjs/outputs/outputs.js.map +0 -1
  73. package/dist/cjs/package.json +0 -1
  74. package/dist/cjs/standard-logger.d.ts +0 -27
  75. package/dist/cjs/standard-logger.d.ts.map +0 -1
  76. package/dist/cjs/standard-logger.js +0 -29
  77. package/dist/cjs/standard-logger.js.map +0 -1
  78. package/dist/esm/index.d.ts +0 -4
  79. package/dist/esm/index.d.ts.map +0 -1
  80. package/dist/esm/index.js +0 -4
  81. package/dist/esm/index.js.map +0 -1
  82. package/dist/esm/logger-base.d.ts +0 -19
  83. package/dist/esm/logger-base.d.ts.map +0 -1
  84. package/dist/esm/logger-base.js +0 -21
  85. package/dist/esm/logger-base.js.map +0 -1
  86. package/dist/esm/outputs/console-output.d.ts +0 -18
  87. package/dist/esm/outputs/console-output.d.ts.map +0 -1
  88. package/dist/esm/outputs/console-output.js +0 -26
  89. package/dist/esm/outputs/console-output.js.map +0 -1
  90. package/dist/esm/outputs/file-output.d.ts +0 -13
  91. package/dist/esm/outputs/file-output.d.ts.map +0 -1
  92. package/dist/esm/outputs/file-output.js +0 -34
  93. package/dist/esm/outputs/file-output.js.map +0 -1
  94. package/dist/esm/outputs/json-output.d.ts +0 -11
  95. package/dist/esm/outputs/json-output.d.ts.map +0 -1
  96. package/dist/esm/outputs/json-output.js +0 -21
  97. package/dist/esm/outputs/json-output.js.map +0 -1
  98. package/dist/esm/outputs/outputs.d.ts +0 -5
  99. package/dist/esm/outputs/outputs.d.ts.map +0 -1
  100. package/dist/esm/outputs/outputs.js +0 -5
  101. package/dist/esm/outputs/outputs.js.map +0 -1
  102. package/dist/esm/package.json +0 -1
  103. package/dist/esm/standard-logger.d.ts +0 -27
  104. package/dist/esm/standard-logger.d.ts.map +0 -1
  105. package/dist/esm/standard-logger.js +0 -25
  106. package/dist/esm/standard-logger.js.map +0 -1
  107. package/examples/logger.ts +0 -19
  108. package/examples/main.ts +0 -8
  109. package/tsconfig.base.json +0 -105
  110. package/tsconfig.cjs.json +0 -8
  111. package/tsconfig.esm.json +0 -8
  112. package/zeddy-logger-1.0.3.tgz +0 -0
package/README.md CHANGED
@@ -1,115 +1,23 @@
1
- # Zeddy Logger
2
- Zeddy Logger is a simple zero-dependency logging library that integrates well with NestJS
3
- and allows great flexibility.
1
+ # tsdown-starter
4
2
 
5
- This library closely follows suggestions written in my upcoming book 'Pragmatic Node.js development: Primer in NestJS'.
3
+ A starter for creating a TypeScript package.
6
4
 
5
+ ## Development
7
6
 
8
- ### Note
9
- As this is only a library each app should create their own version of logger, but for simple projects provided
10
- ```StandardLogger``` is good base class to extend.
7
+ - Install dependencies:
11
8
 
12
- ### Basic Usage
13
- Simple example is provided below but more advanced usage for NestJS is in example repo https://github.com/zveljkovic/zeddy-logger-example
14
- ```typescript
15
- // logger.ts
16
- export class Logger extends StandardLogger {
17
- constructor(filename: string) {
18
- super([
19
- new ConsoleOutput({
20
- tagToConsoleFunctionMap: [
21
- {tagName: 'log-level', tagValue: 'info', consoleFunction: 'info'},
22
- {tagName: 'log-level', tagValue: 'debug', consoleFunction: 'debug'},
23
- ],
24
- }),
25
- new FileOutput({
26
- filename,
27
- }),
28
- ]);
29
- }
30
- }
31
-
32
- // some code file
33
- const logger = new Logger('logs.txt');
34
- logger.info('test message', {a: 1, b: 2});
9
+ ```bash
10
+ npm install
35
11
  ```
36
12
 
37
- ### NestJS Request Based Logger
38
- If you want to log some additional information from NestJS http request (for example some headers),
39
- recommended way is to enrich the request object in interceptor.
40
-
41
- ```typescript
42
- // app-request.ts
43
- import {Request} from "express";
44
-
45
- export type AppRequest = Request & { randomNumberFromInterceptor: number };
46
- ```
47
- ```typescript
48
- // request.interceptor.ts
49
- import {
50
- Injectable,
51
- NestInterceptor,
52
- ExecutionContext,
53
- CallHandler,
54
- } from '@nestjs/common';
55
- import { Observable } from 'rxjs';
56
- import { AppRequest } from './app-request';
13
+ - Run the unit tests:
57
14
 
58
- @Injectable()
59
- export class RequestInterceptor implements NestInterceptor {
60
- intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
61
- const request = context.switchToHttp().getRequest<AppRequest>();
62
- request.randomNumberFromInterceptor = Math.random() * 42;
63
- return next.handle();
64
- }
65
- }
15
+ ```bash
16
+ npm run test
66
17
  ```
67
- With the above we can plug it in NestJS and each request will contain ```randomNumberFromInterceptor```
68
- but that could also be any value available in request.
69
18
 
70
- With that value in request now we can create request scoped logger that will add
71
- that value to any logs made with it.
19
+ - Build the library:
72
20
 
73
- ```typescript
74
- // request-based-logger.ts
75
- import { Inject, Injectable, Scope } from '@nestjs/common';
76
- import { AppRequest } from './app-request';
77
- import { REQUEST } from '@nestjs/core';
78
- import { StandardLogger } from 'zeddy-logger';
79
- import { ConsoleOutput, FileOutput } from 'zeddy-logger/outputs';
80
-
81
- @Injectable({ scope: Scope.REQUEST })
82
- export class RequestBasedLogger extends StandardLogger {
83
- constructor(@Inject(REQUEST) private request: AppRequest) {
84
- const outputs = [
85
- new ConsoleOutput({
86
- transform: async (logData) => {
87
- return {
88
- message: logData.message,
89
- tags: logData.tags,
90
- data: {
91
- ...logData.data,
92
- randomNumberFromInterceptor: request.randomNumberFromInterceptor,
93
- },
94
- };
95
- },
96
- tagToConsoleFunctionMap: [
97
- { tagName: 'log-level', tagValue: 'info', consoleFunction: 'info' },
98
- { tagName: 'log-level', tagValue: 'debug', consoleFunction: 'debug' },
99
- ],
100
- }),
101
- new FileOutput({
102
- filename: 'logs.txt',
103
- }),
104
- ];
105
- super(outputs);
106
- }
107
- }
21
+ ```bash
22
+ npm run build
108
23
  ```
109
-
110
-
111
- ### Example project
112
- Example project can be found on [https://github.com/zveljkovic/zeddy-logger-example](https://github.com/zveljkovic/zeddy-logger-example).
113
- It features even more advanced usage that allows not to react to "level" of the
114
- log message but also on "type". This is useful if you want to
115
- treat logs about outbound http requests differently from textual logs.
@@ -0,0 +1,29 @@
1
+ //#region rolldown:runtime
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) {
13
+ __defProp(to, key, {
14
+ get: ((k) => from[k]).bind(null, key),
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ }
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
+ value: mod,
24
+ enumerable: true
25
+ }) : target, mod));
26
+
27
+ //#endregion
28
+
29
+ exports.__toESM = __toESM;
package/dist/index.cjs ADDED
@@ -0,0 +1,5 @@
1
+ const require_logger_base = require('./logger-base.cjs');
2
+ const require_standard_logger = require('./standard-logger.cjs');
3
+
4
+ exports.LoggerBase = require_logger_base.LoggerBase;
5
+ exports.StandardLogger = require_standard_logger.StandardLogger;
@@ -0,0 +1,3 @@
1
+ import { LoggerBase } from "./logger-base.cjs";
2
+ import { StandardLogger } from "./standard-logger.cjs";
3
+ export { LoggerBase, StandardLogger };
@@ -0,0 +1,3 @@
1
+ import { LoggerBase } from "./logger-base.mjs";
2
+ import { StandardLogger } from "./standard-logger.mjs";
3
+ export { LoggerBase, StandardLogger };
package/dist/index.mjs ADDED
@@ -0,0 +1,4 @@
1
+ import { LoggerBase } from "./logger-base.mjs";
2
+ import { StandardLogger } from "./standard-logger.mjs";
3
+
4
+ export { LoggerBase, StandardLogger };
@@ -0,0 +1,20 @@
1
+
2
+ //#region src/logger-base.ts
3
+ var LoggerBase = class {
4
+ constructor(logOutputs) {
5
+ this.logOutputs = logOutputs;
6
+ }
7
+ async log(logData) {
8
+ for (const logOutput of this.logOutputs) {
9
+ if (!logOutput.transform) {
10
+ await logOutput.log(logData);
11
+ continue;
12
+ }
13
+ const transformedLogData = await logOutput.transform(logData);
14
+ if (transformedLogData) await logOutput.log(transformedLogData);
15
+ }
16
+ }
17
+ };
18
+
19
+ //#endregion
20
+ exports.LoggerBase = LoggerBase;
@@ -0,0 +1,22 @@
1
+ //#region src/logger-base.d.ts
2
+ type LogTag = {
3
+ name: string;
4
+ value: string;
5
+ };
6
+ type LogData = {
7
+ message: string;
8
+ data: any;
9
+ tags: LogTag[];
10
+ };
11
+ type LogOutput = {
12
+ log: (logData: LogData) => Promise<void>;
13
+ transform?: (logData: LogData) => Promise<LogData | null>;
14
+ };
15
+ declare class LoggerBase {
16
+ private logOutputs;
17
+ constructor(logOutputs: LogOutput[]);
18
+ log(logData: LogData): Promise<void>;
19
+ }
20
+ //#endregion
21
+ export { LogData, LogOutput, LogTag, LoggerBase };
22
+ //# sourceMappingURL=logger-base.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-base.d.cts","names":[],"sources":["../src/logger-base.ts"],"sourcesContent":[],"mappings":";KAAY,MAAA;EAAA,IAAA,EAAA,MAAM;EAKN,KAAA,EAAA,MAAO;AAMnB,CAAA;AACiB,KAPL,OAAA,GAOK;EAAY,OAAA,EAAA,MAAA;EACL,IAAA,EAAA,GAAA;EAAoB,IAAA,EALpC,MAKoC,EAAA;CAAR;AAAO,KAF/B,SAAA,GAE+B;EAG9B,GAAA,EAAA,CAAA,OAAU,EAJN,OAIM,EAAA,GAJM,OAIN,CAAA,IAAA,CAAA;EACW,SAAA,CAAA,EAAA,CAAA,OAAA,EAJV,OAIU,EAAA,GAJE,OAIF,CAJU,OAIV,GAAA,IAAA,CAAA;CAEb;AAAO,cAHf,UAAA,CAGe;EAAA,QAAA,UAAA;0BAFM;eAEb,UAAO"}
@@ -0,0 +1,22 @@
1
+ //#region src/logger-base.d.ts
2
+ type LogTag = {
3
+ name: string;
4
+ value: string;
5
+ };
6
+ type LogData = {
7
+ message: string;
8
+ data: any;
9
+ tags: LogTag[];
10
+ };
11
+ type LogOutput = {
12
+ log: (logData: LogData) => Promise<void>;
13
+ transform?: (logData: LogData) => Promise<LogData | null>;
14
+ };
15
+ declare class LoggerBase {
16
+ private logOutputs;
17
+ constructor(logOutputs: LogOutput[]);
18
+ log(logData: LogData): Promise<void>;
19
+ }
20
+ //#endregion
21
+ export { LogData, LogOutput, LogTag, LoggerBase };
22
+ //# sourceMappingURL=logger-base.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-base.d.mts","names":[],"sources":["../src/logger-base.ts"],"sourcesContent":[],"mappings":";KAAY,MAAA;EAAA,IAAA,EAAA,MAAM;EAKN,KAAA,EAAA,MAAO;AAMnB,CAAA;AACiB,KAPL,OAAA,GAOK;EAAY,OAAA,EAAA,MAAA;EACL,IAAA,EAAA,GAAA;EAAoB,IAAA,EALpC,MAKoC,EAAA;CAAR;AAAO,KAF/B,SAAA,GAE+B;EAG9B,GAAA,EAAA,CAAA,OAAU,EAJN,OAIM,EAAA,GAJM,OAIN,CAAA,IAAA,CAAA;EACW,SAAA,CAAA,EAAA,CAAA,OAAA,EAJV,OAIU,EAAA,GAJE,OAIF,CAJU,OAIV,GAAA,IAAA,CAAA;CAEb;AAAO,cAHf,UAAA,CAGe;EAAA,QAAA,UAAA;0BAFM;eAEb,UAAO"}
@@ -0,0 +1,20 @@
1
+ //#region src/logger-base.ts
2
+ var LoggerBase = class {
3
+ constructor(logOutputs) {
4
+ this.logOutputs = logOutputs;
5
+ }
6
+ async log(logData) {
7
+ for (const logOutput of this.logOutputs) {
8
+ if (!logOutput.transform) {
9
+ await logOutput.log(logData);
10
+ continue;
11
+ }
12
+ const transformedLogData = await logOutput.transform(logData);
13
+ if (transformedLogData) await logOutput.log(transformedLogData);
14
+ }
15
+ }
16
+ };
17
+
18
+ //#endregion
19
+ export { LoggerBase };
20
+ //# sourceMappingURL=logger-base.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger-base.mjs","names":["logOutputs: LogOutput[]"],"sources":["../src/logger-base.ts"],"sourcesContent":["export type LogTag = {\n name: string;\n value: string;\n};\n\nexport type LogData = {\n message: string;\n data: any;\n tags: LogTag[];\n};\n\nexport type LogOutput = {\n log: (logData: LogData) => Promise<void>;\n transform?: (logData: LogData) => Promise<LogData | null>;\n};\n\nexport class LoggerBase {\n constructor(private logOutputs: LogOutput[]) {}\n\n async log(logData: LogData) {\n for (const logOutput of this.logOutputs) {\n if (!logOutput.transform) {\n // no transform function, just log\n await logOutput.log(logData);\n continue;\n }\n // There is a transformation function\n // This might return null to prevent sending\n const transformedLogData = await logOutput.transform(logData);\n if (transformedLogData)\n await logOutput.log(transformedLogData);\n }\n }\n}\n"],"mappings":";AAgBA,IAAa,aAAb,MAAwB;CACtB,YAAY,AAAQA,YAAyB;EAAzB;;CAEpB,MAAM,IAAI,SAAkB;AAC1B,OAAK,MAAM,aAAa,KAAK,YAAY;AACvC,OAAI,CAAC,UAAU,WAAW;AAExB,UAAM,UAAU,IAAI,QAAQ;AAC5B;;GAIF,MAAM,qBAAqB,MAAM,UAAU,UAAU,QAAQ;AAC7D,OAAI,mBACF,OAAM,UAAU,IAAI,mBAAmB"}
@@ -0,0 +1,23 @@
1
+
2
+ //#region src/outputs/console-output.ts
3
+ var ConsoleOutput = class {
4
+ constructor(opts) {
5
+ this.opts = opts;
6
+ }
7
+ async log(logData) {
8
+ let logFunction = "log";
9
+ if (this.opts.tagToConsoleFunctionMap) for (const tag of logData.tags) {
10
+ const consoleFunctionMap = this.opts.tagToConsoleFunctionMap.filter((x) => x.tagName === tag.name && x.tagValue === tag.value);
11
+ if (consoleFunctionMap.length > 0) logFunction = consoleFunctionMap[0].consoleFunction;
12
+ }
13
+ if (logData.data) return console[logFunction](logData.message, logData.data);
14
+ return console[logFunction](logData.message);
15
+ }
16
+ async transform(logData) {
17
+ if (this.opts.transform) return this.opts.transform(logData);
18
+ return logData;
19
+ }
20
+ };
21
+
22
+ //#endregion
23
+ exports.ConsoleOutput = ConsoleOutput;
@@ -0,0 +1,22 @@
1
+ import { LogData, LogOutput, LogTag } from "../logger-base.cjs";
2
+
3
+ //#region src/outputs/console-output.d.ts
4
+ type ConsoleLogFunctions = 'info' | 'error' | 'debug' | 'log';
5
+ type ConsoleFunctionMap = {
6
+ tagName: LogTag['name'];
7
+ tagValue: LogTag['value'];
8
+ consoleFunction: ConsoleLogFunctions;
9
+ };
10
+ interface ConsoleOutputOptions {
11
+ transform?: (logData: LogData) => Promise<LogData>;
12
+ tagToConsoleFunctionMap?: ConsoleFunctionMap[];
13
+ }
14
+ declare class ConsoleOutput implements LogOutput {
15
+ protected opts: ConsoleOutputOptions;
16
+ constructor(opts: ConsoleOutputOptions);
17
+ log(logData: LogData): Promise<void>;
18
+ transform(logData: LogData): Promise<LogData>;
19
+ }
20
+ //#endregion
21
+ export { ConsoleOutput };
22
+ //# sourceMappingURL=console-output.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-output.d.cts","names":[],"sources":["../../src/outputs/console-output.ts"],"sourcesContent":[],"mappings":";;;KAEY,mBAAA;KACA,kBAAA;EADA,OAAA,EAED,MAFC,CAAA,MAAmB,CAAA;EACnB,QAAA,EAEA,MAFA,CAAA,OAAkB,CAAA;EACnB,eAAA,EAEQ,mBAFR;CACC;AACO,UAEF,oBAAA,CAFE;EAAmB,SAAA,CAAA,EAAA,CAAA,OAAA,EAGd,OAHc,EAAA,GAGF,OAHE,CAGM,OAHN,CAAA;EAErB,uBAAoB,CAAA,EAET,kBAFS,EAAA;;AACO,cAG/B,aAAA,YAAyB,SAHM,CAAA;EAAR,UAAA,IAAA,EAIN,oBAJM;EACR,WAAA,CAAA,IAAA,EAGE,oBAHF;EAAkB,GAAA,CAAA,OAAA,EAKzB,OALyB,CAAA,EAKlB,OALkB,CAAA,IAAA,CAAA;EAEjC,SAAA,CAAA,OAAc,EAmBA,OAnBA,CAAA,EAmBO,OAnBP,CAmBO,OAnBP,CAAA"}
@@ -0,0 +1,22 @@
1
+ import { LogData, LogOutput, LogTag } from "../logger-base.mjs";
2
+
3
+ //#region src/outputs/console-output.d.ts
4
+ type ConsoleLogFunctions = 'info' | 'error' | 'debug' | 'log';
5
+ type ConsoleFunctionMap = {
6
+ tagName: LogTag['name'];
7
+ tagValue: LogTag['value'];
8
+ consoleFunction: ConsoleLogFunctions;
9
+ };
10
+ interface ConsoleOutputOptions {
11
+ transform?: (logData: LogData) => Promise<LogData>;
12
+ tagToConsoleFunctionMap?: ConsoleFunctionMap[];
13
+ }
14
+ declare class ConsoleOutput implements LogOutput {
15
+ protected opts: ConsoleOutputOptions;
16
+ constructor(opts: ConsoleOutputOptions);
17
+ log(logData: LogData): Promise<void>;
18
+ transform(logData: LogData): Promise<LogData>;
19
+ }
20
+ //#endregion
21
+ export { ConsoleOutput };
22
+ //# sourceMappingURL=console-output.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-output.d.mts","names":[],"sources":["../../src/outputs/console-output.ts"],"sourcesContent":[],"mappings":";;;KAEY,mBAAA;KACA,kBAAA;EADA,OAAA,EAED,MAFC,CAAA,MAAmB,CAAA;EACnB,QAAA,EAEA,MAFA,CAAA,OAAkB,CAAA;EACnB,eAAA,EAEQ,mBAFR;CACC;AACO,UAEF,oBAAA,CAFE;EAAmB,SAAA,CAAA,EAAA,CAAA,OAAA,EAGd,OAHc,EAAA,GAGF,OAHE,CAGM,OAHN,CAAA;EAErB,uBAAoB,CAAA,EAET,kBAFS,EAAA;;AACO,cAG/B,aAAA,YAAyB,SAHM,CAAA;EAAR,UAAA,IAAA,EAIN,oBAJM;EACR,WAAA,CAAA,IAAA,EAGE,oBAHF;EAAkB,GAAA,CAAA,OAAA,EAKzB,OALyB,CAAA,EAKlB,OALkB,CAAA,IAAA,CAAA;EAEjC,SAAA,CAAA,OAAc,EAmBA,OAnBA,CAAA,EAmBO,OAnBP,CAmBO,OAnBP,CAAA"}
@@ -0,0 +1,23 @@
1
+ //#region src/outputs/console-output.ts
2
+ var ConsoleOutput = class {
3
+ constructor(opts) {
4
+ this.opts = opts;
5
+ }
6
+ async log(logData) {
7
+ let logFunction = "log";
8
+ if (this.opts.tagToConsoleFunctionMap) for (const tag of logData.tags) {
9
+ const consoleFunctionMap = this.opts.tagToConsoleFunctionMap.filter((x) => x.tagName === tag.name && x.tagValue === tag.value);
10
+ if (consoleFunctionMap.length > 0) logFunction = consoleFunctionMap[0].consoleFunction;
11
+ }
12
+ if (logData.data) return console[logFunction](logData.message, logData.data);
13
+ return console[logFunction](logData.message);
14
+ }
15
+ async transform(logData) {
16
+ if (this.opts.transform) return this.opts.transform(logData);
17
+ return logData;
18
+ }
19
+ };
20
+
21
+ //#endregion
22
+ export { ConsoleOutput };
23
+ //# sourceMappingURL=console-output.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-output.mjs","names":["opts: ConsoleOutputOptions"],"sources":["../../src/outputs/console-output.ts"],"sourcesContent":["import type {LogData, LogOutput, LogTag} from '../logger-base';\n\nexport type ConsoleLogFunctions = 'info' | 'error' | 'debug' | 'log';\nexport type ConsoleFunctionMap = {\n tagName: LogTag['name'];\n tagValue: LogTag['value'];\n consoleFunction: ConsoleLogFunctions;\n};\nexport interface ConsoleOutputOptions {\n transform?: (logData: LogData) => Promise<LogData>;\n tagToConsoleFunctionMap?: ConsoleFunctionMap[];\n}\nexport class ConsoleOutput implements LogOutput {\n constructor(protected opts: ConsoleOutputOptions) {}\n\n async log(logData: LogData) {\n let logFunction = 'log';\n if (this.opts.tagToConsoleFunctionMap) {\n for (const tag of logData.tags) {\n const consoleFunctionMap = this.opts.tagToConsoleFunctionMap.filter(\n (x) => x.tagName === tag.name && x.tagValue === tag.value,\n );\n if (consoleFunctionMap.length > 0) {\n logFunction = consoleFunctionMap[0].consoleFunction;\n }\n }\n }\n if (logData.data) return console[logFunction as ConsoleLogFunctions](logData.message, logData.data);\n return console[logFunction as ConsoleLogFunctions](logData.message);\n }\n\n async transform(logData: LogData) {\n if (this.opts.transform) return this.opts.transform(logData);\n return logData;\n }\n}\n"],"mappings":";AAYA,IAAa,gBAAb,MAAgD;CAC9C,YAAY,AAAUA,MAA4B;EAA5B;;CAEtB,MAAM,IAAI,SAAkB;EAC1B,IAAI,cAAc;AAClB,MAAI,KAAK,KAAK,wBACZ,MAAK,MAAM,OAAO,QAAQ,MAAM;GAC9B,MAAM,qBAAqB,KAAK,KAAK,wBAAwB,QAC1D,MAAM,EAAE,YAAY,IAAI,QAAQ,EAAE,aAAa,IAAI,MACrD;AACD,OAAI,mBAAmB,SAAS,EAC9B,eAAc,mBAAmB,GAAG;;AAI1C,MAAI,QAAQ,KAAM,QAAO,QAAQ,aAAoC,QAAQ,SAAS,QAAQ,KAAK;AACnG,SAAO,QAAQ,aAAoC,QAAQ,QAAQ;;CAGrE,MAAM,UAAU,SAAkB;AAChC,MAAI,KAAK,KAAK,UAAW,QAAO,KAAK,KAAK,UAAU,QAAQ;AAC5D,SAAO"}
@@ -0,0 +1,34 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ let fs = require("fs");
3
+ fs = require_rolldown_runtime.__toESM(fs);
4
+
5
+ //#region src/outputs/file-output.ts
6
+ var FileOutput = class {
7
+ _fd;
8
+ constructor(opts) {
9
+ this.opts = opts;
10
+ this._fd = fs.openSync(opts.filename, "a");
11
+ }
12
+ async log(logData) {
13
+ let message = logData.message ?? "";
14
+ if (logData.data) {
15
+ if (message.length > 0) message += " ";
16
+ message += logData.data;
17
+ }
18
+ message += "\n";
19
+ fs.appendFile(this._fd, message, { encoding: "utf-8" }, (err) => {
20
+ if (err) throw err;
21
+ });
22
+ }
23
+ async transform(logData) {
24
+ if (this.opts.transform) return this.opts.transform(logData);
25
+ if (logData.data) return {
26
+ ...logData,
27
+ data: JSON.stringify(logData.data)
28
+ };
29
+ return logData;
30
+ }
31
+ };
32
+
33
+ //#endregion
34
+ exports.FileOutput = FileOutput;
@@ -0,0 +1,17 @@
1
+ import { LogData, LogOutput } from "../logger-base.cjs";
2
+
3
+ //#region src/outputs/file-output.d.ts
4
+ interface FileOutputOptions {
5
+ transform?: (logData: LogData) => Promise<LogData>;
6
+ filename: string;
7
+ }
8
+ declare class FileOutput implements LogOutput {
9
+ protected opts: FileOutputOptions;
10
+ private readonly _fd;
11
+ constructor(opts: FileOutputOptions);
12
+ log(logData: LogData): Promise<void>;
13
+ transform(logData: LogData): Promise<LogData>;
14
+ }
15
+ //#endregion
16
+ export { FileOutput };
17
+ //# sourceMappingURL=file-output.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-output.d.cts","names":[],"sources":["../../src/outputs/file-output.ts"],"sourcesContent":[],"mappings":";;;UAGiB,iBAAA;wBACO,YAAY,QAAQ;EAD3B,QAAA,EAAA,MAAA;;AAC2B,cAI/B,UAAA,YAAsB,SAJS,CAAA;EAAR,UAAA,IAAA,EAON,iBAPM;EAAO,iBAAA,GAAA;EAI9B,WAAA,CAAA,IAAW,EAGM,iBAHN;EAGM,GAAA,CAAA,OAAA,EAIT,OAJS,CAAA,EAIF,OAJE,CAAA,IAAA,CAAA;EAAA,SAAA,CAAA,OAAA,EAgBH,OAhBG,CAAA,EAgBI,OAhBJ,CAgBI,OAhBJ,CAAA"}
@@ -0,0 +1,17 @@
1
+ import { LogData, LogOutput } from "../logger-base.mjs";
2
+
3
+ //#region src/outputs/file-output.d.ts
4
+ interface FileOutputOptions {
5
+ transform?: (logData: LogData) => Promise<LogData>;
6
+ filename: string;
7
+ }
8
+ declare class FileOutput implements LogOutput {
9
+ protected opts: FileOutputOptions;
10
+ private readonly _fd;
11
+ constructor(opts: FileOutputOptions);
12
+ log(logData: LogData): Promise<void>;
13
+ transform(logData: LogData): Promise<LogData>;
14
+ }
15
+ //#endregion
16
+ export { FileOutput };
17
+ //# sourceMappingURL=file-output.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-output.d.mts","names":[],"sources":["../../src/outputs/file-output.ts"],"sourcesContent":[],"mappings":";;;UAGiB,iBAAA;wBACO,YAAY,QAAQ;EAD3B,QAAA,EAAA,MAAA;;AAC2B,cAI/B,UAAA,YAAsB,SAJS,CAAA;EAAR,UAAA,IAAA,EAON,iBAPM;EAAO,iBAAA,GAAA;EAI9B,WAAA,CAAA,IAAW,EAGM,iBAHN;EAGM,GAAA,CAAA,OAAA,EAIT,OAJS,CAAA,EAIF,OAJE,CAAA,IAAA,CAAA;EAAA,SAAA,CAAA,OAAA,EAgBH,OAhBG,CAAA,EAgBI,OAhBJ,CAgBI,OAhBJ,CAAA"}
@@ -0,0 +1,33 @@
1
+ import * as fs from "fs";
2
+
3
+ //#region src/outputs/file-output.ts
4
+ var FileOutput = class {
5
+ _fd;
6
+ constructor(opts) {
7
+ this.opts = opts;
8
+ this._fd = fs.openSync(opts.filename, "a");
9
+ }
10
+ async log(logData) {
11
+ let message = logData.message ?? "";
12
+ if (logData.data) {
13
+ if (message.length > 0) message += " ";
14
+ message += logData.data;
15
+ }
16
+ message += "\n";
17
+ fs.appendFile(this._fd, message, { encoding: "utf-8" }, (err) => {
18
+ if (err) throw err;
19
+ });
20
+ }
21
+ async transform(logData) {
22
+ if (this.opts.transform) return this.opts.transform(logData);
23
+ if (logData.data) return {
24
+ ...logData,
25
+ data: JSON.stringify(logData.data)
26
+ };
27
+ return logData;
28
+ }
29
+ };
30
+
31
+ //#endregion
32
+ export { FileOutput };
33
+ //# sourceMappingURL=file-output.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-output.mjs","names":["opts: FileOutputOptions"],"sources":["../../src/outputs/file-output.ts"],"sourcesContent":["import {type LogData, type LogOutput} from '../logger-base';\nimport * as fs from 'fs';\n\nexport interface FileOutputOptions {\n transform?: (logData: LogData) => Promise<LogData>;\n filename: string;\n}\n\nexport class FileOutput implements LogOutput {\n private readonly _fd!: number;\n\n constructor(protected opts: FileOutputOptions) {\n this._fd = fs.openSync(opts.filename, 'a');\n }\n\n async log(logData: LogData) {\n let message = logData.message ?? '';\n if (logData.data) {\n if (message.length > 0) message += ' ';\n message += logData.data;\n }\n message += '\\n';\n fs.appendFile(this._fd, message, {encoding: 'utf-8'}, (err: NodeJS.ErrnoException | null) => {\n if (err) throw err;\n });\n }\n\n async transform(logData: LogData) {\n if (this.opts.transform) return this.opts.transform(logData);\n if (logData.data) {\n return {\n ...logData,\n data: JSON.stringify(logData.data),\n };\n }\n return logData;\n }\n}\n"],"mappings":";;;AAQA,IAAa,aAAb,MAA6C;CAC3C,AAAiB;CAEjB,YAAY,AAAUA,MAAyB;EAAzB;AACpB,OAAK,MAAM,GAAG,SAAS,KAAK,UAAU,IAAI;;CAG5C,MAAM,IAAI,SAAkB;EAC1B,IAAI,UAAU,QAAQ,WAAW;AACjC,MAAI,QAAQ,MAAM;AAChB,OAAI,QAAQ,SAAS,EAAG,YAAW;AACnC,cAAW,QAAQ;;AAErB,aAAW;AACX,KAAG,WAAW,KAAK,KAAK,SAAS,EAAC,UAAU,SAAQ,GAAG,QAAsC;AAC3F,OAAI,IAAK,OAAM;IACf;;CAGJ,MAAM,UAAU,SAAkB;AAChC,MAAI,KAAK,KAAK,UAAW,QAAO,KAAK,KAAK,UAAU,QAAQ;AAC5D,MAAI,QAAQ,KACV,QAAO;GACL,GAAG;GACH,MAAM,KAAK,UAAU,QAAQ,KAAK;GACnC;AAEH,SAAO"}
@@ -0,0 +1,25 @@
1
+ const require_rolldown_runtime = require('../_virtual/rolldown_runtime.cjs');
2
+ let process = require("process");
3
+ process = require_rolldown_runtime.__toESM(process);
4
+
5
+ //#region src/outputs/json-output.ts
6
+ var JsonOutput = class {
7
+ constructor(opts) {
8
+ this.opts = opts;
9
+ }
10
+ async log(logData) {
11
+ const log = {
12
+ message: logData.message,
13
+ level: logData.tags.filter((x) => x.name === "log-level")[0].value,
14
+ ...logData.data
15
+ };
16
+ process.stdout.write(JSON.stringify(log) + "\n");
17
+ }
18
+ async transform(logData) {
19
+ if (this.opts.transform) return this.opts.transform(logData);
20
+ return logData;
21
+ }
22
+ };
23
+
24
+ //#endregion
25
+ exports.JsonOutput = JsonOutput;
@@ -0,0 +1,15 @@
1
+ import { LogData, LogOutput } from "../logger-base.cjs";
2
+
3
+ //#region src/outputs/json-output.d.ts
4
+ interface JsonOutputOptions {
5
+ transform?: (logData: LogData) => Promise<LogData>;
6
+ }
7
+ declare class JsonOutput implements LogOutput {
8
+ protected opts: JsonOutputOptions;
9
+ constructor(opts: JsonOutputOptions);
10
+ log(logData: LogData): Promise<void>;
11
+ transform(logData: LogData): Promise<LogData>;
12
+ }
13
+ //#endregion
14
+ export { JsonOutput };
15
+ //# sourceMappingURL=json-output.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-output.d.cts","names":[],"sources":["../../src/outputs/json-output.ts"],"sourcesContent":[],"mappings":";;;UAGiB,iBAAA;wBACO,YAAY,QAAQ;AAD5C;AACwB,cAEX,UAAA,YAAsB,SAFX,CAAA;EAAoB,UAAA,IAAA,EAGd,iBAHc;EAAR,WAAA,CAAA,IAAA,EAGN,iBAHM;EAAO,GAAA,CAAA,OAAA,EAKtB,OALsB,CAAA,EAKf,OALe,CAAA,IAAA,CAAA;EAE9B,SAAA,CAAA,OAAW,EAYG,OAZH,CAAA,EAYU,OAZV,CAYU,OAZV,CAAA"}
@@ -0,0 +1,15 @@
1
+ import { LogData, LogOutput } from "../logger-base.mjs";
2
+
3
+ //#region src/outputs/json-output.d.ts
4
+ interface JsonOutputOptions {
5
+ transform?: (logData: LogData) => Promise<LogData>;
6
+ }
7
+ declare class JsonOutput implements LogOutput {
8
+ protected opts: JsonOutputOptions;
9
+ constructor(opts: JsonOutputOptions);
10
+ log(logData: LogData): Promise<void>;
11
+ transform(logData: LogData): Promise<LogData>;
12
+ }
13
+ //#endregion
14
+ export { JsonOutput };
15
+ //# sourceMappingURL=json-output.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-output.d.mts","names":[],"sources":["../../src/outputs/json-output.ts"],"sourcesContent":[],"mappings":";;;UAGiB,iBAAA;wBACO,YAAY,QAAQ;AAD5C;AACwB,cAEX,UAAA,YAAsB,SAFX,CAAA;EAAoB,UAAA,IAAA,EAGd,iBAHc;EAAR,WAAA,CAAA,IAAA,EAGN,iBAHM;EAAO,GAAA,CAAA,OAAA,EAKtB,OALsB,CAAA,EAKf,OALe,CAAA,IAAA,CAAA;EAE9B,SAAA,CAAA,OAAW,EAYG,OAZH,CAAA,EAYU,OAZV,CAYU,OAZV,CAAA"}
@@ -0,0 +1,24 @@
1
+ import * as process from "process";
2
+
3
+ //#region src/outputs/json-output.ts
4
+ var JsonOutput = class {
5
+ constructor(opts) {
6
+ this.opts = opts;
7
+ }
8
+ async log(logData) {
9
+ const log = {
10
+ message: logData.message,
11
+ level: logData.tags.filter((x) => x.name === "log-level")[0].value,
12
+ ...logData.data
13
+ };
14
+ process.stdout.write(JSON.stringify(log) + "\n");
15
+ }
16
+ async transform(logData) {
17
+ if (this.opts.transform) return this.opts.transform(logData);
18
+ return logData;
19
+ }
20
+ };
21
+
22
+ //#endregion
23
+ export { JsonOutput };
24
+ //# sourceMappingURL=json-output.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-output.mjs","names":["opts: JsonOutputOptions"],"sources":["../../src/outputs/json-output.ts"],"sourcesContent":["import {type LogData, type LogOutput} from '../logger-base';\nimport * as process from 'process';\n\nexport interface JsonOutputOptions {\n transform?: (logData: LogData) => Promise<LogData>;\n}\nexport class JsonOutput implements LogOutput {\n constructor(protected opts: JsonOutputOptions) {}\n\n async log(logData: LogData) {\n const log = {\n message: logData.message,\n level: logData.tags.filter(x => x.name === 'log-level')[0].value,\n ...logData.data,\n }\n process.stdout.write(JSON.stringify(log) + '\\n');\n }\n\n async transform(logData: LogData) {\n if (this.opts.transform) return this.opts.transform(logData);\n return logData;\n }\n}\n"],"mappings":";;;AAMA,IAAa,aAAb,MAA6C;CAC3C,YAAY,AAAUA,MAAyB;EAAzB;;CAEtB,MAAM,IAAI,SAAkB;EAC1B,MAAM,MAAM;GACV,SAAS,QAAQ;GACjB,OAAO,QAAQ,KAAK,QAAO,MAAK,EAAE,SAAS,YAAY,CAAC,GAAG;GAC3D,GAAG,QAAQ;GACZ;AACD,UAAQ,OAAO,MAAM,KAAK,UAAU,IAAI,GAAG,KAAK;;CAGlD,MAAM,UAAU,SAAkB;AAChC,MAAI,KAAK,KAAK,UAAW,QAAO,KAAK,KAAK,UAAU,QAAQ;AAC5D,SAAO"}
@@ -0,0 +1,7 @@
1
+ const require_console_output = require('./outputs/console-output.cjs');
2
+ const require_file_output = require('./outputs/file-output.cjs');
3
+ const require_json_output = require('./outputs/json-output.cjs');
4
+
5
+ exports.ConsoleOutput = require_console_output.ConsoleOutput;
6
+ exports.FileOutput = require_file_output.FileOutput;
7
+ exports.JsonOutput = require_json_output.JsonOutput;
@@ -0,0 +1,4 @@
1
+ import { ConsoleOutput } from "./outputs/console-output.cjs";
2
+ import { FileOutput } from "./outputs/file-output.cjs";
3
+ import { JsonOutput } from "./outputs/json-output.cjs";
4
+ export { ConsoleOutput, FileOutput, JsonOutput };
@@ -0,0 +1,4 @@
1
+ import { ConsoleOutput } from "./outputs/console-output.mjs";
2
+ import { FileOutput } from "./outputs/file-output.mjs";
3
+ import { JsonOutput } from "./outputs/json-output.mjs";
4
+ export { ConsoleOutput, FileOutput, JsonOutput };
@@ -0,0 +1,5 @@
1
+ import { ConsoleOutput } from "./outputs/console-output.mjs";
2
+ import { FileOutput } from "./outputs/file-output.mjs";
3
+ import { JsonOutput } from "./outputs/json-output.mjs";
4
+
5
+ export { ConsoleOutput, FileOutput, JsonOutput };