@berish/rfp
Version:
Binary secure transport organization protocol for peer communication using function fingerprints
42 lines • 2.34 kB
JavaScript
;
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.connect = void 0;
const stateful_1 = require("@berish/stateful");
const reactionSetStateRemote_1 = require("./reactionSetStateRemote");
const reactionSetValueRemote_1 = require("./reactionSetValueRemote");
const removeRemoteChange_1 = require("./removeRemoteChange");
function connect(store) {
return __awaiter(this, void 0, void 0, function* () {
const scope = stateful_1.getScope(store);
const privateScope = stateful_1.getPrivateScope(store);
if (!scope)
throw new TypeError('PeerStore scope is not found');
if (!scope.isConnected) {
privateScope.remoteChanges = [];
privateScope.listenId = stateful_1.listenChange(store, (props, oldValue, newValue) => __awaiter(this, void 0, void 0, function* () {
const isExists = removeRemoteChange_1.removeRemoteChange(store, props, newValue);
if (scope.setValueRemote && !isExists) {
yield scope.setValueRemote(props, newValue);
}
}));
privateScope.unreceiveSetValue = reactionSetValueRemote_1.reactionSetValueRemote(store, (props, value) => {
privateScope.remoteChanges.push([props, value]);
scope.setValue(props, value);
});
privateScope.unreceiveSetState = reactionSetStateRemote_1.reactionSetStateRemote(store, (state) => scope.setState(state));
scope.isConnected = true;
scope.logger.info('connected');
}
});
}
exports.connect = connect;
//# sourceMappingURL=connect.js.map