UNPKG

elf-sync-state-yomo

Version:
24 lines (16 loc) 2.28 kB
(function (global, factory) { typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('rxjs'), require('rxjs/operators'), require('lodash-es'), require('@yomo/presencejs')) : typeof define === 'function' && define.amd ? define(['exports', 'rxjs', 'rxjs/operators', 'lodash-es', '@yomo/presencejs'], factory) : (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.ElfSyncState = {}, global.Rx, global.Rx, global["lodash-es"], global.Presence)); })(this, (function (exports, rxjs, operators, lodashEs, Presence) { 'use strict'; function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; } var Presence__default = /*#__PURE__*/_interopDefaultLegacy(Presence); function includeKeys(a){return rxjs.pipe(operators.map(b=>Object.keys(b).reduce((c,d)=>(a.includes(d)&&(c[d]=b[d]),c),{})))} function syncState(a,b){const c={channel:`${a.name}@store`,source:a=>a.asObservable(),preUpdate:a=>a.data,runGuard:()=>"undefined"!=typeof window&&"undefined"!=typeof window.BroadcastChannel},d=Object.assign(Object.assign({},c),b);if(!d.runGuard())return;let e;const f=()=>e.asObservable(),g=a=>{console.log("setValue: ",a),e.next(a);};// const stateChannel = new BroadcastChannel(merged.channel); let i=null;return null===i&&(console.log("girdim"),e=new rxjs.BehaviorSubject({}),i=new Presence__default["default"]("https://prsc.yomo.dev",{auth:{// Certification Type type:"token",// Api for getting access token endpoint:"https://ae59-159-146-14-53.ngrok.io/api/presence-auth"}}),i.on("connected",()=>{console.log("Connected to server: ",i.host);})),i.on("connected",()=>{i.on("updateData",b=>{console.log("data :",b),a.update(a=>Object.assign(Object.assign({},a),b));});}),i.on("connected",()=>{f().subscribe(a=>{console.log("getValue: ",a),i.send("updateData",a);});}),d.source(a).pipe(rxjs.skip(1),rxjs.distinctUntilChanged(lodashEs.isEqual),rxjs.tap(a=>{(console.log("PostMessage: ",a),g(a));}),rxjs.finalize(()=>{i.close(),i.on("closed",()=>{console.log("Closed the connection");});})).subscribe(),i} exports.includeKeys = includeKeys; exports.syncState = syncState; Object.defineProperty(exports, '__esModule', { value: true }); }));