Skip to content

Commit 02a2d71

Browse files
committed
feat: moved log transport to main package
1 parent 4e54a8f commit 02a2d71

12 files changed

+46
-51
lines changed

electron/common/logger/types.ts

-25
Original file line numberDiff line numberDiff line change
@@ -22,31 +22,6 @@ export type LogMessage = LogData & {
2222
timestamp: Date;
2323
};
2424

25-
/**
26-
* Transporters write log messages somewhere.
27-
* For example, to a console, a file, an api, or nowhere.
28-
*/
29-
export interface LogTransporter {
30-
transport(message: LogMessage): void;
31-
}
32-
33-
export interface LogTransportConfig {
34-
/**
35-
* Transports log messages somewhere.
36-
* For example, to the console, a file, an api, or nowhere.
37-
*/
38-
transporter: LogTransporter;
39-
/**
40-
* By default, all messages are logged to every transporter for levels
41-
* that satisify the runtime log level. You can further restrict which
42-
* levels are logged to a specific transporter by setting this property.
43-
*
44-
* For example, if the runtime log level is 'INFO' but you only want to send
45-
* errors to this transporter, then set this config's level to 'ERROR'.
46-
*/
47-
level?: LogLevel;
48-
}
49-
5025
/**
5126
* Shape of a logger function that always logs to a specific level.
5227
*/

electron/common/tsconfig.json

+5-1
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,9 @@
2828
"lib": ["DOM", "DOM.Iterable", "ESNext"]
2929
},
3030
"exclude": ["node_modules", "**/__tests__/**", "**/__mocks__/**"],
31-
"include": ["**/types.ts", "**/*.ts"]
31+
"include": [
32+
"**/types.ts",
33+
"**/*.ts",
34+
"../main/logger/__mocks__/transporter.mock.ts"
35+
]
3236
}

electron/main/logger/__tests__/logger.test.ts

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
import type { Mocked } from 'vitest';
22
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
3-
import type { LogTransporterMock } from '../../../common/logger/__mocks__/transporter.mock.js';
4-
import { LogTransporterMockImpl } from '../../../common/logger/__mocks__/transporter.mock.js';
5-
import type {
6-
LogMessage,
7-
LogTransportConfig,
8-
} from '../../../common/logger/types.js';
3+
import type { LogMessage } from '../../../common/logger/types.js';
94
import { LogLevel } from '../../../common/logger/types.js';
5+
import type { LogTransporterMock } from '../__mocks__/transporter.mock.js';
6+
import { LogTransporterMockImpl } from '../__mocks__/transporter.mock.js';
107
import { LoggerImpl } from '../logger.js';
8+
import type { LogTransportConfig } from '../types.js';
119

1210
type LoggerUtilsModule = typeof import('../logger.utils.js');
1311

electron/main/logger/logger.ts

+1-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ import type {
33
LogData,
44
LogLevel,
55
LogMessage,
6-
LogTransportConfig,
7-
LogTransporter,
86
} from '../../common/logger/types.js';
97
import { isLogLevelEnabled } from './logger.utils.js';
8+
import type { LogTransportConfig, LogTransporter } from './types.js';
109

1110
const DEFAULT_SCOPE = 'default';
1211

electron/main/logger/transport/__tests__/console-transporter.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
22
import { LogLevel, type LogMessage } from '../../../../common/logger/types.js';
3-
import type { LogFormatterMock } from '../../__mocks__/log-formatter.mock.js';
4-
import { LogFormatterMockImpl } from '../../__mocks__/log-formatter.mock.js';
3+
import type { LogFormatterMock } from '../../__mocks__/formatter.mock.js';
4+
import { LogFormatterMockImpl } from '../../__mocks__/formatter.mock.js';
55
import { ConsoleLogTransporterImpl } from '../console.transporter.js';
66

77
describe('console-log-transporter', () => {

electron/main/logger/transport/__tests__/file-transporter.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
22
import { LogLevel, type LogMessage } from '../../../../common/logger/types.js';
3-
import type { LogFormatterMock } from '../../__mocks__/log-formatter.mock.js';
4-
import { LogFormatterMockImpl } from '../../__mocks__/log-formatter.mock.js';
3+
import type { LogFormatterMock } from '../../__mocks__/formatter.mock.js';
4+
import { LogFormatterMockImpl } from '../../__mocks__/formatter.mock.js';
55
import { FileLogTransporterImpl } from '../file.transporter.js';
66

77
const { mockWritable, mockCreateWriteStream } = await vi.hoisted(async () => {

electron/main/logger/transport/__tests__/writable-transporter.test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
22
import { LogLevel, type LogMessage } from '../../../../common/logger/types.js';
33
import { WritableMockImpl } from '../../../__mocks__/writable.mock.js';
4-
import type { LogFormatterMock } from '../../__mocks__/log-formatter.mock.js';
5-
import { LogFormatterMockImpl } from '../../__mocks__/log-formatter.mock.js';
4+
import type { LogFormatterMock } from '../../__mocks__/formatter.mock.js';
5+
import { LogFormatterMockImpl } from '../../__mocks__/formatter.mock.js';
66
import { WritableLogTransporterImpl } from '../writable.transporter.js';
77

88
describe('writable-log-transporter', () => {

electron/main/logger/transport/console.transporter.ts

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,6 @@
1-
import type {
2-
LogMessage,
3-
LogTransporter,
4-
} from '../../../common/logger/types.js';
1+
import type { LogMessage } from '../../../common/logger/types.js';
52
import { LogLevel } from '../../../common/logger/types.js';
6-
import type { LogFormatter } from '../types.js';
3+
import type { LogFormatter, LogTransporter } from '../types.js';
74

85
/**
96
* Transports logs to the console.

electron/main/logger/transport/writable.transporter.ts

+2-5
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
import { nextTick } from 'node:process';
22
import type { Writable } from 'node:stream';
3-
import type {
4-
LogMessage,
5-
LogTransporter,
6-
} from '../../../common/logger/types.js';
7-
import type { LogFormatter } from '../types.js';
3+
import type { LogMessage } from '../../../common/logger/types.js';
4+
import type { LogFormatter, LogTransporter } from '../types.js';
85

96
/**
107
* Transports logs via a {@link Writable} stream.

electron/main/logger/types.ts

+26-1
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,33 @@
1-
import type { LogMessage } from '../../common/logger/types.js';
1+
import type { LogLevel, LogMessage } from '../../common/logger/types.js';
22

33
/**
44
* Formats log messages into strings to be written to transporters.
55
*/
66
export interface LogFormatter {
77
format(message: LogMessage): string;
88
}
9+
10+
/**
11+
* Transporters write log messages somewhere.
12+
* For example, to a console, a file, an api, or nowhere.
13+
*/
14+
export interface LogTransporter {
15+
transport(message: LogMessage): void;
16+
}
17+
18+
export interface LogTransportConfig {
19+
/**
20+
* Transports log messages somewhere.
21+
* For example, to the console, a file, an api, or nowhere.
22+
*/
23+
transporter: LogTransporter;
24+
/**
25+
* By default, all messages are logged to every transporter for levels
26+
* that satisify the runtime log level. You can further restrict which
27+
* levels are logged to a specific transporter by setting this property.
28+
*
29+
* For example, if the runtime log level is 'INFO' but you only want to send
30+
* errors to this transporter, then set this config's level to 'ERROR'.
31+
*/
32+
level?: LogLevel;
33+
}

0 commit comments

Comments
 (0)