(
payload: HotPayload,
)
| 228 | | ((data: InvokeSendData, client: HotChannelClient) => void) |
| 229 | | undefined |
| 230 | const handleInvoke = async <T extends keyof InvokeMethods>( |
| 231 | payload: HotPayload, |
| 232 | ) => { |
| 233 | if (!invokeHandlers) { |
| 234 | return { |
| 235 | error: { |
| 236 | name: 'TransportError', |
| 237 | message: 'invokeHandlers is not set', |
| 238 | stack: new Error().stack, |
| 239 | }, |
| 240 | } |
| 241 | } |
| 242 | |
| 243 | const data: InvokeSendData<T> = (payload as CustomPayload).data |
| 244 | const { name, data: args } = data |
| 245 | try { |
| 246 | const invokeHandler = invokeHandlers[name] |
| 247 | // @ts-expect-error `invokeHandler` is `InvokeMethods[T]`, so passing the args is fine |
| 248 | const result = await invokeHandler(...args) |
| 249 | return { result } |
| 250 | } catch (error) { |
| 251 | return { |
| 252 | error: { |
| 253 | name: error.name, |
| 254 | message: error.message, |
| 255 | stack: error.stack, |
| 256 | ...error, // preserve enumerable properties such as RollupError.loc, frame, plugin |
| 257 | }, |
| 258 | } |
| 259 | } |
| 260 | } |
| 261 | |
| 262 | return { |
| 263 | ...channel, |
no outgoing calls
no test coverage detected