@axisparkjs/logger 1.0.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.
Files changed (72) hide show
  1. package/PACKAGE.md +3 -0
  2. package/lib/formatters/index.d.ts +5 -0
  3. package/lib/formatters/index.js +22 -0
  4. package/lib/formatters/index.js.map +1 -0
  5. package/lib/formatters/json-formatter.d.ts +5 -0
  6. package/lib/formatters/json-formatter.js +22 -0
  7. package/lib/formatters/json-formatter.js.map +1 -0
  8. package/lib/formatters/pretty-formatter.d.ts +6 -0
  9. package/lib/formatters/pretty-formatter.js +36 -0
  10. package/lib/formatters/pretty-formatter.js.map +1 -0
  11. package/lib/formatters/simple-formatter.d.ts +5 -0
  12. package/lib/formatters/simple-formatter.js +14 -0
  13. package/lib/formatters/simple-formatter.js.map +1 -0
  14. package/lib/formatters/template-formatter.d.ts +7 -0
  15. package/lib/formatters/template-formatter.js +22 -0
  16. package/lib/formatters/template-formatter.js.map +1 -0
  17. package/lib/formatters/xml-formatter.d.ts +6 -0
  18. package/lib/formatters/xml-formatter.js +31 -0
  19. package/lib/formatters/xml-formatter.js.map +1 -0
  20. package/lib/index.d.ts +8 -0
  21. package/lib/index.js +25 -0
  22. package/lib/index.js.map +1 -0
  23. package/lib/log-data.d.ts +7 -0
  24. package/lib/log-data.js +3 -0
  25. package/lib/log-data.js.map +1 -0
  26. package/lib/log-entry.d.ts +9 -0
  27. package/lib/log-entry.js +3 -0
  28. package/lib/log-entry.js.map +1 -0
  29. package/lib/log-formatter.d.ts +4 -0
  30. package/lib/log-formatter.js +3 -0
  31. package/lib/log-formatter.js.map +1 -0
  32. package/lib/log-level.d.ts +8 -0
  33. package/lib/log-level.js +13 -0
  34. package/lib/log-level.js.map +1 -0
  35. package/lib/log-transport.d.ts +12 -0
  36. package/lib/log-transport.js +10 -0
  37. package/lib/log-transport.js.map +1 -0
  38. package/lib/logger.d.ts +15 -0
  39. package/lib/logger.js +90 -0
  40. package/lib/logger.js.map +1 -0
  41. package/lib/transports/console-transport.d.ts +5 -0
  42. package/lib/transports/console-transport.js +24 -0
  43. package/lib/transports/console-transport.js.map +1 -0
  44. package/lib/transports/daily-file-transport.d.ts +5 -0
  45. package/lib/transports/daily-file-transport.js +16 -0
  46. package/lib/transports/daily-file-transport.js.map +1 -0
  47. package/lib/transports/file-transport.d.ts +12 -0
  48. package/lib/transports/file-transport.js +37 -0
  49. package/lib/transports/file-transport.js.map +1 -0
  50. package/lib/transports/http-transport.d.ts +11 -0
  51. package/lib/transports/http-transport.js +32 -0
  52. package/lib/transports/http-transport.js.map +1 -0
  53. package/lib/transports/index.d.ts +9 -0
  54. package/lib/transports/index.js +26 -0
  55. package/lib/transports/index.js.map +1 -0
  56. package/lib/transports/memory-transport.d.ts +7 -0
  57. package/lib/transports/memory-transport.js +31 -0
  58. package/lib/transports/memory-transport.js.map +1 -0
  59. package/lib/transports/null-transport.d.ts +5 -0
  60. package/lib/transports/null-transport.js +21 -0
  61. package/lib/transports/null-transport.js.map +1 -0
  62. package/lib/transports/rotating-file-transport.d.ts +11 -0
  63. package/lib/transports/rotating-file-transport.js +59 -0
  64. package/lib/transports/rotating-file-transport.js.map +1 -0
  65. package/lib/transports/stream-transport.d.ts +11 -0
  66. package/lib/transports/stream-transport.js +28 -0
  67. package/lib/transports/stream-transport.js.map +1 -0
  68. package/lib/transports/webhook-transport.d.ts +10 -0
  69. package/lib/transports/webhook-transport.js +36 -0
  70. package/lib/transports/webhook-transport.js.map +1 -0
  71. package/package.json +29 -0
  72. package/tsconfig.build.json +9 -0
package/PACKAGE.md ADDED
@@ -0,0 +1,3 @@
1
+ # @axisparkjs/logger
2
+
3
+ Logger implementation for AxiSpark framework.
@@ -0,0 +1,5 @@
1
+ export * from './simple-formatter';
2
+ export * from './pretty-formatter';
3
+ export * from './json-formatter';
4
+ export * from './xml-formatter';
5
+ export * from './template-formatter';
@@ -0,0 +1,22 @@
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("./simple-formatter"), exports);
18
+ __exportStar(require("./pretty-formatter"), exports);
19
+ __exportStar(require("./json-formatter"), exports);
20
+ __exportStar(require("./xml-formatter"), exports);
21
+ __exportStar(require("./template-formatter"), exports);
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/formatters/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,qDAAmC;AACnC,mDAAiC;AACjC,kDAAgC;AAChC,uDAAqC"}
@@ -0,0 +1,5 @@
1
+ import { LogEntry } from '../log-entry';
2
+ import { LogFormatter } from '../log-formatter';
3
+ export declare class JsonFormatter implements LogFormatter {
4
+ format(entry: LogEntry): string;
5
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.JsonFormatter = void 0;
4
+ const log_level_1 = require("../log-level");
5
+ class JsonFormatter {
6
+ format(entry) {
7
+ return JSON.stringify({
8
+ timestamp: entry.timestamp.toISOString(),
9
+ level: log_level_1.LogLevel[entry.level].toLocaleUpperCase(),
10
+ message: entry.message,
11
+ scopes: entry.scopes,
12
+ metadata: entry.metadata,
13
+ error: entry.error && {
14
+ name: entry.error.name,
15
+ message: entry.error.message,
16
+ stack: entry.error.stack
17
+ }
18
+ });
19
+ }
20
+ }
21
+ exports.JsonFormatter = JsonFormatter;
22
+ //# sourceMappingURL=json-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-formatter.js","sourceRoot":"","sources":["../../src/formatters/json-formatter.ts"],"names":[],"mappings":";;;AAEA,4CAAwC;AAKxC,MAAa,aAAa;IACtB,MAAM,CAAC,KAAe;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;YAClB,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;YACxC,KAAK,EAAE,oBAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE;YAChD,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM;YACpB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI;gBAClB,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI;gBACtB,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO;gBAC5B,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK;aAC3B;SACJ,CAAC,CAAC;IACP,CAAC;CACJ;AAfD,sCAeC"}
@@ -0,0 +1,6 @@
1
+ import { LogEntry } from '../log-entry';
2
+ import { LogFormatter } from '../log-formatter';
3
+ export declare class PrettyFormatter implements LogFormatter {
4
+ format(entry: LogEntry): string;
5
+ private indent;
6
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrettyFormatter = void 0;
4
+ const log_level_1 = require("../log-level");
5
+ class PrettyFormatter {
6
+ format(entry) {
7
+ const timestamp = entry.timestamp.toISOString();
8
+ const level = log_level_1.LogLevel[entry.level].toLocaleUpperCase().padEnd(5);
9
+ const scope = entry.scopes.length ? `[${entry.scopes.join(' > ')}]` : '';
10
+ let output = `${timestamp} │ ${level}`;
11
+ if (scope) {
12
+ output += ` │ ${scope}`;
13
+ }
14
+ output += `\n ${entry.message}`;
15
+ if (entry.metadata && Object.keys(entry.metadata).length > 0) {
16
+ output += `\n Metadata:`;
17
+ output += `\n${this.indent(JSON.stringify(entry.metadata, null, 2), 4)}`;
18
+ }
19
+ if (entry.error) {
20
+ output += `\n Error: ${entry.error.name}: ${entry.error.message}`;
21
+ if (entry.error.stack) {
22
+ output += `\n${this.indent(entry.error.stack, 4)}`;
23
+ }
24
+ }
25
+ return output;
26
+ }
27
+ indent(text, spaces) {
28
+ const padding = ' '.repeat(spaces);
29
+ return text
30
+ .split('\n')
31
+ .map((line) => padding + line)
32
+ .join('\n');
33
+ }
34
+ }
35
+ exports.PrettyFormatter = PrettyFormatter;
36
+ //# sourceMappingURL=pretty-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pretty-formatter.js","sourceRoot":"","sources":["../../src/formatters/pretty-formatter.ts"],"names":[],"mappings":";;;AAEA,4CAAwC;AAKxC,MAAa,eAAe;IACxB,MAAM,CAAC,KAAe;QAClB,MAAM,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;QAChD,MAAM,KAAK,GAAG,oBAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAClE,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAEzE,IAAI,MAAM,GAAG,GAAG,SAAS,MAAM,KAAK,EAAE,CAAC;QAEvC,IAAI,KAAK,EAAE,CAAC;YACR,MAAM,IAAI,MAAM,KAAK,EAAE,CAAC;QAC5B,CAAC;QAED,MAAM,IAAI,OAAO,KAAK,CAAC,OAAO,EAAE,CAAC;QAEjC,IAAI,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,eAAe,CAAC;YAC1B,MAAM,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC7E,CAAC;QAED,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YACd,MAAM,IAAI,cAAc,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YAEnE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;gBACpB,MAAM,IAAI,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,EAAE,CAAC;YACvD,CAAC;QACL,CAAC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,MAAM,CAAC,IAAY,EAAE,MAAc;QACvC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACnC,OAAO,IAAI;aACN,KAAK,CAAC,IAAI,CAAC;aACX,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC;aAC7B,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;CACJ;AArCD,0CAqCC"}
@@ -0,0 +1,5 @@
1
+ import { LogEntry } from '../log-entry';
2
+ import { LogFormatter } from '../log-formatter';
3
+ export declare class SimpleFormatter implements LogFormatter {
4
+ format(entry: LogEntry): string;
5
+ }
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SimpleFormatter = void 0;
4
+ const log_level_1 = require("../log-level");
5
+ class SimpleFormatter {
6
+ format(entry) {
7
+ var _a;
8
+ const scope = entry.scopes.length ? `[${entry.scopes.join(' > ')}] ` : '';
9
+ const error = entry.error ? `\n${(_a = entry.error.stack) !== null && _a !== void 0 ? _a : entry.error.message}` : '';
10
+ return `[${entry.timestamp.toISOString()}] ${log_level_1.LogLevel[entry.level].toUpperCase()} ${scope}${entry.message}${error}`;
11
+ }
12
+ }
13
+ exports.SimpleFormatter = SimpleFormatter;
14
+ //# sourceMappingURL=simple-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simple-formatter.js","sourceRoot":"","sources":["../../src/formatters/simple-formatter.ts"],"names":[],"mappings":";;;AAEA,4CAAwC;AAKxC,MAAa,eAAe;IACxB,MAAM,CAAC,KAAe;;QAClB,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1E,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAA,KAAK,CAAC,KAAK,CAAC,KAAK,mCAAI,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAEjF,OAAO,IAAI,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,oBAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,KAAK,EAAE,CAAC;IACxH,CAAC;CACJ;AARD,0CAQC"}
@@ -0,0 +1,7 @@
1
+ import { LogEntry } from '../log-entry';
2
+ import { LogFormatter } from '../log-formatter';
3
+ export declare class TemplateFormatter implements LogFormatter {
4
+ private readonly template;
5
+ constructor(template: string);
6
+ format(entry: LogEntry): string;
7
+ }
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TemplateFormatter = void 0;
4
+ const log_level_1 = require("../log-level");
5
+ class TemplateFormatter {
6
+ constructor(template) {
7
+ this.template = template;
8
+ }
9
+ format(entry) {
10
+ const values = {
11
+ timestamp: entry.timestamp.toISOString(),
12
+ level: log_level_1.LogLevel[entry.level].toLocaleUpperCase(),
13
+ message: entry.message,
14
+ scopes: entry.scopes.join(' > '),
15
+ metadata: entry.metadata ? JSON.stringify(entry.metadata) : '',
16
+ error: entry.error ? `${entry.error.name}: ${entry.error.message}` : ''
17
+ };
18
+ return this.template.replace(/\{(\w+)\}/g, (_, key) => { var _a; return (_a = values[key]) !== null && _a !== void 0 ? _a : ''; });
19
+ }
20
+ }
21
+ exports.TemplateFormatter = TemplateFormatter;
22
+ //# sourceMappingURL=template-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"template-formatter.js","sourceRoot":"","sources":["../../src/formatters/template-formatter.ts"],"names":[],"mappings":";;;AAEA,4CAAwC;AAKxC,MAAa,iBAAiB;IAC1B,YAA6B,QAAgB;QAAhB,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAEjD,MAAM,CAAC,KAAe;QAClB,MAAM,MAAM,GAA2B;YACnC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;YACxC,KAAK,EAAE,oBAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE;YAChD,OAAO,EAAE,KAAK,CAAC,OAAO;YACtB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC;YAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE;YAC9D,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;SAC1E,CAAC;QAEF,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC,EAAE,GAAW,EAAE,EAAE,WAAC,OAAA,MAAA,MAAM,CAAC,GAAG,CAAC,mCAAI,EAAE,CAAA,EAAA,CAAC,CAAC;IACtF,CAAC;CACJ;AAfD,8CAeC"}
@@ -0,0 +1,6 @@
1
+ import { LogEntry } from '../log-entry';
2
+ import { LogFormatter } from '../log-formatter';
3
+ export declare class XmlFormatter implements LogFormatter {
4
+ format(entry: LogEntry): string;
5
+ private escape;
6
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.XmlFormatter = void 0;
4
+ const log_level_1 = require("../log-level");
5
+ class XmlFormatter {
6
+ format(entry) {
7
+ const metadata = entry.metadata ? `<metadata><![CDATA[${JSON.stringify(entry.metadata)}]]></metadata>` : '';
8
+ const error = entry.error
9
+ ? `
10
+ <error>
11
+ <name>${this.escape(entry.error.name)}</name>
12
+ <message>${this.escape(entry.error.message)}</message>
13
+ <stack><![CDATA[${entry.error.stack}]]></stack>
14
+ </error>`
15
+ : '';
16
+ const scopes = entry.scopes.map((scope) => `<scope>${this.escape(scope)}</scope>`).join('');
17
+ return `<log>
18
+ <timestamp>${entry.timestamp.toISOString()}</timestamp>
19
+ <level>${log_level_1.LogLevel[entry.level].toLocaleUpperCase()}</level>
20
+ <message>${this.escape(entry.message)}</message>
21
+ <scopes>${scopes}</scopes>
22
+ ${metadata}
23
+ ${error}
24
+ </log>`;
25
+ }
26
+ escape(value) {
27
+ return value.replaceAll('&', '&amp;').replaceAll('<', '&lt;').replaceAll('>', '&gt;').replaceAll('"', '&quot;').replaceAll("'", '&apos;');
28
+ }
29
+ }
30
+ exports.XmlFormatter = XmlFormatter;
31
+ //# sourceMappingURL=xml-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-formatter.js","sourceRoot":"","sources":["../../src/formatters/xml-formatter.ts"],"names":[],"mappings":";;;AAEA,4CAAwC;AAKxC,MAAa,YAAY;IACrB,MAAM,CAAC,KAAe;QAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,CAAC;QAE5G,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK;YACrB,CAAC,CAAC;;gBAEE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC;mBAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC;0BACzB,KAAK,CAAC,KAAK,CAAC,KAAK;aAC9B;YACD,CAAC,CAAC,EAAE,CAAC;QAET,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAE5F,OAAO;iBACE,KAAK,CAAC,SAAS,CAAC,WAAW,EAAE;aACjC,oBAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,iBAAiB,EAAE;eACvC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC;cAC3B,MAAM;MACd,QAAQ;MACR,KAAK;OACJ,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,KAAa;QACxB,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IAC9I,CAAC;CACJ;AA5BD,oCA4BC"}
package/lib/index.d.ts ADDED
@@ -0,0 +1,8 @@
1
+ export * from './formatters';
2
+ export * from './transports';
3
+ export * from './log-data';
4
+ export * from './log-entry';
5
+ export * from './log-formatter';
6
+ export * from './log-level';
7
+ export * from './log-transport';
8
+ export * from './logger';
package/lib/index.js ADDED
@@ -0,0 +1,25 @@
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("./formatters"), exports);
18
+ __exportStar(require("./transports"), exports);
19
+ __exportStar(require("./log-data"), exports);
20
+ __exportStar(require("./log-entry"), exports);
21
+ __exportStar(require("./log-formatter"), exports);
22
+ __exportStar(require("./log-level"), exports);
23
+ __exportStar(require("./log-transport"), exports);
24
+ __exportStar(require("./logger"), exports);
25
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+CAA6B;AAC7B,+CAA6B;AAC7B,6CAA2B;AAC3B,8CAA4B;AAC5B,kDAAgC;AAChC,8CAA4B;AAC5B,kDAAgC;AAChC,2CAAyB"}
@@ -0,0 +1,7 @@
1
+ import { LogLevel } from './log-level';
2
+ export interface LogData {
3
+ level: LogLevel;
4
+ message: string;
5
+ error?: Error;
6
+ metadata?: Record<string, unknown>;
7
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=log-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-data.js","sourceRoot":"","sources":["../src/log-data.ts"],"names":[],"mappings":""}
@@ -0,0 +1,9 @@
1
+ import { LogLevel } from './log-level';
2
+ export interface LogEntry {
3
+ readonly timestamp: Date;
4
+ readonly level: LogLevel;
5
+ readonly message: string;
6
+ readonly scopes: readonly string[];
7
+ readonly error?: Error;
8
+ readonly metadata?: Record<string, unknown>;
9
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=log-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-entry.js","sourceRoot":"","sources":["../src/log-entry.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ import { LogEntry } from './log-entry';
2
+ export interface LogFormatter {
3
+ format(entry: LogEntry): string;
4
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=log-formatter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-formatter.js","sourceRoot":"","sources":["../src/log-formatter.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ export declare enum LogLevel {
2
+ Trace = 0,
3
+ Debug = 1,
4
+ Info = 2,
5
+ Warn = 3,
6
+ Error = 4,
7
+ Fatal = 5
8
+ }
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LogLevel = void 0;
4
+ var LogLevel;
5
+ (function (LogLevel) {
6
+ LogLevel[LogLevel["Trace"] = 0] = "Trace";
7
+ LogLevel[LogLevel["Debug"] = 1] = "Debug";
8
+ LogLevel[LogLevel["Info"] = 2] = "Info";
9
+ LogLevel[LogLevel["Warn"] = 3] = "Warn";
10
+ LogLevel[LogLevel["Error"] = 4] = "Error";
11
+ LogLevel[LogLevel["Fatal"] = 5] = "Fatal";
12
+ })(LogLevel || (exports.LogLevel = LogLevel = {}));
13
+ //# sourceMappingURL=log-level.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-level.js","sourceRoot":"","sources":["../src/log-level.ts"],"names":[],"mappings":";;;AAGA,IAAY,QAOX;AAPD,WAAY,QAAQ;IAChB,yCAAS,CAAA;IACT,yCAAS,CAAA;IACT,uCAAQ,CAAA;IACR,uCAAQ,CAAA;IACR,yCAAS,CAAA;IACT,yCAAS,CAAA;AACb,CAAC,EAPW,QAAQ,wBAAR,QAAQ,QAOnB"}
@@ -0,0 +1,12 @@
1
+ import { LogEntry } from './log-entry';
2
+ import { LogFormatter } from './log-formatter';
3
+ import { LogLevel } from './log-level';
4
+ export interface LogTransportOptions {
5
+ formatter: LogFormatter;
6
+ minLevel: LogLevel;
7
+ }
8
+ export declare abstract class LogTransport {
9
+ protected readonly config: LogTransportOptions;
10
+ constructor(config: LogTransportOptions);
11
+ abstract write(entry: LogEntry): Promise<void>;
12
+ }
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LogTransport = void 0;
4
+ class LogTransport {
5
+ constructor(config) {
6
+ this.config = config;
7
+ }
8
+ }
9
+ exports.LogTransport = LogTransport;
10
+ //# sourceMappingURL=log-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log-transport.js","sourceRoot":"","sources":["../src/log-transport.ts"],"names":[],"mappings":";;;AAkBA,MAAsB,YAAY;IAE9B,YAA+B,MAA2B;QAA3B,WAAM,GAAN,MAAM,CAAqB;IAAG,CAAC;CAIjE;AAND,oCAMC"}
@@ -0,0 +1,15 @@
1
+ import { LogData } from './log-data';
2
+ import { LogTransport } from './log-transport';
3
+ export declare class Logger {
4
+ private readonly transports;
5
+ private readonly scopes;
6
+ constructor(transports: LogTransport[], scopes?: string[]);
7
+ info(message: string): Promise<void>;
8
+ warn(message: string): Promise<void>;
9
+ error(message: string, error?: Error): Promise<void>;
10
+ debug(message: string): Promise<void>;
11
+ trace(message: string): Promise<void>;
12
+ fatal(message: string, error?: Error): Promise<void>;
13
+ child(scope: string): Logger;
14
+ log(data: LogData): Promise<void>;
15
+ }
package/lib/logger.js ADDED
@@ -0,0 +1,90 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ 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;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
12
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13
+ return new (P || (P = Promise))(function (resolve, reject) {
14
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
15
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
16
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
18
+ });
19
+ };
20
+ var Logger_1;
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ exports.Logger = void 0;
23
+ const di_1 = require("@axisparkjs/di");
24
+ const log_level_1 = require("./log-level");
25
+ let Logger = Logger_1 = class Logger {
26
+ constructor(transports, scopes = []) {
27
+ this.transports = transports;
28
+ this.scopes = scopes;
29
+ }
30
+ info(message) {
31
+ return __awaiter(this, void 0, void 0, function* () {
32
+ yield this.log({ level: log_level_1.LogLevel.Info, message });
33
+ });
34
+ }
35
+ warn(message) {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ yield this.log({ level: log_level_1.LogLevel.Warn, message });
38
+ });
39
+ }
40
+ error(message, error) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ yield this.log({
43
+ level: log_level_1.LogLevel.Error,
44
+ message,
45
+ error
46
+ });
47
+ });
48
+ }
49
+ debug(message) {
50
+ return __awaiter(this, void 0, void 0, function* () {
51
+ yield this.log({ level: log_level_1.LogLevel.Debug, message });
52
+ });
53
+ }
54
+ trace(message) {
55
+ return __awaiter(this, void 0, void 0, function* () {
56
+ yield this.log({ level: log_level_1.LogLevel.Trace, message });
57
+ });
58
+ }
59
+ fatal(message, error) {
60
+ return __awaiter(this, void 0, void 0, function* () {
61
+ yield this.log({
62
+ level: log_level_1.LogLevel.Fatal,
63
+ message,
64
+ error
65
+ });
66
+ });
67
+ }
68
+ child(scope) {
69
+ return new Logger_1(this.transports, [...this.scopes, scope]);
70
+ }
71
+ log(data) {
72
+ return __awaiter(this, void 0, void 0, function* () {
73
+ const entry = {
74
+ timestamp: new Date(),
75
+ level: data.level,
76
+ message: data.message,
77
+ scopes: this.scopes,
78
+ error: data.error,
79
+ metadata: data.metadata
80
+ };
81
+ yield Promise.all(this.transports.map((t) => t.write(entry)));
82
+ });
83
+ }
84
+ };
85
+ exports.Logger = Logger;
86
+ exports.Logger = Logger = Logger_1 = __decorate([
87
+ (0, di_1.Injectable)(),
88
+ __metadata("design:paramtypes", [Array, Array])
89
+ ], Logger);
90
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;AAAA,uCAA4C;AAG5C,2CAAuC;AAOhC,IAAM,MAAM,cAAZ,MAAM,MAAM;IAMf,YACqB,UAA0B,EAC1B,SAAmB,EAAE;QADrB,eAAU,GAAV,UAAU,CAAgB;QAC1B,WAAM,GAAN,MAAM,CAAe;IACvC,CAAC;IAGE,IAAI,CAAC,OAAe;;YACtB,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,oBAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;KAAA;IAGK,IAAI,CAAC,OAAe;;YACtB,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,oBAAQ,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;QACtD,CAAC;KAAA;IAGK,KAAK,CAAC,OAAe,EAAE,KAAa;;YACtC,MAAM,IAAI,CAAC,GAAG,CAAC;gBACX,KAAK,EAAE,oBAAQ,CAAC,KAAK;gBACrB,OAAO;gBACP,KAAK;aACR,CAAC,CAAC;QACP,CAAC;KAAA;IAGK,KAAK,CAAC,OAAe;;YACvB,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,oBAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;KAAA;IAGK,KAAK,CAAC,OAAe;;YACvB,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,oBAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;KAAA;IAGK,KAAK,CAAC,OAAe,EAAE,KAAa;;YACtC,MAAM,IAAI,CAAC,GAAG,CAAC;gBACX,KAAK,EAAE,oBAAQ,CAAC,KAAK;gBACrB,OAAO;gBACP,KAAK;aACR,CAAC,CAAC;QACP,CAAC;KAAA;IAGM,KAAK,CAAC,KAAa;QACtB,OAAO,IAAI,QAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IAChE,CAAC;IAGY,GAAG,CAAC,IAAa;;YAC1B,MAAM,KAAK,GAAa;gBACpB,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,QAAQ,EAAE,IAAI,CAAC,QAAQ;aAC1B,CAAC;YAEF,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAClE,CAAC;KAAA;CACJ,CAAA;AAnEY,wBAAM;iBAAN,MAAM;IADlB,IAAA,eAAU,GAAE;;GACA,MAAM,CAmElB"}
@@ -0,0 +1,5 @@
1
+ import { LogEntry } from '../log-entry';
2
+ import { LogTransport } from '../log-transport';
3
+ export declare class ConsoleTransport extends LogTransport {
4
+ write(entry: LogEntry): Promise<void>;
5
+ }
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ConsoleTransport = void 0;
13
+ const log_transport_1 = require("../log-transport");
14
+ class ConsoleTransport extends log_transport_1.LogTransport {
15
+ write(entry) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ if (entry.level < this.config.minLevel)
18
+ return;
19
+ console.log(this.config.formatter.format(entry));
20
+ });
21
+ }
22
+ }
23
+ exports.ConsoleTransport = ConsoleTransport;
24
+ //# sourceMappingURL=console-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"console-transport.js","sourceRoot":"","sources":["../../src/transports/console-transport.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,oDAAgD;AAKhD,MAAa,gBAAiB,SAAQ,4BAAY;IACxC,KAAK,CAAC,KAAe;;YACvB,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,OAAO;YAE/C,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,CAAC;KAAA;CACJ;AAND,4CAMC"}
@@ -0,0 +1,5 @@
1
+ import { LogEntry } from '../log-entry';
2
+ import { FileTransport } from './file-transport';
3
+ export declare class DailyFileTransport extends FileTransport {
4
+ protected getFile(_entry: LogEntry): string;
5
+ }
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DailyFileTransport = void 0;
4
+ const node_path_1 = require("node:path");
5
+ const file_transport_1 = require("./file-transport");
6
+ class DailyFileTransport extends file_transport_1.FileTransport {
7
+ getFile(_entry) {
8
+ const dir = (0, node_path_1.dirname)(this.options.file);
9
+ const ext = (0, node_path_1.extname)(this.options.file);
10
+ const name = (0, node_path_1.basename)(this.options.file, ext);
11
+ const date = new Date().toISOString().slice(0, 10);
12
+ return (0, node_path_1.join)(dir, `${name}-${date}${ext}`);
13
+ }
14
+ }
15
+ exports.DailyFileTransport = DailyFileTransport;
16
+ //# sourceMappingURL=daily-file-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"daily-file-transport.js","sourceRoot":"","sources":["../../src/transports/daily-file-transport.ts"],"names":[],"mappings":";;;AAAA,yCAA6D;AAG7D,qDAAiD;AAKjD,MAAa,kBAAmB,SAAQ,8BAAa;IAC9B,OAAO,CAAC,MAAgB;QACvC,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,IAAI,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QAE9C,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEnD,OAAO,IAAA,gBAAI,EAAC,GAAG,EAAE,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,CAAC,CAAC;IAC9C,CAAC;CACJ;AAVD,gDAUC"}
@@ -0,0 +1,12 @@
1
+ import { LogEntry } from '../log-entry';
2
+ import { LogTransport, LogTransportOptions } from '../log-transport';
3
+ export interface FileTransportOptions extends LogTransportOptions {
4
+ file: string;
5
+ }
6
+ export declare class FileTransport extends LogTransport {
7
+ protected readonly options: FileTransportOptions;
8
+ constructor(options: FileTransportOptions);
9
+ protected getFile(_entry: LogEntry): string;
10
+ protected beforeWrite(_entry: LogEntry): Promise<void>;
11
+ write(entry: LogEntry): Promise<void>;
12
+ }
@@ -0,0 +1,37 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.FileTransport = void 0;
13
+ const promises_1 = require("node:fs/promises");
14
+ const log_transport_1 = require("../log-transport");
15
+ class FileTransport extends log_transport_1.LogTransport {
16
+ constructor(options) {
17
+ super(options);
18
+ this.options = options;
19
+ }
20
+ getFile(_entry) {
21
+ return this.options.file;
22
+ }
23
+ beforeWrite(_entry) {
24
+ return __awaiter(this, void 0, void 0, function* () {
25
+ });
26
+ }
27
+ write(entry) {
28
+ return __awaiter(this, void 0, void 0, function* () {
29
+ if (entry.level < this.options.minLevel)
30
+ return;
31
+ yield this.beforeWrite(entry);
32
+ yield (0, promises_1.appendFile)(this.getFile(entry), this.options.formatter.format(entry) + '\n');
33
+ });
34
+ }
35
+ }
36
+ exports.FileTransport = FileTransport;
37
+ //# sourceMappingURL=file-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file-transport.js","sourceRoot":"","sources":["../../src/transports/file-transport.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAA8C;AAE9C,oDAAqE;AAarE,MAAa,aAAc,SAAQ,4BAAY;IAC3C,YAA+B,OAA6B;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QADY,YAAO,GAAP,OAAO,CAAsB;IAE5D,CAAC;IAES,OAAO,CAAC,MAAgB;QAC9B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7B,CAAC;IAEe,WAAW,CAAC,MAAgB;;QAE5C,CAAC;KAAA;IAEK,KAAK,CAAC,KAAe;;YACvB,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAAE,OAAO;YAEhD,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAE9B,MAAM,IAAA,qBAAU,EAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QACvF,CAAC;KAAA;CACJ;AApBD,sCAoBC"}
@@ -0,0 +1,11 @@
1
+ import { LogEntry } from '../log-entry';
2
+ import { LogTransport, LogTransportOptions } from '../log-transport';
3
+ export interface HttpTransportOptions extends LogTransportOptions {
4
+ url: string;
5
+ headers?: Record<string, string>;
6
+ }
7
+ export declare class HttpTransport extends LogTransport {
8
+ private readonly options;
9
+ constructor(options: HttpTransportOptions);
10
+ write(entry: LogEntry): Promise<void>;
11
+ }
@@ -0,0 +1,32 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.HttpTransport = void 0;
13
+ const log_transport_1 = require("../log-transport");
14
+ class HttpTransport extends log_transport_1.LogTransport {
15
+ constructor(options) {
16
+ super(options);
17
+ this.options = options;
18
+ }
19
+ write(entry) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ if (entry.level < this.options.minLevel)
22
+ return;
23
+ yield fetch(this.options.url, {
24
+ method: 'POST',
25
+ headers: Object.assign({ 'Content-Type': 'application/json' }, this.options.headers),
26
+ body: JSON.stringify(entry)
27
+ });
28
+ });
29
+ }
30
+ }
31
+ exports.HttpTransport = HttpTransport;
32
+ //# sourceMappingURL=http-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http-transport.js","sourceRoot":"","sources":["../../src/transports/http-transport.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,oDAAqE;AAerE,MAAa,aAAc,SAAQ,4BAAY;IAC3C,YAA6B,OAA6B;QACtD,KAAK,CAAC,OAAO,CAAC,CAAC;QADU,YAAO,GAAP,OAAO,CAAsB;IAE1D,CAAC;IAEK,KAAK,CAAC,KAAe;;YACvB,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAAE,OAAO;YAEhD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,kBACH,cAAc,EAAE,kBAAkB,IAC/B,IAAI,CAAC,OAAO,CAAC,OAAO,CAC1B;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC;aAC9B,CAAC,CAAC;QACP,CAAC;KAAA;CACJ;AAjBD,sCAiBC"}
@@ -0,0 +1,9 @@
1
+ export * from './console-transport';
2
+ export * from './daily-file-transport';
3
+ export * from './file-transport';
4
+ export * from './http-transport';
5
+ export * from './memory-transport';
6
+ export * from './null-transport';
7
+ export * from './rotating-file-transport';
8
+ export * from './stream-transport';
9
+ export * from './webhook-transport';
@@ -0,0 +1,26 @@
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("./console-transport"), exports);
18
+ __exportStar(require("./daily-file-transport"), exports);
19
+ __exportStar(require("./file-transport"), exports);
20
+ __exportStar(require("./http-transport"), exports);
21
+ __exportStar(require("./memory-transport"), exports);
22
+ __exportStar(require("./null-transport"), exports);
23
+ __exportStar(require("./rotating-file-transport"), exports);
24
+ __exportStar(require("./stream-transport"), exports);
25
+ __exportStar(require("./webhook-transport"), exports);
26
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transports/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,sDAAoC;AACpC,yDAAuC;AACvC,mDAAiC;AACjC,mDAAiC;AACjC,qDAAmC;AACnC,mDAAiC;AACjC,4DAA0C;AAC1C,qDAAmC;AACnC,sDAAoC"}
@@ -0,0 +1,7 @@
1
+ import { LogEntry } from '../log-entry';
2
+ import { LogTransport } from '../log-transport';
3
+ export declare class MemoryTransport extends LogTransport {
4
+ readonly entries: LogEntry[];
5
+ write(entry: LogEntry): Promise<void>;
6
+ clear(): void;
7
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MemoryTransport = void 0;
13
+ const log_transport_1 = require("../log-transport");
14
+ class MemoryTransport extends log_transport_1.LogTransport {
15
+ constructor() {
16
+ super(...arguments);
17
+ this.entries = [];
18
+ }
19
+ write(entry) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ if (entry.level < this.config.minLevel)
22
+ return;
23
+ this.entries.push(entry);
24
+ });
25
+ }
26
+ clear() {
27
+ this.entries.length = 0;
28
+ }
29
+ }
30
+ exports.MemoryTransport = MemoryTransport;
31
+ //# sourceMappingURL=memory-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-transport.js","sourceRoot":"","sources":["../../src/transports/memory-transport.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,oDAAgD;AAKhD,MAAa,eAAgB,SAAQ,4BAAY;IAAjD;;QACa,YAAO,GAAe,EAAE,CAAC;IAWtC,CAAC;IATS,KAAK,CAAC,KAAe;;YACvB,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ;gBAAE,OAAO;YAE/C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;KAAA;IAED,KAAK;QACD,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,CAAC;CACJ;AAZD,0CAYC"}
@@ -0,0 +1,5 @@
1
+ import { LogEntry } from '../log-entry';
2
+ import { LogTransport } from '../log-transport';
3
+ export declare class NullTransport extends LogTransport {
4
+ write(_: LogEntry): Promise<void>;
5
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.NullTransport = void 0;
13
+ const log_transport_1 = require("../log-transport");
14
+ class NullTransport extends log_transport_1.LogTransport {
15
+ write(_) {
16
+ return __awaiter(this, void 0, void 0, function* () {
17
+ });
18
+ }
19
+ }
20
+ exports.NullTransport = NullTransport;
21
+ //# sourceMappingURL=null-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"null-transport.js","sourceRoot":"","sources":["../../src/transports/null-transport.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,oDAAgD;AAKhD,MAAa,aAAc,SAAQ,4BAAY;IACrC,KAAK,CAAC,CAAW;;QAEvB,CAAC;KAAA;CACJ;AAJD,sCAIC"}
@@ -0,0 +1,11 @@
1
+ import { FileTransport, FileTransportOptions } from './file-transport';
2
+ export interface RotatingFileTransportOptions extends FileTransportOptions {
3
+ maxSize: number;
4
+ maxFiles: number;
5
+ }
6
+ export declare class RotatingFileTransport extends FileTransport {
7
+ protected readonly options: RotatingFileTransportOptions;
8
+ constructor(options: RotatingFileTransportOptions);
9
+ protected beforeWrite(): Promise<void>;
10
+ private rotate;
11
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.RotatingFileTransport = void 0;
13
+ const promises_1 = require("node:fs/promises");
14
+ const node_path_1 = require("node:path");
15
+ const file_transport_1 = require("./file-transport");
16
+ class RotatingFileTransport extends file_transport_1.FileTransport {
17
+ constructor(options) {
18
+ super(options);
19
+ this.options = options;
20
+ }
21
+ beforeWrite() {
22
+ return __awaiter(this, void 0, void 0, function* () {
23
+ let info;
24
+ try {
25
+ info = yield (0, promises_1.stat)(this.options.file);
26
+ }
27
+ catch (_a) {
28
+ return;
29
+ }
30
+ if (info.size >= this.options.maxSize) {
31
+ yield this.rotate();
32
+ }
33
+ });
34
+ }
35
+ rotate() {
36
+ return __awaiter(this, void 0, void 0, function* () {
37
+ const maxFiles = this.options.maxFiles;
38
+ const dir = (0, node_path_1.dirname)(this.options.file);
39
+ const ext = (0, node_path_1.extname)(this.options.file);
40
+ const name = (0, node_path_1.basename)(this.options.file, ext);
41
+ for (let i = maxFiles - 1; i >= 1; i--) {
42
+ const source = (0, node_path_1.join)(dir, `${name}.${i}${ext}`);
43
+ const target = (0, node_path_1.join)(dir, `${name}.${i + 1}${ext}`);
44
+ try {
45
+ yield (0, promises_1.rename)(source, target);
46
+ }
47
+ catch (_a) {
48
+ }
49
+ }
50
+ try {
51
+ yield (0, promises_1.rename)(this.options.file, (0, node_path_1.join)(dir, `${name}.1${ext}`));
52
+ }
53
+ catch (_b) {
54
+ }
55
+ });
56
+ }
57
+ }
58
+ exports.RotatingFileTransport = RotatingFileTransport;
59
+ //# sourceMappingURL=rotating-file-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rotating-file-transport.js","sourceRoot":"","sources":["../../src/transports/rotating-file-transport.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAAgD;AAEhD,yCAA6D;AAE7D,qDAAuE;AAYvE,MAAa,qBAAsB,SAAQ,8BAAa;IAGpD,YAAY,OAAqC;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEwB,WAAW;;YAChC,IAAI,IAAI,CAAC;YAET,IAAI,CAAC;gBACD,IAAI,GAAG,MAAM,IAAA,eAAI,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACzC,CAAC;YAAC,WAAM,CAAC;gBACL,OAAO;YACX,CAAC;YAED,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACpC,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC;YACxB,CAAC;QACL,CAAC;KAAA;IAEa,MAAM;;YAChB,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;YAEvC,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,GAAG,GAAG,IAAA,mBAAO,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACvC,MAAM,IAAI,GAAG,IAAA,oBAAQ,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;YAE9C,KAAK,IAAI,CAAC,GAAG,QAAQ,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBACrC,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,GAAG,EAAE,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,EAAE,CAAC,CAAC;gBAEnD,IAAI,CAAC;oBACD,MAAM,IAAA,iBAAM,EAAC,MAAM,EAAE,MAAM,CAAC,CAAC;gBACjC,CAAC;gBAAC,WAAM,CAAC;gBAET,CAAC;YACL,CAAC;YAED,IAAI,CAAC;gBACD,MAAM,IAAA,iBAAM,EAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAA,gBAAI,EAAC,GAAG,EAAE,GAAG,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC;YAClE,CAAC;YAAC,WAAM,CAAC;YAET,CAAC;QACL,CAAC;KAAA;CACJ;AA9CD,sDA8CC"}
@@ -0,0 +1,11 @@
1
+ import { Writable } from 'node:stream';
2
+ import { LogEntry } from '../log-entry';
3
+ import { LogTransport, LogTransportOptions } from '../log-transport';
4
+ export interface StreamTransportOptions extends LogTransportOptions {
5
+ stream: Writable;
6
+ }
7
+ export declare class StreamTransport extends LogTransport {
8
+ private readonly options;
9
+ constructor(options: StreamTransportOptions);
10
+ write(entry: LogEntry): Promise<void>;
11
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.StreamTransport = void 0;
13
+ const log_transport_1 = require("../log-transport");
14
+ class StreamTransport extends log_transport_1.LogTransport {
15
+ constructor(options) {
16
+ super(options);
17
+ this.options = options;
18
+ }
19
+ write(entry) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ if (entry.level < this.options.minLevel)
22
+ return;
23
+ this.options.stream.write(this.options.formatter.format(entry) + '\n');
24
+ });
25
+ }
26
+ }
27
+ exports.StreamTransport = StreamTransport;
28
+ //# sourceMappingURL=stream-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stream-transport.js","sourceRoot":"","sources":["../../src/transports/stream-transport.ts"],"names":[],"mappings":";;;;;;;;;;;;AAEA,oDAAqE;AAarE,MAAa,eAAgB,SAAQ,4BAAY;IAC7C,YAA6B,OAA+B;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QADU,YAAO,GAAP,OAAO,CAAwB;IAE5D,CAAC;IAEK,KAAK,CAAC,KAAe;;YACvB,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAAE,OAAO;YAEhD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3E,CAAC;KAAA;CACJ;AAVD,0CAUC"}
@@ -0,0 +1,10 @@
1
+ import { LogEntry } from '../log-entry';
2
+ import { LogTransport, LogTransportOptions } from '../log-transport';
3
+ export interface WebhookTransportOptions extends LogTransportOptions {
4
+ url: string;
5
+ }
6
+ export declare class WebhookTransport extends LogTransport {
7
+ private readonly options;
8
+ constructor(options: WebhookTransportOptions);
9
+ write(entry: LogEntry): Promise<void>;
10
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.WebhookTransport = void 0;
13
+ const log_transport_1 = require("../log-transport");
14
+ class WebhookTransport extends log_transport_1.LogTransport {
15
+ constructor(options) {
16
+ super(options);
17
+ this.options = options;
18
+ }
19
+ write(entry) {
20
+ return __awaiter(this, void 0, void 0, function* () {
21
+ if (entry.level < this.options.minLevel)
22
+ return;
23
+ yield fetch(this.options.url, {
24
+ method: 'POST',
25
+ headers: {
26
+ 'Content-Type': 'application/json'
27
+ },
28
+ body: JSON.stringify({
29
+ content: this.options.formatter.format(entry)
30
+ })
31
+ });
32
+ });
33
+ }
34
+ }
35
+ exports.WebhookTransport = WebhookTransport;
36
+ //# sourceMappingURL=webhook-transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook-transport.js","sourceRoot":"","sources":["../../src/transports/webhook-transport.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,oDAAqE;AAUrE,MAAa,gBAAiB,SAAQ,4BAAY;IAC9C,YAA6B,OAAgC;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QADU,YAAO,GAAP,OAAO,CAAyB;IAE7D,CAAC;IAEK,KAAK,CAAC,KAAe;;YACvB,IAAI,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAAE,OAAO;YAEhD,MAAM,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE;gBAC1B,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACL,cAAc,EAAE,kBAAkB;iBACrC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACjB,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC;iBAChD,CAAC;aACL,CAAC,CAAC;QACP,CAAC;KAAA;CACJ;AAlBD,4CAkBC"}
package/package.json ADDED
@@ -0,0 +1,29 @@
1
+ {
2
+ "name": "@axisparkjs/logger",
3
+ "version": "1.0.0",
4
+ "description": "AxiSpark.js - The Ultimate Node.js Framework - @axisparkjs/logger",
5
+ "author": "Pablo Gálvez Ortuño",
6
+ "license": "Apache-2.0",
7
+ "main": "lib/index.js",
8
+ "types": "lib/index.d.ts",
9
+ "files": [
10
+ "lib",
11
+ "package.json",
12
+ "PACKAGE.md",
13
+ "tsconfig.build.json"
14
+ ],
15
+ "scripts": {
16
+ "build": "tsc -b tsconfig.build.json",
17
+ "prettier": "prettier --config ../../.prettierrc.json --ignore-path ../../.prettierignore '**/*.{ts,js,mjs,json,md,html,css,scss}' --check",
18
+ "lint": "eslint --config ../../eslint.config.mjs .",
19
+ "test:unit": "export NODE_ENV=test && jest --config jest.config.ts",
20
+ "sonar": "sonar-scanner -Dsonar.projectKey=axisparkjs-logger"
21
+ },
22
+ "engines": {
23
+ "node": ">= 20"
24
+ },
25
+ "dependencies": {
26
+ "@axisparkjs/common": "1.0.0",
27
+ "@axisparkjs/di": "1.0.0"
28
+ }
29
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../../tsconfig.build.json",
3
+ "compilerOptions": {
4
+ "rootDir": "src",
5
+ "outDir": "lib"
6
+ },
7
+ "include": ["src/**/*.ts"],
8
+ "exclude": ["node_modules", "lib", "jest.config.ts", "**/*.spec.ts"]
9
+ }