@tmlmobilidade/utils 20250901.1129.36 → 20250901.2024.56

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,73 @@
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
+ /**
16
+ * Logger class for structured logging.
17
+ */
18
+ export declare class Logs {
19
+ /**
20
+ * Logs a divider line in the console.
21
+ * @param message Optional message to display.
22
+ * @param size Width of the divider line.
23
+ */
24
+ divider(message?: string, size?: number): void;
25
+ /**
26
+ * Logs an error message in the console.
27
+ * @param message Error message to display.
28
+ * @param error Optional error object to display.
29
+ */
30
+ error(message: string, error?: Error, spacesAfter?: number, spacesBefore?: number): void;
31
+ /**
32
+ * Logs 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: LogColumn[] | string, spacesAfter?: number, spacesBefore?: number): void;
38
+ /**
39
+ * Initial message for program startup.
40
+ */
41
+ init(): void;
42
+ /**
43
+ * Logs 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: LogColumn[] | string, spacesAfter?: number, spacesBefore?: number): void;
49
+ /**
50
+ * Logs a spacer line in the console.
51
+ * @param lines Number of blank lines to add.
52
+ */
53
+ spacer(lines: number): void;
54
+ /**
55
+ * Logs 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: string, spacesAfter?: number, spacesBefore?: number): void;
61
+ /**
62
+ * Logs a termination message in the console.
63
+ * @param message Termination message to display.
64
+ */
65
+ terminate(message: string): void;
66
+ /**
67
+ * Logs a title message in the console.
68
+ * @param message Title message to display.
69
+ */
70
+ title(message: string): void;
71
+ private formatColumns;
72
+ }
73
+ export {};
@@ -0,0 +1,136 @@
1
+ /* * */
2
+ /**
3
+ * Logger class for structured logging.
4
+ */
5
+ export class Logs {
6
+ //
7
+ /**
8
+ * Logs a divider line in the console.
9
+ * @param message Optional message to display.
10
+ * @param size Width of the divider line.
11
+ */
12
+ divider(message, size = 75) {
13
+ console.log();
14
+ if (message)
15
+ console.log(`- ${message} ${'-'.repeat(size - 2 - message.length < 1 ? 1 : size - 2 - message.length)}`);
16
+ else
17
+ console.log('-'.repeat(size));
18
+ console.log();
19
+ }
20
+ /**
21
+ * Logs an error message in the console.
22
+ * @param message Error message to display.
23
+ * @param error Optional error object to display.
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.
81
+ */
82
+ spacer(lines) {
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
+ formatColumns(columns) {
124
+ return columns
125
+ .map((item) => {
126
+ if (typeof item === 'string')
127
+ return item;
128
+ if (!item.cols)
129
+ return item.txt;
130
+ if (item.align === 'right')
131
+ return item.txt.padStart(item.cols);
132
+ return item.txt.padEnd(item.cols);
133
+ })
134
+ .join(' ');
135
+ }
136
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tmlmobilidade/utils",
3
- "version": "20250901.1129.36",
3
+ "version": "20250901.2024.56",
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",