UNPKG

@actorize/core

Version:

Actorize helps building scalable js apps with a messaging system

61 lines 2.01 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const index_1 = require("../index"); const utils_1 = require("../utils"); function createRemoteStorageConsumer(director, opts) { const { storeLocation } = opts; const actorName = (0, utils_1.randomstring)(); // @ts-expect-error for now ok const actor = director.registerActor(actorName); // eslint-disable-next-line @typescript-eslint/no-unused-vars let onUpdate = (key, val) => { }; const obj = { onUpdate: (keys, cb) => { onUpdate = cb; // @ts-expect-error for now ok actor.sendMessage(storeLocation, { action: 'SUBSCRIBE_TO_KEYS', keys, }); return () => { // @ts-expect-error for now ok actor.sendMessage(storeLocation, { action: 'UNSUBSCRIBE_FROM_KEYS', keys, }); }; }, get: async (key) => { // @ts-expect-error for now ok const resp = await (0, index_1.dispatch)(director, storeLocation, { action: 'GET', key, }, true); if (!resp) { return null; } // @ts-expect-error for now ok return resp.payload.value; }, set: async (key, value) => { // @ts-expect-error for now ok actor.sendMessage(storeLocation, { action: 'SET', key, value, }); }, }; actor.onMessage((msgs) => { msgs.forEach((tmp) => { // TODO: just a workaround const msg = tmp; if (msg.payload.event === 'KEY_UPDATED') { onUpdate(msg.payload.key, msg.payload.value); } }); }); return obj; } exports.default = createRemoteStorageConsumer; //# sourceMappingURL=remoteStorageConsumer.js.map