Skip to content

Commit 6127a14

Browse files
committed
Use switch to simplify message formatting
1 parent 9f73063 commit 6127a14

File tree

2 files changed

+27
-18
lines changed

2 files changed

+27
-18
lines changed

packages/app/src/cli/services/dev/extension/websocket/handlers.ts

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import {
22
EventType,
33
IncomingDispatchMessage,
4+
LogPayload,
45
OutgoingDispatchMessage,
56
OutgoingMessage,
67
SetupWebSocketConnectionOptions,
@@ -73,24 +74,25 @@ const consoleTypeColors = {
7374
error: (text: string) => outputToken.errorText(text),
7475
} as const
7576

76-
const typesToIgnore: ReadonlyArray<string> = ['log', 'info'] as const
77-
78-
export function handleLogEvent(
79-
eventData: {type: string; message: string; extensionName: string},
80-
options: SetupWebSocketConnectionOptions,
81-
) {
82-
const {type, message, extensionName} = eventData
77+
function getOutput({type, message}: LogPayload) {
8378
const formattedMessage = parseLogMessage(message)
8479

85-
const uppercaseType = type.toUpperCase()
86-
const coloredType = consoleTypeColors[type as keyof typeof consoleTypeColors]?.(uppercaseType) ?? uppercaseType
87-
88-
const completeMessage = typesToIgnore.includes(type)
89-
? formattedMessage
90-
: outputContent`${coloredType}: ${formattedMessage}`.value
80+
switch (type) {
81+
case 'debug':
82+
case 'warn':
83+
case 'error':
84+
return outputContent`${consoleTypeColors[type](type.toUpperCase())}: ${formattedMessage}`.value
85+
case 'log':
86+
case 'info':
87+
return formattedMessage
88+
default:
89+
return `${type.toUpperCase()}: ${formattedMessage}`
90+
}
91+
}
9192

92-
useConcurrentOutputContext({outputPrefix: extensionName, stripAnsi: false}, () => {
93-
options.stdout.write(completeMessage)
93+
export function handleLogEvent(eventData: LogPayload, options: SetupWebSocketConnectionOptions) {
94+
useConcurrentOutputContext({outputPrefix: eventData.extensionName, stripAnsi: false}, () => {
95+
options.stdout.write(getOutput(eventData))
9496
})
9597
}
9698

@@ -107,7 +109,7 @@ ${outputToken.json(eventData)}
107109
options.stdout,
108110
)
109111

110-
if (eventType === 'update') {
112+
if (eventType === EventType.Update) {
111113
const payloadStoreApiKey = options.payloadStore.getRawPayload().app.apiKey
112114
const eventAppApiKey = eventData.app?.apiKey
113115

@@ -125,11 +127,11 @@ ${outputToken.json(eventData)}
125127
if (eventData.extensions) {
126128
options.payloadStore.updateExtensions(eventData.extensions)
127129
}
128-
} else if (eventType === 'dispatch') {
130+
} else if (eventType === EventType.Dispatch) {
129131
const outGoingMessage = getOutgoingDispatchMessage(jsonData, options)
130132

131133
notifyClients(wss, outGoingMessage, options)
132-
} else if (eventType === 'log') {
134+
} else if (eventType === EventType.Log) {
133135
handleLogEvent(eventData, options)
134136
}
135137
}

packages/app/src/cli/services/dev/extension/websocket/models.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {Server} from 'http'
44
export enum EventType {
55
Update = 'update',
66
Dispatch = 'dispatch',
7+
Log = 'log',
78
}
89

910
type DataType = 'focus' | 'unfocus'
@@ -42,3 +43,9 @@ export interface OutgoingMessage {
4243
version: string
4344
data: {[key: string]: unknown}
4445
}
46+
47+
export interface LogPayload {
48+
type: string
49+
message: string
50+
extensionName: string
51+
}

0 commit comments

Comments
 (0)