@likec4/log 1.44.0 → 1.45.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/index.d.mts +36 -1
- package/dist/index.mjs +16 -7
- package/package.json +3 -3
- package/src/formatters.ts +13 -8
- package/src/index.ts +4 -1
- package/src/utils.ts +40 -0
package/dist/index.d.mts
CHANGED
|
@@ -14,6 +14,41 @@ declare function getConsoleSink(options?: ConsoleSinkOptions): Sink;
|
|
|
14
14
|
declare function getConsoleStderrSink(options?: ConsoleSinkOptions): Sink;
|
|
15
15
|
|
|
16
16
|
declare function loggable(error: unknown): string;
|
|
17
|
+
type NormalizeError<ErrorArg> = ErrorArg extends Error ? ErrorArg : Error;
|
|
18
|
+
/**
|
|
19
|
+
* Appends `message` to `error.message`. If `message` ends with `:` or `:\n`,
|
|
20
|
+
* prepends it instead.
|
|
21
|
+
*
|
|
22
|
+
* Returns `error`. If `error` is not an `Error` instance, it is converted to
|
|
23
|
+
* one.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```js
|
|
27
|
+
* wrapErrorMessage(new Error('Message.'), 'Additional message.')
|
|
28
|
+
* // Error: Message.
|
|
29
|
+
* // Additional message.
|
|
30
|
+
*
|
|
31
|
+
* wrapErrorMessage(new Error('Message.'), 'Additional message:')
|
|
32
|
+
* // Error: Additional message: Message.
|
|
33
|
+
*
|
|
34
|
+
* wrapErrorMessage(new Error('Message.'), 'Additional message:\n')
|
|
35
|
+
* // Error: Additional message:
|
|
36
|
+
* // Message.
|
|
37
|
+
*
|
|
38
|
+
* wrapErrorMessage(new Error('Message.'), '')
|
|
39
|
+
* // Error: Message.
|
|
40
|
+
*
|
|
41
|
+
* const invalidError = 'Message.'
|
|
42
|
+
* wrapErrorMessage(invalidError, 'Additional message.')
|
|
43
|
+
* // Error: Message.
|
|
44
|
+
* // Additional message.
|
|
45
|
+
*
|
|
46
|
+
* wrapErrorMessage(new Error(' Message with spaces '), ' Additional message ')
|
|
47
|
+
* // Error: Message with spaces
|
|
48
|
+
* // Additional message
|
|
49
|
+
* ```
|
|
50
|
+
*/
|
|
51
|
+
declare function wrapError<ErrorArg>(error: ErrorArg, newMessage: string): NormalizeError<ErrorArg>;
|
|
17
52
|
|
|
18
53
|
declare const logger: _logtape_logtape.Logger;
|
|
19
54
|
|
|
@@ -26,4 +61,4 @@ declare const logger: _logtape_logtape.Logger;
|
|
|
26
61
|
declare function createLogger(subcategory: string | readonly [string] | readonly [string, ...string[]]): _logtape_logtape.Logger;
|
|
27
62
|
declare function configureLogger<TSinkId extends string, TFilterId extends string>(config?: Partial<Config<TSinkId, TFilterId>>): void;
|
|
28
63
|
|
|
29
|
-
export { configureLogger, logger as consola, createLogger, errorFromLogRecord, getAnsiColorFormatter, getConsoleSink, getConsoleStderrSink, getMessageOnlyFormatter, getTextFormatter, loggable, logger, logger as rootLogger };
|
|
64
|
+
export { configureLogger, logger as consola, createLogger, errorFromLogRecord, getAnsiColorFormatter, getConsoleSink, getConsoleStderrSink, getMessageOnlyFormatter, getTextFormatter, loggable, logger, logger as rootLogger, wrapError };
|
package/dist/index.mjs
CHANGED
|
@@ -1302,14 +1302,23 @@ function loggable(error) {
|
|
|
1302
1302
|
}
|
|
1303
1303
|
return safeStringify(error, { indentation: " " });
|
|
1304
1304
|
}
|
|
1305
|
+
function wrapError(error, newMessage) {
|
|
1306
|
+
return wrapErrorMessage(error, newMessage);
|
|
1307
|
+
}
|
|
1305
1308
|
|
|
1306
1309
|
function gerErrorFromLogRecord(record) {
|
|
1307
|
-
const errors = Object.
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1310
|
+
const errors = Object.entries(record.properties).flatMap(([k, err]) => {
|
|
1311
|
+
if (err instanceof Error) {
|
|
1312
|
+
const mergedErr = mergeErrorCause(err);
|
|
1313
|
+
if (mergedErr.stack) {
|
|
1314
|
+
mergedErr.stack = parseStack(mergedErr.stack).join("\n");
|
|
1315
|
+
}
|
|
1316
|
+
return [mergedErr];
|
|
1317
|
+
}
|
|
1318
|
+
if (k === "error" || k === "err") {
|
|
1319
|
+
return [new Error(`${err}`)];
|
|
1311
1320
|
}
|
|
1312
|
-
return
|
|
1321
|
+
return [];
|
|
1313
1322
|
});
|
|
1314
1323
|
if (errors.length === 0) {
|
|
1315
1324
|
return null;
|
|
@@ -1323,7 +1332,7 @@ function errorFromLogRecord(record) {
|
|
|
1323
1332
|
}
|
|
1324
1333
|
return error;
|
|
1325
1334
|
}
|
|
1326
|
-
function appendErrorToMessage(values, color) {
|
|
1335
|
+
function appendErrorToMessage(values, color = false) {
|
|
1327
1336
|
const error = gerErrorFromLogRecord(values.record);
|
|
1328
1337
|
if (error) {
|
|
1329
1338
|
let errorMessge = error.message;
|
|
@@ -1446,4 +1455,4 @@ function configureLogger(config) {
|
|
|
1446
1455
|
}
|
|
1447
1456
|
}
|
|
1448
1457
|
|
|
1449
|
-
export { configureLogger, logger as consola, createLogger, errorFromLogRecord, getAnsiColorFormatter, getConsoleSink, getConsoleStderrSink, getMessageOnlyFormatter, getTextFormatter, loggable, logger, logger as rootLogger };
|
|
1458
|
+
export { configureLogger, logger as consola, createLogger, errorFromLogRecord, getAnsiColorFormatter, getConsoleSink, getConsoleStderrSink, getMessageOnlyFormatter, getTextFormatter, loggable, logger, logger as rootLogger, wrapError };
|
package/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"name": "@likec4/log",
|
|
3
3
|
"description": "Shared interface for logging",
|
|
4
4
|
"license": "MIT",
|
|
5
|
-
"version": "1.
|
|
5
|
+
"version": "1.45.0",
|
|
6
6
|
"bugs": "https://github.com/likec4/likec4/issues",
|
|
7
7
|
"homepage": "https://likec4.dev",
|
|
8
8
|
"author": "Denis Davydkov <denis@davydkov.com>",
|
|
@@ -38,11 +38,11 @@
|
|
|
38
38
|
"@types/node": "~20.19.22",
|
|
39
39
|
"merge-error-cause": "^5.0.2",
|
|
40
40
|
"safe-stringify": "^1.2.0",
|
|
41
|
-
"std-env": "^3.
|
|
41
|
+
"std-env": "^3.10.0",
|
|
42
42
|
"typescript": "5.9.3",
|
|
43
43
|
"unbuild": "3.5.0",
|
|
44
44
|
"wrap-error-message": "^3.0.1",
|
|
45
|
-
"@likec4/tsconfig": "1.
|
|
45
|
+
"@likec4/tsconfig": "1.45.0",
|
|
46
46
|
"@likec4/devops": "1.42.0"
|
|
47
47
|
},
|
|
48
48
|
"scripts": {
|
package/src/formatters.ts
CHANGED
|
@@ -17,14 +17,19 @@ import { indent, parseStack } from './utils'
|
|
|
17
17
|
|
|
18
18
|
function gerErrorFromLogRecord(record: LogRecord): Error | null {
|
|
19
19
|
const errors = Object
|
|
20
|
-
.
|
|
21
|
-
.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
.entries(record.properties)
|
|
21
|
+
.flatMap(([k, err]) => {
|
|
22
|
+
if (err instanceof Error) {
|
|
23
|
+
const mergedErr = mergeErrorCause(err)
|
|
24
|
+
if (mergedErr.stack) {
|
|
25
|
+
mergedErr.stack = parseStack(mergedErr.stack).join('\n')
|
|
26
|
+
}
|
|
27
|
+
return [mergedErr]
|
|
26
28
|
}
|
|
27
|
-
|
|
29
|
+
if (k === 'error' || k === 'err') {
|
|
30
|
+
return [new Error(`${err}`)]
|
|
31
|
+
}
|
|
32
|
+
return []
|
|
28
33
|
})
|
|
29
34
|
if (errors.length === 0) {
|
|
30
35
|
return null
|
|
@@ -40,7 +45,7 @@ export function errorFromLogRecord(record: LogRecord): Error | null {
|
|
|
40
45
|
return error
|
|
41
46
|
}
|
|
42
47
|
|
|
43
|
-
export function appendErrorToMessage(values: FormattedValues, color
|
|
48
|
+
export function appendErrorToMessage(values: FormattedValues, color = false): FormattedValues {
|
|
44
49
|
const error = gerErrorFromLogRecord(values.record)
|
|
45
50
|
if (error) {
|
|
46
51
|
let errorMessge = error.message
|
package/src/index.ts
CHANGED
package/src/utils.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import mergeErrorCause from 'merge-error-cause'
|
|
2
2
|
import safeStringify from 'safe-stringify'
|
|
3
|
+
import wrapErrorMessage from 'wrap-error-message'
|
|
3
4
|
|
|
4
5
|
export const parseStack = (stack: string): string[] => {
|
|
5
6
|
const lines = stack
|
|
@@ -36,3 +37,42 @@ export function loggable(error: unknown): string {
|
|
|
36
37
|
}
|
|
37
38
|
return safeStringify(error, { indentation: '\t' })
|
|
38
39
|
}
|
|
40
|
+
|
|
41
|
+
type NormalizeError<ErrorArg> = ErrorArg extends Error ? ErrorArg : Error
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* Appends `message` to `error.message`. If `message` ends with `:` or `:\n`,
|
|
45
|
+
* prepends it instead.
|
|
46
|
+
*
|
|
47
|
+
* Returns `error`. If `error` is not an `Error` instance, it is converted to
|
|
48
|
+
* one.
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```js
|
|
52
|
+
* wrapErrorMessage(new Error('Message.'), 'Additional message.')
|
|
53
|
+
* // Error: Message.
|
|
54
|
+
* // Additional message.
|
|
55
|
+
*
|
|
56
|
+
* wrapErrorMessage(new Error('Message.'), 'Additional message:')
|
|
57
|
+
* // Error: Additional message: Message.
|
|
58
|
+
*
|
|
59
|
+
* wrapErrorMessage(new Error('Message.'), 'Additional message:\n')
|
|
60
|
+
* // Error: Additional message:
|
|
61
|
+
* // Message.
|
|
62
|
+
*
|
|
63
|
+
* wrapErrorMessage(new Error('Message.'), '')
|
|
64
|
+
* // Error: Message.
|
|
65
|
+
*
|
|
66
|
+
* const invalidError = 'Message.'
|
|
67
|
+
* wrapErrorMessage(invalidError, 'Additional message.')
|
|
68
|
+
* // Error: Message.
|
|
69
|
+
* // Additional message.
|
|
70
|
+
*
|
|
71
|
+
* wrapErrorMessage(new Error(' Message with spaces '), ' Additional message ')
|
|
72
|
+
* // Error: Message with spaces
|
|
73
|
+
* // Additional message
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
export function wrapError<ErrorArg>(error: ErrorArg, newMessage: string): NormalizeError<ErrorArg> {
|
|
77
|
+
return wrapErrorMessage(error, newMessage)
|
|
78
|
+
}
|