@ekyc_qoobiss/qbs-ect-cmp 4.4.2 → 4.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (23) hide show
  1. package/dist/cjs/{TranslationUtils-ff21cb33.js → TranslationUtils-fe06fc2a.js} +3 -2
  2. package/dist/cjs/{TranslationUtils-ff21cb33.js.map → TranslationUtils-fe06fc2a.js.map} +1 -1
  3. package/dist/cjs/agreement-check.cjs.entry.js +1 -1
  4. package/dist/cjs/agreement-info_23.cjs.entry.js +2 -2
  5. package/dist/cjs/random-actions.cjs.entry.js +1 -1
  6. package/dist/collection/helpers/ApiCall.js +2 -1
  7. package/dist/collection/helpers/ApiCall.js.map +1 -1
  8. package/dist/esm/{TranslationUtils-d4bb5067.js → TranslationUtils-1a5714cc.js} +3 -2
  9. package/dist/esm/{TranslationUtils-d4bb5067.js.map → TranslationUtils-1a5714cc.js.map} +1 -1
  10. package/dist/esm/agreement-check.entry.js +1 -1
  11. package/dist/esm/agreement-info_23.entry.js +2 -2
  12. package/dist/esm/random-actions.entry.js +1 -1
  13. package/dist/qbs-ect-cmp/{p-717973c8.js → p-686bbe12.js} +2 -2
  14. package/dist/qbs-ect-cmp/p-686bbe12.js.map +1 -0
  15. package/dist/qbs-ect-cmp/{p-5f0bbc66.entry.js → p-7cd895a8.entry.js} +3 -3
  16. package/dist/qbs-ect-cmp/{p-62312620.entry.js → p-9785a999.entry.js} +2 -2
  17. package/dist/qbs-ect-cmp/{p-b1d50e64.entry.js → p-e6656d7a.entry.js} +2 -2
  18. package/dist/qbs-ect-cmp/qbs-ect-cmp.esm.js +1 -1
  19. package/package.json +1 -1
  20. package/dist/qbs-ect-cmp/p-717973c8.js.map +0 -1
  21. /package/dist/qbs-ect-cmp/{p-5f0bbc66.entry.js.map → p-7cd895a8.entry.js.map} +0 -0
  22. /package/dist/qbs-ect-cmp/{p-62312620.entry.js.map → p-9785a999.entry.js.map} +0 -0
  23. /package/dist/qbs-ect-cmp/{p-b1d50e64.entry.js.map → p-e6656d7a.entry.js.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"names":["appendToMap","map","propName","value","items","get","set","includes","push","debounce","fn","ms","timeoutId","args","clearTimeout","setTimeout","isConnected","maybeElement","cleanupElements","key","keys","filter","stencilSubscription","getRenderingRef","elmsToUpdate","Map","dispose","clear","elm","elements","forceUpdate","reset","forEach","elms","unwrap","val","createObservableMap","defaultState","shouldUpdate","a","b","unwrappedState","states","Object","entries","handlers","_a","cb","oldValue","state","Proxy","_","ownKeys","Array","from","getOwnPropertyDescriptor","enumerable","configurable","has","on","eventName","callback","removeFromArray","onChange","unSet","newValue","unReset","use","subscriptions","unsubs","reduce","subscription","unsub","array","item","index","indexOf","length","createStore","FlowStatus","extendStatics","d","setPrototypeOf","__proto__","p","prototype","hasOwnProperty","call","__extends","TypeError","String","__","this","constructor","create","__assign","assign","t","s","i","n","arguments","apply","__spreadArray","to","pack","l","ar","slice","concat","_global","globalThis","self","window","global","isArray","Promise","extend","obj","extension","getProto","getPrototypeOf","_hasOwn","hasOwn","prop","props","proto","Reflect","setProp","defineProperty","functionOrGetSet","options","writable","derive","Child","Parent","bind","getPropertyDescriptor","pd","_slice","start","end","override","origFunc","overridedFactory","assert","Error","asap$1","setImmediate","arrayToObject","extractor","result","nameAndValue","getByKeyPath","keyPath","rv","period","innerObj","substr","undefined","setByKeyPath","isFrozen","currentKeyPath","remainingKeyPath","isNaN","parseInt","splice","delByKeyPath","kp","shallowClone","m","flatten","intrinsicTypeNames","split","num","intrinsicTypes","Set","cloneSimpleObjectTree","o","k","v","objectIsEmpty","circularRefs","deepClone","any","WeakMap","innerDeepClone","x","toString","toStringTag","iteratorSymbol","Symbol","iterator","getIteratorOf","delArrayItem","NO_CHAR_ARRAY","getArrayOf","arrayLike","it","next","done","isAsyncFunction","dexieErrorNames","idbDomErrorNames","errorList","defaultTexts","VersionChanged","DatabaseClosed","Abort","TransactionInactive","MissingAPI","DexieError","name","msg","message","getMultiErrorMessage","failures","join","ModifyError","successCount","failedKeys","BulkError","pos","failuresByPos","errnames","BaseException","exceptions","fullName","msgOrInner","inner","Syntax","SyntaxError","Type","Range","RangeError","exceptionMap","mapError","domError","stack","fullNameExceptions","nop","mirror","pureFunctionChain","f1","f2","callBoth","on1","on2","hookCreatingChain","res","onsuccess","onerror","res2","hookDeletingChain","hookUpdatingChain","modifications","reverseStoppableEventChain","promisableChain","then","thiz","debug","location","test","href","setDebug","INTERNAL","ZONE_ECHO_LIMIT","_a$1","globalP","resolve","crypto","subtle","nativeP","digest","Uint8Array","resolvedNativePromise","nativePromiseProto","resolvedGlobalPromise","nativePromiseThen","NativePromise","patchGlobalPromise","schedulePhysicalTick","queueMicrotask","physicalTick","asap","microtickQueue","needsNewPhysicalTick","isOutsideMicroTick","unhandledErrors","rejectingErrors","rejectionMapper","globalPSD","id","ref","unhandleds","onunhandled","pgp","env","finalize","PSD","numScheduledCalls","tickFinalizers","DexiePromise","_listeners","_lib","psd","_PSD","_state","_value","handleRejection","executePromiseTask","thenProp","microTaskId","totalEchoes","onFulfilled","onRejected","_this","possibleAwait","cleanup","decrementExpectedAwaits","reject","propagateToListener","Listener","nativeAwaitCompatibleWrap","_consoleTask","_then","catch","type","handler","err","PromiseReject","finally","onFinally","timeout","Infinity","handle","Timeout","snapShot","zone","all","values","onPossibleParallellAsync","remaining","race","newPSD","newScope","usePSD","scheduler","follow","zoneProps","run_at_end_of_this_or_next_physical_tick","allSettled","possiblePromises","results","status","reason","AggregateError","failure","withResolvers","promise","shouldExecuteTick","beginMicroTickScope","propagateAllListeners","endMicroTickScope","ex","addPossiblyUnhandledError","listeners","len","finalizePhysicalTick","listener","callListener","ret","run","markErrorAsHandled","e","wasRootExec","callbacks","unhandledErrs","finalizers","finalizer","some","wrap","errorCatcher","outerScope","switchToZone","task","awaits","echoes","taskCounter","zoneStack","zoneEchoes","zone_id_counter","a1","a2","parent","PromiseProp","incrementExpectedAwaits","possiblePromise","rejection","zoneEnterEcho","targetZone","zoneLeaveEcho","pop","bEnteringZone","currentZone","GlobalPromise","targetEnv","a3","outerZone","execInGlobalContext","enqueueNativeMicroTask","tempTransaction","db","mode","storeNames","idbdb","openComplete","letThrough","_vip","dbOpenError","isBeingOpened","autoOpen","open","dbReadyPromise","trans","_createTransaction","_dbSchema","PR1398_maxLoop","InvalidState","isOpen","console","warn","close","disableAutoOpen","_promise","idbtrans","commit","_completion","DEXIE_VERSION","maxString","fromCharCode","minKey","INVALID_KEY_ARGUMENT","STRING_EXPECTED","connections","DBNAMES_DB","READONLY","READWRITE","combine","filter1","filter2","AnyRange","lower","lowerOpen","upper","upperOpen","workaroundForUndefinedPrimKey","Entity","cmp","ta","tb","NaN","compareUint8Arrays","getUint8Array","compareArrays","al","bl","ArrayBuffer","isView","tsTag","buffer","byteOffset","byteLength","Table","_trans","writeLocked","_tx","tableName","createTask","checkTableInTransaction","schema","NotFound","_novip","transless","trace","keyOrCrit","where","first","core","hook","reading","fire","indexOrCrit","WhereClause","keyPaths","equals","compoundIndex","indexes","primKey","ix","compound","every","sort","_maxKey","keyPathsInValidOrder","JSON","stringify","idxByName","prevIndex","prevFilterFn","multi","idx","filterFunction","toCollection","and","count","thenShortcut","offset","limit","numRows","each","toArray","Collection","orderBy","reverse","mapToClass","mappedClass","_super","class_1","table","inheritedProps","getOwnPropertyNames","add","readHook","unsubscribe","defineClass","Class","content","auto","objToAdd","mutate","numFailures","lastResult","update","keyOrObject","InvalidArgument","modify","put","delete","range","bulkGet","getMany","bulkAdd","objects","keysOrOptions","wantResults","allKeys","numObjects","objectsToAdd","bulkPut","objectsToPut","bulkUpdate","keysAndChanges","coreTable","entry","changeSpecs","changes","offsetMap","cache","objs","resultKeys","resultObjs","_i","_b","Constraint","numEntries","updates","mappedOffset","Number","bulkDelete","numKeys","Events","ctx","evs","subscriber","subscribe","addEventType","chainFunction","defaultFunction","addConfiguredEvents","context","subscribers","cfg","fireEvent","makeClassConstructor","createTableConstructor","tableSchema","_allTables","creating","updating","deleting","isPlainKeyRange","ignoreLimitFilter","algorithm","or","justLimit","replayFilter","addFilter","addReplayFilter","factory","isLimitFilter","curr","addMatchFilter","isMatch","getIndexOrStore","coreSchema","isPrimKey","primaryKey","getIndexByKeyPath","Schema","openCursor","keysOnly","dir","unique","query","iter","coreTrans","iterate","valueMapper","set_1","union","cursor","advance","stop","fail","_iterate","cursorPromise","mappedFn","c","wrappedFn","continue","advancer","PropModification","spec","execute","term","BigInt","remove","subtrahend_1","_c","prefixToReplace","replacePrefix","startsWith","substring","_read","_ctx","error","_write","_addAlgorithm","clone","raw","Math","min","sortBy","parts","lastPart","lastIndex","getval","order","sorter","aVal","bVal","valueMapper_1","a_1","offsetLeft","rowsLeft","until","bIncludeStopEntry","last","indexName","_ondirectionchange","desc","eachKey","eachUniqueKey","eachPrimaryKey","primaryKeys","uniqueKeys","firstKey","lastKey","distinct","strKey","found","modifyer","anythingModified","origVal","outbound","extractKey","modifyChunkSize","_options","totalFailures","applyMutateResult","expectedCount","criteria","deleteCallback","nextChunk","addValues","putValues","putKeys","deleteKeys","origValue","ctx_1","changeSpec","isAdditionalChunk","coreRange","createCollectionConstructor","whereClause","keyRangeGenerator","keyRange","whereCtx","readingHook","simpleCompare","simpleCompareReverse","collectionOrWhereClause","T","collection","emptyCollection","rangeEqual","upperFactory","toUpperCase","toLowerCase","lowerFactory","nextCasing","lowerKey","upperNeedle","lowerNeedle","llp","lwrKeyChar","addIgnoreCaseAlgorithm","match","needles","suffix","compare","upperNeedles","lowerNeedles","direction","nextKeySuffix","needlesLen","initDirection","needleBounds","needle","nb","createRange","firstPossibleNeedle","lowestPossibleCasing","casing","between","includeLower","includeUpper","_cmp","above","aboveOrEqual","below","belowOrEqual","str","startsWithIgnoreCase","equalsIgnoreCase","anyOfIgnoreCase","startsWithAnyOfIgnoreCase","anyOf","_ascending","_descending","notEqual","inAnyRange","includeLowers","includeUppers","noneOf","ranges","ascending","descending","_min","max","_max","addRange","newRange","sortDirection","rangeSorter","rangePos","keyIsBeyondCurrentEntry","keyIsBeforeCurrentEntry","keyWithinCurrentRange","checkKey","startsWithAnyOf","createWhereClauseConstructor","orCollection","_IDBKeyRange","_deps","IDBKeyRange","eventRejectHandler","event","preventDefault","target","stopPropagation","DEXIE_STORAGE_MUTATED_EVENT_NAME","STORAGE_MUTATED_DOM_EVENT_NAME","globalEvents","Transaction","_lock","_reculock","lockOwnerFor","_unlock","_blockedFuncs","_locked","fnAndPSD","shift","OpenFailed","active","transaction","durability","chromeTransactionDurability","ev","_reject","onabort","oncomplete","_resolve","storagemutated","bWriteLock","ReadOnly","_root","waitFor","promiseLike","root","_waitingFor","_waitingQueue","store","objectStore","spin","_spinCount","currentWaitPromise","abort","memoizedTables","_memoizedTables","transactionBoundTable","createTransactionConstructor","dbschema","complete","wasActive","createIndexSpec","src","nameFromKeyPath","createTableSchema","safariMultiStoreFix","getMaxKey","IdbKeyRange","only","getKeyExtractor","getSinglePathKeyExtractor","arrayify","_id_counter","getKeyPathAlias","createDBCore","tmpTrans","extractSchema","tables","objectStoreNames","autoIncrement","indexByKeyPath","isPrimaryKey","indexNames","multiEntry","hasGetAll","navigator","userAgent","makeIDBKeyRange","idbRange","upperBound","lowerBound","bound","createDbCoreTable","isAddOrPut","req","reqs","errorHandler","args1","args2","source","openKeyCursor","___id","_cursorContinue","_cursorContinuePrimaryKey","continuePrimaryKey","_cursorAdvance","doThrowCursorIsNotStarted","doThrowCursorIsStopped","gotOne","iterationPromise","resolveIteration","rejectIteration","guardedCallback","request","nonInfinitLimit","idbKeyRange","getAll","getAllKeys","count_1","req_1","result_1","keyCount","callbackCount","successHandler","_pos","tableMap","MIN_KEY","MAX_KEY","createMiddlewareStack","stackImpl","middlewares","down","createMiddlewareStacks","dbcore","generateMiddlewareStacks","stacks","_middlewares","tbl","setApiOnPlace","tableNames","propDesc","removeTablesApi","lowerVersionFirst","_cfg","version","runUpgraders","oldVersion","idbUpgradeTrans","globalSchema","contains","$meta","parseIndexSyntax","_storeNames","rejectTransaction","createTable","populate","getExistingVersion","updateTablesAndIndexes","patchCurrentVersion","createMissingTables","createObjectStore","ceil","buildGlobalSchema","adjustToExistingIndexNames","diff","getSchemaDiff","_loop_1","tableChange","change","recreate","addIndex","state_1","metaVersion","queue","versions","_versions","versToRun","oldSchema","newSchema","tuple","Upgrade","store_1","deleteIndex","del","idxName","contentUpgrade","upgradeSchema_1","contentUpgradeIsAsync_1","returnValue_1","promiseFollowed","decrementor","deleteRemovedTables","deleteObjectStore","runQueue","oldDef","newDef","def","oldIndexes","newIndexes","oldIdx","newIdx","storeName","createIndex","dbStoreNames","j","idbindex","readGlobalSchema","verno","verifyInstalledSchema","installedSchema","ch","_hasGetAll","dexieName","indexSpec","WorkerGlobalScope","primKeyAndIndexes","indexNum","trim","replace","Version","_parseStoresSpec","stores","outSchema","storesSource","storesSpec","upgrade","upgradeFunction","createVersionConstructor","versionNumber","getDbNamesTable","indexedDB","dbNamesDB","Dexie$1","addons","dbnames","hasDatabasesNative","databases","getDatabaseNames","infos","info","_onDatabaseCreated","_onDatabaseDeleted","vip","idbReady","isSafari","userAgentData","intervalId","tryIdb","setInterval","clearInterval","isEmptyRange","node","RangeSet","fromOrTree","rangeSet","mergeRanges","addKey","addKeys","hasKey","getRangeSetIterator","left","right","r","rebalance","rightWasCutOff","newSet","_addRangeSet","rangesOverlap","rangeSet1","rangeSet2","i1","nextResult1","i2","nextResult2","keyProvided","up","rootClone","oldRootRight","computeDepth","extendObservabilitySet","part","obsSetsOverlap","os1","os2","unsignaledParts","isTaskEnqueued","signalSubscribersLazily","optimistic","signalSubscribersNow","updatedParts","deleteAffectedCacheEntries","queriesToSignal","tblCache","collectTableSubscribers","exec","dbName","requery","outQueriesToSignal","updatedEntryLists","queries","filteredEntries","entries_1","obsSet","_d","updatedEntryLists_1","_e","dexieOpen","openCanceller","nativeVerToOpen","round","schemaPatchMode","throwIfCancelled","resolveDbReady","dbReadyResolve","upgradeTransaction","wasCreated","tryOpenDB","autoSchema","onblocked","_fireOnBlocked","onupgradeneeded","allowEmptyDB","delreq","deleteDatabase","NoSuchDatabase","oldVer","pow","onversionchange","vcFired","onclose","onReadyBeingFired","ready","fireRemainders","remainders_1","_close","everything_1","awaitIterator","callNext","doThrow","throw","onSuccess","step","onError","getNext","extractTransactionArgs","_tableArgs_","scopeFunc","enterTransactionScope","parentTransaction","explicit","_explicit","scopeFuncIsAsync","returnValue","PrematureCommit","pad","createVirtualIndexMiddleware","indexLookup","allVirtualIndexes","addVirtualIndexes","keyTail","lowLevelIndex","keyPathAlias","indexList","keyLength","isVirtual","virtualIndex","virtualKeyPath","findBestIndex","translateRange","translateRequest","createVirtualCursor","_continue","virtualCursor","virtualIndexMiddleware","level","getObjectDiff","prfx","ap","bp","apTypeName","bpTypeName","getEffectiveKeys","hooksMiddleware","downCore","downTable","tableMiddleware","dxTrans","addPutOrDelete","deleteRange","getExistingValues","existingValues","contexts","existingValue","generatedPrimaryKey","objectDiff","additionalChanges_1","requestedValue_1","deleteNextChunk","effectiveKeys","getFromTransactionCache","cacheExistingValuesMiddleware","cachedResult","isCachableContext","subscr","isCachableRequest","observabilityMiddleware","FULL_RANGE","querier","indexesWithAutoIncPK","tableClone","mutatedParts","getRangeSet","pkRangeSet","delsRangeSet","newObjs","oldCache","oldObjs","trackAffectedIndexes","idxVals","pkPos","findIndex","getRange","readSubscribers","method","isLiveQuery","cachable","pkRangeSet_1","delsRangeSet_1","queriedIndex","queriedRanges","keysPromise_1","resultingKeys","pKeys","cursor_1","wantValues_1","pkey","addAffectedIndex","addKeyOrKeys","oldKey","newKey","adjustOptimisticFromFailures","numBulkOps","isAboveLower","isBelowUpper","isWithinRange","applyOptimisticOps","ops","cacheEntry","immutable","queryRange","extractPrimKey","extractIndex","extractLowLevelIndex","finalResult","op","modifedResult","includedValues","includedPKs","pk","existingKeys_1","keySet_1","keysToDelete_1","range_1","dirty","freeze","areRangesEqual","r1","r2","compareLowers","lower1","lower2","lowerOpen1","lowerOpen2","compareUppers","upper1","upper2","upperOpen1","upperOpen2","isSuperRange","findCompatibleQuery","equalEntry","find","superEntry","countQuery","subscribeToCacheEntry","container","signal","addEventListener","size","enqueForDeletion","cacheMiddleware","coreMW","ac_1","AbortController","endTransaction","wasCommitted","affectedSubscribers_1","stores_1","optimisticOps","_f","_g","_h","freezeResults","modRes","tableMW","reqWithResolvedKeys","valueWithKey","adjustedReq","exactMatch","vipify","vipDb","receiver","Dexie","deps","dependencies","cancelOpen","bSticky","db_1","newVersion","vipDB","tx","addon","versionInstance","_whenReady","unuse","mw","closeOptions","hasInvalidArguments","doDelete","backendDB","hasBeenClosed","hasFailed","dynamicallyOpened","_transaction","onlyIfCompatible","idbMode","SubTransaction","enterTransaction","InvalidTable","symbolObservable","observable","Observable","_subscribe","domDeps","mozIndexedDB","webkitIndexedDB","msIndexedDB","webkitIDBKeyRange","liveQuery","hasValue","currentValue","observer","closed","abortController","accumMuts","currentObs","startedListening","mutationListener","doQuery","_doQuery","shouldNotify","aborted","getValue","databaseName","exists","ignoreTransaction","async","generatorFn","spawn","currentTransaction","promiseOrFunction","optionalTimeout","semVer","maxKey","dispatchEvent","propagatingLocally","event_1","CustomEvent","detail","propagateLocally","updateParts","wasMe","bc","createBC","BroadcastChannel","onmessage","data","unref","changedParts","postMessage","disableBfCache","persisted","connections_1","EctData","EctDb","super","ectdata","getLastEctData","finished","allFinished","getAllEctData","getOrCreateEctData","orderId","ectData","log","redirectId","timestamp","Date","initialized","phoneNumber","refreshStarted","flowStatus","NONE","modelsPath","citizenship","environment","requestId","token","cameraIds","cameraId","apiBaseUrl","device","langIso","logSteps","idDocument","showCitizenshipSelector","scrollMode","CITIZENSHIP","FlowSteps","FlowMoments","OrderStatuses","ApiUrls","uriEnv","OtpSend","OtpCheck","IdentityInsert","UploadCapture","GetAgreement","GenerateAgreement","SendLink","GetStatus","GetStatusUi","AddLog","AddStep","AbortRequest","Translations","StartFlow","NextFlowState","CurrentFlowState","NextStateForCaptureError","CitizenshipList","IdList","SetCitizenship","SetId","ApiCall","getInstance","instance","serviceErrors","urls","http","response","fetch","ok","text","statusText","json","post","url","withRetry","Request","body","headers","Authorization","request2","ex2","request3","SendOTPCode","phone","jsonResp","CheckOTPCode","otpCode","otp","AddIdentificationRequest","deviceInfo","clientDeviceInfo","demoMode","UploadFileForRequestB64","b64Data","respJson","agreementType","resp","htmlText","documentType","generation","link","sent","GetCitizenshipList","GetIdList","setCitReq","SetIdentityDocument","setIdReq","identityDocument","action","saved","moment","toISOString","GetTranslations","LandingValidationStartFlow","cameraIsAccessible","GetNextFlowState","GetFlowState","GetNextStateForCaptureError","TranslationsController","getValues","fetchTranslations","getLocale","element","document","closestElement","closest","lang","locale","exception"],"sources":["node_modules/@stencil/store/dist/index.mjs","src/models/FlowStatus.ts","node_modules/dexie/dist/dexie.mjs","src/helpers/EctDb.ts","src/helpers/db.ts","src/helpers/store.ts","src/models/FlowSteps.ts","src/models/OrderStatuses.ts","src/helpers/textValues.ts","src/helpers/ApiCall.ts","src/helpers/TranslationUtils.ts"],"sourcesContent":["import { getRenderingRef, forceUpdate } from '@stencil/core';\n\nconst appendToMap = (map, propName, value) => {\n const items = map.get(propName);\n if (!items) {\n map.set(propName, [value]);\n }\n else if (!items.includes(value)) {\n items.push(value);\n }\n};\nconst debounce = (fn, ms) => {\n let timeoutId;\n return (...args) => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n timeoutId = setTimeout(() => {\n timeoutId = 0;\n fn(...args);\n }, ms);\n };\n};\n\n/**\n * Check if a possible element isConnected.\n * The property might not be there, so we check for it.\n *\n * We want it to return true if isConnected is not a property,\n * otherwise we would remove these elements and would not update.\n *\n * Better leak in Edge than to be useless.\n */\nconst isConnected = (maybeElement) => !('isConnected' in maybeElement) || maybeElement.isConnected;\nconst cleanupElements = debounce((map) => {\n for (let key of map.keys()) {\n map.set(key, map.get(key).filter(isConnected));\n }\n}, 2000);\nconst stencilSubscription = () => {\n if (typeof getRenderingRef !== 'function') {\n // If we are not in a stencil project, we do nothing.\n // This function is not really exported by @stencil/core.\n return {};\n }\n const elmsToUpdate = new Map();\n return {\n dispose: () => elmsToUpdate.clear(),\n get: (propName) => {\n const elm = getRenderingRef();\n if (elm) {\n appendToMap(elmsToUpdate, propName, elm);\n }\n },\n set: (propName) => {\n const elements = elmsToUpdate.get(propName);\n if (elements) {\n elmsToUpdate.set(propName, elements.filter(forceUpdate));\n }\n cleanupElements(elmsToUpdate);\n },\n reset: () => {\n elmsToUpdate.forEach((elms) => elms.forEach(forceUpdate));\n cleanupElements(elmsToUpdate);\n },\n };\n};\n\nconst unwrap = (val) => (typeof val === 'function' ? val() : val);\nconst createObservableMap = (defaultState, shouldUpdate = (a, b) => a !== b) => {\n const unwrappedState = unwrap(defaultState);\n let states = new Map(Object.entries(unwrappedState !== null && unwrappedState !== void 0 ? unwrappedState : {}));\n const handlers = {\n dispose: [],\n get: [],\n set: [],\n reset: [],\n };\n const reset = () => {\n var _a;\n // When resetting the state, the default state may be a function - unwrap it to invoke it.\n // otherwise, the state won't be properly reset\n states = new Map(Object.entries((_a = unwrap(defaultState)) !== null && _a !== void 0 ? _a : {}));\n handlers.reset.forEach((cb) => cb());\n };\n const dispose = () => {\n // Call first dispose as resetting the state would\n // cause less updates ;)\n handlers.dispose.forEach((cb) => cb());\n reset();\n };\n const get = (propName) => {\n handlers.get.forEach((cb) => cb(propName));\n return states.get(propName);\n };\n const set = (propName, value) => {\n const oldValue = states.get(propName);\n if (shouldUpdate(value, oldValue, propName)) {\n states.set(propName, value);\n handlers.set.forEach((cb) => cb(propName, value, oldValue));\n }\n };\n const state = (typeof Proxy === 'undefined'\n ? {}\n : new Proxy(unwrappedState, {\n get(_, propName) {\n return get(propName);\n },\n ownKeys(_) {\n return Array.from(states.keys());\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true,\n };\n },\n has(_, propName) {\n return states.has(propName);\n },\n set(_, propName, value) {\n set(propName, value);\n return true;\n },\n }));\n const on = (eventName, callback) => {\n handlers[eventName].push(callback);\n return () => {\n removeFromArray(handlers[eventName], callback);\n };\n };\n const onChange = (propName, cb) => {\n const unSet = on('set', (key, newValue) => {\n if (key === propName) {\n cb(newValue);\n }\n });\n // We need to unwrap the defaultState because it might be a function.\n // Otherwise we might not be sending the right reset value.\n const unReset = on('reset', () => cb(unwrap(defaultState)[propName]));\n return () => {\n unSet();\n unReset();\n };\n };\n const use = (...subscriptions) => {\n const unsubs = subscriptions.reduce((unsubs, subscription) => {\n if (subscription.set) {\n unsubs.push(on('set', subscription.set));\n }\n if (subscription.get) {\n unsubs.push(on('get', subscription.get));\n }\n if (subscription.reset) {\n unsubs.push(on('reset', subscription.reset));\n }\n if (subscription.dispose) {\n unsubs.push(on('dispose', subscription.dispose));\n }\n return unsubs;\n }, []);\n return () => unsubs.forEach((unsub) => unsub());\n };\n const forceUpdate = (key) => {\n const oldValue = states.get(key);\n handlers.set.forEach((cb) => cb(key, oldValue, oldValue));\n };\n return {\n state,\n get,\n set,\n on,\n onChange,\n use,\n dispose,\n reset,\n forceUpdate,\n };\n};\nconst removeFromArray = (array, item) => {\n const index = array.indexOf(item);\n if (index >= 0) {\n array[index] = array[array.length - 1];\n array.length--;\n }\n};\n\nconst createStore = (defaultState, shouldUpdate) => {\n const map = createObservableMap(defaultState, shouldUpdate);\n map.use(stencilSubscription());\n return map;\n};\n\nexport { createObservableMap, createStore };\n","export enum FlowStatus {\r\n CITIZENSHIP,\r\n LANDING,\r\n MOBILE,\r\n AGREEMENT,\r\n PHONE,\r\n CODE,\r\n CODEERROR,\r\n IDTYPE,\r\n IDFRONTHOWTO,\r\n IDFRONT,\r\n IDBACKHOWTO,\r\n IDBACK,\r\n IDTILTHOWTO,\r\n IDTILT,\r\n LIVENESSHOWTO,\r\n LIVENESS,\r\n LIVENESSGESTUREHOWTO,\r\n LIVENESSGESTURE,\r\n COMPLETE,\r\n ERROREND,\r\n CAMERAERROR,\r\n ABORTED,\r\n NONE,\r\n RANDOM\r\n}\r\n\r\nexport interface FlowResult {\r\n state: string;\r\n}\r\n","/*\n * Dexie.js - a minimalistic wrapper for IndexedDB\n * ===============================================\n *\n * By David Fahlander, david.fahlander@gmail.com\n *\n * Version 4.0.10, Fri Nov 15 2024\n *\n * https://dexie.org\n *\n * Apache License Version 2.0, January 2004, http://www.apache.org/licenses/\n */\n \n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar extendStatics = function(d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n};\nfunction __extends(d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\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};\nfunction __spreadArray(to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n}\n\nvar _global = typeof globalThis !== 'undefined' ? globalThis :\n typeof self !== 'undefined' ? self :\n typeof window !== 'undefined' ? window :\n global;\n\nvar keys = Object.keys;\nvar isArray = Array.isArray;\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 (typeof Reflect === \"undefined\" ? keys : Reflect.ownKeys)(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$1(fn) {\n if (_global.setImmediate)\n setImmediate(fn);\n else\n setTimeout(fn, 0);\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}\nfunction getByKeyPath(obj, keyPath) {\n if (typeof keyPath === 'string' && 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 == null ? 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 || !hasOwn(obj, currentKeyPath))\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 intrinsicTypeNames = \"BigUint64Array,BigInt64Array,Array,Boolean,String,Date,RegExp,Blob,File,FileList,FileSystemFileHandle,FileSystemDirectoryHandle,ArrayBuffer,DataView,Uint8ClampedArray,ImageBitmap,ImageData,Map,Set,CryptoKey\"\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]; });\nvar intrinsicTypes = new Set(intrinsicTypeNames.map(function (t) { return _global[t]; }));\nfunction cloneSimpleObjectTree(o) {\n var rv = {};\n for (var k in o)\n if (hasOwn(o, k)) {\n var v = o[k];\n rv[k] = !v || typeof v !== 'object' || intrinsicTypes.has(v.constructor) ? v : cloneSimpleObjectTree(v);\n }\n return rv;\n}\nfunction objectIsEmpty(o) {\n for (var k in o)\n if (hasOwn(o, k))\n return false;\n return true;\n}\nvar circularRefs = null;\nfunction deepClone(any) {\n circularRefs = new WeakMap();\n var rv = innerDeepClone(any);\n circularRefs = null;\n return rv;\n}\nfunction innerDeepClone(x) {\n if (!x || typeof x !== 'object')\n return x;\n var rv = circularRefs.get(x);\n if (rv)\n return rv;\n if (isArray(x)) {\n rv = [];\n circularRefs.set(x, rv);\n for (var i = 0, l = x.length; i < l; ++i) {\n rv.push(innerDeepClone(x[i]));\n }\n }\n else if (intrinsicTypes.has(x.constructor)) {\n rv = x;\n }\n else {\n var proto = getProto(x);\n rv = proto === Object.prototype ? {} : Object.create(proto);\n circularRefs.set(x, rv);\n for (var prop in x) {\n if (hasOwn(x, prop)) {\n rv[prop] = innerDeepClone(x[prop]);\n }\n }\n }\n return rv;\n}\nvar toString = {}.toString;\nfunction toStringTag(o) {\n return toString.call(o).slice(8, -1);\n}\nvar iteratorSymbol = typeof Symbol !== 'undefined' ?\n Symbol.iterator :\n '@@iterator';\nvar getIteratorOf = typeof iteratorSymbol === \"symbol\" ? function (x) {\n var i;\n return x != null && (i = x[iteratorSymbol]) && i.apply(x);\n} : function () { return null; };\nfunction delArrayItem(a, x) {\n var i = a.indexOf(x);\n if (i >= 0)\n a.splice(i, 1);\n return i >= 0;\n}\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}\nvar isAsyncFunction = typeof Symbol !== 'undefined'\n ? function (fn) { return fn[Symbol.toStringTag] === 'AsyncFunction'; }\n : function () { return false; };\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 MissingAPI: \"IndexedDB API missing. Please visit https://tinyurl.com/y2uuvskb\"\n};\nfunction DexieError(name, msg) {\n this.name = name;\n this.message = msg;\n}\nderive(DexieError).from(Error).extend({\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.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.name = \"BulkError\";\n this.failures = Object.keys(failures).map(function (pos) { return failures[pos]; });\n this.failuresByPos = failures;\n this.message = getMultiErrorMessage(msg, this.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.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 = \"\".concat(msgOrInner).concat(!inner ? '' : '\\n ' + inner);\n this.inner = inner || null;\n }\n else if (typeof msgOrInner === 'object') {\n this.message = \"\".concat(msgOrInner.name, \" \").concat(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}\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 debug = typeof location !== 'undefined' &&\n /^(http|https):\\/\\/(localhost|127\\.0\\.0\\.1)/.test(location.href);\nfunction setDebug(value, filter) {\n debug = value;\n}\n\nvar INTERNAL = {};\nvar ZONE_ECHO_LIMIT = 100, _a$1 = typeof Promise === 'undefined' ?\n [] :\n (function () {\n var globalP = Promise.resolve();\n if (typeof crypto === 'undefined' || !crypto.subtle)\n return [globalP, getProto(globalP), globalP];\n var nativeP = crypto.subtle.digest(\"SHA-512\", new Uint8Array([0]));\n return [\n nativeP,\n getProto(nativeP),\n globalP\n ];\n })(), resolvedNativePromise = _a$1[0], nativePromiseProto = _a$1[1], resolvedGlobalPromise = _a$1[2], nativePromiseThen = nativePromiseProto && nativePromiseProto.then;\nvar NativePromise = resolvedNativePromise && resolvedNativePromise.constructor;\nvar patchGlobalPromise = !!resolvedGlobalPromise;\nfunction schedulePhysicalTick() {\n queueMicrotask(physicalTick);\n}\nvar asap = function (callback, args) {\n microtickQueue.push([callback, args]);\n if (needsNewPhysicalTick) {\n schedulePhysicalTick();\n needsNewPhysicalTick = false;\n }\n};\nvar isOutsideMicroTick = true,\nneedsNewPhysicalTick = true,\nunhandledErrors = [],\nrejectingErrors = [],\nrejectionMapper = mirror;\nvar globalPSD = {\n id: 'global',\n global: true,\n ref: 0,\n unhandleds: [],\n onunhandled: nop,\n pgp: false,\n env: {},\n finalize: nop\n};\nvar PSD = globalPSD;\nvar microtickQueue = [];\nvar numScheduledCalls = 0;\nvar tickFinalizers = [];\nfunction DexiePromise(fn) {\n if (typeof this !== 'object')\n throw new TypeError('Promises must be constructed via new');\n this._listeners = [];\n this._lib = false;\n var psd = (this._PSD = PSD);\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 var cleanup = possibleAwait && !decrementExpectedAwaits();\n var rv = new DexiePromise(function (resolve, reject) {\n propagateToListener(_this, new Listener(nativeAwaitCompatibleWrap(onFulfilled, psd, possibleAwait, cleanup), nativeAwaitCompatibleWrap(onRejected, psd, possibleAwait, cleanup), resolve, reject, psd));\n });\n if (this._consoleTask)\n rv._consoleTask = this._consoleTask;\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(DexiePromise.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 return DexiePromise.resolve(onFinally()).then(function () { return value; });\n }, function (err) {\n return DexiePromise.resolve(onFinally()).then(function () { return PromiseReject(err); });\n });\n },\n timeout: function (ms, msg) {\n var _this = this;\n return ms < Infinity ?\n new DexiePromise(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(DexiePromise.prototype, Symbol.toStringTag, 'Dexie.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(DexiePromise, {\n all: function () {\n var values = getArrayOf.apply(null, arguments)\n .map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n if (values.length === 0)\n resolve([]);\n var remaining = values.length;\n values.forEach(function (a, i) { return DexiePromise.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 DexiePromise)\n return value;\n if (value && typeof value.then === 'function')\n return new DexiePromise(function (resolve, reject) {\n value.then(resolve, reject);\n });\n var rv = new DexiePromise(INTERNAL, true, value);\n return rv;\n },\n reject: PromiseReject,\n race: function () {\n var values = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n values.map(function (value) { return DexiePromise.resolve(value).then(resolve, reject); });\n });\n },\n PSD: {\n get: function () { return PSD; },\n set: function (value) { return PSD = value; }\n },\n totalEchoes: { get: function () { return totalEchoes; } },\n newPSD: newScope,\n usePSD: usePSD,\n scheduler: {\n get: function () { return asap; },\n set: function (value) { asap = value; }\n },\n rejectionMapper: {\n get: function () { return rejectionMapper; },\n set: function (value) { rejectionMapper = value; }\n },\n follow: function (fn, zoneProps) {\n return new DexiePromise(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});\nif (NativePromise) {\n if (NativePromise.allSettled)\n setProp(DexiePromise, \"allSettled\", function () {\n var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve) {\n if (possiblePromises.length === 0)\n resolve([]);\n var remaining = possiblePromises.length;\n var results = new Array(remaining);\n possiblePromises.forEach(function (p, i) { return DexiePromise.resolve(p).then(function (value) { return results[i] = { status: \"fulfilled\", value: value }; }, function (reason) { return results[i] = { status: \"rejected\", reason: reason }; })\n .then(function () { return --remaining || resolve(results); }); });\n });\n });\n if (NativePromise.any && typeof AggregateError !== 'undefined')\n setProp(DexiePromise, \"any\", function () {\n var possiblePromises = getArrayOf.apply(null, arguments).map(onPossibleParallellAsync);\n return new DexiePromise(function (resolve, reject) {\n if (possiblePromises.length === 0)\n reject(new AggregateError([]));\n var remaining = possiblePromises.length;\n var failures = new Array(remaining);\n possiblePromises.forEach(function (p, i) { return DexiePromise.resolve(p).then(function (value) { return resolve(value); }, function (failure) {\n failures[i] = failure;\n if (!--remaining)\n reject(new AggregateError(failures));\n }); });\n });\n });\n if (NativePromise.withResolvers)\n DexiePromise.withResolvers = NativePromise.withResolvers;\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 DexiePromise ?\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 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(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(callListener, [cb, promise, listener]);\n}\nfunction callListener(cb, promise, listener) {\n try {\n var ret, value = promise._value;\n if (!promise._state && rejectingErrors.length)\n rejectingErrors = [];\n ret = debug && promise._consoleTask ? promise._consoleTask.run(function () { return cb(value); }) : cb(value);\n if (!promise._state && rejectingErrors.indexOf(value) === -1) {\n markErrorAsHandled(promise);\n }\n listener.resolve(ret);\n }\n catch (e) {\n listener.reject(e);\n }\n finally {\n if (--numScheduledCalls === 0)\n finalizePhysicalTick();\n --listener.psd.ref || listener.psd.finalize();\n }\n}\nfunction physicalTick() {\n usePSD(globalPSD, function () {\n beginMicroTickScope() && endMicroTickScope();\n });\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(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 DexiePromise(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, 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 globalPSD.env;\n psd.env = patchGlobalPromise ? {\n Promise: DexiePromise,\n PromiseProp: { value: DexiePromise, configurable: true, writable: true },\n all: DexiePromise.all,\n race: DexiePromise.race,\n allSettled: DexiePromise.allSettled,\n any: DexiePromise.any,\n resolve: DexiePromise.resolve,\n reject: DexiePromise.reject,\n } : {};\n if (props)\n extend(psd, props);\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() {\n if (!task.awaits)\n return false;\n if (--task.awaits === 0)\n task.id = 0;\n task.echoes = task.awaits * ZONE_ECHO_LIMIT;\n return true;\n}\nif (('' + nativePromiseThen).indexOf('[native code]') === -1) {\n incrementExpectedAwaits = decrementExpectedAwaits = nop;\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.awaits = 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 queueMicrotask(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 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 if (targetEnv.allSettled)\n GlobalPromise.allSettled = targetEnv.allSettled;\n if (targetEnv.any)\n GlobalPromise.any = targetEnv.any;\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 allSettled: GlobalPromise.allSettled,\n any: GlobalPromise.any,\n resolve: GlobalPromise.resolve,\n reject: GlobalPromise.reject,\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 nativeAwaitCompatibleWrap(fn, zone, possibleAwait, cleanup) {\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 if (cleanup)\n queueMicrotask(decrementExpectedAwaits);\n }\n };\n}\nfunction execInGlobalContext(cb) {\n if (Promise === NativePromise && task.echoes === 0) {\n if (zoneEchoes === 0) {\n cb();\n }\n else {\n enqueueNativeMicroTask(cb);\n }\n }\n else {\n setTimeout(cb, 0);\n }\n}\nvar rejection = DexiePromise.reject;\n\nfunction tempTransaction(db, mode, storeNames, fn) {\n if (!db.idbdb || (!db._state.openComplete && (!PSD.letThrough && !db._vip))) {\n if (db._state.openComplete) {\n return rejection(new exceptions.DatabaseClosed(db._state.dbOpenError));\n }\n if (!db._state.isBeingOpened) {\n if (!db._state.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 db._state.PR1398_maxLoop = 3;\n }\n catch (ex) {\n if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n console.warn('Dexie: Need to reopen db');\n db.close({ disableAutoOpen: false });\n return db.open().then(function () { return tempTransaction(db, mode, storeNames, fn); });\n }\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 if (mode === 'readwrite')\n try {\n trans.idbtrans.commit();\n }\n catch (_a) { }\n return mode === 'readonly' ? result : trans._completion.then(function () { return result; });\n });\n }\n}\n\nvar DEXIE_VERSION = '4.0.10';\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 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\nfunction workaroundForUndefinedPrimKey(keyPath) {\n return typeof keyPath === \"string\" && !/\\./.test(keyPath)\n ? function (obj) {\n if (obj[keyPath] === undefined && (keyPath in obj)) {\n obj = deepClone(obj);\n delete obj[keyPath];\n }\n return obj;\n }\n : function (obj) { return obj; };\n}\n\nfunction Entity() {\n throw exceptions.Type();\n}\n\nfunction cmp(a, b) {\n try {\n var ta = type(a);\n var tb = type(b);\n if (ta !== tb) {\n if (ta === 'Array')\n return 1;\n if (tb === 'Array')\n return -1;\n if (ta === 'binary')\n return 1;\n if (tb === 'binary')\n return -1;\n if (ta === 'string')\n return 1;\n if (tb === 'string')\n return -1;\n if (ta === 'Date')\n return 1;\n if (tb !== 'Date')\n return NaN;\n return -1;\n }\n switch (ta) {\n case 'number':\n case 'Date':\n case 'string':\n return a > b ? 1 : a < b ? -1 : 0;\n case 'binary': {\n return compareUint8Arrays(getUint8Array(a), getUint8Array(b));\n }\n case 'Array':\n return compareArrays(a, b);\n }\n }\n catch (_a) { }\n return NaN;\n}\nfunction compareArrays(a, b) {\n var al = a.length;\n var bl = b.length;\n var l = al < bl ? al : bl;\n for (var i = 0; i < l; ++i) {\n var res = cmp(a[i], b[i]);\n if (res !== 0)\n return res;\n }\n return al === bl ? 0 : al < bl ? -1 : 1;\n}\nfunction compareUint8Arrays(a, b) {\n var al = a.length;\n var bl = b.length;\n var l = al < bl ? al : bl;\n for (var i = 0; i < l; ++i) {\n if (a[i] !== b[i])\n return a[i] < b[i] ? -1 : 1;\n }\n return al === bl ? 0 : al < bl ? -1 : 1;\n}\nfunction type(x) {\n var t = typeof x;\n if (t !== 'object')\n return t;\n if (ArrayBuffer.isView(x))\n return 'binary';\n var tsTag = toStringTag(x);\n return tsTag === 'ArrayBuffer' ? 'binary' : tsTag;\n}\nfunction getUint8Array(a) {\n if (a instanceof Uint8Array)\n return a;\n if (ArrayBuffer.isView(a))\n return new Uint8Array(a.buffer, a.byteOffset, a.byteLength);\n return new Uint8Array(a);\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 var task = debug && typeof console !== 'undefined' && console.createTask && console.createTask(\"Dexie: \".concat(mode === 'readonly' ? 'read' : 'write', \" \").concat(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 var p = trans && trans.db._novip === this.db._novip ?\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 if (task) {\n p._consoleTask = task;\n p = p.catch(function (err) {\n console.trace(err);\n return rejection(err);\n });\n }\n return p;\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 if (keyOrCrit == null)\n return rejection(new exceptions.Type(\"Invalid argument to Table.get()\"));\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, \"[\".concat(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 if (ix.compound &&\n keyPaths.every(function (keyPath) { return ix.keyPath.indexOf(keyPath) >= 0; })) {\n for (var i = 0; i < keyPaths.length; ++i) {\n if (keyPaths.indexOf(ix.keyPath[i]) === -1)\n return false;\n }\n return true;\n }\n return false;\n }).sort(function (a, b) { return a.keyPath.length - b.keyPath.length; })[0];\n if (compoundIndex && this.db._maxKey !== maxString) {\n var keyPathsInValidOrder = compoundIndex.keyPath.slice(0, keyPaths.length);\n return this\n .where(keyPathsInValidOrder)\n .equals(keyPathsInValidOrder.map(function (kp) { return indexOrCrit[kp]; }));\n }\n if (!compoundIndex && debug)\n console.warn(\"The query \".concat(JSON.stringify(indexOrCrit), \" on \").concat(this.name, \" would benefit from a \") +\n \"compound index [\".concat(keyPaths.join('+'), \"]\"));\n var idxByName = this.schema.idxByName;\n function equals(a, b) {\n return cmp(a, b) === 0;\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 \"[\".concat(index.join('+'), \"]\") :\n index));\n };\n Table.prototype.reverse = function () {\n return this.toCollection().reverse();\n };\n Table.prototype.mapToClass = function (constructor) {\n var _a = this, db = _a.db, tableName = _a.name;\n this.schema.mappedClass = constructor;\n if (constructor.prototype instanceof Entity) {\n constructor = (function (_super) {\n __extends(class_1, _super);\n function class_1() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Object.defineProperty(class_1.prototype, \"db\", {\n get: function () { return db; },\n enumerable: false,\n configurable: true\n });\n class_1.prototype.table = function () { return tableName; };\n return class_1;\n }(constructor));\n }\n var inheritedProps = new Set();\n for (var proto = constructor.prototype; proto; proto = getProto(proto)) {\n Object.getOwnPropertyNames(proto).forEach(function (propName) { return inheritedProps.add(propName); });\n }\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 (!inheritedProps.has(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 return this.mapToClass(Class);\n };\n Table.prototype.add = function (obj, key) {\n var _this = this;\n var _a = this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n var objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({ trans: trans, type: 'add', keys: key != null ? [key] : null, values: [objToAdd] });\n }).then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult; })\n .then(function (lastResult) {\n if (keyPath) {\n try {\n setByKeyPath(obj, keyPath, lastResult);\n }\n catch (_) { }\n }\n return lastResult;\n });\n };\n Table.prototype.update = function (keyOrObject, modifications) {\n if (typeof keyOrObject === 'object' && !isArray(keyOrObject)) {\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 var _a = this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n var objToAdd = obj;\n if (keyPath && auto) {\n objToAdd = workaroundForUndefinedPrimKey(keyPath)(obj);\n }\n return this._trans('readwrite', function (trans) { return _this.core.mutate({ trans: trans, type: 'put', values: [objToAdd], keys: key != null ? [key] : null }); })\n .then(function (res) { return res.numFailures ? DexiePromise.reject(res.failures[0]) : res.lastResult; })\n .then(function (lastResult) {\n if (keyPath) {\n try {\n setByKeyPath(obj, keyPath, lastResult);\n }\n catch (_) { }\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 ? DexiePromise.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 ? DexiePromise.reject(res.failures[0]) : undefined; });\n };\n Table.prototype.bulkGet = function (keys) {\n var _this = this;\n return this._trans('readonly', function (trans) {\n return _this.core.getMany({\n keys: keys,\n trans: trans\n }).then(function (result) { return result.map(function (res) { return _this.hook.reading.fire(res); }); });\n });\n };\n Table.prototype.bulkAdd = function (objects, keysOrOptions, options) {\n var _this = this;\n var keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys ? undefined : keysOrOptions);\n var wantResults = options ? options.allKeys : undefined;\n return this._trans('readwrite', function (trans) {\n var _a = _this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n if (keyPath && keys)\n throw new exceptions.InvalidArgument(\"bulkAdd(): keys argument invalid on tables with inbound keys\");\n if (keys && keys.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n var numObjects = objects.length;\n var objectsToAdd = keyPath && auto ?\n objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n objects;\n return _this.core.mutate({ trans: trans, type: 'add', keys: keys, values: objectsToAdd, wantResults: wantResults })\n .then(function (_a) {\n var numFailures = _a.numFailures, results = _a.results, lastResult = _a.lastResult, failures = _a.failures;\n var result = wantResults ? results : lastResult;\n if (numFailures === 0)\n return result;\n throw new BulkError(\"\".concat(_this.name, \".bulkAdd(): \").concat(numFailures, \" of \").concat(numObjects, \" operations failed\"), failures);\n });\n });\n };\n Table.prototype.bulkPut = function (objects, keysOrOptions, options) {\n var _this = this;\n var keys = Array.isArray(keysOrOptions) ? keysOrOptions : undefined;\n options = options || (keys ? undefined : keysOrOptions);\n var wantResults = options ? options.allKeys : undefined;\n return this._trans('readwrite', function (trans) {\n var _a = _this.schema.primKey, auto = _a.auto, keyPath = _a.keyPath;\n if (keyPath && keys)\n throw new exceptions.InvalidArgument(\"bulkPut(): keys argument invalid on tables with inbound keys\");\n if (keys && keys.length !== objects.length)\n throw new exceptions.InvalidArgument(\"Arguments objects and keys must have the same length\");\n var numObjects = objects.length;\n var objectsToPut = keyPath && auto ?\n objects.map(workaroundForUndefinedPrimKey(keyPath)) :\n objects;\n return _this.core.mutate({ trans: trans, type: 'put', keys: keys, values: objectsToPut, wantResults: wantResults })\n .then(function (_a) {\n var numFailures = _a.numFailures, results = _a.results, lastResult = _a.lastResult, failures = _a.failures;\n var result = wantResults ? results : lastResult;\n if (numFailures === 0)\n return result;\n throw new BulkError(\"\".concat(_this.name, \".bulkPut(): \").concat(numFailures, \" of \").concat(numObjects, \" operations failed\"), failures);\n });\n });\n };\n Table.prototype.bulkUpdate = function (keysAndChanges) {\n var _this = this;\n var coreTable = this.core;\n var keys = keysAndChanges.map(function (entry) { return entry.key; });\n var changeSpecs = keysAndChanges.map(function (entry) { return entry.changes; });\n var offsetMap = [];\n return this._trans('readwrite', function (trans) {\n return coreTable.getMany({ trans: trans, keys: keys, cache: 'clone' }).then(function (objs) {\n var resultKeys = [];\n var resultObjs = [];\n keysAndChanges.forEach(function (_a, idx) {\n var key = _a.key, changes = _a.changes;\n var obj = objs[idx];\n if (obj) {\n for (var _i = 0, _b = Object.keys(changes); _i < _b.length; _i++) {\n var keyPath = _b[_i];\n var value = changes[keyPath];\n if (keyPath === _this.schema.primKey.keyPath) {\n if (cmp(value, key) !== 0) {\n throw new exceptions.Constraint(\"Cannot update primary key in bulkUpdate()\");\n }\n }\n else {\n setByKeyPath(obj, keyPath, value);\n }\n }\n offsetMap.push(idx);\n resultKeys.push(key);\n resultObjs.push(obj);\n }\n });\n var numEntries = resultKeys.length;\n return coreTable\n .mutate({\n trans: trans,\n type: 'put',\n keys: resultKeys,\n values: resultObjs,\n updates: {\n keys: keys,\n changeSpecs: changeSpecs\n }\n })\n .then(function (_a) {\n var numFailures = _a.numFailures, failures = _a.failures;\n if (numFailures === 0)\n return numEntries;\n for (var _i = 0, _b = Object.keys(failures); _i < _b.length; _i++) {\n var offset = _b[_i];\n var mappedOffset = offsetMap[Number(offset)];\n if (mappedOffset != null) {\n var failure = failures[offset];\n delete failures[offset];\n failures[mappedOffset] = failure;\n }\n }\n throw new BulkError(\"\".concat(_this.name, \".bulkUpdate(): \").concat(numFailures, \" of \").concat(numEntries, \" operations failed\"), failures);\n });\n });\n });\n };\n Table.prototype.bulkDelete = function (keys) {\n var _this = this;\n var numKeys = keys.length;\n return this._trans('readwrite', function (trans) {\n return _this.core.mutate({ trans: trans, type: 'delete', keys: keys });\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(\"\".concat(_this.name, \".bulkDelete(): \").concat(numFailures, \" of \").concat(numKeys, \" 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$1(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(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 PropModSymbol = Symbol();\nvar PropModification = (function () {\n function PropModification(spec) {\n Object.assign(this, spec);\n }\n PropModification.prototype.execute = function (value) {\n var _a;\n if (this.add !== undefined) {\n var term = this.add;\n if (isArray(term)) {\n return __spreadArray(__spreadArray([], (isArray(value) ? value : []), true), term, true).sort();\n }\n if (typeof term === 'number')\n return (Number(value) || 0) + term;\n if (typeof term === 'bigint') {\n try {\n return BigInt(value) + term;\n }\n catch (_b) {\n return BigInt(0) + term;\n }\n }\n throw new TypeError(\"Invalid term \".concat(term));\n }\n if (this.remove !== undefined) {\n var subtrahend_1 = this.remove;\n if (isArray(subtrahend_1)) {\n return isArray(value) ? value.filter(function (item) { return !subtrahend_1.includes(item); }).sort() : [];\n }\n if (typeof subtrahend_1 === 'number')\n return Number(value) - subtrahend_1;\n if (typeof subtrahend_1 === 'bigint') {\n try {\n return BigInt(value) - subtrahend_1;\n }\n catch (_c) {\n return BigInt(0) - subtrahend_1;\n }\n }\n throw new TypeError(\"Invalid subtrahend \".concat(subtrahend_1));\n }\n var prefixToReplace = (_a = this.replacePrefix) === null || _a === void 0 ? void 0 : _a[0];\n if (prefixToReplace && typeof value === 'string' && value.startsWith(prefixToReplace)) {\n return this.replacePrefix[1] + value.substring(prefixToReplace.length);\n }\n return value;\n };\n return PropModification;\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) {\n var rv = Object.create(this.constructor.prototype), ctx = Object.create(this._ctx);\n if (props)\n extend(ctx, props);\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 cmp(aVal, bVal) * order;\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];\n var val = changes[keyPath];\n var origVal = getByKeyPath(item, keyPath);\n if (val instanceof PropModification) {\n setByKeyPath(item, keyPath, val.execute(origVal));\n anythingModified = true;\n }\n else if (origVal !== 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 = 200;\n var modifyChunkSize = _this.db._options.modifyChunkSize;\n if (modifyChunkSize) {\n if (typeof modifyChunkSize == 'object') {\n limit = modifyChunkSize[coreTable.name] || modifyChunkSize['*'] || 200;\n }\n else {\n limit = modifyChunkSize;\n }\n }\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 _i = 0, _a = keys(failures); _i < _a.length; _i++) {\n var pos = _a[_i];\n totalFailures.push(failures[pos]);\n }\n };\n return _this.clone().primaryKeys().then(function (keys) {\n var criteria = isPlainKeyRange(ctx) &&\n ctx.limit === Infinity &&\n (typeof changes !== 'function' || changes === deleteCallback) && {\n index: ctx.index,\n range: ctx.range\n };\n var nextChunk = function (offset) {\n var count = Math.min(limit, keys.length - offset);\n return coreTable.getMany({\n trans: trans,\n keys: keys.slice(offset, offset + count),\n cache: \"immutable\"\n }).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[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[offset + i]);\n }\n else if (!outbound && cmp(extractKey(origValue), extractKey(ctx_1.value)) !== 0) {\n deleteKeys.push(keys[offset + i]);\n addValues.push(ctx_1.value);\n }\n else {\n putValues.push(ctx_1.value);\n if (outbound)\n putKeys.push(keys[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 () { return (putValues.length > 0 || (criteria && typeof changes === 'object')) &&\n coreTable.mutate({\n trans: trans,\n type: 'put',\n keys: putKeys,\n values: putValues,\n criteria: criteria,\n changeSpec: typeof changes !== 'function'\n && changes,\n isAdditionalChunk: offset > 0\n }).then(function (res) { return applyMutateResult(putValues.length, res); }); }).then(function () { return (deleteKeys.length > 0 || (criteria && changes === deleteCallback)) &&\n coreTable.mutate({\n trans: trans,\n type: 'delete',\n keys: deleteKeys,\n criteria: criteria,\n isAdditionalChunk: offset > 0\n }).then(function (res) { return applyMutateResult(deleteKeys.length, res); }); }).then(function () {\n return keys.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.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 || 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; _a.lastResult; _a.results; var 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(deleteCallback);\n };\n return Collection;\n}());\nvar deleteCallback = function (value, ctx) { return ctx.value = null; };\n\nfunction createCollectionConstructor(db) {\n return makeClassConstructor(Collection.prototype, function Collection(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: false,\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 if (value == null)\n return fail(this, INVALID_KEY_ARGUMENT);\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(table, index, orCollection) {\n this.db = db;\n this._ctx = {\n table: table,\n index: index === \":id\" ? null : index,\n or: orCollection\n };\n this._cmp = this._ascending = cmp;\n this._descending = function (a, b) { return cmp(b, a); };\n this._max = function (a, b) { return cmp(a, b) > 0 ? a : b; };\n this._min = function (a, b) { return cmp(a, b) < 0 ? a : b; };\n this._IDBKeyRange = db._deps.IDBKeyRange;\n if (!this._IDBKeyRange)\n throw new exceptions.MissingAPI();\n });\n}\n\nfunction eventRejectHandler(reject) {\n return wrap(function (event) {\n preventDefault(event);\n reject(event.target.error);\n return false;\n });\n}\nfunction preventDefault(event) {\n if (event.stopPropagation)\n event.stopPropagation();\n if (event.preventDefault)\n event.preventDefault();\n}\n\nvar DEXIE_STORAGE_MUTATED_EVENT_NAME = 'storagemutated';\nvar STORAGE_MUTATED_DOM_EVENT_NAME = 'x-storagemutated-1';\nvar globalEvents = Events(null, DEXIE_STORAGE_MUTATED_EVENT_NAME);\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 ||\n (this.db.core\n ? this.db.core.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability })\n : idbdb.transaction(this.storeNames, this.mode, { durability: this.chromeTransactionDurability }));\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 if ('mutatedParts' in idbtrans) {\n globalEvents.storagemutated.fire(idbtrans[\"mutatedParts\"]);\n }\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 DexiePromise(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 DexiePromise(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 DexiePromise(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 = DexiePromise.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 DexiePromise(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 if (this.active) {\n this.active = false;\n if (this.idbtrans)\n this.idbtrans.abort();\n this._reject(new exceptions.Abort());\n }\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(mode, storeNames, dbschema, chromeTransactionDurability, parent) {\n var _this = this;\n this.db = db;\n this.mode = mode;\n this.storeNames = storeNames;\n this.schema = dbschema;\n this.chromeTransactionDurability = chromeTransactionDurability;\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 DexiePromise(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, isPrimKey) {\n return {\n name: name,\n keyPath: keyPath,\n unique: unique,\n multi: multi,\n auto: auto,\n compound: compound,\n src: (unique && !isPrimKey ? '&' : '') + (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 safariMultiStoreFix(storeNames) {\n return storeNames.length === 1 ? storeNames[0] : storeNames;\n}\nvar getMaxKey = function (IdbKeyRange) {\n try {\n IdbKeyRange.only([[]]);\n getMaxKey = function () { return [[]]; };\n return [[]];\n }\n catch (e) {\n getMaxKey = function () { return maxString; };\n return maxString;\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 arrayify(arrayLike) {\n return [].slice.call(arrayLike);\n}\nvar _id_counter = 0;\nfunction getKeyPathAlias(keyPath) {\n return keyPath == null ?\n \":id\" :\n typeof keyPath === 'string' ?\n keyPath :\n \"[\".concat(keyPath.join('+'), \"]\");\n}\nfunction createDBCore(db, IdbKeyRange, tmpTrans) {\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 = _a.keys, values = _a.values, range = _a.range;\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 || values || { length: 1 }).length;\n if (keys && values && keys.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 req;\n var reqs = [];\n var failures = [];\n var numFailures = 0;\n var errorHandler = function (event) {\n ++numFailures;\n preventDefault(event);\n };\n if (type === 'deleteRange') {\n if (range.type === 4 )\n return resolve({ numFailures: numFailures, failures: failures, results: [], lastResult: undefined });\n if (range.type === 3 )\n reqs.push(req = store.clear());\n else\n reqs.push(req = store.delete(makeIDBKeyRange(range)));\n }\n else {\n var _a = isAddOrPut ?\n outbound ?\n [values, keys] :\n [values, null] :\n [keys, null], args1 = _a[0], args2 = _a[1];\n if (isAddOrPut) {\n for (var i = 0; i < length; ++i) {\n reqs.push(req = (args2 && args2[i] !== undefined ?\n store[type](args1[i], args2[i]) :\n store[type](args1[i])));\n req.onerror = errorHandler;\n }\n }\n else {\n for (var i = 0; i < length; ++i) {\n reqs.push(req = store[type](args1[i]));\n req.onerror = errorHandler;\n }\n }\n }\n var done = function (event) {\n var lastResult = event.target.result;\n reqs.forEach(function (req, i) { return req.error != null && (failures[i] = req.error); });\n resolve({\n numFailures: numFailures,\n failures: failures,\n results: type === \"delete\" ? keys : reqs.map(function (req) { return req.result; }),\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 = _a.keys;\n return new Promise(function (resolve, reject) {\n resolve = wrap(resolve);\n var store = trans.objectStore(tableName);\n var length = keys.length;\n var result = new Array(length);\n var keyCount = 0;\n var callbackCount = 0;\n var req;\n var successHandler = function (event) {\n var req = event.target;\n if ((result[req._pos] = req.result) != null)\n ;\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[i];\n if (key != null) {\n req = store.get(keys[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 '\".concat(name, \"' not found\"));\n return tableMap[name];\n },\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(__assign({}, down), create(down)));\n }, stackImpl);\n}\nfunction createMiddlewareStacks(middlewares, idbdb, _a, tmpTrans) {\n var IDBKeyRange = _a.IDBKeyRange; _a.indexedDB;\n var dbcore = createMiddlewareStack(createDBCore(idbdb, 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 var propDesc = getPropertyDescriptor(obj, tableName);\n if (!propDesc || (\"value\" in propDesc && propDesc.value === undefined)) {\n if (obj === db.Transaction.prototype || obj instanceof db.Transaction) {\n setProp(obj, tableName, {\n get: function () { return this.table(tableName); },\n set: function (value) {\n defineProperty(this, tableName, { value: value, writable: true, configurable: true, enumerable: true });\n }\n });\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 if (idbUpgradeTrans.objectStoreNames.contains('$meta') && !globalSchema.$meta) {\n globalSchema.$meta = createTableSchema(\"$meta\", parseIndexSyntax(\"\")[0], []);\n db._storeNames.push('$meta');\n }\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 DexiePromise.follow(function () { return db.on.populate.fire(trans); }).catch(rejectTransaction);\n }\n else {\n generateMiddlewareStacks(db, idbUpgradeTrans);\n return getExistingVersion(db, trans, oldVersion)\n .then(function (oldVersion) { return updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans); })\n .catch(rejectTransaction);\n }\n });\n}\nfunction patchCurrentVersion(db, idbUpgradeTrans) {\n createMissingTables(db._dbSchema, idbUpgradeTrans);\n if (idbUpgradeTrans.db.version % 10 === 0 && !idbUpgradeTrans.objectStoreNames.contains('$meta')) {\n idbUpgradeTrans.db.createObjectStore('$meta').add(Math.ceil((idbUpgradeTrans.db.version / 10) - 1), 'version');\n }\n var globalSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n adjustToExistingIndexNames(db, db._dbSchema, idbUpgradeTrans);\n var diff = getSchemaDiff(globalSchema, db._dbSchema);\n var _loop_1 = function (tableChange) {\n if (tableChange.change.length || tableChange.recreate) {\n console.warn(\"Unable to patch indexes of table \".concat(tableChange.name, \" because it has changes on the type of index or primary key.\"));\n return { value: void 0 };\n }\n var store = idbUpgradeTrans.objectStore(tableChange.name);\n tableChange.add.forEach(function (idx) {\n if (debug)\n console.debug(\"Dexie upgrade patch: Creating missing index \".concat(tableChange.name, \".\").concat(idx.src));\n addIndex(store, idx);\n });\n };\n for (var _i = 0, _a = diff.change; _i < _a.length; _i++) {\n var tableChange = _a[_i];\n var state_1 = _loop_1(tableChange);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n}\nfunction getExistingVersion(db, trans, oldVersion) {\n if (trans.storeNames.includes('$meta')) {\n return trans.table('$meta').get('version').then(function (metaVersion) {\n return metaVersion != null ? metaVersion : oldVersion;\n });\n }\n else {\n return DexiePromise.resolve(oldVersion);\n }\n}\nfunction updateTablesAndIndexes(db, oldVersion, trans, idbUpgradeTrans) {\n var queue = [];\n var versions = db._versions;\n var globalSchema = db._dbSchema = buildGlobalSchema(db, db.idbdb, idbUpgradeTrans);\n var versToRun = versions.filter(function (v) { return v._cfg.version >= oldVersion; });\n if (versToRun.length === 0) {\n return DexiePromise.resolve();\n }\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 && version._cfg.version > oldVersion) {\n generateMiddlewareStacks(db, idbUpgradeTrans);\n trans._memoizedTables = {};\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 var contentUpgradeIsAsync_1 = isAsyncFunction(contentUpgrade);\n if (contentUpgradeIsAsync_1) {\n incrementExpectedAwaits();\n }\n var returnValue_1;\n var promiseFollowed = DexiePromise.follow(function () {\n returnValue_1 = contentUpgrade(trans);\n if (returnValue_1) {\n if (contentUpgradeIsAsync_1) {\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 DexiePromise.resolve(returnValue_1) : promiseFollowed.then(function () { return returnValue_1; }));\n }\n });\n queue.push(function (idbtrans) {\n var newSchema = version._cfg.dbschema;\n deleteRemovedTables(newSchema, idbtrans);\n removeTablesApi(db, [db.Transaction.prototype]);\n setApiOnPlace(db, [db.Transaction.prototype], db._storeNames, db._dbSchema);\n trans.schema = db._dbSchema;\n });\n queue.push(function (idbtrans) {\n if (db.idbdb.objectStoreNames.contains('$meta')) {\n if (Math.ceil(db.idbdb.version / 10) === version._cfg.version) {\n db.idbdb.deleteObjectStore('$meta');\n delete db._dbSchema.$meta;\n db._storeNames = db._storeNames.filter(function (name) { return name !== '$meta'; });\n }\n else {\n idbtrans.objectStore('$meta').put(version._cfg.version, 'version');\n }\n }\n });\n });\n function runQueue() {\n return queue.length ? DexiePromise.resolve(queue.shift()(trans.idbtrans)).then(runQueue) :\n DexiePromise.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 ((\n '' + (oldDef.primKey.keyPath || '')) !== ('' + (newDef.primKey.keyPath || '')) ||\n (oldDef.primKey.auto !== newDef.primKey.auto)) {\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 if (debug)\n console.debug('Dexie: Creating missing table', tableName);\n createTable(idbtrans, tableName, newSchema[tableName].primKey, newSchema[tableName].indexes);\n }\n });\n}\nfunction deleteRemovedTables(newSchema, idbtrans) {\n [].slice.call(idbtrans.db.objectStoreNames).forEach(function (storeName) {\n return newSchema[storeName] == null && idbtrans.db.deleteObjectStore(storeName);\n });\n}\nfunction addIndex(store, idx) {\n store.createIndex(idx.name, idx.keyPath, { unique: idx.unique, multiEntry: idx.multi });\n}\nfunction buildGlobalSchema(db, idbdb, tmpTrans) {\n var globalSchema = {};\n var dbStoreNames = slice(idbdb.objectStoreNames, 0);\n dbStoreNames.forEach(function (storeName) {\n var store = tmpTrans.objectStore(storeName);\n var keyPath = store.keyPath;\n var primKey = createIndexSpec(nameFromKeyPath(keyPath), keyPath || \"\", true, false, !!store.autoIncrement, keyPath && typeof keyPath !== \"string\", true);\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\", false);\n indexes.push(index);\n }\n globalSchema[storeName] = createTableSchema(storeName, primKey, indexes);\n });\n return globalSchema;\n}\nfunction readGlobalSchema(db, idbdb, tmpTrans) {\n db.verno = idbdb.version / 10;\n var globalSchema = db._dbSchema = buildGlobalSchema(db, idbdb, tmpTrans);\n db._storeNames = slice(idbdb.objectStoreNames, 0);\n setApiOnPlace(db, [db._allTables], keys(globalSchema), globalSchema);\n}\nfunction verifyInstalledSchema(db, tmpTrans) {\n var installedSchema = buildGlobalSchema(db, db.idbdb, tmpTrans);\n var diff = getSchemaDiff(installedSchema, db._dbSchema);\n return !(diff.add.length || diff.change.some(function (ch) { return ch.add.length || ch.change.length; }));\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 delete schema[storeName].idxByName[dexieName];\n schema[storeName].idxByName[indexName] = indexSpec;\n }\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(primKeyAndIndexes) {\n return primKeyAndIndexes.split(',').map(function (index, indexNum) {\n index = index.trim();\n var name = index.replace(/([&*]|\\+\\+)/g, \"\");\n var keyPath = /^\\[/.test(name) ? name.match(/^\\[(.*)\\]$/)[1].split('+') : name;\n return createIndexSpec(name, keyPath || null, /\\&/.test(index), /\\*/.test(index), /\\+\\+/.test(index), isArray(keyPath), indexNum === 0);\n });\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 primKey.unique = true;\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 var dbschema = {};\n versions.forEach(function (version) {\n extend(storesSpec, version._cfg.storesSource);\n dbschema = (version._cfg.dbschema = {});\n version._parseStoresSpec(storesSpec, dbschema);\n });\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 = promisableChain(this._cfg.contentUpgrade || nop, upgradeFunction);\n return this;\n };\n return Version;\n}());\n\nfunction createVersionConstructor(db) {\n return makeClassConstructor(Version.prototype, function Version(versionNumber) {\n this.db = db;\n this._cfg = {\n version: versionNumber,\n storesSource: null,\n dbschema: {},\n tables: {},\n contentUpgrade: null\n };\n });\n}\n\nfunction getDbNamesTable(indexedDB, IDBKeyRange) {\n var dbNamesDB = indexedDB[\"_dbNamesDB\"];\n if (!dbNamesDB) {\n dbNamesDB = indexedDB[\"_dbNamesDB\"] = new Dexie$1(DBNAMES_DB, {\n addons: [],\n indexedDB: indexedDB,\n IDBKeyRange: IDBKeyRange,\n });\n dbNamesDB.version(1).stores({ dbnames: \"name\" });\n }\n return dbNamesDB.table(\"dbnames\");\n}\nfunction hasDatabasesNative(indexedDB) {\n return indexedDB && typeof indexedDB.databases === \"function\";\n}\nfunction getDatabaseNames(_a) {\n var indexedDB = _a.indexedDB, IDBKeyRange = _a.IDBKeyRange;\n return hasDatabasesNative(indexedDB)\n ? Promise.resolve(indexedDB.databases()).then(function (infos) {\n return infos\n .map(function (info) { return info.name; })\n .filter(function (name) { return name !== DBNAMES_DB; });\n })\n : getDbNamesTable(indexedDB, IDBKeyRange).toCollection().primaryKeys();\n}\nfunction _onDatabaseCreated(_a, name) {\n var indexedDB = _a.indexedDB, IDBKeyRange = _a.IDBKeyRange;\n !hasDatabasesNative(indexedDB) &&\n name !== DBNAMES_DB &&\n getDbNamesTable(indexedDB, IDBKeyRange).put({ name: name }).catch(nop);\n}\nfunction _onDatabaseDeleted(_a, name) {\n var indexedDB = _a.indexedDB, IDBKeyRange = _a.IDBKeyRange;\n !hasDatabasesNative(indexedDB) &&\n name !== DBNAMES_DB &&\n getDbNamesTable(indexedDB, IDBKeyRange).delete(name).catch(nop);\n}\n\nfunction vip(fn) {\n return newScope(function () {\n PSD.letThrough = true;\n return fn();\n });\n}\n\nfunction idbReady() {\n var isSafari = !navigator.userAgentData &&\n /Safari\\//.test(navigator.userAgent) &&\n !/Chrom(e|ium)\\//.test(navigator.userAgent);\n if (!isSafari || !indexedDB.databases)\n return Promise.resolve();\n var intervalId;\n return new Promise(function (resolve) {\n var tryIdb = function () { return indexedDB.databases().finally(resolve); };\n intervalId = setInterval(tryIdb, 100);\n tryIdb();\n }).finally(function () { return clearInterval(intervalId); });\n}\n\nvar _a;\nfunction isEmptyRange(node) {\n return !(\"from\" in node);\n}\nvar RangeSet = function (fromOrTree, to) {\n if (this) {\n extend(this, arguments.length ? { d: 1, from: fromOrTree, to: arguments.length > 1 ? to : fromOrTree } : { d: 0 });\n }\n else {\n var rv = new RangeSet();\n if (fromOrTree && (\"d\" in fromOrTree)) {\n extend(rv, fromOrTree);\n }\n return rv;\n }\n};\nprops(RangeSet.prototype, (_a = {\n add: function (rangeSet) {\n mergeRanges(this, rangeSet);\n return this;\n },\n addKey: function (key) {\n addRange(this, key, key);\n return this;\n },\n addKeys: function (keys) {\n var _this = this;\n keys.forEach(function (key) { return addRange(_this, key, key); });\n return this;\n },\n hasKey: function (key) {\n var node = getRangeSetIterator(this).next(key).value;\n return node && cmp(node.from, key) <= 0 && cmp(node.to, key) >= 0;\n }\n },\n _a[iteratorSymbol] = function () {\n return getRangeSetIterator(this);\n },\n _a));\nfunction addRange(target, from, to) {\n var diff = cmp(from, to);\n if (isNaN(diff))\n return;\n if (diff > 0)\n throw RangeError();\n if (isEmptyRange(target))\n return extend(target, { from: from, to: to, d: 1 });\n var left = target.l;\n var right = target.r;\n if (cmp(to, target.from) < 0) {\n left\n ? addRange(left, from, to)\n : (target.l = { from: from, to: to, d: 1, l: null, r: null });\n return rebalance(target);\n }\n if (cmp(from, target.to) > 0) {\n right\n ? addRange(right, from, to)\n : (target.r = { from: from, to: to, d: 1, l: null, r: null });\n return rebalance(target);\n }\n if (cmp(from, target.from) < 0) {\n target.from = from;\n target.l = null;\n target.d = right ? right.d + 1 : 1;\n }\n if (cmp(to, target.to) > 0) {\n target.to = to;\n target.r = null;\n target.d = target.l ? target.l.d + 1 : 1;\n }\n var rightWasCutOff = !target.r;\n if (left && !target.l) {\n mergeRanges(target, left);\n }\n if (right && rightWasCutOff) {\n mergeRanges(target, right);\n }\n}\nfunction mergeRanges(target, newSet) {\n function _addRangeSet(target, _a) {\n var from = _a.from, to = _a.to, l = _a.l, r = _a.r;\n addRange(target, from, to);\n if (l)\n _addRangeSet(target, l);\n if (r)\n _addRangeSet(target, r);\n }\n if (!isEmptyRange(newSet))\n _addRangeSet(target, newSet);\n}\nfunction rangesOverlap(rangeSet1, rangeSet2) {\n var i1 = getRangeSetIterator(rangeSet2);\n var nextResult1 = i1.next();\n if (nextResult1.done)\n return false;\n var a = nextResult1.value;\n var i2 = getRangeSetIterator(rangeSet1);\n var nextResult2 = i2.next(a.from);\n var b = nextResult2.value;\n while (!nextResult1.done && !nextResult2.done) {\n if (cmp(b.from, a.to) <= 0 && cmp(b.to, a.from) >= 0)\n return true;\n cmp(a.from, b.from) < 0\n ? (a = (nextResult1 = i1.next(b.from)).value)\n : (b = (nextResult2 = i2.next(a.from)).value);\n }\n return false;\n}\nfunction getRangeSetIterator(node) {\n var state = isEmptyRange(node) ? null : { s: 0, n: node };\n return {\n next: function (key) {\n var keyProvided = arguments.length > 0;\n while (state) {\n switch (state.s) {\n case 0:\n state.s = 1;\n if (keyProvided) {\n while (state.n.l && cmp(key, state.n.from) < 0)\n state = { up: state, n: state.n.l, s: 1 };\n }\n else {\n while (state.n.l)\n state = { up: state, n: state.n.l, s: 1 };\n }\n case 1:\n state.s = 2;\n if (!keyProvided || cmp(key, state.n.to) <= 0)\n return { value: state.n, done: false };\n case 2:\n if (state.n.r) {\n state.s = 3;\n state = { up: state, n: state.n.r, s: 0 };\n continue;\n }\n case 3:\n state = state.up;\n }\n }\n return { done: true };\n },\n };\n}\nfunction rebalance(target) {\n var _a, _b;\n var diff = (((_a = target.r) === null || _a === void 0 ? void 0 : _a.d) || 0) - (((_b = target.l) === null || _b === void 0 ? void 0 : _b.d) || 0);\n var r = diff > 1 ? \"r\" : diff < -1 ? \"l\" : \"\";\n if (r) {\n var l = r === \"r\" ? \"l\" : \"r\";\n var rootClone = __assign({}, target);\n var oldRootRight = target[r];\n target.from = oldRootRight.from;\n target.to = oldRootRight.to;\n target[r] = oldRootRight[r];\n rootClone[r] = oldRootRight[l];\n target[l] = rootClone;\n rootClone.d = computeDepth(rootClone);\n }\n target.d = computeDepth(target);\n}\nfunction computeDepth(_a) {\n var r = _a.r, l = _a.l;\n return (r ? (l ? Math.max(r.d, l.d) : r.d) : l ? l.d : 0) + 1;\n}\n\nfunction extendObservabilitySet(target, newSet) {\n keys(newSet).forEach(function (part) {\n if (target[part])\n mergeRanges(target[part], newSet[part]);\n else\n target[part] = cloneSimpleObjectTree(newSet[part]);\n });\n return target;\n}\n\nfunction obsSetsOverlap(os1, os2) {\n return os1.all || os2.all || Object.keys(os1).some(function (key) { return os2[key] && rangesOverlap(os2[key], os1[key]); });\n}\n\nvar cache = {};\n\nvar unsignaledParts = {};\nvar isTaskEnqueued = false;\nfunction signalSubscribersLazily(part, optimistic) {\n extendObservabilitySet(unsignaledParts, part);\n if (!isTaskEnqueued) {\n isTaskEnqueued = true;\n setTimeout(function () {\n isTaskEnqueued = false;\n var parts = unsignaledParts;\n unsignaledParts = {};\n signalSubscribersNow(parts, false);\n }, 0);\n }\n}\nfunction signalSubscribersNow(updatedParts, deleteAffectedCacheEntries) {\n if (deleteAffectedCacheEntries === void 0) { deleteAffectedCacheEntries = false; }\n var queriesToSignal = new Set();\n if (updatedParts.all) {\n for (var _i = 0, _a = Object.values(cache); _i < _a.length; _i++) {\n var tblCache = _a[_i];\n collectTableSubscribers(tblCache, updatedParts, queriesToSignal, deleteAffectedCacheEntries);\n }\n }\n else {\n for (var key in updatedParts) {\n var parts = /^idb\\:\\/\\/(.*)\\/(.*)\\//.exec(key);\n if (parts) {\n var dbName = parts[1], tableName = parts[2];\n var tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(tableName)];\n if (tblCache)\n collectTableSubscribers(tblCache, updatedParts, queriesToSignal, deleteAffectedCacheEntries);\n }\n }\n }\n queriesToSignal.forEach(function (requery) { return requery(); });\n}\nfunction collectTableSubscribers(tblCache, updatedParts, outQueriesToSignal, deleteAffectedCacheEntries) {\n var updatedEntryLists = [];\n for (var _i = 0, _a = Object.entries(tblCache.queries.query); _i < _a.length; _i++) {\n var _b = _a[_i], indexName = _b[0], entries = _b[1];\n var filteredEntries = [];\n for (var _c = 0, entries_1 = entries; _c < entries_1.length; _c++) {\n var entry = entries_1[_c];\n if (obsSetsOverlap(updatedParts, entry.obsSet)) {\n entry.subscribers.forEach(function (requery) { return outQueriesToSignal.add(requery); });\n }\n else if (deleteAffectedCacheEntries) {\n filteredEntries.push(entry);\n }\n }\n if (deleteAffectedCacheEntries)\n updatedEntryLists.push([indexName, filteredEntries]);\n }\n if (deleteAffectedCacheEntries) {\n for (var _d = 0, updatedEntryLists_1 = updatedEntryLists; _d < updatedEntryLists_1.length; _d++) {\n var _e = updatedEntryLists_1[_d], indexName = _e[0], filteredEntries = _e[1];\n tblCache.queries.query[indexName] = filteredEntries;\n }\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 state.isBeingOpened = true;\n state.dbOpenError = null;\n state.openComplete = false;\n var openCanceller = state.openCanceller;\n var nativeVerToOpen = Math.round(db.verno * 10);\n var schemaPatchMode = false;\n function throwIfCancelled() {\n if (state.openCanceller !== openCanceller)\n throw new exceptions.DatabaseClosed('db.open() was cancelled');\n }\n var resolveDbReady = state.dbReadyResolve,\n upgradeTransaction = null, wasCreated = false;\n var tryOpenDB = function () { return new DexiePromise(function (resolve, reject) {\n throwIfCancelled();\n if (!indexedDB)\n throw new exceptions.MissingAPI();\n var dbName = db.name;\n var req = state.autoSchema || !nativeVerToOpen ?\n indexedDB.open(dbName) :\n indexedDB.open(dbName, nativeVerToOpen);\n if (!req)\n throw new exceptions.MissingAPI();\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 \".concat(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 wasCreated = oldVer < 1;\n db.idbdb = req.result;\n if (schemaPatchMode) {\n patchCurrentVersion(db, upgradeTransaction);\n }\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 if (!verifyInstalledSchema(db, tmpTrans) && !schemaPatchMode) {\n console.warn(\"Dexie SchemaDiff: Schema was extended without increasing the number passed to db.version(). Dexie will add missing parts and increment native version number to workaround this.\");\n idbdb.close();\n nativeVerToOpen = idbdb.version + 1;\n schemaPatchMode = true;\n return resolve(tryOpenDB());\n }\n }\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 idbdb.onclose = wrap(function (ev) {\n db.on(\"close\").fire(ev);\n });\n if (wasCreated)\n _onDatabaseCreated(db._deps, dbName);\n resolve();\n }, reject);\n }).catch(function (err) {\n switch (err === null || err === void 0 ? void 0 : err.name) {\n case \"UnknownError\":\n if (state.PR1398_maxLoop > 0) {\n state.PR1398_maxLoop--;\n console.warn('Dexie: Workaround for Chrome UnknownError on open()');\n return tryOpenDB();\n }\n break;\n case \"VersionError\":\n if (nativeVerToOpen > 0) {\n nativeVerToOpen = 0;\n return tryOpenDB();\n }\n break;\n }\n return DexiePromise.reject(err);\n }); };\n return DexiePromise.race([\n openCanceller,\n (typeof navigator === 'undefined' ? DexiePromise.resolve() : idbReady()).then(tryOpenDB)\n ]).then(function () {\n throwIfCancelled();\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(function () { return db.on.ready.fire(db.vip); })).then(function fireRemainders() {\n if (state.onReadyBeingFired.length > 0) {\n var remainders_1 = state.onReadyBeingFired.reduce(promisableChain, nop);\n state.onReadyBeingFired = [];\n return DexiePromise.resolve(vip(function () { return remainders_1(db.vip); })).then(fireRemainders);\n }\n });\n }).finally(function () {\n if (state.openCanceller === openCanceller) {\n state.onReadyBeingFired = null;\n state.isBeingOpened = false;\n }\n }).catch(function (err) {\n state.dbOpenError = err;\n try {\n upgradeTransaction && upgradeTransaction.abort();\n }\n catch (_a) { }\n if (openCanceller === state.openCanceller) {\n db._close();\n }\n return rejection(err);\n }).finally(function () {\n state.openComplete = true;\n resolveDbReady();\n }).then(function () {\n if (wasCreated) {\n var everything_1 = {};\n db.tables.forEach(function (table) {\n table.schema.indexes.forEach(function (idx) {\n if (idx.name)\n everything_1[\"idb://\".concat(db.name, \"/\").concat(table.name, \"/\").concat(idx.name)] = new RangeSet(-Infinity, [[[]]]);\n });\n everything_1[\"idb://\".concat(db.name, \"/\").concat(table.name, \"/\")] = everything_1[\"idb://\".concat(db.name, \"/\").concat(table.name, \"/:dels\")] = new RangeSet(-Infinity, [[[]]]);\n });\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME).fire(everything_1);\n signalSubscribersNow(everything_1, true);\n }\n return db;\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 DexiePromise.resolve().then(function () {\n var transless = PSD.transless || PSD;\n var trans = db._createTransaction(mode, storeNames, db._dbSchema, parentTransaction);\n trans.explicit = true;\n var zoneProps = {\n trans: trans,\n transless: transless\n };\n if (parentTransaction) {\n trans.idbtrans = parentTransaction.idbtrans;\n }\n else {\n try {\n trans.create();\n trans.idbtrans._explicit = true;\n db._state.PR1398_maxLoop = 3;\n }\n catch (ex) {\n if (ex.name === errnames.InvalidState && db.isOpen() && --db._state.PR1398_maxLoop > 0) {\n console.warn('Dexie: Need to reopen db');\n db.close({ disableAutoOpen: false });\n return db.open().then(function () { return enterTransactionScope(db, mode, storeNames, null, scopeFunc); });\n }\n return rejection(ex);\n }\n }\n var scopeFuncIsAsync = isAsyncFunction(scopeFunc);\n if (scopeFuncIsAsync) {\n incrementExpectedAwaits();\n }\n var returnValue;\n var promiseFollowed = DexiePromise.follow(function () {\n returnValue = scopeFunc.call(trans, trans);\n if (returnValue) {\n if (scopeFuncIsAsync) {\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 DexiePromise.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 var result = isArray(a) ? a.slice() : [a];\n for (var i = 0; i < count; ++i)\n result.push(value);\n return result;\n}\nfunction createVirtualIndexMiddleware(down) {\n return __assign(__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(__assign({}, lowLevelIndex), { name: isVirtual\n ? \"\".concat(keyPathAlias, \"(virtual-from:\").concat(lowLevelIndex.name, \")\")\n : lowLevelIndex.name, lowLevelIndex: lowLevelIndex, isVirtual: isVirtual, keyTail: keyTail, 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(__assign({}, req), { query: {\n index: index.lowLevelIndex,\n range: translateRange(req.query.range, index.keyTail)\n } }) : req;\n }\n var result = __assign(__assign({}, table), { schema: __assign(__assign({}, schema), { primaryKey: primaryKey, indexes: allVirtualIndexes, getIndexByKeyPath: findBestIndex }), count: function (req) {\n return table.count(translateRequest(req));\n }, query: function (req) {\n return table.query(translateRequest(req));\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(cursor.key.slice(0, keyLength)\n .concat(req.reverse\n ? down.MIN_KEY\n : down.MAX_KEY, keyTail)) :\n cursor.continue();\n }\n var virtualCursor = Object.create(cursor, {\n continue: { value: _continue },\n continuePrimaryKey: {\n value: function (key, primaryKey) {\n cursor.continuePrimaryKey(pad(key, down.MAX_KEY, keyTail), primaryKey);\n }\n },\n primaryKey: {\n get: function () {\n return cursor.primaryKey;\n }\n },\n key: {\n get: function () {\n var key = cursor.key;\n return keyLength === 1 ?\n key[0] :\n key.slice(0, keyLength);\n }\n },\n value: {\n get: function () {\n return cursor.value;\n }\n }\n });\n return virtualCursor;\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\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 }\n else {\n var ap = a[prop], bp = b[prop];\n if (typeof ap === 'object' && typeof bp === 'object' && ap && bp) {\n var apTypeName = toStringTag(ap);\n var bpTypeName = toStringTag(bp);\n if (apTypeName !== bpTypeName) {\n rv[prfx + prop] = b[prop];\n }\n else if (apTypeName === 'Object') {\n getObjectDiff(ap, bp, rv, prfx + prop + '.');\n }\n else if (ap !== bp) {\n rv[prfx + prop] = b[prop];\n }\n }\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}\n\nfunction getEffectiveKeys(primaryKey, req) {\n if (req.type === 'delete')\n return req.keys;\n return req.keys || req.values.map(primaryKey.extractKey);\n}\n\nvar hooksMiddleware = {\n stack: \"dbcore\",\n name: \"HooksMiddleware\",\n level: 2,\n create: function (downCore) { return (__assign(__assign({}, downCore), { table: function (tableName) {\n var downTable = downCore.table(tableName);\n var primaryKey = downTable.schema.primaryKey;\n var tableMiddleware = __assign(__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 = req.keys || getEffectiveKeys(primaryKey, req);\n if (!keys)\n throw new Error(\"Keys missing\");\n req = req.type === 'add' || req.type === 'put' ? __assign(__assign({}, req), { keys: keys }) : __assign({}, req);\n if (req.type !== 'delete')\n req.values = __spreadArray([], req.values, true);\n if (req.keys)\n req.keys = __spreadArray([], req.keys, true);\n return getExistingValues(downTable, req, keys).then(function (existingValues) {\n var contexts = keys.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 if (hasOwn(requestedValue_1, keyPath)) {\n requestedValue_1[keyPath] = additionalChanges_1[keyPath];\n }\n else {\n setByKeyPath(requestedValue_1, keyPath, additionalChanges_1[keyPath]);\n }\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.length; ++i) {\n var primKey = results ? results[i] : keys[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(__assign({}, range), { lower: result[result.length - 1], lowerOpen: true }), limit);\n }\n });\n });\n }\n } });\n return tableMiddleware;\n } })); }\n};\nfunction getExistingValues(table, req, effectiveKeys) {\n return req.type === \"add\"\n ? Promise.resolve([])\n : table.getMany({ trans: req.trans, keys: effectiveKeys, cache: \"immutable\" });\n}\n\nfunction getFromTransactionCache(keys, cache, clone) {\n try {\n if (!cache)\n return null;\n if (cache.keys.length < keys.length)\n return null;\n var result = [];\n for (var i = 0, j = 0; i < cache.keys.length && j < keys.length; ++i) {\n if (cmp(cache.keys[i], keys[j]) !== 0)\n continue;\n result.push(clone ? deepClone(cache.values[i]) : cache.values[i]);\n ++j;\n }\n return result.length === keys.length ? result : null;\n }\n catch (_a) {\n return null;\n }\n}\nvar cacheExistingValuesMiddleware = {\n stack: \"dbcore\",\n level: -1,\n create: function (core) {\n return {\n table: function (tableName) {\n var table = core.table(tableName);\n return __assign(__assign({}, table), { getMany: function (req) {\n if (!req.cache) {\n return table.getMany(req);\n }\n var cachedResult = getFromTransactionCache(req.keys, req.trans[\"_cache\"], req.cache === \"clone\");\n if (cachedResult) {\n return DexiePromise.resolve(cachedResult);\n }\n return table.getMany(req).then(function (res) {\n req.trans[\"_cache\"] = {\n keys: req.keys,\n values: req.cache === \"clone\" ? deepClone(res) : res,\n };\n return res;\n });\n }, mutate: function (req) {\n if (req.type !== \"add\")\n req.trans[\"_cache\"] = null;\n return table.mutate(req);\n } });\n },\n };\n },\n};\n\nfunction isCachableContext(ctx, table) {\n return (ctx.trans.mode === 'readonly' &&\n !!ctx.subscr &&\n !ctx.trans.explicit &&\n ctx.trans.db._options.cache !== 'disabled' &&\n !table.schema.primaryKey.outbound);\n}\n\nfunction isCachableRequest(type, req) {\n switch (type) {\n case 'query':\n return req.values && !req.unique;\n case 'get':\n return false;\n case 'getMany':\n return false;\n case 'count':\n return false;\n case 'openCursor':\n return false;\n }\n}\n\nvar observabilityMiddleware = {\n stack: \"dbcore\",\n level: 0,\n name: \"Observability\",\n create: function (core) {\n var dbName = core.schema.name;\n var FULL_RANGE = new RangeSet(core.MIN_KEY, core.MAX_KEY);\n return __assign(__assign({}, core), { transaction: function (stores, mode, options) {\n if (PSD.subscr && mode !== 'readonly') {\n throw new exceptions.ReadOnly(\"Readwrite transaction in liveQuery context. Querier source: \".concat(PSD.querier));\n }\n return core.transaction(stores, mode, options);\n }, table: function (tableName) {\n var table = core.table(tableName);\n var schema = table.schema;\n var primaryKey = schema.primaryKey, indexes = schema.indexes;\n var extractKey = primaryKey.extractKey, outbound = primaryKey.outbound;\n var indexesWithAutoIncPK = primaryKey.autoIncrement && indexes.filter(function (index) { return index.compound && index.keyPath.includes(primaryKey.keyPath); });\n var tableClone = __assign(__assign({}, table), { mutate: function (req) {\n var _a, _b;\n var trans = req.trans;\n var mutatedParts = req.mutatedParts || (req.mutatedParts = {});\n var getRangeSet = function (indexName) {\n var part = \"idb://\".concat(dbName, \"/\").concat(tableName, \"/\").concat(indexName);\n return (mutatedParts[part] ||\n (mutatedParts[part] = new RangeSet()));\n };\n var pkRangeSet = getRangeSet(\"\");\n var delsRangeSet = getRangeSet(\":dels\");\n var type = req.type;\n var _c = req.type === \"deleteRange\"\n ? [req.range]\n : req.type === \"delete\"\n ? [req.keys]\n : req.values.length < 50\n ? [getEffectiveKeys(primaryKey, req).filter(function (id) { return id; }), req.values]\n : [], keys = _c[0], newObjs = _c[1];\n var oldCache = req.trans[\"_cache\"];\n if (isArray(keys)) {\n pkRangeSet.addKeys(keys);\n var oldObjs = type === 'delete' || keys.length === newObjs.length ? getFromTransactionCache(keys, oldCache) : null;\n if (!oldObjs) {\n delsRangeSet.addKeys(keys);\n }\n if (oldObjs || newObjs) {\n trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs);\n }\n }\n else if (keys) {\n var range = {\n from: (_a = keys.lower) !== null && _a !== void 0 ? _a : core.MIN_KEY,\n to: (_b = keys.upper) !== null && _b !== void 0 ? _b : core.MAX_KEY\n };\n delsRangeSet.add(range);\n pkRangeSet.add(range);\n }\n else {\n pkRangeSet.add(FULL_RANGE);\n delsRangeSet.add(FULL_RANGE);\n schema.indexes.forEach(function (idx) { return getRangeSet(idx.name).add(FULL_RANGE); });\n }\n return table.mutate(req).then(function (res) {\n if (keys && (req.type === 'add' || req.type === 'put')) {\n pkRangeSet.addKeys(res.results);\n if (indexesWithAutoIncPK) {\n indexesWithAutoIncPK.forEach(function (idx) {\n var idxVals = req.values.map(function (v) { return idx.extractKey(v); });\n var pkPos = idx.keyPath.findIndex(function (prop) { return prop === primaryKey.keyPath; });\n for (var i = 0, len = res.results.length; i < len; ++i) {\n idxVals[i][pkPos] = res.results[i];\n }\n getRangeSet(idx.name).addKeys(idxVals);\n });\n }\n }\n trans.mutatedParts = extendObservabilitySet(trans.mutatedParts || {}, mutatedParts);\n return res;\n });\n } });\n var getRange = function (_a) {\n var _b, _c;\n var _d = _a.query, index = _d.index, range = _d.range;\n return [\n index,\n new RangeSet((_b = range.lower) !== null && _b !== void 0 ? _b : core.MIN_KEY, (_c = range.upper) !== null && _c !== void 0 ? _c : core.MAX_KEY),\n ];\n };\n var readSubscribers = {\n get: function (req) { return [primaryKey, new RangeSet(req.key)]; },\n getMany: function (req) { return [primaryKey, new RangeSet().addKeys(req.keys)]; },\n count: getRange,\n query: getRange,\n openCursor: getRange,\n };\n keys(readSubscribers).forEach(function (method) {\n tableClone[method] = function (req) {\n var subscr = PSD.subscr;\n var isLiveQuery = !!subscr;\n var cachable = isCachableContext(PSD, table) && isCachableRequest(method, req);\n var obsSet = cachable\n ? req.obsSet = {}\n : subscr;\n if (isLiveQuery) {\n var getRangeSet = function (indexName) {\n var part = \"idb://\".concat(dbName, \"/\").concat(tableName, \"/\").concat(indexName);\n return (obsSet[part] ||\n (obsSet[part] = new RangeSet()));\n };\n var pkRangeSet_1 = getRangeSet(\"\");\n var delsRangeSet_1 = getRangeSet(\":dels\");\n var _a = readSubscribers[method](req), queriedIndex = _a[0], queriedRanges = _a[1];\n if (method === 'query' && queriedIndex.isPrimaryKey && !req.values) {\n delsRangeSet_1.add(queriedRanges);\n }\n else {\n getRangeSet(queriedIndex.name || \"\").add(queriedRanges);\n }\n if (!queriedIndex.isPrimaryKey) {\n if (method === \"count\") {\n delsRangeSet_1.add(FULL_RANGE);\n }\n else {\n var keysPromise_1 = method === \"query\" &&\n outbound &&\n req.values &&\n table.query(__assign(__assign({}, req), { values: false }));\n return table[method].apply(this, arguments).then(function (res) {\n if (method === \"query\") {\n if (outbound && req.values) {\n return keysPromise_1.then(function (_a) {\n var resultingKeys = _a.result;\n pkRangeSet_1.addKeys(resultingKeys);\n return res;\n });\n }\n var pKeys = req.values\n ? res.result.map(extractKey)\n : res.result;\n if (req.values) {\n pkRangeSet_1.addKeys(pKeys);\n }\n else {\n delsRangeSet_1.addKeys(pKeys);\n }\n }\n else if (method === \"openCursor\") {\n var cursor_1 = res;\n var wantValues_1 = req.values;\n return (cursor_1 &&\n Object.create(cursor_1, {\n key: {\n get: function () {\n delsRangeSet_1.addKey(cursor_1.primaryKey);\n return cursor_1.key;\n },\n },\n primaryKey: {\n get: function () {\n var pkey = cursor_1.primaryKey;\n delsRangeSet_1.addKey(pkey);\n return pkey;\n },\n },\n value: {\n get: function () {\n wantValues_1 && pkRangeSet_1.addKey(cursor_1.primaryKey);\n return cursor_1.value;\n },\n },\n }));\n }\n return res;\n });\n }\n }\n }\n return table[method].apply(this, arguments);\n };\n });\n return tableClone;\n } });\n },\n};\nfunction trackAffectedIndexes(getRangeSet, schema, oldObjs, newObjs) {\n function addAffectedIndex(ix) {\n var rangeSet = getRangeSet(ix.name || \"\");\n function extractKey(obj) {\n return obj != null ? ix.extractKey(obj) : null;\n }\n var addKeyOrKeys = function (key) { return ix.multiEntry && isArray(key)\n ? key.forEach(function (key) { return rangeSet.addKey(key); })\n : rangeSet.addKey(key); };\n (oldObjs || newObjs).forEach(function (_, i) {\n var oldKey = oldObjs && extractKey(oldObjs[i]);\n var newKey = newObjs && extractKey(newObjs[i]);\n if (cmp(oldKey, newKey) !== 0) {\n if (oldKey != null)\n addKeyOrKeys(oldKey);\n if (newKey != null)\n addKeyOrKeys(newKey);\n }\n });\n }\n schema.indexes.forEach(addAffectedIndex);\n}\n\nfunction adjustOptimisticFromFailures(tblCache, req, res) {\n if (res.numFailures === 0)\n return req;\n if (req.type === 'deleteRange') {\n return null;\n }\n var numBulkOps = req.keys\n ? req.keys.length\n : 'values' in req && req.values\n ? req.values.length\n : 1;\n if (res.numFailures === numBulkOps) {\n return null;\n }\n var clone = __assign({}, req);\n if (isArray(clone.keys)) {\n clone.keys = clone.keys.filter(function (_, i) { return !(i in res.failures); });\n }\n if ('values' in clone && isArray(clone.values)) {\n clone.values = clone.values.filter(function (_, i) { return !(i in res.failures); });\n }\n return clone;\n}\n\nfunction isAboveLower(key, range) {\n return range.lower === undefined\n ? true\n : range.lowerOpen\n ? cmp(key, range.lower) > 0\n : cmp(key, range.lower) >= 0;\n}\nfunction isBelowUpper(key, range) {\n return range.upper === undefined\n ? true\n : range.upperOpen\n ? cmp(key, range.upper) < 0\n : cmp(key, range.upper) <= 0;\n}\nfunction isWithinRange(key, range) {\n return isAboveLower(key, range) && isBelowUpper(key, range);\n}\n\nfunction applyOptimisticOps(result, req, ops, table, cacheEntry, immutable) {\n if (!ops || ops.length === 0)\n return result;\n var index = req.query.index;\n var multiEntry = index.multiEntry;\n var queryRange = req.query.range;\n var primaryKey = table.schema.primaryKey;\n var extractPrimKey = primaryKey.extractKey;\n var extractIndex = index.extractKey;\n var extractLowLevelIndex = (index.lowLevelIndex || index).extractKey;\n var finalResult = ops.reduce(function (result, op) {\n var modifedResult = result;\n var includedValues = [];\n if (op.type === 'add' || op.type === 'put') {\n var includedPKs = new RangeSet();\n for (var i = op.values.length - 1; i >= 0; --i) {\n var value = op.values[i];\n var pk = extractPrimKey(value);\n if (includedPKs.hasKey(pk))\n continue;\n var key = extractIndex(value);\n if (multiEntry && isArray(key)\n ? key.some(function (k) { return isWithinRange(k, queryRange); })\n : isWithinRange(key, queryRange)) {\n includedPKs.addKey(pk);\n includedValues.push(value);\n }\n }\n }\n switch (op.type) {\n case 'add': {\n var existingKeys_1 = new RangeSet().addKeys(req.values ? result.map(function (v) { return extractPrimKey(v); }) : result);\n modifedResult = result.concat(req.values\n ? includedValues.filter(function (v) {\n var key = extractPrimKey(v);\n if (existingKeys_1.hasKey(key))\n return false;\n existingKeys_1.addKey(key);\n return true;\n })\n : includedValues\n .map(function (v) { return extractPrimKey(v); })\n .filter(function (k) {\n if (existingKeys_1.hasKey(k))\n return false;\n existingKeys_1.addKey(k);\n return true;\n }));\n break;\n }\n case 'put': {\n var keySet_1 = new RangeSet().addKeys(op.values.map(function (v) { return extractPrimKey(v); }));\n modifedResult = result\n .filter(\n function (item) { return !keySet_1.hasKey(req.values ? extractPrimKey(item) : item); })\n .concat(\n req.values\n ? includedValues\n : includedValues.map(function (v) { return extractPrimKey(v); }));\n break;\n }\n case 'delete':\n var keysToDelete_1 = new RangeSet().addKeys(op.keys);\n modifedResult = result.filter(function (item) {\n return !keysToDelete_1.hasKey(req.values ? extractPrimKey(item) : item);\n });\n break;\n case 'deleteRange':\n var range_1 = op.range;\n modifedResult = result.filter(function (item) { return !isWithinRange(extractPrimKey(item), range_1); });\n break;\n }\n return modifedResult;\n }, result);\n if (finalResult === result)\n return result;\n finalResult.sort(function (a, b) {\n return cmp(extractLowLevelIndex(a), extractLowLevelIndex(b)) ||\n cmp(extractPrimKey(a), extractPrimKey(b));\n });\n if (req.limit && req.limit < Infinity) {\n if (finalResult.length > req.limit) {\n finalResult.length = req.limit;\n }\n else if (result.length === req.limit && finalResult.length < req.limit) {\n cacheEntry.dirty = true;\n }\n }\n return immutable ? Object.freeze(finalResult) : finalResult;\n}\n\nfunction areRangesEqual(r1, r2) {\n return (cmp(r1.lower, r2.lower) === 0 &&\n cmp(r1.upper, r2.upper) === 0 &&\n !!r1.lowerOpen === !!r2.lowerOpen &&\n !!r1.upperOpen === !!r2.upperOpen);\n}\n\nfunction compareLowers(lower1, lower2, lowerOpen1, lowerOpen2) {\n if (lower1 === undefined)\n return lower2 !== undefined ? -1 : 0;\n if (lower2 === undefined)\n return 1;\n var c = cmp(lower1, lower2);\n if (c === 0) {\n if (lowerOpen1 && lowerOpen2)\n return 0;\n if (lowerOpen1)\n return 1;\n if (lowerOpen2)\n return -1;\n }\n return c;\n}\nfunction compareUppers(upper1, upper2, upperOpen1, upperOpen2) {\n if (upper1 === undefined)\n return upper2 !== undefined ? 1 : 0;\n if (upper2 === undefined)\n return -1;\n var c = cmp(upper1, upper2);\n if (c === 0) {\n if (upperOpen1 && upperOpen2)\n return 0;\n if (upperOpen1)\n return -1;\n if (upperOpen2)\n return 1;\n }\n return c;\n}\nfunction isSuperRange(r1, r2) {\n return (compareLowers(r1.lower, r2.lower, r1.lowerOpen, r2.lowerOpen) <= 0 &&\n compareUppers(r1.upper, r2.upper, r1.upperOpen, r2.upperOpen) >= 0);\n}\n\nfunction findCompatibleQuery(dbName, tableName, type, req) {\n var tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(tableName)];\n if (!tblCache)\n return [];\n var queries = tblCache.queries[type];\n if (!queries)\n return [null, false, tblCache, null];\n var indexName = req.query ? req.query.index.name : null;\n var entries = queries[indexName || ''];\n if (!entries)\n return [null, false, tblCache, null];\n switch (type) {\n case 'query':\n var equalEntry = entries.find(function (entry) {\n return entry.req.limit === req.limit &&\n entry.req.values === req.values &&\n areRangesEqual(entry.req.query.range, req.query.range);\n });\n if (equalEntry)\n return [\n equalEntry,\n true,\n tblCache,\n entries,\n ];\n var superEntry = entries.find(function (entry) {\n var limit = 'limit' in entry.req ? entry.req.limit : Infinity;\n return (limit >= req.limit &&\n (req.values ? entry.req.values : true) &&\n isSuperRange(entry.req.query.range, req.query.range));\n });\n return [superEntry, false, tblCache, entries];\n case 'count':\n var countQuery = entries.find(function (entry) {\n return areRangesEqual(entry.req.query.range, req.query.range);\n });\n return [countQuery, !!countQuery, tblCache, entries];\n }\n}\n\nfunction subscribeToCacheEntry(cacheEntry, container, requery, signal) {\n cacheEntry.subscribers.add(requery);\n signal.addEventListener(\"abort\", function () {\n cacheEntry.subscribers.delete(requery);\n if (cacheEntry.subscribers.size === 0) {\n enqueForDeletion(cacheEntry, container);\n }\n });\n}\nfunction enqueForDeletion(cacheEntry, container) {\n setTimeout(function () {\n if (cacheEntry.subscribers.size === 0) {\n delArrayItem(container, cacheEntry);\n }\n }, 3000);\n}\n\nvar cacheMiddleware = {\n stack: 'dbcore',\n level: 0,\n name: 'Cache',\n create: function (core) {\n var dbName = core.schema.name;\n var coreMW = __assign(__assign({}, core), { transaction: function (stores, mode, options) {\n var idbtrans = core.transaction(stores, mode, options);\n if (mode === 'readwrite') {\n var ac_1 = new AbortController();\n var signal = ac_1.signal;\n var endTransaction = function (wasCommitted) { return function () {\n ac_1.abort();\n if (mode === 'readwrite') {\n var affectedSubscribers_1 = new Set();\n for (var _i = 0, stores_1 = stores; _i < stores_1.length; _i++) {\n var storeName = stores_1[_i];\n var tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(storeName)];\n if (tblCache) {\n var table = core.table(storeName);\n var ops = tblCache.optimisticOps.filter(function (op) { return op.trans === idbtrans; });\n if (idbtrans._explicit && wasCommitted && idbtrans.mutatedParts) {\n for (var _a = 0, _b = Object.values(tblCache.queries.query); _a < _b.length; _a++) {\n var entries = _b[_a];\n for (var _c = 0, _d = entries.slice(); _c < _d.length; _c++) {\n var entry = _d[_c];\n if (obsSetsOverlap(entry.obsSet, idbtrans.mutatedParts)) {\n delArrayItem(entries, entry);\n entry.subscribers.forEach(function (requery) { return affectedSubscribers_1.add(requery); });\n }\n }\n }\n }\n else if (ops.length > 0) {\n tblCache.optimisticOps = tblCache.optimisticOps.filter(function (op) { return op.trans !== idbtrans; });\n for (var _e = 0, _f = Object.values(tblCache.queries.query); _e < _f.length; _e++) {\n var entries = _f[_e];\n for (var _g = 0, _h = entries.slice(); _g < _h.length; _g++) {\n var entry = _h[_g];\n if (entry.res != null &&\n idbtrans.mutatedParts\n) {\n if (wasCommitted && !entry.dirty) {\n var freezeResults = Object.isFrozen(entry.res);\n var modRes = applyOptimisticOps(entry.res, entry.req, ops, table, entry, freezeResults);\n if (entry.dirty) {\n delArrayItem(entries, entry);\n entry.subscribers.forEach(function (requery) { return affectedSubscribers_1.add(requery); });\n }\n else if (modRes !== entry.res) {\n entry.res = modRes;\n entry.promise = DexiePromise.resolve({ result: modRes });\n }\n }\n else {\n if (entry.dirty) {\n delArrayItem(entries, entry);\n }\n entry.subscribers.forEach(function (requery) { return affectedSubscribers_1.add(requery); });\n }\n }\n }\n }\n }\n }\n }\n affectedSubscribers_1.forEach(function (requery) { return requery(); });\n }\n }; };\n idbtrans.addEventListener('abort', endTransaction(false), {\n signal: signal,\n });\n idbtrans.addEventListener('error', endTransaction(false), {\n signal: signal,\n });\n idbtrans.addEventListener('complete', endTransaction(true), {\n signal: signal,\n });\n }\n return idbtrans;\n }, table: function (tableName) {\n var downTable = core.table(tableName);\n var primKey = downTable.schema.primaryKey;\n var tableMW = __assign(__assign({}, downTable), { mutate: function (req) {\n var trans = PSD.trans;\n if (primKey.outbound ||\n trans.db._options.cache === 'disabled' ||\n trans.explicit ||\n trans.idbtrans.mode !== 'readwrite'\n ) {\n return downTable.mutate(req);\n }\n var tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(tableName)];\n if (!tblCache)\n return downTable.mutate(req);\n var promise = downTable.mutate(req);\n if ((req.type === 'add' || req.type === 'put') && (req.values.length >= 50 || getEffectiveKeys(primKey, req).some(function (key) { return key == null; }))) {\n promise.then(function (res) {\n var reqWithResolvedKeys = __assign(__assign({}, req), { values: req.values.map(function (value, i) {\n var _a;\n if (res.failures[i])\n return value;\n var valueWithKey = ((_a = primKey.keyPath) === null || _a === void 0 ? void 0 : _a.includes('.'))\n ? deepClone(value)\n : __assign({}, value);\n setByKeyPath(valueWithKey, primKey.keyPath, res.results[i]);\n return valueWithKey;\n }) });\n var adjustedReq = adjustOptimisticFromFailures(tblCache, reqWithResolvedKeys, res);\n tblCache.optimisticOps.push(adjustedReq);\n queueMicrotask(function () { return req.mutatedParts && signalSubscribersLazily(req.mutatedParts); });\n });\n }\n else {\n tblCache.optimisticOps.push(req);\n req.mutatedParts && signalSubscribersLazily(req.mutatedParts);\n promise.then(function (res) {\n if (res.numFailures > 0) {\n delArrayItem(tblCache.optimisticOps, req);\n var adjustedReq = adjustOptimisticFromFailures(tblCache, req, res);\n if (adjustedReq) {\n tblCache.optimisticOps.push(adjustedReq);\n }\n req.mutatedParts && signalSubscribersLazily(req.mutatedParts);\n }\n });\n promise.catch(function () {\n delArrayItem(tblCache.optimisticOps, req);\n req.mutatedParts && signalSubscribersLazily(req.mutatedParts);\n });\n }\n return promise;\n }, query: function (req) {\n var _a;\n if (!isCachableContext(PSD, downTable) || !isCachableRequest(\"query\", req))\n return downTable.query(req);\n var freezeResults = ((_a = PSD.trans) === null || _a === void 0 ? void 0 : _a.db._options.cache) === 'immutable';\n var _b = PSD, requery = _b.requery, signal = _b.signal;\n var _c = findCompatibleQuery(dbName, tableName, 'query', req), cacheEntry = _c[0], exactMatch = _c[1], tblCache = _c[2], container = _c[3];\n if (cacheEntry && exactMatch) {\n cacheEntry.obsSet = req.obsSet;\n }\n else {\n var promise = downTable.query(req).then(function (res) {\n var result = res.result;\n if (cacheEntry)\n cacheEntry.res = result;\n if (freezeResults) {\n for (var i = 0, l = result.length; i < l; ++i) {\n Object.freeze(result[i]);\n }\n Object.freeze(result);\n }\n else {\n res.result = deepClone(result);\n }\n return res;\n }).catch(function (error) {\n if (container && cacheEntry)\n delArrayItem(container, cacheEntry);\n return Promise.reject(error);\n });\n cacheEntry = {\n obsSet: req.obsSet,\n promise: promise,\n subscribers: new Set(),\n type: 'query',\n req: req,\n dirty: false,\n };\n if (container) {\n container.push(cacheEntry);\n }\n else {\n container = [cacheEntry];\n if (!tblCache) {\n tblCache = cache[\"idb://\".concat(dbName, \"/\").concat(tableName)] = {\n queries: {\n query: {},\n count: {},\n },\n objs: new Map(),\n optimisticOps: [],\n unsignaledParts: {}\n };\n }\n tblCache.queries.query[req.query.index.name || ''] = container;\n }\n }\n subscribeToCacheEntry(cacheEntry, container, requery, signal);\n return cacheEntry.promise.then(function (res) {\n return {\n result: applyOptimisticOps(res.result, req, tblCache === null || tblCache === void 0 ? void 0 : tblCache.optimisticOps, downTable, cacheEntry, freezeResults),\n };\n });\n } });\n return tableMW;\n } });\n return coreMW;\n },\n};\n\nfunction vipify(target, vipDb) {\n return new Proxy(target, {\n get: function (target, prop, receiver) {\n if (prop === 'db')\n return vipDb;\n return Reflect.get(target, prop, receiver);\n }\n });\n}\n\nvar Dexie$1 = (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, cache: 'cloned' }, 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 this._novip = this;\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 PR1398_maxLoop: 3,\n autoOpen: options.autoOpen,\n };\n state.dbReadyPromise = new DexiePromise(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new DexiePromise(function (_, reject) {\n state.cancelOpen = reject;\n });\n this._state = state;\n this.name = name;\n this.on = Events(this, \"populate\", \"blocked\", \"versionchange\", \"close\", { 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 DexiePromise.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 '\".concat(_this.name, \"'. Closing db now to resume the upgrade.\"));\n else\n console.warn(\"Another connection wants to delete database '\".concat(_this.name, \"'. Closing db now to resume the delete request.\"));\n _this.close({ disableAutoOpen: false });\n });\n this.on(\"blocked\", function (ev) {\n if (!ev.newVersion || ev.newVersion < ev.oldVersion)\n console.warn(\"Dexie.delete('\".concat(_this.name, \"') was blocked\"));\n else\n console.warn(\"Upgrade '\".concat(_this.name, \"' blocked by other connection holding version \").concat(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, _this._options.chromeTransactionDurability, 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(cacheExistingValuesMiddleware);\n this.use(cacheMiddleware);\n this.use(observabilityMiddleware);\n this.use(virtualIndexMiddleware);\n this.use(hooksMiddleware);\n var vipDB = new Proxy(this, {\n get: function (_, prop, receiver) {\n if (prop === '_vip')\n return true;\n if (prop === 'table')\n return function (tableName) { return vipify(_this.table(tableName), vipDB); };\n var rv = Reflect.get(_, prop, receiver);\n if (rv instanceof Table)\n return vipify(rv, vipDB);\n if (prop === 'tables')\n return rv.map(function (t) { return vipify(t, vipDB); });\n if (prop === '_createTransaction')\n return function () {\n var tx = rv.apply(this, arguments);\n return vipify(tx, vipDB);\n };\n return rv;\n }\n });\n this.vip = vipDB;\n addons.forEach(function (addon) { return addon(_this); });\n }\n Dexie.prototype.version = function (versionNumber) {\n if (isNaN(versionNumber) || versionNumber < 0.1)\n throw new exceptions.Type(\"Given version is not a positive number\");\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 versionInstance.stores({});\n this._state.autoSchema = false;\n return versionInstance;\n };\n Dexie.prototype._whenReady = function (fn) {\n var _this = this;\n return (this.idbdb && (this._state.openComplete || PSD.letThrough || this._vip)) ? fn() : new DexiePromise(function (resolve, reject) {\n if (_this._state.openComplete) {\n return reject(new exceptions.DatabaseClosed(_this._state.dbOpenError));\n }\n if (!_this._state.isBeingOpened) {\n if (!_this._state.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 var _this = this;\n return usePSD(globalPSD,\n function () { return dexieOpen(_this); });\n };\n Dexie.prototype._close = function () {\n var state = this._state;\n var idx = connections.indexOf(this);\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 if (!state.isBeingOpened) {\n state.dbReadyPromise = new DexiePromise(function (resolve) {\n state.dbReadyResolve = resolve;\n });\n state.openCanceller = new DexiePromise(function (_, reject) {\n state.cancelOpen = reject;\n });\n }\n };\n Dexie.prototype.close = function (_a) {\n var _b = _a === void 0 ? { disableAutoOpen: true } : _a, disableAutoOpen = _b.disableAutoOpen;\n var state = this._state;\n if (disableAutoOpen) {\n if (state.isBeingOpened) {\n state.cancelOpen(new exceptions.DatabaseClosed());\n }\n this._close();\n state.autoOpen = false;\n state.dbOpenError = new exceptions.DatabaseClosed();\n }\n else {\n this._close();\n state.autoOpen = this._options.autoOpen ||\n state.isBeingOpened;\n state.openComplete = false;\n state.dbOpenError = null;\n }\n };\n Dexie.prototype.delete = function (closeOptions) {\n var _this = this;\n if (closeOptions === void 0) { closeOptions = { disableAutoOpen: true }; }\n var hasInvalidArguments = arguments.length > 0 && typeof arguments[0] !== 'object';\n var state = this._state;\n return new DexiePromise(function (resolve, reject) {\n var doDelete = function () {\n _this.close(closeOptions);\n var req = _this._deps.indexedDB.deleteDatabase(_this.name);\n req.onsuccess = wrap(function () {\n _onDatabaseDeleted(_this._deps, _this.name);\n resolve();\n });\n req.onerror = eventRejectHandler(reject);\n req.onblocked = _this._fireOnBlocked;\n };\n if (hasInvalidArguments)\n throw new exceptions.InvalidArgument(\"Invalid closeOptions argument to 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: false,\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 \".concat(tableName, \" does not exist\"));\n }\n return this._allTables[tableName];\n };\n return Dexie;\n}());\n\nvar symbolObservable = typeof Symbol !== \"undefined\" && \"observable\" in Symbol\n ? Symbol.observable\n : \"@@observable\";\nvar Observable = (function () {\n function Observable(subscribe) {\n this._subscribe = subscribe;\n }\n Observable.prototype.subscribe = function (x, error, complete) {\n return this._subscribe(!x || typeof x === \"function\" ? { next: x, error: error, complete: complete } : x);\n };\n Observable.prototype[symbolObservable] = function () {\n return this;\n };\n return Observable;\n}());\n\nvar domDeps;\ntry {\n domDeps = {\n indexedDB: _global.indexedDB || _global.mozIndexedDB || _global.webkitIndexedDB || _global.msIndexedDB,\n IDBKeyRange: _global.IDBKeyRange || _global.webkitIDBKeyRange\n };\n}\ncatch (e) {\n domDeps = { indexedDB: null, IDBKeyRange: null };\n}\n\nfunction liveQuery(querier) {\n var hasValue = false;\n var currentValue;\n var observable = new Observable(function (observer) {\n var scopeFuncIsAsync = isAsyncFunction(querier);\n function execute(ctx) {\n var wasRootExec = beginMicroTickScope();\n try {\n if (scopeFuncIsAsync) {\n incrementExpectedAwaits();\n }\n var rv = newScope(querier, ctx);\n if (scopeFuncIsAsync) {\n rv = rv.finally(decrementExpectedAwaits);\n }\n return rv;\n }\n finally {\n wasRootExec && endMicroTickScope();\n }\n }\n var closed = false;\n var abortController;\n var accumMuts = {};\n var currentObs = {};\n var subscription = {\n get closed() {\n return closed;\n },\n unsubscribe: function () {\n if (closed)\n return;\n closed = true;\n if (abortController)\n abortController.abort();\n if (startedListening)\n globalEvents.storagemutated.unsubscribe(mutationListener);\n },\n };\n observer.start && observer.start(subscription);\n var startedListening = false;\n var doQuery = function () { return execInGlobalContext(_doQuery); };\n function shouldNotify() {\n return obsSetsOverlap(currentObs, accumMuts);\n }\n var mutationListener = function (parts) {\n extendObservabilitySet(accumMuts, parts);\n if (shouldNotify()) {\n doQuery();\n }\n };\n var _doQuery = function () {\n if (closed ||\n !domDeps.indexedDB)\n {\n return;\n }\n accumMuts = {};\n var subscr = {};\n if (abortController)\n abortController.abort();\n abortController = new AbortController();\n var ctx = {\n subscr: subscr,\n signal: abortController.signal,\n requery: doQuery,\n querier: querier,\n trans: null\n };\n var ret = execute(ctx);\n Promise.resolve(ret).then(function (result) {\n hasValue = true;\n currentValue = result;\n if (closed || ctx.signal.aborted) {\n return;\n }\n accumMuts = {};\n currentObs = subscr;\n if (!objectIsEmpty(currentObs) && !startedListening) {\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, mutationListener);\n startedListening = true;\n }\n execInGlobalContext(function () { return !closed && observer.next && observer.next(result); });\n }, function (err) {\n hasValue = false;\n if (!['DatabaseClosedError', 'AbortError'].includes(err === null || err === void 0 ? void 0 : err.name)) {\n if (!closed)\n execInGlobalContext(function () {\n if (closed)\n return;\n observer.error && observer.error(err);\n });\n }\n });\n };\n setTimeout(doQuery, 0);\n return subscription;\n });\n observable.hasValue = function () { return hasValue; };\n observable.getValue = function () { return currentValue; };\n return observable;\n}\n\nvar Dexie = Dexie$1;\nprops(Dexie, __assign(__assign({}, fullNameExceptions), {\n delete: function (databaseName) {\n var db = new Dexie(databaseName, { addons: [] });\n return db.delete();\n },\n exists: function (name) {\n return new Dexie(name, { addons: [] }).open().then(function (db) {\n db.close();\n return true;\n }).catch('NoSuchDatabaseError', function () { return false; });\n },\n getDatabaseNames: function (cb) {\n try {\n return getDatabaseNames(Dexie.dependencies).then(cb);\n }\n catch (_a) {\n return rejection(new exceptions.MissingAPI());\n }\n },\n defineClass: function () {\n function Class(content) {\n extend(this, content);\n }\n return Class;\n }, ignoreTransaction: function (scopeFunc) {\n return PSD.trans ?\n usePSD(PSD.transless, scopeFunc) :\n scopeFunc();\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 DexiePromise.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 DexiePromise.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 = DexiePromise.resolve(typeof promiseOrFunction === 'function' ?\n Dexie.ignoreTransaction(promiseOrFunction) :\n promiseOrFunction)\n .timeout(optionalTimeout || 60000);\n return PSD.trans ?\n PSD.trans.waitFor(promise) :\n promise;\n },\n Promise: DexiePromise,\n debug: {\n get: function () { return debug; },\n set: function (value) {\n setDebug(value);\n }\n },\n derive: derive, extend: extend, props: props, override: override,\n Events: Events, on: globalEvents, liveQuery: liveQuery, extendObservabilitySet: extendObservabilitySet,\n getByKeyPath: getByKeyPath, setByKeyPath: setByKeyPath, delByKeyPath: delByKeyPath, shallowClone: shallowClone, deepClone: deepClone, getObjectDiff: getObjectDiff, cmp: cmp, asap: asap$1,\n minKey: minKey,\n addons: [],\n connections: connections,\n errnames: errnames,\n dependencies: domDeps, cache: cache,\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)); }) }));\nDexie.maxKey = getMaxKey(Dexie.dependencies.IDBKeyRange);\n\nif (typeof dispatchEvent !== 'undefined' && typeof addEventListener !== 'undefined') {\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function (updatedParts) {\n if (!propagatingLocally) {\n var event_1;\n event_1 = new CustomEvent(STORAGE_MUTATED_DOM_EVENT_NAME, {\n detail: updatedParts\n });\n propagatingLocally = true;\n dispatchEvent(event_1);\n propagatingLocally = false;\n }\n });\n addEventListener(STORAGE_MUTATED_DOM_EVENT_NAME, function (_a) {\n var detail = _a.detail;\n if (!propagatingLocally) {\n propagateLocally(detail);\n }\n });\n}\nfunction propagateLocally(updateParts) {\n var wasMe = propagatingLocally;\n try {\n propagatingLocally = true;\n globalEvents.storagemutated.fire(updateParts);\n signalSubscribersNow(updateParts, true);\n }\n finally {\n propagatingLocally = wasMe;\n }\n}\nvar propagatingLocally = false;\n\nvar bc;\nvar createBC = function () { };\nif (typeof BroadcastChannel !== 'undefined') {\n createBC = function () {\n bc = new BroadcastChannel(STORAGE_MUTATED_DOM_EVENT_NAME);\n bc.onmessage = function (ev) { return ev.data && propagateLocally(ev.data); };\n };\n createBC();\n if (typeof bc.unref === 'function') {\n bc.unref();\n }\n globalEvents(DEXIE_STORAGE_MUTATED_EVENT_NAME, function (changedParts) {\n if (!propagatingLocally) {\n bc.postMessage(changedParts);\n }\n });\n}\n\nif (typeof addEventListener !== 'undefined') {\n addEventListener('pagehide', function (event) {\n if (!Dexie$1.disableBfCache && event.persisted) {\n if (debug)\n console.debug('Dexie: handling persisted pagehide');\n bc === null || bc === void 0 ? void 0 : bc.close();\n for (var _i = 0, connections_1 = connections; _i < connections_1.length; _i++) {\n var db = connections_1[_i];\n db.close({ disableAutoOpen: false });\n }\n }\n });\n addEventListener('pageshow', function (event) {\n if (!Dexie$1.disableBfCache && event.persisted) {\n if (debug)\n console.debug('Dexie: handling persisted pageshow');\n createBC();\n propagateLocally({ all: new RangeSet(-Infinity, [[]]) });\n }\n });\n}\n\nfunction add(value) {\n return new PropModification({ add: value });\n}\n\nfunction remove(value) {\n return new PropModification({ remove: value });\n}\n\nfunction replacePrefix(a, b) {\n return new PropModification({ replacePrefix: [a, b] });\n}\n\nDexiePromise.rejectionMapper = mapError;\nsetDebug(debug);\n\nexport { Dexie$1 as Dexie, Entity, PropModSymbol, PropModification, RangeSet, add, cmp, Dexie$1 as default, liveQuery, mergeRanges, rangesOverlap, remove, replacePrefix };\n//# sourceMappingURL=dexie.mjs.map\n","import { FlowStatus } from '../models/FlowStatus';\r\nimport Dexie, { Entity, EntityTable } from 'dexie';\r\nimport store from './store';\r\n\r\nexport class EctData extends Entity<EctDb> {\r\n orderId: string;\r\n redirectId: string;\r\n timestamp: Date;\r\n initialized: boolean;\r\n phoneNumber: string;\r\n refreshStarted: boolean;\r\n flowStatus: FlowStatus;\r\n modelsPath: string;\r\n citizenship: string;\r\n finished: boolean;\r\n}\r\n\r\nexport class EctDb extends Dexie {\r\n ectdata: EntityTable<EctData, 'orderId'>;\r\n\r\n constructor() {\r\n super('ectdb');\r\n this.version(1).stores({\r\n ectdata: 'orderId, redirectId, timestamp, initialized, phoneNumber, refreshStarted, flowStatus, modelsPath, citizenship',\r\n });\r\n this.ectdata.mapToClass(EctData);\r\n }\r\n\r\n async getLastEctData(finished: boolean): Promise<EctData> {\r\n var allFinished = await this.ectdata.where({ finished: finished }).sortBy('timestamp');\r\n if (allFinished.length > 0) {\r\n return allFinished.reverse()[0];\r\n }\r\n return null;\r\n }\r\n\r\n public async getAllEctData(): Promise<EctData[]> {\r\n return await this.ectdata.toArray();\r\n }\r\n\r\n public async getOrCreateEctData(orderId: string): Promise<EctData> {\r\n var ectData = await this.ectdata.get(orderId);\r\n if (store.debug) console.log('EctData found: ' + JSON.stringify(ectData));\r\n if (!ectData) {\r\n await this.ectdata.add({\r\n orderId: orderId,\r\n redirectId: '',\r\n timestamp: new Date(),\r\n initialized: false,\r\n finished: false,\r\n phoneNumber: '',\r\n refreshStarted: false,\r\n flowStatus: FlowStatus.NONE,\r\n modelsPath: '',\r\n citizenship: '',\r\n });\r\n ectData = await this.ectdata.get(orderId);\r\n if (store.debug) console.log('EctData set: ' + JSON.stringify(ectData));\r\n }\r\n return ectData;\r\n }\r\n}\r\n","import { EctDb } from './EctDb';\r\n\r\nexport const db = new EctDb();\r\n","import { createStore } from '@stencil/store';\r\nimport { FlowStatus } from '../models/FlowStatus';\r\nimport { EctStore } from '../models/IEctStore';\r\nimport { db } from './db';\r\n\r\nconst { state, onChange } = createStore<EctStore>({\r\n flowStatus: FlowStatus.NONE,\r\n initialized: false,\r\n environment: 'PROD',\r\n debug: false,\r\n requestId: '',\r\n redirectId: '',\r\n token: '',\r\n cameraIds: [],\r\n cameraId: '',\r\n phoneNumber: '',\r\n apiBaseUrl: 'https://apiro.id-kyc.com',\r\n device: null,\r\n langIso: 'ro',\r\n logSteps: false,\r\n modelsPath: '',\r\n citizenship: '',\r\n idDocument: '',\r\n showCitizenshipSelector: false,\r\n scrollMode: false,\r\n});\r\n\r\nonChange('environment', value => {\r\n state.debug = value == 'QA';\r\n});\r\n\r\nonChange('flowStatus', async value => {\r\n state.flowStatus = value;\r\n if (state.flowStatus == FlowStatus.CITIZENSHIP) {\r\n return;\r\n }\r\n var ectData = await db.ectdata.get(state.requestId);\r\n if (ectData) {\r\n ectData.flowStatus = state.flowStatus;\r\n await db.ectdata.put(ectData);\r\n }\r\n});\r\n\r\nexport default state;\r\n","export enum FlowSteps {\r\n ComponentLoaded = <any>'component-loaded',\r\n MobileRedirect = <any>'mobile-redirect',\r\n Landing = <any>'landing',\r\n Agreements = <any>'agreements',\r\n OtpSend = <any>'otp-send',\r\n OtpCheck = <any>'otp-check',\r\n CiFront = <any>'ci-front',\r\n CiFrontHowTo = <any>'ci-front-how-to',\r\n CiFrontCapture = <any>'ci-front-capture',\r\n CiBack = <any>'ci-back',\r\n CiBackHowTo = <any>'ci-back-how-to',\r\n CiBackCapture = <any>'ci-back-capture',\r\n CiTilt = <any>'ci-tilt',\r\n CiTiltHowTo = <any>'ci-tilt-how-to',\r\n CiError = <any>'ci-error',\r\n SelfieHowTo = <any>'selfie-how-to',\r\n SelfieTilt = <any>'selfie-tilt',\r\n SelfieCapture = <any>'selfie-capture',\r\n Selfie = <any>'selfie',\r\n SelfieError = <any>'selfie-error',\r\n End = <any>'end',\r\n CameraError = <any>'camera-error',\r\n Default = <any>'default',\r\n}\r\n\r\nexport enum FlowMoments {\r\n Initialized = <any>'initialized',\r\n Finalized = <any>'finalized',\r\n None = <any>'none',\r\n}\r\n","export enum OrderStatuses {\r\n Capturing,\r\n FinishedCapturing,\r\n Waiting,\r\n NotFound,\r\n Aborted,\r\n}\r\n","import { FacePose } from '../libs/FaceML5Detector/FacePose';\r\nimport { IDPose } from '../libs/IDML5Detector/IDPose';\r\nimport store from './store';\r\n\r\nexport class IdCaptureValues {\r\n public static readonly IDPoseDemoMapping: { [key in IDPose]: string } = {\r\n 0: 'https://ekyc.blob.core.windows.net/$web/animations/id/id_front.mp4',\r\n 1: 'https://ekyc.blob.core.windows.net/$web/animations/id/id_front_tilt.mp4',\r\n 2: 'https://ekyc.blob.core.windows.net/$web/animations/id/id_rotate.mp4',\r\n 3: 'https://ekyc.blob.core.windows.net/$web/animations/id/id_back.mp4',\r\n 4: 'https://ekyc.blob.core.windows.net/$web/animations/id/id_back_tilt.mp4',\r\n };\r\n}\r\n\r\nexport class SelfieCaptureValues {\r\n public static readonly FacePoseDemoMapping: { [key in FacePose]: string } = {\r\n 0: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_rotate_left.mp4',\r\n 1: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_rotate_right.mp4',\r\n 2: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_tilt_back.mp4',\r\n 3: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_tilt_front.mp4',\r\n // 4: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_tilt_left.mp4',\r\n // 5: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_tilt_right.mp4',\r\n 4: 'https://ekyc.blob.core.windows.net/$web/animations/selfie/selfie_main.mp4',\r\n };\r\n}\r\n\r\nexport class ApiUrls {\r\n private readonly uriEnv: string = '/';\r\n public readonly OtpSend: string;\r\n public readonly OtpCheck: string;\r\n public readonly IdentityInsert: string;\r\n public readonly UploadCapture: string;\r\n public readonly GetAgreement: string;\r\n public readonly GenerateAgreement: string;\r\n public readonly SendLink: string;\r\n public readonly GetStatus: string;\r\n public readonly GetStatusUi: string;\r\n public readonly AddLog: string;\r\n public readonly AddStep: string;\r\n public readonly AbortRequest: string;\r\n public readonly Translations: string;\r\n public readonly StartFlow: string;\r\n public readonly NextFlowState: string;\r\n public readonly CurrentFlowState: string;\r\n public readonly NextStateForCaptureError: string;\r\n public readonly CitizenshipList: string;\r\n public readonly SetCitizenship: string;\r\n public readonly IdList: string;\r\n public readonly SetId: string;\r\n\r\n constructor() {\r\n this.uriEnv = ['QA', 'DEMO'].includes(store.environment) ? '/dev_' : '/';\r\n this.OtpSend = this.uriEnv + 'validation/otp/send';\r\n this.OtpCheck = this.uriEnv + 'validation/otp/check';\r\n this.IdentityInsert = this.uriEnv + 'validation/identity/insert';\r\n this.UploadCapture = this.uriEnv + 'validation/upload/capture';\r\n this.GetAgreement = this.uriEnv + 'validation/agreement/content';\r\n this.GenerateAgreement = this.uriEnv + 'validation/agreement/generate';\r\n this.SendLink = this.uriEnv + 'validation/otp/sendlink';\r\n this.GetStatus = this.uriEnv + 'validation/identity/status';\r\n this.GetStatusUi = this.uriEnv + 'validation/identity/statusui';\r\n this.AddLog = this.uriEnv + 'validation/logs/add';\r\n this.AddStep = this.uriEnv + 'validation/logs/step';\r\n this.AbortRequest = this.uriEnv + 'validation/identity/abort';\r\n this.Translations = this.uriEnv + 'validation/translations/get';\r\n this.StartFlow = this.uriEnv + 'validation/flowstate/startflow';\r\n this.NextFlowState = this.uriEnv + 'validation/flowstate/nextstate';\r\n this.CurrentFlowState = this.uriEnv + 'validation/flowstate/currentstate';\r\n this.NextStateForCaptureError = this.uriEnv + 'validation/flowstate/nextstateforcaptureerror';\r\n this.CitizenshipList = this.uriEnv + 'validation/flows/citizenships';\r\n this.IdList = this.uriEnv + 'validation/flows/ids';\r\n this.SetCitizenship = this.uriEnv + 'validation/identity/setcitizenship';\r\n this.SetId = this.uriEnv + 'validation/identity/setidentitydocument';\r\n }\r\n}\r\n","import { AddRequest } from '../models/IAddRequest';\r\nimport { Agreement } from '../models/IAgreement';\r\nimport { Generation } from '../models/IGeneration';\r\nimport { LinkSend } from '../models/ILinkSend';\r\nimport { OrderStatus } from '../models/IOrderStatus';\r\nimport { OtpCheck } from '../models/IOtpCheck';\r\nimport { OtpSend } from '../models/IOtpSend';\r\nimport { UploadFile } from '../models/IUploadFile';\r\nimport { OrderStatuses } from '../models/OrderStatuses';\r\nimport { LogResult } from '../models/ILogResult';\r\nimport store from './store';\r\nimport { ApiUrls } from './textValues';\r\nimport { FlowResult, FlowStatus } from '../models/FlowStatus';\r\nimport { AbortResult } from '../models/IAbortResult';\r\nimport { FlowMoments, FlowSteps } from '../models/FlowSteps';\r\nimport { DeviceState } from '../models/IDevice';\r\nimport { TranslationValues } from '../models/ITranslationValues';\r\nimport { Citizenship } from '../models/ICitizenship';\r\nimport { StateResult } from '../models/IStateResult';\r\nimport { IdentityDocument } from '../models/IIdentityDocument';\r\nexport class ApiCall {\r\n public static instance: ApiCall;\r\n public static getInstance(): ApiCall {\r\n if (!ApiCall.instance) {\r\n ApiCall.instance = new ApiCall();\r\n }\r\n\r\n return ApiCall.instance;\r\n }\r\n\r\n private urls: ApiUrls;\r\n private serviceErrors = ['Service Unavailable', 'Unauthorized'];\r\n constructor() {\r\n this.urls = new ApiUrls();\r\n }\r\n\r\n // private async http2<T>(method: string, url: string, data: string): Promise<T> {\r\n // return new Promise((resolve, reject) => {\r\n // var xhr = new XMLHttpRequest();\r\n // xhr.open(method, url);\r\n // xhr.onload = function () {\r\n // if (xhr.status >= 200 && xhr.status < 300) {\r\n // resolve(xhr.response);\r\n // } else {\r\n // reject({\r\n // status: xhr.status,\r\n // statusText: xhr.statusText,\r\n // });\r\n // }\r\n // };\r\n // xhr.onerror = function () {\r\n // reject({\r\n // status: xhr.status,\r\n // statusText: xhr.statusText,\r\n // });\r\n // };\r\n // xhr.send(data);\r\n // });\r\n // }\r\n\r\n private async http<T>(request: RequestInfo): Promise<T> {\r\n const response = await fetch(request);\r\n\r\n if (!response.ok) {\r\n let text = await response.text();\r\n throw new Error(text ?? response.statusText);\r\n }\r\n\r\n try {\r\n // may error if there is no body\r\n return await response.json();\r\n } catch (ex) {\r\n throw new Error('No json found in response ' + ex);\r\n }\r\n }\r\n\r\n private async post<T>(url: string, data: string, withRetry: boolean = true) {\r\n var request = new Request(store.apiBaseUrl + url, {\r\n method: 'POST',\r\n body: data,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'IDKYC-TOKEN ' + store.token,\r\n },\r\n });\r\n\r\n try {\r\n return await this.http<T>(request);\r\n } catch (ex) {\r\n if (!withRetry || this.serviceErrors.includes(ex.message)) {\r\n throw ex;\r\n }\r\n this.AddLog('Error in post ', ex);\r\n try {\r\n var request2 = new Request(store.apiBaseUrl + url, {\r\n method: 'POST',\r\n body: data,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'IDKYC-TOKEN ' + store.token,\r\n },\r\n });\r\n return await this.http<T>(request2);\r\n } catch (ex2) {\r\n this.AddLog('Error in post ', ex2);\r\n var request3 = new Request(store.apiBaseUrl + url, {\r\n method: 'POST',\r\n body: data,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'IDKYC-TOKEN ' + store.token,\r\n },\r\n });\r\n return await this.http<T>(request3);\r\n }\r\n }\r\n }\r\n\r\n private async get<T>(url: string, withRetry: boolean = true) {\r\n var request = new Request(store.apiBaseUrl + url, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'IDKYC-TOKEN ' + store.token,\r\n },\r\n });\r\n try {\r\n return await this.http<T>(request);\r\n } catch (ex) {\r\n if (!withRetry || this.serviceErrors.includes(ex.message)) {\r\n throw ex;\r\n }\r\n this.AddLog('Error in get ', ex);\r\n try {\r\n var request2 = new Request(store.apiBaseUrl + url, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'IDKYC-TOKEN ' + store.token,\r\n },\r\n });\r\n return await this.http<T>(request2);\r\n } catch (ex2) {\r\n this.AddLog('Error in get ', ex2);\r\n var request3 = new Request(store.apiBaseUrl + url, {\r\n method: 'GET',\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Authorization': 'IDKYC-TOKEN ' + store.token,\r\n },\r\n });\r\n return await this.http<T>(request3);\r\n }\r\n }\r\n }\r\n\r\n public async SendOTPCode(requestId: string, phoneNumber: string): Promise<OtpSend> {\r\n let data = { requestId: requestId, phone: phoneNumber };\r\n let jsonResp = await this.post<OtpSend>(this.urls.OtpSend, JSON.stringify(data));\r\n return jsonResp;\r\n }\r\n\r\n public async CheckOTPCode(requestId: string, otpCode: string): Promise<OtpCheck> {\r\n let data = { requestId: requestId, otp: otpCode };\r\n let jsonResp = await this.post<OtpCheck>(this.urls.OtpCheck, JSON.stringify(data));\r\n return jsonResp;\r\n }\r\n\r\n public async AddIdentificationRequest(deviceInfo: DeviceState, version: string): Promise<boolean | Error> {\r\n if (store.debug) console.log('Calling identity request with store:' + JSON.stringify(store));\r\n let data = {\r\n requestId: store.requestId,\r\n clientDeviceInfo: JSON.stringify(deviceInfo),\r\n redirectId: store.redirectId,\r\n phoneNumber: store.phoneNumber,\r\n version: version,\r\n demoMode: store.environment == 'DEMO',\r\n };\r\n let jsonResp = await this.post<AddRequest>(this.urls.IdentityInsert, JSON.stringify(data));\r\n if (store.requestId == '') {\r\n store.requestId = jsonResp.requestId;\r\n }\r\n store.phoneNumber = jsonResp.phoneNumber;\r\n store.flowStatus = FlowStatus[jsonResp.state];\r\n store.logSteps = jsonResp.logSteps;\r\n store.debug = jsonResp.debug;\r\n store.modelsPath = jsonResp.modelsPath;\r\n store.citizenship = jsonResp.citizenship;\r\n store.initialized = true;\r\n return true;\r\n }\r\n\r\n public async UploadFileForRequestB64(requestId: string, type: string, b64Data: string): Promise<UploadFile> {\r\n let data = {\r\n requestId: requestId,\r\n type: type,\r\n data: b64Data,\r\n };\r\n let respJson = await this.post<UploadFile>(this.urls.UploadCapture, JSON.stringify(data));\r\n if (store.debug) console.log(`apicall | uploadfileforrequestb64 | ${respJson}`);\r\n return respJson;\r\n }\r\n\r\n public async GetAgreement(agreementType: string): Promise<string> {\r\n let resp = await this.get<Agreement>(this.urls.GetAgreement + '?type=' + agreementType + '&requestId=' + store.requestId);\r\n return resp.htmlText;\r\n }\r\n\r\n public async GenerateAgreement(agreementType: string): Promise<boolean> {\r\n let data = { requestId: store.requestId, documentType: agreementType };\r\n let resp = await this.post<Generation>(this.urls.GenerateAgreement, JSON.stringify(data));\r\n return resp.generation;\r\n }\r\n\r\n public async GetStatus(requestId: string): Promise<OrderStatuses> {\r\n let resp = await this.get<OrderStatus>(this.urls.GetStatus + '?orderId=' + requestId);\r\n return OrderStatuses[resp.status];\r\n }\r\n\r\n public async GetStatusUi(requestId: string): Promise<FlowStatus | null> {\r\n let resp = await this.get<OrderStatus>(this.urls.GetStatusUi + '?orderId=' + requestId);\r\n if (resp.status == 'NOTFOUND') return null;\r\n return FlowStatus[resp.status];\r\n }\r\n\r\n public async SendLink(link: string, phoneNumber: string): Promise<boolean> {\r\n let data = { requestId: store.requestId, link: link, phoneNumber: phoneNumber };\r\n let resp = await this.post<LinkSend>(this.urls.SendLink, JSON.stringify(data));\r\n return resp.sent;\r\n }\r\n\r\n public async GetCitizenshipList(): Promise<Citizenship[]> {\r\n let resp = await this.get<Citizenship[]>(this.urls.CitizenshipList);\r\n return resp;\r\n }\r\n\r\n public async GetIdList(): Promise<IdentityDocument[]> {\r\n let resp = await this.get<IdentityDocument[]>(this.urls.IdList + '?citizenship=' + store.citizenship);\r\n return resp;\r\n }\r\n\r\n public async SetCitizenship(): Promise<boolean> {\r\n var setCitReq = { requestId: store.requestId, citizenship: store.citizenship };\r\n var result = await this.post<StateResult>(this.urls.SetCitizenship, JSON.stringify(setCitReq));\r\n store.flowStatus = FlowStatus[result.state];\r\n return true;\r\n }\r\n\r\n public async SetIdentityDocument(): Promise<boolean> {\r\n var setIdReq = { requestId: store.requestId, identityDocument: store.idDocument };\r\n var result = await this.post<StateResult>(this.urls.SetId, JSON.stringify(setIdReq));\r\n store.flowStatus = FlowStatus[result.state];\r\n return true;\r\n }\r\n\r\n public async AddLog(error: any, context: any): Promise<boolean> {\r\n try {\r\n let data = {\r\n requestId: store.requestId,\r\n action: FlowStatus[store.flowStatus],\r\n message: JSON.stringify({ error, context }),\r\n };\r\n let result = await this.post<LogResult>(this.urls.AddLog, JSON.stringify(data), false);\r\n return result.saved;\r\n } catch {}\r\n }\r\n\r\n public async AddStep(step: FlowSteps, moment: FlowMoments): Promise<boolean> {\r\n if (store.logSteps == false) return;\r\n let data = { requestId: store.requestId, redirectId: store.redirectId, step: FlowSteps[step], moment: FlowMoments[moment], timestamp: new Date().toISOString() };\r\n let result = await this.post<LogResult>(this.urls.AddStep, JSON.stringify(data));\r\n return result.saved;\r\n }\r\n\r\n public async AbortRequest(): Promise<AbortResult> {\r\n let result = await this.post<AbortResult>(this.urls.AbortRequest, JSON.stringify({ requestId: store.requestId }));\r\n return result;\r\n }\r\n\r\n public async GetTranslations(langIso: string): Promise<TranslationValues> {\r\n let result = await this.get<TranslationValues>(this.urls.Translations + '?langIso=' + langIso);\r\n return result;\r\n }\r\n\r\n public async LandingValidationStartFlow(cameraIsAccessible: boolean): Promise<FlowStatus> {\r\n let result = await this.post<FlowResult>(this.urls.StartFlow, JSON.stringify({ requestId: store.requestId, cameraIsAccessible: cameraIsAccessible }));\r\n return FlowStatus[result.state];\r\n }\r\n\r\n public async GetNextFlowState(): Promise<FlowStatus> {\r\n let result = await this.get<FlowResult>(this.urls.NextFlowState + '?requestId=' + store.requestId);\r\n return FlowStatus[result.state];\r\n }\r\n\r\n public async GetFlowState(): Promise<FlowStatus> {\r\n let result = await this.get<FlowResult>(this.urls.CurrentFlowState + '?requestId=' + store.requestId, false);\r\n return FlowStatus[result.state];\r\n }\r\n\r\n public async GetNextStateForCaptureError(): Promise<FlowStatus> {\r\n let result = await this.get<FlowResult>(this.urls.NextStateForCaptureError + '?requestId=' + store.requestId);\r\n return FlowStatus[result.state];\r\n }\r\n}\r\n","import { TranslationValues } from '../models/ITranslationValues';\r\nimport { ApiCall } from './ApiCall';\r\nimport store from './store';\r\n\r\nclass TranslationsController {\r\n private values: TranslationValues;\r\n\r\n async getValues(): Promise<TranslationValues> {\r\n if (this.values) {\r\n return this.values;\r\n } else {\r\n this.values = await this.fetchTranslations();\r\n return this.values;\r\n }\r\n }\r\n\r\n getLocale(element: HTMLElement = document.body) {\r\n if (store.langIso && store.langIso != '') {\r\n return store.langIso;\r\n } else {\r\n const closestElement = element.closest('[lang]') as HTMLElement;\r\n return closestElement ? closestElement.lang : 'ro';\r\n }\r\n }\r\n\r\n async fetchTranslations(): Promise<TranslationValues> {\r\n const locale = this.getLocale();\r\n try {\r\n const result = ApiCall.instance.GetTranslations(locale);\r\n if (result) {\r\n return result;\r\n }\r\n } catch (exception) {\r\n console.error(`Error loading locale: ${locale}`, exception);\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nexport const Translations = new TranslationsController();\r\n"],"mappings":"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"}