@tmlmobilidade/logger 20260616.2252.19 → 20260617.1703.12

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 (63) hide show
  1. package/dist/index.d.ts +2 -82
  2. package/dist/index.js +2 -145
  3. package/dist/logger/index.d.ts +1 -0
  4. package/dist/logger/index.js +1 -0
  5. package/dist/logger/interface/globalIssue.d.ts +25 -0
  6. package/dist/logger/interface/globalIssue.js +59 -0
  7. package/dist/logger/interface/index.d.ts +3 -0
  8. package/dist/logger/interface/index.js +3 -0
  9. package/dist/logger/interface/logs-nextjs.d.ts +9 -0
  10. package/dist/logger/interface/logs-nextjs.js +41 -0
  11. package/dist/logger/interface/logs-node.d.ts +12 -0
  12. package/dist/logger/interface/logs-node.js +44 -0
  13. package/dist/logger/logger.d.ts +28 -0
  14. package/dist/logger/logger.js +31 -0
  15. package/dist/logger/logs/divider.d.ts +13 -0
  16. package/dist/logger/logs/divider.js +24 -0
  17. package/dist/logger/logs/error.d.ts +22 -0
  18. package/dist/logger/logs/error.js +57 -0
  19. package/dist/logger/logs/format-columns.d.ts +14 -0
  20. package/dist/logger/logs/format-columns.js +27 -0
  21. package/dist/logger/logs/format-message.d.ts +15 -0
  22. package/dist/logger/logs/format-message.js +25 -0
  23. package/dist/logger/logs/get-default-service.d.ts +13 -0
  24. package/dist/logger/logs/get-default-service.js +15 -0
  25. package/dist/logger/logs/index.d.ts +13 -0
  26. package/dist/logger/logs/index.js +13 -0
  27. package/dist/logger/logs/info.d.ts +31 -0
  28. package/dist/logger/logs/info.js +36 -0
  29. package/dist/logger/logs/init.d.ts +16 -0
  30. package/dist/logger/logs/init.js +23 -0
  31. package/dist/logger/logs/issue.d.ts +25 -0
  32. package/dist/logger/logs/issue.js +27 -0
  33. package/dist/logger/logs/progress.d.ts +28 -0
  34. package/dist/logger/logs/progress.js +31 -0
  35. package/dist/logger/logs/spacer.d.ts +13 -0
  36. package/dist/logger/logs/spacer.js +17 -0
  37. package/dist/logger/logs/start-logs-nextjs.d.ts +23 -0
  38. package/dist/logger/logs/start-logs-nextjs.js +28 -0
  39. package/dist/logger/logs/start-node-logs.d.ts +23 -0
  40. package/dist/logger/logs/start-node-logs.js +28 -0
  41. package/dist/logger/logs/success.d.ts +21 -0
  42. package/dist/logger/logs/success.js +31 -0
  43. package/dist/logger/logs/terminate.d.ts +15 -0
  44. package/dist/logger/logs/terminate.js +21 -0
  45. package/dist/logger/logs/title.d.ts +13 -0
  46. package/dist/logger/logs/title.js +17 -0
  47. package/dist/logger/types/index.d.ts +1 -0
  48. package/dist/logger/types/index.js +1 -0
  49. package/dist/logger/types/types.d.ts +13 -0
  50. package/dist/logger/types/types.js +1 -0
  51. package/dist/sentry/client/go-sentry-node.d.ts +1 -0
  52. package/dist/sentry/client/go-sentry-node.js +9 -0
  53. package/dist/sentry/client/index.d.ts +1 -0
  54. package/dist/sentry/client/index.js +1 -0
  55. package/dist/sentry/connection/index.d.ts +2 -0
  56. package/dist/sentry/connection/index.js +2 -0
  57. package/dist/sentry/connection/sentry-nextjs.d.ts +1 -0
  58. package/dist/sentry/connection/sentry-nextjs.js +11 -0
  59. package/dist/sentry/connection/sentry-node.d.ts +2 -0
  60. package/dist/sentry/connection/sentry-node.js +21 -0
  61. package/dist/sentry/index.d.ts +2 -0
  62. package/dist/sentry/index.js +2 -0
  63. package/package.json +13 -1
package/dist/index.d.ts CHANGED
@@ -1,82 +1,2 @@
1
- interface LoggerColumn {
2
- /**
3
- * Column alignment.
4
- */
5
- a?: 'left' | 'right';
6
- /**
7
- * Column width.
8
- */
9
- c?: number;
10
- /**
11
- * Column text.
12
- */
13
- t: number | string;
14
- }
15
- type LoggerMessage = (LoggerColumn | string)[] | string;
16
- declare class LoggersClass {
17
- /**
18
- * Loggers a divider line in the console.
19
- * @param message Optional message to display.
20
- * @param size Width of the divider line. Default is `75`.
21
- */
22
- divider(message?: string, size?: number): void;
23
- /**
24
- * Loggers an error message in the console.
25
- * @param message Error message to display.
26
- * @param error Optional error object to display.
27
- * @param spacesAfter Optional number of blank lines to add after the message.
28
- * @param spacesBefore Optional number of blank lines to add before the message.
29
- */
30
- error(message: LoggerMessage, error?: Error, spacesAfter?: number, spacesBefore?: number): void;
31
- /**
32
- * Loggers an informational message in the console.
33
- * @param message Informational message to display.
34
- * @param spacesAfter Optional number of blank lines to add after the message.
35
- * @param spacesBefore Optional number of blank lines to add before the message.
36
- */
37
- info(message: LoggerMessage, spacesAfter?: number, spacesBefore?: number): void;
38
- /**
39
- * Initial message for program startup.
40
- */
41
- init(): void;
42
- /**
43
- * Loggers a progress message in the console.
44
- * @param message Progress message to display.
45
- * @param spacesAfter Optional number of blank lines to add after the message.
46
- * @param spacesBefore Optional number of blank lines to add before the message.
47
- */
48
- progress(message: LoggerMessage, spacesAfter?: number, spacesBefore?: number): void;
49
- /**
50
- * Loggers a spacer line in the console.
51
- * @param lines Number of blank lines to add. Default is `1`.
52
- */
53
- spacer(lines?: number): void;
54
- /**
55
- * Loggers a success message in the console.
56
- * @param message Success message to display.
57
- * @param spacesAfter Optional number of blank lines to add after the message.
58
- * @param spacesBefore Optional number of blank lines to add before the message.
59
- */
60
- success(message: LoggerMessage, spacesAfter?: number, spacesBefore?: number): void;
61
- /**
62
- * Loggers a termination message in the console.
63
- * @param message Termination message to display.
64
- */
65
- terminate(message: string): void;
66
- /**
67
- * Loggers a title message in the console.
68
- * @param message Title message to display.
69
- */
70
- title(message: string): void;
71
- /**
72
- * Formats an array of log columns or strings into a single string.
73
- * @param columns Array of log columns or strings to format.
74
- * @returns Formatted string.
75
- */
76
- private formatColumns;
77
- }
78
- /**
79
- * Logger class for structured logging.
80
- */
81
- export declare const Logger: LoggersClass;
82
- export {};
1
+ export * from './logger/index.js';
2
+ export * from './sentry/index.js';
package/dist/index.js CHANGED
@@ -1,145 +1,2 @@
1
- /* * */
2
- /* * */
3
- class LoggersClass {
4
- //
5
- /**
6
- * Loggers a divider line in the console.
7
- * @param message Optional message to display.
8
- * @param size Width of the divider line. Default is `75`.
9
- */
10
- divider(message, size = 75) {
11
- console.log();
12
- if (message)
13
- console.log(`- ${message} ${'-'.repeat(size - 2 - message.length < 1 ? 1 : size - 2 - message.length)}`);
14
- else
15
- console.log('-'.repeat(size));
16
- console.log();
17
- }
18
- /**
19
- * Loggers an error message in the console.
20
- * @param message Error message to display.
21
- * @param error Optional error object to display.
22
- * @param spacesAfter Optional number of blank lines to add after the message.
23
- * @param spacesBefore Optional number of blank lines to add before the message.
24
- */
25
- error(message, error, spacesAfter, spacesBefore) {
26
- if (spacesBefore && spacesBefore > 0)
27
- this.spacer(spacesBefore);
28
- if (Array.isArray(message))
29
- console.error(`✘ ${this.formatColumns(message)}`, error ?? '');
30
- else
31
- console.error(`✘ ${message}`, error ?? '');
32
- if (spacesAfter && spacesAfter > 0)
33
- this.spacer(spacesAfter);
34
- }
35
- /**
36
- * Loggers an informational message in the console.
37
- * @param message Informational message to display.
38
- * @param spacesAfter Optional number of blank lines to add after the message.
39
- * @param spacesBefore Optional number of blank lines to add before the message.
40
- */
41
- info(message, spacesAfter, spacesBefore) {
42
- if (spacesBefore && spacesBefore > 0)
43
- this.spacer(spacesBefore);
44
- if (Array.isArray(message))
45
- console.log(`→ ${this.formatColumns(message)}`);
46
- else
47
- console.log(`→ ${message}`);
48
- if (spacesAfter && spacesAfter > 0)
49
- this.spacer(spacesAfter);
50
- }
51
- /**
52
- * Initial message for program startup.
53
- */
54
- init() {
55
- const currentDate = new Date().toISOString();
56
- console.log();
57
- console.log('-'.repeat(currentDate.length));
58
- console.log(currentDate);
59
- console.log('-'.repeat(currentDate.length));
60
- console.log();
61
- }
62
- /**
63
- * Loggers a progress message in the console.
64
- * @param message Progress message to display.
65
- * @param spacesAfter Optional number of blank lines to add after the message.
66
- * @param spacesBefore Optional number of blank lines to add before the message.
67
- */
68
- progress(message, spacesAfter, spacesBefore) {
69
- if (spacesBefore && spacesBefore > 0)
70
- this.spacer(spacesBefore);
71
- if (Array.isArray(message))
72
- console.log(`• ${this.formatColumns(message)}`);
73
- else
74
- console.log(`• ${message}`);
75
- if (spacesAfter && spacesAfter > 0)
76
- this.spacer(spacesAfter);
77
- }
78
- /**
79
- * Loggers a spacer line in the console.
80
- * @param lines Number of blank lines to add. Default is `1`.
81
- */
82
- spacer(lines = 1) {
83
- for (let i = 0; i < lines; i++) {
84
- console.log();
85
- }
86
- }
87
- /**
88
- * Loggers a success message in the console.
89
- * @param message Success message to display.
90
- * @param spacesAfter Optional number of blank lines to add after the message.
91
- * @param spacesBefore Optional number of blank lines to add before the message.
92
- */
93
- success(message, spacesAfter, spacesBefore) {
94
- if (spacesBefore && spacesBefore > 0)
95
- this.spacer(spacesBefore);
96
- if (Array.isArray(message))
97
- console.log(`✓ ${this.formatColumns(message)}`);
98
- else
99
- console.log(`✓ ${message}`);
100
- if (spacesAfter && spacesAfter > 0)
101
- this.spacer(spacesAfter);
102
- }
103
- /**
104
- * Loggers a termination message in the console.
105
- * @param message Termination message to display.
106
- */
107
- terminate(message) {
108
- console.log();
109
- console.log('-'.repeat(message.length));
110
- console.log(message);
111
- console.log('-'.repeat(message.length));
112
- console.log();
113
- }
114
- /**
115
- * Loggers a title message in the console.
116
- * @param message Title message to display.
117
- */
118
- title(message) {
119
- console.log();
120
- console.log(`▶︎ ${message}`);
121
- console.log();
122
- }
123
- /**
124
- * Formats an array of log columns or strings into a single string.
125
- * @param columns Array of log columns or strings to format.
126
- * @returns Formatted string.
127
- */
128
- formatColumns(columns) {
129
- return columns
130
- .map((item) => {
131
- if (typeof item === 'string')
132
- return item;
133
- if (!item.c)
134
- return String(item.t);
135
- if (item.a === 'right')
136
- return String(item.t).padStart(item.c);
137
- return String(item.t).padEnd(item.c);
138
- })
139
- .join('');
140
- }
141
- }
142
- /**
143
- * Logger class for structured logging.
144
- */
145
- export const Logger = new LoggersClass();
1
+ export * from './logger/index.js';
2
+ export * from './sentry/index.js';
@@ -0,0 +1 @@
1
+ export * from './logger.js';
@@ -0,0 +1 @@
1
+ export * from './logger.js';
@@ -0,0 +1,25 @@
1
+ export type GlobalIssueLevel = 'debug' | 'error' | 'fatal' | 'info' | 'warning';
2
+ export interface GlobalIssueRequestContext {
3
+ me?: {
4
+ email?: string;
5
+ };
6
+ method?: string;
7
+ routeOptions?: {
8
+ url?: string;
9
+ };
10
+ url?: string;
11
+ }
12
+ export interface GlobalIssueContext {
13
+ [key: string]: unknown;
14
+ action?: string;
15
+ email?: string;
16
+ error?: Error;
17
+ feature?: string;
18
+ level?: GlobalIssueLevel;
19
+ message?: string;
20
+ request?: GlobalIssueRequestContext;
21
+ service?: string;
22
+ status?: number;
23
+ value?: unknown;
24
+ }
25
+ export declare function globalIssue(context: GlobalIssueContext): void;
@@ -0,0 +1,59 @@
1
+ import * as Sentry from '@sentry/core';
2
+ export function globalIssue(context) {
3
+ //
4
+ //
5
+ // Normalize the request context
6
+ const requestContext = context.request;
7
+ const routeUrl = requestContext?.routeOptions?.url;
8
+ const requestUrl = requestContext?.url;
9
+ const requestMethod = context.request?.method;
10
+ const requestEmail = context.email ?? requestContext?.me?.email;
11
+ const normalizedLevel = context.level ?? 'info';
12
+ const normalizedMessage = context.message ?? context.error?.message ?? 'Unknown issue';
13
+ const normalizedValueTag = context.value === undefined || context.value === null
14
+ ? undefined
15
+ : typeof context.value === 'string'
16
+ ? context.value
17
+ : JSON.stringify(context.value);
18
+ const errorStatusCode = context.error?.statusCode;
19
+ const statusCode = context.status ?? (typeof errorStatusCode === 'number'
20
+ ? Number(errorStatusCode)
21
+ : undefined);
22
+ //
23
+ // Create the sentry context
24
+ const sentryContext = {
25
+ ...context,
26
+ extra: {
27
+ ...context,
28
+ email: requestEmail,
29
+ endpoint: routeUrl ?? context.request?.url,
30
+ message: normalizedMessage,
31
+ method: requestMethod,
32
+ path: routeUrl ?? requestUrl,
33
+ request: requestUrl,
34
+ value: context.value,
35
+ },
36
+ level: normalizedLevel,
37
+ tags: {
38
+ action: context.action,
39
+ email: context.email,
40
+ feature: context.feature,
41
+ level: normalizedLevel,
42
+ method: requestMethod,
43
+ path: routeUrl ?? requestUrl,
44
+ request: requestUrl,
45
+ status: statusCode,
46
+ value: normalizedValueTag,
47
+ },
48
+ };
49
+ //
50
+ // Capture the issue
51
+ if (normalizedLevel === 'error' || normalizedLevel === 'fatal' || context.error) {
52
+ Sentry.captureException(context.error ?? new Error(normalizedMessage), sentryContext);
53
+ return;
54
+ }
55
+ //
56
+ // Capture the message
57
+ Sentry.captureMessage(normalizedMessage, sentryContext);
58
+ }
59
+ ;
@@ -0,0 +1,3 @@
1
+ export * from './globalIssue.js';
2
+ export * from './logs-nextjs.js';
3
+ export * from './logs-node.js';
@@ -0,0 +1,3 @@
1
+ export * from './globalIssue.js';
2
+ export * from './logs-nextjs.js';
3
+ export * from './logs-node.js';
@@ -0,0 +1,9 @@
1
+ export interface LogsNextjsContext {
2
+ [key: string]: unknown;
3
+ app: string;
4
+ message: string;
5
+ module: string;
6
+ severity?: string;
7
+ status?: string;
8
+ }
9
+ export declare function startLogsNextjs(context: LogsNextjsContext): void;
@@ -0,0 +1,41 @@
1
+ import * as Sentry from '@sentry/nextjs';
2
+ /* * */
3
+ export function startLogsNextjs(context) {
4
+ const locationData = normalizeLocationContext();
5
+ const payload = {
6
+ ...context,
7
+ ...locationData,
8
+ app: context.app,
9
+ message: context.message,
10
+ module: context.module,
11
+ severity: normalizeSeverity(context.severity),
12
+ status: context.status,
13
+ };
14
+ const level = normalizeSeverity(context.severity);
15
+ if (level === 'debug') {
16
+ Sentry.logger.debug(context.message, payload);
17
+ return;
18
+ }
19
+ if (level === 'warn') {
20
+ Sentry.logger.warn(context.message, payload);
21
+ return;
22
+ }
23
+ if (level === 'error') {
24
+ Sentry.logger.error(context.message, payload);
25
+ return;
26
+ }
27
+ Sentry.logger.info(context.message, payload);
28
+ Sentry.getGlobalScope().setAttributes({ app: context.app, module: context.module });
29
+ }
30
+ ;
31
+ function normalizeSeverity(severity) {
32
+ if (severity === 'debug' || severity === 'error' || severity === 'warn')
33
+ return severity;
34
+ return 'info';
35
+ }
36
+ function normalizeLocationContext() {
37
+ if (!('window' in globalThis))
38
+ return {};
39
+ const pathname = globalThis.window.location.pathname;
40
+ return { pathname };
41
+ }
@@ -0,0 +1,12 @@
1
+ export interface LogsNodeContext {
2
+ [key: string]: unknown;
3
+ app: string;
4
+ message: string;
5
+ method?: string;
6
+ module: string;
7
+ path?: string;
8
+ reqId?: string;
9
+ severity?: string;
10
+ status?: string;
11
+ }
12
+ export declare function startNodeLogs(context: LogsNodeContext): void;
@@ -0,0 +1,44 @@
1
+ import * as Sentry from '@sentry/node';
2
+ /* * */
3
+ export function startNodeLogs(context) {
4
+ const requestData = normalizeRequestContext(context.request);
5
+ const payload = {
6
+ ...context,
7
+ ...requestData,
8
+ severity: normalizeSeverity(context.severity),
9
+ };
10
+ const level = normalizeSeverity(context.severity);
11
+ if (level === 'debug') {
12
+ Sentry.logger.debug(context.message, payload);
13
+ return;
14
+ }
15
+ if (level === 'warn') {
16
+ Sentry.logger.warn(context.message, payload);
17
+ return;
18
+ }
19
+ if (level === 'error') {
20
+ Sentry.logger.error(context.message, payload);
21
+ return;
22
+ }
23
+ Sentry.logger.info(context.message, payload);
24
+ Sentry.getGlobalScope().setAttributes({ app: context.app, module: context.module });
25
+ }
26
+ ;
27
+ function normalizeSeverity(severity) {
28
+ if (severity === 'debug' || severity === 'error' || severity === 'warn')
29
+ return severity;
30
+ return 'info';
31
+ }
32
+ function normalizeRequestContext(request) {
33
+ if (!request || typeof request !== 'object')
34
+ return {};
35
+ const maybeRequest = request;
36
+ const method = typeof maybeRequest.method === 'string' ? maybeRequest.method : undefined;
37
+ const requestUrl = typeof maybeRequest.url === 'string' ? maybeRequest.url : undefined;
38
+ const routeUrl = typeof maybeRequest.routeOptions?.url === 'string' ? maybeRequest.routeOptions.url : undefined;
39
+ return {
40
+ ...(routeUrl || requestUrl ? { endpoint: routeUrl ?? requestUrl } : {}),
41
+ ...(method ? { method } : {}),
42
+ ...(requestUrl ? { request: requestUrl } : {}),
43
+ };
44
+ }
@@ -0,0 +1,28 @@
1
+ import { divider } from './logs/divider.js';
2
+ import { error } from './logs/error.js';
3
+ import { info } from './logs/info.js';
4
+ import { init } from './logs/init.js';
5
+ import { issue } from './logs/issue.js';
6
+ import { progress } from './logs/progress.js';
7
+ import { spacer } from './logs/spacer.js';
8
+ import { startLogsNextjs } from './logs/start-logs-nextjs.js';
9
+ import { startNodeLogs } from './logs/start-node-logs.js';
10
+ import { success } from './logs/success.js';
11
+ import { terminate } from './logs/terminate.js';
12
+ import { title } from './logs/title.js';
13
+ declare class LoggerClass {
14
+ divider: typeof divider;
15
+ error: typeof error;
16
+ info: typeof info;
17
+ init: typeof init;
18
+ issue: typeof issue;
19
+ progress: typeof progress;
20
+ spacer: typeof spacer;
21
+ startLogsNextjs: typeof startLogsNextjs;
22
+ startNodeLogs: typeof startNodeLogs;
23
+ success: typeof success;
24
+ terminate: typeof terminate;
25
+ title: typeof title;
26
+ }
27
+ export declare const Logger: LoggerClass;
28
+ export {};
@@ -0,0 +1,31 @@
1
+ /* * */
2
+ import { divider } from './logs/divider.js';
3
+ import { error } from './logs/error.js';
4
+ import { info } from './logs/info.js';
5
+ import { init } from './logs/init.js';
6
+ import { issue } from './logs/issue.js';
7
+ import { progress } from './logs/progress.js';
8
+ import { spacer } from './logs/spacer.js';
9
+ import { startLogsNextjs } from './logs/start-logs-nextjs.js';
10
+ import { startNodeLogs } from './logs/start-node-logs.js';
11
+ import { success } from './logs/success.js';
12
+ import { terminate } from './logs/terminate.js';
13
+ import { title } from './logs/title.js';
14
+ /* * */
15
+ class LoggerClass {
16
+ //
17
+ divider = divider;
18
+ error = error;
19
+ info = info;
20
+ init = init;
21
+ issue = issue;
22
+ progress = progress;
23
+ spacer = spacer;
24
+ startLogsNextjs = startLogsNextjs;
25
+ startNodeLogs = startNodeLogs;
26
+ success = success;
27
+ terminate = terminate;
28
+ title = title;
29
+ }
30
+ /* * */
31
+ export const Logger = new LoggerClass();
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Logs a divider line to visually separate sections in the console output.
3
+ *
4
+ * If a message is provided, it will be placed after an initial hyphen and padded with additional hyphens up to `size`.
5
+ * For example: divider("Section", 20) will print something like:
6
+ *
7
+ *
8
+ * - Section -----------
9
+ *
10
+ * @param message Optional message to display within the divider.
11
+ * @param size Total length of the divider line. Defaults to 75.
12
+ */
13
+ export declare function divider(message?: string, size?: number): void;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * Logs a divider line to visually separate sections in the console output.
3
+ *
4
+ * If a message is provided, it will be placed after an initial hyphen and padded with additional hyphens up to `size`.
5
+ * For example: divider("Section", 20) will print something like:
6
+ *
7
+ *
8
+ * - Section -----------
9
+ *
10
+ * @param message Optional message to display within the divider.
11
+ * @param size Total length of the divider line. Defaults to 75.
12
+ */
13
+ export function divider(message, size = 75) {
14
+ console.log();
15
+ if (message) {
16
+ // Calculate the available space for hyphens after the message and account for hyphens and spaces
17
+ const hyphenCount = size - 2 - message.length;
18
+ console.log(`- ${message} ${'-'.repeat(hyphenCount < 1 ? 1 : hyphenCount)}`);
19
+ }
20
+ else {
21
+ console.log('-'.repeat(size));
22
+ }
23
+ console.log();
24
+ }
@@ -0,0 +1,22 @@
1
+ import { type LoggerErrorInputContext, type LoggerMessage } from '../types/types.js';
2
+ interface ErrorArgs {
3
+ contextOrErrorOrSpacesAfter?: LoggerErrorInputContext | number | string;
4
+ error?: Error;
5
+ message?: LoggerMessage;
6
+ spacesAfterOrBefore?: number;
7
+ spacesBefore?: number;
8
+ }
9
+ /**
10
+ * Logs an error message to the console, with flexible arguments and formatting.
11
+ *
12
+ * @param message The error or message to log. Can be an Error object or a LoggerMessage.
13
+ * @param contextOrErrorOrSpacesAfter Optional. Can be one of:
14
+ * - Error: Use as the error instance.
15
+ * - LoggerErrorInputContext: Pass additional context (optionally with silentConsole).
16
+ * - number: Number of spaces after the log line.
17
+ * - string: Additional message context.
18
+ * @param spacesAfterOrBefore Optional. Number of spaces after or before depending on previous arg.
19
+ * @param spacesBefore Optional. Number of blank lines before the log.
20
+ */
21
+ export declare function error(args: ErrorArgs): void;
22
+ export {};
@@ -0,0 +1,57 @@
1
+ /* * */
2
+ import { formatMessage } from './format-message.js';
3
+ import { spacer } from './spacer.js';
4
+ /**
5
+ * Logs an error message to the console, with flexible arguments and formatting.
6
+ *
7
+ * @param message The error or message to log. Can be an Error object or a LoggerMessage.
8
+ * @param contextOrErrorOrSpacesAfter Optional. Can be one of:
9
+ * - Error: Use as the error instance.
10
+ * - LoggerErrorInputContext: Pass additional context (optionally with silentConsole).
11
+ * - number: Number of spaces after the log line.
12
+ * - string: Additional message context.
13
+ * @param spacesAfterOrBefore Optional. Number of spaces after or before depending on previous arg.
14
+ * @param spacesBefore Optional. Number of blank lines before the log.
15
+ */
16
+ export function error(args) {
17
+ //
18
+ let context;
19
+ let parsedError;
20
+ let spacesAfter;
21
+ let normalizedSpacesBefore;
22
+ // Determine context and error instance based on argument types
23
+ if (typeof args.contextOrErrorOrSpacesAfter === 'object' && args.contextOrErrorOrSpacesAfter !== null && !(args.contextOrErrorOrSpacesAfter instanceof Error)) {
24
+ context = args.contextOrErrorOrSpacesAfter;
25
+ }
26
+ else {
27
+ context = undefined;
28
+ }
29
+ if (args.contextOrErrorOrSpacesAfter instanceof Error) {
30
+ parsedError = args.contextOrErrorOrSpacesAfter;
31
+ }
32
+ else if (args.message instanceof Error) {
33
+ parsedError = args.message;
34
+ }
35
+ else {
36
+ parsedError = undefined;
37
+ }
38
+ if (typeof args.contextOrErrorOrSpacesAfter === 'number') {
39
+ spacesAfter = args.contextOrErrorOrSpacesAfter;
40
+ normalizedSpacesBefore = args.spacesAfterOrBefore;
41
+ }
42
+ else {
43
+ spacesAfter = args.spacesAfterOrBefore;
44
+ normalizedSpacesBefore = args.spacesBefore;
45
+ }
46
+ if (normalizedSpacesBefore && normalizedSpacesBefore > 0) {
47
+ spacer(normalizedSpacesBefore);
48
+ }
49
+ const formattedMessage = formatMessage(args.message, context?.message ?? parsedError?.message ?? '');
50
+ // Only log if not silent
51
+ if (!context?.silentConsole) {
52
+ console.error(`✘ ${formattedMessage}`, parsedError ?? '');
53
+ }
54
+ if (spacesAfter && spacesAfter > 0) {
55
+ spacer(spacesAfter);
56
+ }
57
+ }
@@ -0,0 +1,14 @@
1
+ import { type LoggerColumn } from '../types/types.js';
2
+ /**
3
+ * Formats a set of columns (strings or LoggerColumn objects) into a single padded string.
4
+ *
5
+ * Each item in `columns` can be:
6
+ * - A string: included as-is.
7
+ * - A LoggerColumn: padded/truncated based on `c` (column width), content `t`, and alignment `a` ('left' or 'right').
8
+ *
9
+ * If `a` is 'right', pads the value on the left (right-aligned). Default is left-aligned.
10
+ *
11
+ * @param columns Array of LoggerColumn objects or strings to format.
12
+ * @returns The formatted string with each value padded to its column definition.
13
+ */
14
+ export declare function formatColumns(columns: (LoggerColumn | string)[]): string;
@@ -0,0 +1,27 @@
1
+ /* * */
2
+ /* * */
3
+ /**
4
+ * Formats a set of columns (strings or LoggerColumn objects) into a single padded string.
5
+ *
6
+ * Each item in `columns` can be:
7
+ * - A string: included as-is.
8
+ * - A LoggerColumn: padded/truncated based on `c` (column width), content `t`, and alignment `a` ('left' or 'right').
9
+ *
10
+ * If `a` is 'right', pads the value on the left (right-aligned). Default is left-aligned.
11
+ *
12
+ * @param columns Array of LoggerColumn objects or strings to format.
13
+ * @returns The formatted string with each value padded to its column definition.
14
+ */
15
+ export function formatColumns(columns) {
16
+ return columns
17
+ .map((item) => {
18
+ if (typeof item === 'string')
19
+ return item;
20
+ if (!item.c)
21
+ return String(item.t);
22
+ if (item.a === 'right')
23
+ return String(item.t).padStart(item.c);
24
+ return String(item.t).padEnd(item.c);
25
+ })
26
+ .join('');
27
+ }