} from '../../types/index.js'
import {
Constants,
+ JSONStringifyWithMapSupport,
getWebSocketCloseEventStatusString,
isNotEmptyString,
logPrefix,
if (this.hasResponseHandler(responseId)) {
const ws = this.responseHandlers.get(responseId) as WebSocket
if (ws.readyState === WebSocket.OPEN) {
- ws.send(JSON.stringify(response))
+ ws.send(JSONStringifyWithMapSupport(response))
} else {
logger.error(
`${this.logPrefix(
// )} Raw data received in string format: ${rawData.toString()}`
// )
- // eslint-disable-next-line @typescript-eslint/no-base-to-string
- const request = JSON.parse(rawData.toString()) as ProtocolRequest
+ let request: ProtocolRequest
+ try {
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
+ request = JSON.parse(rawData.toString()) as ProtocolRequest
+ } catch (error) {
+ logger.error(
+ `${this.logPrefix(
+ moduleName,
+ 'validateRawDataRequest'
+ // eslint-disable-next-line @typescript-eslint/no-base-to-string
+ )} UI protocol request is not valid JSON: ${rawData.toString()}`
+ )
+ return false
+ }
if (!Array.isArray(request)) {
logger.error(