@art-ws/slf 1.0.4 → 2.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 (53) hide show
  1. package/dist/{core → es/core}/controller.d.ts +4 -3
  2. package/dist/{core → es/core}/controller.js +28 -29
  3. package/dist/{core → es/core}/delegates.d.ts +8 -8
  4. package/dist/{delegates.js → es/core/delegates.js} +16 -19
  5. package/dist/{core → es/core}/index.d.ts +1 -2
  6. package/dist/es/core/index.js +4 -0
  7. package/dist/{core → es/core}/logger.d.ts +4 -4
  8. package/dist/{core → es/core}/logger.js +17 -14
  9. package/dist/{core → es/core}/types.d.ts +5 -5
  10. package/dist/es/core/types.js +28 -0
  11. package/dist/{index.d.ts → es/index.d.ts} +1 -2
  12. package/dist/es/index.js +3 -0
  13. package/dist/{platform-node.d.ts → es/platform-node.d.ts} +1 -2
  14. package/dist/es/platform-node.js +13 -0
  15. package/package.json +25 -54
  16. package/dist/core/controller.d.ts.map +0 -1
  17. package/dist/core/controller.js.map +0 -1
  18. package/dist/core/delegates.d.ts.map +0 -1
  19. package/dist/core/delegates.js +0 -60
  20. package/dist/core/delegates.js.map +0 -1
  21. package/dist/core/index.d.ts.map +0 -1
  22. package/dist/core/index.js +0 -9
  23. package/dist/core/index.js.map +0 -1
  24. package/dist/core/logger.d.ts.map +0 -1
  25. package/dist/core/logger.js.map +0 -1
  26. package/dist/core/manager.d.ts +0 -37
  27. package/dist/core/manager.d.ts.map +0 -1
  28. package/dist/core/manager.js +0 -119
  29. package/dist/core/manager.js.map +0 -1
  30. package/dist/core/types.d.ts.map +0 -1
  31. package/dist/core/types.js +0 -30
  32. package/dist/core/types.js.map +0 -1
  33. package/dist/delegates.d.ts +0 -19
  34. package/dist/delegates.d.ts.map +0 -1
  35. package/dist/delegates.js.map +0 -1
  36. package/dist/index.d.ts.map +0 -1
  37. package/dist/index.js +0 -7
  38. package/dist/index.js.map +0 -1
  39. package/dist/logger.d.ts +0 -18
  40. package/dist/logger.d.ts.map +0 -1
  41. package/dist/logger.js +0 -74
  42. package/dist/logger.js.map +0 -1
  43. package/dist/manager.d.ts +0 -32
  44. package/dist/manager.d.ts.map +0 -1
  45. package/dist/manager.js +0 -116
  46. package/dist/manager.js.map +0 -1
  47. package/dist/platform-node.d.ts.map +0 -1
  48. package/dist/platform-node.js +0 -18
  49. package/dist/platform-node.js.map +0 -1
  50. package/dist/types.d.ts +0 -60
  51. package/dist/types.d.ts.map +0 -1
  52. package/dist/types.js +0 -29
  53. package/dist/types.js.map +0 -1
@@ -1,4 +1,5 @@
1
- import { ILogDelegate, LogEntry, Logger, LogLevel } from "./types";
1
+ import type { ILogDelegate, Logger, LogLevel } from "./types";
2
+ import { LogEntry } from "./types";
2
3
  export declare class LoggerImpl implements Logger {
3
4
  controller: LogController;
4
5
  category: string;
@@ -26,11 +27,11 @@ export declare class LogController {
26
27
  static instance: LogController;
27
28
  static config(value?: LogConfig): LogConfig;
28
29
  static getDefaultDelegate(): ILogDelegate;
29
- delegate?: ILogDelegate;
30
+ delegates: ILogDelegate[];
30
31
  constructor();
31
32
  setDelegate(delegate: ILogDelegate): void;
33
+ addDelegate(delegate: ILogDelegate): void;
32
34
  static silent(): void;
33
35
  emit(e: LogEntry): void;
34
36
  isCategoryLevelEnabled(category: string, level: LogLevel): boolean;
35
37
  }
36
- //# sourceMappingURL=controller.d.ts.map
@@ -1,8 +1,5 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.LogController = exports.LoggerImpl = void 0;
4
- const delegates_1 = require("./delegates");
5
- const types_1 = require("./types");
1
+ import { NoopLogDelegate, SimpleLogDelegate } from "./delegates";
2
+ import { LogEntry } from "./types";
6
3
  let identifier = 0;
7
4
  function getID() {
8
5
  return identifier === Number.MAX_VALUE ? (identifier = 0) : identifier++;
@@ -17,7 +14,9 @@ function toArgs() {
17
14
  return getValues(arguments);
18
15
  }
19
16
  const nil = 0;
20
- class LoggerImpl {
17
+ export class LoggerImpl {
18
+ controller;
19
+ category;
21
20
  constructor(controller, category) {
22
21
  this.controller = controller;
23
22
  this.category = category;
@@ -35,7 +34,7 @@ class LoggerImpl {
35
34
  else {
36
35
  payload = getValues(args);
37
36
  }
38
- const logEntry = new types_1.LogEntry(getID(), this.category, level, payload);
37
+ const logEntry = new LogEntry(getID(), this.category, level, payload);
39
38
  this.controller.emit(logEntry);
40
39
  }
41
40
  _isEnabled(level) {
@@ -45,37 +44,37 @@ class LoggerImpl {
45
44
  return this._isEnabled("trace");
46
45
  }
47
46
  trace(...args) {
48
- this._log("trace", arguments);
47
+ this._log("trace", args);
49
48
  }
50
49
  isDebugEnabled() {
51
50
  return this._isEnabled("debug");
52
51
  }
53
52
  debug(...args) {
54
- this._log("debug", arguments);
53
+ this._log("debug", args);
55
54
  }
56
55
  isInfoEnabled() {
57
56
  return this._isEnabled("info");
58
57
  }
59
58
  info(...args) {
60
- this._log("info", arguments);
59
+ this._log("info", args);
61
60
  }
62
61
  isWarnEnabled() {
63
62
  return this._isEnabled("warn");
64
63
  }
65
64
  warn(...args) {
66
- this._log("warn", arguments);
65
+ this._log("warn", args);
67
66
  }
68
67
  isErrorEnabled() {
69
68
  return this._isEnabled("error");
70
69
  }
71
70
  error(...args) {
72
- this._log("error", arguments);
71
+ this._log("error", args);
73
72
  }
74
73
  isFatalEnabled() {
75
74
  return true;
76
75
  }
77
76
  fatal(...args) {
78
- this._log("fatal", arguments);
77
+ this._log("fatal", args);
79
78
  }
80
79
  logError(error, message) {
81
80
  const msg = message ?? "Error";
@@ -83,14 +82,11 @@ class LoggerImpl {
83
82
  this.error({ error: err, error_stack: err.stack }, msg);
84
83
  }
85
84
  }
86
- exports.LoggerImpl = LoggerImpl;
87
85
  let logConfig = {
88
86
  isTest: false,
89
87
  };
90
- class LogController {
91
- constructor() {
92
- this.delegate = LogController.getDefaultDelegate();
93
- }
88
+ export class LogController {
89
+ static instance = new LogController();
94
90
  static config(value) {
95
91
  if (value) {
96
92
  logConfig = value;
@@ -98,25 +94,28 @@ class LogController {
98
94
  return logConfig;
99
95
  }
100
96
  static getDefaultDelegate() {
101
- return logConfig?.isTest ? new delegates_1.NoopLogDelegate() : new delegates_1.SimpleLogDelegate();
97
+ return logConfig?.isTest ? new NoopLogDelegate() : new SimpleLogDelegate();
98
+ }
99
+ delegates = [];
100
+ constructor() {
101
+ this.addDelegate(LogController.getDefaultDelegate());
102
102
  }
103
103
  setDelegate(delegate) {
104
- this.delegate = delegate;
104
+ this.delegates = [delegate];
105
+ }
106
+ addDelegate(delegate) {
107
+ this.delegates.push(delegate);
105
108
  }
106
109
  static silent() {
107
- LogController.instance.setDelegate(new delegates_1.NoopLogDelegate());
110
+ LogController.instance.setDelegate(new NoopLogDelegate());
108
111
  }
109
112
  emit(e) {
110
- if (this.delegate) {
111
- this.delegate.onLog(e);
113
+ for (const delegate of this.delegates) {
114
+ delegate.onLog(e);
112
115
  }
113
116
  }
114
117
  isCategoryLevelEnabled(category, level) {
115
- return this.delegate
116
- ? this.delegate.isCategoryLevelEnabled(category, level)
117
- : true;
118
+ const delegate = this.delegates[0];
119
+ return delegate ? delegate.isCategoryLevelEnabled(category, level) : true;
118
120
  }
119
121
  }
120
- exports.LogController = LogController;
121
- LogController.instance = new LogController();
122
- //# sourceMappingURL=controller.js.map
@@ -1,19 +1,19 @@
1
- import { ILogDelegate, LogEntry, LogLevel, SlfConfig } from "./types";
1
+ import type { ILogDelegate, LogLevel, SlfConfig } from "./types";
2
+ import { LogEntry } from "./types";
2
3
  export declare abstract class LogDelegateBase implements ILogDelegate {
3
- protected cfg?: Partial<SlfConfig>;
4
- constructor(cfg?: Partial<SlfConfig>);
5
- onLog(e: LogEntry): void;
4
+ protected cfg?: Partial<SlfConfig> | undefined;
5
+ constructor(cfg?: Partial<SlfConfig> | undefined);
6
+ onLog(_e: LogEntry): void;
6
7
  protected getCategoryLevel(category: string): LogLevel;
7
8
  protected getLevelValue(level: LogLevel): number;
8
9
  protected getCategoryLevelCode(category: string): number;
9
10
  isCategoryLevelEnabled(category: string, level: LogLevel): boolean;
10
11
  }
11
12
  export declare class NoopLogDelegate implements ILogDelegate {
12
- onLog(e: LogEntry): void;
13
- isCategoryLevelEnabled(category: string, level: LogLevel): boolean;
13
+ onLog(_e: LogEntry): void;
14
+ isCategoryLevelEnabled(_category: string, _level: LogLevel): boolean;
14
15
  }
15
16
  export declare class SimpleLogDelegate implements ILogDelegate {
16
17
  onLog(e: LogEntry): void;
17
- isCategoryLevelEnabled(category: string, level: LogLevel): boolean;
18
+ isCategoryLevelEnabled(_category: string, _level: LogLevel): boolean;
18
19
  }
19
- //# sourceMappingURL=delegates.d.ts.map
@@ -1,6 +1,4 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SimpleLogDelegate = exports.NoopLogDelegate = exports.LogDelegateBase = void 0;
1
+ import { LogEntry } from "./types";
4
2
  const SLF_LEVEL_VALUES = {
5
3
  all: 0,
6
4
  trace: 10,
@@ -11,23 +9,26 @@ const SLF_LEVEL_VALUES = {
11
9
  fatal: 60,
12
10
  off: Number.MAX_VALUE,
13
11
  };
14
- class LogDelegateBase {
12
+ export class LogDelegateBase {
13
+ cfg;
15
14
  constructor(cfg) {
16
15
  this.cfg = cfg;
17
16
  }
18
- onLog(e) { }
17
+ onLog(_e) { }
19
18
  getCategoryLevel(category) {
20
19
  const { cfg } = this;
21
20
  if (!cfg)
22
21
  return "all";
23
- const def = (cfg.categories ?? {})[category] ?? "all";
24
- if (typeof def === "string") {
25
- return def;
22
+ if (cfg.forceLevel)
23
+ return cfg.forceLevel;
24
+ const level = (cfg.categories || {})[category];
25
+ if (level && typeof level === "string") {
26
+ return level;
26
27
  }
27
- return def?.level ?? cfg.defaultLevel ?? "all";
28
+ return level?.level || cfg.defaultLevel || "all";
28
29
  }
29
30
  getLevelValue(level) {
30
- return SLF_LEVEL_VALUES[level] ?? SLF_LEVEL_VALUES.all;
31
+ return SLF_LEVEL_VALUES[level] || SLF_LEVEL_VALUES.all;
31
32
  }
32
33
  getCategoryLevelCode(category) {
33
34
  return this.getLevelValue(this.getCategoryLevel(category));
@@ -40,21 +41,17 @@ class LogDelegateBase {
40
41
  return isEnabled;
41
42
  }
42
43
  }
43
- exports.LogDelegateBase = LogDelegateBase;
44
- class NoopLogDelegate {
45
- onLog(e) { }
46
- isCategoryLevelEnabled(category, level) {
44
+ export class NoopLogDelegate {
45
+ onLog(_e) { }
46
+ isCategoryLevelEnabled(_category, _level) {
47
47
  return false;
48
48
  }
49
49
  }
50
- exports.NoopLogDelegate = NoopLogDelegate;
51
- class SimpleLogDelegate {
50
+ export class SimpleLogDelegate {
52
51
  onLog(e) {
53
52
  console.log(e.id, new Date(), `${e.category}#${e.level}`, e.payload);
54
53
  }
55
- isCategoryLevelEnabled(category, level) {
54
+ isCategoryLevelEnabled(_category, _level) {
56
55
  return false;
57
56
  }
58
57
  }
59
- exports.SimpleLogDelegate = SimpleLogDelegate;
60
- //# sourceMappingURL=delegates.js.map
@@ -1,5 +1,4 @@
1
+ export * from "./controller";
1
2
  export * from "./delegates";
2
3
  export * from "./logger";
3
4
  export * from "./types";
4
- export * from "./controller";
5
- //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,4 @@
1
+ export * from "./controller";
2
+ export * from "./delegates";
3
+ export * from "./logger";
4
+ export * from "./types";
@@ -1,6 +1,6 @@
1
- import { Logger } from "./types";
1
+ import type { Logger } from "./types";
2
2
  export declare const Class: FunctionConstructor;
3
- export declare type Class<T = object> = new (...args: unknown[]) => T;
3
+ export type Class<T = object> = new (...args: unknown[]) => T;
4
4
  export declare class SlfAssertDSL {
5
5
  o: object;
6
6
  private readonly value;
@@ -12,7 +12,7 @@ export declare class SlfAssertDSL {
12
12
  eq(val: unknown): this;
13
13
  }
14
14
  export declare function className(classProto: Class<any>): string;
15
- export declare type LoggerArg = string | Class<unknown>;
15
+ export declare function classNameFromDef(classProto: Class<any>): string;
16
+ export type LoggerArg = string | Class<unknown>;
16
17
  export declare function getCallerFilename(e4: string): string;
17
18
  export declare function getLogger(categoryOrClass?: LoggerArg): Logger;
18
- //# sourceMappingURL=logger.d.ts.map
@@ -1,8 +1,8 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getLogger = exports.getCallerFilename = exports.className = exports.SlfAssertDSL = void 0;
4
- const controller_1 = require("./controller");
5
- class SlfAssertDSL {
1
+ import { LoggerImpl, LogController } from "./controller";
2
+ export class SlfAssertDSL {
3
+ o;
4
+ value;
5
+ name;
6
6
  constructor(o) {
7
7
  this.o = o;
8
8
  this.name = Object.keys(o)[0];
@@ -28,8 +28,15 @@ class SlfAssertDSL {
28
28
  return this;
29
29
  }
30
30
  }
31
- exports.SlfAssertDSL = SlfAssertDSL;
32
- function className(classProto) {
31
+ // https://stackoverflow.com/questions/13613524/get-an-objects-class-name-at-runtime
32
+ export function className(classProto) {
33
+ const assert = (o) => new SlfAssertDSL(o);
34
+ assert({ classProto }).typeOf("function");
35
+ if (classProto.name)
36
+ return classProto.name;
37
+ return classNameFromDef(classProto);
38
+ }
39
+ export function classNameFromDef(classProto) {
33
40
  const assert = (o) => new SlfAssertDSL(o);
34
41
  assert({ classProto }).typeOf("function");
35
42
  const [x0, x1] = classProto.toString().split(" ");
@@ -39,8 +46,7 @@ function className(classProto) {
39
46
  assert({ x1 }).string().defined();
40
47
  return x1.trim();
41
48
  }
42
- exports.className = className;
43
- function getCallerFilename(e4) {
49
+ export function getCallerFilename(e4) {
44
50
  const assert = (o) => new SlfAssertDSL(o);
45
51
  assert({ e4 }).string().defined();
46
52
  if (e4 === undefined)
@@ -51,7 +57,6 @@ function getCallerFilename(e4) {
51
57
  assert({ v2 }).string().defined();
52
58
  return v2;
53
59
  }
54
- exports.getCallerFilename = getCallerFilename;
55
60
  function callerFilename() {
56
61
  const assert = (o) => new SlfAssertDSL(o);
57
62
  const e = new Error();
@@ -69,8 +74,6 @@ function toCategory(categoryOrClass) {
69
74
  }
70
75
  return className(categoryOrClass);
71
76
  }
72
- function getLogger(categoryOrClass) {
73
- return new controller_1.LoggerImpl(controller_1.LogController.instance, toCategory(categoryOrClass));
77
+ export function getLogger(categoryOrClass) {
78
+ return new LoggerImpl(LogController.instance, toCategory(categoryOrClass));
74
79
  }
75
- exports.getLogger = getLogger;
76
- //# sourceMappingURL=logger.js.map
@@ -9,7 +9,7 @@ export interface PinoLogFn {
9
9
  * log.debug ( _ => _({a: 1, b: culcLogValue2()}, 'log message ${culcLogValue2()}'))
10
10
  * log.trace(() => [{ value: calcValue() }, 'log message with heavy culculation'])
11
11
  */
12
- export declare type SlfLogFn = (fn: (...args: unknown[]) => unknown) => void;
12
+ export type SlfLogFn = (fn: (...args: unknown[]) => unknown) => void;
13
13
  export interface LogFn extends PinoLogFn, SlfLogFn {
14
14
  }
15
15
  export interface ILogFunctions {
@@ -20,7 +20,7 @@ export interface ILogFunctions {
20
20
  error: LogFn;
21
21
  fatal: LogFn;
22
22
  }
23
- export declare type LogLevelEnabledFn = () => boolean;
23
+ export type LogLevelEnabledFn = () => boolean;
24
24
  export interface ILogLevelEnabledIFunctions {
25
25
  isTraceEnabled: LogLevelEnabledFn;
26
26
  isDebugEnabled: LogLevelEnabledFn;
@@ -34,8 +34,8 @@ export interface Logger extends ILogFunctions, ILogLevelEnabledIFunctions {
34
34
  }
35
35
  export declare const falseFunction: any;
36
36
  export declare const falseFunctionLogger: Logger;
37
- export declare type SlfLogLevels = keyof ILogFunctions;
38
- export declare type LogLevel = SlfLogLevels | "all" | "off";
37
+ export type SlfLogLevels = keyof ILogFunctions;
38
+ export type LogLevel = SlfLogLevels | "all" | "off";
39
39
  export declare class LogEntry {
40
40
  id: number;
41
41
  category: string;
@@ -54,8 +54,8 @@ export declare namespace slf {
54
54
  }
55
55
  export interface SlfConfig {
56
56
  defaultLevel: LogLevel;
57
+ forceLevel?: LogLevel;
57
58
  categories: {
58
59
  [category: string]: slf.Category | LogLevel;
59
60
  };
60
61
  }
61
- //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1,28 @@
1
+ export const falseFunction = () => false;
2
+ export const falseFunctionLogger = {
3
+ isTraceEnabled: falseFunction,
4
+ isDebugEnabled: falseFunction,
5
+ isInfoEnabled: falseFunction,
6
+ isWarnEnabled: falseFunction,
7
+ isErrorEnabled: falseFunction,
8
+ isFatalEnabled: falseFunction,
9
+ logError: falseFunction,
10
+ trace: falseFunction,
11
+ debug: falseFunction,
12
+ info: falseFunction,
13
+ warn: falseFunction,
14
+ error: falseFunction,
15
+ fatal: falseFunction,
16
+ };
17
+ export class LogEntry {
18
+ id;
19
+ category;
20
+ level;
21
+ payload;
22
+ constructor(id, category, level, payload) {
23
+ this.id = id;
24
+ this.category = category;
25
+ this.level = level;
26
+ this.payload = payload;
27
+ }
28
+ }
@@ -1,3 +1,2 @@
1
- export * from "./platform-node";
2
1
  export * from "./core";
3
- //# sourceMappingURL=index.d.ts.map
2
+ export * from "./platform-node";
@@ -0,0 +1,3 @@
1
+ // created from 'create-ts-index'
2
+ export * from "./core";
3
+ export * from "./platform-node";
@@ -1,6 +1,5 @@
1
- import { ILogDelegate, LogController } from "./core";
1
+ import { type ILogDelegate, LogController } from "./core/index.js";
2
2
  export declare class LogManager {
3
3
  static instance: LogController;
4
4
  static getDefaultDelegate(): ILogDelegate;
5
5
  }
6
- //# sourceMappingURL=platform-node.d.ts.map
@@ -0,0 +1,13 @@
1
+ import { LogController } from "./core/index.js";
2
+ // https://stackoverflow.com/questions/50940640/how-to-determine-if-jest-is-running-the-code-or-not
3
+ const isJest = () => process.env["JEST_WORKER_ID"] !== undefined;
4
+ const isTest = () => isJest();
5
+ LogController.config({
6
+ isTest: isTest(),
7
+ });
8
+ export class LogManager {
9
+ static instance = LogController.instance;
10
+ static getDefaultDelegate() {
11
+ return LogController.getDefaultDelegate();
12
+ }
13
+ }
package/package.json CHANGED
@@ -1,63 +1,34 @@
1
1
  {
2
2
  "name": "@art-ws/slf",
3
- "version": "1.0.4",
4
- "description": "slf",
3
+ "version": "2.0.1",
4
+ "description": "Logging framework for TypeScript",
5
5
  "license": "UNLICENSED",
6
- "main": "dist/index.js",
7
- "types": "dist/index.d.ts",
8
- "scripts": {
9
- "build": "tsc",
10
- "watch": "tsc --watch",
11
- "clean": "rimraf dist coverage *.tgz *.tsbuildinfo *.log",
12
- "lint": "eslint --fix --ext .ts .",
13
- "test": "jest",
14
- "fmt": "prettier --write .",
15
- "pack": "pnpm pack",
16
- "link": "pnpm link",
17
- "unlink": "pnpm unlink",
18
- "ncu": "pnpx ncu",
19
- "upgrade": "pnpx ncu -u",
20
- "madge": "pnpx madge --circular --extensions ts .",
21
- "cti": "pnpx cti -n -b -v ./src"
22
- },
6
+ "author": "art-ws Team",
7
+ "type": "module",
8
+ "main": "./dist/es/index.js",
9
+ "types": "dist/es",
23
10
  "files": [
24
- "dist"
11
+ "./dist/*"
25
12
  ],
26
- "engines": {
27
- "node": ">=14"
28
- },
29
13
  "dependencies": {
30
- "tslib": "2.1.0"
14
+ "tslib": "^2.8.1"
31
15
  },
32
16
  "devDependencies": {
33
- "@art-ws/tsc": "latest",
34
- "@art-ws/jest": "latest",
35
- "@art-ws/eslint": "latest",
36
- "@art-ws/prettier": "latest",
37
- "@art-ws/package-base": "latest",
38
- "@types/node": "14.14.26",
39
- "rimraf": "3.0.2",
40
- "typescript": "4.1.5",
41
- "eslint": "7.19.0",
42
- "@typescript-eslint/eslint-plugin": "4.15.0",
43
- "@typescript-eslint/parser": "4.15.0",
44
- "eslint-plugin-import": "2.22.1",
45
- "eslint-plugin-jest": "24.1.3",
46
- "eslint-plugin-node": "11.1.0",
47
- "eslint-plugin-promise": "4.3.1",
48
- "eslint-plugin-standard": "4.1.0",
49
- "jest": "26.6.3",
50
- "ts-jest": "26.5.1",
51
- "@types/jest": "26.0.20",
52
- "jest-standard-reporter": "2.0.0",
53
- "chai": "4.3.0",
54
- "@types/chai": "4.2.15",
55
- "eslint-config-standard-with-typescript": "20.0.0",
56
- "eslint-config-prettier": "7.2.0",
57
- "prettier": "2.2.1",
58
- "madge": "4.0.0",
59
- "npm-check-updates": "11.1.1",
60
- "@art-ws/package-template": "latest",
61
- "create-ts-index": "1.13.6"
17
+ "@types/node": "^24.3.0",
18
+ "eslint": "^9.34.0",
19
+ "typescript": "^5.9.2",
20
+ "vitest": "^3.2.4",
21
+ "@art-ws/config-eslint": "2.0.3",
22
+ "@art-ws/config-ts": "2.0.6"
23
+ },
24
+ "scripts": {
25
+ "build": "tsc",
26
+ "check": "pnpm clean && pnpm build && pnpm lint && pnpm test",
27
+ "clean": "rm -rf dist",
28
+ "clean:nm": "rm -rf node_modules",
29
+ "lint": "eslint .",
30
+ "test": "vitest run",
31
+ "test:watch": "vitest",
32
+ "watch": "tsc --watch"
62
33
  }
63
- }
34
+ }
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller.d.ts","sourceRoot":"","sources":["../../src/core/controller.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAsBlE,qBAAa,UAAW,YAAW,MAAM;IACpB,UAAU,EAAE,aAAa;IAAS,QAAQ,EAAE,MAAM;gBAAlD,UAAU,EAAE,aAAa,EAAS,QAAQ,EAAE,MAAM;IAErE,OAAO,CAAC,IAAI;IAmBZ,OAAO,CAAC,UAAU;IAIlB,cAAc,IAAI,OAAO;IAIzB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI;IAIzB,cAAc,IAAI,OAAO;IAIzB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI;IAIzB,aAAa,IAAI,OAAO;IAIxB,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI;IAIxB,aAAa,IAAI,OAAO;IAIxB,IAAI,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI;IAIxB,cAAc,IAAI,OAAO;IAIzB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI;IAIzB,cAAc,IAAI,OAAO;IAIzB,KAAK,CAAC,GAAG,IAAI,EAAE,GAAG,GAAG,IAAI;IAIzB,QAAQ,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI;CAK/C;AAED,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,OAAO,CAAA;CAChB;AAMD,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,EAAE,aAAa,CAAsB;IAEpD,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS;IAO3C,MAAM,CAAC,kBAAkB,IAAI,YAAY;IAIzC,QAAQ,CAAC,EAAE,YAAY,CAAA;;IAMvB,WAAW,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAIzC,MAAM,CAAC,MAAM,IAAI,IAAI;IAIrB,IAAI,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI;IAMvB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO;CAKnE"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/core/controller.ts"],"names":[],"mappings":";;;AAAA,2CAAgE;AAChE,mCAAkE;AAElE,IAAI,UAAU,GAAG,CAAC,CAAA;AAElB,SAAS,KAAK;IACZ,OAAO,UAAU,KAAK,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,CAAA;AAC1E,CAAC;AAED,SAAS,SAAS,CAAC,CAAU;IAC3B,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;AACzB,CAAC;AAED,SAAS,MAAM;IACb,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;QACzD,OAAO,SAAS,CAAC,CAAC,CAAC,CAAA;KACpB;IAED,OAAO,SAAS,CAAC,SAAS,CAAC,CAAA;AAC7B,CAAC;AAED,MAAM,GAAG,GAAQ,CAAC,CAAA;AAElB,MAAa,UAAU;IACrB,YAAmB,UAAyB,EAAS,QAAgB;QAAlD,eAAU,GAAV,UAAU,CAAe;QAAS,aAAQ,GAAR,QAAQ,CAAQ;IAAG,CAAC;IAEjE,IAAI,CAAC,KAAe,EAAE,IAAS;QACrC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YAC3B,OAAM;SACP;QAED,IAAI,OAAO,GAAQ,GAAG,CAAA;QAEtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;YACtD,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;YAClB,MAAM,MAAM,GAAG,EAAE,CAAC,MAAM,CAAC,CAAA;YACzB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAA;SACpD;aAAM;YACL,OAAO,GAAG,SAAS,CAAC,IAAI,CAAC,CAAA;SAC1B;QAED,MAAM,QAAQ,GAAG,IAAI,gBAAQ,CAAC,KAAK,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAA;QACrE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAChC,CAAC;IAEO,UAAU,CAAC,KAAe;QAChC,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAA;IACrE,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,GAAG,IAAS;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAC/B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,GAAG,IAAS;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAC/B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IAED,IAAI,CAAC,GAAG,IAAS;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC9B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAA;IAChC,CAAC;IAED,IAAI,CAAC,GAAG,IAAS;QACf,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAC9B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAA;IACjC,CAAC;IAED,KAAK,CAAC,GAAG,IAAS;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAC/B,CAAC;IAED,cAAc;QACZ,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,CAAC,GAAG,IAAS;QAChB,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAC/B,CAAC;IAED,QAAQ,CAAC,KAAY,EAAE,OAAgB;QACrC,MAAM,GAAG,GAAG,OAAO,IAAI,OAAO,CAAA;QAC9B,MAAM,GAAG,GAAG,KAAK,IAAI,IAAI,KAAK,EAAE,CAAA;QAChC,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,WAAW,EAAE,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,CAAC,CAAA;IACzD,CAAC;CACF;AA/ED,gCA+EC;AAMD,IAAI,SAAS,GAAc;IACzB,MAAM,EAAE,KAAK;CACd,CAAA;AAED,MAAa,aAAa;IAgBxB;QACE,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,kBAAkB,EAAE,CAAA;IACpD,CAAC;IAfD,MAAM,CAAC,MAAM,CAAC,KAAiB;QAC7B,IAAI,KAAK,EAAE;YACT,SAAS,GAAG,KAAK,CAAA;SAClB;QACD,OAAO,SAAS,CAAA;IAClB,CAAC;IAED,MAAM,CAAC,kBAAkB;QACvB,OAAO,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,2BAAe,EAAE,CAAC,CAAC,CAAC,IAAI,6BAAiB,EAAE,CAAA;IAC5E,CAAC;IAQD,WAAW,CAAC,QAAsB;QAChC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAA;IAC1B,CAAC;IAED,MAAM,CAAC,MAAM;QACX,aAAa,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,2BAAe,EAAE,CAAC,CAAA;IAC3D,CAAC;IAED,IAAI,CAAC,CAAW;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;SACvB;IACH,CAAC;IAED,sBAAsB,CAAC,QAAgB,EAAE,KAAe;QACtD,OAAO,IAAI,CAAC,QAAQ;YAClB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,sBAAsB,CAAC,QAAQ,EAAE,KAAK,CAAC;YACvD,CAAC,CAAC,IAAI,CAAA;IACV,CAAC;;AAtCH,sCAuCC;AAtCQ,sBAAQ,GAAkB,IAAI,aAAa,EAAE,CAAA"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"delegates.d.ts","sourceRoot":"","sources":["../../src/core/delegates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAO,SAAS,EAAE,MAAM,SAAS,CAAA;AAa1E,8BAAsB,eAAgB,YAAW,YAAY;IAC/C,SAAS,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;gBAAxB,GAAG,CAAC,EAAE,OAAO,CAAC,SAAS,CAAC;IAE9C,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI;IAExB,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ;IAWtD,SAAS,CAAC,aAAa,CAAC,KAAK,EAAE,QAAQ,GAAG,MAAM;IAIhD,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIxD,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO;CAOnE;AAED,qBAAa,eAAgB,YAAW,YAAY;IAClD,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI;IAExB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO;CAGnE;AAED,qBAAa,iBAAkB,YAAW,YAAY;IACpD,KAAK,CAAC,CAAC,EAAE,QAAQ,GAAG,IAAI;IAIxB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO;CAGnE"}
@@ -1,60 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SimpleLogDelegate = exports.NoopLogDelegate = exports.LogDelegateBase = void 0;
4
- const SLF_LEVEL_VALUES = {
5
- all: 0,
6
- trace: 10,
7
- debug: 20,
8
- info: 30,
9
- warn: 40,
10
- error: 50,
11
- fatal: 60,
12
- off: Number.MAX_VALUE,
13
- };
14
- class LogDelegateBase {
15
- constructor(cfg) {
16
- this.cfg = cfg;
17
- }
18
- onLog(e) { }
19
- getCategoryLevel(category) {
20
- const { cfg } = this;
21
- if (!cfg)
22
- return "all";
23
- const def = (cfg.categories ?? {})[category] ?? "all";
24
- if (typeof def === "string") {
25
- return def;
26
- }
27
- return def?.level ?? cfg.defaultLevel ?? "all";
28
- }
29
- getLevelValue(level) {
30
- return SLF_LEVEL_VALUES[level] ?? SLF_LEVEL_VALUES.all;
31
- }
32
- getCategoryLevelCode(category) {
33
- return this.getLevelValue(this.getCategoryLevel(category));
34
- }
35
- isCategoryLevelEnabled(category, level) {
36
- const categoryLevel = this.getCategoryLevel(category);
37
- const categoryLevelValue = this.getLevelValue(categoryLevel);
38
- const levelValue = this.getLevelValue(level);
39
- const isEnabled = levelValue >= categoryLevelValue;
40
- return isEnabled;
41
- }
42
- }
43
- exports.LogDelegateBase = LogDelegateBase;
44
- class NoopLogDelegate {
45
- onLog(e) { }
46
- isCategoryLevelEnabled(category, level) {
47
- return false;
48
- }
49
- }
50
- exports.NoopLogDelegate = NoopLogDelegate;
51
- class SimpleLogDelegate {
52
- onLog(e) {
53
- console.log(e.id, new Date(), `${e.category}#${e.level}`, e.payload);
54
- }
55
- isCategoryLevelEnabled(category, level) {
56
- return false;
57
- }
58
- }
59
- exports.SimpleLogDelegate = SimpleLogDelegate;
60
- //# sourceMappingURL=delegates.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"delegates.js","sourceRoot":"","sources":["../../src/core/delegates.ts"],"names":[],"mappings":";;;AAEA,MAAM,gBAAgB,GAAG;IACvB,GAAG,EAAE,CAAC;IACN,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,GAAG,EAAE,MAAM,CAAC,SAAS;CACtB,CAAA;AAED,MAAsB,eAAe;IACnC,YAAsB,GAAwB;QAAxB,QAAG,GAAH,GAAG,CAAqB;IAAG,CAAC;IAElD,KAAK,CAAC,CAAW,IAAS,CAAC;IAEjB,gBAAgB,CAAC,QAAgB;QACzC,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;QACpB,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAA;QAEtB,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAA;QACrD,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE;YAC3B,OAAO,GAAe,CAAA;SACvB;QACD,OAAQ,GAAoB,EAAE,KAAK,IAAI,GAAG,CAAC,YAAY,IAAI,KAAK,CAAA;IAClE,CAAC;IAES,aAAa,CAAC,KAAe;QACrC,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,gBAAgB,CAAC,GAAG,CAAA;IACxD,CAAC;IAES,oBAAoB,CAAC,QAAgB;QAC7C,OAAO,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,sBAAsB,CAAC,QAAgB,EAAE,KAAe;QACtD,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAA;QACrD,MAAM,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,CAAA;QAC5D,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAA;QAC5C,MAAM,SAAS,GAAG,UAAU,IAAI,kBAAkB,CAAA;QAClD,OAAO,SAAS,CAAA;IAClB,CAAC;CACF;AA/BD,0CA+BC;AAED,MAAa,eAAe;IAC1B,KAAK,CAAC,CAAW,IAAS,CAAC;IAE3B,sBAAsB,CAAC,QAAgB,EAAE,KAAe;QACtD,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AAND,0CAMC;AAED,MAAa,iBAAiB;IAC5B,KAAK,CAAC,CAAW;QACf,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,IAAI,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAA;IACtE,CAAC;IAED,sBAAsB,CAAC,QAAgB,EAAE,KAAe;QACtD,OAAO,KAAK,CAAA;IACd,CAAC;CACF;AARD,8CAQC"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAEA,cAAc,aAAa,CAAA;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA"}
@@ -1,9 +0,0 @@
1
- "use strict";
2
- // created from 'create-ts-index'
3
- Object.defineProperty(exports, "__esModule", { value: true });
4
- const tslib_1 = require("tslib");
5
- tslib_1.__exportStar(require("./delegates"), exports);
6
- tslib_1.__exportStar(require("./logger"), exports);
7
- tslib_1.__exportStar(require("./types"), exports);
8
- tslib_1.__exportStar(require("./controller"), exports);
9
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":";AAAA,iCAAiC;;;AAEjC,sDAA2B;AAC3B,mDAAwB;AACxB,kDAAuB;AACvB,uDAA4B"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAEhC,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,EAAE,mBAAmB,CAAA;AAE/C,oBAAY,KAAK,CAAC,CAAC,GAAG,MAAM,IAAI,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAA;AAE7D,qBAAa,YAAY;IAIJ,CAAC,EAAE,MAAM;IAH5B,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAQ;gBAEV,CAAC,EAAE,MAAM;IAK5B,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAM1B,MAAM,IAAI,IAAI;IAKd,OAAO,IAAI,IAAI;IAKf,EAAE,CAAC,GAAG,EAAE,OAAO,GAAG,IAAI;CAKvB;AAGD,wBAAgB,SAAS,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAUxD;AAED,oBAAY,SAAS,GAAG,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,CAAA;AAE/C,wBAAgB,iBAAiB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAUpD;AAsBD,wBAAgB,SAAS,CAAC,eAAe,CAAC,EAAE,SAAS,GAAG,MAAM,CAE7D"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/core/logger.ts"],"names":[],"mappings":"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"}