summaryrefslogtreecommitdiff
path: root/webapp/static/pogospace/3.2860b24d78cee11b8d5e.worker.js.map
diff options
context:
space:
mode:
Diffstat (limited to 'webapp/static/pogospace/3.2860b24d78cee11b8d5e.worker.js.map')
-rw-r--r--webapp/static/pogospace/3.2860b24d78cee11b8d5e.worker.js.map1
1 files changed, 1 insertions, 0 deletions
diff --git a/webapp/static/pogospace/3.2860b24d78cee11b8d5e.worker.js.map b/webapp/static/pogospace/3.2860b24d78cee11b8d5e.worker.js.map
new file mode 100644
index 0000000..4404565
--- /dev/null
+++ b/webapp/static/pogospace/3.2860b24d78cee11b8d5e.worker.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:////home/user/tracespace/node_modules/dexie/dist/dexie.mjs"],"names":["__assign","Object","assign","t","s","i","n","arguments","length","p","prototype","hasOwnProperty","call","apply","this","keys","isArray","Array","_global","self","window","global","extend","obj","extension","forEach","key","Promise","getProto","getPrototypeOf","_hasOwn","hasOwn","prop","props","proto","setProp","defineProperty","functionOrGetSet","options","get","set","configurable","value","writable","derive","Child","from","Parent","create","bind","getOwnPropertyDescriptor","_slice","slice","args","start","end","override","origFunc","overridedFactory","assert","b","Error","asap","fn","setImmediate","setTimeout","getByKeyPath","keyPath","rv","l","val","push","period","indexOf","innerObj","substr","undefined","setByKeyPath","isFrozen","currentKeyPath","remainingKeyPath","isNaN","parseInt","splice","shallowClone","m","concat","flatten","a","intrinsicTypes","split","map","num","filter","deepClone","any","constructor","getObjectDiff","prfx","ap","bp","iteratorSymbol","Symbol","iterator","getIteratorOf","x","NO_CHAR_ARRAY","getArrayOf","arrayLike","it","next","done","debug","location","test","href","setDebug","libraryFilter","NEEDS_THROW_FOR_STACK","stack","getErrorWithStack","e","prettyStack","exception","numIgnoredFrames","name","message","frame","join","idbDomErrorNames","errorList","defaultTexts","VersionChanged","DatabaseClosed","Abort","TransactionInactive","DexieError","msg","_e","getMultiErrorMessage","failures","toString","v","ModifyError","successCount","failedKeys","BulkError","_stack","errnames","reduce","BaseException","exceptions","fullName","msgOrInner","inner","Syntax","SyntaxError","Type","TypeError","Range","RangeError","exceptionMap","fullNameExceptions","nop","mirror","pureFunctionChain","f1","f2","callBoth","on1","on2","hookCreatingChain","res","onsuccess","onerror","res2","hookDeletingChain","hookUpdatingChain","modifications","reverseStoppableEventChain","promisableChain","then","thiz","INTERNAL","LONG_STACKS_CLIP_LIMIT","ZONE_ECHO_LIMIT","nativePromiseInstanceAndProto","Function","P","resolve","resolvedNativePromise","nativePromiseProto","resolvedGlobalPromise","nativePromiseThen","NativePromise","AsyncFunction","patchGlobalPromise","stack_being_generated","schedulePhysicalTick","physicalTick","MutationObserver","hiddenDiv","document","createElement","observe","attributes","setAttribute","asap$1","callback","microtickQueue","needsNewPhysicalTick","isOutsideMicroTick","unhandledErrors","rejectingErrors","currentFulfiller","rejectionMapper","globalPSD","id","ref","unhandleds","onunhandled","globalError","pgp","env","finalize","uh","PSD","numScheduledCalls","tickFinalizers","Promise$1","_listeners","onuncatched","_lib","psd","_PSD","_stackHolder","_prev","_numPrev","_state","_value","handleRejection","executePromiseTask","promise","shouldExecuteTick","beginMicroTickScope","reject","_then","propagateAllListeners","endMicroTickScope","ex","thenProp","microTaskId","totalEchoes","onFulfilled","onRejected","_this","possibleAwait","decrementExpectedAwaits","propagateToListener","Listener","nativeAwaitCompatibleWrap","linkToPreviousPromise","zone","reason","_promise","tryCatch","origProp","getPropertyDescriptor","some","addPossiblyUnhandledError","listeners","len","finalizePhysicalTick","listener","cb","callListener","ret","markErrorAsHandled","prev","numPrev","wasRootExec","callbacks","item","unhandledErrs","finalizers","PromiseReject","wrap","errorCatcher","outerScope","switchToZone","catch","type","handler","err","finally","onFinally","getStack","stacks","limit","errorName","failure","timeout","ms","Infinity","handle","Timeout","clearTimeout","toStringTag","snapShot","all","values","onPossibleParallellAsync","remaining","race","newPSD","newScope","usePSD","scheduler","follow","zoneProps","finalizer","run_at_end_of_this_or_next_physical_tick","task","awaits","echoes","taskCounter","zoneStack","zoneEchoes","zone_id_counter","props$$1","a1","a2","parent","globalEnv","PromiseProp","nthen","getPatchedPromiseThen","gthen","incrementExpectedAwaits","sourceTaskId","possiblePromise","rejection","zoneLeaveEcho","pop","targetZone","bEnteringZone","job","currentZone","GlobalPromise","targetEnv","a3","outerZone","origThen","onResolved","UNHANDLEDREJECTION","event","eventData","createEvent","initEvent","CustomEvent","detail","dispatchEvent","PromiseRejectionEvent","onunhandledrejection","_","defaultPrevented","console","warn","maxString","String","fromCharCode","INVALID_KEY_ARGUMENT","STRING_EXPECTED","connections","isIEOrEdge","navigator","userAgent","hasIEDeleteObjectStoreBug","hangsOnDeleteLargeKeyRange","dexieStackFrameFilter","DBNAMES_DB","combine","filter1","filter2","AnyRange","lower","lowerOpen","upper","upperOpen","Table","_trans","mode","writeLocked","trans","_tx","tableName","checkTableInTransaction","schema","NotFound","idbtrans","db","transless","tempTransaction","storeNames","openComplete","letThrough","_createTransaction","_dbSchema","result","_completion","isBeingOpened","_options","autoOpen","open","dbReadyPromise","keyOrCrit","where","first","core","hook","reading","fire","indexOrCrit","WhereClause","keyPaths","equals","compoundIndex","indexes","primKey","ix","compound","every","_maxKey","kp","JSON","stringify","idxByName","idb","_deps","indexedDB","cmp","_a","prevIndex","prevFilterFn","index","multi","idx","filterFunction","toCollection","and","count","thenShortcut","offset","numRows","each","toArray","Collection","orderBy","reverse","mapToClass","mappedClass","readHook","unsubscribe","defineClass","content","add","mutate","numFailures","lastResult","primaryKey","outbound","update","keyOrObject","InvalidArgument","modify","put","delete","clear","range","bulkGet","keys$$1","getMany","bulkAdd","objects","pos","bulkPut","bulkDelete","Events","ctx","evs","eventName","subscriber","subscribe","addEventType","chainFunction","defaultFunction","cfg","context","subscribers","makeClassConstructor","isPlainKeyRange","ignoreLimitFilter","algorithm","or","justLimit","replayFilter","addFilter","addReplayFilter","factory","isLimitFilter","curr","getIndexOrStore","coreSchema","isPrimKey","getIndexByKeyPath","Schema","openCursor","coreTable","keysOnly","dir","unique","query","iter","coreTrans","set_1","union","cursor","advance","stop","fail","Uint8Array","_iterate","iterate","valueMapper","cursorPromise","wrappedFn","c","continue","advancer","_read","_ctx","error","table","_write","_addAlgorithm","clone","raw","Math","min","sortBy","parts","lastPart","lastIndex","getval","order","sorter","aVal","bVal","sort","valueMapper_1","a_1","offsetLeft","rowsLeft","until","bIncludeStopEntry","last","isMatch","indexName","_ondirectionchange","desc","eachKey","eachUniqueKey","eachPrimaryKey","primaryKeys","uniqueKeys","firstKey","lastKey","distinct","strKey","found","changes","modifyer","numKeys","anythingModified","extractKey","Dexie","totalFailures","applyMutateResult","expectedCount","nextChunk","addValues","putValues","putKeys","deleteKeys","origValue","ctx_1","coreRange","results","simpleCompare","simpleCompareReverse","collectionOrWhereClause","T","collection","emptyCollection","whereClause","rangeEqual","nextCasing","lowerKey","upperNeedle","lowerNeedle","llp","lwrKeyChar","addIgnoreCaseAlgorithm","match","needles","suffix","compare","upperNeedles","lowerNeedles","direction","nextKeySuffix","needlesLen","initDirection","toUpperCase","toLowerCase","upperFactory","lowerFactory","needleBounds","needle","nb","createRange","firstPossibleNeedle","lowestPossibleCasing","casing","enumerable","between","includeLower","includeUpper","_cmp","above","aboveOrEqual","below","belowOrEqual","startsWith","str","startsWithIgnoreCase","equalsIgnoreCase","anyOfIgnoreCase","startsWithAnyOfIgnoreCase","anyOf","_ascending","_descending","notEqual","inAnyRange","includeLowers","includeUppers","noneOf","ranges","ascending","descending","_min","max","_max","sortDirection","rangeSorter","newRange","rangePos","keyIsBeyondCurrentEntry","keyIsBeforeCurrentEntry","checkKey","keyWithinCurrentRange","startsWithAnyOf","safariMultiStoreFix","getMaxKey","IdbKeyRange","only","eventRejectHandler","preventDefault","target","stopPropagation","Transaction","_lock","_reculock","lockOwnerFor","_unlock","_blockedFuncs","_locked","fnAndPSD","shift","idbdb","dbOpenError","MissingAPI","OpenFailed","active","transaction","ev","_reject","onabort","on","oncomplete","_resolve","bWriteLock","ReadOnly","_root","waitFor","promiseLike","root","_waitingFor","_waitingQueue","store","objectStore","spin","_spinCount","currentWaitPromise","abort","memoizedTables","_memoizedTables","tableSchema","transactionBoundTable","createIndexSpec","auto","src","nameFromKeyPath","createTableSchema","array","extractor","nameAndValue","getKeyExtractor","getSinglePathKeyExtractor","getEffectiveKeys","req","arrayify","_id_counter","getKeyPathAlias","createDBCore","tmpTrans","makeIDBKeyRange","upperBound","lowerBound","bound","tables","objectStoreNames","autoIncrement","indexByKeyPath","isPrimaryKey","indexNames","multiEntry","hasGetAll","extractSchema","wantResults","isAddOrPut","errorHandler","_reqno","setResult","args1","args2","keyCount","callbackCount","successHandler","_pos","request","nonInfinitLimit","source","idbKeyRange","getAll","getAllKeys","count_1","req_1","openKeyCursor","result_1","___id","_cursorContinue","_cursorContinuePrimaryKey","continuePrimaryKey","_cursorAdvance","doThrowCursorIsStopped","gotOne","iterationPromise","resolveIteration","rejectIteration","guardedCallback","createDbCoreTable","tableMap","MIN_KEY","MAX_KEY","createMiddlewareStacks","middlewares","IDBKeyRange","dbcore","stackImpl","down","createMiddlewareStack","generateMiddlewareStacks","_middlewares","tbl","setApiOnPlace","objs","tableNames","dbschema","removeTablesApi","lowerVersionFirst","_cfg","version","runUpgraders","oldVersion","idbUpgradeTrans","globalSchema","_storeNames","rejectTransaction","createTable","populate","queue","versions","_versions","oldVersionStruct","Upgrade","anyContentUpgraderHasRun","oldSchema","newSchema","adjustToExistingIndexNames","diff","del","change","oldDef","newDef","def","recreate","oldIndexes","newIndexes","idxName","oldIdx","newIdx","getSchemaDiff","tuple","store_1","addIndex","deleteIndex","contentUpgrade","returnValue_1","upgradeSchema_1","promiseFollowed","decrementor","storeName","deleteObjectStore","deleteRemovedTables","runQueue","contains","updateTablesAndIndexes","createObjectStore","createIndex","_hasGetAll","j","dexieName","indexSpec","WorkerGlobalScope","databaseEnumerator","Version","_parseStoresSpec","stores","outSchema","trim","replace","parseIndexSyntax","storesSource","storesSpec","_allTables","upgrade","upgradeFunction","vip","dexieOpen","state","openCanceller","resolveDbReady","dbReadyResolve","upgradeTransaction","dbName","autoSchema","round","verno","onblocked","_fireOnBlocked","onupgradeneeded","allowEmptyDB","close","delreq","deleteDatabase","NoSuchDatabase","oldVer","pow","dbStoreNames","idbindex","readGlobalSchema","onversionchange","vcFired","onReadyBeingFired","ready","fireRemainders","remainders","awaitIterator","callNext","onSuccess","step","onError","throw","getNext","extractTransactionArgs","_tableArgs_","scopeFunc","pad","virtualIndexMiddleware","level","indexLookup","allVirtualIndexes","addVirtualIndexes","keyTail","lowLevelIndex","keyPathAlias","indexList","keyLength","isVirtual","virtualIndex","_i","translateRequest","createVirtualCursor","hooksMiddleware","downCore","downTable","dxTrans","deleting","creating","updating","addPutOrDelete","deleteNextChunk","deleteRange","effectiveKeys","getExistingValues","existingValues","contexts","existingValue","generatedPrimaryKey","objectDiff","additionalChanges_1","requestedValue_1","deps","dependencies","addons","cancelOpen","bSticky","db_1","keyRangeGenerator","keyRange","whereCtx","readingHook","createTableConstructor","complete","wasActive","createTransactionConstructor","versionNumber","createVersionConstructor","orCollection","_IDBKeyRange","createWhereClauseConstructor","newVersion","parentTransaction","use","addon","versionInstance","_whenReady","unuse","mw","hasArguments","doDelete","remove","backendDB","isOpen","hasBeenClosed","hasFailed","dynamicallyOpened","_transaction","idbMode","onlyIfCompatible","SubTransaction","enterTransaction","returnValue","PrematureCommit","InvalidTable","Dexie$1","databaseName","exists","getDatabaseNames","ignoreTransaction","async","generatorFn","spawn","currentTransaction","promiseOrFunction","optionalTimeout","delByKeyPath","minKey","mozIndexedDB","webkitIndexedDB","msIndexedDB","webkitIDBKeyRange","semVer","default","maxKey","dbNamesTable","getDatabaseNamesNative","webkitGetDatabaseNames","dbnames","DatabaseEnumerator","initDatabaseEnumerator","domError"],"mappings":"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","file":"3.2860b24d78cee11b8d5e.worker.js","sourcesContent":["/*\n * Dexie.js - a minimalistic wrapper for IndexedDB\n * ===============================================\n *\n * By David Fahlander, david.fahlander@gmail.com\n *\n * Version 3.0.0-alpha.8, Fri Apr 26 2019\n *\n * http://dexie.org\n *\n * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/\n */\n \nvar __assign = function() {\n __assign = Object.assign || function __assign(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n\nvar keys = Object.keys;\nvar isArray = Array.isArray;\nvar _global = typeof self !== 'undefined' ? self :\n typeof window !== 'undefined' ? window :\n global;\nif (typeof Promise !== 'undefined' && !_global.Promise) {\n _global.Promise = Promise;\n}\nfunction extend(obj, extension) {\n if (typeof extension !== 'object')\n return obj;\n keys(extension).forEach(function (key) {\n obj[key] = extension[key];\n });\n return obj;\n}\nvar getProto = Object.getPrototypeOf;\nvar _hasOwn = {}.hasOwnProperty;\nfunction hasOwn(obj, prop) {\n return _hasOwn.call(obj, prop);\n}\nfunction props(proto, extension) {\n if (typeof extension === 'function')\n extension = extension(getProto(proto));\n keys(extension).forEach(function (key) {\n setProp(proto, key, extension[key]);\n });\n}\nvar defineProperty = Object.defineProperty;\nfunction setProp(obj, prop, functionOrGetSet, options) {\n defineProperty(obj, prop, extend(functionOrGetSet && hasOwn(functionOrGetSet, \"get\") && typeof functionOrGetSet.get === 'function' ?\n { get: functionOrGetSet.get, set: functionOrGetSet.set, configurable: true } :\n { value: functionOrGetSet, configurable: true, writable: true }, options));\n}\nfunction derive(Child) {\n return {\n from: function (Parent) {\n Child.prototype = Object.create(Parent.prototype);\n setProp(Child.prototype, \"constructor\", Child);\n return {\n extend: props.bind(null, Child.prototype)\n };\n }\n };\n}\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nfunction getPropertyDescriptor(obj, prop) {\n var pd = getOwnPropertyDescriptor(obj, prop);\n var proto;\n return pd || (proto = getProto(obj)) && getPropertyDescriptor(proto, prop);\n}\nvar _slice = [].slice;\nfunction slice(args, start, end) {\n return _slice.call(args, start, end);\n}\nfunction override(origFunc, overridedFactory) {\n return overridedFactory(origFunc);\n}\nfunction assert(b) {\n if (!b)\n throw new Error(\"Assertion Failed\");\n}\nfunction asap(fn) {\n if (_global.setImmediate)\n setImmediate(fn);\n else\n setTimeout(fn, 0);\n}\n\nfunction arrayToObject(array, extractor) {\n return array.reduce(function (result, item, i) {\n var nameAndValue = extractor(item, i);\n if (nameAndValue)\n result[nameAndValue[0]] = nameAndValue[1];\n return result;\n }, {});\n}\n\nfunction tryCatch(fn, onerror, args) {\n try {\n fn.apply(null, args);\n }\n catch (ex) {\n onerror && onerror(ex);\n }\n}\nfunction getByKeyPath(obj, keyPath) {\n if (hasOwn(obj, keyPath))\n return obj[keyPath];\n if (!keyPath)\n return obj;\n if (typeof keyPath !== 'string') {\n var rv = [];\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n var val = getByKeyPath(obj, keyPath[i]);\n rv.push(val);\n }\n return rv;\n }\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var innerObj = obj[keyPath.substr(0, period)];\n return innerObj === undefined ? undefined : getByKeyPath(innerObj, keyPath.substr(period + 1));\n }\n return undefined;\n}\nfunction setByKeyPath(obj, keyPath, value) {\n if (!obj || keyPath === undefined)\n return;\n if ('isFrozen' in Object && Object.isFrozen(obj))\n return;\n if (typeof keyPath !== 'string' && 'length' in keyPath) {\n assert(typeof value !== 'string' && 'length' in value);\n for (var i = 0, l = keyPath.length; i < l; ++i) {\n setByKeyPath(obj, keyPath[i], value[i]);\n }\n }\n else {\n var period = keyPath.indexOf('.');\n if (period !== -1) {\n var currentKeyPath = keyPath.substr(0, period);\n var remainingKeyPath = keyPath.substr(period + 1);\n if (remainingKeyPath === \"\")\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(currentKeyPath)))\n obj.splice(currentKeyPath, 1);\n else\n delete obj[currentKeyPath];\n }\n else\n obj[currentKeyPath] = value;\n else {\n var innerObj = obj[currentKeyPath];\n if (!innerObj)\n innerObj = (obj[currentKeyPath] = {});\n setByKeyPath(innerObj, remainingKeyPath, value);\n }\n }\n else {\n if (value === undefined) {\n if (isArray(obj) && !isNaN(parseInt(keyPath)))\n obj.splice(keyPath, 1);\n else\n delete obj[keyPath];\n }\n else\n obj[keyPath] = value;\n }\n }\n}\nfunction delByKeyPath(obj, keyPath) {\n if (typeof keyPath === 'string')\n setByKeyPath(obj, keyPath, undefined);\n else if ('length' in keyPath)\n [].map.call(keyPath, function (kp) {\n setByKeyPath(obj, kp, undefined);\n });\n}\nfunction shallowClone(obj) {\n var rv = {};\n for (var m in obj) {\n if (hasOwn(obj, m))\n rv[m] = obj[m];\n }\n return rv;\n}\nvar concat = [].concat;\nfunction flatten(a) {\n return concat.apply([], a);\n}\nvar intrinsicTypes = \"Boolean,String,Date,RegExp,Blob,File,FileList,ArrayBuffer,DataView,Uint8ClampedArray,ImageData,Map,Set\"\n .split(',').concat(flatten([8, 16, 32, 64].map(function (num) { return [\"Int\", \"Uint\", \"Float\"].map(function (t) { return t + num + \"Array\"; }); }))).filter(function (t) { return _global[t]; }).map(function (t) { return _global[t]; });\nfunction deepClone(any) {\n if (!any || typeof any !== 'object')\n return any;\n var rv;\n if (isArray(any)) {\n rv = [];\n for (var i = 0, l = any.length; i < l; ++i) {\n rv.push(deepClone(any[i]));\n }\n }\n else if (intrinsicTypes.indexOf(any.constructor) >= 0) {\n rv = any;\n }\n else {\n rv = any.constructor ? Object.create(any.constructor.prototype) : {};\n for (var prop in any) {\n if (hasOwn(any, prop)) {\n rv[prop] = deepClone(any[prop]);\n }\n }\n }\n return rv;\n}\nfunction getObjectDiff(a, b, rv, prfx) {\n rv = rv || {};\n prfx = prfx || '';\n keys(a).forEach(function (prop) {\n if (!hasOwn(b, prop))\n rv[prfx + prop] = undefined;\n else {\n var ap = a[prop], bp = b[prop];\n if (typeof ap === 'object' && typeof bp === 'object' &&\n ap && bp &&\n ('' + ap.constructor) === ('' + bp.constructor))\n getObjectDiff(ap, bp, rv, prfx + prop + \".\");\n else if (ap !== bp)\n rv[prfx + prop] = b[prop];\n }\n });\n keys(b).forEach(function (prop) {\n if (!hasOwn(a, prop)) {\n rv[prfx + prop] = b[prop];\n }\n });\n return rv;\n}\nvar iteratorSymbol = typeof Symbol !== 'undefined' && Symbol.iterator;\nvar getIteratorOf = iteratorSymbol ? function (x) {\n var i;\n return x != null && (i = x[iteratorSymbol]) && i.apply(x);\n} : function () { return null; };\nvar NO_CHAR_ARRAY = {};\nfunction getArrayOf(arrayLike) {\n var i, a, x, it;\n if (arguments.length === 1) {\n if (isArray(arrayLike))\n return arrayLike.slice();\n if (this === NO_CHAR_ARRAY && typeof arrayLike === 'string')\n return [arrayLike];\n if ((it = getIteratorOf(arrayLike))) {\n a = [];\n while (x = it.next(), !x.done)\n a.push(x.value);\n return a;\n }\n if (arrayLike == null)\n return [arrayLike];\n i = arrayLike.length;\n if (typeof i === 'number') {\n a = new Array(i);\n while (i--)\n a[i] = arrayLike[i];\n return a;\n }\n return [arrayLike];\n }\n i = arguments.length;\n a = new Array(i);\n while (i--)\n a[i] = arguments[i];\n return a;\n}\n\nvar debug = typeof location !== 'undefined' &&\n /^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);\nfunction setDebug(value, filter) {\n debug = value;\n libraryFilter = filter;\n}\nvar libraryFilter = function () { return true; };\nvar NEEDS_THROW_FOR_STACK = !new Error(\"\").stack;\nfunction getErrorWithStack() {\n if (NEEDS_THROW_FOR_STACK)\n try {\n throw new Error();\n }\n catch (e) {\n return e;\n }\n return new Error();\n}\nfunction prettyStack(exception, numIgnoredFrames) {\n var stack = exception.stack;\n if (!stack)\n return \"\";\n numIgnoredFrames = (numIgnoredFrames || 0);\n if (stack.indexOf(exception.name) === 0)\n numIgnoredFrames += (exception.name + exception.message).split('\\n').length;\n return stack.split('\\n')\n .slice(numIgnoredFrames)\n .filter(libraryFilter)\n .map(function (frame) { return \"\\n\" + frame; })\n .join('');\n}\n\nvar dexieErrorNames = [\n 'Modify',\n 'Bulk',\n 'OpenFailed',\n 'VersionChange',\n 'Schema',\n 'Upgrade',\n 'InvalidTable',\n 'MissingAPI',\n 'NoSuchDatabase',\n 'InvalidArgument',\n 'SubTransaction',\n 'Unsupported',\n 'Internal',\n 'DatabaseClosed',\n 'PrematureCommit',\n 'ForeignAwait'\n];\nvar idbDomErrorNames = [\n 'Unknown',\n 'Constraint',\n 'Data',\n 'TransactionInactive',\n 'ReadOnly',\n 'Version',\n 'NotFound',\n 'InvalidState',\n 'InvalidAccess',\n 'Abort',\n 'Timeout',\n 'QuotaExceeded',\n 'Syntax',\n 'DataClone'\n];\nvar errorList = dexieErrorNames.concat(idbDomErrorNames);\nvar defaultTexts = {\n VersionChanged: \"Database version changed by other database connection\",\n DatabaseClosed: \"Database has been closed\",\n Abort: \"Transaction aborted\",\n TransactionInactive: \"Transaction has already completed or failed\"\n};\nfunction DexieError(name, msg) {\n this._e = getErrorWithStack();\n this.name = name;\n this.message = msg;\n}\nderive(DexieError).from(Error).extend({\n stack: {\n get: function () {\n return this._stack ||\n (this._stack = this.name + \": \" + this.message + prettyStack(this._e, 2));\n }\n },\n toString: function () { return this.name + \": \" + this.message; }\n});\nfunction getMultiErrorMessage(msg, failures) {\n return msg + \". Errors: \" + Object.keys(failures)\n .map(function (key) { return failures[key].toString(); })\n .filter(function (v, i, s) { return s.indexOf(v) === i; })\n .join('\\n');\n}\nfunction ModifyError(msg, failures, successCount, failedKeys) {\n this._e = getErrorWithStack();\n this.failures = failures;\n this.failedKeys = failedKeys;\n this.successCount = successCount;\n this.message = getMultiErrorMessage(msg, failures);\n}\nderive(ModifyError).from(DexieError);\nfunction BulkError(msg, failures) {\n this._e = getErrorWithStack();\n this.name = \"BulkError\";\n this.failures = failures;\n this.message = getMultiErrorMessage(msg, failures);\n}\nderive(BulkError).from(DexieError);\nvar errnames = errorList.reduce(function (obj, name) { return (obj[name] = name + \"Error\", obj); }, {});\nvar BaseException = DexieError;\nvar exceptions = errorList.reduce(function (obj, name) {\n var fullName = name + \"Error\";\n function DexieError(msgOrInner, inner) {\n this._e = getErrorWithStack();\n this.name = fullName;\n if (!msgOrInner) {\n this.message = defaultTexts[name] || fullName;\n this.inner = null;\n }\n else if (typeof msgOrInner === 'string') {\n this.message = \"\" + msgOrInner + (!inner ? '' : '\\n ' + inner);\n this.inner = inner || null;\n }\n else if (typeof msgOrInner === 'object') {\n this.message = msgOrInner.name + \" \" + msgOrInner.message;\n this.inner = msgOrInner;\n }\n }\n derive(DexieError).from(BaseException);\n obj[name] = DexieError;\n return obj;\n}, {});\nexceptions.Syntax = SyntaxError;\nexceptions.Type = TypeError;\nexceptions.Range = RangeError;\nvar exceptionMap = idbDomErrorNames.reduce(function (obj, name) {\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\nfunction mapError(domError, message) {\n if (!domError || domError instanceof DexieError || domError instanceof TypeError || domError instanceof SyntaxError || !domError.name || !exceptionMap[domError.name])\n return domError;\n var rv = new exceptionMap[domError.name](message || domError.message, domError);\n if (\"stack\" in domError) {\n setProp(rv, \"stack\", { get: function () {\n return this.inner.stack;\n } });\n }\n return rv;\n}\nvar fullNameExceptions = errorList.reduce(function (obj, name) {\n if ([\"Syntax\", \"Type\", \"Range\"].indexOf(name) === -1)\n obj[name + \"Error\"] = exceptions[name];\n return obj;\n}, {});\nfullNameExceptions.ModifyError = ModifyError;\nfullNameExceptions.DexieError = DexieError;\nfullNameExceptions.BulkError = BulkError;\n\nfunction nop() { }\nfunction mirror(val) { return val; }\nfunction pureFunctionChain(f1, f2) {\n if (f1 == null || f1 === mirror)\n return f2;\n return function (val) {\n return f2(f1(val));\n };\n}\nfunction callBoth(on1, on2) {\n return function () {\n on1.apply(this, arguments);\n on2.apply(this, arguments);\n };\n}\nfunction hookCreatingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res !== undefined)\n arguments[0] = res;\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res2 !== undefined ? res2 : res;\n };\n}\nfunction hookDeletingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n f1.apply(this, arguments);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = this.onerror = null;\n f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n };\n}\nfunction hookUpdatingChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function (modifications) {\n var res = f1.apply(this, arguments);\n extend(modifications, res);\n var onsuccess = this.onsuccess,\n onerror = this.onerror;\n this.onsuccess = null;\n this.onerror = null;\n var res2 = f2.apply(this, arguments);\n if (onsuccess)\n this.onsuccess = this.onsuccess ? callBoth(onsuccess, this.onsuccess) : onsuccess;\n if (onerror)\n this.onerror = this.onerror ? callBoth(onerror, this.onerror) : onerror;\n return res === undefined ?\n (res2 === undefined ? undefined : res2) :\n (extend(res, res2));\n };\n}\nfunction reverseStoppableEventChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n if (f2.apply(this, arguments) === false)\n return false;\n return f1.apply(this, arguments);\n };\n}\n\nfunction promisableChain(f1, f2) {\n if (f1 === nop)\n return f2;\n return function () {\n var res = f1.apply(this, arguments);\n if (res && typeof res.then === 'function') {\n var thiz = this, i = arguments.length, args = new Array(i);\n while (i--)\n args[i] = arguments[i];\n return res.then(function () {\n return f2.apply(thiz, args);\n });\n }\n return f2.apply(this, arguments);\n };\n}\n\nvar INTERNAL = {};\nvar LONG_STACKS_CLIP_LIMIT = 100;\nvar MAX_LONG_STACKS = 20;\nvar ZONE_ECHO_LIMIT = 7;\nvar nativePromiseInstanceAndProto = (function () {\n try {\n return new Function('let F=async ()=>{},p=F();return [p,Object.getPrototypeOf(p),Promise.resolve(),F.constructor];')();\n }\n catch (e) {\n var P = _global.Promise;\n return P ?\n [P.resolve(), P.prototype, P.resolve()] :\n [];\n }\n})();\nvar resolvedNativePromise = nativePromiseInstanceAndProto[0];\nvar nativePromiseProto = nativePromiseInstanceAndProto[1];\nvar resolvedGlobalPromise = nativePromiseInstanceAndProto[2];\nvar nativePromiseThen = nativePromiseProto && nativePromiseProto.then;\nvar NativePromise = resolvedNativePromise && resolvedNativePromise.constructor;\nvar AsyncFunction = nativePromiseInstanceAndProto[3];\nvar patchGlobalPromise = !!resolvedGlobalPromise;\nvar stack_being_generated = false;\nvar schedulePhysicalTick = resolvedGlobalPromise ?\n function () { resolvedGlobalPromise.then(physicalTick); }\n :\n _global.setImmediate ?\n setImmediate.bind(null, physicalTick) :\n _global.MutationObserver ?\n function () {\n var hiddenDiv = document.createElement(\"div\");\n (new MutationObserver(function () {\n physicalTick();\n hiddenDiv = null;\n })).observe(hiddenDiv, { attributes: true });\n hiddenDiv.setAttribute('i', '1');\n } :\n function () { setTimeout(physicalTick, 0); };\nvar asap$1 = function (callback, args) {\n microtickQueue.push([callback, args]);\n if (needsNewPhysicalTick) {\n schedulePhysicalTick();\n needsNewPhysicalTick = false;\n }\n};\nvar isOutsideMicroTick = true;\nvar needsNewPhysicalTick = true;\nvar unhandledErrors = [];\nvar rejectingErrors = [];\nvar currentFulfiller = null;\nvar rejectionMapper = mirror;\nvar globalPSD = {\n id: 'global',\n global: true,\n ref: 0,\n unhandleds: [],\n onunhandled: globalError,\n pgp: false,\n env: {},\n finalize: function () {\n this.unhandleds.forEach(function (uh) {\n try {\n globalError(uh[0], uh[1]);\n }\n catch (e) { }\n });\n }\n};\nvar PSD = globalPSD;\nvar microtickQueue = [];\nvar numScheduledCalls = 0;\nvar tickFinalizers = [];\nfunction Promise$1(fn) {\n if (typeof this !== 'object')\n throw new TypeError('Promises must be constructed via new');\n this._listeners = [];\n this.onuncatched = nop;\n this._lib = false;\n var psd = (this._PSD = PSD);\n if (debug) {\n this._stackHolder = getErrorWithStack();\n this._prev = null;\n this._numPrev = 0;\n }\n if (typeof fn !== 'function') {\n if (fn !== INTERNAL)\n throw new TypeError('Not a function');\n this._state = arguments[1];\n this._value = arguments[2];\n if (this._state === false)\n handleRejection(this, this._value);\n return;\n }\n this._state = null;\n this._value = null;\n ++psd.ref;\n executePromiseTask(this, fn);\n}\nvar thenProp = {\n get: function () {\n var psd = PSD, microTaskId = totalEchoes;\n function then(onFulfilled, onRejected) {\n var _this = this;\n var possibleAwait = !psd.global && (psd !== PSD || microTaskId !== totalEchoes);\n if (possibleAwait)\n decrementExpectedAwaits();\n var rv = new Promise$1(function (resolve, reject) {\n propagateToListener(_this, new Listener(nativeAwaitCompatibleWrap(onFulfilled, psd, possibleAwait), nativeAwaitCompatibleWrap(onRejected, psd, possibleAwait), resolve, reject, psd));\n });\n debug && linkToPreviousPromise(rv, this);\n return rv;\n }\n then.prototype = INTERNAL;\n return then;\n },\n set: function (value) {\n setProp(this, 'then', value && value.prototype === INTERNAL ?\n thenProp :\n {\n get: function () {\n return value;\n },\n set: thenProp.set\n });\n }\n};\nprops(Promise$1.prototype, {\n then: thenProp,\n _then: function (onFulfilled, onRejected) {\n propagateToListener(this, new Listener(null, null, onFulfilled, onRejected, PSD));\n },\n catch: function (onRejected) {\n if (arguments.length === 1)\n return this.then(null, onRejected);\n var type = arguments[0], handler = arguments[1];\n return typeof type === 'function' ? this.then(null, function (err) {\n return err instanceof type ? handler(err) : PromiseReject(err);\n })\n : this.then(null, function (err) {\n return err && err.name === type ? handler(err) : PromiseReject(err);\n });\n },\n finally: function (onFinally) {\n return this.then(function (value) {\n onFinally();\n return value;\n }, function (err) {\n onFinally();\n return PromiseReject(err);\n });\n },\n stack: {\n get: function () {\n if (this._stack)\n return this._stack;\n try {\n stack_being_generated = true;\n var stacks = getStack(this, [], MAX_LONG_STACKS);\n var stack = stacks.join(\"\\nFrom previous: \");\n if (this._state !== null)\n this._stack = stack;\n return stack;\n }\n finally {\n stack_being_generated = false;\n }\n }\n },\n timeout: function (ms, msg) {\n var _this = this;\n return ms < Infinity ?\n new Promise$1(function (resolve, reject) {\n var handle = setTimeout(function () { return reject(new exceptions.Timeout(msg)); }, ms);\n _this.then(resolve, reject).finally(clearTimeout.bind(null, handle));\n }) : this;\n }\n});\nif (typeof Symbol !== 'undefined' && Symbol.toStringTag)\n setProp(Promise$1.prototype, Symbol.toStringTag, 'Promise');\nglobalPSD.env = snapShot();\nfunction Listener(onFulfilled, onRejected, resolve, reject, zone) {\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.resolve = resolve;\n this.reject = reject;\n this.psd = zone;\n}\nprops(Promise$1, {\n all: function () {\n var values = getArrayOf.apply(null, arguments)\n .map(onPossibleParallellAsync);\n return new Promise$1(function (resolve, reject) {\n if (values.length === 0)\n resolve([]);\n var remaining = values.length;\n values.forEach(function (a, i) { return Promise$1.resolve(a).then(function (x) {\n values[i] = x;\n if (!--remaining)\n resolve(values);\n }, reject); });\n });\n },\n resolve: function (value) {\n if (value instanceof Promise$1)\n return value;\n if (value && typeof value.then === 'function')\n return new Promise$1(function (resolve, reject) {\n value.then(resolve, reject);\n });\n var rv = new Promise$1(INTERNAL, true, value);\n linkToPreviousPromise(rv, currentFulfiller);\n return rv;\n },\n reject: PromiseReject,\n race: function () {\n var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new Promise$1(function (resolve, reject) {\n values.map(function (value) { return Promise$1.resolve(value).then(resolve, reject); });\n });\n },\n PSD: {\n get: function () { return PSD; },\n set: function (value) { return PSD = value; }\n },\n newPSD: newScope,\n usePSD: usePSD,\n scheduler: {\n get: function () { return asap$1; },\n set: function (value) { asap$1 = value; }\n },\n rejectionMapper: {\n get: function () { return rejectionMapper; },\n set: function (value) { rejectionMapper = value; }\n },\n follow: function (fn, zoneProps) {\n return new Promise$1(function (resolve, reject) {\n return newScope(function (resolve, reject) {\n var psd = PSD;\n psd.unhandleds = [];\n psd.onunhandled = reject;\n psd.finalize = callBoth(function () {\n var _this = this;\n run_at_end_of_this_or_next_physical_tick(function () {\n _this.unhandleds.length === 0 ? resolve() : reject(_this.unhandleds[0]);\n });\n }, psd.finalize);\n fn();\n }, zoneProps, resolve, reject);\n });\n }\n});\nfunction executePromiseTask(promise, fn) {\n try {\n fn(function (value) {\n if (promise._state !== null)\n return;\n if (value === promise)\n throw new TypeError('A promise cannot be resolved with itself.');\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n if (value && typeof value.then === 'function') {\n executePromiseTask(promise, function (resolve, reject) {\n value instanceof Promise$1 ?\n value._then(resolve, reject) :\n value.then(resolve, reject);\n });\n }\n else {\n promise._state = true;\n promise._value = value;\n propagateAllListeners(promise);\n }\n if (shouldExecuteTick)\n endMicroTickScope();\n }, handleRejection.bind(null, promise));\n }\n catch (ex) {\n handleRejection(promise, ex);\n }\n}\nfunction handleRejection(promise, reason) {\n rejectingErrors.push(reason);\n if (promise._state !== null)\n return;\n var shouldExecuteTick = promise._lib && beginMicroTickScope();\n reason = rejectionMapper(reason);\n promise._state = false;\n promise._value = reason;\n debug && reason !== null && typeof reason === 'object' && !reason._promise && tryCatch(function () {\n var origProp = getPropertyDescriptor(reason, \"stack\");\n reason._promise = promise;\n setProp(reason, \"stack\", {\n get: function () {\n return stack_being_generated ?\n origProp && (origProp.get ?\n origProp.get.apply(reason) :\n origProp.value) :\n promise.stack;\n }\n });\n });\n addPossiblyUnhandledError(promise);\n propagateAllListeners(promise);\n if (shouldExecuteTick)\n endMicroTickScope();\n}\nfunction propagateAllListeners(promise) {\n var listeners = promise._listeners;\n promise._listeners = [];\n for (var i = 0, len = listeners.length; i < len; ++i) {\n propagateToListener(promise, listeners[i]);\n }\n var psd = promise._PSD;\n --psd.ref || psd.finalize();\n if (numScheduledCalls === 0) {\n ++numScheduledCalls;\n asap$1(function () {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n }, []);\n }\n}\nfunction propagateToListener(promise, listener) {\n if (promise._state === null) {\n promise._listeners.push(listener);\n return;\n }\n var cb = promise._state ? listener.onFulfilled : listener.onRejected;\n if (cb === null) {\n return (promise._state ? listener.resolve : listener.reject)(promise._value);\n }\n ++listener.psd.ref;\n ++numScheduledCalls;\n asap$1(callListener, [cb, promise, listener]);\n}\nfunction callListener(cb, promise, listener) {\n try {\n currentFulfiller = promise;\n var ret, value = promise._value;\n if (promise._state) {\n ret = cb(value);\n }\n else {\n if (rejectingErrors.length)\n rejectingErrors = [];\n ret = cb(value);\n if (rejectingErrors.indexOf(value) === -1)\n markErrorAsHandled(promise);\n }\n listener.resolve(ret);\n }\n catch (e) {\n listener.reject(e);\n }\n finally {\n currentFulfiller = null;\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n --listener.psd.ref || listener.psd.finalize();\n }\n}\nfunction getStack(promise, stacks, limit) {\n if (stacks.length === limit)\n return stacks;\n var stack = \"\";\n if (promise._state === false) {\n var failure = promise._value, errorName, message;\n if (failure != null) {\n errorName = failure.name || \"Error\";\n message = failure.message || failure;\n stack = prettyStack(failure, 0);\n }\n else {\n errorName = failure;\n message = \"\";\n }\n stacks.push(errorName + (message ? \": \" + message : \"\") + stack);\n }\n if (debug) {\n stack = prettyStack(promise._stackHolder, 2);\n if (stack && stacks.indexOf(stack) === -1)\n stacks.push(stack);\n if (promise._prev)\n getStack(promise._prev, stacks, limit);\n }\n return stacks;\n}\nfunction linkToPreviousPromise(promise, prev) {\n var numPrev = prev ? prev._numPrev + 1 : 0;\n if (numPrev < LONG_STACKS_CLIP_LIMIT) {\n promise._prev = prev;\n promise._numPrev = numPrev;\n }\n}\nfunction physicalTick() {\n beginMicroTickScope() && endMicroTickScope();\n}\nfunction beginMicroTickScope() {\n var wasRootExec = isOutsideMicroTick;\n isOutsideMicroTick = false;\n needsNewPhysicalTick = false;\n return wasRootExec;\n}\nfunction endMicroTickScope() {\n var callbacks, i, l;\n do {\n while (microtickQueue.length > 0) {\n callbacks = microtickQueue;\n microtickQueue = [];\n l = callbacks.length;\n for (i = 0; i < l; ++i) {\n var item = callbacks[i];\n item[0].apply(null, item[1]);\n }\n }\n } while (microtickQueue.length > 0);\n isOutsideMicroTick = true;\n needsNewPhysicalTick = true;\n}\nfunction finalizePhysicalTick() {\n var unhandledErrs = unhandledErrors;\n unhandledErrors = [];\n unhandledErrs.forEach(function (p) {\n p._PSD.onunhandled.call(null, p._value, p);\n });\n var finalizers = tickFinalizers.slice(0);\n var i = finalizers.length;\n while (i)\n finalizers[--i]();\n}\nfunction run_at_end_of_this_or_next_physical_tick(fn) {\n function finalizer() {\n fn();\n tickFinalizers.splice(tickFinalizers.indexOf(finalizer), 1);\n }\n tickFinalizers.push(finalizer);\n ++numScheduledCalls;\n asap$1(function () {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n }, []);\n}\nfunction addPossiblyUnhandledError(promise) {\n if (!unhandledErrors.some(function (p) { return p._value === promise._value; }))\n unhandledErrors.push(promise);\n}\nfunction markErrorAsHandled(promise) {\n var i = unhandledErrors.length;\n while (i)\n if (unhandledErrors[--i]._value === promise._value) {\n unhandledErrors.splice(i, 1);\n return;\n }\n}\nfunction PromiseReject(reason) {\n return new Promise$1(INTERNAL, false, reason);\n}\nfunction wrap(fn, errorCatcher) {\n var psd = PSD;\n return function () {\n var wasRootExec = beginMicroTickScope(), outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn.apply(this, arguments);\n }\n catch (e) {\n errorCatcher && errorCatcher(e);\n }\n finally {\n switchToZone(outerScope, false);\n if (wasRootExec)\n endMicroTickScope();\n }\n };\n}\nvar task = { awaits: 0, echoes: 0, id: 0 };\nvar taskCounter = 0;\nvar zoneStack = [];\nvar zoneEchoes = 0;\nvar totalEchoes = 0;\nvar zone_id_counter = 0;\nfunction newScope(fn, props$$1, a1, a2) {\n var parent = PSD, psd = Object.create(parent);\n psd.parent = parent;\n psd.ref = 0;\n psd.global = false;\n psd.id = ++zone_id_counter;\n var globalEnv = globalPSD.env;\n psd.env = patchGlobalPromise ? {\n Promise: Promise$1,\n PromiseProp: { value: Promise$1, configurable: true, writable: true },\n all: Promise$1.all,\n race: Promise$1.race,\n resolve: Promise$1.resolve,\n reject: Promise$1.reject,\n nthen: getPatchedPromiseThen(globalEnv.nthen, psd),\n gthen: getPatchedPromiseThen(globalEnv.gthen, psd)\n } : {};\n if (props$$1)\n extend(psd, props$$1);\n ++parent.ref;\n psd.finalize = function () {\n --this.parent.ref || this.parent.finalize();\n };\n var rv = usePSD(psd, fn, a1, a2);\n if (psd.ref === 0)\n psd.finalize();\n return rv;\n}\nfunction incrementExpectedAwaits() {\n if (!task.id)\n task.id = ++taskCounter;\n ++task.awaits;\n task.echoes += ZONE_ECHO_LIMIT;\n return task.id;\n}\nfunction decrementExpectedAwaits(sourceTaskId) {\n if (!task.awaits || (sourceTaskId && sourceTaskId !== task.id))\n return;\n if (--task.awaits === 0)\n task.id = 0;\n task.echoes = task.awaits * ZONE_ECHO_LIMIT;\n}\nfunction onPossibleParallellAsync(possiblePromise) {\n if (task.echoes && possiblePromise && possiblePromise.constructor === NativePromise) {\n incrementExpectedAwaits();\n return possiblePromise.then(function (x) {\n decrementExpectedAwaits();\n return x;\n }, function (e) {\n decrementExpectedAwaits();\n return rejection(e);\n });\n }\n return possiblePromise;\n}\nfunction zoneEnterEcho(targetZone) {\n ++totalEchoes;\n if (!task.echoes || --task.echoes === 0) {\n task.echoes = task.id = 0;\n }\n zoneStack.push(PSD);\n switchToZone(targetZone, true);\n}\nfunction zoneLeaveEcho() {\n var zone = zoneStack[zoneStack.length - 1];\n zoneStack.pop();\n switchToZone(zone, false);\n}\nfunction switchToZone(targetZone, bEnteringZone) {\n var currentZone = PSD;\n if (bEnteringZone ? task.echoes && (!zoneEchoes++ || targetZone !== PSD) : zoneEchoes && (!--zoneEchoes || targetZone !== PSD)) {\n enqueueNativeMicroTask(bEnteringZone ? zoneEnterEcho.bind(null, targetZone) : zoneLeaveEcho);\n }\n if (targetZone === PSD)\n return;\n PSD = targetZone;\n if (currentZone === globalPSD)\n globalPSD.env = snapShot();\n if (patchGlobalPromise) {\n var GlobalPromise = globalPSD.env.Promise;\n var targetEnv = targetZone.env;\n nativePromiseProto.then = targetEnv.nthen;\n GlobalPromise.prototype.then = targetEnv.gthen;\n if (currentZone.global || targetZone.global) {\n Object.defineProperty(_global, 'Promise', targetEnv.PromiseProp);\n GlobalPromise.all = targetEnv.all;\n GlobalPromise.race = targetEnv.race;\n GlobalPromise.resolve = targetEnv.resolve;\n GlobalPromise.reject = targetEnv.reject;\n }\n }\n}\nfunction snapShot() {\n var GlobalPromise = _global.Promise;\n return patchGlobalPromise ? {\n Promise: GlobalPromise,\n PromiseProp: Object.getOwnPropertyDescriptor(_global, \"Promise\"),\n all: GlobalPromise.all,\n race: GlobalPromise.race,\n resolve: GlobalPromise.resolve,\n reject: GlobalPromise.reject,\n nthen: nativePromiseProto.then,\n gthen: GlobalPromise.prototype.then\n } : {};\n}\nfunction usePSD(psd, fn, a1, a2, a3) {\n var outerScope = PSD;\n try {\n switchToZone(psd, true);\n return fn(a1, a2, a3);\n }\n finally {\n switchToZone(outerScope, false);\n }\n}\nfunction enqueueNativeMicroTask(job) {\n nativePromiseThen.call(resolvedNativePromise, job);\n}\nfunction nativeAwaitCompatibleWrap(fn, zone, possibleAwait) {\n return typeof fn !== 'function' ? fn : function () {\n var outerZone = PSD;\n if (possibleAwait)\n incrementExpectedAwaits();\n switchToZone(zone, true);\n try {\n return fn.apply(this, arguments);\n }\n finally {\n switchToZone(outerZone, false);\n }\n };\n}\nfunction getPatchedPromiseThen(origThen, zone) {\n return function (onResolved, onRejected) {\n return origThen.call(this, nativeAwaitCompatibleWrap(onResolved, zone, false), nativeAwaitCompatibleWrap(onRejected, zone, false));\n };\n}\nvar UNHANDLEDREJECTION = \"unhandledrejection\";\nfunction globalError(err, promise) {\n var rv;\n try {\n rv = promise.onuncatched(err);\n }\n catch (e) { }\n if (rv !== false)\n try {\n var event, eventData = { promise: promise, reason: err };\n if (_global.document && document.createEvent) {\n event = document.createEvent('Event');\n event.initEvent(UNHANDLEDREJECTION, true, true);\n extend(event, eventData);\n }\n else if (_global.CustomEvent) {\n event = new CustomEvent(UNHANDLEDREJECTION, { detail: eventData });\n extend(event, eventData);\n }\n if (event && _global.dispatchEvent) {\n dispatchEvent(event);\n if (!_global.PromiseRejectionEvent && _global.onunhandledrejection)\n try {\n _global.onunhandledrejection(event);\n }\n catch (_) { }\n }\n if (debug && event && !event.defaultPrevented) {\n console.warn(\"Unhandled rejection: \" + (err.stack || err));\n }\n }\n catch (e) { }\n}\nvar rejection = Promise$1.reject;\n\nfunction tempTransaction(db, mode, storeNames, fn) {\n if (!db._state.openComplete && (!PSD.letThrough)) {\n if (!db._state.isBeingOpened) {\n if (!db._options.autoOpen)\n return rejection(new exceptions.DatabaseClosed());\n db.open().catch(nop);\n }\n return db._state.dbReadyPromise.then(function () { return tempTransaction(db, mode, storeNames, fn); });\n }\n else {\n var trans = db._createTransaction(mode, storeNames, db._dbSchema);\n try {\n trans.create();\n }\n catch (ex) {\n return rejection(ex);\n }\n return trans._promise(mode, function (resolve, reject) {\n return newScope(function () {\n PSD.trans = trans;\n return fn(resolve, reject, trans);\n });\n }).then(function (result) {\n return trans._completion.then(function () { return result; });\n });\n }\n}\n\nvar DEXIE_VERSION = '3.0.0-alpha.8';\nvar maxString = String.fromCharCode(65535);\nvar minKey = -Infinity;\nvar INVALID_KEY_ARGUMENT = \"Invalid key provided. Keys must be of type string, number, Date or Array<string | number | Date>.\";\nvar STRING_EXPECTED = \"String expected.\";\nvar connections = [];\nvar isIEOrEdge = typeof navigator !== 'undefined' && /(MSIE|Trident|Edge)/.test(navigator.userAgent);\nvar hasIEDeleteObjectStoreBug = isIEOrEdge;\nvar hangsOnDeleteLargeKeyRange = isIEOrEdge;\nvar dexieStackFrameFilter = function (frame) { return !/(dexie\\.js|dexie\\.min\\.js)/.test(frame); };\nvar DBNAMES_DB = '__dbnames';\nvar READONLY = 'readonly';\nvar READWRITE = 'readwrite';\n\nfunction combine(filter1, filter2) {\n return filter1 ?\n filter2 ?\n function () { return filter1.apply(this, arguments) && filter2.apply(this, arguments); } :\n filter1 :\n filter2;\n}\n\nvar AnyRange = {\n type: 3 ,\n lower: -Infinity,\n lowerOpen: false,\n upper: [[]],\n upperOpen: false\n};\n\nvar Table = (function () {\n function Table() {\n }\n Table.prototype._trans = function (mode, fn, writeLocked) {\n var trans = this._tx || PSD.trans;\n var tableName = this.name;\n function checkTableInTransaction(resolve, reject, trans) {\n if (!trans.schema[tableName])\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n return fn(trans.idbtrans, trans);\n }\n var wasRootExec = beginMicroTickScope();\n try {\n return trans && trans.db === this.db ?\n trans === PSD.trans ?\n trans._promise(mode, checkTableInTransaction, writeLocked) :\n newScope(function () { return trans._promise(mode, checkTableInTransaction, writeLocked); }, { trans: trans, transless: PSD.transless || PSD }) :\n tempTransaction(this.db, mode, [this.name], checkTableInTransaction);\n }\n finally {\n if (wasRootExec)\n endMicroTickScope();\n }\n };\n Table.prototype.get = function (keyOrCrit, cb) {\n var _this = this;\n if (keyOrCrit && keyOrCrit.constructor === Object)\n return this.where(keyOrCrit).first(cb);\n return this._trans('readonly', function (trans) {\n return _this.core.get({ trans: trans, key: keyOrCrit })\n .then(function (res) { return _this.hook.reading.fire(res); });\n }).then(cb);\n };\n Table.prototype.where = function (indexOrCrit) {\n if (typeof indexOrCrit === 'string')\n return new this.db.WhereClause(this, indexOrCrit);\n if (isArray(indexOrCrit))\n return new this.db.WhereClause(this, \"[\" + indexOrCrit.join('+') + \"]\");\n var keyPaths = keys(indexOrCrit);\n if (keyPaths.length === 1)\n return this\n .where(keyPaths[0])\n .equals(indexOrCrit[keyPaths[0]]);\n var compoundIndex = this.schema.indexes.concat(this.schema.primKey).filter(function (ix) {\n return ix.compound &&\n keyPaths.every(function (keyPath) { return ix.keyPath.indexOf(keyPath) >= 0; }) &&\n ix.keyPath.every(function (keyPath) { return keyPaths.indexOf(keyPath) >= 0; });\n })[0];\n if (compoundIndex && this.db._maxKey !== maxString)\n return this\n .where(compoundIndex.name)\n .equals(compoundIndex.keyPath.map(function (kp) { return indexOrCrit[kp]; }));\n if (!compoundIndex && debug)\n console.warn(\"The query \" + JSON.stringify(indexOrCrit) + \" on \" + this.name + \" would benefit of a \" +\n (\"compound index [\" + keyPaths.join('+') + \"]\"));\n var idxByName = this.schema.idxByName;\n var idb = this.db._deps.indexedDB;\n function equals(a, b) {\n try {\n return idb.cmp(a, b) === 0;\n }\n catch (e) {\n return false;\n }\n }\n var _a = keyPaths.reduce(function (_a, keyPath) {\n var prevIndex = _a[0], prevFilterFn = _a[1];\n var index = idxByName[keyPath];\n var value = indexOrCrit[keyPath];\n return [\n prevIndex || index,\n prevIndex || !index ?\n combine(prevFilterFn, index && index.multi ?\n function (x) {\n var prop = getByKeyPath(x, keyPath);\n return isArray(prop) && prop.some(function (item) { return equals(value, item); });\n } : function (x) { return equals(value, getByKeyPath(x, keyPath)); })\n : prevFilterFn\n ];\n }, [null, null]), idx = _a[0], filterFunction = _a[1];\n return idx ?\n this.where(idx.name).equals(indexOrCrit[idx.keyPath])\n .filter(filterFunction) :\n compoundIndex ?\n this.filter(filterFunction) :\n this.where(keyPaths).equals('');\n };\n Table.prototype.filter = function (filterFunction) {\n return this.toCollection().and(filterFunction);\n };\n Table.prototype.count = function (thenShortcut) {\n return this.toCollection().count(thenShortcut);\n };\n Table.prototype.offset = function (offset) {\n return this.toCollection().offset(offset);\n };\n Table.prototype.limit = function (numRows) {\n return this.toCollection().limit(numRows);\n };\n Table.prototype.each = function (callback) {\n return this.toCollection().each(callback);\n };\n Table.prototype.toArray = function (thenShortcut) {\n return this.toCollection().toArray(thenShortcut);\n };\n Table.prototype.toCollection = function () {\n return new this.db.Collection(new this.db.WhereClause(this));\n };\n Table.prototype.orderBy = function (index) {\n return new this.db.Collection(new this.db.WhereClause(this, isArray(index) ?\n \"[\" + index.join('+') + \"]\" :\n index));\n };\n Table.prototype.reverse = function () {\n return this.toCollection().reverse();\n };\n Table.prototype.mapToClass = function (constructor) {\n this.schema.mappedClass = constructor;\n var readHook = function (obj) {\n if (!obj)\n return obj;\n var res = Object.create(constructor.prototype);\n for (var m in obj)\n if (hasOwn(obj, m))\n try {\n res[m] = obj[m];\n }\n catch (_) { }\n return res;\n };\n if (this.schema.readHook) {\n this.hook.reading.unsubscribe(this.schema.readHook);\n }\n this.schema.readHook = readHook;\n this.hook(\"reading\", readHook);\n return constructor;\n };\n Table.prototype.defineClass = function () {\n function Class(content) {\n extend(this, content);\n }\n \n return this.mapToClass(Class);\n };\n Table.prototype.add = function (obj, key) {\n var _this = this;\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({ trans: trans, type: 'add', keys: key != null ? [key] : null, values: [obj] });\n }).then(function (res) { return res.numFailures ? Promise$1.reject(res.failures[0]) : res.lastResult; })\n .then(function (lastResult) {\n if (!_this.core.schema.primaryKey.outbound) {\n try {\n setByKeyPath(obj, _this.core.schema.primaryKey.keyPath, lastResult);\n }\n catch (_) { }\n \n }\n return lastResult;\n });\n };\n Table.prototype.update = function (keyOrObject, modifications) {\n if (typeof modifications !== 'object' || isArray(modifications))\n throw new exceptions.InvalidArgument(\"Modifications must be an object.\");\n if (typeof keyOrObject === 'object' && !isArray(keyOrObject)) {\n keys(modifications).forEach(function (keyPath) {\n setByKeyPath(keyOrObject, keyPath, modifications[keyPath]);\n });\n var key = getByKeyPath(keyOrObject, this.schema.primKey.keyPath);\n if (key === undefined)\n return rejection(new exceptions.InvalidArgument(\"Given object does not contain its primary key\"));\n return this.where(\":id\").equals(key).modify(modifications);\n }\n else {\n return this.where(\":id\").equals(keyOrObject).modify(modifications);\n }\n };\n Table.prototype.put = function (obj, key) {\n var _this = this;\n return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'put', values: [obj], keys: key != null ? [key] : null }); })\n .then(function (res) { return res.numFailures ? Promise$1.reject(res.failures[0]) : res.lastResult; })\n .then(function (lastResult) {\n if (!_this.core.schema.primaryKey.outbound) {\n try {\n setByKeyPath(obj, _this.core.schema.primaryKey.keyPath, lastResult);\n }\n catch (_) { }\n \n }\n return lastResult;\n });\n };\n Table.prototype.delete = function (key) {\n var _this = this;\n return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'delete', keys: [key] }); })\n .then(function (res) { return res.numFailures ? Promise$1.reject(res.failures[0]) : undefined; });\n };\n Table.prototype.clear = function () {\n var _this = this;\n return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'deleteRange', range: AnyRange }); })\n .then(function (res) { return res.numFailures ? Promise$1.reject(res.failures[0]) : undefined; });\n };\n Table.prototype.bulkGet = function (keys$$1) {\n var _this = this;\n return this._trans('readonly', function (trans) {\n return _this.core.getMany({\n keys: keys$$1,\n trans: trans\n });\n });\n };\n Table.prototype.bulkAdd = function (objects, keys$$1) {\n var _this = this;\n return this._trans('readwrite', function (trans) {\n var outbound = _this.core.schema.primaryKey.outbound;\n if (!outbound && keys$$1)\n throw new exceptions.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");\n if (keys$$1 && keys$$1.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n return _this.core.mutate({ trans: trans, type: 'add', keys: keys$$1, values: objects })\n .then(function (_a) {\n var numFailures = _a.numFailures, lastResult = _a.lastResult, failures = _a.failures;\n if (numFailures === 0)\n return lastResult;\n throw new BulkError(_this.name + \".bulkAdd(): \" + numFailures + \" of \" + objects.length + \" operations failed\", Object.keys(failures).map(function (pos) { return failures[pos]; }));\n });\n });\n };\n Table.prototype.bulkPut = function (objects, keys$$1) {\n var _this = this;\n return this._trans('readwrite', function (trans) {\n var outbound = _this.core.schema.primaryKey.outbound;\n if (!outbound && keys$$1)\n throw new exceptions.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");\n if (keys$$1 && keys$$1.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n return _this.core.mutate({ trans: trans, type: 'put', keys: keys$$1, values: objects })\n .then(function (_a) {\n var numFailures = _a.numFailures, lastResult = _a.lastResult, failures = _a.failures;\n if (numFailures === 0)\n return lastResult;\n throw new BulkError(_this.name + \".bulkPut(): \" + numFailures + \" of \" + objects.length + \" operations failed\", Object.keys(failures).map(function (pos) { return failures[pos]; }));\n });\n });\n };\n Table.prototype.bulkDelete = function (keys$$1) {\n var _this = this;\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({ trans: trans, type: 'delete', keys: keys$$1 });\n }).then(function (_a) {\n var numFailures = _a.numFailures, lastResult = _a.lastResult, failures = _a.failures;\n if (numFailures === 0)\n return lastResult;\n throw new BulkError(_this.name + \".bulkDelete(): \" + numFailures + \" of \" + keys$$1.length + \" operations failed\", failures);\n });\n };\n return Table;\n}());\n\nfunction Events(ctx) {\n var evs = {};\n var rv = function (eventName, subscriber) {\n if (subscriber) {\n var i = arguments.length, args = new Array(i - 1);\n while (--i)\n args[i - 1] = arguments[i];\n evs[eventName].subscribe.apply(null, args);\n return ctx;\n }\n else if (typeof (eventName) === 'string') {\n return evs[eventName];\n }\n };\n rv.addEventType = add;\n for (var i = 1, l = arguments.length; i < l; ++i) {\n add(arguments[i]);\n }\n return rv;\n function add(eventName, chainFunction, defaultFunction) {\n if (typeof eventName === 'object')\n return addConfiguredEvents(eventName);\n if (!chainFunction)\n chainFunction = reverseStoppableEventChain;\n if (!defaultFunction)\n defaultFunction = nop;\n var context = {\n subscribers: [],\n fire: defaultFunction,\n subscribe: function (cb) {\n if (context.subscribers.indexOf(cb) === -1) {\n context.subscribers.push(cb);\n context.fire = chainFunction(context.fire, cb);\n }\n },\n unsubscribe: function (cb) {\n context.subscribers = context.subscribers.filter(function (fn) { return fn !== cb; });\n context.fire = context.subscribers.reduce(chainFunction, defaultFunction);\n }\n };\n evs[eventName] = rv[eventName] = context;\n return context;\n }\n function addConfiguredEvents(cfg) {\n keys(cfg).forEach(function (eventName) {\n var args = cfg[eventName];\n if (isArray(args)) {\n add(eventName, cfg[eventName][0], cfg[eventName][1]);\n }\n else if (args === 'asap') {\n var context = add(eventName, mirror, function fire() {\n var i = arguments.length, args = new Array(i);\n while (i--)\n args[i] = arguments[i];\n context.subscribers.forEach(function (fn) {\n asap(function fireEvent() {\n fn.apply(null, args);\n });\n });\n });\n }\n else\n throw new exceptions.InvalidArgument(\"Invalid event config\");\n });\n }\n}\n\nfunction makeClassConstructor(prototype, constructor) {\n derive(constructor).from({ prototype: prototype });\n return constructor;\n}\n\nfunction createTableConstructor(db) {\n return makeClassConstructor(Table.prototype, function Table$$1(name, tableSchema, trans) {\n this.db = db;\n this._tx = trans;\n this.name = name;\n this.schema = tableSchema;\n this.hook = db._allTables[name] ? db._allTables[name].hook : Events(null, {\n \"creating\": [hookCreatingChain, nop],\n \"reading\": [pureFunctionChain, mirror],\n \"updating\": [hookUpdatingChain, nop],\n \"deleting\": [hookDeletingChain, nop]\n });\n });\n}\n\nfunction isPlainKeyRange(ctx, ignoreLimitFilter) {\n return !(ctx.filter || ctx.algorithm || ctx.or) &&\n (ignoreLimitFilter ? ctx.justLimit : !ctx.replayFilter);\n}\nfunction addFilter(ctx, fn) {\n ctx.filter = combine(ctx.filter, fn);\n}\nfunction addReplayFilter(ctx, factory, isLimitFilter) {\n var curr = ctx.replayFilter;\n ctx.replayFilter = curr ? function () { return combine(curr(), factory()); } : factory;\n ctx.justLimit = isLimitFilter && !curr;\n}\nfunction addMatchFilter(ctx, fn) {\n ctx.isMatch = combine(ctx.isMatch, fn);\n}\nfunction getIndexOrStore(ctx, coreSchema) {\n if (ctx.isPrimKey)\n return coreSchema.primaryKey;\n var index = coreSchema.getIndexByKeyPath(ctx.index);\n if (!index)\n throw new exceptions.Schema(\"KeyPath \" + ctx.index + \" on object store \" + coreSchema.name + \" is not indexed\");\n return index;\n}\nfunction openCursor(ctx, coreTable, trans) {\n var index = getIndexOrStore(ctx, coreTable.schema);\n return coreTable.openCursor({\n trans: trans,\n values: !ctx.keysOnly,\n reverse: ctx.dir === 'prev',\n unique: !!ctx.unique,\n query: {\n index: index,\n range: ctx.range\n }\n });\n}\nfunction iter(ctx, fn, coreTrans, coreTable) {\n var filter = ctx.replayFilter ? combine(ctx.filter, ctx.replayFilter()) : ctx.filter;\n if (!ctx.or) {\n return iterate(openCursor(ctx, coreTable, coreTrans), combine(ctx.algorithm, filter), fn, !ctx.keysOnly && ctx.valueMapper);\n }\n else {\n var set_1 = {};\n var union = function (item, cursor, advance) {\n if (!filter || filter(cursor, advance, function (result) { return cursor.stop(result); }, function (err) { return cursor.fail(err); })) {\n var primaryKey = cursor.primaryKey;\n var key = '' + primaryKey;\n if (key === '[object ArrayBuffer]')\n key = '' + new Uint8Array(primaryKey);\n if (!hasOwn(set_1, key)) {\n set_1[key] = true;\n fn(item, cursor, advance);\n }\n }\n };\n return Promise.all([\n ctx.or._iterate(union, coreTrans),\n iterate(openCursor(ctx, coreTable, coreTrans), ctx.algorithm, union, !ctx.keysOnly && ctx.valueMapper)\n ]);\n }\n}\nfunction iterate(cursorPromise, filter, fn, valueMapper) {\n var mappedFn = valueMapper ? function (x, c, a) { return fn(valueMapper(x), c, a); } : fn;\n var wrappedFn = wrap(mappedFn);\n return cursorPromise.then(function (cursor) {\n if (cursor) {\n return cursor.start(function () {\n var c = function () { return cursor.continue(); };\n if (!filter || filter(cursor, function (advancer) { return c = advancer; }, function (val) { cursor.stop(val); c = nop; }, function (e) { cursor.fail(e); c = nop; }))\n wrappedFn(cursor.value, cursor, function (advancer) { return c = advancer; });\n c();\n });\n }\n });\n}\n\nvar Collection = (function () {\n function Collection() {\n }\n Collection.prototype._read = function (fn, cb) {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readonly', fn).then(cb);\n };\n Collection.prototype._write = function (fn) {\n var ctx = this._ctx;\n return ctx.error ?\n ctx.table._trans(null, rejection.bind(null, ctx.error)) :\n ctx.table._trans('readwrite', fn, \"locked\");\n };\n Collection.prototype._addAlgorithm = function (fn) {\n var ctx = this._ctx;\n ctx.algorithm = combine(ctx.algorithm, fn);\n };\n Collection.prototype._iterate = function (fn, coreTrans) {\n return iter(this._ctx, fn, coreTrans, this._ctx.table.core);\n };\n Collection.prototype.clone = function (props$$1) {\n var rv = Object.create(this.constructor.prototype), ctx = Object.create(this._ctx);\n if (props$$1)\n extend(ctx, props$$1);\n rv._ctx = ctx;\n return rv;\n };\n Collection.prototype.raw = function () {\n this._ctx.valueMapper = null;\n return this;\n };\n Collection.prototype.each = function (fn) {\n var ctx = this._ctx;\n return this._read(function (trans) { return iter(ctx, fn, trans, ctx.table.core); });\n };\n Collection.prototype.count = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n var coreTable = ctx.table.core;\n if (isPlainKeyRange(ctx, true)) {\n return coreTable.count({\n trans: trans,\n query: {\n index: getIndexOrStore(ctx, coreTable.schema),\n range: ctx.range\n }\n }).then(function (count) { return Math.min(count, ctx.limit); });\n }\n else {\n var count = 0;\n return iter(ctx, function () { ++count; return false; }, trans, coreTable)\n .then(function () { return count; });\n }\n }).then(cb);\n };\n Collection.prototype.sortBy = function (keyPath, cb) {\n var parts = keyPath.split('.').reverse(), lastPart = parts[0], lastIndex = parts.length - 1;\n function getval(obj, i) {\n if (i)\n return getval(obj[parts[i]], i - 1);\n return obj[lastPart];\n }\n var order = this._ctx.dir === \"next\" ? 1 : -1;\n function sorter(a, b) {\n var aVal = getval(a, lastIndex), bVal = getval(b, lastIndex);\n return aVal < bVal ? -order : aVal > bVal ? order : 0;\n }\n return this.toArray(function (a) {\n return a.sort(sorter);\n }).then(cb);\n };\n Collection.prototype.toArray = function (cb) {\n var _this = this;\n return this._read(function (trans) {\n var ctx = _this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n var valueMapper_1 = ctx.valueMapper;\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n limit: ctx.limit,\n values: true,\n query: {\n index: index,\n range: ctx.range\n }\n }).then(function (_a) {\n var result = _a.result;\n return valueMapper_1 ? result.map(valueMapper_1) : result;\n });\n }\n else {\n var a_1 = [];\n return iter(ctx, function (item) { return a_1.push(item); }, trans, ctx.table.core).then(function () { return a_1; });\n }\n }, cb);\n };\n Collection.prototype.offset = function (offset) {\n var ctx = this._ctx;\n if (offset <= 0)\n return this;\n ctx.offset += offset;\n if (isPlainKeyRange(ctx)) {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function (cursor, advance) {\n if (offsetLeft === 0)\n return true;\n if (offsetLeft === 1) {\n --offsetLeft;\n return false;\n }\n advance(function () {\n cursor.advance(offsetLeft);\n offsetLeft = 0;\n });\n return false;\n };\n });\n }\n else {\n addReplayFilter(ctx, function () {\n var offsetLeft = offset;\n return function () { return (--offsetLeft < 0); };\n });\n }\n return this;\n };\n Collection.prototype.limit = function (numRows) {\n this._ctx.limit = Math.min(this._ctx.limit, numRows);\n addReplayFilter(this._ctx, function () {\n var rowsLeft = numRows;\n return function (cursor, advance, resolve) {\n if (--rowsLeft <= 0)\n advance(resolve);\n return rowsLeft >= 0;\n };\n }, true);\n return this;\n };\n Collection.prototype.until = function (filterFunction, bIncludeStopEntry) {\n addFilter(this._ctx, function (cursor, advance, resolve) {\n if (filterFunction(cursor.value)) {\n advance(resolve);\n return bIncludeStopEntry;\n }\n else {\n return true;\n }\n });\n return this;\n };\n Collection.prototype.first = function (cb) {\n return this.limit(1).toArray(function (a) { return a[0]; }).then(cb);\n };\n Collection.prototype.last = function (cb) {\n return this.reverse().first(cb);\n };\n Collection.prototype.filter = function (filterFunction) {\n addFilter(this._ctx, function (cursor) {\n return filterFunction(cursor.value);\n });\n addMatchFilter(this._ctx, filterFunction);\n return this;\n };\n Collection.prototype.and = function (filter) {\n return this.filter(filter);\n };\n Collection.prototype.or = function (indexName) {\n return new this.db.WhereClause(this._ctx.table, indexName, this);\n };\n Collection.prototype.reverse = function () {\n this._ctx.dir = (this._ctx.dir === \"prev\" ? \"next\" : \"prev\");\n if (this._ondirectionchange)\n this._ondirectionchange(this._ctx.dir);\n return this;\n };\n Collection.prototype.desc = function () {\n return this.reverse();\n };\n Collection.prototype.eachKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.key, cursor); });\n };\n Collection.prototype.eachUniqueKey = function (cb) {\n this._ctx.unique = \"unique\";\n return this.eachKey(cb);\n };\n Collection.prototype.eachPrimaryKey = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n return this.each(function (val, cursor) { cb(cursor.primaryKey, cursor); });\n };\n Collection.prototype.keys = function (cb) {\n var ctx = this._ctx;\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.key);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.primaryKeys = function (cb) {\n var ctx = this._ctx;\n if (ctx.dir === 'next' && isPlainKeyRange(ctx, true) && ctx.limit > 0) {\n return this._read(function (trans) {\n var index = getIndexOrStore(ctx, ctx.table.core.schema);\n return ctx.table.core.query({\n trans: trans,\n values: false,\n limit: ctx.limit,\n query: {\n index: index,\n range: ctx.range\n }\n });\n }).then(function (_a) {\n var result = _a.result;\n return result;\n }).then(cb);\n }\n ctx.keysOnly = !ctx.isMatch;\n var a = [];\n return this.each(function (item, cursor) {\n a.push(cursor.primaryKey);\n }).then(function () {\n return a;\n }).then(cb);\n };\n Collection.prototype.uniqueKeys = function (cb) {\n this._ctx.unique = \"unique\";\n return this.keys(cb);\n };\n Collection.prototype.firstKey = function (cb) {\n return this.limit(1).keys(function (a) { return a[0]; }).then(cb);\n };\n Collection.prototype.lastKey = function (cb) {\n return this.reverse().firstKey(cb);\n };\n Collection.prototype.distinct = function () {\n var ctx = this._ctx, idx = ctx.index && ctx.table.schema.idxByName[ctx.index];\n if (!idx || !idx.multi)\n return this;\n var set = {};\n addFilter(this._ctx, function (cursor) {\n var strKey = cursor.primaryKey.toString();\n var found = hasOwn(set, strKey);\n set[strKey] = true;\n return !found;\n });\n return this;\n };\n Collection.prototype.modify = function (changes) {\n var _this = this;\n var ctx = this._ctx;\n return this._write(function (trans) {\n var modifyer;\n if (typeof changes === 'function') {\n modifyer = changes;\n }\n else {\n var keyPaths = keys(changes);\n var numKeys = keyPaths.length;\n modifyer = function (item) {\n var anythingModified = false;\n for (var i = 0; i < numKeys; ++i) {\n var keyPath = keyPaths[i], val = changes[keyPath];\n if (getByKeyPath(item, keyPath) !== val) {\n setByKeyPath(item, keyPath, val);\n anythingModified = true;\n }\n }\n return anythingModified;\n };\n }\n var coreTable = ctx.table.core;\n var _a = coreTable.schema.primaryKey, outbound = _a.outbound, extractKey = _a.extractKey;\n var limit = 'testmode' in Dexie ? 1 : 2000;\n var cmp = _this.db.core.cmp;\n var totalFailures = [];\n var successCount = 0;\n var failedKeys = [];\n var applyMutateResult = function (expectedCount, res) {\n var failures = res.failures, numFailures = res.numFailures;\n successCount += expectedCount - numFailures;\n for (var pos in failures) {\n totalFailures.push(failures[pos]);\n }\n };\n return _this.clone().primaryKeys().then(function (keys$$1) {\n var nextChunk = function (offset) {\n var count = Math.min(limit, keys$$1.length - offset);\n return coreTable.getMany({ trans: trans, keys: keys$$1.slice(offset, offset + count) }).then(function (values) {\n var addValues = [];\n var putValues = [];\n var putKeys = outbound ? [] : null;\n var deleteKeys = [];\n for (var i = 0; i < count; ++i) {\n var origValue = values[i];\n var ctx_1 = {\n value: deepClone(origValue),\n primKey: keys$$1[offset + i]\n };\n if (modifyer.call(ctx_1, ctx_1.value, ctx_1) !== false) {\n if (ctx_1.value == null) {\n deleteKeys.push(keys$$1[offset + i]);\n }\n else if (!outbound && cmp(extractKey(origValue), extractKey(ctx_1.value)) !== 0) {\n deleteKeys.push(keys$$1[offset + i]);\n addValues.push(ctx_1.value);\n }\n else {\n putValues.push(ctx_1.value);\n if (outbound)\n putKeys.push(keys$$1[offset + i]);\n }\n }\n }\n return Promise.resolve(addValues.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'add', values: addValues })\n .then(function (res) {\n for (var pos in res.failures) {\n deleteKeys.splice(parseInt(pos), 1);\n }\n applyMutateResult(addValues.length, res);\n })).then(function (res) { return putValues.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'put', keys: putKeys, values: putValues })\n .then(function (res) { return applyMutateResult(putValues.length, res); }); }).then(function () { return deleteKeys.length > 0 &&\n coreTable.mutate({ trans: trans, type: 'delete', keys: deleteKeys })\n .then(function (res) { return applyMutateResult(deleteKeys.length, res); }); }).then(function () {\n return keys$$1.length > offset + count && nextChunk(offset + limit);\n });\n });\n };\n return nextChunk(0).then(function () {\n if (totalFailures.length > 0)\n throw new ModifyError(\"Error modifying one or more objects\", totalFailures, successCount, failedKeys);\n return keys$$1.length;\n });\n });\n });\n };\n Collection.prototype.delete = function () {\n var ctx = this._ctx, range = ctx.range;\n if (isPlainKeyRange(ctx) &&\n ((ctx.isPrimKey && !hangsOnDeleteLargeKeyRange) || range.type === 3 ))\n {\n return this._write(function (trans) {\n var primaryKey = ctx.table.core.schema.primaryKey;\n var coreRange = range;\n return ctx.table.core.count({ trans: trans, query: { index: primaryKey, range: coreRange } }).then(function (count) {\n return ctx.table.core.mutate({ trans: trans, type: 'deleteRange', range: coreRange })\n .then(function (_a) {\n var failures = _a.failures, lastResult = _a.lastResult, results = _a.results, numFailures = _a.numFailures;\n if (numFailures)\n throw new ModifyError(\"Could not delete some values\", Object.keys(failures).map(function (pos) { return failures[pos]; }), count - numFailures);\n return count - numFailures;\n });\n });\n });\n }\n return this.modify(function (value, ctx) { return ctx.value = null; });\n };\n return Collection;\n}());\n\nfunction createCollectionConstructor(db) {\n return makeClassConstructor(Collection.prototype, function Collection$$1(whereClause, keyRangeGenerator) {\n this.db = db;\n var keyRange = AnyRange, error = null;\n if (keyRangeGenerator)\n try {\n keyRange = keyRangeGenerator();\n }\n catch (ex) {\n error = ex;\n }\n var whereCtx = whereClause._ctx;\n var table = whereCtx.table;\n var readingHook = table.hook.reading.fire;\n this._ctx = {\n table: table,\n index: whereCtx.index,\n isPrimKey: (!whereCtx.index || (table.schema.primKey.keyPath && whereCtx.index === table.schema.primKey.name)),\n range: keyRange,\n keysOnly: false,\n dir: \"next\",\n unique: \"\",\n algorithm: null,\n filter: null,\n replayFilter: null,\n justLimit: true,\n isMatch: null,\n offset: 0,\n limit: Infinity,\n error: error,\n or: whereCtx.or,\n valueMapper: readingHook !== mirror ? readingHook : null\n };\n });\n}\n\nfunction simpleCompare(a, b) {\n return a < b ? -1 : a === b ? 0 : 1;\n}\nfunction simpleCompareReverse(a, b) {\n return a > b ? -1 : a === b ? 0 : 1;\n}\n\nfunction fail(collectionOrWhereClause, err, T) {\n var collection = collectionOrWhereClause instanceof WhereClause ?\n new collectionOrWhereClause.Collection(collectionOrWhereClause) :\n collectionOrWhereClause;\n collection._ctx.error = T ? new T(err) : new TypeError(err);\n return collection;\n}\nfunction emptyCollection(whereClause) {\n return new whereClause.Collection(whereClause, function () { return rangeEqual(\"\"); }).limit(0);\n}\nfunction upperFactory(dir) {\n return dir === \"next\" ?\n function (s) { return s.toUpperCase(); } :\n function (s) { return s.toLowerCase(); };\n}\nfunction lowerFactory(dir) {\n return dir === \"next\" ?\n function (s) { return s.toLowerCase(); } :\n function (s) { return s.toUpperCase(); };\n}\nfunction nextCasing(key, lowerKey, upperNeedle, lowerNeedle, cmp, dir) {\n var length = Math.min(key.length, lowerNeedle.length);\n var llp = -1;\n for (var i = 0; i < length; ++i) {\n var lwrKeyChar = lowerKey[i];\n if (lwrKeyChar !== lowerNeedle[i]) {\n if (cmp(key[i], upperNeedle[i]) < 0)\n return key.substr(0, i) + upperNeedle[i] + upperNeedle.substr(i + 1);\n if (cmp(key[i], lowerNeedle[i]) < 0)\n return key.substr(0, i) + lowerNeedle[i] + upperNeedle.substr(i + 1);\n if (llp >= 0)\n return key.substr(0, llp) + lowerKey[llp] + upperNeedle.substr(llp + 1);\n return null;\n }\n if (cmp(key[i], lwrKeyChar) < 0)\n llp = i;\n }\n if (length < lowerNeedle.length && dir === \"next\")\n return key + upperNeedle.substr(key.length);\n if (length < key.length && dir === \"prev\")\n return key.substr(0, upperNeedle.length);\n return (llp < 0 ? null : key.substr(0, llp) + lowerNeedle[llp] + upperNeedle.substr(llp + 1));\n}\nfunction addIgnoreCaseAlgorithm(whereClause, match, needles, suffix) {\n var upper, lower, compare, upperNeedles, lowerNeedles, direction, nextKeySuffix, needlesLen = needles.length;\n if (!needles.every(function (s) { return typeof s === 'string'; })) {\n return fail(whereClause, STRING_EXPECTED);\n }\n function initDirection(dir) {\n upper = upperFactory(dir);\n lower = lowerFactory(dir);\n compare = (dir === \"next\" ? simpleCompare : simpleCompareReverse);\n var needleBounds = needles.map(function (needle) {\n return { lower: lower(needle), upper: upper(needle) };\n }).sort(function (a, b) {\n return compare(a.lower, b.lower);\n });\n upperNeedles = needleBounds.map(function (nb) { return nb.upper; });\n lowerNeedles = needleBounds.map(function (nb) { return nb.lower; });\n direction = dir;\n nextKeySuffix = (dir === \"next\" ? \"\" : suffix);\n }\n initDirection(\"next\");\n var c = new whereClause.Collection(whereClause, function () { return createRange(upperNeedles[0], lowerNeedles[needlesLen - 1] + suffix); });\n c._ondirectionchange = function (direction) {\n initDirection(direction);\n };\n var firstPossibleNeedle = 0;\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n if (typeof key !== 'string')\n return false;\n var lowerKey = lower(key);\n if (match(lowerKey, lowerNeedles, firstPossibleNeedle)) {\n return true;\n }\n else {\n var lowestPossibleCasing = null;\n for (var i = firstPossibleNeedle; i < needlesLen; ++i) {\n var casing = nextCasing(key, lowerKey, upperNeedles[i], lowerNeedles[i], compare, direction);\n if (casing === null && lowestPossibleCasing === null)\n firstPossibleNeedle = i + 1;\n else if (lowestPossibleCasing === null || compare(lowestPossibleCasing, casing) > 0) {\n lowestPossibleCasing = casing;\n }\n }\n if (lowestPossibleCasing !== null) {\n advance(function () { cursor.continue(lowestPossibleCasing + nextKeySuffix); });\n }\n else {\n advance(resolve);\n }\n return false;\n }\n });\n return c;\n}\nfunction createRange(lower, upper, lowerOpen, upperOpen) {\n return {\n type: 2 ,\n lower: lower,\n upper: upper,\n lowerOpen: lowerOpen,\n upperOpen: upperOpen\n };\n}\nfunction rangeEqual(value) {\n return {\n type: 1 ,\n lower: value,\n upper: value\n };\n}\n\nvar WhereClause = (function () {\n function WhereClause() {\n }\n Object.defineProperty(WhereClause.prototype, \"Collection\", {\n get: function () {\n return this._ctx.table.db.Collection;\n },\n enumerable: true,\n configurable: true\n });\n WhereClause.prototype.between = function (lower, upper, includeLower, includeUpper) {\n includeLower = includeLower !== false;\n includeUpper = includeUpper === true;\n try {\n if ((this._cmp(lower, upper) > 0) ||\n (this._cmp(lower, upper) === 0 && (includeLower || includeUpper) && !(includeLower && includeUpper)))\n return emptyCollection(this);\n return new this.Collection(this, function () { return createRange(lower, upper, !includeLower, !includeUpper); });\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n };\n WhereClause.prototype.equals = function (value) {\n return new this.Collection(this, function () { return rangeEqual(value); });\n };\n WhereClause.prototype.above = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(value, undefined, true); });\n };\n WhereClause.prototype.aboveOrEqual = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(value, undefined, false); });\n };\n WhereClause.prototype.below = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(undefined, value, false, true); });\n };\n WhereClause.prototype.belowOrEqual = function (value) {\n if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\n return new this.Collection(this, function () { return createRange(undefined, value); });\n };\n WhereClause.prototype.startsWith = function (str) {\n if (typeof str !== 'string')\n return fail(this, STRING_EXPECTED);\n return this.between(str, str + maxString, true, true);\n };\n WhereClause.prototype.startsWithIgnoreCase = function (str) {\n if (str === \"\")\n return this.startsWith(str);\n return addIgnoreCaseAlgorithm(this, function (x, a) { return x.indexOf(a[0]) === 0; }, [str], maxString);\n };\n WhereClause.prototype.equalsIgnoreCase = function (str) {\n return addIgnoreCaseAlgorithm(this, function (x, a) { return x === a[0]; }, [str], \"\");\n };\n WhereClause.prototype.anyOfIgnoreCase = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0)\n return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, function (x, a) { return a.indexOf(x) !== -1; }, set, \"\");\n };\n WhereClause.prototype.startsWithAnyOfIgnoreCase = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0)\n return emptyCollection(this);\n return addIgnoreCaseAlgorithm(this, function (x, a) { return a.some(function (n) { return x.indexOf(n) === 0; }); }, set, maxString);\n };\n WhereClause.prototype.anyOf = function () {\n var _this = this;\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n var compare = this._cmp;\n try {\n set.sort(compare);\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n if (set.length === 0)\n return emptyCollection(this);\n var c = new this.Collection(this, function () { return createRange(set[0], set[set.length - 1]); });\n c._ondirectionchange = function (direction) {\n compare = (direction === \"next\" ?\n _this._ascending :\n _this._descending);\n set.sort(compare);\n };\n var i = 0;\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n while (compare(key, set[i]) > 0) {\n ++i;\n if (i === set.length) {\n advance(resolve);\n return false;\n }\n }\n if (compare(key, set[i]) === 0) {\n return true;\n }\n else {\n advance(function () { cursor.continue(set[i]); });\n return false;\n }\n });\n return c;\n };\n WhereClause.prototype.notEqual = function (value) {\n return this.inAnyRange([[minKey, value], [value, this.db._maxKey]], { includeLowers: false, includeUppers: false });\n };\n WhereClause.prototype.noneOf = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (set.length === 0)\n return new this.Collection(this);\n try {\n set.sort(this._ascending);\n }\n catch (e) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n var ranges = set.reduce(function (res, val) { return res ?\n res.concat([[res[res.length - 1][1], val]]) :\n [[minKey, val]]; }, null);\n ranges.push([set[set.length - 1], this.db._maxKey]);\n return this.inAnyRange(ranges, { includeLowers: false, includeUppers: false });\n };\n WhereClause.prototype.inAnyRange = function (ranges, options) {\n var _this = this;\n var cmp = this._cmp, ascending = this._ascending, descending = this._descending, min = this._min, max = this._max;\n if (ranges.length === 0)\n return emptyCollection(this);\n if (!ranges.every(function (range) {\n return range[0] !== undefined &&\n range[1] !== undefined &&\n ascending(range[0], range[1]) <= 0;\n })) {\n return fail(this, \"First argument to inAnyRange() must be an Array of two-value Arrays [lower,upper] where upper must not be lower than lower\", exceptions.InvalidArgument);\n }\n var includeLowers = !options || options.includeLowers !== false;\n var includeUppers = options && options.includeUppers === true;\n function addRange(ranges, newRange) {\n var i = 0, l = ranges.length;\n for (; i < l; ++i) {\n var range = ranges[i];\n if (cmp(newRange[0], range[1]) < 0 && cmp(newRange[1], range[0]) > 0) {\n range[0] = min(range[0], newRange[0]);\n range[1] = max(range[1], newRange[1]);\n break;\n }\n }\n if (i === l)\n ranges.push(newRange);\n return ranges;\n }\n var sortDirection = ascending;\n function rangeSorter(a, b) { return sortDirection(a[0], b[0]); }\n var set;\n try {\n set = ranges.reduce(addRange, []);\n set.sort(rangeSorter);\n }\n catch (ex) {\n return fail(this, INVALID_KEY_ARGUMENT);\n }\n var rangePos = 0;\n var keyIsBeyondCurrentEntry = includeUppers ?\n function (key) { return ascending(key, set[rangePos][1]) > 0; } :\n function (key) { return ascending(key, set[rangePos][1]) >= 0; };\n var keyIsBeforeCurrentEntry = includeLowers ?\n function (key) { return descending(key, set[rangePos][0]) > 0; } :\n function (key) { return descending(key, set[rangePos][0]) >= 0; };\n function keyWithinCurrentRange(key) {\n return !keyIsBeyondCurrentEntry(key) && !keyIsBeforeCurrentEntry(key);\n }\n var checkKey = keyIsBeyondCurrentEntry;\n var c = new this.Collection(this, function () { return createRange(set[0][0], set[set.length - 1][1], !includeLowers, !includeUppers); });\n c._ondirectionchange = function (direction) {\n if (direction === \"next\") {\n checkKey = keyIsBeyondCurrentEntry;\n sortDirection = ascending;\n }\n else {\n checkKey = keyIsBeforeCurrentEntry;\n sortDirection = descending;\n }\n set.sort(rangeSorter);\n };\n c._addAlgorithm(function (cursor, advance, resolve) {\n var key = cursor.key;\n while (checkKey(key)) {\n ++rangePos;\n if (rangePos === set.length) {\n advance(resolve);\n return false;\n }\n }\n if (keyWithinCurrentRange(key)) {\n return true;\n }\n else if (_this._cmp(key, set[rangePos][1]) === 0 || _this._cmp(key, set[rangePos][0]) === 0) {\n return false;\n }\n else {\n advance(function () {\n if (sortDirection === ascending)\n cursor.continue(set[rangePos][0]);\n else\n cursor.continue(set[rangePos][1]);\n });\n return false;\n }\n });\n return c;\n };\n WhereClause.prototype.startsWithAnyOf = function () {\n var set = getArrayOf.apply(NO_CHAR_ARRAY, arguments);\n if (!set.every(function (s) { return typeof s === 'string'; })) {\n return fail(this, \"startsWithAnyOf() only works with strings\");\n }\n if (set.length === 0)\n return emptyCollection(this);\n return this.inAnyRange(set.map(function (str) { return [str, str + maxString]; }));\n };\n return WhereClause;\n}());\n\nfunction createWhereClauseConstructor(db) {\n return makeClassConstructor(WhereClause.prototype, function WhereClause$$1(table, index, orCollection) {\n this.db = db;\n this._ctx = {\n table: table,\n index: index === \":id\" ? null : index,\n or: orCollection\n };\n var indexedDB = db._deps.indexedDB;\n if (!indexedDB)\n throw new exceptions.MissingAPI(\"indexedDB API missing\");\n this._cmp = this._ascending = indexedDB.cmp.bind(indexedDB);\n this._descending = function (a, b) { return indexedDB.cmp(b, a); };\n this._max = function (a, b) { return indexedDB.cmp(a, b) > 0 ? a : b; };\n this._min = function (a, b) { return indexedDB.cmp(a, b) < 0 ? a : b; };\n this._IDBKeyRange = db._deps.IDBKeyRange;\n });\n}\n\nfunction safariMultiStoreFix(storeNames) {\n return storeNames.length === 1 ? storeNames[0] : storeNames;\n}\n\nfunction getMaxKey(IdbKeyRange) {\n try {\n IdbKeyRange.only([[]]);\n return [[]];\n }\n catch (e) {\n return maxString;\n }\n}\n\nfunction eventRejectHandler(reject) {\n return wrap(function (event) {\n preventDefault(event);\n reject(event.target.error);\n return false;\n });\n}\n\n\n\nfunction preventDefault(event) {\n if (event.stopPropagation)\n event.stopPropagation();\n if (event.preventDefault)\n event.preventDefault();\n}\n\nvar Transaction = (function () {\n function Transaction() {\n }\n Transaction.prototype._lock = function () {\n assert(!PSD.global);\n ++this._reculock;\n if (this._reculock === 1 && !PSD.global)\n PSD.lockOwnerFor = this;\n return this;\n };\n Transaction.prototype._unlock = function () {\n assert(!PSD.global);\n if (--this._reculock === 0) {\n if (!PSD.global)\n PSD.lockOwnerFor = null;\n while (this._blockedFuncs.length > 0 && !this._locked()) {\n var fnAndPSD = this._blockedFuncs.shift();\n try {\n usePSD(fnAndPSD[1], fnAndPSD[0]);\n }\n catch (e) { }\n }\n }\n return this;\n };\n Transaction.prototype._locked = function () {\n return this._reculock && PSD.lockOwnerFor !== this;\n };\n Transaction.prototype.create = function (idbtrans) {\n var _this = this;\n if (!this.mode)\n return this;\n var idbdb = this.db.idbdb;\n var dbOpenError = this.db._state.dbOpenError;\n assert(!this.idbtrans);\n if (!idbtrans && !idbdb) {\n switch (dbOpenError && dbOpenError.name) {\n case \"DatabaseClosedError\":\n throw new exceptions.DatabaseClosed(dbOpenError);\n case \"MissingAPIError\":\n throw new exceptions.MissingAPI(dbOpenError.message, dbOpenError);\n default:\n throw new exceptions.OpenFailed(dbOpenError);\n }\n }\n if (!this.active)\n throw new exceptions.TransactionInactive();\n assert(this._completion._state === null);\n idbtrans = this.idbtrans = idbtrans || idbdb.transaction(safariMultiStoreFix(this.storeNames), this.mode);\n idbtrans.onerror = wrap(function (ev) {\n preventDefault(ev);\n _this._reject(idbtrans.error);\n });\n idbtrans.onabort = wrap(function (ev) {\n preventDefault(ev);\n _this.active && _this._reject(new exceptions.Abort(idbtrans.error));\n _this.active = false;\n _this.on(\"abort\").fire(ev);\n });\n idbtrans.oncomplete = wrap(function () {\n _this.active = false;\n _this._resolve();\n });\n return this;\n };\n Transaction.prototype._promise = function (mode, fn, bWriteLock) {\n var _this = this;\n if (mode === 'readwrite' && this.mode !== 'readwrite')\n return rejection(new exceptions.ReadOnly(\"Transaction is readonly\"));\n if (!this.active)\n return rejection(new exceptions.TransactionInactive());\n if (this._locked()) {\n return new Promise$1(function (resolve, reject) {\n _this._blockedFuncs.push([function () {\n _this._promise(mode, fn, bWriteLock).then(resolve, reject);\n }, PSD]);\n });\n }\n else if (bWriteLock) {\n return newScope(function () {\n var p = new Promise$1(function (resolve, reject) {\n _this._lock();\n var rv = fn(resolve, reject, _this);\n if (rv && rv.then)\n rv.then(resolve, reject);\n });\n p.finally(function () { return _this._unlock(); });\n p._lib = true;\n return p;\n });\n }\n else {\n var p = new Promise$1(function (resolve, reject) {\n var rv = fn(resolve, reject, _this);\n if (rv && rv.then)\n rv.then(resolve, reject);\n });\n p._lib = true;\n return p;\n }\n };\n Transaction.prototype._root = function () {\n return this.parent ? this.parent._root() : this;\n };\n Transaction.prototype.waitFor = function (promiseLike) {\n var root = this._root();\n var promise = Promise$1.resolve(promiseLike);\n if (root._waitingFor) {\n root._waitingFor = root._waitingFor.then(function () { return promise; });\n }\n else {\n root._waitingFor = promise;\n root._waitingQueue = [];\n var store = root.idbtrans.objectStore(root.storeNames[0]);\n (function spin() {\n ++root._spinCount;\n while (root._waitingQueue.length)\n (root._waitingQueue.shift())();\n if (root._waitingFor)\n store.get(-Infinity).onsuccess = spin;\n }());\n }\n var currentWaitPromise = root._waitingFor;\n return new Promise$1(function (resolve, reject) {\n promise.then(function (res) { return root._waitingQueue.push(wrap(resolve.bind(null, res))); }, function (err) { return root._waitingQueue.push(wrap(reject.bind(null, err))); }).finally(function () {\n if (root._waitingFor === currentWaitPromise) {\n root._waitingFor = null;\n }\n });\n });\n };\n Transaction.prototype.abort = function () {\n this.active && this._reject(new exceptions.Abort());\n this.active = false;\n };\n Transaction.prototype.table = function (tableName) {\n var memoizedTables = (this._memoizedTables || (this._memoizedTables = {}));\n if (hasOwn(memoizedTables, tableName))\n return memoizedTables[tableName];\n var tableSchema = this.schema[tableName];\n if (!tableSchema) {\n throw new exceptions.NotFound(\"Table \" + tableName + \" not part of transaction\");\n }\n var transactionBoundTable = new this.db.Table(tableName, tableSchema, this);\n transactionBoundTable.core = this.db.core.table(tableName);\n memoizedTables[tableName] = transactionBoundTable;\n return transactionBoundTable;\n };\n return Transaction;\n}());\n\nfunction createTransactionConstructor(db) {\n return makeClassConstructor(Transaction.prototype, function Transaction$$1(mode, storeNames, dbschema, parent) {\n var _this = this;\n this.db = db;\n this.mode = mode;\n this.storeNames = storeNames;\n this.schema = dbschema;\n this.idbtrans = null;\n this.on = Events(this, \"complete\", \"error\", \"abort\");\n this.parent = parent || null;\n this.active = true;\n this._reculock = 0;\n this._blockedFuncs = [];\n this._resolve = null;\n this._reject = null;\n this._waitingFor = null;\n this._waitingQueue = null;\n this._spinCount = 0;\n this._completion = new Promise$1(function (resolve, reject) {\n _this._resolve = resolve;\n _this._reject = reject;\n });\n this._completion.then(function () {\n _this.active = false;\n _this.on.complete.fire();\n }, function (e) {\n var wasActive = _this.active;\n _this.active = false;\n _this.on.error.fire(e);\n _this.parent ?\n _this.parent._reject(e) :\n wasActive && _this.idbtrans && _this.idbtrans.abort();\n return rejection(e);\n });\n });\n}\n\nfunction createIndexSpec(name, keyPath, unique, multi, auto, compound) {\n return {\n name: name,\n keyPath: keyPath,\n unique: unique,\n multi: multi,\n auto: auto,\n compound: compound,\n src: (unique ? '&' : '') + (multi ? '*' : '') + (auto ? \"++\" : \"\") + nameFromKeyPath(keyPath)\n };\n}\nfunction nameFromKeyPath(keyPath) {\n return typeof keyPath === 'string' ?\n keyPath :\n keyPath ? ('[' + [].join.call(keyPath, '+') + ']') : \"\";\n}\n\nfunction createTableSchema(name, primKey, indexes) {\n return {\n name: name,\n primKey: primKey,\n indexes: indexes,\n mappedClass: null,\n idxByName: arrayToObject(indexes, function (index) { return [index.name, index]; })\n };\n}\n\nfunction getKeyExtractor(keyPath) {\n if (keyPath == null) {\n return function () { return undefined; };\n }\n else if (typeof keyPath === 'string') {\n return getSinglePathKeyExtractor(keyPath);\n }\n else {\n return function (obj) { return getByKeyPath(obj, keyPath); };\n }\n}\nfunction getSinglePathKeyExtractor(keyPath) {\n var split = keyPath.split('.');\n if (split.length === 1) {\n return function (obj) { return obj[keyPath]; };\n }\n else {\n return function (obj) { return getByKeyPath(obj, keyPath); };\n }\n}\n\nfunction getEffectiveKeys(primaryKey, req) {\n if (req.type === 'delete')\n return req.keys;\n return req.keys || req.values.map(primaryKey.extractKey);\n}\nfunction getExistingValues(table, req, effectiveKeys) {\n return req.type === 'add' ? Promise.resolve(new Array(req.values.length)) :\n table.getMany({ trans: req.trans, keys: effectiveKeys });\n}\n\nfunction arrayify(arrayLike) {\n return [].slice.call(arrayLike);\n}\n\nvar _id_counter = 0;\nfunction getKeyPathAlias(keyPath) {\n return keyPath == null ?\n \":id\" :\n typeof keyPath === 'string' ?\n keyPath :\n \"[\" + keyPath.join('+') + \"]\";\n}\nfunction createDBCore(db, indexedDB, IdbKeyRange, tmpTrans) {\n var cmp = indexedDB.cmp.bind(indexedDB);\n function extractSchema(db, trans) {\n var tables = arrayify(db.objectStoreNames);\n return {\n schema: {\n name: db.name,\n tables: tables.map(function (table) { return trans.objectStore(table); }).map(function (store) {\n var keyPath = store.keyPath, autoIncrement = store.autoIncrement;\n var compound = isArray(keyPath);\n var outbound = keyPath == null;\n var indexByKeyPath = {};\n var result = {\n name: store.name,\n primaryKey: {\n name: null,\n isPrimaryKey: true,\n outbound: outbound,\n compound: compound,\n keyPath: keyPath,\n autoIncrement: autoIncrement,\n unique: true,\n extractKey: getKeyExtractor(keyPath)\n },\n indexes: arrayify(store.indexNames).map(function (indexName) { return store.index(indexName); })\n .map(function (index) {\n var name = index.name, unique = index.unique, multiEntry = index.multiEntry, keyPath = index.keyPath;\n var compound = isArray(keyPath);\n var result = {\n name: name,\n compound: compound,\n keyPath: keyPath,\n unique: unique,\n multiEntry: multiEntry,\n extractKey: getKeyExtractor(keyPath)\n };\n indexByKeyPath[getKeyPathAlias(keyPath)] = result;\n return result;\n }),\n getIndexByKeyPath: function (keyPath) { return indexByKeyPath[getKeyPathAlias(keyPath)]; }\n };\n indexByKeyPath[\":id\"] = result.primaryKey;\n if (keyPath != null) {\n indexByKeyPath[getKeyPathAlias(keyPath)] = result.primaryKey;\n }\n return result;\n })\n },\n hasGetAll: tables.length > 0 && ('getAll' in trans.objectStore(tables[0])) &&\n !(typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604)\n };\n }\n function makeIDBKeyRange(range) {\n if (range.type === 3 )\n return null;\n if (range.type === 4 )\n throw new Error(\"Cannot convert never type to IDBKeyRange\");\n var lower = range.lower, upper = range.upper, lowerOpen = range.lowerOpen, upperOpen = range.upperOpen;\n var idbRange = lower === undefined ?\n upper === undefined ?\n null :\n IdbKeyRange.upperBound(upper, !!upperOpen) :\n upper === undefined ?\n IdbKeyRange.lowerBound(lower, !!lowerOpen) :\n IdbKeyRange.bound(lower, upper, !!lowerOpen, !!upperOpen);\n return idbRange;\n }\n function createDbCoreTable(tableSchema) {\n var tableName = tableSchema.name;\n function mutate(_a) {\n var trans = _a.trans, type = _a.type, keys$$1 = _a.keys, values = _a.values, range = _a.range, wantResults = _a.wantResults;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var outbound = store.keyPath == null;\n var isAddOrPut = type === \"put\" || type === \"add\";\n if (!isAddOrPut && type !== 'delete' && type !== 'deleteRange')\n throw new Error(\"Invalid operation type: \" + type);\n var length = (keys$$1 || values || { length: 1 }).length;\n if (keys$$1 && values && keys$$1.length !== values.length) {\n throw new Error(\"Given keys array must have same length as given values array.\");\n }\n if (length === 0)\n return resolve({ numFailures: 0, failures: {}, results: [], lastResult: undefined });\n var results = wantResults && (keys$$1 ?\n keys$$1 :\n getEffectiveKeys(tableSchema.primaryKey, { type: type, keys: keys$$1, values: values })).slice();\n var req;\n var failures = [];\n var numFailures = 0;\n var errorHandler = function (event) {\n ++numFailures;\n preventDefault(event);\n if (results)\n results[event.target._reqno] = undefined;\n failures[event.target._reqno] = event.target.error;\n };\n var setResult = function (_a) {\n var target = _a.target;\n results[target._reqno] = target.result;\n };\n if (type === 'deleteRange') {\n if (range.type === 4 )\n return resolve({ numFailures: numFailures, failures: failures, results: results, lastResult: undefined });\n if (range.type === 3 )\n req = store.clear();\n else\n req = store.delete(makeIDBKeyRange(range));\n }\n else {\n var _a = isAddOrPut ?\n outbound ?\n [values, keys$$1] :\n [values, null] :\n [keys$$1, null], args1 = _a[0], args2 = _a[1];\n if (isAddOrPut) {\n for (var i = 0; i < length; ++i) {\n req = (args2 && args2[i] !== undefined ?\n store[type](args1[i], args2[i]) :\n store[type](args1[i]));\n req._reqno = i;\n if (results && results[i] === undefined) {\n req.onsuccess = setResult;\n }\n req.onerror = errorHandler;\n }\n }\n else {\n for (var i = 0; i < length; ++i) {\n req = store[type](args1[i]);\n req._reqno = i;\n req.onerror = errorHandler;\n }\n }\n }\n var done = function (event) {\n var lastResult = event.target.result;\n if (results)\n results[length - 1] = lastResult;\n resolve({\n numFailures: numFailures,\n failures: failures,\n results: results,\n lastResult: lastResult\n });\n };\n req.onerror = function (event) {\n errorHandler(event);\n done(event);\n };\n req.onsuccess = done;\n });\n }\n function openCursor(_a) {\n var trans = _a.trans, values = _a.values, query = _a.query, reverse = _a.reverse, unique = _a.unique;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var index = query.index, range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ?\n store :\n store.index(index.name);\n var direction = reverse ?\n unique ?\n \"prevunique\" :\n \"prev\" :\n unique ?\n \"nextunique\" :\n \"next\";\n var req = values || !('openKeyCursor' in source) ?\n source.openCursor(makeIDBKeyRange(range), direction) :\n source.openKeyCursor(makeIDBKeyRange(range), direction);\n req.onerror = eventRejectHandler(reject);\n req.onsuccess = wrap(function (ev) {\n var cursor = req.result;\n if (!cursor) {\n resolve(null);\n return;\n }\n cursor.___id = ++_id_counter;\n cursor.done = false;\n var _cursorContinue = cursor.continue.bind(cursor);\n var _cursorContinuePrimaryKey = cursor.continuePrimaryKey;\n if (_cursorContinuePrimaryKey)\n _cursorContinuePrimaryKey = _cursorContinuePrimaryKey.bind(cursor);\n var _cursorAdvance = cursor.advance.bind(cursor);\n var doThrowCursorIsNotStarted = function () { throw new Error(\"Cursor not started\"); };\n var doThrowCursorIsStopped = function () { throw new Error(\"Cursor not stopped\"); };\n cursor.trans = trans;\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsNotStarted;\n cursor.fail = wrap(reject);\n cursor.next = function () {\n var _this = this;\n var gotOne = 1;\n return this.start(function () { return gotOne-- ? _this.continue() : _this.stop(); }).then(function () { return _this; });\n };\n cursor.start = function (callback) {\n var iterationPromise = new Promise(function (resolveIteration, rejectIteration) {\n resolveIteration = wrap(resolveIteration);\n req.onerror = eventRejectHandler(rejectIteration);\n cursor.fail = rejectIteration;\n cursor.stop = function (value) {\n cursor.stop = cursor.continue = cursor.continuePrimaryKey = cursor.advance = doThrowCursorIsStopped;\n resolveIteration(value);\n };\n });\n var guardedCallback = function () {\n if (req.result) {\n try {\n callback();\n }\n catch (err) {\n cursor.fail(err);\n }\n }\n else {\n cursor.done = true;\n cursor.start = function () { throw new Error(\"Cursor behind last entry\"); };\n cursor.stop();\n }\n };\n req.onsuccess = wrap(function (ev) {\n req.onsuccess = guardedCallback;\n guardedCallback();\n });\n cursor.continue = _cursorContinue;\n cursor.continuePrimaryKey = _cursorContinuePrimaryKey;\n cursor.advance = _cursorAdvance;\n guardedCallback();\n return iterationPromise;\n };\n resolve(cursor);\n }, reject);\n });\n }\n function query(hasGetAll) {\n return function (request) {\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var trans = request.trans, values = request.values, limit = request.limit, query = request.query;\n var nonInfinitLimit = limit === Infinity ? undefined : limit;\n var index = query.index, range = query.range;\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n if (limit === 0)\n return resolve({ result: [] });\n if (hasGetAll) {\n var req = values ?\n source.getAll(idbKeyRange, nonInfinitLimit) :\n source.getAllKeys(idbKeyRange, nonInfinitLimit);\n req.onsuccess = function (event) { return resolve({ result: event.target.result }); };\n req.onerror = eventRejectHandler(reject);\n }\n else {\n var count_1 = 0;\n var req_1 = values || !('openKeyCursor' in source) ?\n source.openCursor(idbKeyRange) :\n source.openKeyCursor(idbKeyRange);\n var result_1 = [];\n req_1.onsuccess = function (event) {\n var cursor = req_1.result;\n if (!cursor)\n return resolve({ result: result_1 });\n result_1.push(values ? cursor.value : cursor.primaryKey);\n if (++count_1 === limit)\n return resolve({ result: result_1 });\n cursor.continue();\n };\n req_1.onerror = eventRejectHandler(reject);\n }\n });\n };\n }\n return {\n name: tableName,\n schema: tableSchema,\n mutate: mutate,\n getMany: function (_a) {\n var trans = _a.trans, keys$$1 = _a.keys;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var length = keys$$1.length;\n var result = new Array(length);\n var keyCount = 0;\n var callbackCount = 0;\n var valueCount = 0;\n var req;\n var successHandler = function (event) {\n var req = event.target;\n if ((result[req._pos] = req.result) != null)\n ++valueCount;\n if (++callbackCount === keyCount)\n resolve(result);\n };\n var errorHandler = eventRejectHandler(reject);\n for (var i = 0; i < length; ++i) {\n var key = keys$$1[i];\n if (key != null) {\n req = store.get(keys$$1[i]);\n req._pos = i;\n req.onsuccess = successHandler;\n req.onerror = errorHandler;\n ++keyCount;\n }\n }\n if (keyCount === 0)\n resolve(result);\n });\n },\n get: function (_a) {\n var trans = _a.trans, key = _a.key;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var req = store.get(key);\n req.onsuccess = function (event) { return resolve(event.target.result); };\n req.onerror = eventRejectHandler(reject);\n });\n },\n query: query(hasGetAll),\n openCursor: openCursor,\n count: function (_a) {\n var query = _a.query, trans = _a.trans;\n var index = query.index, range = query.range;\n return new Promise(function (resolve, reject) {\n var store = trans.objectStore(tableName);\n var source = index.isPrimaryKey ? store : store.index(index.name);\n var idbKeyRange = makeIDBKeyRange(range);\n var req = idbKeyRange ? source.count(idbKeyRange) : source.count();\n req.onsuccess = wrap(function (ev) { return resolve(ev.target.result); });\n req.onerror = eventRejectHandler(reject);\n });\n }\n };\n }\n var _a = extractSchema(db, tmpTrans), schema = _a.schema, hasGetAll = _a.hasGetAll;\n var tables = schema.tables.map(function (tableSchema) { return createDbCoreTable(tableSchema); });\n var tableMap = {};\n tables.forEach(function (table) { return tableMap[table.name] = table; });\n return {\n stack: \"dbcore\",\n transaction: db.transaction.bind(db),\n table: function (name) {\n var result = tableMap[name];\n if (!result)\n throw new Error(\"Table '\" + name + \"' not found\");\n return tableMap[name];\n },\n cmp: cmp,\n MIN_KEY: -Infinity,\n MAX_KEY: getMaxKey(IdbKeyRange),\n schema: schema\n };\n}\n\nfunction createMiddlewareStack(stackImpl, middlewares) {\n return middlewares.reduce(function (down, _a) {\n var create = _a.create;\n return (__assign({}, down, create(down)));\n }, stackImpl);\n}\nfunction createMiddlewareStacks(middlewares, idbdb, _a, tmpTrans) {\n var IDBKeyRange = _a.IDBKeyRange, indexedDB = _a.indexedDB;\n var dbcore = createMiddlewareStack(createDBCore(idbdb, indexedDB, IDBKeyRange, tmpTrans), middlewares.dbcore);\n return {\n dbcore: dbcore\n };\n}\nfunction generateMiddlewareStacks(db, tmpTrans) {\n var idbdb = tmpTrans.db;\n var stacks = createMiddlewareStacks(db._middlewares, idbdb, db._deps, tmpTrans);\n db.core = stacks.dbcore;\n db.tables.forEach(function (table) {\n var tableName = table.name;\n if (db.core.schema.tables.some(function (tbl) { return tbl.name === tableName; })) {\n table.core = db.core.table(tableName);\n if (db[tableName] instanceof db.Table) {\n db[tableName].core = table.core;\n }\n }\n });\n}\n\nfunction setApiOnPlace(db, objs, tableNames, dbschema) {\n tableNames.forEach(function (tableName) {\n var schema = dbschema[tableName];\n objs.forEach(function (obj) {\n if (!(tableName in obj)) {\n if (obj === db.Transaction.prototype || obj instanceof db.Transaction) {\n setProp(obj, tableName, { get: function () { return this.table(tableName); } });\n }\n else {\n obj[tableName] = new db.Table(tableName, schema);\n }\n }\n });\n });\n}\nfunction removeTablesApi(db, objs) {\n objs.forEach(function (obj) {\n for (var key in obj) {\n if (obj[key] instanceof db.Table)\n delete obj[key];\n }\n });\n}\nfunction lowerVersionFirst(a, b) {\n return a._cfg.version - b._cfg.version;\n}\nfunction runUpgraders(db, oldVersion, idbUpgradeTrans, reject) {\n var globalSchema = db._dbSchema;\n var trans = db._createTransaction('readwrite', db._storeNames, globalSchema);\n trans.create(idbUpgradeTrans);\n trans._completion.catch(reject);\n var rejectTransaction = trans._reject.bind(trans);\n var transless = PSD.transless || PSD;\n newScope(function () {\n PSD.trans = trans;\n PSD.transless = transless;\n if (oldVersion === 0) {\n keys(globalSchema).forEach(function (tableName) {\n createTable(idbUpgradeTrans, tableName, globalSchema[tableName].primKey, globalSchema[tableName].indexes);\n });\n generateMiddlewareStacks(db, idbUpgradeTrans);\n Promise$1.follow(function () { return db.on.populate.fire(trans); }).catch(rejectTransaction);\n }\n else\n updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans).catch(rejectTransaction);\n });\n}\nfunction updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans) {\n var queue = [];\n var versions = db._versions;\n var oldVersionStruct = versions.filter(function (version) { return version._cfg.version === oldVersion; })[0];\n if (!oldVersionStruct)\n throw new exceptions.Upgrade(\"Dexie specification of currently installed DB version is missing\");\n var globalSchema = db._dbSchema = oldVersionStruct._cfg.dbschema;\n var anyContentUpgraderHasRun = false;\n var versToRun = versions.filter(function (v) { return v._cfg.version > oldVersion; });\n versToRun.forEach(function (version) {\n queue.push(function () {\n var oldSchema = globalSchema;\n var newSchema = version._cfg.dbschema;\n adjustToExistingIndexNames(db, oldSchema, idbUpgradeTrans);\n adjustToExistingIndexNames(db, newSchema, idbUpgradeTrans);\n globalSchema = db._dbSchema = newSchema;\n var diff = getSchemaDiff(oldSchema, newSchema);\n diff.add.forEach(function (tuple) {\n createTable(idbUpgradeTrans, tuple[0], tuple[1].primKey, tuple[1].indexes);\n });\n diff.change.forEach(function (change) {\n if (change.recreate) {\n throw new exceptions.Upgrade(\"Not yet support for changing primary key\");\n }\n else {\n var store_1 = idbUpgradeTrans.objectStore(change.name);\n change.add.forEach(function (idx) { return addIndex(store_1, idx); });\n change.change.forEach(function (idx) {\n store_1.deleteIndex(idx.name);\n addIndex(store_1, idx);\n });\n change.del.forEach(function (idxName) { return store_1.deleteIndex(idxName); });\n }\n });\n var contentUpgrade = version._cfg.contentUpgrade;\n if (contentUpgrade) {\n generateMiddlewareStacks(db, idbUpgradeTrans);\n anyContentUpgraderHasRun = true;\n var upgradeSchema_1 = shallowClone(newSchema);\n diff.del.forEach(function (table) {\n upgradeSchema_1[table] = oldSchema[table];\n });\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], keys(upgradeSchema_1), upgradeSchema_1);\n trans.schema = upgradeSchema_1;\n if (contentUpgrade.constructor === AsyncFunction) {\n incrementExpectedAwaits();\n }\n var returnValue_1;\n var promiseFollowed = Promise$1.follow(function () {\n returnValue_1 = contentUpgrade(trans);\n if (returnValue_1) {\n if (returnValue_1.constructor === NativePromise) {\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue_1.then(decrementor, decrementor);\n }\n }\n });\n return (returnValue_1 && typeof returnValue_1.then === 'function' ?\n Promise$1.resolve(returnValue_1) : promiseFollowed.then(function () { return returnValue_1; }));\n }\n });\n queue.push(function (idbtrans) {\n if (!anyContentUpgraderHasRun || !hasIEDeleteObjectStoreBug) {\n var newSchema = version._cfg.dbschema;\n deleteRemovedTables(newSchema, idbtrans);\n }\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema);\n trans.schema = db._dbSchema;\n });\n });\n function runQueue() {\n return queue.length ? Promise$1.resolve(queue.shift()(trans.idbtrans)).then(runQueue) :\n Promise$1.resolve();\n }\n return runQueue().then(function () {\n createMissingTables(globalSchema, idbUpgradeTrans);\n });\n}\nfunction getSchemaDiff(oldSchema, newSchema) {\n var diff = {\n del: [],\n add: [],\n change: []\n };\n var table;\n for (table in oldSchema) {\n if (!newSchema[table])\n diff.del.push(table);\n }\n for (table in newSchema) {\n var oldDef = oldSchema[table], newDef = newSchema[table];\n if (!oldDef) {\n diff.add.push([table, newDef]);\n }\n else {\n var change = {\n name: table,\n def: newDef,\n recreate: false,\n del: [],\n add: [],\n change: []\n };\n if (oldDef.primKey.src !== newDef.primKey.src) {\n change.recreate = true;\n diff.change.push(change);\n }\n else {\n var oldIndexes = oldDef.idxByName;\n var newIndexes = newDef.idxByName;\n var idxName = void 0;\n for (idxName in oldIndexes) {\n if (!newIndexes[idxName])\n change.del.push(idxName);\n }\n for (idxName in newIndexes) {\n var oldIdx = oldIndexes[idxName], newIdx = newIndexes[idxName];\n if (!oldIdx)\n change.add.push(newIdx);\n else if (oldIdx.src !== newIdx.src)\n change.change.push(newIdx);\n }\n if (change.del.length > 0 || change.add.length > 0 || change.change.length > 0) {\n diff.change.push(change);\n }\n }\n }\n }\n return diff;\n}\nfunction createTable(idbtrans, tableName, primKey, indexes) {\n var store = idbtrans.db.createObjectStore(tableName, primKey.keyPath ?\n { keyPath: primKey.keyPath, autoIncrement: primKey.auto } :\n { autoIncrement: primKey.auto });\n indexes.forEach(function (idx) { return addIndex(store, idx); });\n return store;\n}\nfunction createMissingTables(newSchema, idbtrans) {\n keys(newSchema).forEach(function (tableName) {\n if (!idbtrans.db.objectStoreNames.contains(tableName)) {\n createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes);\n }\n });\n}\nfunction deleteRemovedTables(newSchema, idbtrans) {\n for (var i = 0; i < idbtrans.db.objectStoreNames.length; ++i) {\n var storeName = idbtrans.db.objectStoreNames[i];\n if (newSchema[storeName] == null) {\n idbtrans.db.deleteObjectStore(storeName);\n }\n }\n}\nfunction addIndex(store, idx) {\n store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi });\n}\nfunction readGlobalSchema(db, idbdb, tmpTrans) {\n db.verno = idbdb.version / 10;\n var globalSchema = db._dbSchema = {};\n var dbStoreNames = db._storeNames = slice(idbdb.objectStoreNames, 0);\n if (dbStoreNames.length === 0)\n return;\n dbStoreNames.forEach(function (storeName) {\n var store = tmpTrans.objectStore(storeName);\n var keyPath = store.keyPath;\n var primKey = createIndexSpec(nameFromKeyPath(keyPath), keyPath || \"\", false, false, !!store.autoIncrement, keyPath && typeof keyPath !== 'string');\n var indexes = [];\n for (var j = 0; j < store.indexNames.length; ++j) {\n var idbindex = store.index(store.indexNames[j]);\n keyPath = idbindex.keyPath;\n var index = createIndexSpec(idbindex.name, keyPath, !!idbindex.unique, !!idbindex.multiEntry, false, keyPath && typeof keyPath !== 'string');\n indexes.push(index);\n }\n globalSchema[storeName] = createTableSchema(storeName, primKey, indexes);\n });\n setApiOnPlace(db, [db._allTables], keys(globalSchema), globalSchema);\n}\nfunction adjustToExistingIndexNames(db, schema, idbtrans) {\n var storeNames = idbtrans.db.objectStoreNames;\n for (var i = 0; i < storeNames.length; ++i) {\n var storeName = storeNames[i];\n var store = idbtrans.objectStore(storeName);\n db._hasGetAll = 'getAll' in store;\n for (var j = 0; j < store.indexNames.length; ++j) {\n var indexName = store.indexNames[j];\n var keyPath = store.index(indexName).keyPath;\n var dexieName = typeof keyPath === 'string' ? keyPath : \"[\" + slice(keyPath).join('+') + \"]\";\n if (schema[storeName]) {\n var indexSpec = schema[storeName].idxByName[dexieName];\n if (indexSpec)\n indexSpec.name = indexName;\n }\n }\n }\n if (typeof navigator !== 'undefined' && /Safari/.test(navigator.userAgent) &&\n !/(Chrome\\/|Edge\\/)/.test(navigator.userAgent) &&\n _global.WorkerGlobalScope && _global instanceof _global.WorkerGlobalScope &&\n [].concat(navigator.userAgent.match(/Safari\\/(\\d*)/))[1] < 604) {\n db._hasGetAll = false;\n }\n}\nfunction parseIndexSyntax(indexes) {\n var rv = [];\n indexes.split(',').forEach(function (index) {\n index = index.trim();\n var name = index.replace(/([&*]|\\+\\+)/g, \"\");\n var keyPath = /^\\[/.test(name) ? name.match(/^\\[(.*)\\]$/)[1].split('+') : name;\n rv.push(createIndexSpec(name, keyPath || null, /\\&/.test(index), /\\*/.test(index), /\\+\\+/.test(index), isArray(keyPath)));\n });\n return rv;\n}\n\nvar Version = (function () {\n function Version() {\n }\n Version.prototype._parseStoresSpec = function (stores, outSchema) {\n keys(stores).forEach(function (tableName) {\n if (stores[tableName] !== null) {\n var indexes = parseIndexSyntax(stores[tableName]);\n var primKey = indexes.shift();\n if (primKey.multi)\n throw new exceptions.Schema(\"Primary key cannot be multi-valued\");\n indexes.forEach(function (idx) {\n if (idx.auto)\n throw new exceptions.Schema(\"Only primary key can be marked as autoIncrement (++)\");\n if (!idx.keyPath)\n throw new exceptions.Schema(\"Index must have a name and cannot be an empty string\");\n });\n outSchema[tableName] = createTableSchema(tableName, primKey, indexes);\n }\n });\n };\n Version.prototype.stores = function (stores) {\n var db = this.db;\n this._cfg.storesSource = this._cfg.storesSource ?\n extend(this._cfg.storesSource, stores) :\n stores;\n var versions = db._versions;\n var storesSpec = {};\n versions.forEach(function (version) {\n extend(storesSpec, version._cfg.storesSource);\n });\n var dbschema = (this._cfg.dbschema = {});\n this._parseStoresSpec(storesSpec, dbschema);\n db._dbSchema = dbschema;\n removeTablesApi(db, [db._allTables, db, db.Transaction.prototype]);\n setApiOnPlace(db, [db._allTables, db, db.Transaction.prototype, this._cfg.tables], keys(dbschema), dbschema);\n db._storeNames = keys(dbschema);\n return this;\n };\n Version.prototype.upgrade = function (upgradeFunction) {\n this._cfg.contentUpgrade = upgradeFunction;\n return this;\n };\n return Version;\n}());\n\nfunction createVersionConstructor(db) {\n return makeClassConstructor(Version.prototype, function Version$$1(versionNumber) {\n this.db = db;\n this._cfg = {\n version: versionNumber,\n storesSource: null,\n dbschema: {},\n tables: {},\n contentUpgrade: null\n };\n this.stores({});\n });\n}\n\nvar databaseEnumerator;\nfunction DatabaseEnumerator(indexedDB) {\n var getDatabaseNamesNative = indexedDB && (indexedDB.getDatabaseNames || indexedDB.webkitGetDatabaseNames);\n var dbNamesTable;\n if (!getDatabaseNamesNative) {\n var db = new Dexie(DBNAMES_DB, { addons: [] });\n db.version(1).stores({ dbnames: 'name' });\n dbNamesTable = db.table('dbnames');\n }\n return {\n getDatabaseNames: function () {\n return getDatabaseNamesNative ? new Promise$1(function (resolve, reject) {\n var req = getDatabaseNamesNative.call(indexedDB);\n req.onsuccess = function (event) { return resolve(slice(event.target.result, 0)); };\n req.onerror = eventRejectHandler(reject);\n }) : dbNamesTable.toCollection().primaryKeys();\n },\n add: function (name) {\n return !getDatabaseNamesNative && name !== DBNAMES_DB && dbNamesTable.put({ name: name }).catch(nop);\n },\n remove: function (name) {\n return !getDatabaseNamesNative && name !== DBNAMES_DB && dbNamesTable.delete(name).catch(nop);\n }\n };\n}\nfunction initDatabaseEnumerator(indexedDB) {\n try {\n databaseEnumerator = DatabaseEnumerator(indexedDB);\n }\n catch (e) { }\n}\n\nfunction vip(fn) {\n return newScope(function () {\n PSD.letThrough = true;\n return fn();\n });\n}\n\nfunction dexieOpen(db) {\n var state = db._state;\n var indexedDB = db._deps.indexedDB;\n if (state.isBeingOpened || db.idbdb)\n return state.dbReadyPromise.then(function () { return state.dbOpenError ?\n rejection(state.dbOpenError) :\n db; });\n debug && (state.openCanceller._stackHolder = getErrorWithStack());\n state.isBeingOpened = true;\n state.dbOpenError = null;\n state.openComplete = false;\n var resolveDbReady = state.dbReadyResolve,\n upgradeTransaction = null;\n return Promise$1.race([state.openCanceller, new Promise$1(function (resolve, reject) {\n if (!indexedDB)\n throw new exceptions.MissingAPI(\"indexedDB API not found. If using IE10+, make sure to run your code on a server URL \" +\n \"(not locally). If using old Safari versions, make sure to include indexedDB polyfill.\");\n var dbName = db.name;\n var req = state.autoSchema ?\n indexedDB.open(dbName) :\n indexedDB.open(dbName, Math.round(db.verno * 10));\n if (!req)\n throw new exceptions.MissingAPI(\"IndexedDB API not available\");\n req.onerror = eventRejectHandler(reject);\n req.onblocked = wrap(db._fireOnBlocked);\n req.onupgradeneeded = wrap(function (e) {\n upgradeTransaction = req.transaction;\n if (state.autoSchema && !db._options.allowEmptyDB) {\n req.onerror = preventDefault;\n upgradeTransaction.abort();\n req.result.close();\n var delreq = indexedDB.deleteDatabase(dbName);\n delreq.onsuccess = delreq.onerror = wrap(function () {\n reject(new exceptions.NoSuchDatabase(\"Database \" + dbName + \" doesnt exist\"));\n });\n }\n else {\n upgradeTransaction.onerror = eventRejectHandler(reject);\n var oldVer = e.oldVersion > Math.pow(2, 62) ? 0 : e.oldVersion;\n runUpgraders(db, oldVer / 10, upgradeTransaction, reject);\n }\n }, reject);\n req.onsuccess = wrap(function () {\n upgradeTransaction = null;\n var idbdb = db.idbdb = req.result;\n var objectStoreNames = slice(idbdb.objectStoreNames);\n if (objectStoreNames.length > 0)\n try {\n var tmpTrans = idbdb.transaction(safariMultiStoreFix(objectStoreNames), 'readonly');\n if (state.autoSchema)\n readGlobalSchema(db, idbdb, tmpTrans);\n else\n adjustToExistingIndexNames(db, db._dbSchema, tmpTrans);\n generateMiddlewareStacks(db, tmpTrans);\n }\n catch (e) {\n }\n connections.push(db);\n idbdb.onversionchange = wrap(function (ev) {\n state.vcFired = true;\n db.on(\"versionchange\").fire(ev);\n });\n databaseEnumerator.add(dbName);\n resolve();\n }, reject);\n })]).then(function () {\n state.onReadyBeingFired = [];\n return Promise$1.resolve(vip(db.on.ready.fire)).then(function fireRemainders() {\n if (state.onReadyBeingFired.length > 0) {\n var remainders = state.onReadyBeingFired.reduce(promisableChain, nop);\n state.onReadyBeingFired = [];\n return Promise$1.resolve(vip(remainders)).then(fireRemainders);\n }\n });\n }).finally(function () {\n state.onReadyBeingFired = null;\n }).then(function () {\n state.isBeingOpened = false;\n return db;\n }).catch(function (err) {\n try {\n upgradeTransaction && upgradeTransaction.abort();\n }\n catch (e) { }\n state.isBeingOpened = false;\n db.close();\n state.dbOpenError = err;\n return rejection(state.dbOpenError);\n }).finally(function () {\n state.openComplete = true;\n resolveDbReady();\n });\n}\n\nfunction awaitIterator(iterator) {\n var callNext = function (result) { return iterator.next(result); }, doThrow = function (error) { return iterator.throw(error); }, onSuccess = step(callNext), onError = step(doThrow);\n function step(getNext) {\n return function (val) {\n var next = getNext(val), value = next.value;\n return next.done ? value :\n (!value || typeof value.then !== 'function' ?\n isArray(value) ? Promise.all(value).then(onSuccess, onError) : onSuccess(value) :\n value.then(onSuccess, onError));\n };\n }\n return step(callNext)();\n}\n\nfunction extractTransactionArgs(mode, _tableArgs_, scopeFunc) {\n var i = arguments.length;\n if (i < 2)\n throw new exceptions.InvalidArgument(\"Too few arguments\");\n var args = new Array(i - 1);\n while (--i)\n args[i - 1] = arguments[i];\n scopeFunc = args.pop();\n var tables = flatten(args);\n return [mode, tables, scopeFunc];\n}\nfunction enterTransactionScope(db, mode, storeNames, parentTransaction, scopeFunc) {\n return Promise$1.resolve().then(function () {\n var transless = PSD.transless || PSD;\n var trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction);\n var zoneProps = {\n trans: trans,\n transless: transless\n };\n if (parentTransaction) {\n trans.idbtrans = parentTransaction.idbtrans;\n }\n else {\n trans.create();\n }\n if (scopeFunc.constructor === AsyncFunction) {\n incrementExpectedAwaits();\n }\n var returnValue;\n var promiseFollowed = Promise$1.follow(function () {\n returnValue = scopeFunc.call(trans, trans);\n if (returnValue) {\n if (returnValue.constructor === NativePromise) {\n var decrementor = decrementExpectedAwaits.bind(null, null);\n returnValue.then(decrementor, decrementor);\n }\n else if (typeof returnValue.next === 'function' && typeof returnValue.throw === 'function') {\n returnValue = awaitIterator(returnValue);\n }\n }\n }, zoneProps);\n return (returnValue && typeof returnValue.then === 'function' ?\n Promise$1.resolve(returnValue).then(function (x) { return trans.active ?\n x\n : rejection(new exceptions.PrematureCommit(\"Transaction committed too early. See http://bit.ly/2kdckMn\")); })\n : promiseFollowed.then(function () { return returnValue; })).then(function (x) {\n if (parentTransaction)\n trans._resolve();\n return trans._completion.then(function () { return x; });\n }).catch(function (e) {\n trans._reject(e);\n return rejection(e);\n });\n });\n}\n\nfunction pad(a, value, count) {\n if (!isArray(a))\n a = [a];\n var length = a.length;\n var result = new Array(length + count);\n for (var i = a.length + count - 1; i >= length; --i) {\n result[i] = value;\n }\n return result;\n}\nfunction createVirtualIndexMiddleware(down) {\n return __assign({}, down, { table: function (tableName) {\n var table = down.table(tableName);\n var schema = table.schema;\n var indexLookup = {};\n var allVirtualIndexes = [];\n function addVirtualIndexes(keyPath, keyTail, lowLevelIndex) {\n var keyPathAlias = getKeyPathAlias(keyPath);\n var indexList = (indexLookup[keyPathAlias] = indexLookup[keyPathAlias] || []);\n var keyLength = keyPath == null ? 0 : typeof keyPath === 'string' ? 1 : keyPath.length;\n var isVirtual = keyTail > 0;\n var virtualIndex = __assign({}, lowLevelIndex, { isVirtual: isVirtual, isPrimaryKey: !isVirtual && lowLevelIndex.isPrimaryKey, keyTail: keyTail,\n keyLength: keyLength, extractKey: getKeyExtractor(keyPath), unique: !isVirtual && lowLevelIndex.unique });\n indexList.push(virtualIndex);\n if (!virtualIndex.isPrimaryKey) {\n allVirtualIndexes.push(virtualIndex);\n }\n if (keyLength > 1) {\n var virtualKeyPath = keyLength === 2 ?\n keyPath[0] :\n keyPath.slice(0, keyLength - 1);\n addVirtualIndexes(virtualKeyPath, keyTail + 1, lowLevelIndex);\n }\n indexList.sort(function (a, b) { return a.keyTail - b.keyTail; });\n return virtualIndex;\n }\n var primaryKey = addVirtualIndexes(schema.primaryKey.keyPath, 0, schema.primaryKey);\n indexLookup[\":id\"] = [primaryKey];\n for (var _i = 0, _a = schema.indexes; _i < _a.length; _i++) {\n var index = _a[_i];\n addVirtualIndexes(index.keyPath, 0, index);\n }\n function findBestIndex(keyPath) {\n var result = indexLookup[getKeyPathAlias(keyPath)];\n return result && result[0];\n }\n function translateRange(range, keyTail) {\n return {\n type: range.type === 1 ?\n 2 :\n range.type,\n lower: pad(range.lower, range.lowerOpen ? down.MAX_KEY : down.MIN_KEY, keyTail),\n lowerOpen: true,\n upper: pad(range.upper, range.upperOpen ? down.MIN_KEY : down.MAX_KEY, keyTail),\n upperOpen: true\n };\n }\n function translateRequest(req) {\n var index = req.query.index;\n return index.isVirtual ? __assign({}, req, { query: {\n index: index,\n range: translateRange(req.query.range, index.keyTail)\n } }) : req;\n }\n var result = __assign({}, table, { schema: __assign({}, schema, { primaryKey: primaryKey, indexes: allVirtualIndexes, getIndexByKeyPath: findBestIndex }), count: function (req) {\n return table.count(translateRequest(req));\n },\n query: function (req) {\n return table.query(translateRequest(req));\n },\n openCursor: function (req) {\n var _a = req.query.index, keyTail = _a.keyTail, isVirtual = _a.isVirtual, keyLength = _a.keyLength;\n if (!isVirtual)\n return table.openCursor(req);\n function createVirtualCursor(cursor) {\n function _continue(key) {\n key != null ?\n cursor.continue(pad(key, req.reverse ? down.MAX_KEY : down.MIN_KEY, keyTail)) :\n req.unique ?\n cursor.continue(pad(cursor.key, req.reverse ? down.MIN_KEY : down.MAX_KEY, keyTail)) :\n cursor.continue();\n }\n return __assign({}, cursor, { continue: _continue, continuePrimaryKey: function (key, primaryKey) {\n cursor.continuePrimaryKey(pad(key, down.MAX_KEY, keyTail), primaryKey);\n }, get key() {\n var key = cursor.key;\n return keyLength === 1 ?\n key[0] :\n key.slice(0, keyLength);\n } });\n }\n return table.openCursor(translateRequest(req))\n .then(function (cursor) { return cursor && createVirtualCursor(cursor); });\n } });\n return result;\n } });\n}\nvar virtualIndexMiddleware = {\n stack: \"dbcore\",\n name: \"VirtualIndexMiddleware\",\n level: 1,\n create: createVirtualIndexMiddleware\n};\n\nvar hooksMiddleware = {\n stack: \"dbcore\",\n name: \"HooksMiddleware\",\n level: 2,\n create: function (downCore) { return (__assign({}, downCore, { table: function (tableName) {\n var downTable = downCore.table(tableName);\n var primaryKey = downTable.schema.primaryKey;\n var tableMiddleware = __assign({}, downTable, { mutate: function (req) {\n var dxTrans = PSD.trans;\n var _a = dxTrans.table(tableName).hook, deleting = _a.deleting, creating = _a.creating, updating = _a.updating;\n switch (req.type) {\n case 'add':\n if (creating.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n case 'put':\n if (creating.fire === nop && updating.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n case 'delete':\n if (deleting.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return addPutOrDelete(req); }, true);\n case 'deleteRange':\n if (deleting.fire === nop)\n break;\n return dxTrans._promise('readwrite', function () { return deleteRange(req); }, true);\n }\n return downTable.mutate(req);\n function addPutOrDelete(req) {\n var dxTrans = PSD.trans;\n var keys$$1 = req.keys || getEffectiveKeys(primaryKey, req);\n if (!keys$$1)\n throw new Error(\"Keys missing\");\n req = req.type === 'add' || req.type === 'put' ? __assign({}, req, { keys: keys$$1, wantResults: true }) :\n __assign({}, req);\n if (req.type !== 'delete')\n req.values = req.values.slice();\n if (req.keys)\n req.keys = req.keys.slice();\n return getExistingValues(downTable, req, keys$$1).then(function (existingValues) {\n var contexts = keys$$1.map(function (key, i) {\n var existingValue = existingValues[i];\n var ctx = { onerror: null, onsuccess: null };\n if (req.type === 'delete') {\n deleting.fire.call(ctx, key, existingValue, dxTrans);\n }\n else if (req.type === 'add' || existingValue === undefined) {\n var generatedPrimaryKey = creating.fire.call(ctx, key, req.values[i], dxTrans);\n if (key == null && generatedPrimaryKey != null) {\n key = generatedPrimaryKey;\n req.keys[i] = key;\n if (!primaryKey.outbound) {\n setByKeyPath(req.values[i], primaryKey.keyPath, key);\n }\n }\n }\n else {\n var objectDiff = getObjectDiff(existingValue, req.values[i]);\n var additionalChanges_1 = updating.fire.call(ctx, objectDiff, key, existingValue, dxTrans);\n if (additionalChanges_1) {\n var requestedValue_1 = req.values[i];\n Object.keys(additionalChanges_1).forEach(function (keyPath) {\n setByKeyPath(requestedValue_1, keyPath, additionalChanges_1[keyPath]);\n });\n }\n }\n return ctx;\n });\n return downTable.mutate(req).then(function (_a) {\n var failures = _a.failures, results = _a.results, numFailures = _a.numFailures, lastResult = _a.lastResult;\n for (var i = 0; i < keys$$1.length; ++i) {\n var primKey = results ? results[i] : keys$$1[i];\n var ctx = contexts[i];\n if (primKey == null) {\n ctx.onerror && ctx.onerror(failures[i]);\n }\n else {\n ctx.onsuccess && ctx.onsuccess(req.type === 'put' && existingValues[i] ?\n req.values[i] :\n primKey\n );\n }\n }\n return { failures: failures, results: results, numFailures: numFailures, lastResult: lastResult };\n }).catch(function (error) {\n contexts.forEach(function (ctx) { return ctx.onerror && ctx.onerror(error); });\n return Promise.reject(error);\n });\n });\n }\n function deleteRange(req) {\n return deleteNextChunk(req.trans, req.range, 10000);\n }\n function deleteNextChunk(trans, range, limit) {\n return downTable.query({ trans: trans, values: false, query: { index: primaryKey, range: range }, limit: limit })\n .then(function (_a) {\n var result = _a.result;\n return addPutOrDelete({ type: 'delete', keys: result, trans: trans }).then(function (res) {\n if (res.numFailures > 0)\n return Promise.reject(res.failures[0]);\n if (result.length < limit) {\n return { failures: [], numFailures: 0, lastResult: undefined };\n }\n else {\n return deleteNextChunk(trans, __assign({}, range, { lower: result[result.length - 1], lowerOpen: true }), limit);\n }\n });\n });\n }\n } });\n return tableMiddleware;\n } })); }\n};\n\nvar Dexie = (function () {\n function Dexie(name, options) {\n var _this = this;\n this._middlewares = {};\n this.verno = 0;\n var deps = Dexie.dependencies;\n this._options = options = __assign({\n addons: Dexie.addons, autoOpen: true,\n indexedDB: deps.indexedDB, IDBKeyRange: deps.IDBKeyRange }, options);\n this._deps = {\n indexedDB: options.indexedDB,\n IDBKeyRange: options.IDBKeyRange\n };\n var addons = options.addons;\n this._dbSchema = {};\n this._versions = [];\n this._storeNames = [];\n this._allTables = {};\n this.idbdb = null;\n var state = {\n dbOpenError: null,\n isBeingOpened: false,\n onReadyBeingFired: null,\n openComplete: false,\n dbReadyResolve: nop,\n dbReadyPromise: null,\n cancelOpen: nop,\n openCanceller: null,\n autoSchema: true\n };\n state.dbReadyPromise = new Promise$1(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new Promise$1(function (_, reject) {\n state.cancelOpen = reject;\n });\n this._state = state;\n this.name = name;\n this.on = Events(this, \"populate\", \"blocked\", \"versionchange\", { ready: [promisableChain, nop] });\n this.on.ready.subscribe = override(this.on.ready.subscribe, function (subscribe) {\n return function (subscriber, bSticky) {\n Dexie.vip(function () {\n var state = _this._state;\n if (state.openComplete) {\n if (!state.dbOpenError)\n Promise$1.resolve().then(subscriber);\n if (bSticky)\n subscribe(subscriber);\n }\n else if (state.onReadyBeingFired) {\n state.onReadyBeingFired.push(subscriber);\n if (bSticky)\n subscribe(subscriber);\n }\n else {\n subscribe(subscriber);\n var db_1 = _this;\n if (!bSticky)\n subscribe(function unsubscribe() {\n db_1.on.ready.unsubscribe(subscriber);\n db_1.on.ready.unsubscribe(unsubscribe);\n });\n }\n });\n };\n });\n this.Collection = createCollectionConstructor(this);\n this.Table = createTableConstructor(this);\n this.Transaction = createTransactionConstructor(this);\n this.Version = createVersionConstructor(this);\n this.WhereClause = createWhereClauseConstructor(this);\n this.on(\"versionchange\", function (ev) {\n if (ev.newVersion > 0)\n console.warn(\"Another connection wants to upgrade database '\" + _this.name + \"'. Closing db now to resume the upgrade.\");\n else\n console.warn(\"Another connection wants to delete database '\" + _this.name + \"'. Closing db now to resume the delete request.\");\n _this.close();\n });\n this.on(\"blocked\", function (ev) {\n if (!ev.newVersion || ev.newVersion < ev.oldVersion)\n console.warn(\"Dexie.delete('\" + _this.name + \"') was blocked\");\n else\n console.warn(\"Upgrade '\" + _this.name + \"' blocked by other connection holding version \" + ev.oldVersion / 10);\n });\n this._maxKey = getMaxKey(options.IDBKeyRange);\n this._createTransaction = function (mode, storeNames, dbschema, parentTransaction) { return new _this.Transaction(mode, storeNames, dbschema, parentTransaction); };\n this._fireOnBlocked = function (ev) {\n _this.on(\"blocked\").fire(ev);\n connections\n .filter(function (c) { return c.name === _this.name && c !== _this && !c._state.vcFired; })\n .map(function (c) { return c.on(\"versionchange\").fire(ev); });\n };\n this.use(virtualIndexMiddleware);\n this.use(hooksMiddleware);\n addons.forEach(function (addon) { return addon(_this); });\n }\n Dexie.prototype.version = function (versionNumber) {\n versionNumber = Math.round(versionNumber * 10) / 10;\n if (this.idbdb || this._state.isBeingOpened)\n throw new exceptions.Schema(\"Cannot add version when database is open\");\n this.verno = Math.max(this.verno, versionNumber);\n var versions = this._versions;\n var versionInstance = versions.filter(function (v) { return v._cfg.version === versionNumber; })[0];\n if (versionInstance)\n return versionInstance;\n versionInstance = new this.Version(versionNumber);\n versions.push(versionInstance);\n versions.sort(lowerVersionFirst);\n this._state.autoSchema = false;\n return versionInstance;\n };\n Dexie.prototype._whenReady = function (fn) {\n var _this = this;\n return this._state.openComplete || PSD.letThrough ? fn() : new Promise$1(function (resolve, reject) {\n if (!_this._state.isBeingOpened) {\n if (!_this._options.autoOpen) {\n reject(new exceptions.DatabaseClosed());\n return;\n }\n _this.open().catch(nop);\n }\n _this._state.dbReadyPromise.then(resolve, reject);\n }).then(fn);\n };\n Dexie.prototype.use = function (_a) {\n var stack = _a.stack, create = _a.create, level = _a.level, name = _a.name;\n if (name)\n this.unuse({ stack: stack, name: name });\n var middlewares = this._middlewares[stack] || (this._middlewares[stack] = []);\n middlewares.push({ stack: stack, create: create, level: level == null ? 10 : level, name: name });\n middlewares.sort(function (a, b) { return a.level - b.level; });\n return this;\n };\n Dexie.prototype.unuse = function (_a) {\n var stack = _a.stack, name = _a.name, create = _a.create;\n if (stack && this._middlewares[stack]) {\n this._middlewares[stack] = this._middlewares[stack].filter(function (mw) {\n return create ? mw.create !== create :\n name ? mw.name !== name :\n false;\n });\n }\n return this;\n };\n Dexie.prototype.open = function () {\n return dexieOpen(this);\n };\n Dexie.prototype.close = function () {\n var idx = connections.indexOf(this), state = this._state;\n if (idx >= 0)\n connections.splice(idx, 1);\n if (this.idbdb) {\n try {\n this.idbdb.close();\n }\n catch (e) { }\n this.idbdb = null;\n }\n this._options.autoOpen = false;\n state.dbOpenError = new exceptions.DatabaseClosed();\n if (state.isBeingOpened)\n state.cancelOpen(state.dbOpenError);\n state.dbReadyPromise = new Promise$1(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new Promise$1(function (_, reject) {\n state.cancelOpen = reject;\n });\n };\n Dexie.prototype.delete = function () {\n var _this = this;\n var hasArguments = arguments.length > 0;\n var state = this._state;\n return new Promise$1(function (resolve, reject) {\n var doDelete = function () {\n _this.close();\n var req = _this._deps.indexedDB.deleteDatabase(_this.name);\n req.onsuccess = wrap(function () {\n databaseEnumerator.remove(_this.name);\n resolve();\n });\n req.onerror = eventRejectHandler(reject);\n req.onblocked = _this._fireOnBlocked;\n };\n if (hasArguments)\n throw new exceptions.InvalidArgument(\"Arguments not allowed in db.delete()\");\n if (state.isBeingOpened) {\n state.dbReadyPromise.then(doDelete);\n }\n else {\n doDelete();\n }\n });\n };\n Dexie.prototype.backendDB = function () {\n return this.idbdb;\n };\n Dexie.prototype.isOpen = function () {\n return this.idbdb !== null;\n };\n Dexie.prototype.hasBeenClosed = function () {\n var dbOpenError = this._state.dbOpenError;\n return dbOpenError && (dbOpenError.name === 'DatabaseClosed');\n };\n Dexie.prototype.hasFailed = function () {\n return this._state.dbOpenError !== null;\n };\n Dexie.prototype.dynamicallyOpened = function () {\n return this._state.autoSchema;\n };\n Object.defineProperty(Dexie.prototype, \"tables\", {\n get: function () {\n var _this = this;\n return keys(this._allTables).map(function (name) { return _this._allTables[name]; });\n },\n enumerable: true,\n configurable: true\n });\n Dexie.prototype.transaction = function () {\n var args = extractTransactionArgs.apply(this, arguments);\n return this._transaction.apply(this, args);\n };\n Dexie.prototype._transaction = function (mode, tables, scopeFunc) {\n var _this = this;\n var parentTransaction = PSD.trans;\n if (!parentTransaction || parentTransaction.db !== this || mode.indexOf('!') !== -1)\n parentTransaction = null;\n var onlyIfCompatible = mode.indexOf('?') !== -1;\n mode = mode.replace('!', '').replace('?', '');\n var idbMode, storeNames;\n try {\n storeNames = tables.map(function (table) {\n var storeName = table instanceof _this.Table ? table.name : table;\n if (typeof storeName !== 'string')\n throw new TypeError(\"Invalid table argument to Dexie.transaction(). Only Table or String are allowed\");\n return storeName;\n });\n if (mode == \"r\" || mode === READONLY)\n idbMode = READONLY;\n else if (mode == \"rw\" || mode == READWRITE)\n idbMode = READWRITE;\n else\n throw new exceptions.InvalidArgument(\"Invalid transaction mode: \" + mode);\n if (parentTransaction) {\n if (parentTransaction.mode === READONLY && idbMode === READWRITE) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n }\n else\n throw new exceptions.SubTransaction(\"Cannot enter a sub-transaction with READWRITE mode when parent transaction is READONLY\");\n }\n if (parentTransaction) {\n storeNames.forEach(function (storeName) {\n if (parentTransaction && parentTransaction.storeNames.indexOf(storeName) === -1) {\n if (onlyIfCompatible) {\n parentTransaction = null;\n }\n else\n throw new exceptions.SubTransaction(\"Table \" + storeName +\n \" not included in parent transaction.\");\n }\n });\n }\n if (onlyIfCompatible && parentTransaction && !parentTransaction.active) {\n parentTransaction = null;\n }\n }\n }\n catch (e) {\n return parentTransaction ?\n parentTransaction._promise(null, function (_, reject) { reject(e); }) :\n rejection(e);\n }\n var enterTransaction = enterTransactionScope.bind(null, this, idbMode, storeNames, parentTransaction, scopeFunc);\n return (parentTransaction ?\n parentTransaction._promise(idbMode, enterTransaction, \"lock\") :\n PSD.trans ?\n usePSD(PSD.transless, function () { return _this._whenReady(enterTransaction); }) :\n this._whenReady(enterTransaction));\n };\n Dexie.prototype.table = function (tableName) {\n if (!hasOwn(this._allTables, tableName)) {\n throw new exceptions.InvalidTable(\"Table \" + tableName + \" does not exist\");\n }\n return this._allTables[tableName];\n };\n return Dexie;\n}());\n\nvar Dexie$1 = Dexie;\nprops(Dexie$1, __assign({}, fullNameExceptions, {\n delete: function (databaseName) {\n var db = new Dexie$1(databaseName);\n return db.delete();\n },\n exists: function (name) {\n return new Dexie$1(name, { addons: [] }).open().then(function (db) {\n db.close();\n return true;\n }).catch('NoSuchDatabaseError', function () { return false; });\n },\n getDatabaseNames: function (cb) {\n return databaseEnumerator ?\n databaseEnumerator.getDatabaseNames().then(cb) :\n Promise$1.resolve([]);\n },\n defineClass: function () {\n function Class(content) {\n extend(this, content);\n }\n return Class;\n },\n ignoreTransaction: function (scopeFunc) {\n return PSD.trans ?\n usePSD(PSD.transless, scopeFunc) :\n scopeFunc();\n },\n vip: vip, async: function (generatorFn) {\n return function () {\n try {\n var rv = awaitIterator(generatorFn.apply(this, arguments));\n if (!rv || typeof rv.then !== 'function')\n return Promise$1.resolve(rv);\n return rv;\n }\n catch (e) {\n return rejection(e);\n }\n };\n }, spawn: function (generatorFn, args, thiz) {\n try {\n var rv = awaitIterator(generatorFn.apply(thiz, args || []));\n if (!rv || typeof rv.then !== 'function')\n return Promise$1.resolve(rv);\n return rv;\n }\n catch (e) {\n return rejection(e);\n }\n },\n currentTransaction: {\n get: function () { return PSD.trans || null; }\n }, waitFor: function (promiseOrFunction, optionalTimeout) {\n var promise = Promise$1.resolve(typeof promiseOrFunction === 'function' ?\n Dexie$1.ignoreTransaction(promiseOrFunction) :\n promiseOrFunction)\n .timeout(optionalTimeout || 60000);\n return PSD.trans ?\n PSD.trans.waitFor(promise) :\n promise;\n },\n Promise: Promise$1,\n debug: {\n get: function () { return debug; },\n set: function (value) {\n setDebug(value, value === 'dexie' ? function () { return true; } : dexieStackFrameFilter);\n }\n },\n derive: derive, extend: extend, props: props, override: override,\n Events: Events,\n getByKeyPath: getByKeyPath, setByKeyPath: setByKeyPath, delByKeyPath: delByKeyPath, shallowClone: shallowClone, deepClone: deepClone, getObjectDiff: getObjectDiff, asap: asap,\n minKey: minKey,\n addons: [],\n connections: connections,\n errnames: errnames,\n dependencies: (function () {\n try {\n return {\n indexedDB: _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB,\n IDBKeyRange: _global.IDBKeyRange || _global.webkitIDBKeyRange\n };\n }\n catch (e) {\n return { indexedDB: null, IDBKeyRange: null };\n }\n })(),\n semVer: DEXIE_VERSION, version: DEXIE_VERSION.split('.')\n .map(function (n) { return parseInt(n); })\n .reduce(function (p, c, i) { return p + (c / Math.pow(10, i * 2)); }),\n default: Dexie$1,\n Dexie: Dexie$1 }));\nDexie$1.maxKey = getMaxKey(Dexie$1.dependencies.IDBKeyRange);\n\ninitDatabaseEnumerator(Dexie.dependencies.indexedDB);\nPromise$1.rejectionMapper = mapError;\nsetDebug(debug, dexieStackFrameFilter);\n\nexport default Dexie;\n//# sourceMappingURL=dexie.mjs.map\n"],"sourceRoot":""} \ No newline at end of file