Skip to content

Commit ae76ca1

Browse files
committed
refactor: remove log level enum in favor or union
1 parent bfbbcb3 commit ae76ca1

33 files changed

+226
-319
lines changed

eslint.config.mjs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ export default [
5353
'prettier/prettier': 'error',
5454
'no-unused-vars': 'off',
5555
'@typescript-eslint/no-unused-vars': [
56-
'warn',
56+
'error',
5757
{
5858
args: 'none',
5959
ignoreRestSiblings: true,

packages/apex-ls-browser/src/utils/BrowserLogNotificationHandler.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
import { Connection, MessageType } from 'vscode-languageserver/browser';
1010
import {
1111
LogMessageParams,
12-
LogMessageType,
1312
LogNotificationHandler,
1413
shouldLog,
1514
} from '@salesforce/apex-lsp-logging';
15+
import type { LogMessageType } from '@salesforce/apex-lsp-logging';
1616

1717
/**
1818
* Browser-specific implementation of LogNotificationHandler
@@ -72,15 +72,15 @@ export class BrowserLogNotificationHandler implements LogNotificationHandler {
7272
*/
7373
private getLogMessageType(type: LogMessageType): MessageType {
7474
switch (type) {
75-
case LogMessageType.Error:
75+
case 'error':
7676
return MessageType.Error;
77-
case LogMessageType.Warning:
77+
case 'warning':
7878
return MessageType.Warning;
79-
case LogMessageType.Info:
79+
case 'info':
8080
return MessageType.Info;
81-
case LogMessageType.Log:
81+
case 'log':
8282
return MessageType.Log;
83-
case LogMessageType.Debug:
83+
case 'debug':
8484
// Map Debug to Log for backward compatibility with older LSP clients
8585
return MessageType.Log;
8686
default:

packages/apex-ls-browser/src/utils/BrowserLoggerFactory.ts

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,10 @@
99
import {
1010
LoggerInterface,
1111
LoggerFactory,
12-
LogMessageType,
1312
getLogNotificationHandler,
1413
shouldLog,
1514
} from '@salesforce/apex-lsp-logging';
15+
import type { LogMessageType } from '@salesforce/apex-lsp-logging';
1616

1717
/**
1818
* A browser logger implementation that sends log messages through the
@@ -41,8 +41,7 @@ class BrowserLogger implements LoggerInterface {
4141

4242
if (handler && typeof handler.sendLogMessage === 'function') {
4343
// For backward compatibility, map Debug to Log for older LSP clients
44-
const mappedType =
45-
messageType === LogMessageType.Debug ? LogMessageType.Log : messageType;
44+
const mappedType = messageType === 'debug' ? 'log' : messageType;
4645
handler.sendLogMessage({
4746
type: mappedType,
4847
message,
@@ -61,31 +60,31 @@ class BrowserLogger implements LoggerInterface {
6160
* @param message - The message to log or function that returns the message
6261
*/
6362
public debug(message: string | (() => string)): void {
64-
this.log(LogMessageType.Debug, message);
63+
this.log('debug', message);
6564
}
6665

6766
/**
6867
* Log an info message
6968
* @param message - The message to log or function that returns the message
7069
*/
7170
public info(message: string | (() => string)): void {
72-
this.log(LogMessageType.Info, message);
71+
this.log('info', message);
7372
}
7473

7574
/**
7675
* Log a warning message
7776
* @param message - The message to log or function that returns the message
7877
*/
7978
public warn(message: string | (() => string)): void {
80-
this.log(LogMessageType.Warning, message);
79+
this.log('warning', message);
8180
}
8281

8382
/**
8483
* Log an error message
8584
* @param message - The message to log or function that returns the message
8685
*/
8786
public error(message: string | (() => string)): void {
88-
this.log(LogMessageType.Error, message);
87+
this.log('error', message);
8988
}
9089
}
9190

packages/apex-ls-browser/test/utils/BrowserLogNotificationHandler.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import { Connection, MessageType } from 'vscode-languageserver/browser';
1010
import {
1111
LogMessageParams,
12-
LogMessageType,
12+
type LogMessageType,
1313
setLogLevel,
1414
} from '@salesforce/apex-lsp-logging';
1515

@@ -20,7 +20,7 @@ describe('BrowserLogNotificationHandler', () => {
2020
let handler: BrowserLogNotificationHandler;
2121

2222
beforeEach(() => {
23-
setLogLevel(LogMessageType.Debug);
23+
setLogLevel('debug');
2424

2525
mockConnection = {
2626
sendNotification: jest.fn(),
@@ -57,7 +57,7 @@ describe('BrowserLogNotificationHandler', () => {
5757
describe('sendLogMessage', () => {
5858
it('should send error message to connection only', () => {
5959
const params: LogMessageParams = {
60-
type: LogMessageType.Error,
60+
type: 'error',
6161
message: 'Test error message',
6262
};
6363

@@ -74,7 +74,7 @@ describe('BrowserLogNotificationHandler', () => {
7474

7575
it('should send warning message to connection only', () => {
7676
const params: LogMessageParams = {
77-
type: LogMessageType.Warning,
77+
type: 'warning',
7878
message: 'Test warning message',
7979
};
8080

@@ -91,7 +91,7 @@ describe('BrowserLogNotificationHandler', () => {
9191

9292
it('should send info message to connection only', () => {
9393
const params: LogMessageParams = {
94-
type: LogMessageType.Info,
94+
type: 'info',
9595
message: 'Test info message',
9696
};
9797

@@ -108,7 +108,7 @@ describe('BrowserLogNotificationHandler', () => {
108108

109109
it('should send debug message to connection only', () => {
110110
const params: LogMessageParams = {
111-
type: LogMessageType.Debug,
111+
type: 'debug',
112112
message: 'Test debug message',
113113
};
114114

@@ -125,7 +125,7 @@ describe('BrowserLogNotificationHandler', () => {
125125

126126
it('should handle unknown message type', () => {
127127
const params: LogMessageParams = {
128-
type: 999 as LogMessageType, // Unknown type
128+
type: 'unknown' as LogMessageType, // Unknown type
129129
message: 'Test unknown message',
130130
};
131131

packages/apex-ls-node/src/utils/LSPLoggerFactory.ts

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import {
1010
LoggerInterface,
1111
LoggerFactory,
12-
LogMessageType,
12+
type LogMessageType,
1313
getLogNotificationHandler,
1414
shouldLog,
1515
} from '@salesforce/apex-lsp-logging';
@@ -41,13 +41,12 @@ class LSPLogger implements LoggerInterface {
4141

4242
// Add ISO timestamp and log level to every message
4343
const timestamp = new Date().toISOString();
44-
const logLevel = LogMessageType[messageType] || 'LOG';
44+
const logLevel = messageType.toUpperCase();
4545
const messageWithTimestamp = `[${timestamp}] [${logLevel}] ${message}`;
4646

4747
if (handler && typeof handler.sendLogMessage === 'function') {
48-
// For backward compatibility, map Debug to Log for older LSP clients
49-
const mappedType =
50-
messageType === LogMessageType.Debug ? LogMessageType.Log : messageType;
48+
// For backward compatibility, map debug to log for older LSP clients
49+
const mappedType = messageType === 'debug' ? 'log' : messageType;
5150
handler.sendLogMessage({
5251
type: mappedType,
5352
message: messageWithTimestamp,
@@ -66,31 +65,31 @@ class LSPLogger implements LoggerInterface {
6665
* @param message - The message to log or function that returns the message
6766
*/
6867
public debug(message: string | (() => string)): void {
69-
this.log(LogMessageType.Debug, message);
68+
this.log('debug', message);
7069
}
7170

7271
/**
7372
* Log an info message
7473
* @param message - The message to log or function that returns the message
7574
*/
7675
public info(message: string | (() => string)): void {
77-
this.log(LogMessageType.Info, message);
76+
this.log('info', message);
7877
}
7978

8079
/**
8180
* Log a warning message
8281
* @param message - The message to log or function that returns the message
8382
*/
8483
public warn(message: string | (() => string)): void {
85-
this.log(LogMessageType.Warning, message);
84+
this.log('warning', message);
8685
}
8786

8887
/**
8988
* Log an error message
9089
* @param message - The message to log or function that returns the message
9190
*/
9291
public error(message: string | (() => string)): void {
93-
this.log(LogMessageType.Error, message);
92+
this.log('error', message);
9493
}
9594
}
9695

packages/apex-ls-node/src/utils/NodeLogNotificationHandler.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import { Connection, MessageType } from 'vscode-languageserver/node';
1010
import {
1111
LogMessageParams,
12-
LogMessageType,
12+
type LogMessageType,
1313
LogNotificationHandler,
1414
shouldLog,
1515
} from '@salesforce/apex-lsp-logging';
@@ -66,16 +66,16 @@ export class NodeLogNotificationHandler implements LogNotificationHandler {
6666
*/
6767
private getLogMessageType(type: LogMessageType): MessageType {
6868
switch (type) {
69-
case LogMessageType.Error:
69+
case 'error':
7070
return MessageType.Error;
71-
case LogMessageType.Warning:
71+
case 'warning':
7272
return MessageType.Warning;
73-
case LogMessageType.Info:
73+
case 'info':
7474
return MessageType.Info;
75-
case LogMessageType.Log:
75+
case 'log':
7676
return MessageType.Log;
77-
case LogMessageType.Debug:
78-
// Map Debug to Log for backward compatibility with older LSP clients
77+
case 'debug':
78+
// Map debug to log for backward compatibility with older LSP clients
7979
return MessageType.Log;
8080
default:
8181
return MessageType.Log;

packages/apex-ls-node/test/utils/NodeLogNotificationHandler.test.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import { Connection, MessageType } from 'vscode-languageserver/node';
1010
import {
1111
LogMessageParams,
12-
LogMessageType,
12+
type LogMessageType,
1313
setLogLevel,
1414
} from '@salesforce/apex-lsp-logging';
1515

@@ -21,7 +21,7 @@ describe('NodeLogNotificationHandler', () => {
2121

2222
beforeEach(() => {
2323
// Set log level to debug to allow all messages during testing
24-
setLogLevel(LogMessageType.Debug);
24+
setLogLevel('debug');
2525

2626
mockConnection = {
2727
sendNotification: jest.fn(),
@@ -45,7 +45,7 @@ describe('NodeLogNotificationHandler', () => {
4545
describe('sendLogMessage', () => {
4646
it('should send error message to connection only', () => {
4747
const params: LogMessageParams = {
48-
type: LogMessageType.Error,
48+
type: 'error',
4949
message: 'Test error message',
5050
};
5151

@@ -62,7 +62,7 @@ describe('NodeLogNotificationHandler', () => {
6262

6363
it('should send warning message to connection only', () => {
6464
const params: LogMessageParams = {
65-
type: LogMessageType.Warning,
65+
type: 'warning',
6666
message: 'Test warning message',
6767
};
6868

@@ -79,7 +79,7 @@ describe('NodeLogNotificationHandler', () => {
7979

8080
it('should send info message to connection only', () => {
8181
const params: LogMessageParams = {
82-
type: LogMessageType.Info,
82+
type: 'info',
8383
message: 'Test info message',
8484
};
8585

@@ -96,7 +96,7 @@ describe('NodeLogNotificationHandler', () => {
9696

9797
it('should send debug message to connection only', () => {
9898
const params: LogMessageParams = {
99-
type: LogMessageType.Debug,
99+
type: 'debug',
100100
message: 'Test debug message',
101101
};
102102

@@ -113,7 +113,7 @@ describe('NodeLogNotificationHandler', () => {
113113

114114
it('should handle unknown message type', () => {
115115
const params: LogMessageParams = {
116-
type: 999 as LogMessageType, // Unknown type
116+
type: 'unknown' as LogMessageType, // Unknown type
117117
message: 'Test unknown message',
118118
};
119119

packages/apex-lsp-logging/README.md

Lines changed: 2 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -101,35 +101,9 @@ interface LoggerInterface {
101101
### Log Message Types
102102

103103
```typescript
104-
type LogMessageType = 'Error' | 'Warning' | 'Info' | 'Log' | 'Debug';
104+
type LogMessageType = 'error' | 'warning' | 'info' | 'log' | 'debug';
105105
```
106106

107107
## Examples
108108

109-
See the `examples/` directory for complete usage examples:
110-
111-
- `standalone-usage.ts` - Demonstrates standalone console logging with the Apex parser
112-
113-
## Integration with Apex Parser
114-
115-
This package is designed to work seamlessly with the Apex parser:
116-
117-
```typescript
118-
import { enableConsoleLogging } from '@salesforce/apex-lsp-logging';
119-
import {
120-
CompilerService,
121-
ApexSymbolCollectorListener,
122-
} from '@salesforce/apex-parser-ast';
123-
124-
// Enable logging
125-
enableConsoleLogging();
126-
127-
// Use the parser with automatic logging
128-
const compiler = new CompilerService();
129-
const listener = new ApexSymbolCollectorListener();
130-
const result = compiler.compile(apexCode, 'test.cls', listener);
131-
```
132-
133-
## License
134-
135-
BSD-3-Clause
109+
See the `examples/`

0 commit comments

Comments
 (0)