UNPKG

clumsy-graphics

Version:

a tool for rapidly developing animations where frames are described using svg elements à la react 🙃

75 lines (74 loc) 3.67 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getSpawnedGraphicsRendererProcessEventChannel = void 0; const redux_saga_1 = require("redux-saga"); function getSpawnedGraphicsRendererProcessEventChannel(api) { const { spawnedGraphicsRendererProcess } = api; const spawnedGraphicsRendererProcessEventChannel = (0, redux_saga_1.eventChannel)((emitGraphicsRendererProcessEvent) => { let spawnedGraphicsRendererProcessLog = ''; spawnedGraphicsRendererProcess.stdout.setEncoding('utf-8'); spawnedGraphicsRendererProcess.stdout.on('data', (someStdoutData) => { if (typeof someStdoutData === 'string') { spawnedGraphicsRendererProcessLog = `${spawnedGraphicsRendererProcessLog}${someStdoutData}`; emitGraphicsRendererProcessEvent({ eventType: 'graphicsRendererProcessStdoutLogUpdated', eventPayload: { updatedGraphicsRendererProcessStdoutLog: spawnedGraphicsRendererProcessLog, }, }); } else { throw new Error('wtf? graphicsRendererProcessMessageTokens'); } }); const spawnedGraphicsRendererProcessErrorMessagePromise = new Promise((resolve) => { let graphicsRendererProcessErrorMessage = null; spawnedGraphicsRendererProcess.stderr.setEncoding('utf-8'); spawnedGraphicsRendererProcess.stderr.on('data', (someStderrData) => { if (typeof someStderrData === 'string') { graphicsRendererProcessErrorMessage = graphicsRendererProcessErrorMessage ? `${spawnedGraphicsRendererProcess}${someStderrData}` : someStderrData; } else { throw new Error('wtf? spawnedGraphicsRendererProcess.stderr'); } }); spawnedGraphicsRendererProcess.stderr.once('end', () => { resolve({ graphicsRendererProcessErrorMessage: graphicsRendererProcessErrorMessage || 'wtf? graphicsRendererProcessErrorMessage', }); }); }); spawnedGraphicsRendererProcess.once('exit', async (graphicsRendererProcessExitCode) => { switch (graphicsRendererProcessExitCode) { case 0: emitGraphicsRendererProcessEvent({ eventType: 'graphicsRendererProcessSuccessful', eventPayload: {}, }); break; case 1: const { graphicsRendererProcessErrorMessage } = await spawnedGraphicsRendererProcessErrorMessagePromise; emitGraphicsRendererProcessEvent({ eventType: 'graphicsRendererProcessFailed', eventPayload: { graphicsRendererProcessErrorMessage, }, }); break; case null: emitGraphicsRendererProcessEvent({ eventType: 'graphicsRendererProcessTerminated', eventPayload: {}, }); break; } }); return () => { }; }, redux_saga_1.buffers.expanding(10)); return { spawnedGraphicsRendererProcessEventChannel }; } exports.getSpawnedGraphicsRendererProcessEventChannel = getSpawnedGraphicsRendererProcessEventChannel;