UNPKG

crux-wrapper

Version:

A React provider for your crux application

46 lines 1.58 kB
import { createSender } from "./eventSender.js"; function createSerializer({ BincodeSerializer, BincodeDeserializer, ViewModel, Request, }) { return { serialize(entity) { const serializer = new BincodeSerializer(); entity.serialize(serializer); return serializer.getBytes(); }, deserializeEffects(bytes) { const deserializer = new BincodeDeserializer(bytes); const len = deserializer.deserializeLen(); const requests = []; for (let i = 0; i < len; i++) { const request = Request.deserialize(deserializer); requests.push(request); } return requests; }, deserializeView(bytes) { return ViewModel.deserialize(new BincodeDeserializer(bytes)); }, }; } export function wrap({ init, onEffect, serializerConfig, serializer: baseSerializer, log, }) { const logs = []; let apiRef = { value: null }; const serializer = baseSerializer ?? createSerializer(serializerConfig); const logger = !log ? undefined : typeof log === "function" ? log : (log) => logs.push(log); const sender = createSender(apiRef, onEffect, serializer, logger); return { init: async () => { if (apiRef.value) { return; } apiRef.value = init(sender.handleEffect); await apiRef.value; }, send: sender.send, logs, }; } //# sourceMappingURL=wrapper.js.map