@tmlmobilidade/utils 20250901.1821.25 → 20250901.2033.7

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.ts CHANGED
@@ -6,6 +6,7 @@ export * from './src/files/files.js';
6
6
  export * from './src/generic/index.js';
7
7
  export * from './src/geo/index.js';
8
8
  export * from './src/http.js';
9
+ export * from './src/logs/index.js';
9
10
  export * from './src/math/index.js';
10
11
  export * from './src/navigation/index.js';
11
12
  export * from './src/permissions.js';
package/dist/index.js CHANGED
@@ -6,6 +6,7 @@ export * from './src/files/files.js';
6
6
  export * from './src/generic/index.js';
7
7
  export * from './src/geo/index.js';
8
8
  export * from './src/http.js';
9
+ export * from './src/logs/index.js';
9
10
  export * from './src/math/index.js';
10
11
  export * from './src/navigation/index.js';
11
12
  export * from './src/permissions.js';
@@ -0,0 +1 @@
1
+ export * from './logs.js';
@@ -0,0 +1 @@
1
+ export * from './logs.js';
@@ -0,0 +1,81 @@
1
+ interface LogColumn {
2
+ /**
3
+ * Column alignment.
4
+ */
5
+ align?: 'left' | 'right';
6
+ /**
7
+ * Column width.
8
+ */
9
+ cols?: number;
10
+ /**
11
+ * Column text.
12
+ */
13
+ txt: string;
14
+ }
15
+ declare class LogsClass {
16
+ /**
17
+ * Logs a divider line in the console.
18
+ * @param message Optional message to display.
19
+ * @param size Width of the divider line. Default is `75`.
20
+ */
21
+ divider(message?: string, size?: number): void;
22
+ /**
23
+ * Logs an error message in the console.
24
+ * @param message Error message to display.
25
+ * @param error Optional error object to display.
26
+ * @param spacesAfter Optional number of blank lines to add after the message.
27
+ * @param spacesBefore Optional number of blank lines to add before the message.
28
+ */
29
+ error(message: string, error?: Error, spacesAfter?: number, spacesBefore?: number): void;
30
+ /**
31
+ * Logs an informational message in the console.
32
+ * @param message Informational message to display.
33
+ * @param spacesAfter Optional number of blank lines to add after the message.
34
+ * @param spacesBefore Optional number of blank lines to add before the message.
35
+ */
36
+ info(message: LogColumn[] | string, spacesAfter?: number, spacesBefore?: number): void;
37
+ /**
38
+ * Initial message for program startup.
39
+ */
40
+ init(): void;
41
+ /**
42
+ * Logs a progress message in the console.
43
+ * @param message Progress message to display.
44
+ * @param spacesAfter Optional number of blank lines to add after the message.
45
+ * @param spacesBefore Optional number of blank lines to add before the message.
46
+ */
47
+ progress(message: LogColumn[] | string, spacesAfter?: number, spacesBefore?: number): void;
48
+ /**
49
+ * Logs a spacer line in the console.
50
+ * @param lines Number of blank lines to add. Default is `1`.
51
+ */
52
+ spacer(lines?: number): void;
53
+ /**
54
+ * Logs a success message in the console.
55
+ * @param message Success message to display.
56
+ * @param spacesAfter Optional number of blank lines to add after the message.
57
+ * @param spacesBefore Optional number of blank lines to add before the message.
58
+ */
59
+ success(message: string, spacesAfter?: number, spacesBefore?: number): void;
60
+ /**
61
+ * Logs a termination message in the console.
62
+ * @param message Termination message to display.
63
+ */
64
+ terminate(message: string): void;
65
+ /**
66
+ * Logs a title message in the console.
67
+ * @param message Title message to display.
68
+ */
69
+ title(message: string): void;
70
+ /**
71
+ * Formats an array of log columns or strings into a single string.
72
+ * @param columns Array of log columns or strings to format.
73
+ * @returns Formatted string.
74
+ */
75
+ private formatColumns;
76
+ }
77
+ /**
78
+ * Logger class for structured logging.
79
+ */
80
+ export declare const Logs: LogsClass;
81
+ export {};
@@ -0,0 +1,145 @@
1
+ /* * */
2
+ /* * */
3
+ class LogsClass {
4
+ //
5
+ /**
6
+ * Logs 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
+ * Logs 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
+ * Logs 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
+ * Logs 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
+ * Logs 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
+ * Logs 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
+ * Logs 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
+ * Logs 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.cols)
134
+ return item.txt;
135
+ if (item.align === 'right')
136
+ return item.txt.padStart(item.cols);
137
+ return item.txt.padEnd(item.cols);
138
+ })
139
+ .join(' ');
140
+ }
141
+ }
142
+ /**
143
+ * Logger class for structured logging.
144
+ */
145
+ export const Logs = new LogsClass();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tmlmobilidade/utils",
3
- "version": "20250901.1821.25",
3
+ "version": "20250901.2033.7",
4
4
  "author": "João de Vasconcelos & Jusi Monteiro",
5
5
  "license": "AGPL-3.0-or-later",
6
6
  "homepage": "https://github.com/tmlmobilidade/services#readme",