UNPKG

buntralino

Version:

Bun library for Buntralino. Buntralino unites Bun and Neutralino.js to make a simpler, lighter alternative to Electron and NW.js. Use Neutralino.js API at client and send harder tasks to Bun while keeping your development process easy.

60 lines (58 loc) 2.27 kB
import {connections, getConnectionByName, type Connection} from './connections'; import {evalsMap} from './evals'; import logger from './logger'; import {callMethod} from './methodLibrary'; import * as neuWindow from './window'; export default async function fulfillRequests(payload: any, connection: Connection) { switch (payload.command) { case 'run': try { neuWindow.sendEvent(connection, 'buntralinoExecResult', { id: payload.id, // eslint-disable-next-line no-await-in-loop returnValue: await callMethod(payload.method, payload.payload) }); } catch (error) { neuWindow.sendEvent(connection, 'buntralinoExecResult', { id: payload.id, error: (error as Error).message ?? null, stack: (error as Error).stack ?? null }); console.error(`Error running method "${payload.method}" for ${connection.name}:`); console.error(error); } break; case 'shutdown': logger`Shutting down the app... 😴`; connections.forEach(connection => neuWindow.sendNeuMethod(connection, 'app.exit', {})); // eslint-disable-next-line no-process-exit process.exit(0); break; case 'evalResult': { const [resolve, reject] = evalsMap.get(payload.id)!; if (payload.error) { const err = new Error('🥟🐞 evalJs failed for ' + connection.name + ': ' + payload.error + '\n\nClient-side stack trace:\n' + payload.stack); reject(err); } else { resolve(payload.returnValue); } evalsMap.delete(payload.id); } break; case 'broadcast': { const {event, detail} = payload; connections.forEach(connection => { neuWindow.sendEvent(connection, event, detail); }); } break; case 'sendEvent': { const {event, target, detail} = payload; const connection = getConnectionByName(target); if (connection) { neuWindow.sendEvent(connection, event, detail); } } break; default: console.error('🥟🙄 Invalid command received: ', payload.command); } }