( id: string, type: T, payload: RequestMessageMap[T], )
| 218 | */ |
| 219 | |
| 220 | export async function encodeRequestMessage<T extends keyof RequestMessageMap>( |
| 221 | id: string, |
| 222 | type: T, |
| 223 | payload: RequestMessageMap[T], |
| 224 | ): Promise<EncodedMessage> { |
| 225 | if (type === MessageType.EVENT_ITERATOR || type === MessageType.ABORT_SIGNAL) { |
| 226 | return encodeRawMessage(serializeRequestMessage(id, type, payload)) |
| 227 | } |
| 228 | |
| 229 | const request = payload as RequestMessageMap[MessageType.REQUEST] |
| 230 | |
| 231 | const { body: processedBody, headers: processedHeaders } = await serializeBodyAndHeaders( |
| 232 | request.body, |
| 233 | request.headers, |
| 234 | ) |
| 235 | |
| 236 | const modifiedRequest: RequestMessageMap[MessageType.REQUEST] = { |
| 237 | ...request, |
| 238 | body: processedBody instanceof Blob ? undefined : processedBody, |
| 239 | headers: processedHeaders, |
| 240 | } |
| 241 | |
| 242 | const baseMessage = serializeRequestMessage(id, MessageType.REQUEST, modifiedRequest) |
| 243 | |
| 244 | if (processedBody instanceof Blob) { |
| 245 | return encodeRawMessage(baseMessage, processedBody) |
| 246 | } |
| 247 | |
| 248 | return encodeRawMessage(baseMessage) |
| 249 | } |
| 250 | |
| 251 | export async function decodeRequestMessage(raw: EncodedMessage): Promise<DecodedRequestMessage> { |
| 252 | const { json: message, buffer } = await decodeRawMessage(raw) |
no test coverage detected