Files
yjs/y.js

11 lines
93 KiB
JavaScript
Raw Permalink Normal View History

2016-11-21 16:28:20 +01:00
/**
* yjs - A framework for real-time p2p shared editing on any data
2017-08-04 20:36:37 +02:00
* @version v12.3.2
2016-11-21 16:28:20 +01:00
* @link http://y-js.org
* @license MIT
*/
2017-08-04 20:36:37 +02:00
!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var t;t="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this,t.Y=e()}}(function(){return function e(t,r,n){function i(s,o){if(!r[s]){if(!t[s]){var u="function"==typeof require&&require;if(!o&&u)return u(s,!0);if(a)return a(s,!0);var c=new Error("Cannot find module '"+s+"'");throw c.code="MODULE_NOT_FOUND",c}var l=r[s]={exports:{}};t[s][0].call(l.exports,function(e){var r=t[s][1][e];return i(r||e)},l,l.exports,e,t,r,n)}return r[s].exports}for(var a="function"==typeof require&&require,s=0;s<n.length;s++)i(n[s]);return i}({1:[function(e,t,r){(function(n){"use strict";function i(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type)||("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))}function a(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+r.humanize(this.diff),t){var n="color: "+this.color;e.splice(1,0,n,"color: inherit");var i=0,a=0;e[0].replace(/%[a-zA-Z%]/g,function(e){"%%"!==e&&(i++,"%c"===e&&(a=i))}),e.splice(a,0,n)}}function s(){return"object"===("undefined"==typeof console?"undefined":c(console))&&console.log&&Function.prototype.apply.call(console.log,console,arguments)}function o(e){try{null==e?r.storage.removeItem("debug"):r.storage.debug=e}catch(e){}}function u(){var e;try{e=r.storage.debug}catch(e){}return!e&&void 0!==n&&"env"in n&&(e=n.env.DEBUG),e}var c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};r=t.exports=e("./debug"),r.log=s,r.formatArgs=a,r.save=o,r.load=u,r.useColors=i,r.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),r.colors=["lightseagreen","forestgreen","goldenrod","dodgerblue","darkorchid","crimson"],r.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},r.enable(u())}).call(this,e("_process"))},{"./debug":2,_process:4}],2:[function(e,t,r){"use strict";function n(e){var t,n=0;for(t in e)n=(n<<5)-n+e.charCodeAt(t),n|=0;return r.colors[Math.abs(n)%r.colors.length]}function i(e){function t(){if(t.enabled){var e=t,n=+new Date,i=n-(c||n);e.diff=i,e.prev=c,e.curr=n,c=n;for(var a=new Array(arguments.length),s=0;s<a.length;s++)a[s]=arguments[s];a[0]=r.coerce(a[0]),"string"!=typeof a[0]&&a.unshift("%O");var o=0;a[0]=a[0].replace(/%([a-zA-Z%])/g,function(t,n){if("%%"===t)return t;o++;var i=r.formatters[n];if("function"==typeof i){var s=a[o];t=i.call(e,s),a.splice(o,1),o--}return t}),r.formatArgs.call(e,a);(t.log||r.log||console.log.bind(console)).apply(e,a)}}return t.namespace=e,t.enabled=r.enabled(e),t.useColors=r.useColors(),t.color=n(e),"function"==typeof r.init&&r.init(t),t}function a(e){r.save(e),r.names=[],r.skips=[];for(var t=("string"==typeof e?e:"").split(/[\s,]+/),n=t.length,i=0;i<n;i++)t[i]&&(e=t[i].replace(/\*/g,".*?"),"-"===e[0]?r.skips.push(new RegExp("^"+e.substr(1)+"$")):r.names.push(new RegExp("^"+e+"$")))}function s(){r.enable("")}function o(e){var t,n;for(t=0,n=r.skips.length;t<n;t++)if(r.skips[t].test(e))return!1;for(t=0,n=r.names.length;t<n;t++)if(r.names[t].test(e))return!0;return!1}function u(e){return e instanceof Error?e.stack||e.message:e}r=t.exports=i.debug=i.default=i,r.coerce=u,r.disable=s,r.enable=a,r.enabled=o,r.humanize=e("ms"),r.names=[],r.skips=
value:regeneratorRuntime.mark(function e(t,r){var n;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:if(null!=t.gc||!0!==t.deleted||!this.store.gc||!this.store.y.connector.isSynced){e.next=15;break}if(n=!1,null==r||!0!==r.deleted){e.next=6;break}n=!0,e.next=10;break;case 6:if(!(null!=t.content&&t.content.length>1)){e.next=10;break}return e.delegateYield(this.getInsertionCleanStart([t.id[0],t.id[1]+1]),"t0",8);case 8:t=e.t0,n=!0;case 10:if(!n){e.next=15;break}return t.gc=!0,e.delegateYield(this.setOperation(t),"t1",13);case 13:return this.store.queueGarbageCollector(t.id),e.abrupt("return",!0);case 15:return e.abrupt("return",!1);case 16:case"end":return e.stop()}},e,this)})},{key:"removeFromGarbageCollector",value:function(t){function r(r){return!e.utils.compareIds(r,t.id)}this.gc1=this.gc1.filter(r),this.gc2=this.gc2.filter(r),delete t.gc}},{key:"destroyTypes",value:function(){for(var e in this.initializedTypes){var t=this.initializedTypes[e];null!=t._destroy?t._destroy():console.error("The type you included does not provide destroy functionality, it will remain in memory (updating your packages will help).")}}},{key:"destroy",value:regeneratorRuntime.mark(function e(){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:clearInterval(this.gcInterval),this.gcInterval=null,this.stopRepairCheck();case 3:case"end":return e.stop()}},e,this)})},{key:"setUserId",value:function(e){if(!this.userIdPromise.inProgress){this.userIdPromise.inProgress=!0;var t=this;t.requestTransaction(regeneratorRuntime.mark(function r(){var n;return regeneratorRuntime.wrap(function(r){for(;;)switch(r.prev=r.next){case 0:return t.userId=e,r.delegateYield(this.getState(e),"t0",2);case 2:n=r.t0,t.opClock=n.clock,t.userIdPromise.resolve(e);case 5:case"end":return r.stop()}},r,this)}))}return this.userIdPromise}},{key:"whenUserIdSet",value:function(e){this.userIdPromise.then(e)}},{key:"getNextOpId",value:function(e){if(null==e)throw new Error("getNextOpId expects the number of created ids to create!");if(null==this.userId)throw new Error("OperationStore not yet initialized!");var t=[this.userId,this.opClock];return this.opClock+=e,t}},{key:"apply",value:function(t){this.opsReceivedTimestamp=new Date;for(var r=0;r<t.length;r++){var n=t[r];if(null==n.id||n.id[0]!==this.y.connector.userId){var i=e.Struct[n.struct].requiredOps(n);null!=n.requires&&(i=i.concat(n.requires)),this.whenOperationsExist(i,n)}}}},{key:"whenOperationsExist",value:function(e,t){if(e.length>0)for(var r={op:t,missing:e.length},n=0;n<e.length;n++){var i=e[n],a=JSON.stringify(i),s=this.listenersById[a];null==s&&(s=[],this.listenersById[a]=s),s.push(r)}else this.listenersByIdExecuteNow.push({op:t});if(!this.listenersByIdRequestPending){this.listenersByIdRequestPending=!0;var o=this;this.requestTransaction(regeneratorRuntime.mark(function e(){var t,r,n,i,a,s,u,c,l,d,f;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:t=o.listenersByIdExecuteNow,o.listenersByIdExecuteNow=[],r=o.listenersById,o.listenersById={},o.listenersByIdRequestPending=!1,n=0;case 6:if(!(n<t.length)){e.next=12;break}return i=t[n].op,e.delegateYield(o.tryExecute.call(this,i),"t0",9);case 9:n++,e.next=6;break;case 12:e.t1=regeneratorRuntime.keys(r);case 13:if((e.t2=e.t1()).done){e.next=39;break}if(a=e.t2.value,s=r[a],u=JSON.parse(a),"string"!=typeof u[1]){e.next=22;break}return e.delegateYield(this.getOperation(u),"t3",19);case 19:c=e.t3,e.next=24;break;case 22:return e.delegateYield(this.getInsertion(u),"t4",23);case 23:c=e.t4;case 24:if(null!=c){e.next=28;break}o.listenersById[a]=s,e.next=37;break;case 28:l=0;case 29:if(!(l<s.length)){e.next=37;break}if(d=s[l],f=d.op,0!=--d.missing){e.next=34;break}return e.delegateYield(o.tryExecute.call(this,f),"t5",34);case 34:l++,e.next=29;break;case 37:e.next=13;break;case 39:case"end":return e.stop()}},e,this)}))}}},{key:"tryExecute",value:regeneratorRuntime.mark(function t(r){var n,i,a,s;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(this.store.addToDebug("yiel
e.abrupt("return",null!=r&&r.id[0]===t[0]&&t[1]<r.id[1]+r.len&&r.gc);case 3:case"end":return e.stop()}},e,this)})},{key:"getDeleteSet",value:regeneratorRuntime.mark(function e(){var t;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return t={},e.delegateYield(this.ds.iterate(this,null,null,regeneratorRuntime.mark(function e(r){var n,i,a,s,o;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:n=r.id[0],i=r.id[1],a=r.len,s=r.gc,o=t[n],void 0===o&&(o=[],t[n]=o),o.push([i,a,s]);case 7:case"end":return e.stop()}},e,this)})),"t0",2);case 2:return e.abrupt("return",t);case 3:case"end":return e.stop()}},e,this)})},{key:"isDeleted",value:regeneratorRuntime.mark(function e(t){var r;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this.ds.findWithUpperBound(t),"t0",1);case 1:return r=e.t0,e.abrupt("return",null!=r&&r.id[0]===t[0]&&t[1]<r.id[1]+r.len);case 3:case"end":return e.stop()}},e,this)})},{key:"setOperation",value:regeneratorRuntime.mark(function e(t){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this.os.put(t),"t0",1);case 1:return e.abrupt("return",t);case 2:case"end":return e.stop()}},e,this)})},{key:"addOperation",value:regeneratorRuntime.mark(function e(t){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this.os.put(t),"t0",1);case 1:this.store.forwardAppliedOperations&&"string"!=typeof t.id[1]&&this.store.y.connector.broadcastOps([t]);case 2:case"end":return e.stop()}},e,this)})},{key:"tryCombineWithLeft",value:regeneratorRuntime.mark(function t(r){var n;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:if(null==r||null==r.left||null==r.content||r.left[0]!==r.id[0]||!e.utils.compareIds(r.left,r.origin)){t.next=9;break}return t.delegateYield(this.getInsertion(r.left),"t0",2);case 2:if(n=t.t0,null==n.content||n.id[1]+n.content.length!==r.id[1]||1!==n.originOf.length||n.gc||n.deleted||r.gc||r.deleted){t.next=9;break}return null!=r.originOf?n.originOf=r.originOf:delete n.originOf,n.content=n.content.concat(r.content),n.right=r.right,t.delegateYield(this.os.delete(r.id),"t1",8);case 8:return t.delegateYield(this.setOperation(n),"t2",9);case 9:case"end":return t.stop()}},t,this)})},{key:"getInsertion",value:regeneratorRuntime.mark(function e(t){var r,n;return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this.os.findWithUpperBound(t),"t0",1);case 1:if(null!=(r=e.t0)){e.next=6;break}return e.abrupt("return",null);case 6:if(n=null!=r.content?r.content.length:1,!(t[0]===r.id[0]&&t[1]<r.id[1]+n)){e.next=11;break}return e.abrupt("return",r);case 11:return e.abrupt("return",null);case 12:case"end":return e.stop()}},e,this)})},{key:"getInsertionCleanStartEnd",value:regeneratorRuntime.mark(function e(t){return regeneratorRuntime.wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.delegateYield(this.getInsertionCleanStart(t),"t0",1);case 1:return e.delegateYield(this.getInsertionCleanEnd(t),"t1",2);case 2:return e.abrupt("return",e.t1);case 3:case"end":return e.stop()}},e,this)})},{key:"getInsertionCleanStart",value:regeneratorRuntime.mark(function t(r){var n,i,a;return regeneratorRuntime.wrap(function(t){for(;;)switch(t.prev=t.next){case 0:return t.delegateYield(this.getInsertion(r),"t0",1);case 1:if(null==(n=t.t0)){t.next=21;break}if(n.id[1]!==r[1]){t.next=7;break}return t.abrupt("return",n);case 7:return i=e.utils.copyObject(n),n.content=i.content.splice(r[1]-n.id[1]),n.id=r,a=e.utils.getLastId(i),n.origin=a,i.originOf=[n.id],i.right=n.id,n.left=a,t.delegateYield(this.setOperation(i),"t1",16);case 16:return t.delegateYield(this.setOperation(n),"t2",17);case 17:return i.gc&&this.store.queueGarbageCollector(n.id),t.abrupt("return",n);case 19:t.next=22;break;case 21:return t.abrupt("return",null);case 22:case"end":return t.stop()}},t,this)})},{key:"getInsertionCleanEnd",value:regeneratorRuntime.mark(function t(r){var n,i,a;return
2016-11-09 14:26:32 +01:00
//# sourceMappingURL=y.js.map