MCPcopy Create free account
hub / github.com/middleapi/orpc / decodeEventMessage

Function decodeEventMessage

packages/standard-server/src/event-iterator/decoder.ts:4–50  ·  view source on GitHub ↗
(encoded: string)

Source from the content-addressed store, hash-verified

2import { EventDecoderError } from './errors'
3
4export function decodeEventMessage(encoded: string): EventMessage {
5 const lines = encoded.replace(/\n+$/, '').split(/\n/)
6
7 const message: EventMessage = {
8 data: undefined,
9 event: undefined,
10 id: undefined,
11 retry: undefined,
12 comments: [],
13 }
14
15 for (const line of lines) {
16 const index = line.indexOf(':')
17
18 const key = index === -1 ? line : line.slice(0, index)
19 const value = index === -1 ? '' : line.slice(index + 1).replace(/^\s/, '')
20
21 if (index === 0) {
22 message.comments.push(value)
23 }
24
25 else if (key === 'data') {
26 message.data ??= ''
27 message.data += `${value}\n`
28 }
29
30 else if (key === 'event') {
31 message.event = value
32 }
33
34 else if (key === 'id') {
35 message.id = value
36 }
37
38 else if (key === 'retry') {
39 const maybeInteger = Number.parseInt(value)
40
41 if (Number.isInteger(maybeInteger) && maybeInteger >= 0 && maybeInteger.toString() === value) {
42 message.retry = maybeInteger
43 }
44 }
45 }
46
47 message.data = message.data?.replace(/\n$/, '')
48
49 return message
50}
51
52export interface EventDecoderOptions {
53 onEvent?: (event: EventMessage) => void

Callers 2

decoder.test.tsFile · 0.90
feedMethod · 0.85

Calls 3

pushMethod · 0.80
toStringMethod · 0.80
replaceMethod · 0.65

Tested by

no test coverage detected