@tmlmobilidade/logger 20251202.1817.5

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.
@@ -0,0 +1,82 @@
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 {};
package/dist/index.js ADDED
@@ -0,0 +1,145 @@
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();
package/package.json ADDED
@@ -0,0 +1,45 @@
1
+ {
2
+ "name": "@tmlmobilidade/logger",
3
+ "version": "20251202.1817.5",
4
+ "author": {
5
+ "email": "iso@tmlmobilidade.pt",
6
+ "name": "TML-ISO"
7
+ },
8
+ "license": "AGPL-3.0-or-later",
9
+ "homepage": "https://github.com/tmlmobilidade/go#readme",
10
+ "bugs": {
11
+ "url": "https://github.com/tmlmobilidade/go/issues"
12
+ },
13
+ "repository": {
14
+ "type": "git",
15
+ "url": "git+https://github.com/tmlmobilidade/go.git"
16
+ },
17
+ "keywords": [
18
+ "public transit",
19
+ "tml",
20
+ "transportes metropolitanos de lisboa",
21
+ "go"
22
+ ],
23
+ "publishConfig": {
24
+ "access": "public"
25
+ },
26
+ "type": "module",
27
+ "files": [
28
+ "dist"
29
+ ],
30
+ "main": "./dist/index.js",
31
+ "types": "./dist/index.d.ts",
32
+ "scripts": {
33
+ "build": "tsc && resolve-tspaths",
34
+ "lint": "eslint ./src/ && tsc --noEmit",
35
+ "lint:fix": "eslint ./src/ --fix",
36
+ "watch": "tsc-watch --onSuccess 'resolve-tspaths'"
37
+ },
38
+ "devDependencies": {
39
+ "@tmlmobilidade/tsconfig": "*",
40
+ "@types/node": "24.10.1",
41
+ "resolve-tspaths": "0.8.23",
42
+ "tsc-watch": "7.2.0",
43
+ "typescript": "5.9.3"
44
+ }
45
+ }