Enhance message parsing to preserve newlines from empty data fields #104
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fix: Preserve newlines from empty data fields in Server-Sent Events parsing
Issue:#50
Description
Problem
The current implementation of the Server-Sent Events (SSE) parser incorrectly handles empty data fields. When multiple consecutive empty
data:fields are encountered, the parser was not preserving the newline characters that should be added for each empty field, causing data loss and incorrect message formatting.According to the Server-Sent Events specification, each
data:field should append its value to the data buffer followed by a single U+000A LINE FEED (LF) character. This means that emptydata:fields should still contribute a newline character to the final message data.Solution
Modified the
getMessagesfunction insrc/parse.tsto properly handle empty data fields by ensuring that eachdata:field (including empty ones) contributes a newline character to the message data buffer.Key changes:
\n) after each data field value, regardless of whether the value is emptysrc/parse.spec.tsExample
Before (incorrect behavior):
Would result in:
data: "foo"(missing newlines from empty data fields)After (correct behavior):
Results in:
data: "\n\nfoo"(preserving newlines from empty data fields)Testing
should preserve newlines from empty data fieldsto verify the fixjasmine.jsonto point to the correct spec directoryImpact
This fix ensures full compliance with the Server-Sent Events specification and prevents data loss when processing SSE streams that contain empty data fields, which is a common pattern for formatting multi-line messages or creating visual spacing in SSE data.
Additional Information for the PR
Type of Change
Testing
Checklist