{"version":3,"sources":["../yjs/node_modules/browserify/node_modules/browser-pack/_prelude.js","src/IndexedDB.js"],"names":[],"mappings":"AAAA;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"y-indexeddb.es6","sourceRoot":"/source/","sourcesContent":["(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require==\"function\"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error(\"Cannot find module '\"+o+\"'\");throw f.code=\"MODULE_NOT_FOUND\",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require==\"function\"&&require;for(var o=0;o 0) {\n var add = nextRound\n nextRound = []\n for (i = 0; i < add.length; i++) {\n op = add[i]\n if (op.struct === 'Insert') {\n var ready = true\n for (let j = i + 1; j < add.length; j++) {\n let _op = add[j]\n if (Y.utils.compareIds(_op.id, op.left)) {\n ready = false\n break\n }\n }\n if (ready) {\n for (let j = 0; j < nextRound.length; j++) {\n let _op = add[j]\n if (Y.utils.compareIds(_op.id, op.left)) {\n ready = false\n break\n }\n }\n }\n if (!ready) {\n // it is necessary to execute left first\n nextRound.push(op)\n continue\n }\n }\n yield* this.store.operationAdded(this, op, true)\n }\n }\n })\n }\n }\n }, false)\n }\n * operationAdded (transaction, op, noAdd) {\n yield* super.operationAdded(transaction, op)\n if (!noAdd) {\n window.localStorage[this.operationAddedNamespace] = JSON.stringify(op)\n }\n }\n transact (makeGen) {\n var transaction = this.db != null ? new Transaction(this) : null\n var store = this\n\n var gen = makeGen.call(transaction)\n handleTransactions(gen.next())\n\n function handleTransactions (result) {\n var request = result.value\n if (result.done) {\n makeGen = store.getNextRequest()\n if (makeGen != null) {\n if (transaction == null && store.db != null) {\n transaction = new Transaction(store)\n }\n gen = makeGen.call(transaction)\n handleTransactions(gen.next())\n } // else no transaction in progress!\n return\n }\n console.log('new request', request.source != null ? request.source.name : null)\n if (request.constructor === window.IDBRequest) {\n request.onsuccess = function () {\n var res = request.result\n if (res != null && res.constructor === window.IDBCursorWithValue) {\n res = res.value\n }\n handleTransactions(gen.next(res))\n }\n request.onerror = function (err) {\n gen.throw(err)\n }\n } else if (request.constructor === window.IDBCursor) {\n request.onsuccess = function () {\n handleTransactions(gen.next(request.result != null ? request.result.value : null))\n }\n request.onerror = function (err) {\n gen.throw(err)\n }\n } else if (request.constructor === window.IDBOpenDBRequest) {\n request.onsuccess = function (event) {\n var db = event.target.result\n handleTransactions(gen.next(db))\n }\n request.onerror = function () {\n gen.throw(\"Couldn't open IndexedDB database!\")\n }\n request.onupgradeneeded = function (event) {\n var db = event.target.result\n try {\n delete window.localStorage[JSON.stringify(['Yjs_indexeddb', store.options.namespace])]\n db.deleteObjectStore('OperationStore')\n db.deleteObjectStore('DeleteStore')\n db.deleteObjectStore('StateStore')\n } catch (e) {}\n db.createObjectStore('OperationStore', {keyPath: 'id'})\n db.createObjectStore('DeleteStore', {keyPath: 'id'})\n db.createObjectStore('StateStore', {keyPath: 'id'})\n }\n } else {\n gen.throw('You must not yield this type!')\n }\n }\n }\n // TODO: implement \"free\"..\n * destroy () {\n this.db.close()\n yield window.indexedDB.deleteDatabase(this.options.namespace)\n }\n }\n Y.extend('indexeddb', OperationStore)\n })\n}\n\nmodule.exports = extend\nif (typeof Y !== 'undefined') {\n extend(Y)\n}\n"]}