@noego/logger 0.0.1

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 (56) hide show
  1. package/README.md +62 -0
  2. package/dist/core/abstract_logger.cjs +140 -0
  3. package/dist/core/abstract_logger.cjs.map +1 -0
  4. package/dist/core/abstract_logger.d.cts +55 -0
  5. package/dist/core/abstract_logger.d.ts +55 -0
  6. package/dist/core/abstract_logger.js +116 -0
  7. package/dist/core/abstract_logger.js.map +1 -0
  8. package/dist/core/log_level.cjs +78 -0
  9. package/dist/core/log_level.cjs.map +1 -0
  10. package/dist/core/log_level.d.cts +12 -0
  11. package/dist/core/log_level.d.ts +12 -0
  12. package/dist/core/log_level.js +52 -0
  13. package/dist/core/log_level.js.map +1 -0
  14. package/dist/core/log_transport.cjs +17 -0
  15. package/dist/core/log_transport.cjs.map +1 -0
  16. package/dist/core/log_transport.d.cts +15 -0
  17. package/dist/core/log_transport.d.ts +15 -0
  18. package/dist/core/log_transport.js +1 -0
  19. package/dist/core/log_transport.js.map +1 -0
  20. package/dist/core/logging_manager.cjs +130 -0
  21. package/dist/core/logging_manager.cjs.map +1 -0
  22. package/dist/core/logging_manager.d.cts +44 -0
  23. package/dist/core/logging_manager.d.ts +44 -0
  24. package/dist/core/logging_manager.js +103 -0
  25. package/dist/core/logging_manager.js.map +1 -0
  26. package/dist/get_logger.cjs +33 -0
  27. package/dist/get_logger.cjs.map +1 -0
  28. package/dist/get_logger.d.cts +25 -0
  29. package/dist/get_logger.d.ts +25 -0
  30. package/dist/get_logger.js +9 -0
  31. package/dist/get_logger.js.map +1 -0
  32. package/dist/index.cjs +48 -0
  33. package/dist/index.cjs.map +1 -0
  34. package/dist/index.d.cts +6 -0
  35. package/dist/index.d.ts +6 -0
  36. package/dist/index.js +16 -0
  37. package/dist/index.js.map +1 -0
  38. package/dist/ioc/index.cjs +34 -0
  39. package/dist/ioc/index.cjs.map +1 -0
  40. package/dist/ioc/index.d.cts +41 -0
  41. package/dist/ioc/index.d.ts +41 -0
  42. package/dist/ioc/index.js +10 -0
  43. package/dist/ioc/index.js.map +1 -0
  44. package/dist/transports/console.cjs +31 -0
  45. package/dist/transports/console.cjs.map +1 -0
  46. package/dist/transports/console.d.cts +2 -0
  47. package/dist/transports/console.d.ts +2 -0
  48. package/dist/transports/console.js +7 -0
  49. package/dist/transports/console.js.map +1 -0
  50. package/dist/transports/console_transport.cjs +48 -0
  51. package/dist/transports/console_transport.cjs.map +1 -0
  52. package/dist/transports/console_transport.d.cts +7 -0
  53. package/dist/transports/console_transport.d.ts +7 -0
  54. package/dist/transports/console_transport.js +24 -0
  55. package/dist/transports/console_transport.js.map +1 -0
  56. package/package.json +61 -0
@@ -0,0 +1,41 @@
1
+ import { IContainer, LoadAs } from '@noego/ioc';
2
+ export { Logger } from '../core/abstract_logger.cjs';
3
+ export { LoggingManager } from '../core/logging_manager.cjs';
4
+ import '../core/log_level.cjs';
5
+ import '../core/log_transport.cjs';
6
+
7
+ /**
8
+ * Registers a logger factory function in the IoC container.
9
+ *
10
+ * The registered factory creates a logger with the specified name using the global LoggingManager.
11
+ * This ensures all loggers share the same configuration and transports.
12
+ *
13
+ * @param container - The IoC container to register the logger factory in
14
+ * @param label - The label (string or symbol) to register the logger under
15
+ * @param name - The name of the logger (used in log output)
16
+ * @param options - Optional configuration
17
+ * @param options.loadAs - How to load the logger (defaults to LoadAs.Singleton)
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * import { createContainer, LoadAs } from '@noego/ioc';
22
+ * import { registerLoggerFactory } from '@noego/logger/ioc';
23
+ *
24
+ * const container = createContainer();
25
+ *
26
+ * // Register as singleton (default)
27
+ * registerLoggerFactory(container, Symbol.for('@noego/dinner:logger'), 'dinner');
28
+ *
29
+ * // Register as transient
30
+ * registerLoggerFactory(container, 'myLogger', 'app', { loadAs: LoadAs.Transient });
31
+ *
32
+ * // Use the logger
33
+ * const logger = container.get(Symbol.for('@noego/dinner:logger'));
34
+ * logger.info('Application started');
35
+ * ```
36
+ */
37
+ declare function registerLoggerFactory(container: IContainer, label: string | symbol, name: string, options?: {
38
+ loadAs?: LoadAs;
39
+ }): void;
40
+
41
+ export { registerLoggerFactory };
@@ -0,0 +1,41 @@
1
+ import { IContainer, LoadAs } from '@noego/ioc';
2
+ export { Logger } from '../core/abstract_logger.js';
3
+ export { LoggingManager } from '../core/logging_manager.js';
4
+ import '../core/log_level.js';
5
+ import '../core/log_transport.js';
6
+
7
+ /**
8
+ * Registers a logger factory function in the IoC container.
9
+ *
10
+ * The registered factory creates a logger with the specified name using the global LoggingManager.
11
+ * This ensures all loggers share the same configuration and transports.
12
+ *
13
+ * @param container - The IoC container to register the logger factory in
14
+ * @param label - The label (string or symbol) to register the logger under
15
+ * @param name - The name of the logger (used in log output)
16
+ * @param options - Optional configuration
17
+ * @param options.loadAs - How to load the logger (defaults to LoadAs.Singleton)
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * import { createContainer, LoadAs } from '@noego/ioc';
22
+ * import { registerLoggerFactory } from '@noego/logger/ioc';
23
+ *
24
+ * const container = createContainer();
25
+ *
26
+ * // Register as singleton (default)
27
+ * registerLoggerFactory(container, Symbol.for('@noego/dinner:logger'), 'dinner');
28
+ *
29
+ * // Register as transient
30
+ * registerLoggerFactory(container, 'myLogger', 'app', { loadAs: LoadAs.Transient });
31
+ *
32
+ * // Use the logger
33
+ * const logger = container.get(Symbol.for('@noego/dinner:logger'));
34
+ * logger.info('Application started');
35
+ * ```
36
+ */
37
+ declare function registerLoggerFactory(container: IContainer, label: string | symbol, name: string, options?: {
38
+ loadAs?: LoadAs;
39
+ }): void;
40
+
41
+ export { registerLoggerFactory };
@@ -0,0 +1,10 @@
1
+ import { LoadAs } from "@noego/ioc";
2
+ import { getLogger } from "../get_logger.js";
3
+ function registerLoggerFactory(container, label, name, options) {
4
+ const { loadAs = LoadAs.Singleton } = options || {};
5
+ container.registerFunction(label, () => getLogger(name), { loadAs });
6
+ }
7
+ export {
8
+ registerLoggerFactory
9
+ };
10
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/ioc/index.ts"],"sourcesContent":["import type { IContainer } from '@noego/ioc';\nimport { LoadAs } from '@noego/ioc';\nimport { getLogger } from '../get_logger.js';\n\n/**\n * Registers a logger factory function in the IoC container.\n *\n * The registered factory creates a logger with the specified name using the global LoggingManager.\n * This ensures all loggers share the same configuration and transports.\n *\n * @param container - The IoC container to register the logger factory in\n * @param label - The label (string or symbol) to register the logger under\n * @param name - The name of the logger (used in log output)\n * @param options - Optional configuration\n * @param options.loadAs - How to load the logger (defaults to LoadAs.Singleton)\n *\n * @example\n * ```typescript\n * import { createContainer, LoadAs } from '@noego/ioc';\n * import { registerLoggerFactory } from '@noego/logger/ioc';\n *\n * const container = createContainer();\n *\n * // Register as singleton (default)\n * registerLoggerFactory(container, Symbol.for('@noego/dinner:logger'), 'dinner');\n *\n * // Register as transient\n * registerLoggerFactory(container, 'myLogger', 'app', { loadAs: LoadAs.Transient });\n *\n * // Use the logger\n * const logger = container.get(Symbol.for('@noego/dinner:logger'));\n * logger.info('Application started');\n * ```\n */\nexport function registerLoggerFactory(\n container: IContainer,\n label: string | symbol,\n name: string,\n options?: { loadAs?: LoadAs }\n): void {\n const { loadAs = LoadAs.Singleton } = options || {};\n container.registerFunction(label, () => getLogger(name), { loadAs });\n}\n\n/**\n * Logger interface for type annotations and dependency injection.\n *\n * @example\n * ```typescript\n * import { Inject } from '@noego/ioc';\n * import type { Logger } from '@noego/logger/ioc';\n *\n * class MyService {\n * constructor(\n * @Inject(Symbol.for('@noego/dinner:logger')) private logger: Logger\n * ) {}\n *\n * doSomething() {\n * this.logger.info('Doing something');\n * }\n * }\n * ```\n */\nexport type { Logger } from '../core/abstract_logger.js';\n\n/**\n * Re-export LoggingManager for advanced use cases.\n *\n * @example\n * ```typescript\n * import type { LoggingManager } from '@noego/logger/ioc';\n *\n * // Use for custom integrations or testing\n * ```\n */\nexport type { LoggingManager } from '../core/logging_manager.js';\n"],"mappings":"AACA,SAAS,cAAc;AACvB,SAAS,iBAAiB;AAgCnB,SAAS,sBACd,WACA,OACA,MACA,SACM;AACN,QAAM,EAAE,SAAS,OAAO,UAAU,IAAI,WAAW,CAAC;AAClD,YAAU,iBAAiB,OAAO,MAAM,UAAU,IAAI,GAAG,EAAE,OAAO,CAAC;AACrE;","names":[]}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var console_exports = {};
20
+ __export(console_exports, {
21
+ ConsoleTransport: () => import_console_transport.ConsoleTransport,
22
+ default: () => import_console_transport2.ConsoleTransport
23
+ });
24
+ module.exports = __toCommonJS(console_exports);
25
+ var import_console_transport = require("./console_transport.cjs");
26
+ var import_console_transport2 = require("./console_transport.cjs");
27
+ // Annotate the CommonJS export names for ESM import in node:
28
+ 0 && (module.exports = {
29
+ ConsoleTransport
30
+ });
31
+ //# sourceMappingURL=console.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transports/console.ts"],"sourcesContent":["// Re-export everything from console_transport for the ./transports/console entry point\nexport { ConsoleTransport } from './console_transport.cjs';\nexport { ConsoleTransport as default } from './console_transport.cjs';\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,+BAAiC;AACjC,IAAAA,4BAA4C;","names":["import_console_transport"]}
@@ -0,0 +1,2 @@
1
+ export { ConsoleTransport, ConsoleTransport as default } from './console_transport.cjs';
2
+ import '../core/log_transport.cjs';
@@ -0,0 +1,2 @@
1
+ export { ConsoleTransport, ConsoleTransport as default } from './console_transport.js';
2
+ import '../core/log_transport.js';
@@ -0,0 +1,7 @@
1
+ import { ConsoleTransport } from "./console_transport.js";
2
+ import { ConsoleTransport as ConsoleTransport2 } from "./console_transport.js";
3
+ export {
4
+ ConsoleTransport,
5
+ ConsoleTransport2 as default
6
+ };
7
+ //# sourceMappingURL=console.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transports/console.ts"],"sourcesContent":["// Re-export everything from console_transport for the ./transports/console entry point\nexport { ConsoleTransport } from './console_transport.js';\nexport { ConsoleTransport as default } from './console_transport.js';\n"],"mappings":"AACA,SAAS,wBAAwB;AACjC,SAA6B,oBAApBA,yBAAmC;","names":["ConsoleTransport"]}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var console_transport_exports = {};
20
+ __export(console_transport_exports, {
21
+ ConsoleTransport: () => ConsoleTransport,
22
+ default: () => console_transport_default
23
+ });
24
+ module.exports = __toCommonJS(console_transport_exports);
25
+ class ConsoleTransport {
26
+ log(entry) {
27
+ const contextStr = entry.context !== void 0 ? ` ${JSON.stringify(entry.context)}` : "";
28
+ const formatted = `[${entry.timestamp}] [${entry.logger}] [${entry.level}] ${entry.message}${contextStr}`;
29
+ switch (entry.level) {
30
+ case "ERROR":
31
+ case "FATAL":
32
+ console.error(formatted);
33
+ break;
34
+ case "WARN":
35
+ console.warn(formatted);
36
+ break;
37
+ default:
38
+ console.log(formatted);
39
+ break;
40
+ }
41
+ }
42
+ }
43
+ var console_transport_default = ConsoleTransport;
44
+ // Annotate the CommonJS export names for ESM import in node:
45
+ 0 && (module.exports = {
46
+ ConsoleTransport
47
+ });
48
+ //# sourceMappingURL=console_transport.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transports/console_transport.ts"],"sourcesContent":["import type { LogEntry, LogTransport } from \"../core/log_transport.cjs\";\n\nexport class ConsoleTransport implements LogTransport {\n log(entry: LogEntry): void {\n const contextStr = entry.context !== undefined ? ` ${JSON.stringify(entry.context)}` : \"\";\n const formatted = `[${entry.timestamp}] [${entry.logger}] [${entry.level}] ${entry.message}${contextStr}`;\n\n switch (entry.level) {\n case \"ERROR\":\n case \"FATAL\":\n console.error(formatted);\n break;\n case \"WARN\":\n console.warn(formatted);\n break;\n default:\n console.log(formatted);\n break;\n }\n }\n}\n\nexport default ConsoleTransport;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,iBAAyC;AAAA,EACpD,IAAI,OAAuB;AACzB,UAAM,aAAa,MAAM,YAAY,SAAY,IAAI,KAAK,UAAU,MAAM,OAAO,CAAC,KAAK;AACvF,UAAM,YAAY,IAAI,MAAM,SAAS,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,OAAO,GAAG,UAAU;AAEvG,YAAQ,MAAM,OAAO;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AACH,gBAAQ,MAAM,SAAS;AACvB;AAAA,MACF,KAAK;AACH,gBAAQ,KAAK,SAAS;AACtB;AAAA,MACF;AACE,gBAAQ,IAAI,SAAS;AACrB;AAAA,IACJ;AAAA,EACF;AACF;AAEA,IAAO,4BAAQ;","names":[]}
@@ -0,0 +1,7 @@
1
+ import { LogTransport, LogEntry } from '../core/log_transport.cjs';
2
+
3
+ declare class ConsoleTransport implements LogTransport {
4
+ log(entry: LogEntry): void;
5
+ }
6
+
7
+ export { ConsoleTransport, ConsoleTransport as default };
@@ -0,0 +1,7 @@
1
+ import { LogTransport, LogEntry } from '../core/log_transport.js';
2
+
3
+ declare class ConsoleTransport implements LogTransport {
4
+ log(entry: LogEntry): void;
5
+ }
6
+
7
+ export { ConsoleTransport, ConsoleTransport as default };
@@ -0,0 +1,24 @@
1
+ class ConsoleTransport {
2
+ log(entry) {
3
+ const contextStr = entry.context !== void 0 ? ` ${JSON.stringify(entry.context)}` : "";
4
+ const formatted = `[${entry.timestamp}] [${entry.logger}] [${entry.level}] ${entry.message}${contextStr}`;
5
+ switch (entry.level) {
6
+ case "ERROR":
7
+ case "FATAL":
8
+ console.error(formatted);
9
+ break;
10
+ case "WARN":
11
+ console.warn(formatted);
12
+ break;
13
+ default:
14
+ console.log(formatted);
15
+ break;
16
+ }
17
+ }
18
+ }
19
+ var console_transport_default = ConsoleTransport;
20
+ export {
21
+ ConsoleTransport,
22
+ console_transport_default as default
23
+ };
24
+ //# sourceMappingURL=console_transport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/transports/console_transport.ts"],"sourcesContent":["import type { LogEntry, LogTransport } from \"../core/log_transport.js\";\n\nexport class ConsoleTransport implements LogTransport {\n log(entry: LogEntry): void {\n const contextStr = entry.context !== undefined ? ` ${JSON.stringify(entry.context)}` : \"\";\n const formatted = `[${entry.timestamp}] [${entry.logger}] [${entry.level}] ${entry.message}${contextStr}`;\n\n switch (entry.level) {\n case \"ERROR\":\n case \"FATAL\":\n console.error(formatted);\n break;\n case \"WARN\":\n console.warn(formatted);\n break;\n default:\n console.log(formatted);\n break;\n }\n }\n}\n\nexport default ConsoleTransport;\n"],"mappings":"AAEO,MAAM,iBAAyC;AAAA,EACpD,IAAI,OAAuB;AACzB,UAAM,aAAa,MAAM,YAAY,SAAY,IAAI,KAAK,UAAU,MAAM,OAAO,CAAC,KAAK;AACvF,UAAM,YAAY,IAAI,MAAM,SAAS,MAAM,MAAM,MAAM,MAAM,MAAM,KAAK,KAAK,MAAM,OAAO,GAAG,UAAU;AAEvG,YAAQ,MAAM,OAAO;AAAA,MACnB,KAAK;AAAA,MACL,KAAK;AACH,gBAAQ,MAAM,SAAS;AACvB;AAAA,MACF,KAAK;AACH,gBAAQ,KAAK,SAAS;AACtB;AAAA,MACF;AACE,gBAAQ,IAAI,SAAS;AACrB;AAAA,IACJ;AAAA,EACF;AACF;AAEA,IAAO,4BAAQ;","names":[]}
package/package.json ADDED
@@ -0,0 +1,61 @@
1
+ {
2
+ "name": "@noego/logger",
3
+ "version": "0.0.1",
4
+ "description": "A flexible logging library for Node.js",
5
+ "type": "module",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "scripts": {
9
+ "build": "tsup",
10
+ "typecheck": "tsc --noEmit",
11
+ "test": "vitest run",
12
+ "test:watch": "vitest",
13
+ "test:ui": "vitest --ui",
14
+ "test:coverage": "vitest run --coverage"
15
+ },
16
+ "exports": {
17
+ ".": {
18
+ "types": "./dist/index.d.ts",
19
+ "require": "./dist/index.cjs",
20
+ "import": "./dist/index.js",
21
+ "default": "./dist/index.js"
22
+ },
23
+ "./ioc": {
24
+ "types": "./dist/ioc/index.d.ts",
25
+ "require": "./dist/ioc/index.cjs",
26
+ "import": "./dist/ioc/index.js",
27
+ "default": "./dist/ioc/index.js"
28
+ },
29
+ "./transports/console": {
30
+ "types": "./dist/transports/console.d.ts",
31
+ "require": "./dist/transports/console.cjs",
32
+ "import": "./dist/transports/console.js",
33
+ "default": "./dist/transports/console.js"
34
+ },
35
+ "./package.json": "./package.json"
36
+ },
37
+ "files": [
38
+ "dist"
39
+ ],
40
+ "author": "Shavauhn Gabay",
41
+ "license": "ISC",
42
+ "publishConfig": {
43
+ "access": "public"
44
+ },
45
+ "peerDependencies": {
46
+ "@noego/ioc": "*"
47
+ },
48
+ "peerDependenciesMeta": {
49
+ "@noego/ioc": {
50
+ "optional": true
51
+ }
52
+ },
53
+ "devDependencies": {
54
+ "@noego/ioc": "^0.0.11",
55
+ "@types/node": "^20.10.4",
56
+ "@vitest/ui": "^4.0.18",
57
+ "tsup": "^8.5.0",
58
+ "typescript": "^5.8.3",
59
+ "vitest": "^4.0.18"
60
+ }
61
+ }