yjs/y.js.map

1 line
122 KiB
Plaintext

{"version":3,"sources":["y.js","Struct.js","Connectors/Test.js","OperationStores/Memory.js","runtime.js","Connector.js","OperationStore.js","Connectors/WebRTC.js","OperationStores/IndexedDB.js","OperationStores/RedBlackTree.js","Types/List.js","Types/Map.js"],"names":["_inherits","subClass","superClass","TypeError","prototype","Object","create","constructor","value","enumerable","writable","configurable","__proto__","_classCallCheck","instance","Constructor","compareIds","id1","id2","_flushOne","bufs","i","globalRoom","buffers","length","push","userId","getRandom","m","shift","user","users","receiveMessage","copyObject","o","c","key","_createClass","defineProperties","target","props","descriptor","defineProperty","protoProps","staticProps","global","wrap","innerFn","outerFn","self","tryLocsList","generator","Generator","_invoke","makeInvokeMethod","Context","tryCatch","fn","obj","arg","type","call","err","GeneratorFunction","GeneratorFunctionPrototype","defineIteratorMethods","forEach","method","this","AwaitArgument","AsyncIterator","invoke","result","Promise","resolve","then","invokeNext","invokeThrow","unwrapped","enqueue","enqueueResult","previousPromise","invokeReturn","process","domain","bind","context","state","GenStateSuspendedStart","GenStateExecuting","Error","GenStateCompleted","doneResult","delegate","iterator","undefined","returnMethod","record","info","done","GenStateSuspendedYield","resultName","next","nextLoc","sent","dispatchException","abrupt","ContinueSentinel","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","reset","values","iterable","iteratorMethod","iteratorSymbol","isNaN","hasOwn","hasOwnProperty","Symbol","inModule","module","runtime","regeneratorRuntime","exports","Gp","displayName","isGeneratorFunction","genFun","ctor","name","mark","awrap","async","iter","toString","keys","object","reverse","pop","prev","tempName","tempIndex","stop","rootEntry","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","catch","thrown","delegateYield","window","callee$0$0","context$1$0","Y","opts","db","connector","requestTransaction","callee$2$0","context$3$0","addOperation","id","struct","map","transact","destroy","disconnect","removeDatabase","AbstractConnector","y","role","connections","userEventListeners","whenSyncedListeners","currentSyncTarget","syncingClients","forwardToSyncingClients","debug","setUserId","onUserEvent","f","userLeft","findNextSyncTarget","_iterator","_isArray","Array","isArray","_i","_ref","action","userJoined","isSynced","_iterator2","_isArray2","_i2","_ref2","whenSynced","syncUser","uid","conn","t0","t1","getStateVector","t3","t2","t4","stateVector","send","_iterator3","_isArray3","_i3","_ref3","sender","_this","console","log","JSON","stringify","callee$3$0","ops","sv","context$4$0","getOperations","os","setTimeout","filter","cli","syncingClientDuration","apply","broadcast","_iterator4","_isArray4","_i4","_ref4","client","parseMessageFromXml","parseArray","_x","_again","_function","node","_iterator5","_isArray5","_i5","_ref5","n","children","getAttribute","parseObject","json","attrName","attrs","int","parseInt","encodeMessageToXml","msg","encodeObject","encodeArray","setAttribute","array","_iterator6","_isArray6","_i6","_ref6","e","xmlns","AbstractTransaction","store","getType","op","context$2$0","getOperation","Create","getState","clock","setState","setOperation","operationAdded","AbstractOperationStore","parentListeners","parentListenersRequestPending","parentListenersActivated","listenersById","listenersByIdExecuteNow","listenersByIdRequestPending","required","Struct","requiredOps","whenOperationsExist","ids","listener","missing","_id","sid","l","exeNow","ls","execute","parse","t6","t5","t7","t8","listeners","parent","al","activatedOperations","parentId","notifyObservers","removeParentListener","g","addParentListener","Operation","encode","Insert","left","right","start","end","origin","parentSub","opContent","getDistanceToOrigin","d","distanceToOrigin","startId","oOriginDistance","t9","t10","t11","t12","t14","t13","t17","t16","t18","List","ref","pos","res","operation","content","insert","contents","Map","get","set","oid","_model","removeUser","addUser","uname","u","userIdCounter","Test","_AbstractConnector","options","message","flushAll","flushOne","WebRTC","_AbstractConnector2","room","url","swr","SimpleWebRTC","once","joinRoom","webrtc","peers","on","peer","room_","payload","success","getPeers","sendDirectly","sendDirectlyToAll","IndexedDB","Transaction","_AbstractTransaction","transaction","objectStore","buffer","put","removeOperation","cursorResult","cursor","openCursor","getStateSet","ss","_iterator7","_isArray7","_i7","_ref7","startSS","endSV","_iterator8","_isArray8","_i8","_ref8","endState","startPos","endPos","range","IDBKeyRange","bound","OperationStore","_AbstractOperationStore","handleTransactions","t","request","IDBRequest","IDBCursor","onsuccess","tGen","onerror","transactionQueue","queue","onRequest","IDBOpenDBRequest","event","onupgradeneeded","createObjectStore","keyPath","namespace","idbVersion","transactionGen","cont","indexedDB","open","makeGen","close","deleteDatabase","Memory","_AbstractTransaction2","_iterator9","_isArray9","_i9","_ref9","makeOperationReady","_AbstractOperationStore2","gen","N","val","color","_left","_right","_parent","isRed","isBlack","redden","blacken","rotateLeft","tree","newParent","newRight","root","rotateRight","newLeft","getUncle","RBTree","find","add","v","p","fixInsert","uncle","grandparent","YList","model","args$3$0","arguments","YMap"],"mappings":"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","file":"y.js","sourcesContent":["/* @flow */\n\nconst GeneratorFunction = (function*(){}).constructor;\n\nclass Y { //eslint-disable-line no-unused-vars\n constructor (opts) {\n this.db = new Y[opts.db.name](this, opts.db);\n this.connector = new Y[opts.connector.name](this, opts.connector);\n this.db.requestTransaction(function*(){\n // create initial Map type\n yield* this.addOperation({\n id: [\"_\", 0],\n struct: \"Map\",\n map: {}\n });\n });\n }\n transact (generator) {\n if (generator.constructor !== GeneratorFunction) {\n throw new Error(\"y.transact requires a Generator function! E.g. function*(){/*..*/}\");\n }\n this.db.requestTransaction(generator);\n }\n destroy () {\n this.connector.disconnect();\n this.db.removeDatabase();\n this.connector = null;\n this.db = null;\n this.transact = function(){\n throw new Error(\"Remember?, you destroyed this type ;)\");\n };\n }\n}\n","/* @flow */\n\n// Op is anything that we could get from the OperationStore.\ntype Op = Object;\ntype Id = [string, number];\n\ntype List = {\n id: Id,\n start: Insert,\n end: Insert\n};\n\ntype Insert = {\n id: Id,\n left: Insert,\n right: Insert,\n origin: Insert,\n parent: List,\n content: any\n};\n\nfunction compareIds(id1, id2) {\n\n if (id1 == null || id2 == null) {\n if (id1 == null && id2 == null) {\n return true;\n }\n return false;\n }\n if (id1[0] === id2[0] && id1[1] === id2[1]) {\n return true;\n } else {\n return false;\n }\n}\n\nvar Struct = {\n Operation: { //eslint-disable-line no-unused-vars\n create: function*(op : Op) : Struct.Operation {\n var user = this.store.y.connector.userId;\n var state = yield* this.getState(user);\n op.id = [user, state.clock];\n if ((yield* this.addOperation(op)) === false) {\n throw new Error(\"This is highly unexpected :(\");\n }\n this.store.y.connector.broadcast({\n type: \"update\",\n ops: [Struct[op.struct].encode(op)]\n });\n return op;\n }\n },\n Insert: {\n /*{\n content: any,\n left: Id,\n right: Id,\n parent: Id,\n parentSub: string (optional)\n }\n */\n create: function*( op: Op ) : Insert {\n if ( op.left === undefined\n || op.right === undefined\n || op.parent === undefined ) {\n throw new Error(\"You must define left, right, and parent!\");\n }\n op.origin = op.left;\n op.struct = \"Insert\";\n yield* Struct.Operation.create.call(this, op);\n\n if (op.left != null) {\n var left = yield* this.getOperation(op.left);\n left.right = op.id;\n yield* this.setOperation(left);\n }\n if (op.right != null) {\n var right = yield* this.getOperation(op.right);\n right.left = op.id;\n yield* this.setOperation(right);\n }\n var parent = yield* this.getOperation(op.parent);\n if (op.parentSub != null){\n if (compareIds(parent.map[op.parentSub], op.right)) {\n parent.map[op.parentSub] = op.id;\n yield* this.setOperation(parent);\n }\n } else {\n var start = compareIds(parent.start, op.right);\n var end = compareIds(parent.end, op.left);\n if (start || end) {\n if (start) {\n parent.start = op.id;\n }\n if (end) {\n parent.end = op.id;\n }\n yield* this.setOperation(parent);\n }\n }\n return op;\n },\n encode: function(op){\n /*var e = {\n id: op.id,\n left: op.left,\n right: op.right,\n origin: op.origin,\n parent: op.parent,\n content: op.content,\n struct: \"Insert\"\n };\n if (op.parentSub != null){\n e.parentSub = op.parentSub;\n }\n return e;*/\n return op;\n },\n requiredOps: function(op){\n var ids = [];\n if(op.left != null){\n ids.push(op.left);\n }\n if(op.right != null){\n ids.push(op.right);\n }\n if(op.right == null && op.left == null) {\n ids.push(op.parent);\n }\n if (op.opContent != null) {\n ids.push(op.opContent);\n }\n return ids;\n },\n getDistanceToOrigin: function *(op){\n if (op.left == null) {\n return 0;\n } else {\n var d = 0;\n var o = yield* this.getOperation(op.left);\n while (!compareIds(op.origin, (o ? o.id : null))) {\n d++;\n if (o.left == null) {\n break;\n } else {\n o = yield* this.getOperation(o.left);\n }\n }\n return d;\n }\n },\n /*\n # $this has to find a unique position between origin and the next known character\n # case 1: $origin equals $o.origin: the $creator parameter decides if left or right\n # let $OL= [o1,o2,o3,o4], whereby $this is to be inserted between o1 and o4\n # o2,o3 and o4 origin is 1 (the position of o2)\n # there is the case that $this.creator < o2.creator, but o3.creator < $this.creator\n # then o2 knows o3. Since on another client $OL could be [o1,o3,o4] the problem is complex\n # therefore $this would be always to the right of o3\n # case 2: $origin < $o.origin\n # if current $this insert_position > $o origin: $this ins\n # else $insert_position will not change\n # (maybe we encounter case 1 later, then this will be to the right of $o)\n # case 3: $origin > $o.origin\n # $this insert_position is to the left of $o (forever!)\n */\n execute: function*(op){\n var i; // loop counter\n var distanceToOrigin = i = yield* Struct.Insert.getDistanceToOrigin.call(this, op); // most cases: 0 (starts from 0)\n var o;\n var parent;\n var start;\n\n // find o. o is the first conflicting operation\n if (op.left != null) {\n o = yield* this.getOperation(op.left);\n o = (o.right == null) ? null : yield* this.getOperation(o.right);\n } else { // left == null\n parent = yield* this.getOperation(op.parent);\n let startId = op.parentSub ? parent.map[op.parentSub] : parent.start;\n start = startId == null ? null : yield* this.getOperation(startId);\n o = start;\n }\n\n // handle conflicts\n while (true) {\n if (o != null && !compareIds(o.id, op.right)){\n var oOriginDistance = yield* Struct.Insert.getDistanceToOrigin.call(this, o);\n if (oOriginDistance === i) {\n // case 1\n if (o.id[0] < op.id[0]) {\n op.left = o.id;\n distanceToOrigin = i + 1;\n }\n } else if (oOriginDistance < i) {\n // case 2\n if (i - distanceToOrigin <= oOriginDistance) {\n op.left = o.id;\n distanceToOrigin = i + 1;\n }\n } else {\n break;\n }\n i++;\n o = o.right ? yield* this.getOperation(o.right) : null;\n } else {\n break;\n }\n }\n\n // reconnect..\n var left = null;\n var right = null;\n parent = parent || (yield* this.getOperation(op.parent));\n\n // NOTE: You you have to call addOperation before you set any other operation!\n\n // reconnect left and set right of op\n if (op.left != null) {\n left = yield* this.getOperation(op.left);\n op.right = left.right;\n if ((yield* this.addOperation(op)) === false) { // add here\n return;\n }\n left.right = op.id;\n yield* this.setOperation(left);\n } else {\n op.right = op.parentSub ? (parent.map[op.parentSub] || null) : parent.start;\n if ((yield* this.addOperation(op)) === false) { // or here\n return;\n }\n }\n // reconnect right\n if (op.right != null) {\n right = yield* this.getOperation(op.right);\n right.left = op.id;\n yield* this.setOperation(right);\n }\n\n // notify parent\n if (op.parentSub != null) {\n if (left == null) {\n parent.map[op.parentSub] = op.id;\n yield* this.setOperation(parent);\n }\n } else {\n if (right == null || left == null) {\n if (right == null) {\n parent.end = op.id;\n }\n if (left == null) {\n parent.start = op.id;\n }\n yield* this.setOperation(parent);\n }\n }\n }\n },\n List: {\n create: function*( op : Op){\n op.start = null;\n op.end = null;\n op.struct = \"List\";\n return yield* Struct.Operation.create.call(this, op);\n },\n encode: function(op){\n return {\n struct: \"List\",\n id: op.id,\n type: op.type\n };\n },\n requiredOps: function(){\n /*\n var ids = [];\n if (op.start != null) {\n ids.push(op.start);\n }\n if (op.end != null){\n ids.push(op.end);\n }\n return ids;\n */\n return [];\n },\n execute: function* (op) {\n op.start = null;\n op.end = null;\n if ((yield* this.addOperation(op)) === false) {\n return;\n }\n },\n ref: function* (op : Op, pos : number) : Insert {\n if (op.start == null) {\n return null;\n }\n var o = yield* this.getOperation(op.start);\n while ( pos !== 0 && o.right != null) {\n o = (yield* this.getOperation(o.right));\n pos--;\n }\n return o;\n },\n map: function* (o : Op, f : Function) : Array<any> {\n o = o.start;\n var res = [];\n while ( o != null) {\n var operation = yield* this.getOperation(o);\n res.push(f(operation.content));\n o = operation.right;\n }\n return res;\n },\n insert: function* (op, pos : number, contents : Array<any>) {\n var ref = yield* Struct.List.ref.call(this, op, pos);\n var right = ref != null ? ref.id : null;\n var left = ref != null ? ref.left : null;\n for (var key in contents) {\n var insert = {\n left: left,\n right: right,\n content: contents[key],\n parent: op.id\n };\n left = (yield* Struct.Insert.create.call(this, insert)).id;\n }\n }\n },\n Map: {\n /*\n {\n // empty\n }\n */\n create: function*( op : Op ){\n op.map = {};\n op.struct = \"Map\";\n return yield* Struct.Operation.create.call(this, op);\n },\n encode: function(op){\n return {\n struct: \"Map\",\n type: op.type,\n id: op.id\n };\n },\n requiredOps: function(){\n /*\n var ids = [];\n for (var end in op.map) {\n ids.push(op.map[end]);\n }\n return ids;\n */\n return [];\n },\n execute: function* (op) {\n if ((yield* this.addOperation(op)) === false) {\n return;\n }\n },\n get: function* (op, name) {\n var res = yield* this.getOperation(op.map[name]);\n return (res == null) ? void 0 : (res.opContent == null\n ? res.content : yield* this.getType(res.opContent));\n },\n set: function* (op, name, value) {\n var insert = {\n left: null,\n right: op.map[name] || null,\n parent: op.id,\n parentSub: name\n };\n var oid;\n if ( value != null && value._model != null\n && (oid = value._model.id) != null && oid.length === 2) {\n insert.opContent = oid;\n } else {\n insert.content = value;\n }\n yield* Struct.Insert.create.call(this, insert);\n }\n }\n};\n\nY.Struct = Struct;\n","var globalRoom = {\n users: {},\n buffers: {},\n removeUser: function(user : AbstractConnector){\n\n for (var i in this.users) {\n this.users[i].userLeft(user);\n }\n delete this.users[user];\n delete this.buffers[user];\n },\n addUser: function(connector){\n this.users[connector.userId] = connector;\n this.buffers[connector.userId] = [];\n for (var uname in this.users) {\n if (uname !== connector.userId) {\n var u = this.users[uname];\n u.userJoined(connector.userId, \"master\");\n connector.userJoined(u.userId, \"master\");\n }\n }\n }\n};\nfunction flushOne(){\n var bufs = [];\n for (var i in globalRoom.buffers) {\n if (globalRoom.buffers[i].length > 0) {\n bufs.push(i);\n }\n }\n if (bufs.length > 0) {\n var userId = getRandom(bufs);\n var m = globalRoom.buffers[userId].shift();\n var user = globalRoom.users[userId];\n user.receiveMessage(m[0], m[1]);\n return true;\n } else {\n return false;\n }\n}\n// setInterval(flushOne, 10);\n\nvar userIdCounter = 0;\n\nclass Test extends AbstractConnector {\n constructor (y, options) {\n if(options === undefined){\n throw new Error(\"Options must not be undefined!\");\n }\n options.role = \"master\";\n options.forwardToSyncingClients = false;\n super(y, options);\n this.setUserId((userIdCounter++) + \"\");\n globalRoom.addUser(this);\n this.globalRoom = globalRoom;\n }\n send (userId, message) {\n globalRoom.buffers[userId].push(JSON.parse(JSON.stringify([this.userId, message])));\n }\n broadcast (message) {\n for (var key in globalRoom.buffers) {\n globalRoom.buffers[key].push(JSON.parse(JSON.stringify([this.userId, message])));\n }\n }\n disconnect () {\n globalRoom.removeUser(this.userId);\n }\n flushAll () {\n var c = true;\n while (c) {\n c = flushOne();\n }\n }\n flushOne() {\n flushOne();\n }\n}\n\nY.Test = Test;\n","\ntype State = {\n user: string,\n clock: number\n};\n\n\nfunction copyObject (o) {\n var c = {};\n for (var key in o) {\n c[key] = o[key];\n }\n return c;\n}\n\ntype StateVector = Array<State>;\ntype OperationSet = Object; // os[Id] = op\ntype StateSet = Object;\n\nY.Memory = (function(){ //eslint-disable-line no-unused-vars\n class Transaction extends AbstractTransaction { //eslint-disable-line\n ss: StateSet;\n os: OperationSet;\n store: OperationStore;\n\n constructor (store : OperationStore) {\n super(store);\n this.ss = store.ss;\n this.os = store.os;\n }\n *setOperation (op) {\n if (op.struct === \"Insert\" && op.right === undefined) {\n throw new Error(\"here!\");\n }\n this.os[JSON.stringify(op.id)] = op;\n return op;\n }\n *getOperation (id) {\n var op = this.os[JSON.stringify(id)];\n if (op == null) {\n throw new Error(\"Op does not exist..\");\n } else {\n return op;\n }\n }\n *removeOperation (id) {\n delete this.os[JSON.stringify(id)];\n }\n *setState (state : State) : State {\n this.ss[state.user] = state.clock;\n }\n *getState (user : string) : State {\n var clock = this.ss[user];\n if (clock == null){\n clock = 0;\n }\n return {\n user: user,\n clock: clock\n };\n }\n *getStateVector () : StateVector {\n var stateVector = [];\n\n for (var user in this.ss) {\n var clock = this.ss[user];\n stateVector.push({\n user: user,\n clock: clock\n });\n }\n return stateVector;\n }\n *getStateSet () : StateSet {\n return this.ss;\n }\n *getOperations (startSS : StateSet) {\n if (startSS == null){\n startSS = {};\n }\n var ops = [];\n\n var endSV : StateVector = yield* this.getStateVector();\n for (var endState of endSV) {\n var user = endState.user;\n if (user === \"_\") {\n continue;\n }\n var startPos = startSS[user] || 0;\n var endPos = endState.clock;\n\n for (var clock = startPos; clock <= endPos; clock++) {\n var op = this.os[JSON.stringify([user, clock])];\n if (op != null) {\n op = Struct[op.struct].encode(op);\n ops.push(yield* this.makeOperationReady.call(this, startSS, op));\n }\n }\n }\n return ops;\n }\n *makeOperationReady (ss, op) {\n // instead of ss, you could use currSS (a ss that increments when you add an operation)\n var clock;\n var o = op;\n while (o.right != null){\n // while unknown, go to the right\n o = yield* this.getOperation(o.right);\n clock = ss[o.id[0]];\n if (clock != null && o.id[1] < clock) {\n break;\n }\n }\n op = copyObject(op);\n op.right = (o == null) ? null : o.id;\n return op;\n }\n }\n class OperationStore extends AbstractOperationStore { //eslint-disable-line no-undef\n constructor (y) {\n super(y);\n this.os = {};\n this.ss = {};\n }\n requestTransaction (makeGen : Function) {\n var t = new Transaction(this);\n var gen = makeGen.call(t, new Y.Map.Create([\"_\", 0]));\n var res = gen.next();\n while(!res.done){\n if (res.value === \"transaction\") {\n res = gen.next(t);\n } else {\n throw new Error(\"You may not yield this type. (Maybe you meant to use 'yield*'?)\");\n }\n }\n }\n *removeDatabase () {\n delete this.os;\n }\n }\n return OperationStore;\n})();\n","/**\n * Copyright (c) 2014, Facebook, Inc.\n * All rights reserved.\n *\n * This source code is licensed under the BSD-style license found in the\n * https://raw.github.com/facebook/regenerator/master/LICENSE file. An\n * additional grant of patent rights can be found in the PATENTS file in\n * the same directory.\n */\n\n!(function(global) {\n \"use strict\";\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var undefined; // More compressible than void 0.\n var iteratorSymbol =\n typeof Symbol === \"function\" && Symbol.iterator || \"@@iterator\";\n\n var inModule = typeof module === \"object\";\n var runtime = global.regeneratorRuntime;\n if (runtime) {\n if (inModule) {\n // If regeneratorRuntime is defined globally and we're in a module,\n // make the exports object identical to regeneratorRuntime.\n module.exports = runtime;\n }\n // Don't bother evaluating the rest of this file if the runtime was\n // already defined globally.\n return;\n }\n\n // Define the runtime globally (as expected by generated code) as either\n // module.exports (if we're in a module) or a new, empty object.\n runtime = global.regeneratorRuntime = inModule ? module.exports : {};\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided, then outerFn.prototype instanceof Generator.\n var generator = Object.create((outerFn || Generator).prototype);\n\n generator._invoke = makeInvokeMethod(\n innerFn, self || null,\n new Context(tryLocsList || [])\n );\n\n return generator;\n }\n runtime.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype;\n GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;\n GeneratorFunctionPrototype.constructor = GeneratorFunction;\n GeneratorFunction.displayName = \"GeneratorFunction\";\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n prototype[method] = function(arg) {\n return this._invoke(method, arg);\n };\n });\n }\n\n runtime.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n runtime.mark = function(genFun) {\n genFun.__proto__ = GeneratorFunctionPrototype;\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `value instanceof AwaitArgument` to determine if the yielded value is\n // meant to be awaited. Some may consider the name of this method too\n // cutesy, but they are curmudgeons.\n runtime.awrap = function(arg) {\n return new AwaitArgument(arg);\n };\n\n function AwaitArgument(arg) {\n this.arg = arg;\n }\n\n function AsyncIterator(generator) {\n // This invoke function is written in a style that assumes some\n // calling function (or Promise) will handle exceptions.\n function invoke(method, arg) {\n var result = generator[method](arg);\n var value = result.value;\n return value instanceof AwaitArgument\n ? Promise.resolve(value.arg).then(invokeNext, invokeThrow)\n : Promise.resolve(value).then(function(unwrapped) {\n result.value = unwrapped;\n return result;\n }, invokeThrow);\n }\n\n if (typeof process === \"object\" && process.domain) {\n invoke = process.domain.bind(invoke);\n }\n\n var invokeNext = invoke.bind(generator, \"next\");\n var invokeThrow = invoke.bind(generator, \"throw\");\n var invokeReturn = invoke.bind(generator, \"return\");\n var previousPromise;\n\n function enqueue(method, arg) {\n var enqueueResult =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(function() {\n return invoke(method, arg);\n }) : new Promise(function(resolve) {\n resolve(invoke(method, arg));\n });\n\n // Avoid propagating enqueueResult failures to Promises returned by\n // later invocations of the iterator, and call generator.return() to\n // allow the generator a chance to clean up.\n previousPromise = enqueueResult[\"catch\"](invokeReturn);\n\n return enqueueResult;\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n runtime.async = function(innerFn, outerFn, self, tryLocsList) {\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList)\n );\n\n return runtime.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n if (method === \"return\" ||\n (method === \"throw\" && delegate.iterator[method] === undefined)) {\n // A return or throw (when the delegate iterator has no throw\n // method) always terminates the yield* loop.\n context.delegate = null;\n\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n var returnMethod = delegate.iterator[\"return\"];\n if (returnMethod) {\n var record = tryCatch(returnMethod, delegate.iterator, arg);\n if (record.type === \"throw\") {\n // If the return method threw an exception, let that\n // exception prevail over the original return or throw.\n method = \"throw\";\n arg = record.arg;\n continue;\n }\n }\n\n if (method === \"return\") {\n // Continue with the outer return, now that the delegate\n // iterator has been terminated.\n continue;\n }\n }\n\n var record = tryCatch(\n delegate.iterator[method],\n delegate.iterator,\n arg\n );\n\n if (record.type === \"throw\") {\n context.delegate = null;\n\n // Like returning generator.throw(uncaught), but without the\n // overhead of an extra function call.\n method = \"throw\";\n arg = record.arg;\n continue;\n }\n\n // Delegate generator ran and handled its own exceptions so\n // regardless of what the method was, we continue as if it is\n // \"next\" with an undefined arg.\n method = \"next\";\n arg = undefined;\n\n var info = record.arg;\n if (info.done) {\n context[delegate.resultName] = info.value;\n context.next = delegate.nextLoc;\n } else {\n state = GenStateSuspendedYield;\n return info;\n }\n\n context.delegate = null;\n }\n\n if (method === \"next\") {\n if (state === GenStateSuspendedYield) {\n context.sent = arg;\n } else {\n delete context.sent;\n }\n\n } else if (method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw arg;\n }\n\n if (context.dispatchException(arg)) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n method = \"next\";\n arg = undefined;\n }\n\n } else if (method === \"return\") {\n context.abrupt(\"return\", arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n var info = {\n value: record.arg,\n done: context.done\n };\n\n if (record.arg === ContinueSentinel) {\n if (context.delegate && method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n arg = undefined;\n }\n } else {\n return info;\n }\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(arg) call above.\n method = \"throw\";\n arg = record.arg;\n }\n }\n };\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n Gp[iteratorSymbol] = function() {\n return this;\n };\n\n Gp.toString = function() {\n return \"[object Generator]\";\n };\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset();\n }\n\n runtime.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n runtime.values = values;\n\n function doneResult() {\n return { value: undefined, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function() {\n this.prev = 0;\n this.next = 0;\n this.sent = undefined;\n this.done = false;\n this.delegate = null;\n\n this.tryEntries.forEach(resetTryEntry);\n\n // Pre-initialize at least 20 temporary variables to enable hidden\n // class optimizations for simple generators.\n for (var tempIndex = 0, tempName;\n hasOwn.call(this, tempName = \"t\" + tempIndex) || tempIndex < 20;\n ++tempIndex) {\n this[tempName] = null;\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n return !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.next = finallyEntry.finallyLoc;\n } else {\n this.complete(record);\n }\n\n return ContinueSentinel;\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = record.arg;\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n return ContinueSentinel;\n }\n };\n})(\n // Among the various tricks for obtaining a reference to the global\n // object, this seems to be the most reliable technique that does not\n // use indirect eval (which violates Content Security Policy).\n typeof global === \"object\" ? global :\n typeof window === \"object\" ? window :\n typeof self === \"object\" ? self : this\n);\n","\nclass AbstractConnector { //eslint-disable-line no-unused-vars\n /*\n opts\n .role : String Role of this client (\"master\" or \"slave\")\n .userId : String that uniquely defines the user.\n */\n constructor (y, opts) {\n this.y = y;\n if (opts == null){\n opts = {};\n }\n if (opts.role == null || opts.role === \"master\") {\n this.role = \"master\";\n } else if (opts.role === \"slave\") {\n this.role = \"slave\";\n } else {\n throw new Error(\"Role must be either 'master' or 'slave'!\");\n }\n this.role = opts.role;\n this.connections = {};\n this.userEventListeners = [];\n this.whenSyncedListeners = [];\n this.currentSyncTarget = null;\n this.syncingClients = [];\n this.forwardToSyncingClients = (opts.forwardToSyncingClients === false) ? false : true;\n this.debug = opts.debug ? true : false;\n }\n setUserId (userId) {\n this.userId = userId;\n this.y.db.setUserId(userId);\n }\n onUserEvent (f) {\n this.userEventListeners.push(f);\n }\n userLeft (user : string) {\n delete this.connections[user];\n if (user === this.currentSyncTarget){\n this.currentSyncTarget = null;\n this.findNextSyncTarget();\n }\n for (var f of this.userEventListeners){\n f({\n action: \"userLeft\",\n user: user\n });\n }\n }\n userJoined (user, role) {\n if(role == null){\n throw new Error(\"You must specify the role of the joined user!\");\n }\n if (this.connections[user] != null) {\n throw new Error(\"This user already joined!\");\n }\n this.connections[user] = {\n isSynced: false,\n role: role\n };\n for (var f of this.userEventListeners) {\n f({\n action: \"userJoined\",\n user: user,\n role: role\n });\n }\n if (this.currentSyncTarget == null) {\n this.findNextSyncTarget();\n }\n }\n // Execute a function _when_ we are connected.\n // If not connected, wait until connected\n whenSynced (f) {\n if (this.isSynced === true) {\n f();\n } else {\n this.whenSyncedListeners.push(f);\n }\n }\n // returns false, if there is no sync target\n // true otherwise\n findNextSyncTarget () {\n if (this.currentSyncTarget != null && this.connections[this.currentSyncTarget].isSynced === false) {\n throw new Error(\"The current sync has not finished!\");\n }\n\n var syncUser = null;\n for (var uid in this.connections) {\n syncUser = this.connections[uid];\n if (!syncUser.isSynced) {\n break;\n }\n }\n if (syncUser != null){\n var conn = this;\n this.y.db.requestTransaction(function*(){\n conn.currentSyncTarget = uid;\n conn.send(uid, {\n type: \"sync step 1\",\n stateVector: yield* this.getStateVector()\n });\n });\n }\n // set the state to synced!\n if (!this.isSynced) {\n this.isSynced = true;\n for (var f of this.whenSyncedListeners) {\n f();\n }\n this.whenSyncedListeners = null;\n }\n return false;\n }\n // You received a raw message, and you know that it is intended for to Yjs. Then call this function.\n receiveMessage (sender, m){\n if (this.debug) {\n console.log(`${sender} -> ${this.userId}: ${JSON.stringify(m)}`); //eslint-disable-line\n }\n if (m.type === \"sync step 1\") {\n // TODO: make transaction, stream the ops\n let conn = this;\n this.y.db.requestTransaction(function*(){\n var ops = yield* this.getOperations(m.stateVector);\n var sv = yield* this.getStateVector();\n conn.send(sender, {\n type: \"sync step 2\",\n os: ops,\n stateVector: sv\n });\n if (this.forwardToSyncingClients) {\n conn.syncingClients.push(sender);\n setTimeout(function(){\n conn.syncingClients = conn.syncingClients.filter(function(cli){\n return cli !== sender;\n });\n conn.send(sender, {\n type: \"sync done\"\n });\n }, conn.syncingClientDuration);\n }\n });\n } else if (m.type === \"sync step 2\") {\n this.y.db.apply(m.os);\n let conn = this;\n this.y.db.requestTransaction(function*(){\n var ops = yield* this.getOperations(m.stateVector);\n if (ops.length > 0) {\n conn.broadcast({\n type: \"update\",\n ops: ops\n });\n }\n });\n } else if (m.type === \"sync done\") {\n this.connections[sender].isSynced = true;\n this.findNextSyncTarget();\n } else if (m.type === \"update\") {\n if (this.forwardToSyncingClients) {\n for (var client of this.syncingClients) {\n this.send(client, m);\n }\n }\n this.y.db.apply(m.ops);\n }\n }\n // Currently, the HB encodes operations as JSON. For the moment I want to keep it\n // that way. Maybe we support encoding in the HB as XML in the future, but for now I don't want\n // too much overhead. Y is very likely to get changed a lot in the future\n //\n // Because we don't want to encode JSON as string (with character escaping, wich makes it pretty much unreadable)\n // we encode the JSON as XML.\n //\n // When the HB support encoding as XML, the format should look pretty much like this.\n //\n // does not support primitive values as array elements\n // expects an ltx (less than xml) object\n parseMessageFromXml (m) {\n function parseArray (node) {\n for (var n of node.children){\n if (n.getAttribute(\"isArray\") === \"true\") {\n return parseArray(n);\n } else {\n return parseObject(n);\n }\n }\n }\n function parseObject (node) {\n var json = {};\n for (var attrName in node.attrs) {\n var value = node.attrs[attrName];\n var int = parseInt(value);\n if (isNaN(int) || (\"\" + int) !== value){\n json[attrName] = value;\n } else {\n json[attrName] = int;\n }\n }\n for (var n in node.children){\n var name = n.name;\n if (n.getAttribute(\"isArray\") === \"true\") {\n json[name] = parseArray(n);\n } else {\n json[name] = parseObject(n);\n }\n }\n return json;\n }\n parseObject(m);\n }\n // encode message in xml\n // we use string because Strophe only accepts an \"xml-string\"..\n // So {a:4,b:{c:5}} will look like\n // <y a=\"4\">\n // <b c=\"5\"></b>\n // </y>\n // m - ltx element\n // json - Object\n encodeMessageToXml (msg, obj) {\n // attributes is optional\n function encodeObject (m, json) {\n for (var name in json) {\n var value = json[name];\n if (name == null) {\n // nop\n } else if (value.constructor === Object) {\n encodeObject(m.c(name), value);\n } else if (value.constructor === Array) {\n encodeArray(m.c(name), value);\n } else {\n m.setAttribute(name, value);\n }\n }\n }\n function encodeArray (m, array) {\n m.setAttribute(\"isArray\", \"true\");\n for (var e of array) {\n if (e.constructor === Object) {\n encodeObject(m.c(\"array-element\"), e);\n } else {\n encodeArray(m.c(\"array-element\"), e);\n }\n }\n }\n if (obj.constructor === Object) {\n encodeObject(msg.c(\"y\", { xmlns: \"http://y.ninja/connector-stanza\" }), obj);\n } else if (obj.constructor === Array) {\n encodeArray(msg.c(\"y\", { xmlns: \"http://y.ninja/connector-stanza\" }), obj);\n } else {\n throw new Error(\"I can't encode this json!\");\n }\n }\n}\n","/* @flow */\nclass AbstractTransaction { //eslint-disable-line no-unused-vars\n constructor (store : OperationStore) {\n this.store = store;\n }\n *getType (id) {\n var op = yield* this.getOperation(id);\n return new Y[op.type].Create(op);\n }\n // returns false if operation is not expected.\n *addOperation (op) {\n var state = yield* this.getState(op.id[0]);\n if (op.id[1] === state.clock){\n state.clock++;\n yield* this.setState(state);\n yield* this.setOperation(op);\n this.store.operationAdded(op);\n return true;\n } else if (op.id[1] < state.clock) {\n return false;\n } else {\n throw new Error(\"Operations must arrive in order!\");\n }\n }\n}\nY.AbstractTransaction = AbstractTransaction;\n\ntype Listener = {\n f : GeneratorFunction, // is called when all operations are available\n missing : number // number of operations that are missing\n}\n\ntype Id = [string, number];\n\nclass AbstractOperationStore { //eslint-disable-line no-unused-vars\n constructor (y) {\n this.y = y;\n this.parentListeners = {};\n this.parentListenersRequestPending = false;\n this.parentListenersActivated = {};\n // E.g. this.listenersById[id] : Array<Listener>\n this.listenersById = {};\n // Execute the next time a transaction is requested\n this.listenersByIdExecuteNow = [];\n // A transaction is requested\n this.listenersByIdRequestPending = false;\n /* To make things more clear, the following naming conventions:\n * ls : we put this.listenersById on ls\n * l : Array<Listener>\n * id : Id (can't use as property name)\n * sid : String (converted from id via JSON.stringify\n so we can use it as a property name)\n\n Always remember to first overwrite\n a property before you iterate over it!\n */\n }\n setUserId (userId) {\n this.userId = userId;\n }\n apply (ops) {\n for (var key in ops) {\n var o = ops[key];\n var required = Y.Struct[o.struct].requiredOps(o);\n this.whenOperationsExist(required, o);\n }\n }\n // op is executed as soon as every operation requested is available.\n // Note that Transaction can (and should) buffer requests.\n whenOperationsExist (ids : Array<Id>, op : Operation) {\n if (ids.length > 0) {\n let listener : Listener = {\n op: op,\n missing: ids.length\n };\n\n for (let key in ids) {\n let id = ids[key];\n let sid = JSON.stringify(id);\n let l = this.listenersById[sid];\n if (l == null){\n l = [];\n this.listenersById[sid] = l;\n }\n l.push(listener);\n }\n } else {\n this.listenersByIdExecuteNow.push({\n op: op\n });\n }\n\n if (this.listenersByIdRequestPending){\n return;\n }\n\n this.listenersByIdRequestPending = true;\n var store = this;\n\n this.requestTransaction(function*(){\n var exeNow = store.listenersByIdExecuteNow;\n store.listenersByIdExecuteNow = [];\n\n var ls = store.listenersById;\n store.listenersById = {};\n\n store.listenersByIdRequestPending = false;\n\n for (let key in exeNow) {\n let o = exeNow[key].op;\n yield* Struct[o.struct].execute.call(this, o);\n }\n\n for (var sid in ls){\n var l = ls[sid];\n var id = JSON.parse(sid);\n if ((yield* this.getOperation(id)) == null){\n store.listenersById[sid] = l;\n } else {\n for (let key in l) {\n let listener = l[key];\n let o = listener.op;\n if (--listener.missing === 0){\n yield* Struct[o.struct].execute.call(this, o);\n }\n }\n }\n }\n });\n }\n // called by a transaction when an operation is added\n operationAdded (op) {\n var sid = JSON.stringify(op.id);\n var l = this.listenersById[sid];\n delete this.listenersById[sid];\n\n // notify whenOperation listeners (by id)\n if (l != null) {\n for (var key in l){\n var listener = l[key];\n if (--listener.missing === 0){\n this.whenOperationsExist([], listener.op);\n }\n }\n }\n // notify parent listeners, if possible\n var listeners = this.parentListeners[op.parent];\n if ( this.parentListenersRequestPending\n || ( listeners == null )\n || ( listeners.length === 0 )) {\n return;\n }\n var al = this.parentListenersActivated[JSON.stringify(op.parent)];\n if ( al == null ){\n al = [];\n this.parentListenersActivated[JSON.stringify(op.parent)] = al;\n }\n al.push(op);\n\n this.parentListenersRequestPending = true;\n var store = this;\n this.requestTransaction(function*(){\n store.parentListenersRequestPending = false;\n var activatedOperations = store.parentListenersActivated;\n store.parentListenersActivated = {};\n for (var parentId in activatedOperations){\n var parent = yield* this.getOperation(parentId);\n Struct[parent.struct].notifyObservers(activatedOperations[parentId]);\n }\n });\n\n }\n removeParentListener (id, f) {\n var ls = this.parentListeners[id];\n if (ls != null) {\n this.parentListeners[id] = ls.filter(function(g){\n return (f !== g);\n });\n }\n }\n addParentListener (id, f) {\n var ls = this.parentListeners[JSON.stringify(id)];\n if (ls == null) {\n ls = [];\n this.parentListeners[JSON.stringify(id)] = ls;\n }\n ls.push(f);\n }\n}\nY.AbstractOperationStore = AbstractOperationStore;\n","\nclass WebRTC extends AbstractConnector {\n constructor (options) {\n if(options === undefined){\n throw new Error(\"Options must not be undefined!\");\n }\n super({\n role: \"slave\"\n });\n\n var room = options.room;\n\n // connect per default to our server\n if(options.url == null){\n options.url = \"https://yatta.ninja:8888\";\n }\n\n var swr = new SimpleWebRTC(options); //eslint-disable-line no-undef\n this.swr = swr;\n var self = this;\n\n swr.once(\"connectionReady\", function(userId){\n // SimpleWebRTC (swr) is initialized\n swr.joinRoom(room);\n\n swr.once(\"joinedRoom\", function(){\n self.setUserId(userId);\n var i;\n // notify the connector class about all the users that already\n // joined the session\n for(i in self.swr.webrtc.peers){\n self.userJoined(self.swr.webrtc.peers[i].id, \"master\");\n }\n swr.on(\"channelMessage\", function(peer, room_, message){\n // The client received a message\n // Check if the connector is already initialized,\n // only then forward the message to the connector class\n if(message.type != null ){\n self.receiveMessage(peer.id, message.payload);\n }\n });\n });\n\n swr.on(\"createdPeer\", function(peer){\n // a new peer/client joined the session.\n // Notify the connector class, if the connector\n // is already initialized\n self.userJoined(peer.id, \"master\");\n });\n\n swr.on(\"peerStreamRemoved\", function(peer){\n // a client left the session.\n // Notify the connector class, if the connector\n // is already initialized\n self.userLeft(peer.id);\n });\n });\n }\n send (uid, message) {\n var self = this;\n // we have to make sure that the message is sent under all circumstances\n var send = function(){\n // check if the clients still exists\n var peer = self.swr.webrtc.getPeers(uid)[0];\n var success;\n if(peer){\n // success is true, if the message is successfully sent\n success = peer.sendDirectly(\"simplewebrtc\", \"yjs\", message);\n }\n if(!success){\n // resend the message if it didn't work\n setTimeout(send, 500);\n }\n };\n // try to send the message\n send();\n }\n broadcast (message) {\n this.swr.sendDirectlyToAll(\"simplewebrtc\", \"yjs\", message);\n }\n}\n\nY.WebRTC = WebRTC;\n","\ntype State = {\n user: string,\n clock: number\n};\n\ntype StateVector = Array<State>;\n\ntype StateSet = Object;\n\ntype IDBTransaction = Function;\ntype IDBObjectStore = Function;\ntype IDBRequest = Function;\ntype IDBCursor = Function;\ntype IDBKeyRange = Function;\n\ntype IDBOpenDBRequest = Function;\n\ndeclare var indexedDB : Object;\n\nY.IndexedDB = (function(){ //eslint-disable-line no-unused-vars\n class Transaction extends AbstractTransaction { //eslint-disable-line\n transaction: IDBTransaction;\n sv: IDBObjectStore;\n os: IDBObjectStore;\n store: OperationStore;\n\n constructor (store : OperationStore) {\n super(store);\n this.transaction = store.db.transaction([\"OperationStore\", \"StateVector\"], \"readwrite\");\n this.sv = this.transaction.objectStore(\"StateVector\");\n this.os = this.transaction.objectStore(\"OperationStore\");\n this.buffer = {};\n }\n *setOperation (op) {\n yield this.os.put(op);\n this.buffer[JSON.stringify(op.id)] = op;\n return op;\n }\n *getOperation (id) {\n var op = this.buffer[JSON.stringify(id)];\n if (op == null) {\n op = yield this.os.get(id);\n this.buffer[JSON.stringify(id)] = op;\n }\n return op;\n }\n *removeOperation (id) {\n this.buffer[JSON.stringify(id)] = null;\n return yield this.os.delete(id);\n }\n *setState (state : State) : State {\n return yield this.sv.put(state);\n }\n *getState (user : string) : State {\n var state;\n if ((state = yield this.sv.get(user)) != null){\n return state;\n } else {\n return {\n user: user,\n clock: 0\n };\n }\n }\n *getStateVector () : StateVector {\n var stateVector = [];\n var cursorResult = this.sv.openCursor();\n var cursor;\n while ((cursor = yield cursorResult) != null) {\n stateVector.push(cursor.value);\n cursor.continue();\n }\n return stateVector;\n }\n *getStateSet () : StateSet {\n var sv : StateVector = yield* this.getStateVector();\n var ss : StateSet = {};\n for (var state of sv){\n ss[state.user] = state.clock;\n }\n return ss;\n }\n\n *getOperations (startSS : StateSet) {\n if (startSS == null){\n startSS = {};\n }\n var ops = [];\n\n var endSV : StateVector = yield* this.getStateVector();\n for (var endState of endSV) {\n var user = endState.user;\n var startPos = startSS[user] || 0;\n var endPos = endState.clock;\n var range = IDBKeyRange.bound([user, startPos], [user, endPos]);\n var cursorResult = this.os.openCursor(range);\n var cursor;\n while ((cursor = yield cursorResult) != null) {\n ops.push(cursor.value);\n cursor.continue();\n }\n }\n return ops;\n }\n }\n class OperationStore extends AbstractOperationStore { //eslint-disable-line no-undef\n namespace: string;\n ready: Promise;\n whenReadyListeners: Array<Function>;\n constructor (y, opts) {\n super(y);\n if (opts == null) {\n opts = {};\n }\n if (opts.namespace == null || typeof opts.namespace !== \"string\") {\n throw new Error(\"IndexedDB: expect a string (opts.namespace)!\");\n } else {\n this.namespace = opts.namespace;\n }\n if (opts.idbVersion != null) {\n this.idbVersion = opts.idbVersion;\n } else {\n this.idbVersion = 5;\n }\n\n this.transactionQueue = {\n queue: [],\n onRequest: null\n };\n\n var store = this;\n\n var tGen = (function *transactionGen(){\n store.db = yield indexedDB.open(opts.namespace, store.idbVersion);\n var transactionQueue = store.transactionQueue;\n\n var transaction = null;\n var cont = true;\n while (cont) {\n var request = yield transactionQueue;\n transaction = new Transaction(store);\n\n yield* request.call(transaction, request);/*\n while (transactionQueue.queue.length > 0) {\n yield* transactionQueue.queue.shift().call(transaction);\n }*/\n }\n })();\n\n function handleTransactions(t){ //eslint-disable-line no-unused-vars\n var request = t.value;\n if (t.done){\n return;\n } else if (request.constructor === IDBRequest\n || request.constructor === IDBCursor ) {\n request.onsuccess = function(){\n handleTransactions(tGen.next(request.result));\n };\n request.onerror = function(err){\n tGen.throw(err);\n };\n } else if (request === store.transactionQueue) {\n if (request.queue.length > 0){\n handleTransactions(tGen.next(request.queue.shift()));\n } else {\n request.onRequest = function(){\n request.onRequest = null;\n handleTransactions(tGen.next(request.queue.shift()));\n };\n }\n } else if ( request.constructor === IDBOpenDBRequest ) {\n request.onsuccess = function(event){\n var db = event.target.result;\n handleTransactions(tGen.next(db));\n };\n request.onerror = function(){\n tGen.throw(\"Couldn't open IndexedDB database!\");\n };\n request.onupgradeneeded = function(event){\n var db = event.target.result;\n try {\n db.createObjectStore(\"OperationStore\", {keyPath: \"id\"});\n db.createObjectStore(\"StateVector\", {keyPath: \"user\"});\n } catch (e) {\n // console.log(\"Store already exists!\");\n }\n };\n } else {\n tGen.throw(\"You can not yield this type!\");\n }\n }\n handleTransactions(tGen.next());\n\n }\n requestTransaction (makeGen : Function) {\n this.transactionQueue.queue.push(makeGen);\n if (this.transactionQueue.onRequest != null) {\n this.transactionQueue.onRequest();\n }\n }\n *removeDatabase () {\n this.db.close();\n yield indexedDB.deleteDatabase(this.namespace);\n }\n }\n return OperationStore;\n})();\n","\n\n\nclass N {\n // A created node is always red!\n constructor (val) {\n this.val = val;\n this.color = true;\n this._left = null;\n this._right = null;\n this._parent = null;\n if (val.id == null) {\n throw new Error(\"You must define id!\");\n }\n }\n isRed () { return this.color; }\n isBlack () { return !this.color; }\n redden () { this.color = true; return this; }\n blacken () { this.color = false; return this; }\n get grandparent () {\n return this.parent.parent;\n }\n get parent () {\n return this._parent;\n }\n get left () {\n return this._left;\n }\n get right () {\n return this._right;\n }\n set left (n) {\n if (n != null) {\n n._parent = this;\n }\n this._left = n;\n }\n set right (n) {\n if (n != null) {\n n._parent = this;\n }\n this._right = n;\n }\n rotateLeft (tree) {\n var parent = this.parent;\n var newParent = this.right;\n var newRight = this.right.left;\n newParent.left = this;\n this.right = newRight;\n if (parent == null) {\n tree.root = newParent;\n } else if (parent.left === this) {\n parent.left = newParent;\n } else if (parent.right === this) {\n parent.right = newParent;\n } else {\n throw new Error(\"The elements are wrongly connected!\")\n }\n }\n rotateRight (tree) {\n var parent = this.parent;\n var newParent = this.left;\n var newLeft = this.left.right;\n newParent.right = this;\n this.left = newLeft;\n if (parent == null) {\n tree.root = newParent;\n } else if (parent.left === this) {\n parent.left = newParent;\n } else if (parent.right === this) {\n parent.right = newParent;\n } else {\n throw new Error(\"The elements are wrongly connected!\")\n }\n }\n getUncle () {\n // we can assume that grandparent exists when this is called!\n if (this.parent === this.parent.parent.left) {\n return this.parent.parent.right;\n } else {\n return this.parent.parent.left;\n }\n }\n}\n\nclass RBTree { //eslint-disable-line no-unused-vars\n constructor () {\n this.root = null;\n }\n find (id) {\n var o = this.root;\n if (o == null) {\n return false;\n } else {\n while (true) {\n if (o == null) {\n return false;\n }\n if (id < o.val.id) {\n o = o.left;\n } else if (o.val.id < id) {\n o = o.right;\n } else {\n return o.val;\n }\n }\n }\n }\n add (v) {\n var node = new N(v);\n if (this.root != null) {\n var p = this.root; // p abbrev. parent\n while (true) {\n if (node.val.id < p.val.id) {\n if (p.left == null) {\n p.left = node;\n break;\n } else {\n p = p.left;\n }\n } else if (p.val.id < node.val.id) {\n if (p.right == null) {\n p.right = node;\n break;\n } else {\n p = p.right;\n }\n } else {\n return false;\n }\n }\n this.fixInsert(node);\n } else {\n this.root = node;\n }\n this.root.blacken();\n }\n fixInsert (n) {\n if (n.parent == null) {\n n.blacken();\n return;\n } else if (n.parent.isBlack()) {\n return;\n }\n var uncle = n.getUncle();\n if (uncle != null && uncle.isRed()) {\n // Note: parend: red, uncle: red\n n.parent.blacken();\n uncle.blacken();\n n.grandparent.redden();\n this.fixInsert(n.grandparent);\n } else {\n // Note: parent: red, uncle: black or null\n // Now we transform the tree in such a way that\n // either of these holds:\n // 1) grandparent.left.isRed\n // and grandparent.left.left.isRed\n // 2) grandparent.right.isRed\n // and grandparent.right.right.isRed\n if (n === n.parent.right\n && n.parent === n.grandparent.left) {\n n.parent.rotateLeft(this);\n // Since we rotated and want to use the previous\n // cases, we need to set n in such a way that\n // n.parent.isRed again\n n = n.left;\n } else if (n === n.parent.left\n && n.parent === n.grandparent.right) {\n n.parent.rotateRight(this);\n // see above\n n = n.right;\n }\n // Case 1) or 2) hold from here on.\n // Now traverse grandparent, make parent a black node\n // on the highest level which holds two red nodes.\n n.parent.blacken();\n n.grandparent.redden();\n if (n === n.parent.left) {\n // Case 1\n n.grandparent.rotateRight(this);\n } else {\n // Case 2\n n.grandparent.rotateLeft(this);\n }\n }\n }\n}\n","\n\n(function(){\n\n class List {\n constructor (_model) {\n this._model = _model;\n }\n *val (pos) {\n var t = yield \"transaction\";\n if (pos != null) {\n var o = yield* Y.Struct.List.ref.call(t, this._model, pos);\n return o ? o.content : null;\n } else {\n return yield* Y.Struct.List.map.call(t, this._model, function(c){return c; });\n }\n }\n *insert (pos, contents) {\n var t = yield \"transaction\";\n yield* Y.Struct.List.insert.call(t, this._model, pos, contents);\n }\n }\n\n Y.List = function* YList(){\n var t = yield \"transaction\";\n var model = yield* Y.Struct.List.create.call(t, {type: \"List\"});\n return new List(model);\n };\n Y.List.Create = List;\n})();\n","\n(function(){\n class Map {\n constructor (_model) {\n this._model = _model;\n }\n *val () {\n var t = yield \"transaction\";\n var model = yield* t.getOperation(this._model);\n if (arguments.length === 1) {\n return yield* Y.Struct.Map.get.call(t, model, arguments[0]);\n } else if (arguments.length === 2) {\n return yield* Y.Struct.Map.set.call(t, model, arguments[0], arguments[1]);\n } else {\n throw new Error(\"Implement this case!\");\n }\n }\n }\n\n Y.Map = function* YMap(){\n var t = yield \"transaction\";\n if (this instanceof Y.AbstractOperationStore) {\n var model = yield* Y.Struct.map.create.call(t, {type: \"Map\"});\n return new Map(model);\n } else {\n throw new Error(\"Don't use `new` to create this type!\");\n }\n };\n Y.Map.Create = Map;\n})();\n"],"sourceRoot":"/source/"}