UNPKG

clumsy-graphics

Version:

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

53 lines (52 loc) 2.33 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const worker_threads_1 = require("worker_threads"); const decodeData_1 = require("../helpers/decodeData"); const getAnimationModule_1 = require("../helpers/getAnimationModule"); const renderAnimationFrame_1 = require("../helpers/renderAnimationFrame"); const FrameRendererWorkerData_1 = require("./models/FrameRendererWorkerData"); const RenderFrameMessage_1 = require("./models/RenderFrameMessage"); startFrameRendererWorker(); async function startFrameRendererWorker() { const frameRendererParentSagaMessageChannel = worker_threads_1.parentPort; const { animationModuleBundle } = await (0, decodeData_1.decodeData)({ targetCodec: FrameRendererWorkerData_1.FrameRendererWorkerDataCodec, inputData: worker_threads_1.workerData, }); const animationModule = await (0, getAnimationModule_1.getAnimationModule)({ animationModuleBundle, }); frameRendererParentSagaMessageChannel.on('message', async (someRenderFrameMessageData) => { const someRenderFrameMessage = await (0, decodeData_1.decodeData)({ targetCodec: RenderFrameMessage_1.RenderAnimationFrameMessageCodec, inputData: someRenderFrameMessageData, }); const { frameIndex, framePngOutputPath } = someRenderFrameMessage.messagePayload; try { await (0, renderAnimationFrame_1.renderAnimationFrame)({ animationModule, frameIndex, frameFileOutputPath: framePngOutputPath, }); const renderedFrameMessage = { messageType: 'workerRenderedFrame', messagePayload: {}, }; frameRendererParentSagaMessageChannel.postMessage(renderedFrameMessage); } catch (renderError) { const renderErrorMessage = { messageType: 'workerRenderError', messagePayload: { renderError, }, }; frameRendererParentSagaMessageChannel.postMessage(renderErrorMessage); } }); const initializedMessage = { messageType: 'workerInitialized', messagePayload: {}, }; frameRendererParentSagaMessageChannel.postMessage(initializedMessage); }