@nemigo/logger 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/atoms.d.ts +6 -0
- package/dist/atoms.js +14 -0
- package/dist/chalk.d.ts +15 -0
- package/dist/chalk.js +45 -0
- package/dist/emojis.d.ts +13 -0
- package/dist/emojis.js +11 -0
- package/dist/types.d.ts +105 -0
- package/dist/types.js +1 -0
- package/package.json +51 -0
package/dist/atoms.d.ts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { Caller, Mode, PrintParams } from "./types.js";
|
|
2
|
+
import type { Timestamp } from "@nemigo/helpers/types";
|
|
3
|
+
export declare const formatTimestamp: (timestamp?: Timestamp) => string;
|
|
4
|
+
export declare const flatCaller: (caller: Caller) => string;
|
|
5
|
+
export declare const formatHeader: <M extends string = Mode>(caller: Caller, options: PrintParams<M>) => string;
|
|
6
|
+
export declare const print: <M extends string = Mode>(caller: Caller, message: unknown, options?: PrintParams<M>) => void;
|
package/dist/atoms.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { emojis } from "./emojis.js";
|
|
2
|
+
import { formatDateTime } from "@nemigo/helpers/datetime/format";
|
|
3
|
+
export const formatTimestamp = (timestamp = Date.now()) => formatDateTime(timestamp, "DD-DM-DY (TH:TM:TS)");
|
|
4
|
+
export const flatCaller = (caller) => (typeof caller === "string" ? `[${caller}]` : `[${caller.module} (${caller.method})]`);
|
|
5
|
+
export const formatHeader = (caller, options) => {
|
|
6
|
+
const { dated = formatTimestamp(), styler, emoji } = options;
|
|
7
|
+
const process = flatCaller(caller);
|
|
8
|
+
const colored = styler ? styler(process) : process;
|
|
9
|
+
return emoji ? `${dated} ${colored}: ${emojis[emoji]}` : `${dated} ${colored}:`;
|
|
10
|
+
};
|
|
11
|
+
export const print = (caller, message, options = {}) => {
|
|
12
|
+
const header = formatHeader(caller, options);
|
|
13
|
+
console.log(header, JSON.stringify(message === undefined ? "undefined" : message, null, 2));
|
|
14
|
+
};
|
package/dist/chalk.d.ts
ADDED
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { Caller, ILogger, ILoggerBalancePayload, ILoggerLoadPayload, ILoggerRedirectPayload, ILoggerThrowPayload, Mode, PrintParams } from "./types.js";
|
|
2
|
+
export declare class ChalkLogger<M extends string = Mode> implements ILogger<M> {
|
|
3
|
+
print(caller: Caller, payload: unknown, options?: PrintParams<M>): void;
|
|
4
|
+
debug(caller: Caller, payload: unknown, mode?: PrintParams<M>["mode"]): void;
|
|
5
|
+
log(caller: Caller, payload: unknown, mode?: PrintParams<M>["mode"]): void;
|
|
6
|
+
info(caller: Caller, payload: unknown, mode?: PrintParams<M>["mode"]): void;
|
|
7
|
+
good(caller: Caller, payload: unknown, mode?: M | undefined): void;
|
|
8
|
+
warn(caller: Caller, payload: unknown, mode?: PrintParams<M>["mode"]): void;
|
|
9
|
+
error(caller: Caller, payload: unknown, mode?: PrintParams<M>["mode"]): void;
|
|
10
|
+
__throw(caller: Caller, payload: ILoggerThrowPayload): never;
|
|
11
|
+
throw(caller: Caller, payload: ILoggerThrowPayload, mode?: PrintParams<M>["mode"]): never;
|
|
12
|
+
balance(caller: Caller, { amount }: ILoggerBalancePayload, mode?: PrintParams<M>["mode"]): void;
|
|
13
|
+
load(caller: Caller, { pathname }: ILoggerLoadPayload, mode?: PrintParams<M>["mode"]): void;
|
|
14
|
+
redirect(caller: Caller, payload: ILoggerRedirectPayload, mode?: PrintParams<M>["mode"]): void;
|
|
15
|
+
}
|
package/dist/chalk.js
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { flatCaller, print } from "./atoms.js";
|
|
2
|
+
import { formatRUB } from "@nemigo/helpers/rubles";
|
|
3
|
+
import chalk from "chalk";
|
|
4
|
+
export class ChalkLogger {
|
|
5
|
+
print(caller, payload, options) {
|
|
6
|
+
print(caller, payload, options);
|
|
7
|
+
}
|
|
8
|
+
debug(caller, payload, mode) {
|
|
9
|
+
this.print(caller, payload, { styler: chalk.gray, mode, emoji: "details" });
|
|
10
|
+
}
|
|
11
|
+
log(caller, payload, mode) {
|
|
12
|
+
this.print(caller, payload, { styler: chalk.blue, mode, emoji: "gear" });
|
|
13
|
+
}
|
|
14
|
+
info(caller, payload, mode) {
|
|
15
|
+
this.print(caller, payload, { styler: chalk.magenta, mode, emoji: "info" });
|
|
16
|
+
}
|
|
17
|
+
good(caller, payload, mode) {
|
|
18
|
+
this.print(caller, payload, { styler: chalk.green, mode, emoji: "good" });
|
|
19
|
+
}
|
|
20
|
+
warn(caller, payload, mode) {
|
|
21
|
+
this.print(caller, payload, { styler: chalk.yellow, mode, emoji: "warn" });
|
|
22
|
+
}
|
|
23
|
+
error(caller, payload, mode) {
|
|
24
|
+
this.print(caller, payload, { styler: chalk.red, mode, emoji: "error" });
|
|
25
|
+
}
|
|
26
|
+
__throw(caller, payload) {
|
|
27
|
+
throw new Error(`${flatCaller(caller)} - ${payload.cause ?? "ERROR"}`);
|
|
28
|
+
}
|
|
29
|
+
throw(caller, payload, mode) {
|
|
30
|
+
this.print(caller, payload, { styler: chalk.red, mode, emoji: "error" });
|
|
31
|
+
return this.__throw(caller, payload);
|
|
32
|
+
}
|
|
33
|
+
//...
|
|
34
|
+
balance(caller, { amount }, mode) {
|
|
35
|
+
const payload = formatRUB(amount);
|
|
36
|
+
this.print(caller, payload, { styler: chalk.yellow, emoji: "money", mode });
|
|
37
|
+
}
|
|
38
|
+
load(caller, { pathname }, mode) {
|
|
39
|
+
this.print(caller, pathname, { styler: chalk.blue, mode, emoji: "gear" });
|
|
40
|
+
}
|
|
41
|
+
redirect(caller, payload, mode) {
|
|
42
|
+
const __payload = `from "${payload.from}" to "${payload.to}" (${payload.code} - ${payload.reason})`;
|
|
43
|
+
this.print(caller, __payload, { styler: chalk.yellow, mode, emoji: "warn" });
|
|
44
|
+
}
|
|
45
|
+
}
|
package/dist/emojis.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { KEYS } from "@nemigo/helpers/types";
|
|
2
|
+
export declare const emojis: {
|
|
3
|
+
readonly stats: "📊";
|
|
4
|
+
readonly money: "💰";
|
|
5
|
+
readonly details: "🔍";
|
|
6
|
+
readonly gear: "⚙️ ";
|
|
7
|
+
readonly bot: "🤖";
|
|
8
|
+
readonly info: "👀";
|
|
9
|
+
readonly warn: "⚠️ ";
|
|
10
|
+
readonly error: "🆘";
|
|
11
|
+
readonly good: "✅";
|
|
12
|
+
};
|
|
13
|
+
export type Emojis = KEYS<typeof emojis>;
|
package/dist/emojis.js
ADDED
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { Emojis } from "./emojis.js";
|
|
2
|
+
export type Mode = "console";
|
|
3
|
+
/**
|
|
4
|
+
* Имя процесса (с возможным указанием отдельного метода), вызвавшего логирование
|
|
5
|
+
*/
|
|
6
|
+
export type Caller = string | {
|
|
7
|
+
module: string;
|
|
8
|
+
method: string;
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Конфигурация вывода для {@link ILogger}
|
|
12
|
+
*/
|
|
13
|
+
export interface PrintParams<M extends string = Mode> {
|
|
14
|
+
/**
|
|
15
|
+
* Режим вывода (по умолчанию консольный, может быть расширен при наследовании)
|
|
16
|
+
*/
|
|
17
|
+
mode?: M;
|
|
18
|
+
/**
|
|
19
|
+
* Форматирование заголовка процесса
|
|
20
|
+
*/
|
|
21
|
+
styler?: (process: string) => string;
|
|
22
|
+
/**
|
|
23
|
+
* Для избежания повтора операции при изменении формата
|
|
24
|
+
*/
|
|
25
|
+
dated?: string;
|
|
26
|
+
/**
|
|
27
|
+
* Акцентные эмодзи
|
|
28
|
+
*/
|
|
29
|
+
emoji?: Emojis;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Сообщение для {@link ILogger.throw}
|
|
33
|
+
*/
|
|
34
|
+
export interface ILoggerThrowPayload {
|
|
35
|
+
cause?: string;
|
|
36
|
+
error?: unknown;
|
|
37
|
+
data?: unknown;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Сообщение для {@link ILogger.balance}
|
|
41
|
+
*/
|
|
42
|
+
export interface ILoggerBalancePayload {
|
|
43
|
+
amount: number;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Сообщение для {@link ILogger.load}
|
|
47
|
+
*/
|
|
48
|
+
export interface ILoggerLoadPayload {
|
|
49
|
+
pathname: string;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Сообщение для {@link ILogger.redirect}
|
|
53
|
+
*/
|
|
54
|
+
export interface ILoggerRedirectPayload {
|
|
55
|
+
from: string;
|
|
56
|
+
to: string;
|
|
57
|
+
reason: string;
|
|
58
|
+
code: number | string;
|
|
59
|
+
}
|
|
60
|
+
export interface ILogger<M extends string = Mode> {
|
|
61
|
+
/**
|
|
62
|
+
* Непосредственно функция вывода сообщений
|
|
63
|
+
*/
|
|
64
|
+
print(caller: Caller, payload: unknown, options?: PrintParams<M>): void;
|
|
65
|
+
/**
|
|
66
|
+
* Лог глубокой отладки
|
|
67
|
+
*/
|
|
68
|
+
debug(caller: Caller, payload: unknown, mode?: PrintParams<M>["mode"]): void;
|
|
69
|
+
/**
|
|
70
|
+
* Логи работы
|
|
71
|
+
*/
|
|
72
|
+
log(caller: Caller, payload: unknown, mode?: PrintParams<M>["mode"]): void;
|
|
73
|
+
/**
|
|
74
|
+
* Информационное сообщение
|
|
75
|
+
*/
|
|
76
|
+
info(caller: Caller, payload: unknown, mode?: PrintParams<M>["mode"]): void;
|
|
77
|
+
/**
|
|
78
|
+
* Лог об успешной операции
|
|
79
|
+
*/
|
|
80
|
+
good(caller: Caller, payload: unknown, mode?: PrintParams<M>["mode"]): void;
|
|
81
|
+
/**
|
|
82
|
+
* Лог о предупреждении (что-то пошло не так)
|
|
83
|
+
*/
|
|
84
|
+
warn(caller: Caller, payload: unknown, mode?: PrintParams<M>["mode"]): void;
|
|
85
|
+
/**
|
|
86
|
+
* Лог о фатальной ошибке
|
|
87
|
+
*/
|
|
88
|
+
error(caller: Caller, payload: unknown, mode?: PrintParams<M>["mode"]): void;
|
|
89
|
+
/**
|
|
90
|
+
* Лог о фатальной ошибке с её выбросом
|
|
91
|
+
*/
|
|
92
|
+
throw(caller: Caller, payload: ILoggerThrowPayload, mode?: PrintParams<M>["mode"]): never;
|
|
93
|
+
/**
|
|
94
|
+
* Лог о балансе аккаунтов сторонних интеграций
|
|
95
|
+
*/
|
|
96
|
+
balance(caller: Caller, payload: ILoggerBalancePayload, mode?: PrintParams<M>["mode"]): void;
|
|
97
|
+
/**
|
|
98
|
+
* Лог об успешной отдачи страницы сервером клиенту
|
|
99
|
+
*/
|
|
100
|
+
load(caller: Caller, payload: ILoggerLoadPayload, mode?: PrintParams<M>["mode"]): void;
|
|
101
|
+
/**
|
|
102
|
+
* Лог о перенаправлении с одного маршрута на другой
|
|
103
|
+
*/
|
|
104
|
+
redirect(caller: Caller, payload: ILoggerRedirectPayload, mode?: PrintParams<M>["mode"]): void;
|
|
105
|
+
}
|
package/dist/types.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
package/package.json
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@nemigo/logger",
|
|
3
|
+
"version": "1.5.0",
|
|
4
|
+
"private": false,
|
|
5
|
+
"author": {
|
|
6
|
+
"name": "Vlad Logvin",
|
|
7
|
+
"email": "vlad.logvin84@gmail.com"
|
|
8
|
+
},
|
|
9
|
+
"type": "module",
|
|
10
|
+
"engines": {
|
|
11
|
+
"node": ">=22",
|
|
12
|
+
"pnpm": ">=10.9.0"
|
|
13
|
+
},
|
|
14
|
+
"scripts": {
|
|
15
|
+
"build": "svelte-package && rimraf .svelte-kit",
|
|
16
|
+
"check": "tsc --noemit",
|
|
17
|
+
"lint": "eslint ./",
|
|
18
|
+
"format": "prettier --write ./"
|
|
19
|
+
},
|
|
20
|
+
"exports": {
|
|
21
|
+
"./atoms": {
|
|
22
|
+
"types": "./dist/atoms.d.ts",
|
|
23
|
+
"default": "./dist/atoms.js"
|
|
24
|
+
},
|
|
25
|
+
"./chalk": {
|
|
26
|
+
"types": "./dist/chalk.d.ts",
|
|
27
|
+
"default": "./dist/chalk.js"
|
|
28
|
+
},
|
|
29
|
+
"./emojis": {
|
|
30
|
+
"types": "./dist/emojis.d.ts",
|
|
31
|
+
"default": "./dist/emojis.js"
|
|
32
|
+
},
|
|
33
|
+
"./types": {
|
|
34
|
+
"types": "./dist/types.d.ts",
|
|
35
|
+
"default": "./dist/types.js"
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
"peerDependencies": {
|
|
39
|
+
"@nemigo/helpers": ">=1.5.3",
|
|
40
|
+
"chalk": "^5.6.0"
|
|
41
|
+
},
|
|
42
|
+
"peerDependenciesMeta": {
|
|
43
|
+
"chalk": {
|
|
44
|
+
"optional": true
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"devDependencies": {
|
|
48
|
+
"@nemigo/configs": "workspace:*",
|
|
49
|
+
"@nemigo/helpers": "workspace:*"
|
|
50
|
+
}
|
|
51
|
+
}
|