MCPcopy Create free account
hub / github.com/FlashpointProject/launcher / parse_message_data

Function parse_message_data

src/shared/socket/shared.ts:9–43  ·  view source on GitHub ↗
(raw_data: any)

Source from the content-addressed store, hash-verified

7 * @param raw_data Raw JSON data to parse.
8 */
9export function parse_message_data(raw_data: any): [unknown | undefined, Error | undefined] {
10 // @TODO Look up what types "data" can be of
11 // Parse message data to string
12 let data_string: string | undefined;
13 let data_string_error: any | undefined;
14 try {
15 if (typeof raw_data === 'string') {
16 data_string = raw_data;
17 } else if (Buffer.isBuffer(raw_data)) {
18 data_string = raw_data.toString();
19 } else if (Array.isArray(raw_data)) {
20 data_string = raw_data.reduce((acc, buffer) => acc + buffer.toString(), '');
21 } else {
22 data_string = Buffer.from(raw_data as any).toString();
23 }
24 } catch (e) {
25 data_string_error = e;
26 }
27
28 if (data_string_error) { return [undefined, data_string_error]; }
29 if (data_string === undefined) { return [undefined, new Error('Failed to parse message data into string.')]; }
30
31 // Parse data string to object
32 let data_object: any | undefined;
33 let data_object_error: any | undefined;
34 try {
35 data_object = JSON.parse(data_string);
36 } catch (e) {
37 data_object_error = e;
38 }
39
40 if (data_object_error) { return [undefined, data_object_error]; }
41
42 return [data_object, undefined];
43}
44
45/**
46 * Validate that an object is a valid socket request/response.

Callers 2

onMessageMethod · 0.90
onMessageMethod · 0.90

Calls 2

parseMethod · 0.80
toStringMethod · 0.65

Tested by

no test coverage detected