y-serviceworker
Version:
Service Worker Connector for Yjs (enables communication with a Service Worker)
9 lines (8 loc) • 4.13 kB
JavaScript
/**
* yjs - A framework for real-time p2p shared editing on any data
* @version v12.2.1
* @link http://y-js.org
* @license MIT
*/
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var r;r="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,r.yServiceWorker=e()}}(function(){return function e(r,t,o){function n(s,a){if(!t[s]){if(!r[s]){var u="function"==typeof require&&require;if(!a&&u)return u(s,!0);if(i)return i(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var f=t[s]={exports:{}};r[s][0].call(f.exports,function(e){var t=r[s][1][e];return n(t||e)},f,f.exports,e,r,t,o)}return t[s].exports}for(var i="function"==typeof require&&require,s=0;s<o.length;s++)n(o[s]);return n}({1:[function(e,r,t){"use strict";function o(e,r){if(!(e instanceof r))throw new TypeError("Cannot call a class as a function")}function n(e,r){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!r||"object"!=typeof r&&"function"!=typeof r?e:r}function i(e,r){if("function"!=typeof r&&null!==r)throw new TypeError("Super expression must either be null or a function, not "+typeof r);e.prototype=Object.create(r&&r.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),r&&(Object.setPrototypeOf?Object.setPrototypeOf(e,r):e.__proto__=r)}function s(e){var r=function(r){function t(r,i){if(o(this,t),void 0===i)throw new Error("Options must not be undefined!");if(null==i.room)throw new Error("You must define a room name!");i.role="slave",i.preferUntransformed=!0;var s=n(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,r,i));s.debug=e.debug("y:service-worker"),s.y.db.stopGarbageCollector(),s.options=i,s.guid=e.utils.generateGuid();var a=s,u=function(e){a.serviceworker=e;var r=new MessageChannel;r.port1.onmessage=a.messageEventListener,a.serviceworker.postMessage({type:"join",room:i.room,auth:i.auth,guid:a.guid},[r.port2]),a.userJoined("serviceworker","master")};return navigator.serviceWorker.ready.then(function(e){u(e.controller||e.active),a.whenSynced(function(){a.setUserId(a.guid)}),navigator.serviceWorker.addEventListener("controllerchange",function(){a.debug("controllerchanged");var e=navigator.serviceWorker.controller;a.serviceworker!==e&&null!==e&&(a.debug("replace old sw"),a.userLeft("serviceworker"),u(e))})}),s.messageEventListener=function(e){e.data.room!==i.room||null!=e.data.guid&&e.data.guid!==a.guid||"message"===e.data.type&&a.receiveMessage("serviceworker",e.data.message)},navigator.serviceWorker.addEventListener("message",s.messageEventListener),s}return i(t,r),a(t,[{key:"destroy",value:function(){navigator.serviceWorker.removeEventListener("message",this.messageEventListener),this.userLeft("serviceworker"),this.serviceworker.postMessage({type:"leave",room:this.options.room,guid:this.guid})}},{key:"disconnect",value:function(){}},{key:"reconnect",value:function(){}},{key:"send",value:function(e,r){this.broadcast(r),u(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"send",this).call(this,e,r)}},{key:"broadcast",value:function(e){this.serviceworker.postMessage({type:"message",room:this.options.room,message:e,guid:this.guid}),u(t.prototype.__proto__||Object.getPrototypeOf(t.prototype),"broadcast",this).call(this,e)}},{key:"isDisconnected",value:function(){return!1}}]),t}(e.AbstractConnector);e.extend("serviceworker",r)}var a=function(){function e(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}return function(r,t,o){return t&&e(r.prototype,t),o&&e(r,o),r}}(),u=function e(r,t,o){null===r&&(r=Function.prototype);var n=Object.getOwnPropertyDescriptor(r,t);if(void 0===n){var i=Object.getPrototypeOf(r);return null===i?void 0:e(i,t,o)}if("value"in n)return n.value;var s=n.get;if(void 0!==s)return s.call(o)};r.exports=s,"undefined"!=typeof Y&&s(Y)},{}]},{},[1])(1)});
//# sourceMappingURL=y-serviceworker.js.map