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

Function api_handle_message

src/shared/socket/SocketAPI.ts:93–151  ·  view source on GitHub ↗
(
  api: SocketAPIData<T, U, EVENT>,
  data: SocketRequestData | SocketResponseData<unknown>,
  event: EVENT,
)

Source from the content-addressed store, hash-verified

91}
92
93export async function api_handle_message<
94 T extends T_BASE,
95 U extends U_BASE<T>,
96 EVENT extends EVENT_BASE
97>(
98 api: SocketAPIData<T, U, EVENT>,
99 data: SocketRequestData | SocketResponseData<unknown>,
100 event: EVENT,
101): Promise<[
102 SocketResponseData<unknown> | undefined, // Incoming response (resolve/reject promise)
103 SocketResponseData<unknown> | undefined, // Outgoing response (send this)
104 ]> {
105
106 if ('type' in data) { // Request
107 // Handle message
108 for (let i = 0; i < api.registered_any.length; i++) {
109 const callback_any = api.registered_any[i];
110 callback_any(event, data.type as T, data.args);
111 }
112
113 const callback = api.registered[data.type];
114 let result: any;
115 let error: any;
116 if (callback) {
117 try {
118 result = await callback(event, ...data.args as any);
119 } catch (e) {
120 // console.error(`An error was thrown from inside a callback (type: ${data.type}).`, e);
121 error = (e as Error).toString();
122 }
123 }
124
125 // Respond
126 if (data.id !== undefined) {
127 if (typeof data.id === 'number') {
128 let response: SocketResponseData<T>;
129 if (result !== undefined) {
130 response = {
131 id: data.id,
132 result: result
133 };
134 } else {
135 response = {
136 id: data.id,
137 error: error
138 };
139 }
140
141 return [undefined, response];
142 } else {
143 console.error(`Socket Client - Failed to respond to request, request ID is not of type "number" (type: "${typeof data.id}").`);
144 }
145 }
146 } else { // Response
147 return [data, undefined];
148 }
149
150 return [undefined, undefined];

Callers 2

onMessageMethod · 0.90
handleMessageMethod · 0.90

Calls 2

callbackFunction · 0.85
toStringMethod · 0.65

Tested by

no test coverage detected