Skip to content

Decode causes lost data if there is no "__console_feed_remaining__0" entry #125

@lindapaiste

Description

@lindapaiste

We've had some problems over on the p5 Web Editor with upgrading from ^3.2.0 to ^3.5.0.

I've traced it back to the Decode function and the changes that were made there to support the limit option.

export function Decode(data: any): Message {
const decoded = replicator.decode(JSON.stringify(data))
// remove __console_feed_remaining__
decoded.data.pop()
return decoded
}

The problem is that sometimes the messages which we are decoding do not have a __console_feed_remaining__0 entry at the end of the data array. This could be due to improper usage on our end. But the Decode function will always remove the last element of the data array regardless of what the element actually is. The code would be safer if it validated the entry before removing it, using code similar to this:

if (typeof data === 'string' && data.includes(REMAINING_KEY)) {
name = REMAINING_KEY
data = data.split(REMAINING_KEY)[1]
}

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions