clumsy-graphics
Version:
a tool for rapidly developing animations where frames are described using svg elements à la react 🙃
51 lines (50 loc) • 2.13 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getClientServerEventChannel = void 0;
const express_1 = __importDefault(require("express"));
const redux_saga_1 = require("redux-saga");
function getClientServerEventChannel(api) {
const { clientServerPort } = api;
const clientServerEventChannel = (0, redux_saga_1.eventChannel)((emitClientServerEvent) => {
const clientServer = (0, express_1.default)();
clientServer.get('/api/latestAnimationModule/graphicsRendererProcessState', (someClientRequest, someServerResponse) => {
emitClientServerEvent({
eventType: 'clientRequestsGraphicsRendererProcessState',
eventPayload: {
clientRequest: someClientRequest,
serverResponse: someServerResponse,
},
});
});
clientServer.get('/asset/:assetFilename', (someClientRequest, someServerResponse) => {
emitClientServerEvent({
eventType: 'clientRequestsGraphicAsset',
eventPayload: {
clientRequest: someClientRequest,
serverResponse: someServerResponse,
},
});
});
clientServer.get('*', (someClientRequest, someServerResponse) => {
emitClientServerEvent({
eventType: 'clientRequestsPage',
eventPayload: {
clientRequest: someClientRequest,
serverResponse: someServerResponse,
},
});
});
clientServer.listen(clientServerPort, () => {
emitClientServerEvent({
eventType: 'clientServerListening',
eventPayload: {},
});
});
return () => { };
}, redux_saga_1.buffers.expanding(5));
return { clientServerEventChannel };
}
exports.getClientServerEventChannel = getClientServerEventChannel;